Ver Fonte

Added option to show ditto in the taskbar and options to turn it on/off through right click menu and options - quick paste

git-svn-id: svn://svn.code.sf.net/p/ditto-cp/code/trunk@699 595ec19a-5cb4-439b-94a8-42fb3063c22c
sabrogden há 12 anos atrás
pai
commit
e91ac6cf62
15 ficheiros alterados com 130 adições e 47 exclusões
  1. 1 0
      ActionEnums.h
  2. 8 0
      CP_Main.cpp
  3. 2 0
      CP_Main.h
  4. 25 25
      CP_Main.rc
  5. 13 1
      MainFrm.cpp
  6. 1 0
      MainFrm.h
  7. 10 0
      Options.cpp
  8. 3 0
      Options.h
  9. 9 0
      OptionsQuickPaste.cpp
  10. 1 0
      OptionsQuickPaste.h
  11. 29 4
      QPasteWnd.cpp
  12. 3 0
      QPasteWnd.h
  13. 19 9
      QuickPaste.cpp
  14. 1 0
      QuickPaste.h
  15. 5 8
      Resource.h

+ 1 - 0
ActionEnums.h

@@ -34,6 +34,7 @@ public:
 		PASTE_SELECTED_PLAIN_TEXT,
 		MOVE_CLIP_TO_GROUP,
 		ELEVATE_PRIVlEGES,
+		SHOW_IN_TASKBAR,
 	};
 };
 

+ 8 - 0
CP_Main.cpp

@@ -1068,4 +1068,12 @@ bool CCP_MainApp::UACThreadRunning()
 	}
 
 	return false;
+}
+
+void CCP_MainApp::RefreshShowInTaskBar()
+{
+	if(m_pMainFrame != NULL)
+	{
+		m_pMainFrame->RefreshShowInTaskBar();
+	}
 }

+ 2 - 0
CP_Main.h

@@ -178,6 +178,8 @@ public:
 	bool UACCut();
 	bool UACThreadRunning();
 
+	void RefreshShowInTaskBar();
+
 public:
 	virtual BOOL InitInstance();
 	virtual int ExitInstance();

+ 25 - 25
CP_Main.rc

@@ -255,6 +255,7 @@ BEGIN
             MENUITEM "Show Clips That are in Groups in Main List", 32850,MFT_STRING,MFS_ENABLED
             MENUITEM "Prompt to Delete Clip",       32852,MFT_STRING,MFS_ENABLED
             MENUITEM "Elevated privileges to paste into elevated apps", ID_QUICKOPTIONS_ELEVATEPREVILEGESTOPASTEINTOELEVATEDAPPS,MFT_STRING,MFS_ENABLED
+            MENUITEM "Show In Taskbar",             ID_QUICKOPTIONS_SHOWINTASKBAR,MFT_STRING,MFS_ENABLED
         END
         POPUP "Send To",                        65535,MFT_STRING,MFS_ENABLED
         BEGIN
@@ -396,49 +397,48 @@ BEGIN
     PUSHBUTTON      "&Delete",IDC_DELETE,147,30,50,14
 END
 
-IDD_OPTIONS_QUICK_PASTE DIALOGEX 0, 0, 360, 250
+IDD_OPTIONS_QUICK_PASTE DIALOGEX 0, 0, 367, 258
 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Quick Paste"
 FONT 8, "MS Shell Dlg", 0, 0, 0x1
 BEGIN
     CONTROL         "Use Ctrl - Num for first ten copy hot keys",IDC_CTRL_CLICK,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,8,335,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,8,335,10
     CONTROL         "Show text for first ten copy hot keys",IDC_SHOW_TEXT_FOR_FIRST_TEN_HOT_KEYS,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,19,335,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,19,335,10
     CONTROL         "Show leading whitespace",IDC_DESC_SHOW_LEADING_WHITESPACE,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,30,335,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,30,335,10
     LTEXT           "Text Lines per Clip",IDC_STATIC_LINES,18,43,93,8
     EDITTEXT        IDC_LINES_ROW,114,41,19,12,ES_AUTOHSCROLL
     CONTROL         "Enable Quick Paste Transparency",IDC_TRANSPARENCY,
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,56,155,10
     EDITTEXT        IDC_TRANS_PERC,177,55,19,12,ES_AUTOHSCROLL
     CONTROL         "Show thumbnails (for CF_DIB types) (Could Increase Memory Usage and Display Speed)",IDC_SHOW_THUMBNAILS,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,68,335,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,68,335,10
     CONTROL         "Draw RTF Text in List (for RTF types) (Could Increase Memory Usage an Display Speed)",IDC_DRAW_RTF,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,78,335,10
