_uf_settings.pas

unit _uf_settings;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, ComCtrls,FileCtrl,ShellApi;

type
  T_FXOC_SETTINGS = class(TForm)
    AA_0534_SaveBtn: TButton;
    Bevel1: TBevel;
    AA_0549_Label1: TLabel;
    AA_0512_LvSET: TListView;
    Shape2: TShape;
    Panel1: TPanel;
    _pp5: TPanel;
    _pp3: TPanel;
    _pp2: TPanel;
    _pp1: TPanel;
    _pp0: TPanel;
    AA_0551_ccRouter: TCheckBox;
    AA_0552_ccKikLANs: TCheckBox;
    AA_0553_ccExpander: TCheckBox;
    Bevel3: TBevel;
    AA_0554_doso: TLabel;
    eLocalDLfolder: TEdit;
    dwder: TButton;
    PnLogos: TPanel;
    Shape3: TShape;
    LboxFonts: TListBox;
    Button1: TButton;
    eeNikName: TEdit;
    Bevel5: TBevel;
    AA_0535_Label455: TLabel;
    eePersMsg: TEdit;
    Bevel4: TBevel;
    AA_0536_Label7: TLabel;
    eeAwayMsg: TEdit;
    mx1: TLabel;
    AA_0539_e1: TLabel;
    AA_0541_Label2: TLabel;
    maxup: TTrackBar;
    AA_0537_remPub: TButton;
    AA_0538_addPub: TButton;
    _ePubFolders: TListBox;
    Image1: TImage;
    AA_0542_Label3: TLabel;
    AA_0543_add_privLabel4: TLabel;
    AA_0537__rem_priv: TButton;
    AA_0538_add_priv: TButton;
    _ePrivFolders: TListBox;
    AA_0550_ccWebXocLinks: TCheckBox;
    eLogoChar: TLabel;
    Image5: TImage;
    Bevel2: TBevel;
    Image2: TImage;
    Image3: TImage;
    Image6: TImage;
    AA_0540_Label6: TLabel;
    Bevel6: TBevel;
    Image7: TImage;
    Bevel7: TBevel;
    eeSeTiT: TLabel;
    _pp4: TPanel;
    Image4: TImage;
    Bevel8: TBevel;
    AA_0544_Label8: TLabel;
    AA_0513_LvFavs: TListView;
    eeFavNAM: TLabel;
    AA_0548_eeLbb: TLabel;
    AA_0545_evv1: TCheckBox;
    AA_0546_evv2: TCheckBox;
    Image8: TImage;
    AA_0547_evv3: TCheckBox;
    eeXbtn: TButton;
    eedxFolder: TEdit;
    AA_0532_Label2: TLabel;
    AA_0611_Label1: TLabel;
    Image9: TImage;
    AA_0612_Label2: TLabel;
    AA_0613_Label3: TLabel;
    AA_0614_Label4: TLabel;
    AA_0529_OtoAddComs: TCheckBox;
    AA_0507_OtoNotifVersion: TCheckBox;
    procedure AA_0534_SaveBtnClick(Sender: TObject);
    procedure AA_0551_ccRouterClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure maxupChange(Sender: TObject);
    procedure AA_0537__rem_privClick(Sender: TObject);
    procedure AA_0538_add_privClick(Sender: TObject);
    procedure _ePubFoldersClick(Sender: TObject);
    procedure _ePrivFoldersClick(Sender: TObject);
    procedure AA_0537_remPubClick(Sender: TObject);
    procedure AA_0538_addPubClick(Sender: TObject);
    procedure dwderClick(Sender: TObject);
    procedure _ePrivFoldersDrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    procedure eLogoCharClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure LboxFontsClick(Sender: TObject);
    procedure AA_0512_LvSETChange(Sender: TObject; Item: TListItem; Change: TItemChange);
    procedure FormShow(Sender: TObject);
    procedure AA_0513_LvFavsChange(Sender: TObject; Item: TListItem; Change: TItemChange);
    procedure AA_0545_evv1Click(Sender: TObject);
    procedure eeXtraFolderClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormActivate(Sender: TObject);
    procedure AA_0614_Label4Click(Sender: TObject);
    procedure eedxFolderDblClick(Sender: TObject);
  private
    _skipBOXES :Boolean;
    _skipFavsTRIGG :Boolean;
  public
    { Déclarations publiques }
  end;

