Skip to content

Commit a0abf98

Browse files
committed
Improvements: Export & auto change theme for Windows
1 parent 1ad541c commit a0abf98

File tree

6 files changed

+92
-22
lines changed

6 files changed

+92
-22
lines changed

Source/Windows/Project1.dpr

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ program Project1;
22

33
uses
44
Forms,
5-
Unit1 in 'Unit1.pas' {Main};
5+
Unit1 in 'Unit1.pas' {Main},
6+
Unit2 in 'Unit2.pas' {Settings};
67

78
{$R *.res}
89

910
begin
1011
Application.Initialize;
1112
Application.CreateForm(TMain, Main);
13+
Application.CreateForm(TSettings, Settings);
1214
Application.Run;
1315
end.

Source/Windows/Unit1.pas

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ TMain = class(TForm)
3535
procedure CopyBtnClick(Sender: TObject);
3636
procedure CutBtnClick(Sender: TObject);
3737
procedure AddStyle(FileName: string);
38+
procedure ExportNotes(FileName: string);
3839
private
3940
procedure LoadNotes;
4041
procedure NewNote(MemoFocus: boolean);
@@ -60,12 +61,12 @@ TMain = class(TForm)
6061
ID_NEW_NOTE, ID_NOTES, ID_TODAY, ID_YESTERDAY, ID_DAYSAGO, ID_SYNC: string;
6162
ID_CUT, ID_COPY, ID_PASTE, IDS_LAST_UPDATE: string;
6263

63-
ID_SETTINGS, ID_INTERFACE, ID_USE_DARK_THEME, ID_SYNCHRONIZATION,
64+
ID_SETTINGS, ID_INTERFACE, ID_DARK_THEME, IDS_THEME_TIME, ID_SYNCHRONIZATION,
6465
ID_SYNC_PORT, ID_SYNC_WITH_ANY_IPS, ID_ALLOW_IPS, ID_OK, ID_CANCEL: string;
6566

6667
AllowIPs: TStringList;
6768
AllowAnyIPs: boolean;
68-
UseDarkTheme: boolean;
69+
UseDarkTheme, UseThemeTime: boolean;
6970

7071
implementation
7172

@@ -162,6 +163,9 @@ procedure TMain.FormCreate(Sender: TObject);
162163
Ini: TIniFile;
163164
Reg: TRegistry;
164165
WND: HWND;
166+
167+
CurDate: TDateTime;
168+
CurHour, NilTime: Word;
165169
begin
166170
//Ïðåäîòâðàùåíèå ïîâòîðîãî çàïóñêà
167171
WND:=FindWindow('TMain', 'EasyNotes');
@@ -174,7 +178,17 @@ procedure TMain.FormCreate(Sender: TObject);
174178
Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Config.ini');
175179
IdHTTPServer.DefaultPort:=Ini.ReadInteger('Main', 'Port', 735);
176180
AllowAnyIPs:=Ini.ReadBool('Sync', 'AllowAnyIPs', false);
181+
177182
UseDarkTheme:=Ini.ReadBool('Main', 'DarkTheme', false);
183+
UseThemeTime:=Ini.ReadBool('Main', 'ThemeTime', false);
184+
185+
//Àâòîìàòè÷åñêîå èçìåíåíèå òåìû îò âðåìåíè ñóòîê
186+
if (UseDarkTheme = false) and (UseThemeTime) then begin
187+
DecodeTime(Now, CurHour, NilTime, NilTime, NilTime);
188+
if (CurHour <= 9) or (CurHour >= 17) then
189+
UseDarkTheme:=true;
190+
end;
191+
178192
Width:=Ini.ReadInteger('Main', 'Width', Width);
179193
Height:=Ini.ReadInteger('Main', 'Height', Height);
180194
OldWidth:=Width;
@@ -207,7 +221,8 @@ procedure TMain.FormCreate(Sender: TObject);
207221