-    CONTROL         "Find As You Type",IDC_CHECK_FIND_AS_YOU_TYPE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,88,335,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,78,335,10
+    CONTROL         "Find As You Type",IDC_CHECK_FIND_AS_YOU_TYPE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,88,335,10
     CONTROL         "Ensure Entire Window is Visible",IDC_CHECK_ENTIRE_WINDOW_IS_VISIBLE,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,98,335,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,98,335,10
     CONTROL         "Show Clips That are in Groups in Main List",IDC_CHECK_SHOW_ALL_IN_MAIN_LIST,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,108,335,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,108,335,10
     CONTROL         "Prompt when deleting clips",IDC_CHECK_PROMPT_DELETE_CLIP,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,118,335,10
-    COMBOBOX        IDC_COMBO_THEME,59,152,130,95,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "About Theme",IDC_BUTTON_THEME,198,152,106,12
-    PUSHBUTTON      "Font",IDC_BUTTON_FONT,18,170,143,17
-    PUSHBUTTON      "Default Font",IDC_BUTTON_DEFAULT_FAULT,164,173,70,12
-    CONTROL         "At Caret",IDC_AT_CARET,"Button",BS_AUTORADIOBUTTON,22,205,93,10
-    CONTROL         "At Cursor",IDC_AT_CURSOR,"Button",BS_AUTORADIOBUTTON,22,215,97,10
-    CONTROL         "At Previous Position",IDC_AT_PREVIOUS,"Button",BS_AUTORADIOBUTTON,22,225,117,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,118,335,10
+    COMBOBOX        IDC_COMBO_THEME,59,161,130,95,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "About Theme",IDC_BUTTON_THEME,198,161,106,12
+    PUSHBUTTON      "Font",IDC_BUTTON_FONT,18,179,143,17
+    PUSHBUTTON      "Default Font",IDC_BUTTON_DEFAULT_FAULT,164,182,70,12
+    CONTROL         "At Caret",IDC_AT_CARET,"Button",BS_AUTORADIOBUTTON,22,214,93,10
+    CONTROL         "At Cursor",IDC_AT_CURSOR,"Button",BS_AUTORADIOBUTTON,22,224,97,10
+    CONTROL         "At Previous Position",IDC_AT_PREVIOUS,"Button",BS_AUTORADIOBUTTON,22,234,117,10
     LTEXT           "%",IDC_STATIC,199,55,8,12,SS_CENTERIMAGE
-    GROUPBOX        "Popup Positioning",IDC_STATIC_POPUP,10,196,138,41
-    LTEXT           "  * = Don't Auto Delete\n  s = Shortcut exists\n G = Item is a Group\n  ! = Item is attached to a Group",IDC_STATIC_LEG,158,206,154,36
-    GROUPBOX        "List Item Prefix Legend",IDC_STATIC_LEGEND,153,196,165,50
-    LTEXT           "Theme",IDC_STATIC_THEME,18,152,36,12,SS_CENTERIMAGE
+    GROUPBOX        "Popup Positioning",IDC_STATIC_POPUP,10,205,138,41
+    LTEXT           "Theme",IDC_STATIC_THEME,18,161,36,12,SS_CENTERIMAGE
     CONTROL         "Always Show Scroll Bar",IDC_CHECK_SHOW_SCROLL_BAR,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,128,335,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,128,335,10
     CONTROL         "Elevated privileges to paste into elevated apps",IDC_CHECK_ELEVATE_PRIVILEGES,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,139,335,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,139,335,10
+    CONTROL         "Show In Taskbar",IDC_CHECK_SHOW_IN_TASKBAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,150,335,10
 END
 
 IDD_OPTIONS_KEYSTROKES DIALOGEX 0, 0, 350, 206
@@ -837,9 +837,9 @@ BEGIN
     IDD_OPTIONS_QUICK_PASTE, DIALOG
     BEGIN
         LEFTMARGIN, 7
-        RIGHTMARGIN, 353
+        RIGHTMARGIN, 360
         TOPMARGIN, 7
-        BOTTOMMARGIN, 242
+        BOTTOMMARGIN, 250
     END
 
     IDD_OPTIONS_KEYSTROKES, DIALOG

+ 13 - 1
MainFrm.cpp

@@ -225,7 +225,7 @@ LRESULT CMainFrame::OnHotKey(WPARAM wParam, LPARAM lParam)
             m_quickPaste.MoveSelection(true);
             m_bMovedSelectionMoveKeyState = true;
         }
