Browse Source

Added the ability to assign shortcut keys to stop/last/remove sticky

ScottBrogden 9 years ago
parent
commit
9aa7ec938f
4 changed files with 201 additions and 123 deletions
  1. 6 0
      ActionEnums.cpp
  2. 3 0
      ActionEnums.h
  3. 185 122
      QPasteWnd.cpp
  4. 7 1
      QPasteWnd.h

+ 6 - 0
ActionEnums.cpp

@@ -171,6 +171,12 @@ CString ActionEnums::EnumDescription(ActionEnumValues value)
 		return "Option - Show indicator a clip has been pasted";
 	case TOGGLE_LAST_GROUP_TOGGLE:
 		return "Toggle Last Group Toggle";
+	case MAKE_TOP_STICKY:
+		return "Make Top Sticky Clip";
+	case MAKE_LAST_STICKY:
+		return "Make Last Sticky Clip";
+	case REMOVE_STICKY:
+		return "Remove Sticky Setting";
 	}
 
 	return "";

+ 3 - 0
ActionEnums.h

@@ -85,6 +85,9 @@ public:
 		CONFIG_SHOW_FIRST_TEN_TEXT,
 		CONFIG_SHOW_CLIP_WAS_PASTED,
 		TOGGLE_LAST_GROUP_TOGGLE,
+		MAKE_TOP_STICKY,
+		MAKE_LAST_STICKY,
+		REMOVE_STICKY,
 
 		LAST_ACTION
 	};

+ 185 - 122
QPasteWnd.cpp

@@ -157,7 +157,7 @@ ON_UPDATE_COMMAND_UI(ID_MENU_PROPERTIES, OnUpdateMenuProperties)
 ON_COMMAND(ID_QUICKOPTIONS_PROMPTTODELETECLIP, OnPromptToDeleteClip)
 ON_COMMAND(ID_STICKYCLIPS_MAKETOPSTICKYCLIP, OnMakeTopStickyClip)
 ON_COMMAND(ID_STICKYCLIPS_MAKELASTSTICKYCLIP, OnMakeLastStickyClip)
-ON_COMMAND(ID_STICKYCLIPS_REMOVESTICKYSETTING, OnRemoveStickySetting)
+ON_COMMAND(ID_STICKYCLIPS_REMOVESTICKYSETTING, OnRemoveSticky)
 ON_COMMAND(ID_QUICKOPTIONS_ELEVATEPREVILEGESTOPASTEINTOELEVATEDAPPS, OnElevateAppToPasteIntoElevatedApp)
 
 ON_WM_DESTROY()
