Kaynağa Gözat

Show a message when receiving a manual sent clip, option to turn this off

sabrogden 8 yıl önce
ebeveyn
işleme
237d54f34d
14 değiştirilmiş dosya ile 91 ekleme ve 43 silme
  1. 15 1
      AdvGeneral.cpp
  2. 1 1
      AutoSendToClientThread.cpp
  3. 4 2
      Client.cpp
  4. 3 1
      Client.h
  5. 17 30
      MainFrm.cpp
  6. 0 1
      MainFrm.h
  7. 14 1
      MainFrmThread.cpp
  8. 3 0
      Misc.h
  9. 10 0
      Options.cpp
  10. 3 0
      Options.h
  11. 3 4
      QPasteWnd.cpp
  12. 14 1
      Server.cpp
  13. 1 0
      Server.h
  14. 3 1
      ServerDefines.h

+ 15 - 1
AdvGeneral.cpp

@@ -104,6 +104,7 @@ END_MESSAGE_MAP()
 #define SETTING_TOOLTIP_TIMEOUT 59
 #define SETTING_SELECTED_INDEX 60
 #define SETTING_CLIPBOARD_SAVE_DELAY 61
+#define SETTING_SHOW_MSG_WHEN_RECEIVING_MANUAL_SENT_CLIP 62
 
 BOOL CAdvGeneral::OnInitDialog()
 {
@@ -166,7 +167,9 @@ BOOL CAdvGeneral::OnInitDialog()
 	AddTrueFalse(pGroupTest, _T("Show leading whitespace"), CGetSetOptions::GetDescShowLeadingWhiteSpace(), SETTING_SHOW_LEADING_WHITESPACE);
 	AddTrueFalse(pGroupTest, _T("Show In Taskbar"), CGetSetOptions::GetShowInTaskBar(), SETTTING_SHOW_IN_TASKBAR);
 	AddTrueFalse(pGroupTest, _T("Show indicator a clip has been pasted"), CGetSetOptions::GetShowIfClipWasPasted(), SETTING_SHOW_CLIP_PASTED);
-	
+
+	AddTrueFalse(pGroupTest, _T("Show message that we received a manual sent clip"), CGetSetOptions::GetShowMsgWhenReceivingManualSentClip(), SETTING_SHOW_MSG_WHEN_RECEIVING_MANUAL_SENT_CLIP);	
+
 	AddTrueFalse(pGroupTest, _T("Show startup tooltip message"), CGetSetOptions::GetShowStartupMessage(), SETTING_SHOW_STARTUP_MESSAGE);
 
 	AddTrueFalse(pGroupTest, _T("Show text for first ten copy hot keys"), CGetSetOptions::GetShowTextForFirstTenHotKeys(), SETTING_TEXT_FIRST_TEN);
@@ -508,6 +511,17 @@ void CAdvGeneral::OnBnClickedOk()
 					CGetSetOptions::SetShowIfClipWasPasted(val);
 				}
 				break;