-        else if(g_Opt.m_HideDittoOnHotKeyIfAlreadyShown && m_quickPaste.IsWindowVisibleEx() && g_Opt.GetShowPersistent() == FALSE)
+        else if(g_Opt.m_HideDittoOnHotKeyIfAlreadyShown && m_quickPaste.IsWindowTopLevel() && g_Opt.GetShowPersistent() == FALSE)
         {
             Log(_T("On Show Ditto HotKey, window is alread visible, hiding window"));
             m_quickPaste.HideQPasteWnd();
@@ -972,4 +972,16 @@ LRESULT CMainFrame::OnGlobalClipsClosed(WPARAM wParam, LPARAM lParam)
 	m_pGlobalClips = NULL;
 
 	return 0;
+}
+
+void CMainFrame::RefreshShowInTaskBar()
+{
+	BOOL windowVisible = m_quickPaste.IsWindowVisibleEx();
+
+	m_quickPaste.CloseQPasteWnd();
+
+	if (windowVisible)
+	{
+		m_quickPaste.ShowQPasteWnd(this, true, false, true);
+	}
 }

+ 1 - 0
MainFrm.h

@@ -71,6 +71,7 @@ public:
     void ShowErrorMessage(CString csTitle, CString csMessage);
     bool CloseAllOpenDialogs();
 	void DoTextOnlyPaste();
+	void RefreshShowInTaskBar();
 
     void ShowEditWnd(CClipIDs &Ids);
     CEditFrameWnd *m_pEditFrameWnd;

+ 10 - 0
Options.cpp

@@ -2132,4 +2132,14 @@ void CGetSetOptions::SetDescWndSize(CSize size)
 {
 	SetProfileLong("DescWndCX", size.cx);
 	SetProfileLong("DescWndCY", size.cy);
+}
+
+void CGetSetOptions::SetShowInTaskBar(BOOL val)
+{
+	SetProfileLong(_T("ShowInTaskBar"), val);
+}
+
+BOOL CGetSetOptions::GetShowInTaskBar()
+{
+	return GetProfileLong(_T("ShowInTaskBar"), FALSE);
 }

+ 3 - 0
Options.h

@@ -454,6 +454,9 @@ public:
 
 	static void		SetDescWndSize(CSize size);
 	static void		GetDescWndSize(CSize &size);
+
+	static void		SetShowInTaskBar(BOOL val);
+	static BOOL		GetShowInTaskBar();
 };
 
 // global for easy access and for initialization of fast access variables

+ 9 - 0
OptionsQuickPaste.cpp

@@ -59,6 +59,7 @@ void COptionsQuickPaste::DoDataExchange(CDataExchange* pDX)
 	DDX_Control(pDX, IDC_COMBO_THEME, m_cbTheme);
 	DDX_Control(pDX, IDC_CHECK_SHOW_SCROLL_BAR, m_alwaysShowScrollBar);
 	DDX_Control(pDX, IDC_CHECK_ELEVATE_PRIVILEGES, m_elevatedPrivileges);
+	DDX_Control(pDX, IDC_CHECK_SHOW_IN_TASKBAR, m_showInTaskBar);
 }
 
 
@@ -103,6 +104,7 @@ BOOL COptionsQuickPaste::OnInitDialog()
 	m_btShowText.SetCheck(CGetSetOptions::GetShowTextForFirstTenHotKeys());
 	m_PromptForDelete.SetCheck(CGetSetOptions::GetPromptWhenDeletingClips());
 	m_elevatedPrivileges.SetCheck(CGetSetOptions::GetPasteAsAdmin());
