Update description for chat_message item
[platform/core/api/notification.git] / notification-ex / image_item.cc
index 2d473f8..ee8087c 100644 (file)
  * limitations under the License.
  */
 
+#include <unistd.h>
+#include <sys/types.h>
 #include <dlog.h>
 
+#include <map>
+#include <string>
+#include <list>
+#include <utility>
+
 #include "notification-ex/image_item.h"
 #include "notification-ex/image_item_implementation.h"
 #include "notification-ex/factory_manager.h"
 #include "notification-ex/exception.h"
+#include "notification-ex/shared_file.h"
+#include "notification-ex/item_info_internal.h"
+#include "notification-ex/ex_util.h"
 
 #ifdef LOG_TAG
 #undef LOG_TAG
 
 #define LOG_TAG "NOTIFICATION_EX"
 #define IMAGE_PATH_KEY "__IMAGE_PATH_KEY__"
+#define PRIV_IMAGE_PATH_KEY "__PRIV_IMAGE_PATH_KEY__"
 
 using namespace tizen_base;
 
 namespace notification {
 namespace item {
-
 ImageItem::ImageItem(std::string image_path,
     std::shared_ptr<AbstractAction> action)
     : AbstractItem(action), impl_(new Impl(this, image_path)) {
+  UpdatePrivatePath();
 }
 
 ImageItem::ImageItem(std::string id, std::string image_path,
     std::shared_ptr<AbstractAction> action)
     : AbstractItem(id, action), impl_(new Impl(this, image_path)) {
+  UpdatePrivatePath();
 }
 
 ImageItem::Impl::Impl(ImageItem* parent, std::string image_path)
@@ -57,25 +69,72 @@ Bundle ImageItem::Serialize() const {
   b = AbstractItem::Serialize();
   b.Add(IMAGE_PATH_KEY, impl_->image_path_);
 
+  if (!impl_->priv_image_path_.empty())
+    b.Add(PRIV_IMAGE_PATH_KEY, impl_->priv_image_path_);
+
   return b;
 }
 
 void ImageItem::Deserialize(Bundle b) {
   AbstractItem::Deserialize(b);
   impl_->image_path_ = b.GetString(IMAGE_PATH_KEY);
+  impl_->priv_image_path_ = b.GetString(PRIV_IMAGE_PATH_KEY);
 }
 
-AbstractItem& ImageItem::FindByID(std::string id) {
-  if (GetId() == id)
-    return *this;
-
-  return FactoryManager::GetInst().GetNullItem();
+bool ImageItem::IsItemTypeExist(int type) {
+  if (GetType() == type)
+    return true;
+  return false;
 }
 
 std::string ImageItem::GetImagePath() const {
   return impl_->image_path_;
 }
 
+std::list<std::string> ImageItem::GetSharedPath() const {
+  std::list<std::string> ret;
+
+  if (!impl_->priv_image_path_.empty())
+    ret.push_back(impl_->priv_image_path_);
+
+  return ret;
+}
+
+void ImageItem::SetSharedPath() {
+  if (!impl_->priv_image_path_.empty())
+    impl_->image_path_ = impl_->priv_image_path_;
+}
+
+std::list<std::map<std::string, std::string>> ImageItem::GetPathMapList() const {
+  std::list<std::map<std::string, std::string>> path_map_list;
+  std::map<std::string, std::string> path_map;
+
+  if (!impl_->priv_image_path_.empty()) {
+    path_map.insert(std::pair<std::string, std::string>(impl_->image_path_,
+        impl_->priv_image_path_));
+    path_map_list.push_back(path_map);
+  }
+
+  return path_map_list;
+}
+
+void ImageItem::UpdatePrivatePath() {
+  std::string path;
+
+  SharedFile* shared_file = new SharedFile();
+  if (!shared_file->IsPrivatePath(impl_->image_path_)) {
+    delete(shared_file);
+    return;
+  }
+
+  path = shared_file->GetDataPath(AbstractItem::GetSenderAppId(),
+            impl_->image_path_);
+  if (!path.empty())
+    impl_->priv_image_path_ = path;
+
+  delete(shared_file);
+}
+
 ImageItem::~ImageItem() = default;
 ImageItem::Impl::~Impl() = default;