208222
ID_SETTINGS:='Íàñòðîéêè';
209223
ID_INTERFACE:='Èíòåðôåéñ';
210-
ID_USE_DARK_THEME:='Èñïîëüçîâàòü ò¸ìíóþ òåìó';
224+
ID_DARK_THEME:='Ò¸ìíàÿ òåìà';
225+
IDS_THEME_TIME:='Òåìà â çàâèñèìîñòè îò âðåìåíè';
211226
ID_SYNCHRONIZATION:='Ñèíõðîíèçàöèÿ';
212227
ID_SYNC_PORT:='Ïîðò';
213228
ID_SYNC_WITH_ANY_IPS:='Ñèíõðîíèçàöèÿ ñ ëþáûìè IP (íåáåçîïàñíî)';
@@ -228,7 +243,8 @@ procedure TMain.FormCreate(Sender: TObject);
228243

229244
ID_SETTINGS:='Settings';
230245
ID_INTERFACE:='Interface';
231-
ID_USE_DARK_THEME:='Use a dark theme';
246+
ID_DARK_THEME:='Dark theme';
247+
IDS_THEME_TIME:='Theme is time dependent';
232248
ID_SYNCHRONIZATION:='Synchronization';
233249
ID_SYNC_PORT:='Port';
234250
ID_SYNC_WITH_ANY_IPS:='Synchronization with any IP (not secure)';
@@ -255,6 +271,10 @@ procedure TMain.FormCreate(Sender: TObject);
255271
//Îãðàíè÷åíèå IP àäðåñîâ äëÿ ñèíõðîíèçàöèè
256272
AllowIPs:=TStringList.Create;
257273
AllowIPs.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'AllowIPs.txt');
274+
275+
//Ýêñïîðò
276+
if (LowerCase(ParamStr(1)) = '-export') and (Trim(ParamStr(2)) <> '') then
277+
ExportNotes(ParamStr(2));
258278
end;
259279

260280
function ExtractTitle(Str: string): string;
@@ -686,6 +706,24 @@ procedure TMain.AddStyle(FileName: string);
686706
StyleFile.Free;
687707
end;
688708

709+
procedure TMain.ExportNotes(FileName: string);
710+
var
711+
i: integer; SQLTB: TSQLiteTable; Notes: TStringList;
712+
begin
713+
Notes:=TStringList.Create;
714+
SQLTB:=SQLDB.GetTable('SELECT * FROM Notes ORDER BY DateTime DESC');
715+
try
716+
for i:=0 to SQLTB.Count - 1 do begin
717+
Notes.Text:=Notes.Text + DateTimeToStr(UNIXToDateTime(StrToInt64(SQLTB.FieldAsString(2)))) + #13#10 + CharCodesToStr(SQLTB.FieldAsString(1)) + #13#10 + #13#10;
718+
SQLTB.Next;
719+
end;
720+
finally
721+
SQLTB.Free;
722+
end;
723+
Notes.SaveToFile(FileName);
724+
Notes.Free;
725+
end;
726+
689727
initialization
690728
OleInitialize(nil);
691729