+	m_showInTaskBar.SetCheck(CGetSetOptions::GetShowInTaskBar());
 
 	if(CGetSetOptions::GetFont(m_LogFont))
 	{		
@@ -150,6 +152,13 @@ BOOL COptionsQuickPaste::OnApply()
 	CGetSetOptions::SetFindAsYouType(m_FindAsYouType.GetCheck());
 	CGetSetOptions::SetPromptWhenDeletingClips(m_PromptForDelete.GetCheck());
 	CGetSetOptions::SetPasteAsAdmin(m_elevatedPrivileges.GetCheck());
+
+	BOOL prevValue = CGetSetOptions::GetShowInTaskBar();
+	CGetSetOptions::SetShowInTaskBar(m_showInTaskBar.GetCheck());
+	if(CGetSetOptions::GetShowInTaskBar() != prevValue)
+	{
+		theApp.RefreshShowInTaskBar();
+	}
 	
 	if(m_LogFont.lfWeight != 0)
 	{

+ 1 - 0
OptionsQuickPaste.h

@@ -72,6 +72,7 @@ protected:
 public:
 	CButton m_PromptForDelete;
 	CButton m_elevatedPrivileges;
+	CButton m_showInTaskBar;
 	CComboBox m_cbTheme;
 	afx_msg void OnBnClickedButtonTheme();
 	CButton m_alwaysShowScrollBar;

+ 29 - 4
QPasteWnd.cpp

@@ -206,6 +206,7 @@ ON_COMMAND(ID_MENU_CONTAINSTEXTSEARCHONLY, OnMenuSimpleTextSearch)
 //ON_WM_CTLCOLOR()
 //ON_WM_ERASEBKGND()
 //ON_WM_PAINT()
+ON_COMMAND(ID_QUICKOPTIONS_SHOWINTASKBAR, &CQPasteWnd::OnQuickoptionsShowintaskbar)
 END_MESSAGE_MAP()
 
 
@@ -528,7 +529,10 @@ BOOL CQPasteWnd::HideQPasteWindow(bool releaseFocus)
     //Save the size
     SaveWindowSize();
 
-    ShowWindow(SW_HIDE);
+	if (CGetSetOptions::GetShowInTaskBar() == FALSE)
+	{
+		ShowWindow(SW_HIDE);
+	}
 
     //Reset the selection in the search combo
     m_bHandleSearchTextChange = false;
@@ -650,7 +654,7 @@ BOOL CQPasteWnd::OpenID(int id, bool bOnlyLoad_CF_TEXT, CClipFormats *pPasteForm
 
     if(pPasteFormats == NULL)
     {
-        if(theApp.EnterGroupID(id))
+        if(theApp.EnterGroupID(id, FALSE, FALSE))
         {
             Log(_T("Entered group"));
             return TRUE;
@@ -1439,6 +1443,11 @@ void CQPasteWnd::SetMenuChecks(CMenu *pMenu)
 	{
 		pMenu->CheckMenuItem(ID_QUICKOPTIONS_ELEVATEPREVILEGESTOPASTEINTOELEVATEDAPPS, MF_CHECKED);
 	}
+
+	if(g_Opt.GetShowInTaskBar())
+	{
+		pMenu->CheckMenuItem(ID_QUICKOPTIONS_SHOWINTASKBAR, MF_CHECKED);
+	}
 }
 
 void CQPasteWnd::SetSendToMenu(CMenu *pMenu, int nMenuID, int nArrayPos)
@@ -2674,7 +2683,8 @@ bool CQPasteWnd::DoAction(DWORD actionId)
 		break;
 	case ActionEnums::ELEVATE_PRIVlEGES:
 		ret = DoActionElevatePrivleges();
-
+	case ActionEnums::SHOW_IN_TASKBAR:
+		ret = DoShowInTaskBar();
 	}
 
 	return ret;
@@ -3162,6 +3172,16 @@ bool CQPasteWnd::DoActionElevatePrivleges()
 
 	return true;
 }
+
+bool CQPasteWnd::DoShowInTaskBar()
+{
+	g_Opt.SetShowInTaskBar(!g_Opt.GetShowInTaskBar());
+
+	theApp.RefreshShowInTaskBar();
+
+	return true;
+}
+
 LRESULT CQPasteWnd::OnCancelFilter(WPARAM wParam, LPARAM lParam)
 {
 	this->DoAction(ActionEnums::CANCELFILTER);
@@ -4242,4 +4262,9 @@ LRESULT CQPasteWnd::OnShowHideScrollBar(WPARAM wParam, LPARAM lParam)
 //	// TODO: Add your message handler code here and/or call default
 //
 //	//return CWndEx::OnEraseBkgnd(pDC);
-//}
+//}
+
+void CQPasteWnd::OnQuickoptionsShowintaskbar()
+{
+	DoAction(ActionEnums::SHOW_IN_TASKBAR);
+}

+ 3 - 0
QPasteWnd.h

@@ -235,6 +235,7 @@ public:
 	bool DoActionPasteSelectedPlainText();
 	bool DoActionMoveClipToGroup();
 	bool DoActionElevatePrivleges();
+	bool DoShowInTaskBar();
 
     // Generated message map functions
 protected:
@@ -374,4 +375,6 @@ protected:
 	afx_msg void OnElevateAppToPasteIntoElevatedApp();
 	afx_msg void OnMoveClipUp();
 	
+public:
+	afx_msg void OnQuickoptionsShowintaskbar();
 };

+ 19 - 9
QuickPaste.cpp

@@ -54,13 +54,7 @@ void CQuickPaste::Create(CWnd *pParent)
 BOOL CQuickPaste::CloseQPasteWnd()
 {
 	if(m_pwndPaste)
-	{
-		if(m_pwndPaste->IsWindowVisible())
-		{
-			Log(_T("CloseQPasteWnd called but the window is visible"));
-			return FALSE;
-		}
-		
+	{		
 		if(m_pwndPaste)
 			m_pwndPaste->CloseWindow();
 
@@ -175,8 +169,14 @@ void CQuickPaste::ShowQPasteWnd(CWnd *pParent, bool bAtPrevPos, bool bFromKeyboa
 	
 	if( !IsWindow(m_pwndPaste->m_hWnd) )
 	{
-		// Create the window   
-		VERIFY( m_pwndPaste->Create(point, pParent) );
+		CWnd *pLocalParent = pParent;
+
+		if(CGetSetOptions::GetShowInTaskBar())
+		{
+			pLocalParent = NULL;
+		}
+
+		VERIFY( m_pwndPaste->Create(point, pLocalParent) );
 	}
 
 	CRect crRect = CRect(point, csSize);
@@ -251,4 +251,14 @@ BOOL CQuickPaste::IsWindowVisibleEx()
 		return IsWindowVisible(m_pwndPaste->m_hWnd);
 
 	return FALSE;
+}
+
+bool CQuickPaste::IsWindowTopLevel()
+{
+	if(m_pwndPaste)
+	{
+		return ::GetForegroundWindow() == m_pwndPaste->GetSafeHwnd();
+	}
+
+	return false;
 }

+ 1 - 0
QuickPaste.h

@@ -25,6 +25,7 @@ public:
 	void MoveSelection(bool down);
 	void OnKeyStateUp();
 	void SetKeyModiferState(bool bActive);
+	bool IsWindowTopLevel();
 
 	void UpdateFont()		{ if(m_pwndPaste) m_pwndPaste->UpdateFont();	}
 

+ 5 - 8
Resource.h

@@ -87,7 +87,6 @@
 #define IDB_MAXIMIZE_12_12              220
 #define IDB_PNG7                        221
 #define IDB_MAXIMIZE_16_16              221
-#define IDR_DESC_OPTIONS_MENU           238
 #define IDB_YELLOW_STAR_32_32           222
 #define IDB_YELLOW_STAR_24_24           223
 #define IDB_YELLOW_STAR_20_20           224
@@ -105,7 +104,7 @@
 #define IDB_STICKY_20_20                236
 #define IDB_PNG8                        237
 #define IDB_STICKY_16_16                237
-
+#define IDR_DESC_OPTIONS_MENU           238
 #define IDC_PATH                        1000
 #define IDC_GET_PATH                    1001
 #define IDC_SELECT_SOUND                1002
@@ -249,6 +248,8 @@
 #define IDC_CHECK_ELEVATE_PRIVILEGES    2041
 #define IDC_CHECK_WIN1                  2042
 #define IDC_STATIC_TITLE                2042
+#define IDC_CHECK_ELEVATE_PRIVILEGES2   2042
+#define IDC_CHECK_SHOW_IN_TASKBAR       2042
 #define IDC_CHECK_WIN2                  2043
 #define IDC_STATIC_DAYS                 2043
 #define IDC_STATIC_DATE2                2043
@@ -440,19 +441,15 @@
 #define ID_FIRST_REMEMBERWINDOWPOSITION 32882
 #define ID_FIRST_SIZEWINDOWTOCONTENT    32883
 #define ID_FIRST_SCALEIMAGESTOFITWINDOW 32884
+#define ID_QUICKOPTIONS_SHOWINTASKBAR   32885
 
 // Next default values for new objects
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_3D_CONTROLS                     1
-<<<<<<< .mine
-#define _APS_NEXT_RESOURCE_VALUE        223
-#define _APS_NEXT_COMMAND_VALUE         32885
-=======
 #define _APS_NEXT_RESOURCE_VALUE        239
-#define _APS_NEXT_COMMAND_VALUE         32882
->>>>>>> .r690
+#define _APS_NEXT_COMMAND_VALUE         32886
 #define _APS_NEXT_CONTROL_VALUE         2101
 #define _APS_NEXT_SYMED_VALUE           101
 #endif