Jelajahi Sumber

Added option to export to web search defaults to google

Scott Brogden 3 minggu lalu
induk
melakukan
a9f8dade2b
9 mengubah file dengan 113 tambahan dan 2 penghapusan
  1. 1 0
      CP_Main.rc
  2. 2 1
      resource.h
  3. 3 0
      src/ActionEnums.cpp
  4. 1 0
      src/ActionEnums.h
  5. 9 0
      src/AdvGeneral.cpp
  6. 18 0
      src/Options.cpp
  7. 3 0
      src/Options.h
  8. 73 1
      src/QPasteWnd.cpp
  9. 3 0
      src/QPasteWnd.h

+ 1 - 0
CP_Main.rc

@@ -549,6 +549,7 @@ BEGIN
             MENUITEM "Export Clip(s) to Text File(s)", ID_EXPORT_EXPORTTOTEXTFILE
             MENUITEM "Export Clip(s) to Image File(s)", ID_IMPORT_EXPORTCLIP_BITMAP
             MENUITEM "Export to Google Translate",  ID_IMPORT_EXPORTTOGOOGLETRANSLATE
+            MENUITEM "Export to Web Search",        ID_IMPORT_EXPORTTOWEBSEARCH
             MENUITEM "Import File Contents From CF_HDROP", ID_IMPORT_IMPORTCOPIEDFILE
             MENUITEM SEPARATOR
             MENUITEM "EMail, Content In Body",      ID_IMPORT_EMAILTO

+ 2 - 1
resource.h

@@ -867,6 +867,7 @@
 #define BUTTON_OUTDENT                  32994
 #define BUTTON_BULLET                   32995
 #define ID_BUTTONWRAP                   32996
+#define ID_IMPORT_EXPORTTOWEBSEARCH     32997
 
 // Next default values for new objects
 // 
@@ -874,7 +875,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_3D_CONTROLS                     1
 #define _APS_NEXT_RESOURCE_VALUE        394
-#define _APS_NEXT_COMMAND_VALUE         32997
+#define _APS_NEXT_COMMAND_VALUE         32998
 #define _APS_NEXT_CONTROL_VALUE         2173
 #define _APS_NEXT_SYMED_VALUE           104
 #endif

+ 3 - 0
src/ActionEnums.cpp

@@ -425,6 +425,9 @@ CString ActionEnums::EnumDescription(ActionEnumValues value)
 	case PASTE_POSITION_10_PLAIN_TEXT:
 		val = "Paste Position 10 Plain Text Only";
 		break;
+	case EXPORT_TO_WEB_SEARCH:
+		val = "Export To Web Search";
+		break;
 	}
 
 	CString translatedValue = theApp.m_Language.GetQuickPasteKeyboardString(value, val);

+ 1 - 0
src/ActionEnums.h

@@ -144,6 +144,7 @@ public:
 		PASTE_POSITION_8_PLAIN_TEXT,
 		PASTE_POSITION_9_PLAIN_TEXT,
 		PASTE_POSITION_10_PLAIN_TEXT,
+		EXPORT_TO_WEB_SEARCH,
 
 		LAST_ACTION
 	};

+ 9 - 0
src/AdvGeneral.cpp

@@ -158,6 +158,7 @@ END_MESSAGE_MAP()
 #define SETTING_IMAGE_EDITOR_PATH 104
 #define SETTING_CLIP_EDIT_SAVE_DELAY_AFTER_LOAD 105
 #define SETTING_ClIP_EDIT_SAVE_DELAY_AFTER_SAVE 106
+#define SETTING_WEB_SEARCH_URL 107
 
 BOOL CAdvGeneral::OnInitDialog()
 {
@@ -323,6 +324,8 @@ BOOL CAdvGeneral::OnInitDialog()
 	AddTrueFalse(pGroupTest, _T("Update clip order on paste"), CGetSetOptions::GetUpdateTimeOnPaste(), SETTING_UPDATE_ORDER_ON_PASTE);
 	AddTrueFalse(pGroupTest, _T("Update clip Order on ctrl-c"), CGetSetOptions::GetUpdateClipOrderOnCtrlC(), SETTING_UPDATE_ORDER_ON_CTRL_C);
 
+	pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Web Search Url"), CGetSetOptions::GetWebSearchUrl(), _T(""), SETTING_WEB_SEARCH_URL));
+
 	AddTrueFalse(pGroupTest, _T("Write debug to file"), CGetSetOptions::GetEnableDebugLogging(), SETTING_DEBUG_TO_FILE);
 	AddTrueFalse(pGroupTest, _T("Write debug to OutputDebugString"), CGetSetOptions::GetEnableDebugLogging(), SETTING_DEBUG_TO_OUTPUT_STRING);
 
@@ -952,6 +955,12 @@ void CAdvGeneral::OnBnClickedOk()
 					CGetSetOptions::SetClipEditSaveDelayAfterSaveSeconds(pNewValue->lVal);
 				}
 				break;
+			case SETTING_WEB_SEARCH_URL:
+				if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
+				{
+					CGetSetOptions::SetWebSearchUrl(pNewValue->bstrVal);
+				}
+				break;
 			}
 		}
 	}

+ 18 - 0
src/Options.cpp

@@ -2386,6 +2386,24 @@ CString	CGetSetOptions::GetTranslateUrl()
 	return GetProfileString(_T("TranslateUrl"), _T("https://translate.google.com/?text=%s"));
 }
 
