www.pudn.com > fbdelphisw > MainUnit.pas


unit MainUnit; 
 
interface 
{$DEFINE REGISTRED} 
{.$DEFINE UNREGISTRED} 
 
uses 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
  Outlook, FBUS,INIFiles, ExtCtrls, Menus, ComCtrls, FBUSStatusBar, 
  StdCtrls, Mask,phonebook, FileCtrl, VSSLogoEditor, FBUSOpenPictureDialog; 
var 
  fFont : TFont; 
  bFirstTime : boolean; 
  bContinueLoop : Boolean; 
type 
  TfrmMain = class(TForm) 
    Outlook1: TOutlook; 
    FBUS1: TFBUS; 
    tmpTimer: TTimer; 
    Notebook1: TNotebook; 
    MFBUSStatusBar1: TMFBUSStatusBar; 
    MainMenu1: TMainMenu; 
    File1: TMenuItem; 
    Exit1: TMenuItem; 
    Phone1: TMenuItem; 
    N1: TMenuItem; 
    Connect1: TMenuItem; 
    Disconnect1: TMenuItem; 
    Settings1: TMenuItem; 
    ChangeComport1: TMenuItem; 
    Reset1: TMenuItem; 
    SoftReset1: TMenuItem; 
    N2: TMenuItem; 
    HardReset1: TMenuItem; 
    grpPhoneInfo: TGroupBox; 
    lvPhoneInfo: TListView; 
    grpNetworkInfo: TGroupBox; 
    lvNetworkInfo: TListView; 
    grpPhoneDateTime: TGroupBox; 
    DateTimeLabel: TLabel; 
    GroupBox3: TGroupBox; 
    txtTime: TMaskEdit; 
    Button3: TButton; 
    lvPhoneBook: TListView; 
    grpMemoryType: TGroupBox; 
    btnPBAddnew: TButton; 
    btnPBDelete: TButton; 
    btnPBRefresh: TButton; 
    btnPBSendSMS: TButton; 
    cmbpMemType: TComboBox; 
    imgPhone: TImage; 
    Image4: TImage; 
    btnAddSpeedDial: TButton; 
    btnEditSpeedDial: TButton; 
    cmboSpeedMem: TComboBox; 
    txtSpeedGroup: TEdit; 
    txtSpeedNumber: TEdit; 
    txtSpeedName: TEdit; 
    Label15: TLabel; 
    Label16: TLabel; 
    Label17: TLabel; 
    Label18: TLabel; 
    lblLocation: TLabel; 
    lvSpeedDial: TListView; 
    btnDeleteSMS: TButton; 
    Label25: TLabel; 
    smsMemory: TProgressBar; 
    lvSMS: TListView; 
    grpSMSMemoryType: TGroupBox; 
    cmboSMSMemType: TComboBox; 
    btnSMSSendSMS: TButton; 
    btnPlayTone: TButton; 
    rgrpPlayDevice: TRadioGroup; 
    btnSendVIASMS: TButton; 
    btnRingToneUpload: TButton; 
    btnRingToneWrite: TButton; 
    gtpringtoneLoc: TGroupBox; 
    DriveComboBox1: TDriveComboBox; 
    DirectoryListBox1: TDirectoryListBox; 
    FileListBox1: TFileListBox; 
    FilterComboBox1: TFilterComboBox; 
    grpDTMF: TGroupBox; 
    btnDTMF1: TButton; 
    btnDTMF2: TButton; 
    btnDTMF3: TButton; 
    btnDTMF4: TButton; 
    btnDTMF5: TButton; 
    btnDTMF6: TButton; 
    btnDTMF7: TButton; 
    btnDTMF8: TButton; 
    btnDTMF9: TButton; 
    btnDTMF0: TButton; 
    txtVoiceCall: TEdit; 
    btnCall: TButton; 
    btnHangup: TButton; 
    btnDTMFPlus: TButton; 
    btnDTMFhash: TButton; 
    rgrpDTMFType: TRadioGroup; 
    logoPanel: TPanel; 
    grpNetMonScreen: TGroupBox; 
    UpDown1: TUpDown; 
    Edit1: TEdit; 
    Button7: TButton; 
    Button8: TButton; 
    Button6: TButton; 
    moNetMonitor: TMemo; 
    btnClear: TButton; 
    btnDownload: TButton; 
    btnLoadfromfile: TButton; 
    btnSendToPhone: TButton; 
    Button1: TButton; 
    btnSaveLogo: TButton; 
    GroupBox1: TGroupBox; 
    cmboLogoType: TComboBox; 
    btnReset: TButton; 
    GroupBox4: TGroupBox; 
    txtLogo: TEdit; 
    Button17: TButton; 
    Button19: TButton; 
    GroupBox5: TGroupBox; 
    DisplayLogo: TImage; 
    dlgOpenImageFile: TFBUSOpenPictureDialog; 
    FontDialog1: TFontDialog; 
    View1: TMenuItem; 
    PhoneInfo1: TMenuItem; 
    N3: TMenuItem; 
    PhoneBook1: TMenuItem; 
    N4: TMenuItem; 
    SMS1: TMenuItem; 
    N5: TMenuItem; 
    SpeedDial1: TMenuItem; 
    N6: TMenuItem; 
    RingTone1: TMenuItem; 
    N7: TMenuItem; 
    Logo1: TMenuItem; 
    N8: TMenuItem; 
    DTMF1: TMenuItem; 
    N9: TMenuItem; 
    NetMonitor1: TMenuItem; 
    lblText: TLabel; 
    Label1: TLabel; 
    lblSpeedPosition: TLabel; 
    btnChangeProvider: TButton; 
    btnExport: TButton; 
    LogoEditor: TVSSLogoEditor; 
    procedure FormShow(Sender: TObject); 
    procedure tmpTimerTimer(Sender: TObject); 
    procedure FBUS1Connected(iResult: Integer; msg: String); 
    procedure Connect1Click(Sender: TObject); 
    procedure Disconnect1Click(Sender: TObject); 
    procedure ChangeComport1Click(Sender: TObject); 
    procedure SoftReset1Click(Sender: TObject); 
    procedure HardReset1Click(Sender: TObject); 
    procedure Button3Click(Sender: TObject); 
    procedure FormCreate(Sender: TObject); 
    procedure Outlook1ItemClick(Sender: TObject; Item: String); 
    procedure cmbpMemTypeClick(Sender: TObject); 
    procedure btnPBRefreshClick(Sender: TObject); 
    procedure btnPBAddnewClick(Sender: TObject); 
    procedure Exit1Click(Sender: TObject); 
    procedure btnPBDeleteClick(Sender: TObject); 
    procedure imgPhoneMouseUp(Sender: TObject; Button: TMouseButton; 
      Shift: TShiftState; X, Y: Integer); 
    procedure imgPhoneMouseMove(Sender: TObject; Shift: TShiftState; X, 
      Y: Integer); 
    procedure imgPhoneMouseDown(Sender: TObject; Button: TMouseButton; 
      Shift: TShiftState; X, Y: Integer); 
    procedure FindSpeedDialDetails(iValue:integer); 
    procedure btnAddSpeedDialClick(Sender: TObject); 
    procedure btnEditSpeedDialClick(Sender: TObject); 
    procedure cmboSMSMemTypeClick(Sender: TObject); 
    procedure FBUS1DelivaryCount(iSMSCount: Integer); 
    procedure FBUS1InboxCount(iSMSCount: Integer); 
    procedure FBUS1OutBoxCount(iSMSCount: Integer); 
    procedure lvSMSClick(Sender: TObject); 
    procedure btnSMSSendSMSClick(Sender: TObject); 
    procedure lvSMSDblClick(Sender: TObject); 
    function  FindSendersName(sNumber:string):string; 
    procedure FBUS1SMSSent; 
    procedure FBUS1SMSSendError; 
    procedure FBUS1NewSMSMessage; 
    procedure btnDeleteSMSClick(Sender: TObject); 
    procedure btnPBSendSMSClick(Sender: TObject); 
    procedure btnPlayToneClick(Sender: TObject); 
    procedure btnSendVIASMSClick(Sender: TObject); 
    procedure btnRingToneUploadClick(Sender: TObject); 
    procedure btnRingToneWriteClick(Sender: TObject); 
    procedure rgrpDTMFTypeClick(Sender: TObject); 
    procedure ProcessDTMF(sender : TObject); 
    procedure btnCallClick(Sender: TObject); 
    procedure btnHangupClick(Sender: TObject); 
    procedure UpDown1Click(Sender: TObject; Button: TUDBtnType); 
    procedure Button7Click(Sender: TObject); 
    procedure Button8Click(Sender: TObject); 
    procedure Button6Click(Sender: TObject); 
    procedure cmboLogoTypeClick(Sender: TObject); 
    procedure btnClearClick(Sender: TObject); 
    procedure btnLoadfromfileClick(Sender: TObject); 
    procedure btnDownloadClick(Sender: TObject); 
    procedure LogoEditorSentViaSMS(Sent: Boolean); 
    procedure LogoEditorGridPos(X, Y: Integer); 
    procedure Notebook1MouseMove(Sender: TObject; Shift: TShiftState; X, 
      Y: Integer); 
    procedure Button1Click(Sender: TObject); 
    procedure btnSaveLogoClick(Sender: TObject); 
    procedure btnSendToPhoneClick(Sender: TObject); 
    procedure Button17Click(Sender: TObject); 
    procedure Button19Click(Sender: TObject); 
    procedure btnResetClick(Sender: TObject); 
    procedure FBUS1RingToneSent(Sent: Boolean); 
    procedure FBUS1IncommingCall(Number: String); 
    procedure PhoneInfo1Click(Sender: TObject); 
    procedure PhoneBook1Click(Sender: TObject); 
    procedure SMS1Click(Sender: TObject); 
    procedure SpeedDial1Click(Sender: TObject); 
    procedure RingTone1Click(Sender: TObject); 
    procedure Logo1Click(Sender: TObject); 
    procedure DTMF1Click(Sender: TObject); 
    procedure NetMonitor1Click(Sender: TObject); 
    procedure btnChangeProviderClick(Sender: TObject); 
    procedure btnExportClick(Sender: TObject); 
  private 
    { Private declarations } 
    fWin95:Boolean; 
  public 
    { Public declarations } 
    sApplicationPath:string; 
  end; 
 