@@ -270,6 +270,9 @@ ON_COMMAND(ID_QUICKOPTIONS_SHOWINDICATORACLIPHASBEENPASTED, &CQPasteWnd::OnQuick
 ON_UPDATE_COMMAND_UI(ID_QUICKOPTIONS_SHOWINDICATORACLIPHASBEENPASTED, &CQPasteWnd::OnUpdateQuickoptionsShowindicatoracliphasbeenpasted)
 ON_COMMAND(ID_GROUPS_TOGGLELASTGROUP, &CQPasteWnd::OnGroupsTogglelastgroup)
 ON_UPDATE_COMMAND_UI(ID_GROUPS_TOGGLELASTGROUP, &CQPasteWnd::OnUpdateGroupsTogglelastgroup)
+ON_UPDATE_COMMAND_UI(ID_STICKYCLIPS_MAKETOPSTICKYCLIP, &CQPasteWnd::OnUpdateStickyclipsMaketopstickyclip)
+ON_UPDATE_COMMAND_UI(ID_STICKYCLIPS_MAKELASTSTICKYCLIP, &CQPasteWnd::OnUpdateStickyclipsMakelaststickyclip)
+ON_UPDATE_COMMAND_UI(ID_STICKYCLIPS_REMOVESTICKYSETTING, &CQPasteWnd::OnUpdateStickyclipsRemovestickysetting)
 END_MESSAGE_MAP()
 
 
@@ -2147,141 +2150,47 @@ void CQPasteWnd::OnPromptToDeleteClip()
 
 void CQPasteWnd::OnMakeTopStickyClip()
 {
-	ARRAY IDs;
-	m_lstHeader.GetSelectionItemData(IDs);
-
-	if (IDs.GetCount() > 0)
-	{
-		bool sort = false;
-		for (int i = IDs.GetCount() - 1; i >= 0; i--)
-		{
-			int id = IDs[i];
-			CClip clip;
-			if (clip.LoadMainTable(id))
-			{
-				clip.MakeStickyTop(theApp.m_GroupID);
-				clip.ModifyMainTable();
-
-				sort = SyncClipDataToArrayData(clip);
-			}
-		}
-		
-		if(sort)
-		{
-			if (theApp.m_GroupID > 0)
-			{
-				std::sort(m_listItems.begin(), m_listItems.end(), CMainTable::GroupSortDesc);
-			}
-			else
-			{
-				std::sort(m_listItems.begin(), m_listItems.end(), CMainTable::SortDesc);
-			}
-
-			SelectIds(IDs);
-
-			m_lstHeader.RefreshVisibleRows();
-			m_lstHeader.RedrawWindow();
-		}
-	}
+	this->DoAction(ActionEnums::MAKE_TOP_STICKY);
 }
 
 void CQPasteWnd::OnMakeLastStickyClip()
 {
-	ARRAY IDs;
-	m_lstHeader.GetSelectionItemData(IDs);
-
-	if (IDs.GetCount() > 0)
-	{
-		bool sort = false;
-		for (int i = IDs.GetCount() - 1; i >= 0; i--)
-		{
-			int id = IDs[i];
-			CClip clip;
-			if (clip.LoadMainTable(id))
-			{
-				clip.MakeStickyLast(theApp.m_GroupID);
-				clip.ModifyMainTable();
-
-				sort = SyncClipDataToArrayData(clip);
-			}
-		}
-		
-		if (sort)
-		{
-			if (theApp.m_GroupID > 0)
-			{
-				std::sort(m_listItems.begin(), m_listItems.end(), CMainTable::GroupSortDesc);
-			}
-			else
-			{
-				std::sort(m_listItems.begin(), m_listItems.end(), CMainTable::SortDesc);
-			}
-
-			SelectIds(IDs);
-
-			m_lstHeader.RefreshVisibleRows();
-			m_lstHeader.RedrawWindow();
-		}
-	}
+	this->DoAction(ActionEnums::MAKE_LAST_STICKY);
 }
 
-void CQPasteWnd::OnRemoveStickySetting()
+void CQPasteWnd::OnRemoveSticky()
 {
-	ARRAY IDs;
-	m_lstHeader.GetSelectionItemData(IDs);
+	this->DoAction(ActionEnums::REMOVE_STICKY);
+}
 
-	if (IDs.GetCount() > 0)
+void CQPasteWnd::OnUpdateStickyclipsMaketopstickyclip(CCmdUI *pCmdUI)
+{
+	if (!pCmdUI->m_pMenu)
 	{
-		bool sort = false;
-		for (int i = IDs.GetCount() - 1; i >= 0; i--)
-		{
-			int id = IDs[i];
-			CClip clip;
-			if (clip.LoadMainTable(id))
-			{
-				clip.RemoveStickySetting(theApp.m_GroupID);
-				clip.ModifyMainTable();
-
-				std::vector<CMainTable>::iterator iter = m_listItems.begin();
-				while (iter != m_listItems.end())
-				{
-					if (iter->m_lID == id)
-					{
-						if (theApp.m_GroupID > 0)
-						{
-							iter->m_stickyClipGroupOrder = clip.m_stickyClipGroupOrder;
-						}
-						else
-						{
-							iter->m_stickyClipOrder = clip.m_stickyClipOrder;
-						}
-						sort = true;
-						break;
-					}
-					iter++;
-				}
-			}
-		}
+		return;
+	}
 
-		//theApp.m_FocusID = id;
+	UpdateMenuShortCut(pCmdUI, ActionEnums::MAKE_TOP_STICKY);
+}
 
-		if (sort)
-		{
-			if (theApp.m_GroupID > 0)
-			{
-				std::sort(m_listItems.begin(), m_listItems.end(), CMainTable::GroupSortDesc);
-			}
-			else
-			{
-				std::sort(m_listItems.begin(), m_listItems.end(), CMainTable::SortDesc);
-			}
+void CQPasteWnd::OnUpdateStickyclipsMakelaststickyclip(CCmdUI *pCmdUI)
+{
+	if (!pCmdUI->m_pMenu)
+	{
+		return;
+	}
 
-			//SelectFocusID();
+	UpdateMenuShortCut(pCmdUI, ActionEnums::MAKE_LAST_STICKY);
+}
 
-			m_lstHeader.RefreshVisibleRows();
-			m_lstHeader.RedrawWindow();
-		}
+void CQPasteWnd::OnUpdateStickyclipsRemovestickysetting(CCmdUI *pCmdUI)
+{
+	if (!pCmdUI->m_pMenu)
+	{
+		return;
 	}
+
+	UpdateMenuShortCut(pCmdUI, ActionEnums::REMOVE_STICKY);
 }
 
 void CQPasteWnd::OnElevateAppToPasteIntoElevatedApp()
@@ -2950,6 +2859,15 @@ bool CQPasteWnd::DoAction(DWORD actionId)
 	case ActionEnums::TOGGLE_LAST_GROUP_TOGGLE:
 		ret = OnToggleLastGroupToggle();
 		break;
+	case ActionEnums::MAKE_TOP_STICKY:
+		ret = OnMakeTopSticky();
+		break;
+	case ActionEnums::MAKE_LAST_STICKY:
+		ret = OnMakeLastSticky();
+		break;
+	case ActionEnums::REMOVE_STICKY:
+		ret = OnRemoveStickySetting();
+		break;
 	}
 
 	return ret;
