source: trunk/Forms/FormMain.pas

Last change on this file was 167, checked in by chronos, 11 months ago
  • Added: Import form preparation.
File size: 6.9 KB
Line 
1unit FormMain;
2
3interface
4
5uses
6 Classes, SysUtils, LazFileUtils, Forms, Controls, Graphics, Dialogs, Menus,
7 ComCtrls, FormContacts, FormEx;
8
9type
10
11 { TFormMain }
12
13 TFormMain = class(TFormEx)
14 CoolBar1: TCoolBar;
15 MainMenu1: TMainMenu;
16 MenuItem1: TMenuItem;
17 MenuItem10: TMenuItem;
18 MenuItem11: TMenuItem;
19 MenuItem12: TMenuItem;
20 MenuItem13: TMenuItem;
21 MenuItem14: TMenuItem;
22 MenuItem15: TMenuItem;
23 MenuItem16: TMenuItem;
24 MenuItemColumns: TMenuItem;
25 MenuItem3: TMenuItem;
26 MenuItem4: TMenuItem;
27 MenuItem5: TMenuItem;
28 MenuItem6: TMenuItem;
29 MenuItem7: TMenuItem;
30 MenuItem8: TMenuItem;
31 MenuItem9: TMenuItem;
32 MenuItemToolbar: TMenuItem;
33 MenuItemView: TMenuItem;
34 MenuItemExit: TMenuItem;
35 MenuItemHomePage: TMenuItem;
36 MenuItemAbout: TMenuItem;
37 MenuItem2: TMenuItem;
38 MenuItemFileNew: TMenuItem;
39 MenuItemFileOpen: TMenuItem;
40 MenuItemSettings: TMenuItem;
41 MenuItemTools: TMenuItem;
42 MenuItemFileOpenRecent: TMenuItem;
43 MenuItemFileSave: TMenuItem;
44 MenuItemFileSaveAs: TMenuItem;
45 MenuItemFileClose: TMenuItem;
46 MenuItemHelp: TMenuItem;
47 MenuItemFile: TMenuItem;
48 PopupMenuOpenRecent: TPopupMenu;
49 Separator1: TMenuItem;
50 Separator2: TMenuItem;
51 ToolBarOther: TToolBar;
52 ToolBarFile: TToolBar;
53 ToolButton1: TToolButton;
54 ToolButton2: TToolButton;
55 ToolButton3: TToolButton;
56 ToolButton4: TToolButton;
57 ToolButton5: TToolButton;
58 ToolButton6: TToolButton;
59 ToolButton7: TToolButton;
60 ToolButton8: TToolButton;
61 procedure FormActivate(Sender: TObject);
62 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
63 procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
64 procedure FormCreate(Sender: TObject);
65 procedure FormDestroy(Sender: TObject);
66 procedure FormDropFiles(Sender: TObject; const FileNames: array of string);
67 procedure FormResize(Sender: TObject);
68 procedure FormShow(Sender: TObject);
69 procedure MenuItemColumnsClick(Sender: TObject);
70 procedure MenuItemToolbarClick(Sender: TObject);
71 private
72 procedure SetToolbarHints;
73 procedure UpdateFormTitle;
74 procedure DataFileChangeExecute(Sender: TObject);
75 procedure LastOpenedFileChangeExecute(Sender: TObject);
76 procedure LoadConfig;
77 procedure SaveConfig;
78 public
79 FormContacts: TFormContacts;
80 procedure UpdateInterface;
81 procedure SettingsChanged;
82 end;
83
84
85implementation
86
87{$R *.lfm}
88
89uses
90 Core, VCard, VCardFile, RegistryEx;
91
92resourcestring
93 SModified = 'Modified';
94 SOnlyOneFileCanBeDropped = 'Only one file can be dropped at once.';
95
96{ TFormMain }
97
98procedure TFormMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
99begin
100 SaveConfig;
101 FormContacts.Close;
102 Application.Terminate;
103end;
104
105procedure TFormMain.FormActivate(Sender: TObject);
106begin
107 Core.Core.Initialize;
108end;
109
110procedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: boolean);
111begin
112 Core.Core.AFileClose.Execute;
113 CanClose := Core.Core.FileClosed;
114end;
115
116procedure TFormMain.FormCreate(Sender: TObject);
117begin
118 FormContacts := TFormContacts.Create(nil);
119 Core.Core.OnDataFileChange := DataFileChangeExecute;
120 Core.Core.OnLastOpenedListChange := LastOpenedFileChangeExecute;
121 LastOpenedFileChangeExecute(Self);
122 LoadConfig;
123end;
124
125procedure TFormMain.FormDestroy(Sender: TObject);
126begin
127 FreeAndNil(FormContacts);
128end;
129
130procedure TFormMain.FormDropFiles(Sender: TObject;
131 const FileNames: array of string);
132begin
133 if Length(FileNames) <> 1 then ShowMessage(SOnlyOneFileCanBeDropped)
134 else begin
135 Core.Core.FileOpen(FileNames[0]);
136 Core.Core.UpdateFile;
137 end;
138end;
139
140procedure TFormMain.FormResize(Sender: TObject);
141begin
142 CoolBar1.AutosizeBands;
143end;
144
145procedure TFormMain.FormShow(Sender: TObject);
146begin
147 FormContacts.BeginUpdate;
148 try
149 SetToolbarHints;
150 ScaleDPI.ScaleControl(CoolBar1, Core.Core.ScaleDPI1.DesignDPI);
151 CoolBar1.AutosizeBands;
152
153 FormContacts.Context := TRegistryContext.Create(Core.Core.ApplicationInfo1.RegistryRoot,
154 Core.Core.ApplicationInfo1.RegistryKey + '\ContactsColumns');
155 FormContacts.ManualDock(Self, nil, alClient);
156 FormContacts.Align := alClient;
157 FormContacts.Show;
158 finally
159 FormContacts.EndUpdate;
160 end;
161end;
162
163procedure TFormMain.MenuItemColumnsClick(Sender: TObject);
164begin
165 FormContacts.AColumns.Execute;
166end;
167
168procedure TFormMain.MenuItemToolbarClick(Sender: TObject);
169begin
170 UpdateInterface;
171end;
172
173procedure TFormMain.SetToolbarHints;
174var
175 I: Integer;
176 J: Integer;
177 Control: TControl;
178begin
179 for J := 0 to CoolBar1.ControlCount - 1 do begin
180 Control := CoolBar1.Controls[J];
181 if Control is TToolBar then begin
182 for I := 0 to TToolBar(Control).ButtonCount - 1 do begin
183 TToolBar(Control).Buttons[I].ShowHint := True;
184 TToolBar(Control).Buttons[I].Hint := TToolBar(Control).Buttons[I].Caption;
185 end;
186 end;
187 end;
188end;
189
190procedure TFormMain.UpdateFormTitle;
191var
192 Title: string;
193begin
194 Title := '';
195 if Assigned(Core.Core.DataFile) and
196 (ExtractFileNameWithoutExt(ExtractFileName(Core.Core.DataFile.FileName)) <> '') then
197 Title := Title + ExtractFileNameWithoutExt(ExtractFileName(Core.Core.DataFile.FileName));
198 if Assigned(Core.Core.DataFile) and Core.Core.DataFile.Modified then
199 Title := Title + ' (' + SModified + ')';
200 if Title <> '' then Title := Title + ' - ';
201 Title := Title + Core.Core.ApplicationInfo1.AppName;
202 //Application.Title := Title;
203 Caption := Title;
204end;
205
206procedure TFormMain.DataFileChangeExecute(Sender: TObject);
207begin
208 if Assigned(FormContacts) then begin
209 if Assigned(Core.Core.DataFile) then
210 FormContacts.Contacts := TVCardFile(Core.Core.DataFile).VCard.Contacts
211 else FormContacts.Contacts := nil;
212 end;
213
214 FormContacts.ReloadList;
215 FormContacts.UpdateInterface;
216 UpdateInterface;
217end;
218
219procedure TFormMain.LastOpenedFileChangeExecute(Sender: TObject);
220begin
221 Core.Core.LastOpenedList1.LoadToMenuItem(MenuItemFileOpenRecent, Core.Core.AFileOpenRecentExecute);
222 Core.Core.LastOpenedList1.LoadToMenuItem(PopupMenuOpenRecent.Items, Core.Core.AFileOpenRecentExecute);
223end;
224
225procedure TFormMain.LoadConfig;
226begin
227 with TRegistryEx.Create do
228 try
229 CurrentContext := Core.Core.ApplicationInfo1.GetRegistryContext;
230 MenuItemToolbar.Checked := ReadBoolWithDefault('ToolBarVisible', True);
231 finally
232 Free;
233 end;
234end;
235
236procedure TFormMain.SaveConfig;
237begin
238 with TRegistryEx.Create do
239 try
240 CurrentContext := Core.Core.ApplicationInfo1.GetRegistryContext;
241 WriteBool('ToolBarVisible', MenuItemToolbar.Checked);
242 finally
243 Free;
244 end;
245end;
246
247procedure TFormMain.UpdateInterface;
248begin
249 UpdateFormTitle;
250 CoolBar1.Visible := MenuItemToolbar.Checked;
251end;
252
253procedure TFormMain.SettingsChanged;
254begin
255 ThemeManager.UseTheme(Self);
256 Translator.TranslateComponentRecursive(Self);
257 FormContacts.ThemeManager.UseTheme(FormContacts);
258 FormContacts.Translator.TranslateComponentRecursive(FormContacts);
259end;
260
261end.
262
Note: See TracBrowser for help on using the repository browser.