var 
  frmMain: TfrmMain; 
 
Const 
  fbOutgoingMessage = 11; 
  fbDeliveryReport  = 12; 
  fbIncommingMessage = 13; 
 
implementation 
 
uses ComSelect,Misc,newpbEntry, SendSMS, SMSReply,providers,ConnectionEst; 
 
{$R *.DFM} 
 
procedure TfrmMain.FormShow(Sender: TObject); 
begin 
  tmpTimer.Enabled:=true; 
end; 
 
procedure TfrmMain.tmpTimerTimer(Sender: TObject); 
begin 
  tmpTimer.enabled:=false; 
  show; 
  bFirstTime:=true; 
  //sApplicationPath:=ExtractFilePath(Paramstr(0)); 
  sApplicationPath:=GetCurrentDir+'\'; 
 
  FBUS1.Comport:=TCOMPORT(ComportToUse); //Set the comport to use 
  If Not FileExists(sApplicationPath+'PhoneBook.da0') then 
    begin 
      messagedlg('Since this is the first time you have run this application, we need to do a couple of things. Please press Ok and wait a few moments',mtInformation,[mbOk],0); 
      Connect1Click(self); 
      CompareAndUpdatePhoneBooks(fbSimMemory);  //demo only syncronizes the sim memory 
      messagedlg('thank you...all the information required has been gathered',mtInformation,[mbOk],0); 
    end 
  else 
    Connect1Click(self); 
