Răsfoiți Sursa

Improving layout of Login dialog search panel and adding search options context menu to it

Source commit: 1f0847bee5b0be697452b7bf026802d70a6293aa
Martin Prikryl 1 an în urmă
părinte
comite
f7189322c9
4 a modificat fișierele cu 89 adăugiri și 29 ștergeri
  1. 31 13
      source/forms/Login.cpp
  2. 48 14
      source/forms/Login.dfm
  3. 9 1
      source/forms/Login.h
  4. 1 1
      source/windows/GUITools.cpp

+ 31 - 13
source/forms/Login.cpp

@@ -144,11 +144,12 @@ void __fastcall TLoginDialog::InitControls()
   BasicSshPanel->Top = BasicFtpPanel->Top;
   BasicS3Panel->Top = BasicFtpPanel->Top;
 
-  SitesIncrementalSearchLabel->AutoSize = false;
-  SitesIncrementalSearchLabel->Left = SessionTree->Left;
-  SitesIncrementalSearchLabel->Width = SessionTree->Width;
-  SitesIncrementalSearchLabel->Top = SessionTree->BoundsRect.Bottom - SitesIncrementalSearchLabel->Height;
-  SitesIncrementalSearchLabel->Visible = false;
+  SitesIncrementalSearchPanel->Left = SessionTree->Left;
+  SitesIncrementalSearchPanel->Width = SessionTree->Width;
+  SitesIncrementalSearchPanel->Height =
+    (2 * SitesIncrementalSearchLabel->Top) + SitesIncrementalSearchLabel->Height - ScaleByTextHeight(SitesIncrementalSearchPanel, 2);
+  SitesIncrementalSearchPanel->Top = SessionTree->BoundsRect.Bottom - SitesIncrementalSearchPanel->Height;
+  SitesIncrementalSearchPanel->Visible = false;
 
   ReadOnlyControl(TransferProtocolView);
   ReadOnlyControl(EncryptionView);
@@ -728,17 +729,17 @@ void __fastcall TLoginDialog::UpdateControls()
     EnableControl(S3ProfileCombo, S3CredentialsEnv);
 
     // sites
-    if (SitesIncrementalSearchLabel->Visible != FIncrementalSearchState.Searching)
+    if (SitesIncrementalSearchPanel->Visible != FIncrementalSearchState.Searching)
     {
       if (!FIncrementalSearchState.Searching)
       {
-        SitesIncrementalSearchLabel->Visible = false;
-        SessionTree->Height = SitesIncrementalSearchLabel->BoundsRect.Bottom - SessionTree->Top;
+        SitesIncrementalSearchPanel->Visible = false;
+        SessionTree->Height = SitesIncrementalSearchPanel->BoundsRect.Bottom - SessionTree->Top;
       }
       else
       {
-        SitesIncrementalSearchLabel->Visible = true;
-        SessionTree->Height = SitesIncrementalSearchLabel->BoundsRect.Top - SessionTree->Top;
+        SitesIncrementalSearchPanel->Visible = true;
+        SessionTree->Height = SitesIncrementalSearchPanel->BoundsRect.Top - SessionTree->Top + 1;
       }
     }
 
@@ -3332,19 +3333,31 @@ void __fastcall TLoginDialog::CopyParamRuleActionExecute(TObject * /*Sender*/)
   }
 }
 //---------------------------------------------------------------------------
+void TLoginDialog::SetSiteSearch(TIncrementalSearch SiteSearch)
+{
+  if (FSiteSearch != SiteSearch)
+  {
+    FSiteSearch = SiteSearch;
+    if (!SitesIncrementalSearch(FIncrementalSearchState.Text, false, false, false))
+    {
+      ResetSitesIncrementalSearch();
+    }
+  }
+}
+//---------------------------------------------------------------------------
 void __fastcall TLoginDialog::SearchSiteNameStartOnlyActionExecute(TObject * /*Sender*/)
 {
-  FSiteSearch = isNameStartOnly;
+  SetSiteSearch(isNameStartOnly);
 }
 //---------------------------------------------------------------------------
 void __fastcall TLoginDialog::SearchSiteNameActionExecute(TObject * /*Sender*/)
 {
-  FSiteSearch = isName;
+  SetSiteSearch(isName);
 }
 //---------------------------------------------------------------------------
 void __fastcall TLoginDialog::SearchSiteActionExecute(TObject * /*Sender*/)
 {
-  FSiteSearch = isAll;
+  SetSiteSearch(isAll);
 }
 //---------------------------------------------------------------------------
 void __fastcall TLoginDialog::ChangeScale(int M, int D)
@@ -3395,3 +3408,8 @@ void __fastcall TLoginDialog::SearchSiteStartActionExecute(TObject *)
   }
 }
 //---------------------------------------------------------------------------
+void __fastcall TLoginDialog::SitesIncrementalSearchPanelContextPopup(TObject * Sender, TPoint & MousePos, bool & Handled)
+{
+  MenuPopup(Sender, MousePos, Handled);
+}
+//---------------------------------------------------------------------------

+ 48 - 14
source/forms/Login.dfm

@@ -487,18 +487,6 @@ object LoginDialog: TLoginDialog
       OnMouseMove = SessionTreeMouseMove
       OnStartDrag = SessionTreeStartDrag
     end