+			case SETTING_SHOW_MSG_WHEN_RECEIVING_MANUAL_SENT_CLIP:
+				if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
+				{
+					BOOL val = false;
+					if (wcscmp(pNewValue->bstrVal, L"True") == 0)
+					{
+						val = true;
+					}
+					CGetSetOptions::SetShowMsgWhenReceivingManualSentClip(val);
+				}
+				break;
 			case SETTING_DIFF_APP:
 				if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
 				{

+ 1 - 1
AutoSendToClientThread.cpp

@@ -144,7 +144,7 @@ bool CAutoSendToClientThread::SendToClient(CClipList *pClipList)
 
 				LogSendRecieveInfo(StrF(_T("Sending clip to %s"), g_Opt.m_SendClients[nClient].csIP));
 
-				if(client.SendItem(pClip) == FALSE)
+				if(client.SendItem(pClip, false) == FALSE)
 				{
 					CString cs;
 					cs.Format(_T("Error sending clip to %s"), g_Opt.m_SendClients[nClient].csIP);

+ 4 - 2
Client.cpp

@@ -72,7 +72,7 @@ BOOL SendToFriend(CSendToFriendInfo &Info)
 
 		LogSendRecieveInfo(StrF(_T("Sending %d of %d clip to %s"), i+1, count, Info.m_csIP));
 
-		if(client.SendItem(pClip) == FALSE)
+		if(client.SendItem(pClip, Info.m_manualSend) == FALSE)
 		{
 			Info.m_csErrorText = "ERROR SendItem Failed";
 			LogSendRecieveInfo(Info.m_csErrorText);
@@ -175,10 +175,12 @@ BOOL CClient::OpenConnection(const TCHAR* servername)
 	return TRUE;
 }
 
-BOOL CClient::SendItem(CClip *pClip)
+BOOL CClient::SendItem(CClip *pClip, bool manualSend)
 {
 	CSendInfo Info;
 
+	Info.m_manualSend = manualSend;
+
 	//Send all text over as UTF-8
 	CStringA dest;
 	if(CTextConvert::ConvertToUTF8(GetComputerName(), dest))

+ 3 - 1
Client.h

@@ -22,6 +22,7 @@ public:
 		m_pPopup = NULL;
 		m_pClipList = NULL;
 		m_pPopup = NULL;
+		m_manualSend = false;
 	}
 	~CSendToFriendInfo()
 	{
@@ -36,6 +37,7 @@ public:
 	CString m_csIP;
 	CPopup *m_pPopup;
 	CString m_csErrorText;
+	bool m_manualSend;
 };
 
 class CClient  
@@ -44,7 +46,7 @@ public:
 	CClient();
 	virtual ~CClient();
 
-	BOOL SendItem(CClip *pClip);
+	BOOL SendItem(CClip *pClip, bool manualSend);
 	
 	BOOL OpenConnection(const TCHAR* servername);
 	BOOL CloseConnection();

+ 17 - 30
MainFrm.cpp

@@ -93,7 +93,6 @@ CMainFrame::CMainFrame()
 	m_pDeleteClips = NULL;
 	m_doubleClickGroupId = -1;
 	m_doubleClickGroupStartTime = 0;
-	m_pPopupWindow = NULL;
 }
 
 CMainFrame::~CMainFrame()
@@ -753,21 +752,7 @@ void CMainFrame::OnTimer(UINT_PTR nIDEvent)
 				m_doubleClickGroupStartTime = 0;
 			}
 			break;
-		case CLOSE_POPUP_MSG_WND:
-			{
-				KillTimer(CLOSE_POPUP_MSG_WND);
 
-				if(m_pPopupWindow != NULL)
-				{
-					if(::IsWindow(m_pPopupWindow->m_hWnd))
-					{
-						m_pPopupWindow->DestroyWindow();
-					}
-					delete m_pPopupWindow;
-					m_pPopupWindow = NULL;
-				}
-			}
-			break;
 		case SCREEN_RESOLUTION_CHANGED:
 			{
 				KillTimer(SCREEN_RESOLUTION_CHANGED);
@@ -951,17 +936,27 @@ LRESULT CMainFrame::OnAddToDatabaseFromSocket(WPARAM wParam, LPARAM lParam)
         return FALSE;
     }
 
-    BOOL bSetToClipBoard = (BOOL)lParam;
-    if(bSetToClipBoard)
+    DWORD flags = (DWORD)lParam;
+    if(flags & REMOTE_CLIP_ADD_TO_CLIPBOARD)
     {
         CClip *pClip = pClipList->GetTail();
         if(pClip)
         {
 			LogSendRecieveInfo("OnAddToDatabaseFromSocket - Adding clip from socket setting clip to be put on clipboard");
-			pClip->m_param1 = TRUE;
+			pClip->m_param1 |= REMOTE_CLIP_ADD_TO_CLIPBOARD;
 		}
     }
 
+	if (flags & REMOTE_CLIP_MANUAL_SEND)
+	{
+		CClip *pClip = pClipList->GetTail();
+		if (pClip)
+		{
+			LogSendRecieveInfo("OnAddToDatabaseFromSocket - Adding clip from socket setting clip was a manual send from other side");
+			pClip->m_param1 |= REMOTE_CLIP_MANUAL_SEND;
+		}
+	}
+
 	m_thread.AddRemoteClipToSave(pClipList);
 
 	delete pClipList;
