From 968149af14598df8e18df792d4cc39cc4335793f Mon Sep 17 00:00:00 2001 From: shaoziyang Date: Mon, 28 Nov 2022 12:12:16 +0800 Subject: [PATCH] add progress bar on load joplin + add progress bar on load joplin - fixed bug in loop --- sources/Unit1.dfm | 22 ++++++++++++++++++---- sources/Unit1.pas | 32 ++++++++++++++++++++++++++++---- 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/sources/Unit1.dfm b/sources/Unit1.dfm index 0d7907c..6ed866b 100644 --- a/sources/Unit1.dfm +++ b/sources/Unit1.dfm @@ -1,16 +1,21 @@ object FormMain: TFormMain Left = 0 Top = 0 + AlphaBlend = True + AlphaBlendValue = 150 + BorderStyle = bsNone Caption = 'FormMain' - ClientHeight = 202 - ClientWidth = 333 + ClientHeight = 241 + ClientWidth = 387 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] + FormStyle = fsStayOnTop OldCreateOrder = False + Position = poDesktopCenter OnCreate = FormCreate OnDestroy = FormDestroy PixelsPerInch = 96 @@ -23,6 +28,14 @@ object FormMain: TFormMain TabOrder = 0 Visible = False end + object pbBar: TProgressBar + Left = 8 + Top = 177 + Width = 360 + Height = 36 + Position = 50 + TabOrder = 1 + end object tray: TTrayIcon Icon.Data = { 000001000300101000000100080068050000360000003030000001002000A825 @@ -2641,7 +2654,7 @@ object FormMain: TFormMain AutoHotkeys = maManual Left = 184 Top = 56 - object pmNotes: TMenuItem + object pmJoplinPortable: TMenuItem Bitmap.Data = { 36100000424D3610000000000000360000002800000020000000200000000100 2000000000000010000000000000000000000000000000000000D3700F00CD6A @@ -2773,7 +2786,8 @@ object FormMain: TFormMain 1B48EF8C1B48EE8B1A49EC891A49EB881949E9861949E8851849E6831549E582 1649E3801649E27F1549E17E1549E07D1448DE7B1248DD7A1349DB7812432B18 CF2CDB781102DE7B1100D8750F00D9761200DC791500D3700F00} - Caption = 'Joplin Portable' + Caption = 'JoplinPortable v2' + OnClick = pmJoplinPortableClick end object N2: TMenuItem Caption = '-' diff --git a/sources/Unit1.pas b/sources/Unit1.pas index aacf0e7..8e994b0 100644 --- a/sources/Unit1.pas +++ b/sources/Unit1.pas @@ -18,7 +18,12 @@ interface IniFiles, TLHelp32, Menus, - StdCtrls; + StdCtrls, + ComCtrls; + +const + GITHUB_URL = 'https://github.com/shaoziyang/JoplinPortable'; + type TFormMain = class(TForm) @@ -27,13 +32,14 @@ TFormMain = class(TForm) pmTray: TPopupMenu; N1: TMenuItem; pmExit: TMenuItem; - pmNotes: TMenuItem; + pmJoplinPortable: TMenuItem; pmAdd: TMenuItem; N3: TMenuItem; pmnote: TMenuItem; N2: TMenuItem; mmoNotes: TMemo; tmrWDG: TTimer; + pbBar: TProgressBar; procedure pmExitClick(Sender: TObject); procedure pmAddClick(Sender: TObject); procedure pmnoteClick(Sender: TObject); @@ -41,6 +47,7 @@ TFormMain = class(TForm) procedure tmrWDGTimer(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure trayClick(Sender: TObject); + procedure pmJoplinPortableClick(Sender: TObject); private { Private declarations } WDGen: Boolean; @@ -123,6 +130,7 @@ procedure TFormMain.CloseJoplin; n := 100; while n > 0 do begin + n := n - 1; Application.ProcessMessages; Sleep(10); joplin := FindWindow(nil, 'Joplin'); @@ -154,6 +162,8 @@ procedure TFormMain.FindNotes; procedure TFormMain.FormCreate(Sender: TObject); begin + pbBar.Position:=0; + FormMain.AutoSize:=True; app_path := ExtractFilePath(Application.ExeName); joplin_app := app_path + 'App\Joplin\Joplin.exe'; joplin_notes_path := app_path + 'Notes\'; @@ -234,6 +244,9 @@ procedure TFormMain.pmnoteClick(Sender: TObject); begin WDGen := False; CloseJoplin; + Application.ShowMainForm := True; + FormMain.Show; + FormMain.BringToFront; TMenuItem(Sender).Checked := True; curNote := TMenuItem(Sender).Hint; @@ -245,20 +258,31 @@ procedure TFormMain.pmnoteClick(Sender: TObject); if n > 9 then n := 9; tray.IconIndex := n; - n := 100; + pbBar.Max:=1000; + n := pbBar.Max; while n > 0 do begin + pbBar.Position := pbBar.Max - n; + n := n - 1; Application.ProcessMessages; Sleep(10); if FindWindow(nil, 'Joplin') <> 0 then begin - n := 0; + if n > pbBar.Max div 3 then + n := pbBar.Max div 3; end; end; + FormMain.Hide; + Application.ShowMainForm := False; WDGen := True; end; end; +procedure TFormMain.pmJoplinPortableClick(Sender: TObject); +begin + ShellExecute(Handle, '',GITHUB_URL, '', '', SW_SHOW); +end; + procedure TFormMain.tmrWDGTimer(Sender: TObject); begin if WDGen then