@@ -4092,6 +4010,151 @@ bool CQPasteWnd::OnToggleLastGroupToggle()
 	return true;
 }
 
+bool CQPasteWnd::OnMakeTopSticky()
+{
+	ARRAY IDs;
+	m_lstHeader.GetSelectionItemData(IDs);
+
+	if (IDs.GetCount() > 0)
+	{
+		bool sort = false;
+		for (int i = IDs.GetCount() - 1; i >= 0; i--)
+		{
+			int id = IDs[i];
+			CClip clip;
+			if (clip.LoadMainTable(id))
+			{
+				clip.MakeStickyTop(theApp.m_GroupID);
+				clip.ModifyMainTable();
+
+				sort = SyncClipDataToArrayData(clip);
+			}
+		}
+
+		if (sort)
+		{
+			if (theApp.m_GroupID > 0)
+			{
+				std::sort(m_listItems.begin(), m_listItems.end(), CMainTable::GroupSortDesc);
+			}
+			else
+			{
+				std::sort(m_listItems.begin(), m_listItems.end(), CMainTable::SortDesc);
+			}
+
+			SelectIds(IDs);
+
+			m_lstHeader.RefreshVisibleRows();
+			m_lstHeader.RedrawWindow();
+		}
+	}
+
+	return true;
+}
+
+bool CQPasteWnd::OnMakeLastSticky()
+{
+	ARRAY IDs;
+	m_lstHeader.GetSelectionItemData(IDs);
+
+	if (IDs.GetCount() > 0)
+	{
+		bool sort = false;
+		for (int i = IDs.GetCount() - 1; i >= 0; i--)
+		{
+			int id = IDs[i];
+			CClip clip;
+			if (clip.LoadMainTable(id))
+			{
+				clip.MakeStickyLast(theApp.m_GroupID);
+				clip.ModifyMainTable();
+
+				sort = SyncClipDataToArrayData(clip);
+			}
+		}
+
+		if (sort)
+		{
+			if (theApp.m_GroupID > 0)
+			{
+				std::sort(m_listItems.begin(), m_listItems.end(), CMainTable::GroupSortDesc);
+			}
+			else
+			{
+				std::sort(m_listItems.begin(), m_listItems.end(), CMainTable::SortDesc);
+			}
+
+			SelectIds(IDs);
+
+			m_lstHeader.RefreshVisibleRows();
+			m_lstHeader.RedrawWindow();
+		}
+	}
+
+	return true;
+}
+
+bool CQPasteWnd::OnRemoveStickySetting()
+{
+	ARRAY IDs;
+	m_lstHeader.GetSelectionItemData(IDs);
+
+	if (IDs.GetCount() > 0)
+	{
+		bool sort = false;
+		for (int i = IDs.GetCount() - 1; i >= 0; i--)
+		{
+			int id = IDs[i];
+			CClip clip;
+			if (clip.LoadMainTable(id))
+			{
+				clip.RemoveStickySetting(theApp.m_GroupID);
+				clip.ModifyMainTable();
+
+				std::vector<CMainTable>::iterator iter = m_listItems.begin();
+				while (iter != m_listItems.end())
+				{
+					if (iter->m_lID == id)
+					{
+						if (theApp.m_GroupID > 0)
+						{
+							iter->m_stickyClipGroupOrder = clip.m_stickyClipGroupOrder;
+						}
+						else
+						{
+							iter->m_stickyClipOrder = clip.m_stickyClipOrder;
+						}
+						sort = true;
+						break;
+					}
+					iter++;
+				}
+			}
+		}
+
+		//theApp.m_FocusID = id;
+
+		if (sort)
+		{
+			if (theApp.m_GroupID > 0)
+			{
+				std::sort(m_listItems.begin(), m_listItems.end(), CMainTable::GroupSortDesc);
+			}
+			else
+			{
+				std::sort(m_listItems.begin(), m_listItems.end(), CMainTable::SortDesc);
+			}
+
+			//SelectFocusID();
+
+			m_lstHeader.RefreshVisibleRows();
+			m_lstHeader.RedrawWindow();
+		}
+	}
+
+	return true;
+}
+
 bool CQPasteWnd::DoExportToBitMapFile()
 {
 	bool ret = false;

+ 7 - 1
QPasteWnd.h

@@ -261,6 +261,9 @@ public:
 	bool OnShowFirstTenText();
 	bool OnShowClipWasPasted();
 	bool OnToggleLastGroupToggle();
+	bool OnMakeTopSticky();
+	bool OnMakeLastSticky();
+	bool OnRemoveStickySetting();
 
 	void UpdateMenuShortCut(CCmdUI *pCmdUI, DWORD action);
 
@@ -408,7 +411,7 @@ protected:
 	afx_msg LRESULT OnPostOptions(WPARAM wParam, LPARAM lParam);
 	afx_msg void OnMakeTopStickyClip();
 	afx_msg void OnMakeLastStickyClip();
-	afx_msg void OnRemoveStickySetting();
+	afx_msg void OnRemoveSticky();
 	afx_msg void OnElevateAppToPasteIntoElevatedApp();
 	
 public:
@@ -466,4 +469,7 @@ public:
 	afx_msg void OnUpdateQuickoptionsShowindicatoracliphasbeenpasted(CCmdUI *pCmdUI);
 	afx_msg void OnGroupsTogglelastgroup();
 	afx_msg void OnUpdateGroupsTogglelastgroup(CCmdUI *pCmdUI);
+	afx_msg void OnUpdateStickyclipsMaketopstickyclip(CCmdUI *pCmdUI);
+	afx_msg void OnUpdateStickyclipsMakelaststickyclip(CCmdUI *pCmdUI);
+	afx_msg void OnUpdateStickyclipsRemovestickysetting(CCmdUI *pCmdUI);
 };