1
0
mirror of https://github.com/winscp/winscp.git synced 2026-10-24 02:28:55 +03:00
Files
winscp/source/forms/SynchronizeChecklist.h
Martin Prikryl 94c286bb52 Custom commands keyboard shortcuts work on Synchronization checklist dialog
Source commit: fd53f5801b8516cf207465672be3080df5479b10
2019-12-20 01:17:27 +01:00

188 lines
8.3 KiB
C++

//----------------------------------------------------------------------------
#ifndef SynchronizeChecklistH
#define SynchronizeChecklistH
//----------------------------------------------------------------------------
#include "IEListView.hpp"
#include "NortonLikeListView.hpp"
#include <System.Classes.hpp>
#include <Vcl.ComCtrls.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.ImgList.hpp>
#include <Vcl.Menus.hpp>
#include <Vcl.StdCtrls.hpp>
#include "PngImageList.hpp"
//----------------------------------------------------------------------------
#include <Terminal.h>
#include <System.Actions.hpp>
#include <Vcl.ActnList.hpp>
//----------------------------------------------------------------------------
class TSynchronizeChecklistDialog : public TForm
{
__published:
TPanel * Panel;
TIEListView *ListView;
TStatusBar *StatusBar;
TPngImageList *ActionImages;
TButton *OkButton;
TButton *CancelButton;
TButton *CheckAllButton;
TButton *UncheckAllButton;
TButton *CheckButton;
TButton *UncheckButton;
TPopupMenu *ListViewPopupMenu;
TMenuItem *CheckItem;
TMenuItem *UncheckItem;
TMenuItem *N1;
TMenuItem *SelectAllItem;
TTimer *UpdateTimer;
TButton *HelpButton;
TButton *CustomCommandsButton2;
TActionList *ActionList;
TAction *CheckAction;
TAction *UncheckAction;
TAction *CheckAllAction;
TAction *UncheckAllAction;
TAction *SelectAllAction;
TAction *CustomCommandsAction;
TMenuItem *N2;
TButton *ReverseButton;
TAction *ReverseAction;
TMenuItem *ReverseItem;
TPngImageList *ActionImages120;
TPngImageList *ActionImages144;
TPngImageList *ActionImages192;
TAction *CalculateSizeAction;
TMenuItem *Calculate1;
TButton *CalculateSizeButton;
TAction *CalculateSizeAllAction;
TAction *MoveAction;
TButton *MoveButton;
TMenuItem *MoveItem;
TAction *CheckDirectoryAction;
TAction *UncheckDirectoryAction;
TMenuItem *N3;
TMenuItem *CheckAllFilesinThisDirectory1;
TMenuItem *UncheckAllActionsinThisDirectory1;
TAction *BrowseLocalAction;
TAction *BrowseRemoteAction;
TMenuItem *BrowseLocalDirectory1;
TMenuItem *BrowseLocalDirectory2;
void __fastcall HelpButtonClick(TObject * Sender);
void __fastcall FormShow(TObject * Sender);
void __fastcall StatusBarDrawPanel(TStatusBar *StatusBar,
TStatusPanel *Panel, const TRect &Rect);
void __fastcall ListViewChange(TObject *Sender, TListItem *Item,
TItemChange Change);
void __fastcall ListViewChanging(TObject *Sender, TListItem *Item,
TItemChange Change, bool &AllowChange);
void __fastcall CheckAllActionExecute(TObject *Sender);
void __fastcall CheckActionExecute(TObject *Sender);
void __fastcall ListViewSelectItem(TObject *Sender, TListItem *Item,
bool Selected);
void __fastcall UpdateTimerTimer(TObject *Sender);
void __fastcall SelectAllActionExecute(TObject *Sender);
void __fastcall StatusBarMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y);
void __fastcall ListViewCompare(TObject *Sender, TListItem *Item1,
TListItem *Item2, int Data, int &Compare);
void __fastcall ListViewSecondaryColumnHeader(TCustomIEListView *Sender,
int Index, int &SecondaryColumn);
void __fastcall ListViewContextPopup(TObject *Sender, TPoint &MousePos,
bool &Handled);
void __fastcall CustomCommandsActionExecute(TObject *Sender);
void __fastcall ListViewAdvancedCustomDrawSubItem(TCustomListView *Sender, TListItem *Item,
int SubItem, TCustomDrawState State, TCustomDrawStage Stage, bool &DefaultDraw);
void __fastcall StatusBarResize(TObject *Sender);
void __fastcall UncheckActionExecute(TObject *Sender);
void __fastcall UncheckAllActionExecute(TObject *Sender);
void __fastcall ReverseActionExecute(TObject *Sender);
void __fastcall ListViewClick(TObject *Sender);
void __fastcall OkButtonClick(TObject *Sender);
void __fastcall CalculateSizeActionExecute(TObject *Sender);
void __fastcall CalculateSizeAllActionExecute(TObject *Sender);
void __fastcall MoveActionExecute(TObject *Sender);
void __fastcall CheckDirectoryActionExecute(TObject *Sender);
void __fastcall UncheckDirectoryActionExecute(TObject *Sender);
void __fastcall BrowseLocalActionExecute(TObject *Sender);
void __fastcall BrowseRemoteActionExecute(TObject *Sender);
public:
__fastcall TSynchronizeChecklistDialog(
TComponent * AOwner, TSynchronizeMode Mode, int Params,
const UnicodeString & LocalDirectory, const UnicodeString & RemoteDirectory,
TCustomCommandMenuEvent OnCustomCommandMenu, TFullSynchronizeEvent OnSynchronize,
TSynchronizeChecklistCalculateSize OnSynchronizeChecklistCalculateSize, TSynchronizeMoveEvent OnSynchronizeMove,
TSynchronizeBrowseEvent OnSynchronizeBrowse, void * Token);
virtual __fastcall ~TSynchronizeChecklistDialog();
bool __fastcall Execute(TSynchronizeChecklist * Checklist);
protected:
bool FFormRestored;
TSynchronizeChecklist * FChecklist;
TSynchronizeMode FMode;
int FParams;
UnicodeString FLocalDirectory;
UnicodeString FRemoteDirectory;
TWndMethod FOrigListViewWindowProc;
TWndMethod FOrigStatusBarWindowProc;
int FTotals[1 + TSynchronizeChecklist::ActionCount];
int FChecked[1 + TSynchronizeChecklist::ActionCount];
__int64 FCheckedSize[1 + TSynchronizeChecklist::ActionCount];
TListItem * FChangingItem;
bool FChangingItemChecked;
bool FChangingItemIgnore;
bool FChangingItemMass;
TCustomCommandMenuEvent FOnCustomCommandMenu;
TSynchronizeChecklistCalculateSize FOnSynchronizeChecklistCalculateSize;
TSynchronizeMoveEvent FOnSynchronizeMove;
TSynchronizeBrowseEvent FOnSynchronizeBrowse;
typedef std::map<const TSynchronizeChecklist::TItem *, TSynchronizeChecklist::TAction> TActions;
TActions FActions;
TFullSynchronizeEvent FOnSynchronize;
void * FToken;
bool FSynchronizing;
std::unique_ptr<Exception> FException;
std::map<const TSynchronizeChecklist::TItem *, TListItem *> FChecklistToListViewMap;
void __fastcall UpdateControls();
void __fastcall UpdateCaption();
virtual void __fastcall CreateParams(TCreateParams & Params);
void __fastcall LoadItem(TListItem * Item);
void __fastcall LoadList();
void __fastcall ListViewWindowProc(TMessage & Message);
void __fastcall StatusBarWindowProc(TMessage & Message);
int __fastcall PanelAt(int X);
void __fastcall CheckAll(bool Check);
void __fastcall Check(bool Check);
TListItem * __fastcall SelectAll(bool Select, int Action = 0,
bool OnlyTheAction = true);
void __fastcall UpdateStatusBarSize();
int __fastcall PanelCount();
inline const TSynchronizeChecklist::TItem * GetChecklistItem(TListItem * Item);
TSynchronizeChecklist::TAction & GetChecklistItemAction(
const TSynchronizeChecklist::TItem * ChecklistItem);
void __fastcall AddSubItem(TListItem * Item, int & Index, const UnicodeString & S);
TRect __fastcall GetColumnHeaderRect(int Index);
virtual void __fastcall Dispatch(void * Message);
void __fastcall UpdateImages();
void __fastcall CMDpiChanged(TMessage & Message);
bool __fastcall GetWindowParams(UnicodeString & WindowParams);
void __fastcall ProcessedItem(void * Token, const TSynchronizeChecklist::TItem * ChecklistItem);
void __fastcall UpdatedSynchronizationChecklistItems(const TSynchronizeChecklist::TItemList & Items);
void __fastcall CountItemSize(const TSynchronizeChecklist::TItem * ChecklistItem, int Factor);
void __fastcall CountItem(const TSynchronizeChecklist::TItem * ChecklistItem, int Factor);
void __fastcall CountItemTotal(const TSynchronizeChecklist::TItem * ChecklistItem, int Factor);
typedef std::pair<const TSynchronizeChecklist::TItem *, const TSynchronizeChecklist::TItem *> TSynchronizeMoveItems;
TSynchronizeMoveItems __fastcall GetMoveItems();
void __fastcall DeleteItem(TListItem * Item);
void __fastcall CheckDirectory(bool Check);
void __fastcall DoBrowse(TOperationSide Side);
void __fastcall ListViewHintShow(TCMHintShow & HintShow);
void __fastcall StatusBarHintShow(TCMHintShow & HintShow);
DYNAMIC void __fastcall KeyDown(Word & Key, TShiftState Shift);
};
//----------------------------------------------------------------------------
#endif