2024-02-22 16:43:59 +00:00
using System ;
using System.Collections.Generic ;
using System.Collections ;
using System.ComponentModel ;
using System.Data ;
using System.Drawing ;
using System.Text ;
using System.Windows.Forms ;
using Nini.Config ;
using SafeMobileLib ;
using Telerik.WinControls ;
using RegLibDLL ;
using System.Net.Sockets ;
using System.Net ;
using System.Resources ;
using System.Globalization ;
using Telerik.WinControls.UI ;
using SafeMobileLib.DBmanagers ;
using System.Diagnostics ;
using System.IO ;
using System.Linq ;
using SharedUI ;
using System.Threading.Tasks ;
namespace SubscriberAndUserManager
{
public partial class MainForm : Telerik . WinControls . UI . RadRibbonForm
{
// save the version of the application server in order to use it for the updater
public static String APP_SERVER_VERSION = "" ;
public static SafeMobileLib . IconTheme iconThemeType = SafeMobileLib . IconTheme . PIN ;
private Login lgForm ;
public static bool HasEmailSettings ;
#region THEMING
public static Color LabelColor = Color . FromArgb ( 255 , 64 , 0 ) ;
public static Color LabelColorTicketSubject = Color . FromArgb ( 72 , 191 , 255 ) ;
public static Color ButtonColor = Color . FromArgb ( 211 , 111 , 15 ) ;
public static Color ButtonColorDisabled = Color . F romArgb ( 113 , 113 , 113 ) ;
public static Color GroupHeaderColor = Color . FromArgb ( 255 , 64 , 0 ) ;
public static Color TabSelectedColor = Color . FromArgb ( 15 , 158 , 190 ) ;
public static Color TabOverColor = Color . FromArgb ( 255 , 64 , 0 ) ;
public static Color TabNormalColor = Color . FromArgb ( 15 , 115 , 211 ) ;
public static Color GridSelectedRow = Color . FromArgb ( 146 , 217 , 255 ) ;
public static Color GridAlternateRow = Color . FromArgb ( 193 , 235 , 255 ) ;
public static Dictionary < String , Image > imagesDictionary = new Dictionary < string , Image > ( ) ;
private static RibbonTab currentTab ;
public static void setThemingColors ( RADIOTYPE themeType )
{
switch ( themeType )
{
case RADIOTYPE . MOTO :
case RADIOTYPE . CONECTPLUS :
case RADIOTYPE . REPEATER_TRBO :
case RADIOTYPE . TETRA :
{
LabelColor = Color . FromArgb ( 27 , 161 , 226 ) ;
LabelColorTicketSubject = Color . FromArgb ( 72 , 191 , 255 ) ;
ButtonColor = Color . FromArgb ( 27 , 161 , 226 ) ;
ButtonColorDisabled = Color . FromArgb ( 113 , 113 , 113 ) ;
GroupHeaderColor = Color . FromArgb ( 27 , 161 , 226 ) ;
TabSelectedColor = Color . FromArgb ( 15 , 158 , 190 ) ;
TabOverColor = Color . FromArgb ( 23 , 131 , 238 ) ;
TabNormalColor = Color . FromArgb ( 15 , 115 , 211 ) ;
GridSelectedRow = Color . FromArgb ( 146 , 217 , 255 ) ;
GridAlternateRow = Color . FromArgb ( 239 , 250 , 255 ) ;
break ;
}
case RADIOTYPE . HYT :
{
LabelColor = Color . FromArgb ( 244 , 177 , 131 ) ;
LabelColorTicketSubject = Color . FromArgb ( 0 , 99 , 147 ) ;
ButtonColor = Color . FromArgb ( 244 , 177 , 131 ) ;
ButtonColorDisabled = Color . FromArgb ( 113 , 113 , 113 ) ;
GroupHeaderColor = Color . FromArgb ( 244 , 177 , 131 ) ;
TabSelectedColor = Color . FromArgb ( 255 , 181 , 61 ) ;
TabOverColor = Color . FromArgb ( 200 , 122 , 49 ) ;
TabNormalColor = Color . FromArgb ( 255 , 164 , 101 ) ;
GridSelectedRow = Color . FromArgb ( 255 , 184 , 146 ) ;
GridAlternateRow = Color . FromArgb ( 255 , 244 , 239 ) ;
break ;
}
case RADIOTYPE . SIMOCO :
{
LabelColor = Color . FromArgb ( 71 , 101 , 154 ) ;
LabelColorTicketSubject = Color . FromArgb ( 0 , 99 , 147 ) ;
ButtonColor = Color . FromArgb ( 71 , 101 , 154 ) ;
ButtonColorDisabled = Color . FromArgb ( 113 , 113 , 113 ) ;
GroupHeaderColor = Color . FromArgb ( 71 , 101 , 154 ) ;
TabSelectedColor = Color . FromArgb ( 117 , 139 , 217 ) ;
TabOverColor = Color . FromArgb ( 70 , 102 , 213 ) ;
TabNormalColor = Color . FromArgb ( 71 , 101 , 154 ) ;
GridSelectedRow = Color . FromArgb ( 177 , 200 , 223 ) ;
GridAlternateRow = Color . FromArgb ( 239 , 248 , 255 ) ;
break ;
}
case RADIOTYPE . EXCERA :
{
LabelColor = Color . FromArgb ( 139 , 146 , 158 ) ;
LabelColorTicketSubject = Color . FromArgb ( 158 , 167 , 171 ) ;
ButtonColor = Color . FromArgb ( 56 , 60 , 63 ) ;
ButtonColorDisabled = Color . FromArgb ( 113 , 113 , 113 ) ;
GroupHeaderColor = Color . FromArgb ( 139 , 146 , 158 ) ;
TabSelectedColor = Color . FromArgb ( 139 , 146 , 158 ) ;
TabOverColor = Color . FromArgb ( 151 , 153 , 161 ) ;
TabNormalColor = Color . FromArgb ( 56 , 60 , 63 ) ;
GridSelectedRow = Color . FromArgb ( 222 , 224 , 226 ) ;
GridAlternateRow = Color . FromArgb ( 231 , 235 , 239 ) ;
break ;
}
case RADIOTYPE . HARRIS :
{
LabelColor = Color . FromArgb ( 184 , 54 , 41 ) ;
LabelColorTicketSubject = Color . FromArgb ( 0 , 99 , 147 ) ;
ButtonColor = Color . FromArgb ( 184 , 54 , 41 ) ;
ButtonColorDisabled = Color . FromArgb ( 113 , 113 , 113 ) ;
GroupHeaderColor = Color . FromArgb ( 184 , 54 , 41 ) ;
TabSelectedColor = Color . FromArgb ( 215 , 125 , 100 ) ;
TabOverColor = Color . FromArgb ( 208 , 82 , 47 ) ;
TabNormalColor = Color . FromArgb ( 184 , 54 , 41 ) ;
GridSelectedRow = Color . FromArgb ( 240 , 160 , 164 ) ;
GridAlternateRow = Color . FromArgb ( 255 , 244 , 245 ) ;
break ;
}
case RADIOTYPE . ATLAS :
{
LabelColor = Color . FromArgb ( 0 , 0 , 0 ) ;
LabelColorTicketSubject = Color . FromArgb ( 0 , 99 , 147 ) ;
ButtonColor = Color . FromArgb ( 0 , 0 , 0 ) ;
ButtonColorDisabled = Color . FromArgb ( 113 , 113 , 113 ) ;
GroupHeaderColor = Color . FromArgb ( 0 , 0 , 0 ) ;
TabSelectedColor = Color . FromArgb ( 200 , 200 , 200 ) ;
TabOverColor = Color . FromArgb ( 155 , 155 , 155 ) ;
TabNormalColor = Color . FromArgb ( 0 , 0 , 0 ) ;
GridSelectedRow = Color . FromArgb ( 200 , 200 , 200 ) ;
GridAlternateRow = Color . FromArgb ( 244 , 244 , 244 ) ;
break ;
}
case RADIOTYPE . LINX :
case RADIOTYPE . LINXB :
{
LabelColor = Color . FromArgb ( 0 , 0 , 0 ) ;
LabelColorTicketSubject = Color . FromArgb ( 0 , 99 , 147 ) ;
ButtonColor = Color . FromArgb ( 0 , 0 , 0 ) ;
ButtonColorDisabled = Color . FromArgb ( 113 , 113 , 113 ) ;
GroupHeaderColor = Color . FromArgb ( 0 , 0 , 0 ) ;
TabSelectedColor = Color . FromArgb ( 200 , 200 , 200 ) ;
TabOverColor = Color . FromArgb ( 155 , 155 , 155 ) ;
TabNormalColor = Color . FromArgb ( 0 , 0 , 0 ) ;
GridSelectedRow = Color . FromArgb ( 200 , 200 , 200 ) ;
GridAlternateRow = Color . FromArgb ( 244 , 244 , 244 ) ;
break ;
}
default :
{
break ;
}
}
}
#endregion
//private IConfigSource source = null;
public static string CFG_FILE = "SubsConfig.ini" ;
//public static Boolean Hytera =false;
public static RADIOTYPE radioType = RADIOTYPE . HARRIS ;
public static Color HyteraColor = Color . Moccasin ;
public static Color HarrisColor = System . Drawing . SystemColors . ControlDark ;
public static Color HarTextColor = Color . White ;
public static bool IS_SIERRA_WIRELESS = false ;
public static string DBServer , DBSchema , DBUser , DBPass , DBPort ;
public static string dbIpforSip ;
private bool DBcleanUp = false ;
public DBuserManager db4users ;
private DBvehiclesManager db4vehs ;
private DBsettingsManager db4settings ;
private DBalarmManager db4alarmTypes ;
private DBtelemetryManager db4telemetry ;
private DBalarmManager db4Alarm ;
private DBgatewaysManager db4gateway ;
private DBgroupsManager db4groups ;
private DBcontactsManager db4contacts ;
private DBregistrationManager db4Registration ;
private DBdailyreportManager db4Reports ;
private DBemailServiceManager db4emailService ;
private static DBiconsManager dbicons ;
private DBTicketingManager db4Ticketing ;
private DBsubsOperationManager dbsub ;
private DBcallPatchManager dbpatch ;
private controlUser usrControl ;
private controlUnit unitControl ;
private controlSettings setControl ;
private controlSystem systemControl ;
private controlGateways gatewayControl ;
private controlRegistration registrationControl ;
private controlReports reportControl ;
private controlTicketing ticketingControl ;
private TcpClient client ;
private Int32 registrationPort = 5680 ;
static String serverIP = "" ;
Int32 totalGateways = 0 ;
Int32 totalGPS = 0 ;
Int32 totalSMS = 0 ;
Int32 totalTicketing = 0 ;
Int32 totalReports = 0 ;
Int32 totalVoice = 0 ;
Int32 totalRecordings = 0 ;
Int32 totalZones = 0 ;
Int32 totalTelemetry = 0 ;
Int32 totalGoogle = 0 ;
Int32 totalUS = 0 ;
Int32 totalOpenStreetMap = 0 ;
Int32 totalArcgis = 0 ;
internal static Int32 totalUnits = 0 ;
internal static Int32 numberOfActiveUnits = 0 ;
int totaldbunits = 0 ;
public static ResourceManager RManager = new ResourceManager ( "SubscriberAndUserManager.Language.Language" , typeof ( MainForm ) . Assembly ) ;
public static CultureInfo culture = CultureInfo . CreateSpecificCulture ( "" ) ;
public static Int32 Langidx = 0 ;
public static ArrayList VehNameList = new ArrayList ( ) ;
public static ArrayList ImeiList = new ArrayList ( ) ;
public static ArrayList imgList = new ArrayList ( ) ;
public static Dictionary < int , Image > carImages = new Dictionary < int , Image > ( ) ;
internal static string SipServer , WebServer , RestartSipLink , reloadDataLink ;
internal static bool hideLinxFeatures = true ;
internal static string selectedItemDDSierra = "" ;
private string messageBusIP ;
private int messageBusPort ;
private bool autoupdate = true ;
private bool isDevelop = false ;
internal static Vehicles selectedVeh ;
public volatile static UdpMulticast udp ;
private string localIP = "" ;
public static string returnLNGString ( string name )
{
string returnSTR = "" ;
string temp = RManager . GetString ( name , culture ) ;
returnSTR = temp ;
if ( temp ! = null )
if ( temp . Contains ( "\\r\\n" ) )
{
returnSTR = temp . Replace ( "\\r\\n" , "\r\n" ) ;
}
return returnSTR ;
}
public static Boolean TestIP ( string IP )
{
2024-06-07 13:20:57 +00:00
String [ ] tmp = IP . Split ( "." . ToCharArray ( ) ) ;
2024-02-22 16:43:59 +00:00
if ( tmp . Length ! = 4 ) return false ;
Int32 number ;
bool result ;
for ( Int32 i = 0 ; i < = 3 ; i + + )
{
result = Int32 . TryParse ( tmp [ i ] , out number ) ;
if ( result )
{
if ( ( number < 0 ) | | ( number > 255 ) ) return false ;
}
else return false ;
}
return true ;
}
private void setLanguage ( )
{
this . Text = returnLNGString ( "adminModule" ) ;
tabUnits . Text = returnLNGString ( "units" ) ;
tabUser . Text = returnLNGString ( "users" ) ;
tabTicketing . Text = returnLNGString ( "ts" ) ;
tabSettings . Text = returnLNGString ( "sett" ) ;
tabSystem . Text = returnLNGString ( "alarms" ) ;
tabRegistration . Text = returnLNGString ( "regs" ) ;
tabGateways . Text = returnLNGString ( "gate" ) ;
tabReports . Text = returnLNGString ( "Dailyreports" ) ;
btnAddUnit . Text = returnLNGString ( "add" ) ;
btnUserAdd . Text = returnLNGString ( "add" ) ;
btnUnitDelete . Text = returnLNGString ( "del" ) ;
btnUserDelete . Text = returnLNGString ( "del" ) ;
btnUnitEdit . Text = returnLNGString ( "edit" ) ;
btnGroupEdit . Text = returnLNGString ( "lbGrp" ) ;
btnUserEdit . Text = returnLNGString ( "edit" ) ;
btnSaveSettings4User . Text = rbtSaveUnits . Text = rbtSaveGateways . Text = rbtSaveRegistration . Text =
rbtSaveReports . Text = rbtSaveSettings . Text = returnLNGString ( "saveset" ) ;
btnTelemetrySave . Text = returnLNGString ( "save" ) ;
radRibbonBarGroup1 . Text = returnLNGString ( "sett" ) ;
radRibbonBarGroup2 . Text = returnLNGString ( "units" ) ;
radRibbonBarGroup6 . Text = returnLNGString ( "group" ) ;
radRibbonBarGroup4 . Text = returnLNGString ( "sett" ) ;
radRibbonBarGroup5 . Text = returnLNGString ( "sett" ) ;
radRibbonBarGroup10 . Text = returnLNGString ( "sett" ) ;
radRibbonBarGroup11 . Text = returnLNGString ( "sett" ) ;
radRibbonBarGroup12 . Text = returnLNGString ( "sett" ) ;
radRibbonBarGroup15 . Text = returnLNGString ( "refreshGrid" ) ;
radRibbonBarGroup13 . Text = returnLNGString ( "sett" ) ;
radRibbonBarGroup14 . Text = returnLNGString ( "sett" ) ;
rbtSaveGateways . Text = returnLNGString ( "save" ) ;
rbtSaveRegistration . Text = returnLNGString ( "save" ) ;
rbtSaveReports . Text = returnLNGString ( "save" ) ;
rbtSaveSettings . Text = returnLNGString ( "save" ) ;
rbtSaveUnits . Text = returnLNGString ( "save" ) ;
btnTelemetrySave . Text = returnLNGString ( "save" ) ;
//radRibbonBarGroup5.Text = returnLNGString("sdset");
lbsaveNotificationSip . Text = returnLNGString ( "saveNotificationSip" ) ;
}
#region Constructor
private DialogResult loginDialogResult = DialogResult . Cancel ;
public MainForm ( )
{
// initialize the
InitializeComponent ( ) ;
SM debug = new SM ( ) ;
setThemingColors ( radioType ) ;
LoadConfig ( ) ;
if ( serverIP . Equals ( "localhost" ) )
{
serverIP = "127.0.0.1" ;
}
dbIpforSip = MainForm . serverIP = = "127.0.0.1" ? UdpMulticast . getPreferedIPAdress ( ) . ToString ( ) : serverIP ;
RadMessageBox . SetThemeName ( "TelerikMetroBlue" ) ;
if ( radioType = = RADIOTYPE . HYT )
{
//this.AllowAero = false;
this . Icon = global :: SubscriberAndUserManager . Properties . Resources . SYTADMIN24x ;
}
else if ( radioType = = RADIOTYPE . HARRIS )
{
//this.AllowAero = false;
this . Icon = global :: SubscriberAndUserManager . Properties . Resources . visionSmall ;
}
else if ( radioType = = RADIOTYPE . ATLAS )
{
//ThemeResolutionService.ApplicationThemeName = "Office2010Black"; //ATLASCHANGE
//this.AllowAero = false;
this . Icon = global :: SubscriberAndUserManager . Properties . Resources . ATLASadmin32 ;
}
else if ( radioType = = RADIOTYPE . SIMOCO )
{
//this.AllowAero = false;
this . Icon = global :: SubscriberAndUserManager . Properties . Resources . simoco_setup_241 ;
}
else if ( radioType = = RADIOTYPE . EXCERA )
{
//this.AllowAero = false;
this . Icon = global :: SubscriberAndUserManager . Properties . Resources . simoco_setup_241 ;
}
// ThemeResolutionService.ApplicationThemeName = "Breeze";
//show login form
lgForm = new Login ( Login . RegistrationStatus . NOT_REGISTERED ) ;
lgForm . FormClosing + = delegate ( object sender , FormClosingEventArgs e )
{
registrationBackgroundWorker . CancelAsync ( ) ;
if ( lgForm . DialogResult ! = DialogResult . OK )
Application . Exit ( ) ;
} ;
/ *
if ( totalGateways > 0 )
{
lgForm = new Login ( db4users , true ) ;
}
else
{
lgForm = new Login ( db4users , false ) ;
} * /
// This event will be raised on the worker thread when the worker starts
registrationBackgroundWorker . DoWork + = new DoWorkEventHandler ( registrationBackgroundWorker_DoWork ) ;
// Start the registration background worker
registrationBackgroundWorker . RunWorkerAsync ( ) ;
loginDialogResult = lgForm . ShowDialog ( ) ;
//Console.WriteLine("login dialog result =" + loginDialogResult);
//if login form was closed without entering a correct password exit
if ( loginDialogResult ! = DialogResult . OK ) //System.Environment.Exit(0);
{
// I should not do anything, the login form will close the application
Application . Exit ( ) ;
}
else
{
db4vehs = new DBvehiclesManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
db4settings = new DBsettingsManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
db4telemetry = new DBtelemetryManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
db4Alarm = new DBalarmManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
db4gateway = new DBgatewaysManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
db4groups = new DBgroupsManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
db4contacts = new DBcontactsManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
db4emailService = new DBemailServiceManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
dbicons = new DBiconsManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
db4Reports = new DBdailyreportManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
db4Ticketing = new DBTicketingManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
dbsub = new DBsubsOperationManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
dbpatch = new DBcallPatchManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
HasEmailSettings = db4emailService . GetEmailServiceSettings ( ) . Enable ;
// detect if Sierra Wireless
IS_SIERRA_WIRELESS = dbsub . IsSierraWireless ( ) ;
LoadUnitIcons ( ) ;
this . AllowAero = false ;
//cleanup DB from old IMEIS
if ( DBcleanUp )
DB_Cleanup ( ) ;
switch ( MainForm . Langidx )
{
case 0 :
culture = CultureInfo . CreateSpecificCulture ( "en" ) ;
break ;
case 1 :
culture = CultureInfo . CreateSpecificCulture ( "zh-CN" ) ;
break ;
case 2 :
culture = CultureInfo . CreateSpecificCulture ( "cs" ) ;
break ;
case 3 :
culture = CultureInfo . CreateSpecificCulture ( "fr" ) ;
break ;
case 4 :
culture = CultureInfo . CreateSpecificCulture ( "de" ) ;
break ;
case 5 :
culture = CultureInfo . CreateSpecificCulture ( "it" ) ;
break ;
case 6 :
culture = CultureInfo . CreateSpecificCulture ( "ja" ) ;
break ;
case 7 :
culture = CultureInfo . CreateSpecificCulture ( "pl" ) ;
break ;
case 8 :
culture = CultureInfo . CreateSpecificCulture ( "pt" ) ;
break ;
case 9 :
culture = CultureInfo . CreateSpecificCulture ( "ro" ) ;
break ;
case 10 :
culture = CultureInfo . CreateSpecificCulture ( "ru" ) ;
break ;
case 11 :
culture = CultureInfo . CreateSpecificCulture ( "sr" ) ;
break ;
case 12 :
culture = CultureInfo . CreateSpecificCulture ( "es" ) ;
break ;
case 13 :
culture = CultureInfo . CreateSpecificCulture ( "sv" ) ;
break ;
case 14 :
culture = CultureInfo . CreateSpecificCulture ( "tr" ) ;
break ;
case 15 :
culture = CultureInfo . CreateSpecificCulture ( "ar" ) ;
break ;
}
setLanguage ( ) ;
tabUnits . IsSelected = true ;
radRibbonBar1 . RibbonBarElement . QuickAccessToolBar . Visibility = Telerik . WinControls . ElementVisibility . Hidden ;
radRibbonBar1 . CollapseRibbonOnTabDoubleClick = false ;
if ( ( totalGateways = = 0 ) | | ( totalGPS = = 0 & & totalSMS = = 0 & & totalTicketing = = 0 & & totalReports = = 0 & & totalTelemetry = = 0
& & totalVoice = = 0 & & totalRecordings = = 0 & & totalZones = = 0 & & totalGoogle = = 0 & & totalArcgis = = 0 ) )
{
radRibbonBar1 . Enabled = false ;
MainPanel . Enabled = false ;
RadMessageBox . Show ( MainForm . returnLNGString ( "dongleError" ) + "\n" + MainForm . returnLNGString ( "pleaseInsertValidDongle" ) , MainForm . returnLNGString ( "err" ) , MessageBoxButtons . OK , RadMessageIcon . Error ) ;
//System.Environment.Exit(0);
System . Windows . Forms . Application . Exit ( ) ;
}
if ( ( radioType = = RADIOTYPE . HARRIS ) | | ( radioType = = RADIOTYPE . ATLAS ) )
{
this . btnAddUnit . ForeColor = MainForm . HarTextColor ;
//this.btnGroupAdd.ForeColor = MainForm.HarTextColor;
//this.btnGroupDelete.ForeColor = MainForm.HarTextColor;
this . btnGroupEdit . ForeColor = MainForm . HarTextColor ;
this . btnSaveSettings4User . ForeColor = MainForm . HarTextColor ;
this . btnTelemetrySave . ForeColor = MainForm . HarTextColor ;
this . btnUnitDelete . ForeColor = MainForm . HarTextColor ;
this . btnUnitEdit . ForeColor = MainForm . HarTextColor ;
this . btnUserAdd . ForeColor = MainForm . HarTextColor ;
this . btnUserEdit . ForeColor = MainForm . HarTextColor ;
this . btnUserDelete . ForeColor = MainForm . HarTextColor ;
this . radRibbonBarGroup1 . ForeColor = MainForm . HarTextColor ;
this . radRibbonBarGroup2 . ForeColor = MainForm . HarTextColor ;
this . radRibbonBarGroup4 . ForeColor = MainForm . HarTextColor ;
this . radRibbonBarGroup5 . ForeColor = MainForm . HarTextColor ;
this . radRibbonBarGroup6 . ForeColor = MainForm . HarTextColor ;
btnAddUnit . MouseEnter + = new EventHandler ( btnAddUnit_MouseEnter ) ;
btnAddUnit . MouseLeave + = new EventHandler ( btnAddUnit_MouseLeave ) ;
//btnGroupAdd.MouseEnter += new EventHandler(btnGroupAdd_MouseEnter);
//btnGroupAdd.MouseLeave += new EventHandler(btnGroupAdd_MouseLeave);
//btnGroupDelete.MouseEnter += new EventHandler(btnGroupDelete_MouseEnter);
//btnGroupDelete.MouseLeave += new EventHandler(btnGroupDelete_MouseLeave);
btnGroupEdit . MouseEnter + = new EventHandler ( btnGroupEdit_MouseEnter ) ;
btnGroupEdit . MouseLeave + = new EventHandler ( btnGroupEdit_MouseLeave ) ;
btnSaveSettings4User . MouseEnter + = new EventHandler ( btnSaveSettings4User_MouseEnter ) ;
btnSaveSettings4User . MouseLeave + = new EventHandler ( btnSaveSettings4User_MouseLeave ) ;
btnTelemetrySave . MouseEnter + = new EventHandler ( btnTelemetrySave_MouseEnter ) ;
btnTelemetrySave . MouseLeave + = new EventHandler ( btnTelemetrySave_MouseLeave ) ;
btnUnitDelete . MouseEnter + = new EventHandler ( btnUnitDelete_MouseEnter ) ;
btnUnitDelete . MouseLeave + = new EventHandler ( btnUnitDelete_MouseLeave ) ;
btnUnitEdit . MouseEnter + = new EventHandler ( btnUnitEdit_MouseEnter ) ;
btnUnitEdit . MouseLeave + = new EventHandler ( btnUnitEdit_MouseLeave ) ;
btnUserAdd . MouseEnter + = new EventHandler ( btnUserAdd_MouseEnter ) ;
btnUserAdd . MouseLeave + = new EventHandler ( btnUserAdd_MouseLeave ) ;
btnUserEdit . MouseEnter + = new EventHandler ( btnUserEdit_MouseEnter ) ;
btnUserEdit . MouseLeave + = new EventHandler ( btnUserEdit_MouseLeave ) ;
btnUserDelete . MouseEnter + = new EventHandler ( btnUserDelete_MouseEnter ) ;
btnUserDelete . MouseLeave + = new EventHandler ( btnUserDelete_MouseLeave ) ;
}
if ( ( radioType = = RADIOTYPE . ATLAS ) | | ( radioType = = RADIOTYPE . CONECTPLUS ) )
{
//RADIOTYPE.ATLAS
radRibbonBar1 . CommandTabs . Remove ( tabGateways ) ;
}
if ( ( radioType ! = RADIOTYPE . MOTO ) & & ( radioType ! = RADIOTYPE . REPEATER_TRBO ) )
{
//RADIOTYPE.ATLAS
radRibbonBar1 . CommandTabs . Remove ( tabTicketing ) ;
totalTicketing = 0 ;
}
//int UDP multicast
udp = new UdpMulticast ( messageBusIP , messageBusPort ) ;
udp . OnNewDataRecv + = new UdpMulticast . newData4Send ( udp_OnNewDataRecv ) ;
udp . StartListen ( localIP ) ;
string lanLinxServer = db4settings . getSettingValue ( 0 , "lanLinxServer" ) ;
string lanSipServerPort = db4settings . getSettingValue ( 0 , "lanSipPort" ) ;
string lanSigServerPort = db4settings . getSettingValue ( 0 , "lanSigPort" ) ;
SipServer = $"{lanLinxServer}:{lanSipServerPort}" ;
WebServer = $"{lanLinxServer}:{lanSigServerPort}" ;
RestartSipLink = $"http://{WebServer}/restart-sip" ;
reloadDataLink = $"http://{WebServer}/reload-data" ;
ddSierraWireless . SelectedIndex = 0 ;
}
}
// On worker thread so do our thing!
private void registrationBackgroundWorker_DoWork ( object sender , DoWorkEventArgs e )
{
System . Threading . Thread . Sleep ( 200 ) ;
// exit application if APP Server could not be reached
if ( getRegistration ( ) = = false )
{
/ *
if ( ! this . IsHandleCreated )
{
this . CreateHandle ( ) ;
} * /
lgForm . Invoke ( ( MethodInvoker ) delegate ( )
{
lgForm . OnRegistrationStatusChanged ( Login . RegistrationStatus . UNAUTHORIZED ) ;
RadMessageBox . Instance . TopMost = true ;
RadMessageBox . Instance . TopLevel = true ;
if ( ( radioType = = RADIOTYPE . HARRIS ) | | ( radioType = = RADIOTYPE . ATLAS ) ) ( ( RadLabel )
RadMessageBox . Instance . Controls [ 1 ] ) . LabelElement . ForeColor = MainForm . HarTextColor ;
RadMessageBox . SetThemeName ( "TelerikMetroBlue" ) ;
RadMessageBox . Show ( MainForm . returnLNGString ( "cantapp" ) , MainForm . returnLNGString ( "err" ) , MessageBoxButtons . OK , RadMessageIcon . Error ) ;
} ) ;
//System.Environment.Exit(0);
System . Threading . Thread . Sleep ( 500 ) ;
Application . Exit ( ) ;
}
else
registrationBackgroundWorker . ReportProgress ( 100 ) ;
}
private void registrationBackgroundWorker_ProgressChanged ( object sender , ProgressChangedEventArgs e )
{
// registration process had finished
if ( e . ProgressPercentage = = 100 )
{
db4Registration = new DBregistrationManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
db4users = new DBuserManager ( DBServer , DBSchema , DBUser , DBPass , DBPort ) ;
lgForm . dbUserManager = db4users ;
lgForm . OnRegistrationStatusChanged ( Login . RegistrationStatus . REGISTERED ) ;
}
}
private void LoadUnitIcons ( )
{
// create icons
MainForm . imgList = db4vehs . get_all_car_picture ( ) ;
string fileName = "" ;
string filePath = "" ;
foreach ( Car c in MainForm . imgList )
{
fileName = c . fileName ;
filePath = System . Windows . Forms . Application . StartupPath + @"\resource\cars\"
+ ( SubscriberAndUserManager . MainForm . iconThemeType = = SafeMobileLib . IconTheme . CLASSIC ? "" : "list_" )
+ SubscriberAndUserManager . MainForm . iconThemeType + "_" + c . iconPattern + ".png" ;
if ( filePath . Length = = 0 )
{
GetCustomIcon ( c . idx ) ;
}
try
{
Bitmap bmp = new Bitmap ( filePath ) ;
{
Image tmp2 = bmp ;
try
{
// add the car to the dictionary if not exists
if ( ! MainForm . carImages . ContainsKey ( c . idx ) )
MainForm . carImages . Add ( c . idx , Utils . ScaleImage ( tmp2 , 32 , 32 ) ) ;
}
catch ( Exception ex )
{
Utils . WriteLine ( "Exception on populating icons: " + ex . ToString ( ) ) ;
}
}
}
catch ( Exception ex )
{
Utils . WriteLine ( "\nBmp " + filePath + " exception " + ex . ToString ( ) , ConsoleColor . Red ) ;
}
}
}
public static void GetCustomIcon ( int idx )
{
Utils . WriteLine ( "Got custom icon with id " + idx ) ;
Byte [ ] newCarBytes = dbicons . Get_Unit_Image ( idx ) ;
try
{
using ( var m = new MemoryStream ( newCarBytes ) )
{
// save the image received from the database to a png file
Bitmap bmp = new Bitmap ( m ) ;
{
// add the car to the dictionary if not exists
if ( ! MainForm . carImages . ContainsKey ( idx ) )
MainForm . carImages . Add ( idx , Utils . ScaleImage ( bmp , 32 , 32 ) ) ;
}
}
}
catch ( Exception ex )
{
Utils . WriteLine ( "Exception on populating icons: " + ex . ToString ( ) ) ;
}
}
void udp_OnNewDataRecv ( byte [ ] data , int dataLen )
{
string str = System . Text . Encoding . ASCII . GetString ( data , 0 , dataLen ) ;
SM . Debug ( "RX: " + str . Trim ( ) ) ;
try
{
BussMessageParser ( data , dataLen ) ;
}
catch ( Exception ex )
{
Console . WriteLine ( ex . ToString ( ) ) ;
}
//BussMessageParser2(data,dataLen);
}
private bool BussMessageParser ( byte [ ] rawData , int actualLen )
{
string data = System . Text . Encoding . ASCII . GetString ( rawData , 0 , actualLen ) ;
//SM.Debug("RX: " + data.Trim());
2024-06-05 11:00:51 +00:00
string [ ] tempArr = data . Split ( "#" . ToCharArray ( ) ) ;
2024-02-22 16:43:59 +00:00
if ( tempArr . Length = = 0 )
{
SM . Debug ( "incorect message=" + data ) ;
return false ;
}
2024-06-05 11:00:51 +00:00
int messLen = 0 ;
if ( tempArr [ 1 ] ! = "" )
messLen = Convert . ToInt32 ( tempArr [ 1 ] ) ;
2024-02-22 16:43:59 +00:00
if ( actualLen ! = messLen )
{
Console . WriteLine ( "message length({0}) != actual length({1})" , messLen , actualLen ) ;
return false ;
}
2024-06-05 11:00:51 +00:00
int opCode = 0 ;
if ( tempArr [ 3 ] ! = "" )
opCode = Convert . ToInt32 ( tempArr [ 3 ] ) ;
2024-02-22 16:43:59 +00:00
switch ( opCode )
{
case ( byte ) 61 :
SM . Debug ( "controSettings-> got DB backup reply" ) ;
string status = ( tempArr [ 4 ] = = "1" ) ? MainForm . returnLNGString ( "backup" ) + MainForm . returnLNGString ( "done" ) : MainForm . returnLNGString ( "backup" ) + MainForm . returnLNGString ( "failed" ) ;
setControl . parseMultiCastData ( ( Int32 ) opCode , status ) ;
break ;
case ( byte ) 71 :
SM . Debug ( "controSettings-> got DB backup request ACK" ) ;
setControl . parseMultiCastData ( ( Int32 ) opCode , MainForm . returnLNGString ( "backupProgress" ) ) ;
break ;
case ( byte ) 62 :
SM . Debug ( "controSettings-> got DB restore reply" ) ;
status = ( tempArr [ 4 ] = = "1" ) ? MainForm . returnLNGString ( "restore" ) + MainForm . returnLNGString ( "done" ) : MainForm . returnLNGString ( "restore" ) + MainForm . returnLNGString ( "failed" ) ;
setControl . parseMultiCastData ( ( Int32 ) opCode , status ) ;
break ;
case ( byte ) 72 :
SM . Debug ( "controSettings-> got DB restore request ACK" ) ;
setControl . parseMultiCastData ( ( Int32 ) opCode , MainForm . returnLNGString ( "restoreProgress" ) ) ;
break ;
case ( byte ) 63 :
SM . Debug ( "controSettings-> got DB backup list" ) ;
string fileNames = tempArr [ 4 ] ;
if ( setControl ! = null )
setControl . parseMultiCastData ( ( Int32 ) opCode , fileNames ) ;
break ;
default :
break ;
}
return true ;
}
public void SendRestart ( )
{
udp . Send ( Utils . Convert_text_For_multicast ( "#0.0#209#" ) , Utils . Convert_text_For_multicast ( "#0.0#209#" ) . Length ) ;
}
public static void BroadcastRegistrationSD ( string msg )
{
Encoding enc = System . Text . Encoding . ASCII ;
byte [ ] buf = enc . GetBytes ( msg ) ;
udp . Send ( buf , buf . Length ) ;
}
#region Change Label Color for Harris
private void btnAddUnit_MouseLeave ( object sender , EventArgs e )
{
btnAddUnit . ForeColor = MainForm . HarTextColor ;
}
private void btnAddUnit_MouseEnter ( object sender , EventArgs e )
{
btnAddUnit . ForeColor = Color . Black ;
}
private void btnGroupEdit_MouseLeave ( object sender , EventArgs e )
{
btnGroupEdit . ForeColor = MainForm . HarTextColor ;
}
private void btnGroupEdit_MouseEnter ( object sender , EventArgs e )
{
btnGroupEdit . ForeColor = Color . Black ;
}
private void btnSaveSettings4User_MouseLeave ( object sender , EventArgs e )
{
btnSaveSettings4User . ForeColor = MainForm . HarTextColor ;
}
private void btnSaveSettings4User_MouseEnter ( object sender , EventArgs e )
{
btnSaveSettings4User . ForeColor = Color . Black ;
}
private void btnTelemetrySave_MouseLeave ( object sender , EventArgs e )
{
btnTelemetrySave . ForeColor = MainForm . HarTextColor ;
}
private void btnTelemetrySave_MouseEnter ( object sender , EventArgs e )
{
btnTelemetrySave . ForeColor = Color . Black ;
}
private void btnUnitDelete_MouseLeave ( object sender , EventArgs e )
{
btnUnitDelete . ForeColor = MainForm . HarTextColor ;
}
private void btnUnitDelete_MouseEnter ( object sender , EventArgs e )
{
btnUnitDelete . ForeColor = Color . Black ;
}
private void btnUnitEdit_MouseLeave ( object sender , EventArgs e )
{
btnUnitEdit . ForeColor = MainForm . HarTextColor ;
}
private void btnUnitEdit_MouseEnter ( object sender , EventArgs e )
{
btnUnitEdit . ForeColor = Color . Black ;
}
private void btnUserAdd_MouseLeave ( object sender , EventArgs e )
{
btnUserAdd . ForeColor = MainForm . HarTextColor ;
}
private void btnUserAdd_MouseEnter ( object sender , EventArgs e )
{
btnUserAdd . ForeColor = Color . Black ;
}
private void btnUserEdit_MouseLeave ( object sender , EventArgs e )
{
btnUserEdit . ForeColor = MainForm . HarTextColor ;
}
private void btnUserEdit_MouseEnter ( object sender , EventArgs e )
{
btnUserEdit . ForeColor = Color . Black ;
}
private void btnUserDelete_MouseLeave ( object sender , EventArgs e )
{
btnUserDelete . ForeColor = MainForm . HarTextColor ;
}
private void btnUserDelete_MouseEnter ( object sender , EventArgs e )
{
btnUserDelete . ForeColor = Color . Black ;
}
#endregion
private Boolean getRegistration ( )
{
Boolean toReturn = false ;
try
{
client = new TcpClient ( ) ;
IPEndPoint serverEndPoint = new IPEndPoint ( IPAddress . Parse ( serverIP ) , registrationPort ) ;
client . Connect ( serverEndPoint ) ;
NetworkStream clientStream = client . GetStream ( ) ;
System . Text . UTF8Encoding encoding = new System . Text . UTF8Encoding ( ) ;
byte [ ] buffer = encoding . GetBytes ( "300" ) ;
clientStream . Write ( buffer , 0 , buffer . Length ) ;
Console . WriteLine ( "Sent registration request to server, waiting..." ) ;
byte [ ] message = new byte [ 256 ] ;
clientStream . WriteTimeout = 3000 ;
clientStream . ReadTimeout = 3000 ;
int result = clientStream . Read ( message , 0 , message . Length ) ;
Console . WriteLine ( "Received registration from server" ) ;
String decodedString = encoding . GetString ( message ) . Trim ( '\0' ) ;
2024-06-07 13:20:57 +00:00
String [ ] options = decodedString . Split ( ";" . ToCharArray ( ) ) ;
2024-02-22 16:43:59 +00:00
Console . WriteLine ( "Option" + decodedString ) ;
APP_SERVER_VERSION = options [ options . Length - 1 ] . Replace ( "valid-" , "" ) ;
if ( ! App . isValidVersion ( APP_SERVER_VERSION ,
System . Reflection . Assembly . GetExecutingAssembly ( ) . GetName ( ) . Version . ToString ( ) ) )
{
lgForm . Invoke ( ( MethodInvoker ) delegate ( )
{
RadMessageBox . Instance . TopMost = true ;
RadMessageBox . Instance . TopLevel = true ;
if ( ( radioType = = RADIOTYPE . HARRIS ) | | ( radioType = = RADIOTYPE . ATLAS ) ) ( ( RadLabel )
RadMessageBox . Instance . Controls [ 1 ] ) . LabelElement . ForeColor = MainForm . HarTextColor ;
RadMessageBox . SetThemeName ( "TelerikMetroBlue" ) ;
DialogResult dr = RadMessageBox . Show ( "Please update your version of software to the latest one required by Application Server. Do you wish to update now?" ,
"Update required..." , MessageBoxButtons . YesNo , RadMessageIcon . Exclamation ) ;
if ( dr = = DialogResult . Yes )
{
UpdateForm uf = new UpdateForm ( App . ADMIN_MODULE , true ) { IsDevelop = isDevelop } ;
uf . ShowDialog ( ) ;
Application . Exit ( ) ;
}
else
Application . Exit ( ) ;
} ) ;
}
if ( options [ 0 ] . Equals ( "301" ) )
{
totalGateways = Int32 . Parse ( options [ 1 ] ) ;
totalGPS = Int32 . Parse ( options [ 2 ] ) ;
totalSMS = Int32 . Parse ( options [ 3 ] ) ;
totalTicketing = Int32 . Parse ( options [ 4 ] ) ;
totalReports = Int32 . Parse ( options [ 5 ] ) ;
totalVoice = Int32 . Parse ( options [ 6 ] ) ;
totalRecordings = Int32 . Parse ( options [ 7 ] ) ;
totalZones = Int32 . Parse ( options [ 8 ] ) ;
totalTelemetry = Int32 . Parse ( options [ 9 ] ) ;
totalGoogle = Int32 . Parse ( options [ 10 ] ) ;
totalUS = Int32 . Parse ( options [ 11 ] ) ;
totalOpenStreetMap = Int32 . Parse ( options [ 12 ] ) ;
totalArcgis = Int32 . Parse ( options [ 13 ] ) ;
totalUnits = Int32 . Parse ( options [ 14 ] ) ;
messageBusIP = options [ 15 ] ;
messageBusPort = Int32 . Parse ( options [ 16 ] ) ;
DBServer = options [ 17 ] ;
DBSchema = options [ 18 ] ;
DBUser = options [ 19 ] ;
DBPass = options [ 20 ] ;
DBPort = options [ 21 ] ;
Console . WriteLine ( "Totals: GW:" + totalGateways + " GPS:" + totalGPS + " SMS:" + totalSMS + " Job Ticketing:"
+ totalTicketing + " Reports:" + totalReports + " Voice:" + totalVoice + " Recordings:" + totalRecordings + " Zones:" + totalZones + " Telemetry:"
+ totalTelemetry + " Google:" + totalGoogle + /*" US:" + totalUS +*/ " OpenStreetMap:" + totalOpenStreetMap + " Arcgis:"
+ totalArcgis + " Units: " + totalUnits + " Messagebus IP: " + messageBusIP + " Messagebus port: " + messageBusPort
+ " Database IP: " + DBServer + $" Database schema: {DBSchema} Database user: {DBUser} Database port: {DBPort}" ) ;
}
toReturn = true ;
}
catch ( Exception ex )
{
Console . WriteLine ( "Exception in gateway:getRegistration():" + ex . ToString ( ) ) ;
toReturn = false ;
}
return toReturn ;
}
private void LoadConfig ( )
{
try
{
Program . source = new IniConfigSource ( CFG_FILE ) ;
if ( Program . source . Configs [ "Registration" ] = = null )
Program . source . Configs . Add ( "Registration" ) ;
registrationPort = GetInt32Value ( "Registration" , "port" , 5680 ) ; // Convert.ToInt32(Program.source.Configs["Registration"].Get("port"));
if ( Program . source . Configs [ "Database" ] = = null )
Program . source . Configs . Add ( "Database" ) ;
serverIP = GetStringValue ( "Server" , "IP" , "127.0.0.1" ) ;
DBcleanUp = GetBooleanValue ( "Database" , "deleteOrphanIMEI" , true ) ; // Convert.ToBoolean(source.Configs["Database"].Get("deleteOrphanIMEI"));
localIP = GetStringValue ( "Database" , "localIP" , "" ) ;
if ( Program . source . Configs [ "Language" ] = = null )
Program . source . Configs . Add ( "Language" ) ;
Langidx = GetInt32Value ( "Language" , "Language" , 0 ) ; // Convert.ToInt32(source.Configs["Language"].Get("Language"));
if ( Program . source . Configs [ "MessageBus" ] = = null )
Program . source . Configs . Add ( "MessageBus" ) ;
if ( Program . source . Configs [ "Update" ] = = null )
Program . source . Configs . Add ( "Update" ) ;
autoupdate = GetBooleanValue ( "Update" , "autoupdate" , true ) ;
if ( Program . source . Configs [ "Update" ] . Contains ( "develop" ) )
isDevelop = Program . source . Configs [ "Update" ] . GetBoolean ( "develop" ) ;
GetStringValue ( "Update" , "Version" , "1.0.0.2" ) ;
GetBooleanValue ( "Update" , "Enable" , true ) ;
if ( Program . source . Configs [ "Registration" ] . Contains ( "Linx" ) )
hideLinxFeatures = ! Program . source . Configs [ "Registration" ] . GetBoolean ( "Linx" ) ;
if ( MainForm . radioType = = RADIOTYPE . LINX | | MainForm . radioType = = RADIOTYPE . LINXB ) hideLinxFeatures = false ;
// save config file
Program . source . Save ( ) ;
}
catch ( Exception e )
{
Console . WriteLine ( e . Message + " " + e . StackTrace + " " + e . Source ) ;
}
}
#endregion
#region tabs load functions
private void radRibbonBar1_CommandTabSelected ( object sender , Telerik . WinControls . UI . CommandTabEventArgs args )
{
lbUnitsRegistation . Visible = args . CommandTab = = tabUnits ;
lbsaveNotificationSip . Visible = args . CommandTab = = tabUnits & & needRestart ;
ddSierraWireless . Visible = ddSierraWireless . Visible = IS_SIERRA_WIRELESS & & args . CommandTab = = tabUnits ;
currentTab = args . CommandTab ;
if ( args . CommandTab = = tabUser ) LoadUserTab ( ) ;
if ( args . CommandTab = = tabUnits ) LoadUnitsTab ( ) ;
if ( args . CommandTab = = tabSystem ) LoadSystemTab ( ) ;
if ( args . CommandTab = = tabSettings ) LoadSettingsTab ( ) ;
if ( args . CommandTab = = tabGateways ) LoadGatewayTab ( ) ;
if ( args . CommandTab = = tabRegistration ) LoadRegistrationTab ( ) ;
if ( args . CommandTab = = tabReports ) LoadDailyReportTab ( ) ;
if ( args . CommandTab = = tabTicketing ) LoadTicketingTab ( ) ;
}
private void LoadRegistrationTab ( )
{
if ( registrationControl = = null )
registrationControl = new controlRegistration ( db4Registration , totalGateways , totalGPS , totalSMS , totalTicketing , totalReports ,
totalVoice , totalRecordings , totalZones , totalTelemetry , totalGoogle , totalUS , totalOpenStreetMap , totalArcgis ) ;
registrationControl . Dock = System . Windows . Forms . DockStyle . Fill ;
registrationControl . OnAppServerRefreshRequest + = delegate ( )
{
SendRestart ( ) ;
} ;
MainPanel . Controls . Clear ( ) ;
MainPanel . Controls . Add ( registrationControl ) ;
}
private void LoadDailyReportTab ( )
{
if ( db4Reports ! = null )
{
reportControl = new controlReports ( db4Reports , db4users ) ;
reportControl . Dock = System . Windows . Forms . DockStyle . Fill ;
}
MainPanel . Controls . Clear ( ) ;
MainPanel . Controls . Add ( reportControl ) ;
}
private void LoadUserTab ( )
{
if ( db4users ! = null )
{
usrControl = new controlUser ( db4users , db4vehs , dbicons , db4settings , db4gateway , db4groups ) ;
usrControl . Dock = System . Windows . Forms . DockStyle . Fill ;
}
lbsaveNotificationSip . Visible = needRestart ;
MainPanel . Controls . Clear ( ) ;
MainPanel . Controls . Add ( usrControl ) ;
}
private void LoadUnitsTab ( )
{
numberOfActiveUnits = db4vehs . getActiveVehiclesCount ( totalUnits , MainForm . IS_SIERRA_WIRELESS , out totaldbunits ) ;
lbUnitsRegistation . Text = string . Format ( returnLNGString ( "activeTotalUnits" ) , numberOfActiveUnits , totaldbunits , totalUnits ) ;
lbsaveNotificationSip . Visible = needRestart ;
MainPanel . Controls . Clear ( ) ;
if ( db4vehs ! = null )
{
unitControl = new controlUnit ( db4users , db4vehs , db4groups , dbicons , db4contacts ) ;
//unitControl.Parent = this;
unitControl . Dock = System . Windows . Forms . DockStyle . Fill ;
if ( selectedVeh ! = null )
unitControl . RefreshGrid ( selectedVeh ) ;
}
MainPanel . Controls . Add ( unitControl ) ;
}
private void LoadSystemTab ( )
{
MainPanel . Controls . Clear ( ) ;
if ( db4vehs ! = null )
{
systemControl = new controlSystem ( db4vehs , db4telemetry , db4Alarm , this ) ;
systemControl . Dock = System . Windows . Forms . DockStyle . Fill ;
}
MainPanel . Controls . Add ( systemControl ) ;
}
private void LoadSettingsTab ( )
{
MainPanel . Controls . Clear ( ) ;
if ( db4emailService ! = null )
{
setControl = new controlSettings ( DBUser , DBSchema , DBServer , db4emailService , db4Alarm , dbicons , db4settings ) ;
setControl . Dock = System . Windows . Forms . DockStyle . Fill ;
}
MainPanel . Controls . Add ( setControl ) ;
}
private void LoadGatewayTab ( )
{
MainPanel . Controls . Clear ( ) ;
if ( db4gateway ! = null )
{
gatewayControl = new controlGateways ( db4gateway , totalGateways , db4Registration ) ;
gatewayControl . Dock = System . Windows . Forms . DockStyle . Fill ;
}
lbsaveNotificationSip . Visible = needRestart ;
MainPanel . Controls . Add ( gatewayControl ) ;
}
private void LoadTicketingTab ( )
{
MainPanel . Controls . Clear ( ) ;
if ( db4Ticketing ! = null )
{
ticketingControl = new controlTicketing ( db4Ticketing ) ;
ticketingControl . Dock = System . Windows . Forms . DockStyle . Fill ;
}
MainPanel . Controls . Add ( ticketingControl ) ;
}
#endregion
#region users
private void btnUserAdd_Click ( object sender , EventArgs e )
{
Console . WriteLine ( "User form ; mode = ADD" ) ;
UsersForm uf = new UsersForm ( db4users , db4settings , db4gateway ) ;
uf . FormClosed + = new FormClosedEventHandler ( uf_FormClosed ) ;
uf . Show ( ) ;
}
void uf_FormClosed ( object sender , FormClosedEventArgs e )
{
if ( usrControl . selectedUser ! = null )
{
if ( UsersForm . UsersCollection . ContainsKey ( usrControl . selectedUser . Id ) )
UsersForm . UsersCollection . Remove ( usrControl . selectedUser . Id ) ;
}
if ( currentTab = = tabUser )
LoadUserTab ( ) ;
}
private void btnUserEdit_Click ( object sender , EventArgs e )
{
Console . WriteLine ( "User form ; mode = EDIT" ) ;
if ( usrControl ! = null & & usrControl . selectedUser ! = null )
{
UsersForm uf = UsersForm . GetSingleton ( db4users , usrControl . selectedUser ) ;
uf . FormClosed + = new FormClosedEventHandler ( uf_FormClosed ) ;
uf . Show ( ) ;
uf . BringToFront ( ) ;
if ( uf . WindowState = = FormWindowState . Minimized )
uf . WindowState = FormWindowState . Normal ;
}
else
{
//RadMessageBox.Show("Select an user first","error!", MessageBoxButtons.OK, RadMessageIcon.Error);
CustomMessageBox . Show ( CustomMessageBoxType . exclamation , MainForm . returnLNGString ( "selfirst" ) , MainForm . returnLNGString ( "err" ) ) ;
}
}
private void btnUserDelete_Click ( object sender , EventArgs e )
{
if ( usrControl ! = null & & usrControl . selectedUser ! = null )
{
if ( usrControl . selectedUser . UType = = USERTYPE . Admin )
{
CustomMessageBox . Show ( CustomMessageBoxType . exclamation , MainForm . returnLNGString ( "adminUSR" ) , MainForm . returnLNGString ( "err" ) ) ;
return ;
}
Int32 countGeo = db4users . countGeofencesForUser ( usrControl . selectedUser . Id ) ;
Int32 countLand = db4users . countLandmarksForUser ( usrControl . selectedUser . Id ) ;
DialogResult dr = CustomMessageBox . Show ( CustomMessageBoxType . exclamation , MainForm . returnLNGString ( "deluser" ) , MainForm . returnLNGString ( "areyou" ) , true ) ;
if ( dr = = DialogResult . Yes & & countLand = = 0 & & countGeo = = 0 )
{
db4users . deleteUser ( usrControl . selectedUser . UserName ) ;
db4settings . deleteSettingForUser ( usrControl . selectedUser . Id ) ;
db4gateway . deleteGatewayforUser ( usrControl . selectedUser . Id ) ;
dbpatch . deletePatchFromAdmin ( 0 , usrControl . selectedUser . Id . ToString ( ) ) ;
LoadUserTab ( ) ;
}
else if ( dr = = DialogResult . Yes )
{
PopupForm tmp = new PopupForm ( usrControl . selectedUser . UserName , countGeo , countLand ) ;
tmp . ShowDialog ( ) ;
string user ;
user = tmp . Name ;
if ( ! String . IsNullOrEmpty ( user ) )
{
int idForUSer = db4users . getUserId ( user ) ;
db4users . resetallGeoFenceAndLandmarks ( usrControl . selectedUser . Id , idForUSer ) ;
db4users . deleteUser ( usrControl . selectedUser . UserName ) ;
db4settings . deleteSettingForUser ( usrControl . selectedUser . Id ) ;
db4gateway . deleteGatewayforUser ( usrControl . selectedUser . Id ) ;
dbpatch . deletePatchFromAdmin ( 0 , usrControl . selectedUser . Id . ToString ( ) ) ;
}
LoadUserTab ( ) ;
}
}
else
{
CustomMessageBox . Show ( CustomMessageBoxType . exclamation , MainForm . returnLNGString ( "selfirst" ) , MainForm . returnLNGString ( "err" ) ) ;
}
}
#endregion
#region vehicles
private void btnAddUnit_Click ( object sender , EventArgs e )
{
if ( numberOfActiveUnits > = totalUnits )
{
CustomMessageBox . Show ( CustomMessageBoxType . exclamation , MainForm . returnLNGString ( "maxUnitsReached" ) , MainForm . returnLNGString ( "err" ) ) ;
return ;
}
selectedVeh = unitControl . selectedVeh ;
List < User > usrList = db4users . getAllUsers ( ) ;
VehiclesForm vf = new VehiclesForm ( db4vehs , db4groups , db4gateway , db4Alarm , db4telemetry , usrList , this ) ;
vf . FormClosed + = new FormClosedEventHandler ( vf_FormClosed ) ;
vf . Show ( ) ;
}
void vf_FormClosed ( object sender , FormClosedEventArgs e )
{
if ( currentTab = = tabUnits )
LoadUnitsTab ( ) ;
}
private void btnUnitEdit_Click ( object sender , EventArgs e )
{
if ( unitControl ! = null & & unitControl . selectedVeh ! = null )
{
List < User > usrList = db4users . getAllUsers ( ) ;
VehiclesForm vf ;
selectedVeh = unitControl . selectedVeh ;
if ( unitControl . GridViewUnitsList . SelectedRows . Count > 1 )
{
//VehiclesForm vf = new VehiclesForm(db4vehs, db4groups, db4gateway, usrList, unitControl.parms, this);
vf = VehiclesForm . GetSingleton ( db4vehs , db4groups , db4gateway , usrList , unitControl . parms , this ) ;
}
else
{
//vf = new VehiclesForm(db4vehs, db4groups,db4gateway, usrList, unitControl.selectedVeh, this);
vf = VehiclesForm . GetSingleton ( db4vehs , db4groups , db4gateway , usrList , unitControl . selectedVeh , this ) ;
}
vf . FormClosed + = new FormClosedEventHandler ( vf_FormClosed ) ;
vf . Show ( ) ;
vf . BringToFront ( ) ;
if ( vf . WindowState = = FormWindowState . Minimized )
vf . WindowState = FormWindowState . Normal ;
}
}
private void btnUnitDelete_Click ( object sender , EventArgs e )
{
if ( unitControl ! = null )
{
selectedVeh = null ;
if ( unitControl . GridViewUnitsList . SelectedRows . Count > 1 )
{
DialogResult dr = RadMessageBox . Show ( MainForm . returnLNGString ( "aredelList" ) , MainForm . returnLNGString ( "areyou" ) ,
MessageBoxButtons . YesNo , RadMessageIcon . Exclamation ) ;
if ( dr = = DialogResult . Yes )
{
db4vehs . deleteVehicleList ( unitControl . parms . imeiList , unitControl . parms . IdList ) ;
//MainForm.CallWebServer(MainForm.RestartSipLink);
MainForm . needRestart = true ;
}
}
else
{
DialogResult dr = RadMessageBox . Show ( MainForm . returnLNGString ( "aredel" ) , MainForm . returnLNGString ( "areyou" ) ,
MessageBoxButtons . YesNo , RadMessageIcon . Exclamation ) ;
//CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("aredel"), MainForm.returnLNGString("areyou"), true);
if ( dr = = DialogResult . Yes )
{
db4vehs . deleteVehicle ( unitControl . selectedVeh . Imei ) ;
//MainForm.CallWebServer(MainForm.RestartSipLink);
MainForm . needRestart = true ;
}
}
LoadUnitsTab ( ) ;
}
}
#endregion
private void btnTelemetrySave_Click ( object sender , EventArgs e )
{
systemControl . Save ( ) ;
DisplayToast ( MainForm . returnLNGString ( "settingSvdSucces" ) , MainForm . returnLNGString ( "HTMLsettingSvdSucces" ) ) ;
}
private void btnSaveSettings4User_Click ( object sender , EventArgs e )
{
usrControl . SaveSettings ( ) ;
DisplayToast ( MainForm . returnLNGString ( "settingSvdSucces" ) , MainForm . returnLNGString ( "HTMLsettingSvdSucces" ) ) ;
//SendRestart();
restartSipProcedure ( ) ;
}
#region groups
private void btnGroupAdd_Click ( object sender , EventArgs e )
{
//unitControl.AddNewGroup();
GroupsForm gf = new GroupsForm ( unitControl , db4groups , db4gateway , "add" ) ;
gf . Show ( ) ;
}
private void btnGroupEdit_Click ( object sender , EventArgs e )
{
//GroupsForm gf = new GroupsForm(unitControl, db4groups, db4gateway, "edit");
GroupsForm gf = GroupsForm . GetSingleton ( unitControl , db4groups , db4gateway , "edit" ) ;
gf . Show ( ) ;
gf . BringToFront ( ) ;
if ( gf . WindowState = = FormWindowState . Minimized )
gf . WindowState = FormWindowState . Normal ;
}
private void btnGroupDelete_Click ( object sender , EventArgs e )
{
GroupsForm gf = new GroupsForm ( unitControl , db4groups , db4gateway , "delete" ) ;
gf . Show ( ) ;
}
#endregion
private void btnAddNewGateway_Click ( object sender , EventArgs e )
{
//todo: add new gateway in the database
}
private void btnAddNewSafeDispatch_Click ( object sender , EventArgs e )
{
//todo: add new SafeDispatch in the database
}
private void btnSaveSettings_Click ( object sender , EventArgs e )
{
}
#region Job Tickets
private void btnTicketAdd_Click ( object sender , EventArgs e )
{
Console . WriteLine ( "Job Ticketing form ; mode = ADD" ) ;
TicketingForm tf = new TicketingForm ( db4Ticketing , db4settings , db4gateway ) ;
tf . FormClosed + = new FormClosedEventHandler ( tf_FormClosed ) ;
tf . Show ( ) ;
}
void tf_FormClosed ( object sender , FormClosedEventArgs e )
{
LoadTicketingTab ( ) ;
}
private void btnTicketEdit_Click ( object sender , EventArgs e )
{
Console . WriteLine ( "Job Ticketing form ; mode = EDIT" ) ;
if ( ticketingControl ! = null & & ticketingControl . selectedTicketStatus ! = null )
{
TicketingForm tf = new TicketingForm ( db4Ticketing , ticketingControl . selectedTicketStatus ) ;
tf . FormClosed + = new FormClosedEventHandler ( tf_FormClosed ) ;
tf . Show ( ) ;
}
else
{
//RadMessageBox.Show("Select an user first","error!", MessageBoxButtons.OK, RadMessageIcon.Error);
CustomMessageBox . Show ( CustomMessageBoxType . exclamation , MainForm . returnLNGString ( "tsselfirst" ) , MainForm . returnLNGString ( "err" ) ) ;
}
}
private void btnTicketDelete_Click ( object sender , EventArgs e )
{
if ( ticketingControl ! = null & & ticketingControl . selectedTicketStatus ! = null )
{
DialogResult dr = CustomMessageBox . Show ( CustomMessageBoxType . exclamation , MainForm . returnLNGString ( "delts" ) , MainForm . returnLNGString ( "areyou" ) , true ) ;
if ( dr = = DialogResult . Yes )
{
TicketResponse resp = db4Ticketing . deleteTicketingStatus ( ticketingControl . selectedTicketStatus . Status ) ;
TicketingForm tf = new TicketingForm ( db4Ticketing , ticketingControl . selectedTicketStatus ) ;
if ( resp = = TicketResponse . alreadyInTransactions )
CustomMessageBox . Show ( CustomMessageBoxType . exclamation , MainForm . returnLNGString ( "tsallintrans" ) , MainForm . returnLNGString ( "err" ) ) ;
LoadTicketingTab ( ) ;
}
}
else
{
//RadMessageBox.Show("Select an user first", "error!", MessageBoxButtons.OK, RadMessageIcon.Error);
CustomMessageBox . Show ( CustomMessageBoxType . exclamation , MainForm . returnLNGString ( "selfirst" ) , MainForm . returnLNGString ( "err" ) ) ;
}
}
private void ddSierraWireless_SelectedIndexChanged ( object sender , Telerik . WinControls . UI . Data . PositionChangedEventArgs e )
{
if ( ! IS_SIERRA_WIRELESS )
return ;
selectedItemDDSierra = ddSierraWireless . SelectedItem . Text ;
unitControl ? . ShowVehs ( controlUnit . isCheckboxChecked ) ;
}
#endregion
//DB cleanup
private void DB_Cleanup ( )
{
SM . Debug ( "DB cleanup function!!!!!!!" ) ;
List < SUID_AND_IMEI > list = new List < SUID_AND_IMEI > ( ) ;
list = db4vehs . getOrphanImeis ( ) ;
foreach ( SUID_AND_IMEI obj in list )
{
SM . Debug ( "Imei:" + obj . Imei + " found in DB without a vehicle attached!!!" , false ) ;
vehResponse resp = db4vehs . CleanupSC_ID ( obj . Sc_id ) ;
if ( resp = = vehResponse . done )
{
SM . Debug ( "Imei:" + obj . Imei + " removed from DB" ) ;
}
else
{
SM . Debug ( "Imei:" + obj . Imei + " failed to cleanup from DB" ) ;
}
}
}
private void Main_Shown ( object sender , EventArgs e )
{
if ( radioType = = RADIOTYPE . HYT )
{
/ * Theme currentTheme = Telerik . WinControls . ThemeResolutionService . GetTheme ( "Desert" ) ;
currentTheme . AddColorBlend ( "BaseColor" , HslColor . FromColor ( Color . FromArgb ( 153 , 204 , 255 ) ) ) ;
Color c1 = Color . Orange ;
Color c2 = Color . FromArgb ( c1 . A , ( int ) ( c1 . R * 0.9 ) , ( int ) ( c1 . G * 0.9 ) , ( int ) ( c1 . B * 0.9 ) ) ;
currentTheme . ThemeProperties [ "BaseColor" ] = HslColor . FromColor ( c2 ) ; * /
this . Icon = global :: SubscriberAndUserManager . Properties . Resources . SYTADMIN64x ;
radRibbonBar1 . StartButtonImage = global :: SubscriberAndUserManager . Properties . Resources . SYT_admin_mod_2_small ;
//this.BackColor = HyteraColor;
//MainPanel.BackColor = HyteraColor;
btnUserAdd . Image = global :: SubscriberAndUserManager . Properties . Resources . addNewOR ;
btnAddUnit . Image = global :: SubscriberAndUserManager . Properties . Resources . addNewOR ;
//btnGroupAdd.Image = global::SubscriberAndUserManager.Properties.Resources.addNewOR;
btnUserEdit . Image = global :: SubscriberAndUserManager . Properties . Resources . editNewOR ;
btnUnitEdit . Image = global :: SubscriberAndUserManager . Properties . Resources . editNewOR ;
btnGroupEdit . Image = global :: SubscriberAndUserManager . Properties . Resources . i_groupsOR ;
btnUserDelete . Image = global :: SubscriberAndUserManager . Properties . Resources . deleteNewOR ;
btnUnitDelete . Image = global :: SubscriberAndUserManager . Properties . Resources . deleteNewOR ;
//btnGroupDelete.Image = global::SubscriberAndUserManager.Properties.Resources.deleteNewOR;
btnSaveSettings4User . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewOR ;
btnTelemetrySave . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewOR ;
rbtSaveGateways . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewOR ;
rbtSaveRegistration . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewOR ;
rbtSaveReports . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewOR ;
rbtSaveSettings . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewOR ;
rbtSaveUnits . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewOR ;
}
else if ( radioType = = RADIOTYPE . HARRIS )
{
this . Icon = global :: SubscriberAndUserManager . Properties . Resources . visionSmall ;
radRibbonBar1 . StartButtonImage = global :: SubscriberAndUserManager . Properties . Resources . VISIONadminsmall ;
//this.BackColor = HarrisColor;
//MainPanel.BackColor = HarrisColor;
btnUserAdd . Image = global :: SubscriberAndUserManager . Properties . Resources . addNewGR ;
btnAddUnit . Image = global :: SubscriberAndUserManager . Properties . Resources . addNewGR ;
//btnGroupAdd.Image = global::SubscriberAndUserManager.Properties.Resources.addNewGR;
btnUserEdit . Image = global :: SubscriberAndUserManager . Properties . Resources . editNewGR ;
btnUnitEdit . Image = global :: SubscriberAndUserManager . Properties . Resources . editNewGR ;
btnGroupEdit . Image = global :: SubscriberAndUserManager . Properties . Resources . i_groupsGR ;
btnUserDelete . Image = global :: SubscriberAndUserManager . Properties . Resources . deleteNewGR ;
btnUnitDelete . Image = global :: SubscriberAndUserManager . Properties . Resources . deleteNewGR ;
//btnGroupDelete.Image = global::SubscriberAndUserManager.Properties.Resources.deleteNewGR;
btnSaveSettings4User . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewGR ;
btnTelemetrySave . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewGR ;
rbtSaveGateways . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewGR ;
rbtSaveRegistration . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewGR ;
rbtSaveReports . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewGR ;
rbtSaveSettings . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewGR ;
rbtSaveUnits . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewGR ;
}
else if ( radioType = = RADIOTYPE . ATLAS ) //ATLASCHANGE
{
//Theme currentTheme = Telerik.WinControls.ThemeResolutionService.GetTheme("Office2010Black");
// Theme currentTheme = Telerik.WinControls.ThemeResolutionService.GetTheme("Office2010Black");
this . Icon = global :: SubscriberAndUserManager . Properties . Resources . ATLASadmin32 ;
radRibbonBar1 . StartButtonImage = global :: SubscriberAndUserManager . Properties . Resources . Atlas_img_32 ;
//this.BackColor = HarrisColor;
//MainPanel.BackColor = HarrisColor;
btnUserAdd . Image = global :: SubscriberAndUserManager . Properties . Resources . addNewGE ;
btnAddUnit . Image = global :: SubscriberAndUserManager . Properties . Resources . addNewGE ;
//btnGroupAdd.Image = global::SubscriberAndUserManager.Properties.Resources.addNewGE;
btnUserEdit . Image = global :: SubscriberAndUserManager . Properties . Resources . editNewGE ;
btnUnitEdit . Image = global :: SubscriberAndUserManager . Properties . Resources . editNewGE ;
btnGroupEdit . Image = global :: SubscriberAndUserManager . Properties . Resources . i_groupsGE ;
btnUserDelete . Image = global :: SubscriberAndUserManager . Properties . Resources . deleteNewGE ;
btnUnitDelete . Image = global :: SubscriberAndUserManager . Properties . Resources . deleteNewGE ;
//btnGroupDelete.Image = global::SubscriberAndUserManager.Properties.Resources.deleteNewGE;
btnSaveSettings4User . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewGE ;
btnTelemetrySave . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewGE ;
rbtSaveGateways . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewGE ;
rbtSaveRegistration . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewGE ;
rbtSaveReports . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewGE ;
rbtSaveSettings . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewGE ;
rbtSaveUnits . Image = global :: SubscriberAndUserManager . Properties . Resources . write1NewGE ;
}
else if ( radioType = = RADIOTYPE . SIMOCO )
{
//Theme currentTheme = Telerik.WinControls.ThemeResolutionService.GetTheme("Office2010Black");
this . Icon = global :: SubscriberAndUserManager . Properties . Resources . simoco_setup_64 ;
radRibbonBar1 . StartButtonImage = global :: SubscriberAndUserManager . Properties . Resources . simoco_setup_24 ;
}
else if ( radioType = = RADIOTYPE . EXCERA )
{
//Theme currentTheme = Telerik.WinControls.ThemeResolutionService.GetTheme("Office2010Black");
this . Icon = global :: SubscriberAndUserManager . Properties . Resources . AXYS_ICON ;
radRibbonBar1 . StartButtonImage = global :: SubscriberAndUserManager . Properties . Resources . axys_tools_24 ;
}
}
private void MainForm_Load ( object sender , EventArgs e )
{
//if registration is unsuccessfull db4vehs will be null
if ( db4vehs = = null )
return ;
radRibbonBar1 . CollapseRibbonOnTabDoubleClick = false ;
lbUnitsRegistation . Text = string . Format ( returnLNGString ( "activeTotalUnits" ) , numberOfActiveUnits , totaldbunits , totalUnits ) ;
LoadUnitsTab ( ) ;
ContextMenu contextMenu = new ContextMenu ( ) ;
contextMenu . MenuItems . Add ( "Check for updates..." , ( s , e2 ) = > {
UpdateForm uf = new UpdateForm ( App . ADMIN_MODULE , true ) { IsDevelop = isDevelop } ;
uf . Show ( ) ;
} ) ;
contextMenu . MenuItems . Add ( "Exit" , ( s , e2 ) = > CloseApp ( ) ) ;
notifyIcon1 . ContextMenu = contextMenu ;
notifyIcon1 . ShowBalloonTip ( 500 ) ;
// check for a new version if available
if ( autoupdate )
CheckForUpdate ( ) ;
}
#region UPDATE
/// <summary>
/// Check for new version release on SafeMobile Portal
/// The check is done by comparing Current Assembly Version with the one
/// written in a xml file on the portal.
/// </summary>
private void CheckForUpdate ( )
{
App appType = App . ADMIN_MODULE ;
AutoUpdate au = new AutoUpdate ( appType ) { IsDevelop = isDevelop } ;
au . OnNewVersionAvailable + = delegate ( string version )
{
notifyIcon1 . Text = "New version available" ;
notifyIcon1 . ShowBalloonTip ( 2500 , $"{App.GetAppName(appType)} version {version} available" ,
$"Press to download and install the latest version of {App.GetAppName(appType)}." , ToolTipIcon . Info ) ;
notifyIcon1 . BalloonTipClicked + = delegate ( object sender , EventArgs e )
{
if ( notifyIcon1 . Text . Equals ( "New version available" ) )
{
UpdateForm uf = new UpdateForm ( appType , true ) { IsDevelop = isDevelop } ;
uf . Show ( ) ;
}
} ;
} ;
// call method to check for new updated
au . CheckUpdate ( ) ;
}
#endregion
private void CloseApp ( )
{
Process oldProcess = Process . GetCurrentProcess ( ) ;
oldProcess . Kill ( ) ;
Application . Exit ( ) ;
}
public void DisplayToast ( String captionText , String contentText )
{
// hide alert if already opened
if ( desktopAlertFeedback . IsDisposed | | desktopAlertFeedback . IsDisposing )
desktopAlertFeedback . Hide ( ) ;
desktopAlertFeedback . CaptionText = captionText ;
desktopAlertFeedback . ContentText = contentText ;
desktopAlertFeedback . Show ( ) ;
}
private void MainForm_FormClosing ( object sender , FormClosingEventArgs e )
{
db4users ? . CloseConnection ( ) ;
registrationBackgroundWorker ? . CancelAsync ( ) ;
CallWebServer ( RestartSipLink ) ;
CallWebServer ( reloadDataLink ) ;
}
internal static bool needRestart = false ;
internal static bool needReload = false ;
private void btSaveSettings_FakeClick ( object sender , EventArgs e )
{
DisplayToast ( MainForm . returnLNGString ( "settingSvdSucces" ) , MainForm . returnLNGString ( "HTMLsettingSvdSucces" ) ) ;
restartSipProcedure ( ) ;
}
private void rtbRefreshGrid_Click ( object sender , EventArgs e )
{
reportControl ? . populateList ( ) ;
}
internal void restartSipProcedure ( )
{
if ( needRestart )
CallWebServer ( RestartSipLink ) ;
if ( needReload )
CallWebServer ( reloadDataLink ) ;
needRestart = false ;
needReload = true ;
lbsaveNotificationSip . Visible = false ;
}
internal void setVisibleSipRestartNotification ( )
{
needRestart = true ;
needReload = true ;
lbsaveNotificationSip . Visible = true ;
}
internal void setVisibleReloadNotification ( )
{
needReload = true ;
lbsaveNotificationSip . Visible = true ;
}
public static async void CallWebServer ( string address )
{
udp . Send ( Utils . Convert_text_For_multicast ( "#0.0#209#1" ) , Utils . Convert_text_For_multicast ( "#0.0#209#1" ) . Length ) ;
//if (MainForm.radioType != RADIOTYPE.SIMOCO)
await Utils . CallWebServerAsync ( address ) ;
}
/// <summary>
/// Get an int value from the configuration file. The desired value is identifiec by
/// the key and the header under which is placed is pointed by the header. Also a default
/// value can be set in case the value doesn't exist and needs to be created before
/// beeing returned
/// </summary>
/// <param name="header">Header unde which the desired config parameter is placed</param>
/// <param name="key">The Key that designates the desired config parameter</param>
/// <param name="defaultValue">A default value that will be used and returned in case the
/// config file doesn't have a value for the parameter</param>
/// <returns>Parameter value from the config file, or the default value in case it doesn't
/// exist</returns>
private Int32 GetInt32Value ( String header , String key , Int32 defaultValue )
{
if ( ! Program . source . Configs [ header ] . Contains ( key ) )
Program . source . Configs [ header ] . Set ( key , defaultValue ) ;
return Program . source . Configs [ header ] . GetInt ( key ) ;
}
/// <summary>
/// Get a string value from the configuration file. The desired value is identifiec by
/// the key and the header under which is placed is pointed by the header. Also a default
/// value can be set in case the value doesn't exist and needs to be created before
/// beeing returned
/// </summary>
/// <param name="header">Header unde which the desired config parameter is placed</param>
/// <param name="key">The Key that designates the desired config parameter</param>
/// <param name="defaultValue">A default value that will be used and returned in case the
/// config file doesn't have a value for the parameter</param>
/// <returns>Parameter value from the config file, or the default value in case it doesn't
/// exist</returns>
private String GetStringValue ( String header , String key , String defaultValue )
{
if ( ! Program . source . Configs [ header ] . Contains ( key ) )
Program . source . Configs [ header ] . Set ( key , defaultValue ) ;
return Program . source . Configs [ header ] . GetString ( key ) ;
}
/// <summary>
/// Get a boolean value from the configuration file. The desired value is identifiec by
/// the key and the header under which is placed is pointed by the header. Also a default
/// value can be set in case the value doesn't exist and needs to be created before
/// beeing returned
/// </summary>
/// <param name="header">Header unde which the desired config parameter is placed</param>
/// <param name="key">The Key that designates the desired config parameter</param>
/// <param name="defaultValue">A default value that will be used and returned in case the
/// config file doesn't have a value for the parameter</param>
/// <returns>Parameter value from the config file, or the default value in case it doesn't
/// exist</returns>
private Boolean GetBooleanValue ( String header , String key , Boolean defaultValue )
{
if ( ! Program . source . Configs [ header ] . Contains ( key ) )
Program . source . Configs [ header ] . Set ( key , defaultValue ) ;
return Program . source . Configs [ header ] . GetBoolean ( key ) ;
}
}
//public enum RADIOTYPE
//{
// MOTO = 0,
// HYT = 1,
// HARRIS = 2,
// ATLAS = 3,
// TETRA =4,
// UNKNOWN = 5,
// CONECTPLUS =6,
// REPEATER_TRBO = 7,
// SIMOCO = 8,
// LINX = 9,
// LINXB = 10,
// EXCERA = 11,
//}
}