+CString	CGetSetOptions::GetWebSearchUrl()
+{
+	CString default = _T("https://www.google.com/search?q=%s");
+	CString val = GetProfileString(_T("WebSearchUrl"), default);
+
+	if (val == _T(""))
+	{
+		val = default;
+	}
+
+	return val;
+}
+
+void CGetSetOptions::SetWebSearchUrl(CString val)
+{
+	SetProfileString(_T("WebSearchUrl"), val);
+}
+
 void CGetSetOptions::SetNetworkReadTimeoutMS(int val)
 {
 	SetProfileLong(_T("NetworkReadTimeoutMS"), val);

+ 3 - 0
src/Options.h

@@ -492,6 +492,9 @@ public:
 
 	static CString GetTranslateUrl();
 
+	static CString GetWebSearchUrl();
+	static void SetWebSearchUrl(CString val);
+
 	static void SetNetworkReadTimeoutMS(int val);
 	static int GetNetworkReadTimeoutMS();
 

+ 73 - 1
src/QPasteWnd.cpp

@@ -367,7 +367,9 @@ BEGIN_MESSAGE_MAP(CQPasteWnd, CWndEx)
 
 	ON_COMMAND(ID_SPECIALPASTE_ASCIITEXTONLY, &CQPasteWnd::OnSpecialpasteAsciitextonly)
 	ON_UPDATE_COMMAND_UI(ID_SPECIALPASTE_ASCIITEXTONLY, &CQPasteWnd::OnUpdateSpecialpasteAsciitextonly)
-END_MESSAGE_MAP()
+		ON_COMMAND(ID_IMPORT_EXPORTTOWEBSEARCH, &CQPasteWnd::OnImportExporttowebsearch)
+		ON_UPDATE_COMMAND_UI(ID_IMPORT_EXPORTTOWEBSEARCH, &CQPasteWnd::OnUpdateImportExporttowebsearch)
+		END_MESSAGE_MAP()
 
 
 /////////////////////////////////////////////////////////////////////////////
@@ -3415,6 +3417,9 @@ bool CQPasteWnd::DoAction(CAccel a)
 	case ActionEnums::ASCII_TEXT_ONLY:
 		ret = DoPasteAsciiOnly();
 		break;
+	case ActionEnums::EXPORT_TO_WEB_SEARCH:
+		ret = DoExportToGoogleTranslate();
+		break;
 	}
 
 	return ret;
@@ -4382,6 +4387,58 @@ bool CQPasteWnd::DoExportToGoogleTranslate()
 	ARRAY IDs;
 	m_lstHeader.GetSelectionItemData(IDs);
 
+	if (IDs.GetCount() > 0)
+	{
+		int id = IDs[0];
+		CClip clip;
+		if (clip.LoadMainTable(id))
+		{
+			if (clip.LoadFormats(id, true))
+			{
+				CString clipText = clip.GetUnicodeTextFormat();
+				if (clipText == _T(""))
+				{
+					CStringA aText = clip.GetCFTextTextFormat();
+					if (aText != _T(""))
+					{
+						clipText = CTextConvert::AnsiToUnicode(aText);
+					}
+				}
+
+				if (clipText != _T(""))
+				{
+					CString clipTextUrlEncoded = InternetEncode(clipText);
+
+					CString url;
+					url.Format(CGetSetOptions::GetWebSearchUrl(), clipTextUrlEncoded);
+
+					if (!CGetSetOptions::m_bShowPersistent)
+					{
+						HideQPasteWindow(false, false);
+					}
+					else if (CGetSetOptions::GetAutoHide())
+					{
+						MinMaxWindow(FORCE_MIN);
+					}
+
+					CHyperLink::GotoURL(url, SW_SHOW);
+
+					ret = true;
+				}
+			}
+		}
+	}
+
+	return true;
+}
+
+bool CQPasteWnd::DoExportToWebSearch()
+{
+	bool ret = false;
+
+	ARRAY IDs;
+	m_lstHeader.GetSelectionItemData(IDs);
+
 	if (IDs.GetCount() > 0)
 	{
 		int id = IDs[0];
@@ -8143,3 +8200,18 @@ void CQPasteWnd::OnUpdateSpecialpasteAsciitextonly(CCmdUI* pCmdUI)
 
 	UpdateMenuShortCut(pCmdUI, ActionEnums::ASCII_TEXT_ONLY);
 }
+
+void CQPasteWnd::OnImportExporttowebsearch()
+{
+	DoAction(ActionEnums::EXPORT_TO_WEB_SEARCH);
+}
+
+void CQPasteWnd::OnUpdateImportExporttowebsearch(CCmdUI* pCmdUI)
+{
+	if (!pCmdUI->m_pMenu)
+	{
+		return;
+	}
+
+	UpdateMenuShortCut(pCmdUI, ActionEnums::EXPORT_TO_WEB_SEARCH);
+}

+ 3 - 0
src/QPasteWnd.h

@@ -268,6 +268,7 @@ public:
 	bool DoExportToQRCode();
 	bool DoExportToTextFile();
 	bool DoExportToGoogleTranslate();
+	bool DoExportToWebSearch();
 	bool DoExportToBitMapFile();
 	bool DoSaveCurrentClipboard();
 	bool DoMoveClipDown();
@@ -601,4 +602,6 @@ public:
 	afx_msg void OnUpdateSpecialpasteMultipleImagesVert(CCmdUI* pCmdUI);
 	afx_msg void OnSpecialpasteAsciitextonly();
 	afx_msg void OnUpdateSpecialpasteAsciitextonly(CCmdUI* pCmdUI);
+	afx_msg void OnImportExporttowebsearch();
+	afx_msg void OnUpdateImportExporttowebsearch(CCmdUI* pCmdUI);
 };