@@ -1308,20 +1303,10 @@ LRESULT CMainFrame::OnReOpenDatabase(WPARAM wParam, LPARAM lParam)
 
 LRESULT CMainFrame::OnShowMsgWindow(WPARAM wParam, LPARAM lParam)
 {
-	if(m_pPopupWindow != NULL)
-	{
-		if(::IsWindow(m_pPopupWindow->m_hWnd))
-		{
-			m_pPopupWindow->DestroyWindow();
-		}
-		delete m_pPopupWindow;
-		m_pPopupWindow = NULL;
-	}
-
 	CString *pMsg = (CString*)wParam;
 	int clipId = (int)lParam;
 
-	CRect r;
+	/*CRect r;
 	GetMonitorRect(0, r);
 
 	m_pPopupWindow = new CDittoPopupWindow();
@@ -1332,7 +1317,9 @@ LRESULT CMainFrame::OnShowMsgWindow(WPARAM wParam, LPARAM lParam)
 	m_pPopupWindow->SetCopyToGroupId(clipId);
 	m_pPopupWindow->UpdateText(*pMsg);	
 
-	SetTimer(CLOSE_POPUP_MSG_WND, 2500, 0);
+	SetTimer(CLOSE_POPUP_MSG_WND, 2500, 0);*/
+
+	m_trayIcon.SetBalloonDetails(pMsg->GetBuffer(), _T("Ditto"), CTrayNotifyIcon::BalloonStyle::Info, CGetSetOptions::GetBalloonTimeout());
 
 	delete pMsg;
 	return TRUE;

+ 0 - 1
MainFrm.h

@@ -72,7 +72,6 @@ public:
 	int m_doubleClickGroupId;
 	DWORD m_doubleClickGroupStartTime;
 	CPowerManager m_PowerManager;
-	CDittoPopupWindow *m_pPopupWindow;
 
     void DoDittoCopyBufferPaste(int nCopyBuffer);
     void DoFirstTenPositionsPaste(int nPos);

+ 14 - 1
MainFrmThread.cpp

@@ -201,7 +201,7 @@ void CMainFrmThread::OnSaveRemoteClips()
 
 	//are we supposed to add this clip to the clipboard
 	CClip *pLastClip = pLocalClips->GetTail();
-	if(pLastClip && pLastClip->m_param1 == TRUE)
+	if(pLastClip && (pLastClip->m_param1 & REMOTE_CLIP_ADD_TO_CLIPBOARD))
 	{
 		LogSendRecieveInfo("---------OnSaveRemoteClips - Before Posting msg to main thread to set clipboard");
 
@@ -215,6 +215,19 @@ void CMainFrmThread::OnSaveRemoteClips()
 		pLocalClips->RemoveTail();
 	}
 
+	if (CGetSetOptions::GetShowMsgWhenReceivingManualSentClip())
+	{
+		if (pLastClip && (pLastClip->m_param1 & REMOTE_CLIP_MANUAL_SEND))
+		{
+			CString *pMsg = new CString();
+
+			//baloon message can only show 254 characters
+			pMsg->Format(_T("Received remote clip\r\n\r\n%s"), pLastClip->m_Desc.Left(225));
+
+			theApp.m_pMainFrame->PostMessageW(WM_SHOW_MSG_WINDOW, (WPARAM)pMsg, pLocalClips->GetTail()->m_parentId);
+		}
+	}
+
 	theApp.RefreshView();
 
 	delete pLocalClips;

+ 3 - 0
Misc.h

@@ -16,6 +16,9 @@
 #define UPDATE_AFTER_PASTE_SELECT_CLIP 0x1
 #define UPDATE_AFTER_PASTE_REFRESH_VISIBLE 0x2
 
+#define REMOTE_CLIP_ADD_TO_CLIPBOARD 0x1
+#define REMOTE_CLIP_MANUAL_SEND 0x2
+
 
 //Handle foreign keyboards pressing ALT_GR (right alt), this simulates a control press
 //http://compgroups.net/comp.os.programmer.win32/alt-gr-key-and-left-ctrl/2840252

+ 10 - 0
Options.cpp

@@ -2619,4 +2619,14 @@ CString CGetSetOptions::GetPastSearchXml()
 void CGetSetOptions::SetPastSearchXml(CString val)
 {
 	SetProfileString(_T("PastSearchXml"), val);
+}
+
+BOOL CGetSetOptions::GetShowMsgWhenReceivingManualSentClip()
+{
+	return GetProfileLong("ShowMsgWhenReceivingManualSentClip", TRUE);
+}
+
+void CGetSetOptions::SetShowMsgWhenReceivingManualSentClip(BOOL val)
+{
+	SetProfileLong("ShowMsgWhenReceivingManualSentClip", val);
 }

+ 3 - 0
Options.h

@@ -592,6 +592,9 @@ public:
 	static CString GetPastSearchXml();
 	static void SetPastSearchXml(CString val);
 
+	static BOOL GetShowMsgWhenReceivingManualSentClip();
+	static void SetShowMsgWhenReceivingManualSentClip(BOOL val);
+
 };
 
 // global for easy access and for initialization of fast access variables