Source/Windows/Unit2.dfm

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ object Settings: TSettings
44
BorderIcons = [biSystemMenu, biMinimize]
55
BorderStyle = bsSingle
66
Caption = #1053#1072#1089#1090#1088#1086#1081#1082#1080
7-
ClientHeight = 280
7+
ClientHeight = 296
88
ClientWidth = 272
99
Color = clBtnFace
1010
Font.Charset = DEFAULT_CHARSET
@@ -21,21 +21,31 @@ object Settings: TSettings
2121
Left = 8
2222
Top = 8
2323
Width = 257
24-
Height = 49
24+
Height = 65
2525
Caption = #1048#1085#1090#1077#1088#1092#1077#1081#1089
2626
TabOrder = 0
2727
object DarkThemeCB: TCheckBox
2828
Left = 8
2929
Top = 20
30-
Width = 201
30+
Width = 97
3131
Height = 17
32-
Caption = #1048#1089#1087#1086#1083#1100#1079#1086#1074#1072#1090#1100' '#1090#1077#1084#1085#1091#1102' '#1090#1077#1084#1091
32+
Caption = #1058#1105#1084#1085#1072#1103' '#1090#1077#1084#1072
3333
TabOrder = 0
34+
OnClick = DarkThemeCBClick
35+
end
36+
object ThemeTimeCB: TCheckBox
37+
Left = 8
38+
Top = 40
39+
Width = 201
40+
Height = 17
41+
Caption = #1058#1077#1084#1072' '#1074' '#1079#1072#1074#1080#1089#1080#1084#1086#1089#1090#1080' '#1086#1090' '#1074#1088#1077#1084#1077#1085#1080
42+
TabOrder = 1
43+
OnClick = ThemeTimeCBClick
3444
end
3545
end
3646
object SyncGB: TGroupBox
3747
Left = 8
38-
Top = 64
48+
Top = 80
3949
Width = 257
4050
Height = 177
4151
Caption = #1057#1080#1085#1093#1088#1086#1085#1080#1079#1072#1094#1080#1103
@@ -81,16 +91,16 @@ object Settings: TSettings
8191
end
8292
object OkBtn: TButton
8393
Left = 8
84-
Top = 248
94+
Top = 264
8595
Width = 75
8696
Height = 25
87-
Caption = #1054#1082
97+
Caption = #1054#1050
8898
TabOrder = 2
8999
OnClick = OkBtnClick
90100
end
91101
object CancelBtn: TButton
92102
Left = 88
93-
Top = 248
103+
Top = 264
94104
Width = 75
95105
Height = 25
96106
Caption = #1054#1090#1084#1077#1085#1072
@@ -99,7 +109,7 @@ object Settings: TSettings
99109
end
100110
object AboutBtn: TButton
101111
Left = 240
102-
Top = 248
112+
Top = 264
103113
Width = 25
104114
Height = 25
105115
Caption = '?'

Source/Windows/Unit2.pas

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,14 @@ TSettings = class(TForm)
1919
AllowedIPsMemo: TMemo;
2020
AboutBtn: TButton;
2121
AllowAnyIPsCB: TCheckBox;
22+
ThemeTimeCB: TCheckBox;
2223
procedure FormCreate(Sender: TObject);
2324
procedure CancelBtnClick(Sender: TObject);
2425
procedure AboutBtnClick(Sender: TObject);
2526
procedure OkBtnClick(Sender: TObject);
2627
procedure AllowAnyIPsCBClick(Sender: TObject);
28+
procedure ThemeTimeCBClick(Sender: TObject);
29+
procedure DarkThemeCBClick(Sender: TObject);
2730
private
2831
{ Private declarations }
2932
public
@@ -47,7 +50,8 @@ procedure TSettings.FormCreate(Sender: TObject);
4750

4851
Caption:=ID_SETTINGS;
4952
InterfaceGB.Caption:=ID_INTERFACE;
50-
DarkThemeCB.Caption:=ID_USE_DARK_THEME;
53+
DarkThemeCB.Caption:=ID_DARK_THEME;
54+
ThemeTimeCB.Caption:=IDS_THEME_TIME;
5155
SyncGB.Caption:=ID_SYNCHRONIZATION;
5256
PortLbl.Caption:=ID_SYNC_PORT;
5357
AllowAnyIPsCB.Caption:=ID_SYNC_WITH_ANY_IPS;
@@ -58,6 +62,7 @@ procedure TSettings.FormCreate(Sender: TObject);
5862
Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Config.ini');
5963
PortEdt.Text:=IntToStr(Main.IdHTTPServer.DefaultPort);
6064
DarkThemeCB.Checked:=UseDarkTheme;
65+
ThemeTimeCB.Checked:=UseThemeTime;
6166
if AllowAnyIPs then begin
6267
AllowAnyIPsCB.Checked:=true;
6368
AllowedIPsMemo.Enabled:=false;
@@ -73,8 +78,8 @@ procedure TSettings.CancelBtnClick(Sender: TObject);
7378