end; 
 
procedure TfrmMain.FBUS1Connected(iResult: Integer; msg: String); 
begin 
 //0 = connected (or no error), 25 = Disconnected 
 
  case iResult of 
     0: begin 
          MFBUSStatusBar1.panels[0].text:='Connected to '+ FBUS1.PhoneInfo.Model; 
          Connect1.enabled:=false; 
          Disconnect1.enabled:=True; 
          if bFirstTime then 
            bFirstTime:=False 
          else 
            begin 
              try // we do a try and except here as this data might not be availible first time round 
                bFirstTime:=False; 
                if FormatDateTime('dd MMM YYYY',FBUS1.GetTime) <> '30 Dec 1899' then 
                  DateTimeLabel.caption:=DateTimetoStr(FBUS1.GetTime) 
                else 
                  DateTimeLabel.caption:=''; 
              except 
              end; 
            end 
        end; 
    25: begin 
          bFirstTime:=true; 
          MFBUSStatusBar1.panels[0].text:=msg; 
          Connect1.enabled:=True; 
          Disconnect1.enabled:=False; 
          MFBUSStatusBar1.Panels[0].text:='Disconnected'; 
          MFBUSStatusBar1.panels[1].text:=''; 
          exit; 
       end; 
    else 
      begin 
        MessageDlg(msg,mtWarning,[mbOk],0); 
        bContinueLoop:=false; 
        if frmConnEst.visible then 
          begin 
            frmConnEst.Label1.caption:='Error Connecting to Phone'; 
          end; 
      end; 
  end 
 
 
 
end; 
 
procedure TfrmMain.Connect1Click(Sender: TObject); 
var 
  ListViewItem : TListItem; 
begin 
 Application.createForm(TfrmConnEst,frmConnEst); 
 frmConnEst.show; 
 application.ProcessMessages; 
 sleep(500); 
 
 FBus1.Connect; 
 
 repeat 
   application.processmessages; 
 until (fBUS1.Connected) or (bContinueLoop=false); 
 
 if fBUS1.Connected then 
   begin 
      if frmConnEst.visible then frmConnEst.close; 
      sleep(500); 
      if FormatDateTime('dd MMM YYYY',FBUS1.GetTime) <> '30 Dec 1899' then 
        DateTimeLabel.caption:=DateTimetoStr(FBUS1.GetTime) 
      else 
        DateTimeLabel.caption:=''; 
 
      lvPhoneInfo.items.clear; 
 
      ListViewItem:=lvPhoneInfo.items.add; 
      ListViewItem.Caption:='IMEI'; 
      ListViewItem.Subitems.add(FBUS1.PhoneInfo.IMEI); 
 
      ListViewItem:=lvPhoneInfo.items.add; 
      ListViewItem.Caption:='SW Version'; 
      ListViewItem.Subitems.add(FBUS1.PhoneInfo.SWVersion); 
 
      ListViewItem:=lvPhoneInfo.items.add; 
      ListViewItem.Caption:='HW Version'; 
      ListViewItem.Subitems.add(FBUS1.PhoneInfo.HWVersion); 
 
      ListViewItem:=lvPhoneInfo.items.add; 
      ListViewItem.Caption:='Model'; 
      ListViewItem.Subitems.add(FBUS1.PhoneInfo.Model); 
 
      ListViewItem:=lvPhoneInfo.items.add; 
      ListViewItem.Caption:='Sw Date'; 
      ListViewItem.Subitems.add(FBUS1.PhoneInfo.SWDate); 
 
      lvNetworkInfo.items.Clear; 
      ListViewItem:=lvNetworkInfo.items.add; 
      ListViewItem.Caption:='Provider Name'; 
      ListViewItem.Subitems.add(FBUS1.NetworkInfo.NetworkCode); 
 
      ListViewItem:=lvNetworkInfo.items.add; 
      ListViewItem.Caption:='Country'; 
      ListViewItem.Subitems.add(FBUS1.NetworkInfo.Country); 
 
      ListViewItem:=lvNetworkInfo.items.add; 
      ListViewItem.Caption:='SMS Center'; 
      ListViewItem.Subitems.add(FBUS1.NetworkInfo.SMSCenter); 
 
      ListViewItem:=lvNetworkInfo.items.add; 
      ListViewItem.Caption:='Cell ID'; 
      ListViewItem.Subitems.add(FBUS1.NetworkInfo.CellID); 
 
      ListViewItem:=lvNetworkInfo.items.add; 
      ListViewItem.Caption:='LAC'; 
      ListViewItem.Subitems.add(FBUS1.NetworkInfo.LAC); 
   end; 
end; 
 
procedure TfrmMain.Disconnect1Click(Sender: TObject); 
begin 
  FBus1.PhoneBeep; 
  FBus1.Disconnect; 
  MFBUSStatusBar1.Panels[0].text:='Disconnected'; 
  MFBUSStatusBar1.panels[1].text:=''; 
end; 
 
procedure TfrmMain.ChangeComport1Click(Sender: TObject); 
begin 
  ChangeComport; 
//  FBUS1.Comport:=TCOMPORT(ComportToUse); 
end; 
 
procedure TfrmMain.SoftReset1Click(Sender: TObject); 
begin 
  fBus1.ResetPhone(rsSoft); 
end; 
 
procedure TfrmMain.HardReset1Click(Sender: TObject); 
begin 
  fBus1.ResetPhone(rsHard); 
end; 
 
procedure TfrmMain.Button3Click(Sender: TObject); 
begin 
  FBUS1.SetAlarmTime(StrToTime(txtTime.text)); 
end; 
 
