|
|
@@ -71,13 +71,14 @@ __fastcall TSynchronizeChecklistDialog::TSynchronizeChecklistDialog(
|
|
|
FChangingItem = NULL;
|
|
|
FChangingItemIgnore = false;
|
|
|
FChangingItemMass = false;
|
|
|
- FGeneralHint = StatusBar->Hint;
|
|
|
FSynchronizing = false;
|
|
|
|
|
|
SelectScaledImageList(ActionImages);
|
|
|
|
|
|
FOrigListViewWindowProc = ListView->WindowProc;
|
|
|
ListView->WindowProc = ListViewWindowProc;
|
|
|
+ FOrigStatusBarWindowProc = StatusBar->WindowProc;
|
|
|
+ StatusBar->WindowProc = StatusBarWindowProc;
|
|
|
|
|
|
UpdateImages();
|
|
|
|
|
|
@@ -89,6 +90,7 @@ __fastcall TSynchronizeChecklistDialog::TSynchronizeChecklistDialog(
|
|
|
//---------------------------------------------------------------------
|
|
|
__fastcall TSynchronizeChecklistDialog::~TSynchronizeChecklistDialog()
|
|
|
{
|
|
|
+ StatusBar->WindowProc = FOrigStatusBarWindowProc;
|
|
|
ListView->WindowProc = FOrigListViewWindowProc;
|
|
|
}
|
|
|
//---------------------------------------------------------------------
|
|
|
@@ -496,9 +498,105 @@ void __fastcall TSynchronizeChecklistDialog::ListViewWindowProc(TMessage & Messa
|
|
|
R.Left, ((R.Top + R.Bottom - ActionImages->Height) / 2), ILD_TRANSPARENT);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ FOrigListViewWindowProc(Message);
|
|
|
+ }
|
|
|
+ else if (Message.Msg == CM_HINTSHOW)
|
|
|
+ {
|
|
|
+ ListViewHintShow(reinterpret_cast<TCMHintShow &>(Message));
|
|
|
+ }
|
|
|
+ else if (Message.Msg == WM_WANTS_SCREEN_TIPS)
|
|
|
+ {
|
|
|
+ Message.Result = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ FOrigListViewWindowProc(Message);
|
|
|
+ }
|
|
|
+}
|
|
|
+//---------------------------------------------------------------------------
|
|
|
+void __fastcall TSynchronizeChecklistDialog::ListViewHintShow(TCMHintShow & HintShow)
|
|
|
+{
|
|
|
+ TLVHitTestInfo HitTest;
|
|
|
+ HitTest.pt = HintShow.HintInfo->CursorPos;
|
|
|
+ int Index = ListView_SubItemHitTest(ListView->Handle, &HitTest);
|
|
|
+ if ((Index >= 0) && (HitTest.iSubItem == ImageColumnIndex))
|
|
|
+ {
|
|
|
+ TListItem * Item = ListView->Items->Item[Index];
|
|
|
+ const TSynchronizeChecklist::TItem * ChecklistItem = GetChecklistItem(Item);
|
|
|
+ int ActionHint = 0;
|
|
|
+ switch (int(GetChecklistItemAction(ChecklistItem)))
|
|
|
+ {
|
|
|
+ case TSynchronizeChecklist::saUploadNew:
|
|
|
+ ActionHint = SYNCHRONIZE_CHECKLIST_UPLOAD_NEW;
|
|
|
+ break;
|
|
|
+ case TSynchronizeChecklist::saDownloadNew:
|
|
|
+ ActionHint = SYNCHRONIZE_CHECKLIST_DOWNLOAD_NEW;
|
|
|
+ break;
|
|
|
+ case TSynchronizeChecklist::saUploadUpdate:
|
|
|
+ ActionHint = SYNCHRONIZE_CHECKLIST_UPLOAD_UPDATE;
|
|
|
+ break;
|
|
|
+ case TSynchronizeChecklist::saDownloadUpdate:
|
|
|
+ ActionHint = SYNCHRONIZE_CHECKLIST_DOWNLOAD_UPDATE;
|
|
|
+ break;
|
|
|
+ case TSynchronizeChecklist::saDeleteRemote:
|
|
|
+ ActionHint = SYNCHRONIZE_CHECKLIST_DELETE_REMOTE;
|
|
|
+ break;
|
|
|
+ case TSynchronizeChecklist::saDeleteLocal:
|
|
|
+ ActionHint = SYNCHRONIZE_CHECKLIST_DELETE_LOCAL;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (DebugAlwaysTrue(ActionHint != 0))
|
|
|
+ {
|
|
|
+ HintShow.HintInfo->HintStr = FORMAT(L"%s|%s", (LoadStr(ActionHint), LoadStr(SYNCHRONIZE_CHECKLIST_REVERSE)));
|
|
|
+ ListView_GetSubItemRect(ListView->Handle, Index, ImageColumnIndex, LVIR_BOUNDS, &HintShow.HintInfo->CursorRect);
|
|
|
+ HintShow.Result = 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- FOrigListViewWindowProc(Message);
|
|
|
+ FOrigListViewWindowProc(reinterpret_cast<TMessage &>(HintShow));
|
|
|
+}
|
|
|
+//---------------------------------------------------------------------------
|
|
|
+void __fastcall TSynchronizeChecklistDialog::StatusBarHintShow(TCMHintShow & HintShow)
|
|
|
+{
|
|
|
+ int IPanel = PanelAt(HintShow.HintInfo->CursorPos.x);
|
|
|
+
|
|
|
+ if (IPanel >= 0)
|
|
|
+ {
|
|
|
+ TStatusPanel * Panel = StatusBar->Panels->Items[IPanel];
|
|
|
+ HintShow.HintInfo->HintStr = FORMAT(L"%s|%s", (Panel->Text, StatusBar->Hint));
|
|
|
+
|
|
|
+ HintShow.HintInfo->CursorRect.Left = 0;
|
|
|
+ while (IPanel > 0)
|
|
|
+ {
|
|
|
+ IPanel--;
|
|
|
+ HintShow.HintInfo->CursorRect.Left += StatusBar->Panels->Items[IPanel]->Width;
|
|
|
+ }
|
|
|
+
|
|
|
+ HintShow.HintInfo->CursorRect.Top = 0;
|
|
|
+ HintShow.HintInfo->CursorRect.Bottom = StatusBar->ClientHeight;
|
|
|
+ HintShow.HintInfo->CursorRect.Right = HintShow.HintInfo->CursorRect.Left + Panel->Width;
|
|
|
+
|
|
|
+ HintShow.Result = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ FOrigListViewWindowProc(reinterpret_cast<TMessage &>(HintShow));
|
|
|
+}
|
|
|
+//---------------------------------------------------------------------------
|
|
|
+void __fastcall TSynchronizeChecklistDialog::StatusBarWindowProc(TMessage & Message)
|
|
|
+{
|
|
|
+ if (Message.Msg == WM_WANTS_SCREEN_TIPS)
|
|
|
+ {
|
|
|
+ Message.Result = 1;
|
|
|
+ }
|
|
|
+ else if (Message.Msg == CM_HINTSHOW)
|
|
|
+ {
|
|
|
+ StatusBarHintShow(reinterpret_cast<TCMHintShow &>(Message));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ FOrigStatusBarWindowProc(Message);
|
|
|
+ }
|
|
|
}
|
|
|
//---------------------------------------------------------------------------
|
|
|
void __fastcall TSynchronizeChecklistDialog::ListViewAdvancedCustomDrawSubItem(
|
|
|
@@ -615,28 +713,6 @@ int __fastcall TSynchronizeChecklistDialog::PanelAt(int X)
|
|
|
return ((Result < StatusBar->Panels->Count - 1) ? Result : -1);
|
|
|
}
|
|
|
//---------------------------------------------------------------------------
|
|
|
-void __fastcall TSynchronizeChecklistDialog::StatusBarMouseMove(
|
|
|
- TObject * /*Sender*/, TShiftState /*Shift*/, int X, int /*Y*/)
|
|
|
-{
|
|
|
- UnicodeString Hint;
|
|
|
- int IPanel = PanelAt(X);
|
|
|
-
|
|
|
- if (IPanel >= 0)
|
|
|
- {
|
|
|
- Hint = StatusBar->Panels->Items[IPanel]->Text;
|
|
|
- if (IPanel > 0)
|
|
|
- {
|
|
|
- Hint = FORMAT(L"%s\n%s", (Hint, FGeneralHint));
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (Hint != StatusBar->Hint)
|
|
|
- {
|
|
|
- Application->CancelHint();
|
|
|
- StatusBar->Hint = Hint;
|
|
|
- }
|
|
|
-}
|
|
|
-//---------------------------------------------------------------------------
|
|
|
void __fastcall TSynchronizeChecklistDialog::ListViewChange(
|
|
|
TObject * /*Sender*/, TListItem * Item, TItemChange Change)
|
|
|
{
|