2024-02-22 16:43:59 +00:00
using System ;
using System.Collections.Generic ;
using System.ComponentModel ;
using System.Data ;
using System.Drawing ;
using System.Text ;
using System.Windows.Forms ;
using Telerik.WinControls ;
using RegLibDLL ;
using SafeMobileLib ;
using Telerik.WinControls.UI ;
using MapGoogle ;
using System.Net.Sockets ;
using System.Net ;
using System.Runtime.InteropServices ;
using System.Threading ;
using System.Diagnostics ;
using ReportsLibrary ;
using NetFwTypeLib ;
using SharedUI ;
using System.IO ;
using Dispatcher.maptab.UIClasses ;
using System.Globalization ;
using System.Resources ;
namespace Safedispatch_4_0
{
public partial class Login : Telerik . WinControls . UI . RadForm
{
private Boolean valid = false ;
//the object needed to access the database
private SMdb_access smdbObj ;
private string MyConString ;
private Boolean LoadUser = true ;
private TcpClient client ;
//private Int32 registrationPort = 5680;
private SDRegistration sdRegistration ;
private BackgroundWorker bgWorkerRegistration ;
private WaitingForm wf ;
public const int WM_NCLBUTTONDOWN = 0xA1 ;
public const int HT_CAPTION = 0x2 ;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage ( IntPtr hWnd , int Msg , int wParam , int lParam ) ;
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture ( ) ;
public static CultureInfo culture = CultureInfo . CreateSpecificCulture ( "en" ) ;
private void Login_MouseMove ( object sender , MouseEventArgs e )
{
if ( e . Button = = MouseButtons . Left )
{
ReleaseCapture ( ) ;
SendMessage ( Handle , WM_NCLBUTTONDOWN , HT_CAPTION , 0 ) ;
}
}
public Login ( )
{
InitializeComponent ( ) ;
FireWallException fw = new FireWallException ( ) ;
string name = System . AppDomain . CurrentDomain . FriendlyName ;
string path = System . Windows . Forms . Application . ExecutablePath ;
fw . checkFirewall ( name , path ) ;
//bool result = fw.AuthorizeProgram(name, path, NET_FW_SCOPE_.NET_FW_SCOPE_ALL, NET_FW_IP_VERSION_.NET_FW_IP_VERSION_ANY);
//if (result) SM.Debug("Firewall exception added for:" + name + " path:" + path);
//else SM.Debug("Firewall exception ERROR for:" + name + " path:" + path);
// set theme for the Message Box
RadMessageBox . SetThemeName ( "TelerikMetroBlue" ) ;
// set theme
MainForm2 . setThemingColors ( MainForm2 . radioType ) ;
#region THEMING
btLogin . ButtonElement . ButtonFillElement . BackColor = MainForm2 . ButtonColor ;
btLogin . ButtonElement . ButtonFillElement . NumberOfColors = 1 ;
btnUpdate . ButtonElement . ButtonFillElement . BackColor = Color . White ;
btnUpdate . ButtonElement . ButtonFillElement . NumberOfColors = 1 ;
btnUpdate . ButtonElement . TextElement . ForeColor = MainForm2 . ButtonColor ;
#endregion
// do not allow login button with empty password
btLogin . Enabled = false ;
this . Size = new Size ( 551 , 408 ) ;
SM debug = new SM ( ) ;
try
{
MainForm2 . cfg . LoadConfig ( ) ;
switch ( MainForm2 . radioType )
{
case RADIOTYPE . CONECTPLUS :
case RADIOTYPE . TETRA :
case RADIOTYPE . MOTO :
case RADIOTYPE . REPEATER_TRBO :
panelControls . Location = new Point ( 320 , 200 ) ;
panelControls . BackColor = Color . Transparent ;
cbRemeber . RootElement . ForeColor = Color . Gray ;
break ;
case RADIOTYPE . HYT :
this . Text = "SafeSyt" ;
this . BackgroundImage = global :: Dispatcher . Properties . Resources . login_hytera_v2 ;
this . Icon = global :: Dispatcher . Properties . Resources . HytSmall24 ;
panelControls . BackColor = Color . FromArgb ( 93 , 93 , 93 ) ;
cbRemeber . RootElement . ForeColor = Color . Gray ;
panelControls . Location = new Point ( 287 , 164 ) ;
break ;
case RADIOTYPE . HARRIS :
this . Text = "Vision" ;
this . BackgroundImage = global :: Dispatcher . Properties . Resources . visionLogin ;
panelControls . BackColor = Color . FromArgb ( 49 , 49 , 49 ) ;
cbRemeber . RootElement . ForeColor = Color . Gray ;
panelControls . Location = new Point ( 287 , 164 ) ;
this . Icon = global :: Dispatcher . Properties . Resources . HarrisSmall ;
//ThemeResolutionService.ApplicationThemeName = "Office2010Black";
//this.ThemeName = "Office2010Black";
lbVersion . ForeColor = MainForm2 . HarTextColor ;
break ;
case RADIOTYPE . ATLAS :
this . Text = "Atl25" ;
this . BackgroundImage = global :: Dispatcher . Properties . Resources . login_Atl25 ; //ATLASCHANGE
panelControls . BackColor = Color . Black ;
panelControls . Location = new Point ( 287 , 164 ) ;
this . Icon = global :: Dispatcher . Properties . Resources . HarrisSmall ;
lbVersion . ForeColor = MainForm2 . HarTextColor ;
cbRemeber . ButtonElement . TextElement . ForeColor = MainForm2 . HarTextColor ;
break ;
case RADIOTYPE . SIMOCO :
this . Text = "Simoco" ;
this . BackgroundImage = global :: Dispatcher . Properties . Resources . simoco3 ; //ATLASCHANGE
this . Icon = global :: Dispatcher . Properties . Resources . simoco_dispatch_24 ;
panelControls . Location = new Point ( 287 , 164 ) ;
break ;
case RADIOTYPE . EXCERA :
this . Text = "AXYS" ;
this . BackgroundImage = global :: Dispatcher . Properties . Resources . axys ; //ATLASCHANGE
this . BackgroundImageLayout = ImageLayout . Stretch ;
this . Icon = global :: Dispatcher . Properties . Resources . AXYS_ICON ;
panelControls . Location = new Point ( 147 , 164 ) ;
break ;
case RADIOTYPE . LINX :
case RADIOTYPE . LINXB :
this . Text = "LINX" ;
this . BackgroundImage = global :: Dispatcher . Properties . Resources . login_linx ;
panelControls . Location = new Point ( 320 , 200 ) ;
panelControls . BackColor = Color . Transparent ;
cbRemeber . RootElement . ForeColor = Color . Gray ;
break ;
}
}
catch ( Exception ex )
{
SM . Debug ( "Error on read config file: " + ex . ToString ( ) ) ;
}
Version v = System . Reflection . Assembly . GetExecutingAssembly ( ) . GetName ( ) . Version ;
lbVersion . Text = "Version: " + v . ToString ( ) ;
}
#region bg worker registration events
void bgWorkerRegistration_DoWork ( object sender , DoWorkEventArgs e )
{
sdRegistration = getRegistration ( ) ;
MainForm2 . cfg . MSG_BUS_IP = sdRegistration . MSG_BUS_IP ;
// do not use the messagebus port if already specified in the config file
if ( MainForm2 . cfg . MSg_BUS_port = = null | | MainForm2 . cfg . MSg_BUS_port . Length < 2 )
MainForm2 . cfg . MSg_BUS_port = sdRegistration . MSg_BUS_port ;
MainForm2 . cfg . V_MSG_BUS_port = sdRegistration . VoiceMessageBusPort ;
}
void bgWorkerRegistration_RunWorkerCompleted ( object sender , RunWorkerCompletedEventArgs e )
{
if ( wf ! = null )
if ( wf . IsInitialized )
if ( wf . IsLoaded )
{
SM . Debug ( "Shuting down waiting form" ) ;
wf . DialogResult = DialogResult . OK ;
wf . Close ( ) ;
}
if ( appServerMissing )
{
RadMessageBox . Show ( "Could not reach Application Server. Please check the connection and try again!!!" , "Connection Error" , MessageBoxButtons . OK , RadMessageIcon . Error ) ;
//System.Environment.Exit(0);
System . Windows . Forms . Application . Exit ( ) ;
return ;
}
ContinueLogin ( ) ;
}
#endregion
private String YourIPaddress = "127.0.0.1" ;
internal static string IPaddress = "127.0.0.1" ;
private void ContinueLogin ( )
{
SM . Debug ( "Continuing login form after registration info aquired from app server" ) ;
if ( sdRegistration . ip . Equals ( "invalid" ) )
{
btLogin . Text = "Invalid registration" ;
btLogin . Enabled = false ;
switch ( MainForm2 . radioType )
{
case RADIOTYPE . CONECTPLUS :
case RADIOTYPE . TETRA :
case RADIOTYPE . MOTO :
case RADIOTYPE . REPEATER_TRBO :
Console . WriteLine ( "map type:" + sdRegistration . map_type ) ;
if ( sdRegistration . map_type = = 9 ) RadMessageBox . Show ( "Please register your copy of SafeDispatch using the Administrative Module.\n Your unique ID is:" + MainForm2 . uniqueID + " is used by other client" , "Info" , MessageBoxButtons . OK , RadMessageIcon . Info ) ;
else RadMessageBox . Show ( "Please register your copy of SafeDispatch using the Administrative Module.\n Your IP address is:" + YourIPaddress , "Info" , MessageBoxButtons . OK , RadMessageIcon . Info ) ;
break ;
case RADIOTYPE . HYT :
RadMessageBox . Show ( "Please register your copy of SafeSyt using the Administrative Module.\n Your IP address is:" + YourIPaddress , "Info" , MessageBoxButtons . OK , RadMessageIcon . Info ) ;
break ;
case RADIOTYPE . HARRIS :
( ( RadLabel ) RadMessageBox . Instance . Controls [ 1 ] ) . LabelElement . ForeColor = MainForm2 . HarTextColor ;
RadMessageBox . Show ( "Please register your copy of Vision using the Administrative Module.\n Your IP address is:" + YourIPaddress , "Info" , MessageBoxButtons . OK , RadMessageIcon . Info ) ;
break ;
case RADIOTYPE . ATLAS :
( ( RadLabel ) RadMessageBox . Instance . Controls [ 1 ] ) . LabelElement . ForeColor = MainForm2 . HarTextColor ;
RadMessageBox . Show ( "Please register your copy of ATL25 using the Administrative Module.\n Your IP address is:" + YourIPaddress , "Info" , MessageBoxButtons . OK , RadMessageIcon . Info ) ;
break ;
case RADIOTYPE . SIMOCO :
( ( RadLabel ) RadMessageBox . Instance . Controls [ 1 ] ) . LabelElement . ForeColor = MainForm2 . HarTextColor ;
RadMessageBox . Show ( "Please register your copy of Simoco using the Administrative Module.\n Your IP address is:" + YourIPaddress , "Info" , MessageBoxButtons . OK , RadMessageIcon . Info ) ;
break ;
case RADIOTYPE . EXCERA :
//((RadLabel)RadMessageBox.Instance.Controls[1]).LabelElement.ForeColor = MainForm2.HarTextColor;
RadMessageBox . Show ( "Please register your copy of EXCERA using the Administrative Module.\n Your IP address is:" + YourIPaddress , "Info" , MessageBoxButtons . OK , RadMessageIcon . Info ) ;
break ;
case RADIOTYPE . LINX :
case RADIOTYPE . LINXB :
RadMessageBox . Show ( "Please register your copy of LINXDispatch using the Administrative Module.\n Your IP address is:" + YourIPaddress , "Info" , MessageBoxButtons . OK , RadMessageIcon . Info ) ;
break ;
}
// System.Environment.Exit(1);
System . Windows . Forms . Application . Exit ( ) ;
}
else if ( sdRegistration . ip . Equals ( "valid" ) & & ! App . isValidVersion ( MainForm2 . APP_SERVER_VERSION ,
System . Reflection . Assembly . GetExecutingAssembly ( ) . GetName ( ) . Version . ToString ( ) ) )
{
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 )
{
DisplayModalUpdateDialog ( ) ;
System . Windows . Forms . Application . Exit ( ) ;
}
else
System . Windows . Forms . Application . Exit ( ) ;
}
else
{
this . Enabled = true ;
MainForm2 . HasVoice = sdRegistration . voice ;
MainForm2 . recordingsDecide = sdRegistration . recordings ;
MainForm2 . ReportDecide = sdRegistration . reports ;
MainForm2 . ZonesDecide = sdRegistration . zones ;
MainForm2 . GPSDecide = sdRegistration . gps ;
MainForm2 . SMSDecide = sdRegistration . sms ;
MainForm2 . TicketingDecide = sdRegistration . ticketing ;
MainForm2 . TelemDecide = sdRegistration . telemetry ;
MainForm2 . cfg . DB_IP = sdRegistration . DatabaseIP ;
MainForm2 . cfg . DB_schema = sdRegistration . Db_schema ;
MainForm2 . cfg . DB_user = sdRegistration . Db_user ;
MainForm2 . cfg . DB_passwd = sdRegistration . Db_password ;
MainForm2 . cfg . DB_port = sdRegistration . Db_port ;
MyConString = String . Format ( "Server={0};Port={1};User Id={2};Password={3};Database={4};Pooling=false;Timeout=60;CommandTimeout=0;" ,
MainForm2 . cfg . DB_IP , MainForm2 . cfg . DB_port , MainForm2 . cfg . DB_user , MainForm2 . cfg . DB_passwd , MainForm2 . cfg . DB_schema ) ;
MainForm2 . MapType = MapTYPE . Google ;
//sdReg.map_type = 3;
if ( sdRegistration . map_type = = 1 )
{
if ( MainForm2 . googlemaptype . Contains ( "map" ) )
MainForm2 . MapHtmlName = "SfmbMapsMainMap.html" ;
else if ( MainForm2 . googlemaptype . Contains ( "hybrid" ) )
MainForm2 . MapHtmlName = "SfmbMapsMain.html" ;
else if ( MainForm2 . googlemaptype . Contains ( "satellite" ) )
MainForm2 . MapHtmlName = "SfmbMapsMainSatelitte.html" ;
/ *
string sourceDir = System . Windows . Forms . Application . StartupPath + @"\resource\map_google\" ;
string targetDir = System . Windows . Forms . Application . StartupPath + @"\resource\" ;
foreach ( var file in Directory . GetFiles ( sourceDir ) )
File . Copy ( file , Path . Combine ( targetDir , Path . GetFileName ( file ) ) , true ) ;
* /
MainForm2 . MapType = MapTYPE . Google ;
}
else if ( sdRegistration . map_type = = 4 )
MainForm2 . MapType = MapTYPE . ArcGis ;
else if ( sdRegistration . map_type = = 3 )
{
if ( MainForm2 . googlemaptype . Contains ( "map" ) )
MainForm2 . MapHtmlName = "SfmbMapsMainMap-osm.html" ;
else if ( MainForm2 . googlemaptype . Contains ( "hybrid" ) )
MainForm2 . MapHtmlName = "SfmbMapsMain-osm.html" ;
else if ( MainForm2 . googlemaptype . Contains ( "satellite" ) )
MainForm2 . MapHtmlName = "SfmbMapsMainSatelitte-osm.html" ;
/ *
string sourceDir = System . Windows . Forms . Application . StartupPath + @"\resource\map_osm\" ;
string targetDir = System . Windows . Forms . Application . StartupPath + @"\resource\" ;
foreach ( var file in Directory . GetFiles ( sourceDir ) )
File . Copy ( file , Path . Combine ( targetDir , Path . GetFileName ( file ) ) , true ) ;
* /
MainForm2 . MapType = MapTYPE . Google ;
}
StaticMembers . MapType = MainForm2 . MapType ;
}
try
{
smdbObj = new SMdb_access ( ) ;
DBuserManager tmp = new DBuserManager ( MainForm2 . cfg . DB_IP , MainForm2 . cfg . DB_schema , MainForm2 . cfg . DB_user , MainForm2 . cfg . DB_passwd , MainForm2 . cfg . DB_port ) ;
MainForm2 . UsersList = tmp . getAllDispatcher ( ) ;
MainForm2 . UsersList . Sort ( delegate ( User p1 , User p2 ) { return p1 . UserName . CompareTo ( p2 . UserName ) ; } ) ;
}
catch ( Exception ex )
{
MainForm2 . UsersList = new List < User > ( ) ;
SM . Debug ( "Error on load user from DB" + ex . ToString ( ) ) ;
RadMessageBox . Show ( "Unable to connect to Database!\nThis may be caused by a firewall, please try disabling firewall." ) ;
}
if ( MainForm2 . UsersList . Count > 0 )
{
cbUsers . DataSource = MainForm2 . UsersList ;
cbUsers . DisplayMember = "UserName" ;
cbUsers . SelectedIndex = 0 ;
}
else
{
cbUsers . Text = "No user found" ;
LoadUser = false ;
}
if ( ! valid )
{
MainForm2 . KillAPP = true ;
// MainForm2.RegistrName = "Unregistered";
// MainForm2.ExpireLimit = "";
// lbMapType.Visible = false;
// cbMapType.Visible = false;
}
//cbLang.SelectedIndex = 1;
cbLang . SelectedIndex = 0 ;
// restore previous settings from the config file
if ( ( LoadUser ) & & ( MainForm2 . cfg . Login ! = "" ) & & ( MainForm2 . cfg . Login ! = " " ) )
{
Int32 cnt = 0 ;
foreach ( RadListDataItem obj in cbUsers . Items )
{
User u = ( User ) ( obj . Value ) ;
if ( u . UserName . CompareTo ( MainForm2 . cfg . Login ) = = 0 )
{
cbUsers . SelectedIndex = cnt ;
txPass . Text = MainForm2 . cfg . Pass ;
cbRemeber . Checked = true ;
foreach ( RadListDataItem rl in cbLang . Items )
{
if ( rl . Tag . ToString ( ) . Equals ( u . Language ) )
{
cbLang . SelectedItem = rl ;
// update the language UI
onLanguageChanged ( u . Language , u . SipID ) ;
culture = CultureInfo . CreateSpecificCulture ( u . Language ) ;
break ;
}
}
break ;
}
cnt + + ;
}
}
ForceTimer . Enabled = true ;
ForceTimer . Start ( ) ;
MainForm2 . IsInLogin = false ;
}
private bool appServerMissing = false ;
#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 DisplayModalUpdateDialog ( )
{
App appType = App . DISPATCH_MOTOROLA ;
switch ( MainForm2 . radioType )
{
case RADIOTYPE . MOTO :
case RADIOTYPE . TETRA :
case RADIOTYPE . REPEATER_TRBO :
case RADIOTYPE . CONECTPLUS : appType = App . DISPATCH_MOTOROLA ; break ;
case RADIOTYPE . ATLAS : appType = App . DISPATCH_ATLAS ; break ;
case RADIOTYPE . HYT : appType = App . DISPATCH_HYTERA ; break ;
case RADIOTYPE . HARRIS : appType = App . DISPATCH_HARRIS ; break ;
case RADIOTYPE . SIMOCO : appType = App . DISPATCH_SIMOCO ; break ;
case RADIOTYPE . EXCERA : appType = App . DISPATCH_EXCERA ; break ;
}
UpdateForm uf = new UpdateForm ( appType , true ) { IsDevelop = MainForm2 . cfg . isDevelope } ;
uf . ShowDialog ( ) ;
}
#endregion
private SDRegistration getRegistration ( )
{
SDRegistration toReturn = new SDRegistration ( ) ;
try
{
client = new TcpClient ( ) ;
IPEndPoint serverEndPoint = new IPEndPoint ( IPAddress . Parse ( MainForm2 . cfg . APPLICATION_SERVER_IP ) , MainForm2 . cfg . RegsPort ) ;
client . Connect ( serverEndPoint ) ;
2024-06-05 11:00:51 +00:00
YourIPaddress = ( client . Client . LocalEndPoint . ToString ( ) . Split ( ":" . ToCharArray ( ) ) ) [ 0 ] ;
2024-02-22 16:43:59 +00:00
IPaddress = MainForm2 . cfg . LocalIP . Length > 3 ? MainForm2 . cfg . LocalIP : YourIPaddress ;
2024-06-05 11:00:51 +00:00
2024-02-22 16:43:59 +00:00
NetworkStream clientStream = client . GetStream ( ) ;
2024-06-05 11:00:51 +00:00
UTF8Encoding encoding = new UTF8Encoding ( ) ;
2024-02-22 16:43:59 +00:00
byte [ ] buffer = encoding . GetBytes ( "100" ) ;
clientStream . Write ( buffer , 0 , buffer . Length ) ;
SM . Debug ( "Sent registration request to server, waiting..." ) ;
2024-06-05 11:00:51 +00:00
2024-02-22 16:43:59 +00:00
byte [ ] message = new byte [ 256 ] ;
clientStream . ReadTimeout = 7000 ;
int result = clientStream . Read ( message , 0 , message . Length ) ;
toReturn = MainForm2 . verifyReg ( message ) ;
if ( toReturn . ip . Equals ( "invalid" ) )
{
client . Close ( ) ;
Thread . Sleep ( 100 ) ;
2024-06-05 11:00:51 +00:00
2024-02-22 16:43:59 +00:00
client = new TcpClient ( ) ;
client . Connect ( serverEndPoint ) ;
buffer = encoding . GetBytes ( "1000#" + MainForm2 . uniqueID + "#" ) ;
2024-06-05 11:00:51 +00:00
2024-02-22 16:43:59 +00:00
NetworkStream clientStream2 = client . GetStream ( ) ;
clientStream2 . Write ( buffer , 0 , buffer . Length ) ;
byte [ ] message2 = new byte [ 256 ] ;
clientStream2 . ReadTimeout = 7000 ;
SM . Debug ( "Sent registration request to server with unique ID, waiting..." ) ;
int result2 = clientStream2 . Read ( message2 , 0 , message2 . Length ) ;
toReturn = MainForm2 . verifyReg ( message2 ) ;
}
else
MainForm2 . uniqueID = 0 ;
}
catch ( Exception ex )
{
SM . Debug ( "Dongle registration:" + ex . ToString ( ) ) ;
appServerMissing = true ;
toReturn . ip = "invalid" ;
}
return toReturn ;
}
private void radButton1_Click ( object sender , EventArgs e )
{
if ( cbUsers . SelectedItem = = null )
{
if ( ( MainForm2 . radioType = = RADIOTYPE . HARRIS ) | | ( MainForm2 . radioType = = RADIOTYPE . ATLAS ) ) ( ( RadLabel ) RadMessageBox . Instance . Controls [ 1 ] ) . LabelElement . ForeColor = MainForm2 . HarTextColor ;
RadMessageBox . Show ( MainForm2 . returnLNGString ( "nouser" ) ) ;
return ;
}
else
{
Console . WriteLine ( "Value:" + ( ( User ) ( ( RadListDataItem ) cbUsers . SelectedItem ) . Value ) . Password . CompareTo ( txPass . Text ) + " Comp1:" + ( ( User ) ( ( RadListDataItem ) cbUsers . SelectedItem ) . Value ) . Password + " Comp2:" + txPass . Text ) ;
if ( ( ( User ) ( ( RadListDataItem ) cbUsers . SelectedItem ) . Value ) . Password . CompareTo ( txPass . Text ) = = 0 )
{
/ * MainForm2 . MapType = MapTYPE . Google ;
if ( cbMapType . Text . Contains ( "MapPoint US" ) ) { MainForm2 . MapType = MapTYPE . MapPoint ; MainForm2 . MapsUS = true ; }
else if ( cbMapType . Text . Contains ( "MapPoint EU" ) ) { MainForm2 . MapType = MapTYPE . MapPoint ; MainForm2 . MapsUS = false ; }
else if ( cbMapType . Text . Contains ( "MapInfo" ) ) MainForm2 . MapType = MapTYPE . MapInfo ; * /
//MainForm2.MapType = MapTYPE.MapPoint;
//check daca userul este ON sau nu
MainForm2 . userIDX = ( ( User ) ( ( RadListDataItem ) cbUsers . SelectedItem ) . Value ) . Id ;
MainForm2 . userLog = ( ( User ) ( ( RadListDataItem ) cbUsers . SelectedItem ) . Value ) . UserName ;
MainForm2 . userType = ( ( User ) ( ( RadListDataItem ) cbUsers . SelectedItem ) . Value ) . UType ;
try
{
MainForm2 . userSipId = MainForm2 . radioType = = RADIOTYPE . EXCERA ? int . Parse ( MainForm2 . userLog ) : ( ( User ) ( ( RadListDataItem ) cbUsers . SelectedItem ) . Value ) . SipID ;
}
catch ( Exception ex )
{
Utils . WriteLine ( ex . ToString ( ) , ConsoleColor . Red ) ;
}
if ( ( ( User ) ( ( RadListDataItem ) cbUsers . SelectedItem ) . Value ) . UType = = USERTYPE . Dispatcher ) MainForm2 . LimitedUser = false ;
else MainForm2 . LimitedUser = true ;
MainForm2 . Langidx = cbLang . SelectedIndex ;
if ( cbRemeber . Checked )
MainForm2 . cfg . SavePass ( cbUsers . Text , txPass . Text , cbLang . SelectedIndex . ToString ( ) ) ;
else MainForm2 . cfg . SavePass ( "" , "" , "0" ) ;
Boolean checkstatus = false ;
try
{
checkstatus = smdbObj . CheckUserStatus ( MainForm2 . userIDX , MyConString ) ;
}
catch ( Exception ex )
{
SM . Debug ( "Error check login on DB" + ex . ToString ( ) ) ;
}
Boolean startmainForm = false ;
if ( ( checkstatus ) & & ( ! MainForm2 . forceLogin ) )
{
if ( ( MainForm2 . radioType = = RADIOTYPE . HARRIS ) | | ( MainForm2 . radioType = = RADIOTYPE . ATLAS ) ) ( ( RadLabel ) RadMessageBox . Instance . Controls [ 1 ] ) . LabelElement . ForeColor = MainForm2 . HarTextColor ;
DialogResult dr2 = RadMessageBox . Show ( this , "The user " + cbUsers . Text + " is already logged on another computer." + "\r\n" + "Do you want to continue?" , "Warning" , MessageBoxButtons . YesNo , RadMessageIcon . Exclamation ) ;
if ( dr2 = = DialogResult . Yes ) startmainForm = true ;
}
else startmainForm = true ;
if ( startmainForm )
{
try
{
User u = ( ( User ) cbUsers . SelectedItem . Value ) ;
u . Language = cbLang . SelectedItem . Tag . ToString ( ) ;
VisualSettings . SetDispatcherLanguage ( u . SipID , u . Language ) ;
MainForm2 . mapLanguage = GetLanguageForMap ( cbLang . Text ) ;
MainForm2 tmp = new MainForm2 ( this ) ;
tmp . Show ( ) ;
}
catch ( Exception ex )
{
SM . Debug ( "Exception on start MAINFORM: " + ex . ToString ( ) ) ;
if ( ( MainForm2 . radioType = = RADIOTYPE . HARRIS ) | | ( MainForm2 . radioType = = RADIOTYPE . ATLAS ) ) ( ( RadLabel ) RadMessageBox . Instance . Controls [ 1 ] ) . LabelElement . ForeColor = MainForm2 . HarTextColor ;
RadMessageBox . Show ( "Error starting SafeDispatch. Please check system or contact support." , "Warning" , MessageBoxButtons . OK , RadMessageIcon . Exclamation ) ;
}
}
}
else
{
if ( ( MainForm2 . radioType = = RADIOTYPE . HARRIS ) | | ( MainForm2 . radioType = = RADIOTYPE . ATLAS ) )
( ( RadLabel ) RadMessageBox . Instance . Controls [ 1 ] ) . LabelElement . ForeColor = MainForm2 . HarTextColor ;
RadMessageBox . Show ( "Please check username and password" , "Invalid credentials" , MessageBoxButtons . OK , RadMessageIcon . Exclamation ) ;
}
}
}
private void CloseButton_Click ( object sender , EventArgs e )
{
Close ( ) ;
System . Windows . Forms . Application . Exit ( ) ;
}
private void btnUpdate_Click ( object sender , EventArgs e )
{
try
{
Process proc = new Process ( ) ;
proc . StartInfo . FileName = "..\\Updater\\Updater.exe" ;
if ( MainForm2 . radioType = = RADIOTYPE . MOTO ) proc . StartInfo . Arguments = "motorola" ;
else if ( MainForm2 . radioType = = RADIOTYPE . HARRIS ) proc . StartInfo . Arguments = "harris" ;
else if ( MainForm2 . radioType = = RADIOTYPE . HYT ) proc . StartInfo . Arguments = "hytera" ;
else if ( MainForm2 . radioType = = RADIOTYPE . ATLAS ) proc . StartInfo . Arguments = "atlas" ;
else if ( MainForm2 . radioType = = RADIOTYPE . TETRA ) proc . StartInfo . Arguments = "tetra" ;
else if ( MainForm2 . radioType = = RADIOTYPE . CONECTPLUS ) proc . StartInfo . Arguments = "conplus" ;
else if ( MainForm2 . radioType = = RADIOTYPE . REPEATER_TRBO ) proc . StartInfo . Arguments = "repeater" ;
else if ( MainForm2 . radioType = = RADIOTYPE . SIMOCO ) proc . StartInfo . Arguments = "simoco" ;
else if ( MainForm2 . radioType = = RADIOTYPE . EXCERA ) proc . StartInfo . Arguments = "excera" ;
else if ( MainForm2 . radioType = = RADIOTYPE . LINX ) proc . StartInfo . Arguments = "linx" ;
else if ( MainForm2 . radioType = = RADIOTYPE . LINXB ) proc . StartInfo . Arguments = "linxb" ;
proc . Start ( ) ;
}
catch ( Exception ex )
{
SM . Debug ( "EX:" + ex . ToString ( ) ) ;
if ( ( MainForm2 . radioType = = RADIOTYPE . HARRIS ) | | ( MainForm2 . radioType = = RADIOTYPE . ATLAS ) ) ( ( RadLabel ) RadMessageBox . Instance . Controls [ 1 ] ) . LabelElement . ForeColor = MainForm2 . HarTextColor ;
RadMessageBox . Show ( "Could not find Updater!!!!" ) ;
}
}
private void txPass_KeyPress ( object sender , KeyPressEventArgs e )
{
if ( ( int ) e . KeyChar = = 13 )
btLogin . PerformClick ( ) ;
}
private String NotFindConfig = "Unable to read config file" ;
private void Login_Shown ( object sender , EventArgs e )
{
try
{
MainForm2 . cfg . LoadConfig ( ) ; // i let also the cmd here because here we have MessageShow Error
}
catch ( Exception ex )
{
SM . Debug ( "LoadSetup() Exception: " + ex . ToString ( ) ) ;
if ( ( MainForm2 . radioType = = RADIOTYPE . HARRIS ) | | ( MainForm2 . radioType = = RADIOTYPE . ATLAS ) ) ( ( RadLabel ) RadMessageBox . Instance . Controls [ 1 ] ) . LabelElement . ForeColor = MainForm2 . HarTextColor ;
RadMessageBox . Show ( NotFindConfig , "Error" , MessageBoxButtons . OK , RadMessageIcon . Error ) ;
//Environment.Exit(1);
System . Windows . Forms . Application . Exit ( ) ;
}
btLogin . Focus ( ) ;
bgWorkerRegistration = new BackgroundWorker ( ) ;
bgWorkerRegistration . DoWork + = new DoWorkEventHandler ( bgWorkerRegistration_DoWork ) ;
bgWorkerRegistration . RunWorkerCompleted + = new RunWorkerCompletedEventHandler ( bgWorkerRegistration_RunWorkerCompleted ) ;
bgWorkerRegistration . RunWorkerAsync ( ) ;
wf = new WaitingForm ( "Registering" , "Checking your dispatcher registration..." ) ;
wf . FormClosing + = delegate ( object s , FormClosingEventArgs ee )
{
if ( wf . DialogResult = = DialogResult . Cancel )
System . Windows . Forms . Application . Exit ( ) ;
} ;
wf . Show ( ) ;
}
private void ForceTimer_Tick ( object sender , EventArgs e )
{
if ( MainForm2 . forceLogin )
{
btLogin . PerformClick ( ) ;
}
ForceTimer . Stop ( ) ;
ForceTimer . Enabled = false ;
}
private void pbLanguage_Click ( object sender , EventArgs e )
{
cbLang . DropDownListElement . DropDownWidth = 196 ;
cbLang . DropDownListElement . ArrowButton . PerformClick ( ) ;
}
private void cbUsers_SelectedIndexChanged ( object sender , Telerik . WinControls . UI . Data . PositionChangedEventArgs e )
{
User u = ( User ) cbUsers . SelectedItem ? . Value ;
if ( u ! = null & & u . Language ! = null )
{
onLanguageChanged ( u . Language , u . SipID ) ;
}
}
private void cbLang_SelectedIndexChanged ( object sender , Telerik . WinControls . UI . Data . PositionChangedEventArgs e )
{
User u = ( User ) cbUsers . SelectedItem ? . Value ;
if ( u ! = null & & cbLang . SelectedItem ! = null )
{
onLanguageChanged ( cbLang . SelectedItem . Tag . ToString ( ) , u . SipID ) ;
}
}
private void onLanguageChanged ( string language , Int32 dispatcherSipId )
{
switch ( language )
{
case "en" :
pbLanguage . Image = Dispatcher . Properties . Resources . f_en ;
break ;
case "zh-CN" : pbLanguage . Image = Dispatcher . Properties . Resources . f_cn ; break ;
case "cs" : pbLanguage . Image = Dispatcher . Properties . Resources . f_cz ; break ;
case "fr" : pbLanguage . Image = Dispatcher . Properties . Resources . f_fr ; break ;
case "de" : pbLanguage . Image = Dispatcher . Properties . Resources . f_de ; break ;
case "it" : pbLanguage . Image = Dispatcher . Properties . Resources . f_it ; break ;
case "ja" : pbLanguage . Image = Dispatcher . Properties . Resources . f_jp ; break ;
case "pl" : pbLanguage . Image = Dispatcher . Properties . Resources . f_pl ; break ;
case "pt" : pbLanguage . Image = Dispatcher . Properties . Resources . f_pt ; break ;
case "ro" : pbLanguage . Image = Dispatcher . Properties . Resources . f_ro ; break ;
case "ru" : pbLanguage . Image = Dispatcher . Properties . Resources . f_ru ; break ;
case "sr" : pbLanguage . Image = Dispatcher . Properties . Resources . f_rs ; break ;
case "es" : pbLanguage . Image = Dispatcher . Properties . Resources . f_es ; break ;
case "sv" : pbLanguage . Image = Dispatcher . Properties . Resources . f_se ; break ;
case "tr" : pbLanguage . Image = Dispatcher . Properties . Resources . f_tr ; break ;
case "ar" : pbLanguage . Image = Dispatcher . Properties . Resources . f_ar ; break ;
}
culture = CultureInfo . CreateSpecificCulture ( language ) ;
UpdateUILanguage ( ) ;
}
/// <summary>
/// Update the language of the UI elements
/// </summary>
private void UpdateUILanguage ( )
{
cbUsers . NullText = returnLNGString ( "username" , culture ) ;
txPass . NullText = returnLNGString ( "password" , culture ) ;
btLogin . Text = returnLNGString ( "login" , culture ) . ToUpper ( ) ;
cbRemeber . Text = returnLNGString ( "rememberSettings" , culture ) ;
}
public static string returnLNGString ( string name , CultureInfo culture )
{
string returnSTR = "" ;
ResourceManager RManager = new ResourceManager ( "Dispatcher.Language.myRes" , typeof ( MainForm2 ) . Assembly ) ;
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 ;
}
/ *
private void UpdateLanguageImage ( string language )
{
switch ( language )
{
case "English" : pbLanguage . Image = Dispatcher . Properties . Resources . f_en ; break ;
case "Chinese" : pbLanguage . Image = Dispatcher . Properties . Resources . f_cn ; break ;
case "Czech" : pbLanguage . Image = Dispatcher . Properties . Resources . f_cz ; break ;
case "French" : pbLanguage . Image = Dispatcher . Properties . Resources . f_fr ; break ;
case "German" : pbLanguage . Image = Dispatcher . Properties . Resources . f_de ; break ;
case "Italian" : pbLanguage . Image = Dispatcher . Properties . Resources . f_it ; break ;
case "Japanese" : pbLanguage . Image = Dispatcher . Properties . Resources . f_jp ; break ;
case "Polish" : pbLanguage . Image = Dispatcher . Properties . Resources . f_pl ; break ;
case "Portuguese" : pbLanguage . Image = Dispatcher . Properties . Resources . f_pt ; break ;
case "Romanian" : pbLanguage . Image = Dispatcher . Properties . Resources . f_ro ; break ;
case "Russian" : pbLanguage . Image = Dispatcher . Properties . Resources . f_ru ; break ;
case "Serbian" : pbLanguage . Image = Dispatcher . Properties . Resources . f_rs ; break ;
case "Spanish" : pbLanguage . Image = Dispatcher . Properties . Resources . f_es ; break ;
case "Swedish" : pbLanguage . Image = Dispatcher . Properties . Resources . f_se ; break ;
case "Turkish" : pbLanguage . Image = Dispatcher . Properties . Resources . f_tr ; break ;
}
}
* /
private string GetLanguageForMap ( string language )
{
string ret = "en" ;
switch ( language )
{
case "English" :
ret = "en" ; break ;
case "Chinese" :
ret = "zh-CN" ; break ;
case "Czech" :
ret = "cs" ; break ;
case "French" :
ret = "fr" ; break ;
case "German" :
ret = "de" ; break ;
case "Italian" :
ret = "it" ; break ;
case "Japanese" :
ret = "ja" ; break ;
case "Polish" :
ret = "pl" ; break ;
case "Portuguese" :
ret = "pt" ; break ;
case "Romanian" :
ret = "ro" ; break ;
case "Russian" :
ret = "ru" ; break ;
case "Serbian" :
ret = "sr" ; break ;
case "Spanish" :
ret = "es" ; break ;
case "Swedish" :
ret = "sv" ; break ;
case "Turkish" :
ret = "tr" ; break ;
case "Arabic" :
ret = "ar" ; break ;
}
return ret ;
}
/// <summary>
/// intercept the changes in password text in order to enable or disable the
/// login button
/// </summary>
private void txPass_TextChanged ( object sender , EventArgs e )
{
if ( txPass . Text . Length > 0 )
btLogin . Enabled = true ;
else
btLogin . Enabled = false ;
}
/// <summary>
/// Change the buttons background color for the animation buttons depending on their enabled/disabled
/// state
/// </summary>
private void btLogin_EnabledChanged ( object sender , EventArgs e )
{
if ( ( ( RadButton ) sender ) . Enabled )
( ( RadButton ) sender ) . ButtonElement . ButtonFillElement . BackColor = MainForm2 . ButtonColor ;
else
( ( RadButton ) sender ) . ButtonElement . ButtonFillElement . BackColor = MainForm2 . ButtonColorDisabled ;
}
private void cbRemeber_KeyPress ( object sender , KeyPressEventArgs e )
{
if ( ( int ) e . KeyChar = = 13 )
btLogin . PerformClick ( ) ;
}
private void Login_Load ( object sender , EventArgs e )
{
}
}
}