+ 3 - 4
QPasteWnd.cpp

@@ -1432,10 +1432,8 @@ BOOL CQPasteWnd::FillList(CString csSQLSearch /*=""*/)
 		m_listItems.clear();
 	}
 
-	if(m_lstHeader.GetItemCount() <= 0)
-	{
-		m_lstHeader.SetItemCount(m_lstHeader.GetCountPerPage() + 2);
-	}
+	m_lstHeader.SetItemCount(0);
+	m_lstHeader.RefreshVisibleRows();
 	
 	CPoint loadItem(-1, m_lstHeader.GetCountPerPage() + 2);
 	m_loadItems.push_back(loadItem);
@@ -2544,6 +2542,7 @@ BOOL CQPasteWnd::SendToFriendbyPos(int nPos, CString override_IP_Host)
 
     try
     {
+		Info.m_manualSend = true;
 		Info.m_csIP = override_IP_Host;
 		if (Info.m_csIP == _T(""))
 		{

+ 14 - 1
Server.cpp

@@ -110,6 +110,7 @@ CServer::CServer()
 	m_pClipList = NULL;
 	m_pClip = NULL;
 	m_bSetToClipBoard = FALSE;
+	m_manualSend = false;
 }
 
 CServer::~CServer()
@@ -197,6 +198,8 @@ void CServer::OnStart(CSendInfo &info)
 	CTextConvert::ConvertFromUTF8(info.m_cComputerName, m_csComputerName);
 	CTextConvert::ConvertFromUTF8(info.m_cDesc, m_csDesc);
 
+	m_manualSend = info.m_manualSend;
+
 	if(m_pClip != NULL)
 	{
 		delete m_pClip;
@@ -334,8 +337,18 @@ void CServer::OnExit(CSendInfo &info)
 	{
 		theApp.m_lClipsRecieved += (long)m_pClipList->GetCount();
 
+		DWORD flags = 0;
+		if (m_bSetToClipBoard)
+		{
+			flags |= REMOTE_CLIP_ADD_TO_CLIPBOARD;
+		}
+		if (m_manualSend)
+		{
+			flags |= REMOTE_CLIP_MANUAL_SEND;
+		}
+
 		//Post a message pClipList will be freed by the reciever
-		::PostMessage(theApp.m_MainhWnd, WM_ADD_TO_DATABASE_FROM_SOCKET, (WPARAM)m_pClipList, m_bSetToClipBoard);
+		::PostMessage(theApp.m_MainhWnd, WM_ADD_TO_DATABASE_FROM_SOCKET, (WPARAM)m_pClipList, flags);
 		m_pClipList = NULL;
 	}
 	else

+ 1 - 0
Server.h

@@ -39,6 +39,7 @@ protected:
 	CTextConvert m_Convert;
 	BOOL m_bSetToClipBoard;
 	CString m_csIP;
+	bool m_manualSend;
 	CString m_csComputerName;
 	CString m_csDesc;
 	CRecieveSocket m_Sock;

+ 3 - 1
ServerDefines.h

@@ -19,6 +19,7 @@ public:
 		m_nVersion = 1;
 		m_lParameter1 = -1;
 		m_lParameter2 = -1;
+		m_manualSend = 0;
 	}
 	int					m_nSize;
 	MyEnums::eSendType	m_Type;
@@ -29,7 +30,8 @@ public:
 	long				m_lParameter1;
 	long				m_lParameter2;
 	CHAR				m_md5[32];
-	char				m_cExtra[18];
+	char				m_manualSend;
+	char				m_cExtra[17];
 };
 
 class CDittoCF_HDROP