Added launchWithCopy method to FileViewer class 95/69995/5
authorDenis Dolzhenko <d.dolzhenko@samsung.com>
Tue, 17 May 2016 14:02:24 +0000 (17:02 +0300)
committerAndrey Klimenko <and.klimenko@samsung.com>
Wed, 18 May 2016 08:32:27 +0000 (01:32 -0700)
Change-Id: I2385ba62ad5613ff183ebb6e8d114ce13cf7e151
Signed-off-by: Denis Dolzhenko <d.dolzhenko@samsung.com>
src/Common/AppControl/inc/FileViewer.h
src/Common/AppControl/src/FileViewer.cpp
src/Conversation/ConvList/Controller/inc/ConvList.h
src/Conversation/ConvList/Controller/inc/ConvListItem.h
src/Conversation/ConvList/Controller/src/ConvList.cpp
src/Conversation/ConvList/Controller/src/ConvListItem.cpp

index e57d09e..f6dbe8f 100644 (file)
 #define FileViewer_h_
 
 #include "AppControlUtils.h"
+#include "WorkingDir.h"
 
 namespace Msg
 {
     class FileViewer
     {
-    public:
-        FileViewer();
+        public:
+            FileViewer(WorkingDirRef workingDir);
 
-        static bool launch(const std::string &file);
+            static bool launch(const std::string &file);
+            bool launchWithCopy(const std::string &file);
 
-    private:
-        FileViewer(const FileViewer&) = delete;
-        FileViewer& operator=(const FileViewer&) = delete;
+        private:
+            FileViewer(const FileViewer&) = delete;
+            FileViewer& operator=(const FileViewer&) = delete;
+
+        private:
+            WorkingDirRef m_WorkingDir;
+            std::string m_FilePath;
     };
 }
 
index ba31a48..e7c1548 100644 (file)
@@ -23,7 +23,8 @@
 
 using namespace Msg;
 
-FileViewer::FileViewer()
+FileViewer::FileViewer(WorkingDirRef workingDir)
+    : m_WorkingDir(workingDir)
 {
 }
 
@@ -43,7 +44,8 @@ bool FileViewer::launch(const std::string &file)
     {
         app_control_set_operation(svc_handle, APP_CONTROL_OPERATION_VIEW);
         app_control_set_mime(svc_handle, mime.c_str());
-        app_control_set_uri(svc_handle, file.c_str());
+        std::string uri = "file://" + file;
+        app_control_set_uri(svc_handle, uri.c_str());
         app_control_set_launch_mode(svc_handle, APP_CONTROL_LAUNCH_MODE_GROUP);
         int ret = app_control_send_launch_request(svc_handle, nullptr, nullptr);
         MSG_LOG("Result code: ", ret);
@@ -54,3 +56,20 @@ bool FileViewer::launch(const std::string &file)
     return res;
 }
 
+bool FileViewer::launchWithCopy(const std::string &file)
+{
+    bool res = false;
+    if(m_WorkingDir)
+    {
+        // Remove previous file (correct only for APP_CONTROL_LAUNCH_MODE_GROUP)
+        if(!m_FilePath.empty())
+            m_WorkingDir->removeFile(m_FilePath);
+
+        m_FilePath = m_WorkingDir->addFile(file);
+        if(!m_FilePath.empty())
+            res = launch(m_FilePath);
+    }
+
+    return res;
+}
+
index ac7ea4e..a20fa4a 100644 (file)
@@ -25,7 +25,7 @@
 #include "App.h"
 #include "ConvListItem.h"
 #include "ContactManager.h"
-#include "WorkingDir.h"
+#include "FileViewer.h"
 
 #include <unordered_map>
 #include <unordered_set>
@@ -124,6 +124,7 @@ namespace Msg
             void selectListItems(bool state);
             bool isAllListItemSelected() const;
             ConvListItem *getItem(MsgId msgId) const;
+            void appendItem(const MsgConversationItem &item);
             void appendItem(ConvListItem *item);
             void deleteItem(ConvListItem *item);
             void demoteItem(ConvListItem *item); //move down existing item
@@ -170,6 +171,7 @@ namespace Msg
             IConvListListener *m_pListner;
             App &m_App;
             WorkingDirRef m_WorkingDir;
+            FileViewer m_FileViewer;
             ThumbnailMaker::ThumbId m_OwnerThumbId;
             ThumbnailMaker::ThumbId m_RecipThumbId;
             std::string m_SearchWord;
index 4ba1e57..0f677e3 100644 (file)
@@ -27,7 +27,7 @@
 #include "App.h"
 #include <string>
 #include "MessageDetailContent.h"
