From f773ff3d00058179a47feb671fef1936b50d6fc0 Mon Sep 17 00:00:00 2001 From: jerry Date: Wed, 30 Apr 2014 18:54:32 +0000 Subject: [PATCH] refactored duplicated code in dragInfoReceived refactored fakeDraggigFiles interface --- src/lib/client/Client.cpp | 19 +------------------ src/lib/platform/MSWindowsScreen.cpp | 2 +- src/lib/platform/MSWindowsScreen.h | 3 ++- src/lib/platform/OSXScreen.cpp | 10 +++++++--- src/lib/platform/OSXScreen.h | 3 ++- src/lib/server/Server.cpp | 21 ++------------------- src/lib/synergy/DragInformation.cpp | 6 ++++++ src/lib/synergy/IPlatformScreen.h | 3 ++- src/lib/synergy/PlatformScreen.h | 3 ++- src/lib/synergy/Screen.cpp | 4 ++-- src/lib/synergy/Screen.h | 3 ++- 11 files changed, 29 insertions(+), 48 deletions(-) diff --git a/src/lib/client/Client.cpp b/src/lib/client/Client.cpp index f1741df6..141f916c 100644 --- a/src/lib/client/Client.cpp +++ b/src/lib/client/Client.cpp @@ -793,31 +793,14 @@ CClient::fileChunkReceived(CString data) void CClient::dragInfoReceived(UInt32 fileNum, CString data) { - // TODO: fix duplicate function from CServer - if (!m_enableDragDrop) { LOG((CLOG_DEBUG "drag drop not enabled, ignoring drag info.")); return; } CDragInformation::parseDragInfo(m_dragFileList, fileNum, data); - LOG((CLOG_DEBUG "drag info received, total drag file number: %i", m_dragFileList.size())); - - for (size_t i = 0; i < m_dragFileList.size(); ++i) { - LOG((CLOG_DEBUG2 "dragging file %i name: %s", i + 1, m_dragFileList.at(i).c_str())); - } - if (m_dragFileList.size() == 1) { - m_dragFileExt = CDragInformation::getDragFileExtension(m_dragFileList.at(0)); - } - else if (m_dragFileList.size() > 1) { - m_dragFileExt.clear(); - } - else { - return; - } - - m_screen->startDraggingFiles(m_dragFileExt); + m_screen->startDraggingFiles(m_dragFileList); } bool diff --git a/src/lib/platform/MSWindowsScreen.cpp b/src/lib/platform/MSWindowsScreen.cpp index 821fa5ca..793415dc 100644 --- a/src/lib/platform/MSWindowsScreen.cpp +++ b/src/lib/platform/MSWindowsScreen.cpp @@ -1827,7 +1827,7 @@ CMSWindowsScreen::CHotKeyItem::operator<(const CHotKeyItem& x) const } void -CMSWindowsScreen::fakeDraggingFiles(CString str) +CMSWindowsScreen::fakeDraggingFiles(CDragFileList fileList) { // possible design flaw: this function stops a "not implemented" // exception from being thrown. diff --git a/src/lib/platform/MSWindowsScreen.h b/src/lib/platform/MSWindowsScreen.h index 05368dc3..2a50503c 100644 --- a/src/lib/platform/MSWindowsScreen.h +++ b/src/lib/platform/MSWindowsScreen.h @@ -20,6 +20,7 @@ #include "platform/MSWindowsHook.h" #include "synergy/PlatformScreen.h" +#include "synergy/DragInformation.h" #include "synwinhk/synwinhk.h" #include "mt/CondVar.h" #include "mt/Mutex.h" @@ -115,7 +116,7 @@ public: virtual void setOptions(const COptionsList& options); virtual void setSequenceNumber(UInt32); virtual bool isPrimary() const; - virtual void fakeDraggingFiles(CString str); + virtual void fakeDraggingFiles(CDragFileList fileList); virtual CString& getDraggingFilename(); virtual const CString& getDropTarget() const; diff --git a/src/lib/platform/OSXScreen.cpp b/src/lib/platform/OSXScreen.cpp index 52e6470d..677f2184 100644 --- a/src/lib/platform/OSXScreen.cpp +++ b/src/lib/platform/OSXScreen.cpp @@ -2075,12 +2075,16 @@ COSXScreen::CFStringRefToUTF8String(CFStringRef aString) } void -COSXScreen::fakeDraggingFiles(CString str) +COSXScreen::fakeDraggingFiles(CDragFileList fileList) { m_fakeDraggingStarted = true; + CString fileExt; + if (fileList.size() == 1) { + fileExt = CDragInformation::getDragFileExtension(fileList.at(0)); + } + #if defined(MAC_OS_X_VERSION_10_7) - // TODO: use real file extension - fakeDragging(str.c_str(), m_xCursor, m_yCursor); + fakeDragging(fileExt.c_str(), m_xCursor, m_yCursor); #else LOG((CLOG_WARN "drag drop not supported")); #endif diff --git a/src/lib/platform/OSXScreen.h b/src/lib/platform/OSXScreen.h index 8998c183..5038611f 100644 --- a/src/lib/platform/OSXScreen.h +++ b/src/lib/platform/OSXScreen.h @@ -20,6 +20,7 @@ #include "platform/OSXClipboard.h" #include "synergy/PlatformScreen.h" +#include "synergy/DragInformation.h" #include "base/EventTypes.h" #include "common/stdmap.h" #include "common/stdvector.h" @@ -95,7 +96,7 @@ public: virtual void setOptions(const COptionsList& options); virtual void setSequenceNumber(UInt32); virtual bool isPrimary() const; - virtual void fakeDraggingFiles(CString str); + virtual void fakeDraggingFiles(CDragFileList fileList); virtual CString& getDraggingFilename(); const CString& getDropTarget() const { return m_dropTarget; } diff --git a/src/lib/server/Server.cpp b/src/lib/server/Server.cpp index 186d294d..cae89975 100644 --- a/src/lib/server/Server.cpp +++ b/src/lib/server/Server.cpp @@ -2387,31 +2387,14 @@ CServer::sendFileThread(void* data) void CServer::dragInfoReceived(UInt32 fileNum, CString content) { - // TODO: fix duplicate function from CClient - if (!m_enableDragDrop) { LOG((CLOG_DEBUG "drag drop not enabled, ignoring drag info.")); return; } CDragInformation::parseDragInfo(m_dragFileList, fileNum, content); - LOG((CLOG_DEBUG "drag info received, total drag file number: %i", m_dragFileList.size())); - - for (size_t i = 0; i < m_dragFileList.size(); ++i) { - LOG((CLOG_DEBUG "dragging file %i name: %s", i + 1, m_dragFileList.at(i).c_str())); - } - - if (m_dragFileList.size() == 1) { - m_dragFileExt = CDragInformation::getDragFileExtension(m_dragFileList.at(0)); - } - else if (m_dragFileList.size() > 1) { - m_dragFileExt.clear(); - } - else { - return; - } - - m_screen->startDraggingFiles(m_dragFileExt); + + m_screen->startDraggingFiles(m_dragFileList); } void diff --git a/src/lib/synergy/DragInformation.cpp b/src/lib/synergy/DragInformation.cpp index 025b8df4..b3f77361 100644 --- a/src/lib/synergy/DragInformation.cpp +++ b/src/lib/synergy/DragInformation.cpp @@ -46,6 +46,12 @@ CDragInformation::parseDragInfo(CDragFileList& dragFileList, UInt32 fileNum, CSt startPos = findResult1 + 1; --fileNum; } + + LOG((CLOG_DEBUG "drag info received, total drag file number: %i", dragFileList.size())); + + for (size_t i = 0; i < dragFileList.size(); ++i) { + LOG((CLOG_DEBUG2 "dragging file %i name: %s", i + 1, dragFileList.at(i).c_str())); + } } CString diff --git a/src/lib/synergy/IPlatformScreen.h b/src/lib/synergy/IPlatformScreen.h index 7f13808e..3235a0c2 100644 --- a/src/lib/synergy/IPlatformScreen.h +++ b/src/lib/synergy/IPlatformScreen.h @@ -18,6 +18,7 @@ #pragma once +#include "synergy/DragInformation.h" #include "synergy/clipboard_types.h" #include "synergy/IScreen.h" #include "synergy/IPrimaryScreen.h" @@ -192,7 +193,7 @@ public: virtual bool isDraggingStarted() = 0; virtual bool isFakeDraggingStarted() = 0; - virtual void fakeDraggingFiles(CString str) = 0; + virtual void fakeDraggingFiles(CDragFileList fileList) = 0; virtual const CString& getDropTarget() const = 0; diff --git a/src/lib/synergy/PlatformScreen.h b/src/lib/synergy/PlatformScreen.h index a645b751..60804ce5 100644 --- a/src/lib/synergy/PlatformScreen.h +++ b/src/lib/synergy/PlatformScreen.h @@ -19,6 +19,7 @@ #pragma once #include "synergy/IPlatformScreen.h" +#include "synergy/DragInformation.h" #include "common/stdexcept.h" //! Base screen implementation @@ -97,7 +98,7 @@ public: virtual void setSequenceNumber(UInt32) = 0; virtual bool isPrimary() const = 0; - virtual void fakeDraggingFiles(CString str) { throw std::runtime_error("fakeDraggingFiles not implemented"); } + virtual void fakeDraggingFiles(CDragFileList fileList) { throw std::runtime_error("fakeDraggingFiles not implemented"); } virtual const CString& getDropTarget() const { throw std::runtime_error("getDropTarget not implemented"); } diff --git a/src/lib/synergy/Screen.cpp b/src/lib/synergy/Screen.cpp index 042d92e7..8284fc8b 100644 --- a/src/lib/synergy/Screen.cpp +++ b/src/lib/synergy/Screen.cpp @@ -435,9 +435,9 @@ CScreen::setDraggingStarted(bool started) } void -CScreen::startDraggingFiles(CString str) +CScreen::startDraggingFiles(CDragFileList& fileList) { - m_screen->fakeDraggingFiles(str); + m_screen->fakeDraggingFiles(fileList); } void diff --git a/src/lib/synergy/Screen.h b/src/lib/synergy/Screen.h index cfb79011..c34ddf70 100644 --- a/src/lib/synergy/Screen.h +++ b/src/lib/synergy/Screen.h @@ -18,6 +18,7 @@ #pragma once +#include "synergy/DragInformation.h" #include "synergy/clipboard_types.h" #include "synergy/IScreen.h" #include "synergy/key_types.h" @@ -222,7 +223,7 @@ public: void setDraggingStarted(bool started); //! Fake a files dragging operation - void startDraggingFiles(CString str); + void startDraggingFiles(CDragFileList& fileList); void setEnableDragDrop(bool enabled); //@}