var
  _FXOC_SETTINGS: T_FXOC_SETTINGS;

implementation

uses _uc_refs_vars, _uc_funcs, _uc_refs_consts, _uc_reg_settings, Unit1,
  _uc_GuiLanG;

{$R *.DFM}


//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.AA_0551_ccRouterClick(Sender: TObject);
begin
_VV_LOCAL_CONFIG_ROUTER_IS_ON:=AA_0551_ccRouter.Checked;
end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.AA_0534_SaveBtnClick(Sender: TObject);
var
z:string;
begin


z:=UpperCase(eePersMsg.Text+eeNikName.Text); // nik + message

if (z<>'') then begin
                if (pos('EXOSEE',z)>0)
                or (pos('EXO-SEE',z)>0)
                or (pos('EXO.SEE',z)>0)
                or (pos('E.X.O.SEE',z)>0)
                or (pos('E.X.O.S.E.E',z)>0)
                or (pos('E X O S E E',z)>0)
                or (pos('EXOSE',z)>0)
                or (pos('XOSEE',z)>0)
                or (pos('XO-SEE',z)>0)
                or (pos('EXO-C',z)>0)
                or (pos('EXO.C',z)>0)
                or (pos('XO-C',z)>0)
                or (pos('XO.C',z)>0)
                or (pos('TO XOC',z)>0)
                or (pos('2XOC',z)>0)
                then begin
                     ShowMessage('Application resreved words are not allowed.'+ret+ret+
                                 'Check "Nickname" and "Personal message" entries !');
                     exit;
                     end;
                end;



if (_VV_LOCAL_CONFIG_ROUTER_IS_ON) then
begin
_VV_LOCAL_USER_IP_IS_OK_WAN:=true;
_TV_NODE_OF_LOCAL_USER.ImageIndex:=1;
end else _TV_NODE_OF_LOCAL_USER.ImageIndex:=2;


_VV_LOCAL_CONFIG_EXPAND_SUBFOLDERS:=AA_0553_ccExpander.Checked;
_VV_LOCAL_CONFIG_ALLOW_WEB_XOC_LINKS:=AA_0550_ccWebXocLinks.Checked;
_VV_LOCAL_CONFIG_I_ACCEPT_NO_LAN :=AA_0552_ccKikLANs.Checked;
_VV_LOCAL_CONFIG_AUTO_ADD_COMS :=AA_0529_OtoAddComs.Checked;
_VV_LOCAL_AUTO_NOTIFY_NEW_VERSION :=AA_0507_OtoNotifVersion.Checked;

_VV_LOCAL_USER_NIKO:=eeNikName.Text;
_VV_LOCAL_USER_NOT_ONLINE_MESSAGE :=eeAwayMsg.Text;

_VV_LOCAL_USER_MESSAGE:=eePersMsg.Text;



EXPLORER_PUBLIC_ROOTS.Text:=_ePubFolders.Items.Text;
EXPLORER_PRIVATE_ROOTS.Text:=_ePrivFolders.Items.Text;
_VV_LOCAL_USER_LOGO_BYTE:=Ord(eLogoChar.Caption[1]); //logo



_TV_NODE_OF_LOCAL_USER._EXO_NODE_MESSAGE:=_VV_LOCAL_USER_MESSAGE;

_VV_LOCAL_USER_MY8_BOOLEANS[2]:=Char(_VV_LOCAL_USER_LOGO_BYTE);
_TV_NODE_OF_LOCAL_USER._EXO_NODE_20BOOLS[2]:=Char(_VV_LOCAL_USER_LOGO_BYTE);




TExoSeeSettings.SaveSettings;

_TV_NODE_OF_LOCAL_USER.Text:=_VV_LOCAL_USER_NIKO;

close;
end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.FormCreate(Sender: TObject);
begin



Caption:=___ccc__0549__ExoSeeSettings;



AA_0512_LvSET.Tag:=-1;
AA_0513_LvFavs.Tag:=-1;

AA_0551_ccRouter.Checked  :=_VV_LOCAL_CONFIG_ROUTER_IS_ON;
maxup.Position      :=_VV_LOCAL_CONFIG_MAX_UPLOADS;
mx1.Caption:=inttostr(_VV_LOCAL_CONFIG_MAX_UPLOADS);