procedure TfrmMain.FormCreate(Sender: TObject); 
begin 
  bFirstTime:=true; 
  //sApplicationPath:=ExtractFilePath(Paramstr(0)); 
  sApplicationPath:=GetCurrentDir+'\'; 
  bContinueLoop:=true; 
   
  Outlook1.ActiveTab:=1; 
  Notebook1.PageIndex:=0; 
  cmbpMemType.itemindex:=1; 
  rgrpDTMFType.itemindex:=0; 
  cmboLogoType.itemindex:=2; 
 
  fWin95:= (GetVersion() and $80000000)<>0; 
 
 
  if Not fWin95 then 
    begin 
      rgrpPlayDevice.Items.add('PC Speaker'); 
      rgrpPlayDevice.Items.add('MIDI Device'); 
      rgrpPlayDevice.Items.add('Phone'); 
      rgrpPlayDevice.itemindex:=1; 
    end 
  else 
    begin 
      rgrpPlayDevice.Items.add('MIDI Device'); 
      rgrpPlayDevice.Items.add('Phone'); 
      rgrpPlayDevice.itemindex:=0; 
    end 
 
 
end; 
 
procedure TfrmMain.Outlook1ItemClick(Sender: TObject; Item: String); 
begin 
 
  if item='Phone Book' then 
   begin 
    lblText.caption:='Phone Book'; 
    if fBus1.Connected then 
      begin 
        application.processmessages; 
        //LoadPhoneBook; 
        PhoneBookGet(TMemType(cmbpMemType.itemindex)); 
      end 
    else 
      Notebook1.PageIndex:=1; 
    end; 
  if item='SMS' then 
    begin 
      Notebook1.PageIndex:=2; 
      lblText.caption:='SMS Messages'; 
      application.processmessages; 
      cmboSMSMemType.itemindex:=2; 
      LoadSMSMessages(cmboSMSMemType.itemindex+11); 
    end; 
  if item='Ring Tone' then 
    begin NoteBook1.pageindex:=4; lblText.caption:='Ringtone'; end; 
  if item='Information' then 
    begin NoteBook1.pageindex:=0; lblText.caption:='Phone Information'; end; 
  if Item='Speed Dial' then 
    begin NoteBook1.pageindex:=3; lblText.caption:='Speed Dial'; end; 
  if Item='DTMF' then 
    begin NoteBook1.pageindex:=5; lblText.caption:='DTMF'; end; 
  if Item='Logo' then 
    begin NoteBook1.pageindex:=6; lblText.caption:='Logo'; end; 
  if Item='Net Monitor' then 
    begin NoteBook1.pageindex:=7; lblText.caption:='Net Monitor'; end; 
 
end; 
 
procedure TfrmMain.cmbpMemTypeClick(Sender: TObject); 
begin 
  if fBus1.Connected then 
    LoadPhoneBook 
  else 
    Notebook1.PageIndex:=1; 
end; 
 
procedure TfrmMain.btnPBRefreshClick(Sender: TObject); 
begin 
  if messageDlg('This will check the Phone book entries on the Phone with the local database. This may take a few minutes. Continue?',mtConfirmation,[mbYes,mbNo],0)=mrYes then 
   begin 
    if fBus1.Connected then 
      //LoadPhoneBook 
      CompareAndUpdatePhoneBooks(TMemType(cmbpMemType.itemindex)) 
    else 
     begin 
      Notebook1.PageIndex:=1; 
      messagedlg('The phone is not connected. Plece connect phone and try again',mtinformation,[mbOk],0); 
     end; 
   end; 
 
end; 
 
procedure TfrmMain.btnPBAddnewClick(Sender: TObject); 
begin 
   application.Createform(TfrmAddNewPBEntry,frmAddNewPBEntry); 
   frmAddNewPBEntry.execute; 
   //if frmAddNewPBEntry.execute then 
   //  btnPBRefreshClick(self); 
end; 
 
procedure TfrmMain.Exit1Click(Sender: TObject); 
begin 
  if fBus1.Connected then Disconnect1Click(Self); 
  application.terminate; 
end; 
 
procedure TfrmMain.btnPBDeleteClick(Sender: TObject); 
begin 
  if messagedlg('Are you sure you want to delete this entry?',mtConfirmation,[mbYes,mbNo],0) = mrYes then 
    begin 
      //FBUS1.PhoneBook.DeleteEntry(TMemType(cmbpMemType.itemindex),lvPhoneBook.Selected.Caption,lvPhoneBook.items[lvPhoneBook.Selected.Index].SubItems[1]); 
      //lvPhoneBook.Items.Delete(lvPhoneBook.Selected.Index); 
      PhoneBookDelete(lvPhoneBook.Selected.Caption,lvPhoneBook.items[lvPhoneBook.Selected.Index].SubItems[0],TMemType(cmbpMemType.itemindex)); 
    end; 
 
end; 
 
procedure TfrmMain.imgPhoneMouseUp(Sender: TObject; Button: TMouseButton; 
  Shift: TShiftState; X, Y: Integer); 
begin 
 image4.visible:=false; 
end; 
 
procedure TfrmMain.imgPhoneMouseMove(Sender: TObject; Shift: TShiftState; 
  X, Y: Integer); 
var 
  bNormalCursor:boolean; 
begin 
 
  bNormalCursor:=true; 
   if ((y>207) and (y<220)) then 
     begin 
        bNormalCursor:=false; 
        if((x>11) and (x<31)) or((x>39) and (x<59)) or ((x>65) and (x<85)) then 
          screen.Cursor:=crHandPoint 
        else 
          screen.Cursor:=crDefault; 
     end; 
 
    if ((y>225) and (y<236)) then 
      begin 
        bNormalCursor:=false; 
        if((x>11) and (x<31)) or((x>39) and (x<59)) or ((x>65) and (x<85)) then 
          screen.Cursor:=crHandPoint 
        else 
          screen.Cursor:=crDefault; 
      end; 
 
    if ((y>243) and (y<256)) then 
      begin 
        bNormalCursor:=false; 
        if((x>11) and (x<31)) or((x>39) and (x<59)) or ((x>65) and (x<85)) then 
          screen.Cursor:=crHandPoint 
        else 
          screen.Cursor:=crDefault; 
      end; 
 
 if bNormalCursor then 
  screen.Cursor:=crDefault; 