-#include "WorkingDir.h"
+#include "FileViewer.h"
 #include "MsgUtils.h"
 
 namespace Msg
@@ -50,6 +50,7 @@ namespace Msg
              */
             ConvListItem(const MsgConversationItem &item,
                          App &app,
+                         FileViewer &fileViewer,
                          WorkingDirRef workingDir,
                          const std::string &searchWord,
                          const ThumbnailMaker::ThumbId &thumbId);
@@ -120,6 +121,7 @@ namespace Msg
             IConvListItemListener *m_pListener;
             App &m_App;
             WorkingDirRef m_WorkingDir;
+            FileViewer &m_FileViewer;
             MsgId m_MsgId;
             bool m_IsDraft;
             Message::NetworkStatus m_NetworkStatus;
index 3d517ff..fb82656 100644 (file)
@@ -40,6 +40,7 @@ ConvList::ConvList(Evas_Object *parent, App &app, WorkingDirRef workingDir)
     , m_pListner(nullptr)
     , m_App(app)
     , m_WorkingDir(workingDir)
+    , m_FileViewer(workingDir)
     , m_OwnerThumbId(m_App.getThumbnailMaker().getThumbId(ThumbnailMaker::OwnerThumb))
     , m_RecipThumbId(m_App.getThumbnailMaker().getThumbId(ThumbnailMaker::SingleThumb))
     , m_SearchWord()
@@ -128,8 +129,7 @@ void ConvList::fill()
     for(int i = 0; i < convListLen; ++i)
     {
         MsgConversationItem &item = convList->at(i);
-        const ThumbnailMaker::ThumbId &thumbId = item.getDirection() == Message::MD_Received ? m_RecipThumbId : m_OwnerThumbId;
-        appendItem(new ConvListItem(item, m_App, m_WorkingDir, m_SearchWord, thumbId));
+        appendItem(item);
     }
 }
 
@@ -187,6 +187,12 @@ ConvListItem *ConvList::getItem(MsgId msgId) const
     return it != m_ConvListItemMap.end() ? it->second : nullptr;
 }
 
+void ConvList::appendItem(const MsgConversationItem &item)
+{
+    const ThumbnailMaker::ThumbId &thumbId = item.getDirection() == Message::MD_Received ? m_RecipThumbId : m_OwnerThumbId;
+    appendItem(new ConvListItem(item, m_App, m_FileViewer, m_WorkingDir, m_SearchWord, thumbId));
+}
+
 void ConvList::appendItem(ConvListItem *item)
 {
     dateLineAddIfNec(item);
@@ -344,9 +350,11 @@ void ConvList::onMsgStorageInsert(const MsgIdList &msgIdList)
         if(msg && msg->getThreadId() == m_ThreadId && msg->getMessageStorageType() != Message::MS_Sim)
         {
             MsgConversationItemRef item = m_MsgEngine.getStorage().getConversationItem(msgId);
-            const ThumbnailMaker::ThumbId &thumbId = item->getDirection() == Message::MD_Received ? m_RecipThumbId : m_OwnerThumbId;
-            appendItem(new ConvListItem(*item, m_App, m_WorkingDir, m_SearchWord, thumbId));
-            inserted = true;
+            if(item)
+            {
+                appendItem(*item);
+                inserted = true;
+            }
         }
     }
     if(inserted)
index 5c8513f..7dd8a3c 100644 (file)
@@ -34,6 +34,7 @@ using namespace Msg;
 
 ConvListItem::ConvListItem(const MsgConversationItem &item,
                            App &app,
+                           FileViewer &fileViewer,
                            WorkingDirRef workingDir,
                            const std::string &searchWord,
                            const ThumbnailMaker::ThumbId &thumbId)
@@ -41,6 +42,7 @@ ConvListItem::ConvListItem(const MsgConversationItem &item,
     , m_pListener(nullptr)
     , m_App(app)
     , m_WorkingDir(workingDir)
+    , m_FileViewer(fileViewer)
     , m_MsgId(item.getMsgId())
     , m_IsDraft(item.isDraft())
     , m_NetworkStatus(item.getNetworkStatus())
@@ -325,7 +327,7 @@ void ConvListItem::onDownloadButtonClicked()
 void ConvListItem::onItemClicked(BubbleEntity::Item &item)
 {
     MSG_LOG("");
-    FileViewer::launch(item.value2);
+    m_FileViewer.launchWithCopy(item.value2);
 }
 
 void ConvListItem::onCopyTextItemPressed(ContextPopupItem &item)