-    object SitesIncrementalSearchLabel: TStaticText
-      Left = 14
-      Top = 330
-      Width = 142
-      Height = 17
-      Anchors = [akLeft, akRight, akBottom]
-      BorderStyle = sbsSingle
-      Caption = 'SitesIncrementalSearchLabel'
-      ShowAccelChar = False
-      TabOrder = 1
-      Visible = False
-    end
     object ManageButton: TButton
       Left = 403
       Top = 356
@@ -506,7 +494,7 @@ object LoginDialog: TLoginDialog
       Height = 25
       Anchors = [akRight, akBottom]
       Caption = '&Manage'
-      TabOrder = 3
+      TabOrder = 2
       OnClick = ManageButtonClick
     end
     object ToolsMenuButton: TButton
@@ -516,9 +504,39 @@ object LoginDialog: TLoginDialog
       Height = 25
       Anchors = [akLeft, akBottom]
       Caption = '&Tools'
-      TabOrder = 2
+      TabOrder = 1
       OnClick = ToolsMenuButtonClick
     end
+    object SitesIncrementalSearchPanel: TPanel
+      Left = 26
+      Top = 309
+      Width = 183
+      Height = 23
+      Anchors = [akLeft, akRight, akBottom]
+      BevelOuter = bvNone
+      PopupMenu = SitesIncrementalSearchPopupMenu
+      TabOrder = 3
+      OnContextPopup = SitesIncrementalSearchPanelContextPopup
+      object SitesIncrementalSearchBorderLabel: TStaticText
+        Left = 0
+        Top = 0
+        Width = 183
+        Height = 23
+        Align = alClient
+        AutoSize = False
+        BorderStyle = sbsSingle
+        TabOrder = 0
+      end
+      object SitesIncrementalSearchLabel: TStaticText
+        Left = 5
+        Top = 4
+        Width = 142
+        Height = 17
+        Caption = 'SitesIncrementalSearchLabel'
+        ShowAccelChar = False
+        TabOrder = 1
+      end
+    end
   end
   object ShowAgainPanel: TPanel
     Left = 0
@@ -5080,4 +5098,20 @@ object LoginDialog: TLoginDialog
     Top = 253
     Bitmap = {}
   end
+  object SitesIncrementalSearchPopupMenu: TPopupMenu
+    Left = 279
+    Top = 309
+    object MenuItem36: TMenuItem
+      Action = SearchSiteNameStartOnlyAction
+      RadioItem = True
+    end
+    object MenuItem37: TMenuItem
+      Action = SearchSiteNameAction
+      RadioItem = True
+    end
+    object MenuItem38: TMenuItem
+      Action = SearchSiteAction
+      RadioItem = True
+    end
+  end
 end

+ 9 - 1
source/forms/Login.h

@@ -68,7 +68,6 @@ __published:
   TMenuItem *N3;
   TMenuItem *ImportConfiguration1;
   TMenuItem *ExportConfiguration1;
-  TStaticText *SitesIncrementalSearchLabel;
   TAction *PreferencesAction;
   TMenuItem *N4;
   TMenuItem *Preferences1;
@@ -218,6 +217,13 @@ __published:
   TCheckBox *S3CredentialsEnvCheck3;
   TMenuItem *OpeninPuTTY4;
   TComboBox *S3ProfileCombo;
+  TPanel *SitesIncrementalSearchPanel;
+  TStaticText *SitesIncrementalSearchBorderLabel;
+  TStaticText *SitesIncrementalSearchLabel;
+  TPopupMenu *SitesIncrementalSearchPopupMenu;
+  TMenuItem *MenuItem36;
+  TMenuItem *MenuItem37;
+  TMenuItem *MenuItem38;
   void __fastcall DataChange(TObject *Sender);
   void __fastcall FormShow(TObject *Sender);
   void __fastcall SessionTreeDblClick(TObject *Sender);
@@ -300,6 +306,7 @@ __published:
   void __fastcall S3ProfileComboChange(TObject *Sender);
   void __fastcall ShowAgainCheckClick(TObject *Sender);
   void __fastcall SearchSiteStartActionExecute(TObject *Sender);
+  void __fastcall SitesIncrementalSearchPanelContextPopup(TObject *Sender, TPoint &MousePos, bool &Handled);
 
 private:
   int NoUpdate;
@@ -439,6 +446,7 @@ protected:
   void __fastcall EditSession();
   void __fastcall Login();
   DYNAMIC void __fastcall ChangeScale(int M, int D);
+  void SetSiteSearch(TIncrementalSearch SiteSearch);
   __property TSessionData * SelectedSession  = { read=GetSelectedSession };
 
   INTERFACE_HOOK;

+ 1 - 1
source/windows/GUITools.cpp

@@ -1300,7 +1300,7 @@ void TIncrementalSearchState::Reset()
 UnicodeString FormatIncrementalSearchStatus(const TIncrementalSearchState & SearchState)
 {
   UnicodeString Result =
-    L" " + FMTLOAD(INC_SEARCH, (DefaultStr(SearchState.Text, LoadStr(INC_SEARCH_TYPE)))) +
+    FMTLOAD(INC_SEARCH, (DefaultStr(SearchState.Text, LoadStr(INC_SEARCH_TYPE)))) +
     ((SearchState.HaveNext && DebugAlwaysTrue(!SearchState.Text.IsEmpty())) ? L" " + LoadStr(INC_NEXT_SEARCH) : EmptyStr);
   return Result;
 }