end; 
 
procedure TfrmMain.imgPhoneMouseDown(Sender: TObject; Button: TMouseButton; 
  Shift: TShiftState; X, Y: Integer); 
begin 
   if ((y>207) and (y<220)) then  //first row of keyboad 
     begin 
        if ((x>11) and (x<31)) then 
          FindSpeedDialDetails(1);  // - Only keys 2 - 9 are uesed for speed dials 
        if ((x>39) and (x<59)) then 
          FindSpeedDialDetails(2); 
        if ((x>65) and (x<85)) then 
          FindSpeedDialDetails(3); 
     end; 
 
   if ((y>225) and (y<236)) then  //Second row of keyboad 
     begin 
        if ((x>11) and (x<31)) then 
          FindSpeedDialDetails(4); 
        if ((x>39) and (x<59)) then 
          FindSpeedDialDetails(5); 
        if ((x>65) and (x<85)) then 
          FindSpeedDialDetails(6); 
     end; 
 
   if ((y>243) and (y<256)) then  //Third row of keyboad 
     begin 
        if ((x>11) and (x<31)) then 
          FindSpeedDialDetails(7); 
        if ((x>39) and (x<59)) then 
          FindSpeedDialDetails(8); 
        if ((x>65) and (x<85)) then 
          FindSpeedDialDetails(9); 
     end; 
 
end; 
 
procedure TfrmMain.FindSpeedDialDetails(iValue:integer); 
var 
 PhoneBookEntry : TPhoneBookEntry; 
begin 
  PhoneBookEntry:=FBUS1.PhoneBook.FindSpeedDial(iValue); 
 
  lblLocation.caption:=IntToStr(PhoneBookEntry.location); 
  lblSpeedPosition.caption:=IntToStr(PhoneBookEntry.location); 
 
  txtSpeedName.text:=''; 
  txtSpeedNumber.text:=''; 
  txtSpeedGroup.text:=''; 
 
  txtSpeedName.text:=PhoneBookEntry.name; 
  txtSpeedNumber.text:=PhoneBookEntry.number; 
  txtSpeedGroup.text:=IntToStr(PhoneBookEntry.Group); 
 
  cmboSpeedMem.itemindex:=Ord(PhoneBookEntry.memType); 
  btnAddSpeedDial.visible:=false; 
  lvSpeedDial.visible:=false; 
  if (PhoneBookEntry.name='') and (PhoneBookEntry.number='') then 
    begin 
     txtSpeedName.enabled:=True; 
     txtSpeedNumber.enabled:=True; 
     txtSpeedGroup.enabled:=True; 
     btnAddSpeedDial.visible:=True; 
     lvSpeedDial.items.clear; 
     lvSpeedDial.items:=lvPhoneBook.items; 
     lvSpeedDial.visible:=True; 
    end; 
end; 
procedure TfrmMain.btnAddSpeedDialClick(Sender: TObject); 
begin 
//.$IFDEF REGISTRED} 
  if lvSpeedDial.selcount =0 then 
     messagedlg('Select the name and number from the list of PhoneBook entries.',mtInformation,[mbOk],0) 
  else 
    begin 
      //FBUS1.PhoneBook.AddSpeedDial(StrToInt(lblLocation.caption),lvSpeedDial.Selected.Caption,TmemType(cmboSpeedMem.itemindex)); 
      FBUS1.PhoneBook.AddSpeedDial(StrToInt(lblLocation.caption),lvSpeedDial.Selected.Caption,TmemType(cmboSpeedMem.itemindex),(lvSpeedDial.Selected.index+1)); 
      lvSpeedDial.visible:=false; 
      FindSpeedDialDetails(StrToInt(lblLocation.caption)); //refresh the screen with the new entry 
    end; 
 //.$ELSE} 
  //  messagedlg('This Feature is not availble in the Demo version',mtInformation,[mbOk],0); 
 //.$ENDIF} 
end; 
 
procedure TfrmMain.btnEditSpeedDialClick(Sender: TObject); 
begin 
//.$IFDEF REGISTRED} 
  if lvSpeedDial.visible=True then 
    begin 
      FBUS1.PhoneBook.EditSpeedDial(StrToInt(lblLocation.caption),txtSpeedName.text,TmemType(cmboSpeedMem.itemindex),(lvSpeedDial.Selected.index+1)); 
      lvSpeedDial.visible:=false; 
      FindSpeedDialDetails(StrToInt(lblLocation.caption)); //refresh the screen with the new entry 
    end 
  else 
    begin 
      lvSpeedDial.items.clear; 
      lvSpeedDial.items:=lvPhoneBook.items; 
      lvSpeedDial.visible:=True; 
    end; 
 
 
 //.$ELSE} 
//    messagedlg('This Feature is not availble in the Demo version',mtInformation,[mbOk],0); 
 //.$ENDIF} 
end; 
 
procedure TfrmMain.cmboSMSMemTypeClick(Sender: TObject); 
begin 
  LoadSMSMessages(cmboSMSMemType.itemindex+11); 
end; 
 
procedure TfrmMain.FBUS1DelivaryCount(iSMSCount: Integer); 
begin 
  if cmboSMSMemType.itemindex = 0 then smsMemory.position:=iSMSCount; 
end; 
 
procedure TfrmMain.FBUS1InboxCount(iSMSCount: Integer); 
begin 
  if cmboSMSMemType.itemindex = 2 then smsMemory.position:=iSMSCount; 