7479
procedure TSettings.AboutBtnClick(Sender: TObject);
7580
begin
76-
Application.MessageBox(PChar(Caption + ' 0.8.5' + #13#10 +
77-
IDS_LAST_UPDATE + ' 14.09.20' + #13#10 +
81+
Application.MessageBox(PChar(Caption + ' 0.8.6' + #13#10 +
82+
IDS_LAST_UPDATE + ' 28.09.20' + #13#10 +
7883
'https://r57zone.github.io' + #13#10 +
7984
'[email protected]'), PChar(Caption), MB_ICONINFORMATION);
8085
end;
@@ -84,9 +89,12 @@ procedure TSettings.OkBtnClick(Sender: TObject);
8489
Ini: TIniFile;
8590
begin
8691
Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Config.ini');
87-
Ini.WriteInteger('Main', 'Port', StrToIntDef(PortEdt.Text, 735));
92+
Ini.WriteInteger('Sync', 'Port', StrToIntDef(PortEdt.Text, 735));
93+
if ThemeTimeCB.Checked then
94+
DarkThemeCB.Checked:=false;
8895
Ini.WriteBool('Main', 'DarkTheme', DarkThemeCB.Checked);
89-
Ini.WriteBool('Main', 'AllowAnyIPs', AllowAnyIPsCB.Checked);
96+
Ini.WriteBool('Main', 'ThemeTime', ThemeTimeCB.Checked);
97+
Ini.WriteBool('Sync', 'AllowAnyIPs', AllowAnyIPsCB.Checked);
9098
AllowedIPsMemo.Lines.SaveToFile(ExtractFilePath(ParamStr(0)) + 'AllowIPs.txt');
9199
Ini.Free;
92100
Main.IdHTTPServer.Active:=false;
@@ -99,4 +107,16 @@ procedure TSettings.AllowAnyIPsCBClick(Sender: TObject);
99107
AllowedIPsMemo.Enabled:=not AllowAnyIPsCB.Checked;
100108
end;
101109

110+
procedure TSettings.ThemeTimeCBClick(Sender: TObject);
111+
begin
112+
if (ThemeTimeCB.Checked) and (DarkThemeCB.Checked) then
113+
DarkThemeCB.Checked:=false;
114+
end;
115+
116+
procedure TSettings.DarkThemeCBClick(Sender: TObject);
117+
begin
118+
if (DarkThemeCB.Checked) and (ThemeTimeCB.Checked) then
119+
ThemeTimeCB.Checked:=false;
120+
end;
121+
102122
end.

Source/Windows/sqlite3.dll

-420 KB
Binary file not shown.

Source/Windows/style/main.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<!--<link rel="stylesheet" href="all.css">-->
77
<style type="text/css">
88
html,body{padding:0;margin:0;}
9-
body{font-family:Segoe UI; color:#666666; background-color:#f8f8f8;
9+
body{font-family:Segoe UI; color:#333; background-color:#f8f8f8;
1010

1111
scrollbar-arrow-color: #606060;
1212

@@ -33,8 +33,8 @@
3333
#list #items{height:calc(100% - 40px); overflow:auto; border-right: 1px solid #d5d5d5;}
3434
#list #items #note{cursor:pointer; height:40px; border-bottom:1px solid #ededed; overflow:hidden;}
3535
#list #items #note:hover{background-color:#ededed;}
36-
#list #items #note #title{float:left; width:calc(100% - 130px); margin:10px 0 0 8px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
37-
#list #items #note #date{float:right; width:90px; margin:10px 10px 0 0; color:#454545; font-size:10pt; text-align:right;}
36+
#list #items #note #title{float:left; width:calc(100% - 125px); margin:10px 0 0 8px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
37+
#list #items #note #date{float:right; width:85px; margin:10px 10px 0 0; color:#454545; font-size:13px; text-align:right;}
3838

3939
#editor{float:right; width:63%; height:100%;}
4040
#meta{color:#ac5942; height:38px; width:100%; font-size:14px; cursor:default; overflow:hidden; white-space:nowrap;}

0 commit comments

Comments
 (0)