_ePubFolders.Items     :=EXPLORER_PUBLIC_ROOTS;
_ePrivFolders.Items    :=EXPLORER_PRIVATE_ROOTS;


eLocalDLfolder.Text :=_VV_LOCAL_CONFIG_THE_DOWNLOADS_FOLDER;

AA_0553_ccExpander.Checked    :=_VV_LOCAL_CONFIG_EXPAND_SUBFOLDERS;
AA_0550_ccWebXocLinks.Checked :=_VV_LOCAL_CONFIG_ALLOW_WEB_XOC_LINKS;
AA_0552_ccKikLANs.Checked  :=_VV_LOCAL_CONFIG_I_ACCEPT_NO_LAN;
AA_0529_OtoAddComs.Checked  :=_VV_LOCAL_CONFIG_AUTO_ADD_COMS;
AA_0507_OtoNotifVersion.Checked  :=_VV_LOCAL_AUTO_NOTIFY_NEW_VERSION;


eeNikName.Text:=_VV_LOCAL_USER_NIKO;

eeAwayMsg.Text:=_VV_LOCAL_USER_NOT_ONLINE_MESSAGE;
eePersMsg.Text:=_VV_LOCAL_USER_MESSAGE;
eLogoChar.Caption:=Char(_VV_LOCAL_USER_LOGO_BYTE);
eLogoChar.Hint:=___ccc__0613__ChooseIcon;