end; 
 
procedure TfrmMain.FBUS1OutBoxCount(iSMSCount: Integer); 
begin 
  if cmboSMSMemType.itemindex = 1 then smsMemory.position:=iSMSCount; 
end; 
 
procedure TfrmMain.lvSMSClick(Sender: TObject); 
begin 
  if lvSMS.SelCount >0 then 
     btnDeleteSMS.Visible:=true 
  else 
     btnDeleteSMS.Visible:=false; 
end; 
 
procedure TfrmMain.btnSMSSendSMSClick(Sender: TObject); 
begin 
    application.CreateForm(TfrmSendSMS,frmSendSMS); 
    frmSendSMS.showmodal; 
end; 
 
procedure TfrmMain.lvSMSDblClick(Sender: TObject); 
var 
 sSender:string; 
begin 
    if lvSMS.SelCount >0 then 
      begin 
        Application.createForm(TfrmSMSView,frmSMSView); 
        frmSMSView.lblSMSDate.caption:=lvSMS.Selected.Caption; 
        sSender:=FindSendersName(lvSMS.items[lvSMS.Selected.Index].SubItems[0]); 
        if sSender ='' then 
          frmSMSView.lblSMSFrom.caption:=lvSMS.items[lvSMS.Selected.Index].SubItems[0] 
        else 
          frmSMSView.lblSMSFrom.caption:=lvSMS.items[lvSMS.Selected.Index].SubItems[0]+', '+sSender; 
        frmSMSView.moMessage.text:=lvSMS.items[lvSMS.Selected.Index].SubItems[2]; 
        frmSMSView.showmodal; 
      end; 
end; 
 
function TfrmMain.FindSendersName(sNumber:string):string; 
var 
 iPos:integer; 
 res:string; 
begin 
  res:=''; 
   
  for iPos:=0 to lvPhoneBook.items.count-1 do 
    if  Pos(Copy(sNumber,4,length(sNumber)),lvPhoneBook.items[iPos].subitems[0]) >0 then 
      begin 
        res:= lvPhoneBook.items[ipos].caption; 
        break; 
      end; 
 
  Result:=res; 
end; 
procedure TfrmMain.FBUS1SMSSent; 
begin 
   frmSendSMS.close; 
   MessageDlg('SMS Delivered',mtInformation,[mbok],0); 
end; 
 
procedure TfrmMain.FBUS1SMSSendError; 
begin 
  MessageDlg('There was an erro Delivering the SMS Message.',mtInformation,[mbok],0); 
end; 
 
procedure TfrmMain.FBUS1NewSMSMessage; 
begin 
  messagedlg('You have received a new SMS Message.',mtInformation,[mbOk],0); 
  LoadSMSMessages(fbIncommingMessage); 
 
end; 
 
procedure TfrmMain.btnDeleteSMSClick(Sender: TObject); 
begin 
    if lvSMS.SelCount >0 then 
      begin 
        fBus1.SMS.DeleteSMSMessage(cmboSMSMemType.ItemIndex,Trim(Filtercr(lvSMS.items[lvSMS.Selected.Index].SubItems[2]))); 
        LoadSMSMessages(cmboSMSMemType.ItemIndex); 
        btnDeleteSMS.visible:=false; 
      end; 
end; 
 
procedure TfrmMain.btnPBSendSMSClick(Sender: TObject); 
begin 
  if lvPhoneBook.selcount >0 then 
    begin 
      application.CreateForm(TfrmSendSMS,frmSendSMS); 
      frmSendSMS.txtDestination.text:=lvPhoneBook.items[lvPhoneBook.Selected.Index].SubItems[0]; 
      frmSendSMS.showmodal; 
    end; 
end; 
 
procedure TfrmMain.btnPlayToneClick(Sender: TObject); 
begin 
  if (FileListBox1.FileName <> '') and  (rgrpPlayDevice.itemindex<>-1) and (IsRingTone(FileListBox1.Filename)) then 
    begin 
      FBUS1.RingTone.ReadFile(FileListBox1.Filename); 
      if Not fWin95 then 
        FBUS1.RingTone.Play(rgrpPlayDevice.itemindex) 
      else 
        FBUS1.RingTone.Play(rgrpPlayDevice.itemindex+1); 
    end; 
end; 
 
procedure TfrmMain.btnSendVIASMSClick(Sender: TObject); 
var 
  sInput:string; 
begin 
 if (FileListBox1.FileName <> '') and (IsRingTone(FileListBox1.Filename))  then 
  begin 
   sInput:=InputBox('Destination', 'Please enter the destination phone number',''); 
     if Trim(sInput) <>'' then 
       begin 
         FBUS1.RingTone.ReadFile(FileListBox1.Filename); 
         FBUS1.RingTone.SendAsSMS(sInput); 
       end; 
    end; 
end; 
 
procedure TfrmMain.btnRingToneUploadClick(Sender: TObject); 
begin 
   if (FileListBox1.FileName <> '') and (IsRingTone(FileListBox1.Filename)) then 
    begin 
      FBUS1.RingTone.Upload; 
    end; 
end; 
 
procedure TfrmMain.btnRingToneWriteClick(Sender: TObject); 
begin 
 if (FileListBox1.FileName <> '') and (IsRingTone(FileListBox1.Filename)) then 
   FBUS1.RingTone.WriteFile(FileListBox1.FileName); 
end; 
 
procedure TfrmMain.rgrpDTMFTypeClick(Sender: TObject); 
begin 
  if rgrpDTMFType.itemindex=1 then 
    begin 
      btnCall.enabled:=true; 
      btnhangup.enabled:=true; 
      txtVoiceCall.Visible:=true; 
    end 
  else 
    begin 
      btnCall.enabled:=False; 
      btnhangup.enabled:=False; 
      txtVoiceCall.Visible:=False; 
    end; 
 
end; 
 
procedure TfrmMain.ProcessDTMF(sender : TObject); 
var 
  sTagIndex:string; 
begin 
 if FBus1.Connected then 
 With Sender as TButton do 
   begin 
     sTagIndex:=IntToStr(TButton(Sender).tag); 
     if sTagIndex = '99' then sTagIndex:='+'; 
     if sTagIndex = '88' then sTagIndex:='#'; 
 
     if txtVoiceCall.Visible then 
       txtVoiceCall.text:=txtVoiceCall.text+sTagIndex 
     else 
       FBUS1.SendDTMF(sTagIndex); 
   end; 
end; 
procedure TfrmMain.btnCallClick(Sender: TObject); 
begin 
  if FBus1.Connected then FBUS1.MakeVoiceCall(txtVoiceCall.text); 
end; 
 
 
 
procedure TfrmMain.btnHangupClick(Sender: TObject); 
begin 
  if FBus1.Connected then FBUS1.HangupPhone; 
end; 
 
procedure TfrmMain.UpDown1Click(Sender: TObject; Button: TUDBtnType); 
  function FilterHash10(sData:string):string; 
  var 
    iPos:integer; 
    sNewString:String; 
  begin 
    sNewString:=''; 
 
    for ipos:=0 to length(sData)-1 do 
      if sData[ipos+1] = #10 then 
        sNewString:=sNewString+#13#10 
      else 
        sNewString:=sNewString+sData[ipos+1]; 
 
     result:=sNewString; 
  end; 
begin 
   moNetMonitor.lines.clear; 
   moNetMonitor.lines.add(FilterHash10(FBus1.NetMon(edit1.text))); 
end; 
 
procedure TfrmMain.Button7Click(Sender: TObject); 
begin 
  edit1.text:='0'; 
  moNetMonitor.lines.clear; 
  FBus1.NetMon('devel'); 
end; 
 
procedure TfrmMain.Button8Click(Sender: TObject); 
begin 
  edit1.text:='0'; 
  moNetMonitor.lines.clear; 
  FBus1.NetMon('field'); 
end; 
 
procedure TfrmMain.Button6Click(Sender: TObject); 
begin 
  edit1.text:='0'; 
  moNetMonitor.lines.clear; 
  FBus1.NetMon('off') 
end; 
 
procedure TfrmMain.cmboLogoTypeClick(Sender: TObject); 
begin 
 case cmboLogoType.itemindex of 
   0: LogoEditor.LogoType:=fbNoLogo; 
   1: LogoEditor.LogoType:=fbStartupLogo; 
   2: LogoEditor.LogoType:=fbOperatorLogo; 
   3: LogoEditor.LogoType:=fbCallerLogo; 
 end; 
 
end; 
 
procedure TfrmMain.btnClearClick(Sender: TObject); 
begin 
  LogoEditor.ClearLogo; 
end; 
 
procedure TfrmMain.btnLoadfromfileClick(Sender: TObject); 
begin 
  if dlgOpenImageFile.execute then 
    begin 
      LogoEditor.ClearLogo; 
      cmboLogoTypeclick(self); 
      screen.cursor:=crHourglass; 
      application.processmessages; 
      dlgOpenImageFile.InitialDir:=sApplicationPath; 
      if (extractfileext(dlgOpenImageFile.Filename) = '.bmp') or (extractfileext(dlgOpenImageFile.Filename) = '.jpg') or (extractfileext(dlgOpenImageFile.Filename) = '.gif') then 
         LogoEditor.LoadBitmapForLogo(dlgOpenImageFile.Filename); 
 
      if (extractfileext(dlgOpenImageFile.Filename) = '.nol') or (extractfileext(dlgOpenImageFile.Filename) = '.ngg') or (extractfileext(dlgOpenImageFile.Filename) = '.nlm') then 
        begin 
          LogoEditor.LoadLogoFromFile(dlgOpenImageFile.Filename); 
        end; 
      end; 
   screen.cursor:=crDefault; 
end; 
 
procedure TfrmMain.btnDownloadClick(Sender: TObject); 
begin 
 
  screen.cursor:=crHourGlass; 
  LogoEditor.Download(cmboLogoType.itemIndex); 
  screen.cursor:=crdefault; 
 
end; 
 
procedure TfrmMain.LogoEditorSentViaSMS(Sent: Boolean); 
begin 
 if Sent then 
    messageDlg('The logo has successfully been sent',mtInformation,[mbOk],0) 
  else 
    messageDlg('The logo was not sent due to an error',mtInformation,[mbOk],0); 
 
end; 
 
procedure TfrmMain.LogoEditorGridPos(X, Y: Integer); 
begin 
  MFBUSStatusBar1.Panels[1].text:='Mouse Pos: '+Inttostr(Trunc(x / 6)+1)+'/'+inttostr(Trunc(y / 6)+1); 
end; 
 
procedure TfrmMain.Notebook1MouseMove(Sender: TObject; Shift: TShiftState; 
  X, Y: Integer); 
begin 
  MFBUSStatusBar1.Panels[1].text:=''; 
end; 
 
procedure TfrmMain.Button1Click(Sender: TObject); 
var 
  sDestination:String; 
begin 
 
  if (cmboLogoType.itemindex = 1) and ( FBUS1.PhoneInfo.Model <> 'Nokia 3310') and ( FBUS1.PhoneInfo.Model <> 'Nokia 3210') and ( FBUS1.PhoneInfo.Model <> 'Nokia 6110') then 
    messageDlg('Sorry. Your phone cannot send a "Startup Logo" as this logo type is not supportd by your phone',mtInformation,[mbOk],0) 
  else 
    begin 
      sDestination:=Inputbox('destination number','Please Enter the destination number',''); 
      if length(sDestination) >0 then 
        begin 
          screen.cursor:=crHourGlass; 
          LogoEditor.SendLogoViaSMS(sDestination); 
          screen.cursor:=crDefault; 
        end; 
    end; 