end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.maxupChange(Sender: TObject);
begin
mx1.Caption:=inttostr(maxup.Position);
_VV_LOCAL_CONFIG_MAX_UPLOADS:=maxup.Position;
end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.AA_0537__rem_privClick(Sender: TObject);
begin
EXPLORER_PRIVATE_ROOTS.Delete(_ePrivFolders.itemindex);
_ePrivFolders.Items.Delete(_ePrivFolders.itemindex);
AA_0537__rem_priv.Enabled:=false;
end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.AA_0538_add_privClick(Sender: TObject);
var
s: string;
begin

   if SelectDirectory(___ccc__0048__SelectPrivFolder,'',s)then
   begin
   s:=s+'\';
   s:=stringreplace(s,'\\','\',[rfReplaceAll]); // clean s
   if _ePrivFolders.Items.IndexOf(s)<>-1 then exit; //exist>>exit
   _ePrivFolders.Items.Add(s);
   EXPLORER_PRIVATE_ROOTS.Add(s);
   end;


end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS._ePubFoldersClick(Sender: TObject);
begin
AA_0537_remPub.Enabled:=_ePubFolders.Items.Count<>1;
end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS._ePrivFoldersClick(Sender: TObject);
begin
AA_0537__rem_priv.Enabled:=_ePrivFolders.Items.Count<>0;
end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.AA_0537_remPubClick(Sender: TObject);
begin
if (_ePubFolders.itemindex=-1) then exit;
EXPLORER_PUBLIC_ROOTS.Delete(_ePubFolders.itemindex);
_ePubFolders.Items.Delete(_ePubFolders.itemindex);
AA_0537_remPub.Enabled:=false;
end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.AA_0538_addPubClick(Sender: TObject);
var
s: string;
begin

if SelectDirectory(___ccc__0049__SelectPubFolder,'',s)then
begin
s:=s+'\';
s:=stringreplace(s,'\\','\',[rfReplaceAll]); // clean s
if _ePubFolders.Items.IndexOf(s)<>-1 then exit; //exist>>exit
_ePubFolders.Items.Add(s);
EXPLORER_PUBLIC_ROOTS.Add(s);

 if eLocalDLfolder.Text='' then
 begin
 s:=EXPLORER_PUBLIC_ROOTS[0]+'_My_downloads\';
 
   if CreateDir(s) then
   begin
   eLocalDLfolder.Text:=s;
   //foldy.text:=stringreplace(foldy.text,'\\','\',[rfReplaceAll]); // clean 1
   _VV_LOCAL_CONFIG_THE_DOWNLOADS_FOLDER:=eLocalDLfolder.Text;
   end else
   ShowMessage(s);

 end;
end;


end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.dwderClick(Sender: TObject);
var
s: string;
begin

if SelectDirectory(___ccc__0050__SelectDownloadsFolder,'',s)then
begin
s:=s+'\';
eLocalDLfolder.text:=s;
s:=stringreplace(s,'\\','\',[rfReplaceAll]); // clean s
_VV_LOCAL_CONFIG_THE_DOWNLOADS_FOLDER:=eLocalDLfolder.text;
end;


end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS._ePrivFoldersDrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin


    With TListBox(Control).Canvas do
    begin
              if (odSelected in state) then
              begin
              Font.Color:=clHighlightText;
              Brush.Color:=clHighlight;
              end
              else
              begin
              Font.Color:=clWindowText;
              Brush.Color:=clWindow;
              end;

    FillRect(Rect);
    _FXOC_MAIN._images.Draw(TListBox(Control).Canvas,Rect.Left+2,Rect.Top+1,TListBox(Control).Tag);
    TextOut(Rect.Left+20, Rect.Top+1,TListBox(Control).Items[Index]);
    end;

end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.eLogoCharClick(Sender: TObject);
begin
PnLogos.Visible:=true;
LboxFonts.ItemIndex:=LboxFonts.Items.IndexOf(eLogoChar.Caption);
end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.Button1Click(Sender: TObject);
begin
PnLogos.Visible:=false;
end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.LboxFontsClick(Sender: TObject);
begin

if (LboxFonts.ItemIndex=-1) then exit;

eLogoChar.Caption:=LboxFonts.Items[LboxFonts.ItemIndex];

end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.AA_0512_LvSETChange(Sender: TObject; Item: TListItem; Change: TItemChange);
begin



if (AA_0512_LvSET.Tag=-1) then exit;
if (AA_0512_LvSET.Tag=Item.Index) then exit;


  Case Item.Index of
    0 : _pp0.BringToFront;
    1 : _pp1.BringToFront;
    2 : _pp2.BringToFront;
    3 : _pp3.BringToFront;
    4 : _pp4.BringToFront;
    5 : _pp5.BringToFront;
  end;

eeSeTiT.Caption:=Item.Caption;


AA_0512_LvSET.Tag:=Item.Index;// fix bug onchage
end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.FormShow(Sender: TObject);
var
i:integer;
_z:string;
vtm:TListItem;
begin




       //-----------favs--load onShow--to dynamic user-add-remove------------
       _skipFavsTRIGG:=true;
       try

       for i:=0 to _TV_NODE_OF_FAVORITES.Count-1 do
       begin
      
       _z:=_TV_NODE_OF_FAVORITES.Item[i]._EXO_NODE_COM_IDX;
       // 1C080B2CD3xxA01000000%1Ismail%2F:\_Pc-Set\_Drivers%3
       vtm:=AA_0513_LvFavs.Items.Add;
       vtm.sava_f:=_z;  // first !!!!
       vtm.Caption:=copy(_z,pos('%1',_z)+2,pos('%2',_z)-pos('%1',_z)-2);
       vtm.ImageIndex:=48;
          case _TV_NODE_OF_FAVORITES.Item[i]._EXO_NODE_X_LEVEL of
            'L' :vtm.SubItems.Add(___ccc__0051__Offline);
            'M' :vtm.SubItems.Add(___ccc__0001__Online);
          end;

       vtm.SubItemImages[0]:=_TV_NODE_OF_FAVORITES.Item[i].ImageIndex;
       end;

       finally _skipFavsTRIGG:=false; end;

      


AA_0512_LvSET.Tag:=-2;
AA_0513_LvFavs.Tag:=-2;


end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.AA_0513_LvFavsChange(Sender: TObject; Item: TListItem; Change: TItemChange);
var
_z:string;
begin

if (AA_0513_LvFavs.Tag=-1) then exit;
if (AA_0513_LvFavs.Tag=Item.Index) then exit;
if (_skipFavsTRIGG) then exit;


eeFavNAM.Caption:='----';

_skipBOXES:=true;  // no trigger boxes !!!
AA_0545_evv1.Checked:=false;  // access privs
AA_0546_evv2.Checked:=false;  // zund files
AA_0547_evv3.Checked:=false;  // xtra folder



AA_0545_evv1.Enabled:=false;  //
AA_0546_evv2.Enabled:=false;  //
AA_0547_evv3.Enabled:=false;  //
AA_0548_eeLbb.Enabled:=false;  //
eeXbtn.Enabled:=false;  //

eedxFolder.text:='';
eedxFolder.Enabled:=false;  //

if (AA_0513_LvFavs.Selected=nil) then exit;

AA_0545_evv1.Enabled:=true;  // access privs
AA_0546_evv2.Enabled:=true;  // zund files
AA_0547_evv3.Enabled:=true;  // xtra folder



_z:=Item.sava_f;

eeFavNAM.Caption:=copy(_z,pos('%1',_z)+2,pos('%2',_z)-pos('%1',_z)-2);
AA_0545_evv1.Checked:=(_z[13+1]='1');  // access privs
AA_0546_evv2.Checked:=(_z[13+2]='1');  // zund files
AA_0547_evv3.Checked:=(_z[13+3]='1');  // xtra folder
eedxFolder.text:=copy(_z,pos('%2',_z)+2,pos('%3',_z)-pos('%2',_z)-2);

AA_0548_eeLbb.Enabled:=AA_0547_evv3.Checked;
eeXbtn.Enabled:=AA_0547_evv3.Checked;
eedxFolder.Enabled:=AA_0547_evv3.Checked;

_skipBOXES:=false; // now allow boxes trigger


AA_0513_LvFavs.Tag:=Item.Index; // fix
end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.AA_0545_evv1Click(Sender: TObject);
var
s:string;
_on:boolean;
begin


if (_skipBOXES) then exit;

if (AA_0513_LvFavs.Selected=nil) then exit;


s:=AA_0513_LvFavs.Selected.sava_f;
_on:=TCheckBox(sender).Checked;
case TCheckBox(sender).Tag of
  1 : if _on then s[13+1]:='1' else s[13+1]:='0';
  2 : if _on then s[13+2]:='1' else s[13+2]:='0';
  3 : if _on then s[13+3]:='1' else s[13+3]:='0';
end;

AA_0513_LvFavs.Selected.sava_f:=s;

TExoSeeSettings._update_fav(s); // direct update to registry
UpdateFavUserNodeCODE(s); // direct update FavNode

AA_0548_eeLbb.Enabled:=AA_0547_evv3.Checked;
eeXbtn.Enabled:=AA_0547_evv3.Checked;
eedxFolder.Enabled:=AA_0547_evv3.Checked;
end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.eeXtraFolderClick(Sender: TObject);
var
s: string;
i:integer;
begin


// 1C080B2CD3xxA01000000%1Ismail%2F:\_Pc-Set\_Drivers%3
// 0000001000
if (AA_0513_LvFavs.Selected=nil) then exit;

if SelectDirectory(___ccc__0052__SelectXtraFolder,'',s)then
begin
s:=s+'\';
s:=stringreplace(s,'\\','\',[rfReplaceAll]); // clean s
eedxFolder.text:=s;
i:=pos('%2',AA_0513_LvFavs.Selected.sava_f);
delete(AA_0513_LvFavs.Selected.sava_f,i,length(AA_0513_LvFavs.Selected.sava_f)-(i-1));
AA_0513_LvFavs.Selected.sava_f:=AA_0513_LvFavs.Selected.sava_f+'%2'+s+'%3';
eedxFolder.Hint:=eedxFolder.text;


TExoSeeSettings._update_fav(AA_0513_LvFavs.Selected.sava_f); // direct update to registry
UpdateFavUserNodeCODE(AA_0513_LvFavs.Selected.sava_f); // direct update FavNode
end;




end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.FormClose(Sender: TObject; var Action: TCloseAction);
begin
AA_0513_LvFavs.Items.Clear;
end;

//------------------------------------------------------------------------------
var langDone : Boolean=False;
procedure T_FXOC_SETTINGS.FormActivate(Sender: TObject);
begin

 if (langDone) then exit;
     langDone:=true;
// fix done
GoSetLANG(Self); //----- go loadLang --- if ok  (1st here)

AA_0512_LvSET.Selected:=AA_0512_LvSET.Items[0]; // default

end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.AA_0614_Label4Click(Sender: TObject);
begin
ShellExecute(0,'open',pchar(TLabel(Sender).Hint),nil,nil,SW_SHOWNORMAL);
end;

//------------------------------------------------------------------------------
procedure T_FXOC_SETTINGS.eedxFolderDblClick(Sender: TObject);
begin
if (eedxFolder.Text<>'') then
ShellExecute(0,'explore',pchar(eedxFolder.Text),nil,nil,SW_SHOWNORMAL);
end;

end.





../delphi71code/exosee-code-source/uf_settings-pas..