end; 
 
procedure TfrmMain.btnSaveLogoClick(Sender: TObject); 
begin 
  LogoEditor.SaveLogoToFile('c:\test.nol'); 
  messagedlg('The logo has been saved to "c:\test.nol" by default',mtInformation,[mbOk],0); 
end; 
 
procedure TfrmMain.btnSendToPhoneClick(Sender: TObject); 
begin 
  screen.cursor:=crHourglass; 
  LogoEditor.SendLogoToPhone; 
  screen.cursor:=crDefault; 
end; 
 
procedure TfrmMain.Button17Click(Sender: TObject); 
var 
 iLeft,iTop:integer; 
begin 
  if fFont=nil then 
    begin 
     fFont:=TFont.Create; 
     fFont.Size:=6; 
     fFont.Name:='Arial'; 
     fFont.Style:=[]; 
   end; 
  DisplayLogo.canvas.font.size:=fFont.Size; 
  DisplayLogo.canvas.font.name:=fFont.Name; 
  DisplayLogo.canvas.font.style:=fFont.Style; 
 
  iLeft:=((DisplayLogo.width div 2) - (DisplayLogo.canvas.textwidth(txtLogo.text) div 2))+1; 
  iTop:=((DisplayLogo.height div 2) - (DisplayLogo.canvas.textHeight(txtLogo.text) div 2))+1; 
  DisplayLogo.canvas.brush.style:=bsClear; 
  DisplayLogo.canvas.TextOut(iLeft,iTop,txtLogo.text); 
  DisplayLogo.update; 
  LogoEditor.TextToLogo(DisplayLogo); 
end; 
 
procedure TfrmMain.Button19Click(Sender: TObject); 
begin 
 if FontDialog1.execute then 
   fFont:=FontDialog1.Font; 
 
end; 
 
procedure TfrmMain.btnResetClick(Sender: TObject); 
begin 
 if LogoEditor.ResetLogo(cmboLogoType.itemindex) then 
   begin 
    if MessageDlg('Logo Reset. Clear Logo editor?',mtinformation,[mbYes,mbNo],0) = mryes then 
       btnClearClick(Self); 
   end 
 else 
   messageDlg('Error: Logo Not Reset',mtinformation,[mbOk],0); 
end; 
 
procedure TfrmMain.FBUS1RingToneSent(Sent: Boolean); 
begin 
 if Sent then 
    messageDlg('The Ringtone has successfully been sent',mtInformation,[mbOk],0) 
  else 
    messageDlg('The Ringtone was not sent due to an error',mtInformation,[mbOk],0); 
end; 
 
procedure TfrmMain.FBUS1IncommingCall(Number: String); 
begin 
   showmessage(FindNumber(number)); 
end; 
 
procedure TfrmMain.PhoneInfo1Click(Sender: TObject); 
begin 
  Outlook1.activeTab:=1; 
  NoteBook1.pageindex:=0; 
  lblText.caption:='Phone Information'; 
end; 
 
procedure TfrmMain.PhoneBook1Click(Sender: TObject); 
begin 
    Outlook1.activeTab:=2; 
    PhoneBookGet(TMemType(cmbpMemType.itemindex)); 
    if fBus1.Connected then 
      begin 
        lblText.caption:='Phone Book'; 
        application.processmessages; 
      end 
    else 
      Notebook1.PageIndex:=1; 
end; 
 
procedure TfrmMain.SMS1Click(Sender: TObject); 
begin 
  lblText.caption:='SMS Messages'; 
  Outlook1.activeTab:=2; 
  Notebook1.PageIndex:=2; 
  application.processmessages; 
  cmboSMSMemType.itemindex:=2; 
  LoadSMSMessages(cmboSMSMemType.itemindex+11); 
end; 
 
procedure TfrmMain.SpeedDial1Click(Sender: TObject); 
begin 
  lblText.caption:='Speed Dial'; 
  Outlook1.activeTab:=2; 
  NoteBook1.pageindex:=3; 
end; 
 
procedure TfrmMain.RingTone1Click(Sender: TObject); 
begin 
  lblText.caption:='Ringtone'; 
  Outlook1.activeTab:=2; 
  NoteBook1.pageindex:=4; 
end; 
 
procedure TfrmMain.Logo1Click(Sender: TObject); 
begin 
  lblText.caption:='Logo'; 
  Outlook1.activeTab:=2; 
  NoteBook1.pageindex:=6; 
end; 
 
procedure TfrmMain.DTMF1Click(Sender: TObject); 
begin 
  lblText.caption:='DTMF'; 
  Outlook1.activeTab:=2; 
  NoteBook1.pageindex:=5; 
end; 
 
procedure TfrmMain.NetMonitor1Click(Sender: TObject); 
begin 
  lblText.caption:='Net Monitor'; 
  Outlook1.activeTab:=2; 
  NoteBook1.pageindex:=7; 
end; 
 
procedure TfrmMain.btnChangeProviderClick(Sender: TObject); 
begin 
 application.createform(TfrmProviders,frmProviders); 
 frmProviders.ShowProviders(FBUS1.NetworkInfo.NetworkCode,FBUS1.NetworkInfo.Country); 
 
end; 
 
procedure TfrmMain.btnExportClick(Sender: TObject); 
begin 
   LogoEditor.ExportLogoToFile('C:\ExportedLogo.bmp','BMP'); 
   LogoEditor.ExportLogoToFile('C:\ExportedLogo.gif','GIF'); 
   LogoEditor.ExportLogoToFile('C:\ExportedLogo.jpg','JPG'); 
   messagedlg('3 logos saved to file. 1 BMP, 1 GIF and 1 JPG. Saved to C:\ExportedLogo.xxx',mtinformation,[mbOk],0); 
end; 
 
end.