Update description for chat_message item
[platform/core/api/notification.git] / notification-ex / abstract_item.h
index aeeabb8..c4e912d 100644 (file)
 #define NOTIFICATION_EX_ABSTRACT_ITEM_H_
 
 #include <time.h>
+#include <bundle_cpp.h>
 
 #include <memory>
 #include <string>
 #include <list>
+#include <vector>
+#include <map>
 
 #include "notification-ex/abstract_action.h"
-#include "notification-ex/ex_bundle.h"
+#include "notification-ex/multi_language.h"
 #include "notification-ex/iitem_info.h"
 
 #ifndef EXPORT_API
 namespace notification {
 namespace item {
 
+/**
+ * @brief The class for ReceiverGroup.
+ * @details The class to define receiver group of notification.
+ * @since_tizen 5.5
+ */
+class EXPORT_API ReceiverGroup {
+ public:
+  static const std::string Panel;
+  static const std::string Ticker;
+  static const std::string LockScreen;
+  static const std::string Indicator;
+  static const std::string Popup;
+};
+
+/**
+ * @brief The class for color data.
+ * @details The color consists A,R,G,B values.
+ * @since_tizen 5.5
+ */
 class EXPORT_API Color {
  public:
   Color() {
@@ -47,15 +69,106 @@ class EXPORT_API Color {
   }
   virtual ~Color() = default;
 
+  /**
+   * @brief Copy-constructor.
+   * @since_tizen 5.5
+   * @param[in] c The object to copy
+   */
+  Color(const Color& c) {
+    a_ = c.a_;
+    r_ = c.r_;
+    g_ = c.g_;
+    b_ = c.b_;
+  }
+
+  /**
+   * @brief Assignment.
+   * @since_tizen 5.5
+   * @param[in] c The object to copy
+   */
+  Color& operator = (const Color& c) {
+    if (this != &c) {
+      a_ = c.a_;
+      r_ = c.r_;
+      g_ = c.g_;
+      b_ = c.b_;
+    }
+    return *this;
+  }
+
+  /**
+   * @brief Move-constructor.
+   * @since_tizen 5.5
+   * @param[in] c The object to move
+   */
+  Color(Color&& c) noexcept {
+    a_ = c.a_;
+    c.a_ = 0;
+
+    r_ = c.r_;
+    c.r_ = 0;
+
+    g_ = c.g_;
+    c.g_ = 0;
+
+    b_ = c.b_;
+    c.b_ = 0;
+  }
+
+  /**
+   * @brief Assignment.
+   * @since_tizen 5.5
+   * @param[in] c The object to move
+   */
+  Color& operator = (Color&& c) noexcept {
+    if (this != &c) {
+      a_ = c.a_;
+      c.a_ = 0;
+
+      r_ = c.r_;
+      c.r_ = 0;
+
+      g_ = c.g_;
+      c.g_ = 0;
+
+      b_ = c.b_;
+      c.b_ = 0;
+    }
+    return *this;
+  }
+
+  /**
+   * @brief Gets alpha value of color.
+   * @since_tizen 5.5
+   * @return The alpha value of color
+   */
   unsigned char GetAVal() const {
     return a_;
   }
+
+  /**
+   * @brief Gets red value of color.
+   * @since_tizen 5.5
+   * @return The red value of color
+   */
   unsigned char GetRVal() const {
     return r_;
   }
+
+  /**
+   * @brief Gets green value of color.
+   * @since_tizen 5.5
+   * @return The green value of color
+   */
   unsigned char GetGVal() const {
     return g_;
   }
+
+  /**
+   * @brief Gets blue value of color.
+   * @since_tizen 5.5
+   * @return The blue value of color
+   */
   unsigned char GetBVal() const {
     return b_;
   }
@@ -67,6 +180,11 @@ class EXPORT_API Color {
   unsigned char b_;
 };  // class Color
 
+/**
+ * @brief The class for padding data.
+ * @details There are left, top, right, bottom padding value.
+ * @since_tizen 5.5
+ */
 class EXPORT_API Padding {
  public:
   Padding() {
@@ -80,15 +198,106 @@ class EXPORT_API Padding {
   }
   virtual ~Padding() = default;
 
+  /**
+   * @brief Copy-constructor.
+   * @since_tizen 5.5
+   * @param[in] c The object to copy
+   */
+  Padding(const Padding& c) {
+    left_ = c.left_;
+    top_ = c.top_;
+    right_ = c.right_;
+    bottom_ = c.bottom_;
+  }
+
+  /**
+   * @brief Assignment.
+   * @since_tizen 5.5
+   * @param[in] c The object to copy
+   */
+  Padding& operator = (const Padding& c) {
+    if (this != &c) {
+      left_ = c.left_;
+      top_ = c.top_;
+      right_ = c.right_;
+      bottom_ = c.bottom_;
+    }
+    return *this;
+  }
+
+  /**
+   * @brief Move-constructor.
+   * @since_tizen 5.5
+   * @param[in] c The object to move
+   */
+  Padding(Padding&& c) noexcept {
+    left_ = c.left_;
+    c.left_ = 0;
+
+    top_ = c.top_;
+    c.top_ = 0;
+
+    right_ = c.right_;
+    c.right_ = 0;
+
+    bottom_ = c.bottom_;
+    c.bottom_ = 0;
+  }
+
+  /**
+   * @brief Assignment.
+   * @since_tizen 5.5
+   * @param[in] c The object to move
+   */
+  Padding& operator = (Padding&& c) noexcept {
+    if (this != &c) {
+      left_ = c.left_;
+      c.left_ = 0;
+
+      top_ = c.top_;
+      c.top_ = 0;
+
+      right_ = c.right_;
+      c.right_ = 0;
+
+      bottom_ = c.bottom_;
+      c.bottom_ = 0;
+    }
+    return *this;
+  }
+
+  /**
+   * @brief Gets left value of padding.
+   * @since_tizen 5.5
+   * @return The left value of padding
+   */
   int GetLeft() const {
     return left_;
   }
+
+  /**
+   * @brief Gets top value of padding.
+   * @since_tizen 5.5
+   * @return The top value of padding
+   */
   int GetTop() const {
     return top_;
   }
+
+  /**
+   * @brief Gets right value of padding.
+   * @since_tizen 5.5
+   * @return the right value of padding
+   */
   int GetRight() const {
     return right_;
   }
+
+  /**
+   * @brief Gets bottom value of padding.
+   * @since_tizen 5.5
+   * @return The bottom value of padding.
+   */
   int GetBottom() const {
     return bottom_;
   }
@@ -100,6 +309,11 @@ class EXPORT_API Padding {
   int bottom_;
 };  // class  Padding
 
+/**
+ * @brief The class for geometry data.
+ * @details There are x, y, width, height value.
+ * @since_tizen 5.5
+ */
 class EXPORT_API Geometry {
  public:
   Geometry() {
@@ -112,15 +326,106 @@ class EXPORT_API Geometry {
   }
   virtual ~Geometry() = default;
 
+  /**
+   * @brief Copy-constructor.
+   * @since_tizen 5.5
+   * @param[in] c The object to copy
+   */
+  Geometry(const Geometry& c) {
+    x_ = c.x_;
+    y_ = c.y_;
+    w_ = c.w_;
+    h_ = c.h_;
+  }
+
+  /**
+   * @brief Assignment.
+   * @since_tizen 5.5
+   * @param[in] c The object to copy
+   */
+  Geometry& operator = (const Geometry& c) {
+    if (this != &c) {
+      x_ = c.x_;
+      y_ = c.y_;
+      w_ = c.w_;
+      h_ = c.h_;
+    }
+    return *this;
+  }
+
+  /**
+   * @brief Move-constructor.
+   * @since_tizen 5.5
+   * @param[in] c The object to move
+   */
+  Geometry(Geometry&& c) noexcept {
+    x_ = c.x_;
+    c.x_ = 0;
+
+    y_ = c.y_;
+    c.y_ = 0;
+
+    w_ = c.w_;
+    c.w_ = 0;
+
+    h_ = c.h_;
+    c.h_ = 0;
+  }
+
+  /**
+   * @brief Assignment.
+   * @since_tizen 5.5
+   * @param[in] c The object to move
+   */
+  Geometry& operator = (Geometry&& c) noexcept {
+    if (this != &c) {
+      x_ = c.x_;
+      c.x_ = 0;
+
+      y_ = c.y_;
+      c.y_ = 0;
+
+      w_ = c.w_;
+      c.w_ = 0;
+
+      h_ = c.h_;
+      c.h_ = 0;
+    }
+    return *this;
+  }
+
+  /**
+   * @brief Gets x value of geometry.
+   * @since_tizen 5.5
+   * @return The x value of geometry.
+   */
   int GetX() const {
     return x_;
   }
+
+  /**
+   * @brief Gets y value of geometry.
+   * @since_tizen 5.5
+   * @return The y value of geometry.
+   */
   int GetY() const {
     return y_;
   }
+
+  /**
+   * @brief Gets width value of geometry.
+   * @since_tizen 5.5
+   * @return The width value of geometry.
+   */
   int GetWidth() const {
     return w_;
   }
+
+  /**
+   * @brief Gets height value of geometry.
+   * @since_tizen 5.5
+   * @return The height value of geometry.
+   */
   int GetHeight() const {
     return h_;
   }
@@ -132,64 +437,280 @@ class EXPORT_API Geometry {
   int h_;
 };  // class Geometry
 
+/**
+ * @brief The class for style data
+ * @details The style data consists color, padding, geometry data.
+ * @since_tizen 5.5
+ */
 class EXPORT_API Style {
  public:
   Style() {
   }
-  Style(Color color, Padding padding, Geometry geometry)
+
+  Style(std::shared_ptr<Color> color, std::shared_ptr<Padding> padding,
+      std::shared_ptr<Geometry> geometry)
     : color_(color), padding_(padding), geometry_(geometry) {
   }
+
+  Style(std::shared_ptr<Color> color, std::shared_ptr<Padding> padding,
+      std::shared_ptr<Geometry> geometry,
+      std::shared_ptr<Color> background_color, std::string background_image)
+    : color_(color), padding_(padding), geometry_(geometry),
+      background_color_(background_color),
+      background_image_path_(background_image) {
+  }
+
   virtual ~Style() = default;
 
-  Padding GetPadding() const {
+  /**
+   * @brief Copy-constructor.
+   * @since_tizen 5.5
+   * @param[in] c The object to copy
+   */
+  Style(const Style& c) {
+    color_ = c.color_;
+    padding_ = c.padding_;
+    geometry_ = c.geometry_;
+    background_color_ = c.background_color_;
+    background_image_path_ = c.background_image_path_;
+  }
+
+  /**
+   * @brief Assignment.
+   * @since_tizen 5.5
+   * @param[in] c The object to copy
+   */
+  Style& operator = (const Style& c) {
+    if (this != &c) {
+      color_ = c.color_;
+      padding_ = c.padding_;
+      geometry_ = c.geometry_;
+      background_color_ = c.background_color_;
+      background_image_path_ = c.background_image_path_;
+    }
+    return *this;
+  }
+
+  /**
+   * @brief Move-constructor.
+   * @since_tizen 5.5
+   * @param[in] c The object to move
+   */
+  Style(Style&& c) noexcept {
+    color_ = c.color_;
+    c.color_ = nullptr;
+
+    padding_ = c.padding_;
+    c.padding_ = nullptr;
+
+    geometry_ = c.geometry_;
+    c.geometry_ = nullptr;
+
+    background_color_ = c.background_color_;
+    c.background_color_ = nullptr;
+
+    background_image_path_ = c.background_image_path_;
+    c.background_image_path_ = "";
+  }
+
+  /**
+   * @brief Assignment.
+   * @since_tizen 5.5
+   * @param[in] c The object to move
+   */
+  Style& operator = (Style&& c) noexcept {
+    if (this != &c) {
+      color_ = c.color_;
+      c.color_ = nullptr;
+
+      padding_ = c.padding_;
+      c.padding_ = nullptr;
+
+      geometry_ = c.geometry_;
+      c.geometry_ = nullptr;
+
+      background_color_ = c.background_color_;
+      c.background_color_ = nullptr;
+
+      background_image_path_ = c.background_image_path_;
+      c.background_image_path_ = "";
+    }
+    return *this;
+  }
+
+  /**
+   * @brief Gets padding data
+   * @since_tizen 5.5
+   * @return The padding data
+   */
+  std::shared_ptr<Padding> GetPadding() const {
     return padding_;
   }
-  Color GetColor() const {
+
+  /**
+   * @brief Sets padding data
+   * @since_tizen 5.5
+   * @param[in] padding The padding data
+   */
+  void SetPadding(std::shared_ptr<Padding> padding) {
+    padding_ = std::move(padding);
+  }
+
+  /**
+   * @brief Gets color data
+   * @since_tizen 5.5
+   * @return The color data
+   */
+  std::shared_ptr<Color> GetColor() const {
     return color_;
   }
-  Geometry GetGeometry() const {
+
+  /**
+   * @brief Sets color data
+   * @since_tizen 5.5
+   * @param[in] color The color data
+   */
+  void SetColor(std::shared_ptr<Color> color) {
+    color_ = std::move(color);
+  }
+
+  /**
+   * @brief Gets geometry data
+   * @since_tizen 5.5
+   * @return The geometry data
+   */
+  std::shared_ptr<Geometry> GetGeometry() const {
     return geometry_;
   }
 
+  /**
+   * @brief Sets geometry data
+   * @since_tizen 5.5
+   * @param[in] geometry The geometry data
+   */
+  void SetGeometry(std::shared_ptr<Geometry> geometry) {
+    geometry_ = std::move(geometry);
+  }
+
+  /**
+   * @brief Gets background image path
+   * @since_tizen 5.5
+   * @param[in] image_path The background image path
+   */
+  void SetBackgroundImage(std::string image_path) {
+    background_image_path_ = std::move(image_path);
+  }
+
+  /**
+   * @brief Gets background image path
+   * @since_tizen 5.5
+   * @return The background image path
+   */
+  std::string GetBackgroundImage() const {
+    return background_image_path_;
+  }
+
+  /**
+   * @brief Sets background color
+   * @since_tizen 5.5
+   */
+  void SetBackgroundColor(std::shared_ptr<Color> color) {
+    background_color_ = std::move(color);
+  }
+
+  /**
+   * @brief Gets background color
+   * @since_tizen 5.5
+   * @return The background color
+   */
+  std::shared_ptr<Color> GetBackgroundColor() const {
+    return background_color_;
+  }
+
  private:
-  Color color_;
-  Padding padding_;
-  Geometry geometry_;
+  std::shared_ptr<Color> color_;
+  std::shared_ptr<Padding> padding_;
+  std::shared_ptr<Geometry> geometry_;
+  std::shared_ptr<Color> background_color_;
+  std::string background_image_path_;
 };  // class Style
 
+/**
+ * @brief The class for LED data.
+ * @details The LED data consists color data and period time.
+ * @since_tizen 5.5
+ */
 class EXPORT_API LEDInfo {
  public:
   LEDInfo() {
-    Color(0, 0, 0, 0);
   }
-  explicit LEDInfo(Color color)
+  explicit LEDInfo(std::shared_ptr<Color> color)
     : color_(color) {
   }
   virtual ~LEDInfo() = default;
 
+  /**
+   * @brief Sets the time period for turning on the LED
+   * @since_tizen 5.5
+   * @param[in] ms period time
+   */
   void SetOnPeriod(int ms) {
     on_period_ = ms;
   }
+
+  /**
+   * @brief Gets the time period for turning on the LED
+   * @since_tizen 5.5
+   * @return The time for turning on the LED
+   */
   int GetOnPeriod() const {
     return on_period_;
   }
+
+  /**
+   * @brief Sets the time period for turning off the LED
+   * @since_tizen 5.5
+   * @param[in] ms period time
+   */
   void SetOffPeriod(int ms) {
     off_period_ = ms;
   }
+
+  /**
+   * @brief Gets the time period for turning off the LED
+   * @since_tizen 5.5
+   * @return The time for turning off the LED
+   */
   int GetOffPeriod() const {
     return off_period_;
   }
 
-  Color GetColor() const {
+  /**
+   * @brief Gets the color of LED
+   * @since_tizen 5.5
+   * @return color data
+   */
+  std::shared_ptr<Color> GetColor() const {
     return color_;
   }
 
+  void SetColor(std::shared_ptr<Color> color) {
+    color_ = std::move(color);
+  }
+
  private:
-  Color color_;
+  std::shared_ptr<Color> color_;
   int on_period_ = 0;
   int off_period_ = 0;
 };  // clss LEDInfo
 
+/**
+ * @brief The base class for the notification item classes.
+ * @details The AbstractItem is abstract class.
+ *          The AbstractItem has basic APIs for notification items.
+ *          The notification item class have to be a derived class of this class.
+ * @since_tizen 5.5
+ */
 class EXPORT_API AbstractItem {
  public:
   enum Type {
@@ -215,51 +736,361 @@ class EXPORT_API AbstractItem {
     SimMode = 1 << 1,
   };
 
+  enum MainType {
+    MainNone = 0,
+    MainTitle,
+    MainContents,
+    MainIcon,
+    MainButton
+  };
+
  public:
+  /**
+   * @brief Constructor
+   * @since_tizen 5.5
+   * @param[in] action The AbstractAction for notification item
+   */
   AbstractItem(
       std::shared_ptr<AbstractAction> action = std::shared_ptr<AbstractAction>({}));
+
+  /**
+   * @brief Constructor
+   * @since_tizen 5.5
+   * @param[in] id The notification id
+   * @param[in] action The AbstractAction for notification item
+   */
   AbstractItem(std::string id,
       std::shared_ptr<AbstractAction> action = std::shared_ptr<AbstractAction>({}));
+
+  /**
+   * @brief Destructor
+   * @since_tizen 5.5
+   */
   virtual ~AbstractItem() = 0;
-  virtual Bundle Serialize() const = 0;
-  virtual void Deserialize(Bundle b) = 0;
-  virtual AbstractItem& FindByID(std::string id) = 0;
+
+  /**
+   * @brief Serialize the data of AbstractItem.
+   * @since_tizen 5.5
+   * @return Bundle type data
+   */
+  virtual tizen_base::Bundle Serialize() const = 0;
+
+  /**
+   * @brief Deserialize the serialized data.
+   * @since_tizen 5.5
+   * @param[in] b The serialized Bundle data
+   */
+  virtual void Deserialize(tizen_base::Bundle b) = 0;
+
+  /**
+   * @brief Finds the AbstractItem using by notification item id.
+   * @since_tizen 5.5
+   * @param[in] id notification item id
+   * @return AbstractItem object
+   */
+  virtual AbstractItem& FindByID(std::string id);
+
+  /**
+   * @brief Finds the AbstractItem using by main type.
+   * @since_tizen 5.5
+   * @param[in] type The main type
+   * @return AbstractItem object
+   */
+  virtual AbstractItem& FindByMainType(MainType type);
+
+  /**
+   * @brief Checks the item type exist in this notification.
+   * @since_tizen 5.5
+   * @param[in] type notification item type
+   * @return true if the item type exists
+   */
+  virtual bool IsItemTypeExist(int type) = 0;
+
+  /**
+   * @brief Gets the type of notification item.
+   * @since_tizen 5.5
+   * @return The type of notification item
+   */
   virtual int GetType() const = 0;
-  static int GetType(Bundle b);
+
+  /**
+   * @brief Gets the type of notification item from Bundle data.
+   * @since_tizen 5.5
+   * @return The type of notification item
+   */
+  static int GetType(tizen_base::Bundle b);
+
+  /**
+   * @brief Gets the path of shared file location.
+   * @since_tizen 5.5
+   * @return The list of shared path.
+   */
   virtual std::list<std::string> GetSharedPath() const;
+
+  /**
+   * @brief Sets the shared file path to original file path.
+   */
+  virtual void SetSharedPath();
+
+  /**
+   * @brief
+   * @since_tizen 5.5
+   * @return
+   */
+  virtual std::list<std::map<std::string, std::string>> GetPathMapList() const;
+
+  /**
+   * @brief Gets the notification item id.
+   * @since_tizen 5.5
+   * @return The notification item id.
+   */
   std::string GetId() const;
+
+  /**
+   * @brief Sets the notification item id.
+   * @since_tizen 5.5
+   * @param[in] id notification item id
+   */
   void SetId(std::string id);
+
+  std::vector<std::shared_ptr<MultiLanguage>> GetMultiLanguageArr() const;
+  std::shared_ptr<MultiLanguage> GetMultiLanguage() const;
+  void SetMultiLanguage(std::shared_ptr<MultiLanguage> multi);
+  void SetMultiLanguage(std::vector<std::shared_ptr<MultiLanguage>> multi_arr);
+
+  /**
+   * @brief Gets AbstractAction for notification item.
+   * @since_tizen 5.5
+   * @return AbstractAction instance
+   */
   std::shared_ptr<AbstractAction> GetAction() const;
-  void SetAction(std::shared_ptr<AbstractAction> action) const;
+
+  /**
+   * @brief Sets AbstractAction for notification item.
+   * @since_tizen 5.5
+   * @param[in] action AbstractAction instance
+   */
+  void SetAction(std::shared_ptr<AbstractAction> action);
+
+  /**
+   * @brief Sets the style data for notification item.
+   * @since_tizen 5.5
+   * @return Style instance
+   */
   std::shared_ptr<Style> GetStyle() const;
+
+  /**
+   * @brief Sets the style data for notification item.
+   * @since_tizen 5.5
+   * @param[in] style Style instance
+   */
   void SetStyle(std::shared_ptr<Style> style);
+
+  /**
+   * @brief Sets the visibile state of notification item.
+   * @since_tizen 5.5
+   * @param[in] visibile The visible state
+   */
   void SetVisible(bool visible);
+
+  /**
+   * @brief Gets the visibile state of notification item.
+   * @since_tizen 5.5
+   * @return true if visible, false if not visible.
+   */
   bool GetVisible() const;
+
+  /**
+   * @brief Sets the enable state of notification item.
+   * @since_tizen 5.5
+   * @param[in] enable The enable state
+   */
   void SetEnable(bool enable);
+
+  /**
+   * @brief Gets the enable state of notification item.
+   * @since_tizen 5.5
+   * @return true if enabled, false if not enabled.
+   */
   bool GetEnable() const;
+
+  /**
+   * @brief Adds the receiver group for notification item.
+   * @since_tizen 5.5
+   * @param[in] receiver_group The receiver group for notification item
+   */
   void AddReceiver(std::string receiver_group);
+
+  /**
+   * @brief Removes the receiver group from the receiver group list.
+   * @since_tizen 5.5
+   * @param[in] receiver_group The receiver group
+   */
   void RemoveReceiver(std::string receiver_group);
+
+  /**
+   * @brief Gets the receiver group list.
+   * @since_tizen 5.5
+   * @return The list of receiver group.
+   */
   std::list<std::string> GetReceiverList();
-  bool CanReceive(std::string id) const;
+
+  /**
+   * @brief Sets the policy for notification item.
+   * @since_tizen 5.5
+   * @param[in] policy The policy option
+   */
   void SetPolicy(int policy);
+
+  /**
+   * @brief Gets the policy for notification item.
+   * @since_tizen 5.5
+   * @return The policy for notification item.
+   */
   int GetPolicy() const;
+
+  /**
+   * @brief Gets the channel option for notification item.
+   * @since_tizen 5.5
+   * @return The channel option for notification item.
+   */
   std::string GetChannel() const;
+
+  /**
+   * @brief Sets the channel option for notification item.
+   * @since_tizen 5.5
+   * @param[in] channel The channel option for notification item.
+   */
   void SetChannel(std::string channel);
+
+  /**
+   * @brief Sets LED option for notification item.
+   * @since_tizen 5.5
+   * @param[in] led The LEDInfo instance
+   */
   void SetLEDInfo(std::shared_ptr<LEDInfo> led);
+
+  /**
+   * @brief Gets LED option for notification item.
+   * @since_tizen 5.5
+   * @return The LEDInfo instance
+   */
   std::shared_ptr<LEDInfo> GetLEDInfo() const;
+
+  /**
+   * @brief Sets the sound path for notification item.
+   * @since_tizen 5.5
+   * @param[in] path The sound path
+   */
   void SetSoundPath(std::string path);
+
+  /**
+   * @brief Sets the vibration path for notification item.
+   * @since_tizen 5.5
+   * @param[in] path The vibration path
+   */
   void SetVibrationPath(std::string path);
+
+  /**
+   * @brief Gets the sound path for notification item.
+   * @since_tizen 5.5
+   * @return The sound path
+   */
   std::string GetSoundPath() const;
+
+  /**
+   * @brief Gets the vibration path for notification item.
+   * @since_tizen 5.5
+   * @return The vibration path
+   */
   std::string GetVibrationPath() const;
+
+  /**
+   * @brief Gets IItemInfo instance to get some information of notification item.
+   * @since_tizen 5.5
+   * @return The IItemInfo instance
+   */
   std::shared_ptr<IItemInfo> GetInfo() const;
+
+  /**
+   * @brief Gets the sender app id of notification item.
+   * @since_tizen 5.5
+   * @return The sender app id.
+   */
   std::string GetSenderAppId() const;
+
+  /**
+   * @brief Sets the sender app id of notification item.
+   * @since_tizen 5.5
+   * @param[in] sender_appid The sender app id
+   */
   void SetSenderAppId(std::string sender_appid);
-  std::string GetTag();
-  void SetTag();
+
+  /**
+   * @brief Sets the tag of notification item.
+   * @since_tizen 5.5
+   * @return The tag of notification item
+   */
+  std::string GetTag() const;
+
+  /**
+   * @brief Sets the tag of notification item.
+   * @since_tizen 5.5
+   * @param[in] tag The tag of notification item
+   */
+  void SetTag(std::string tag);
+
+  /**
+   * @brief Sets the ongoing state of notification item.
+   * @since_tizen 5.5
+   * @param[in] ongoing The ongoing state of notification item
+   */
+  void SetOnGoingState(bool ongoing);
+
+  /**
+   * @brief Gets the ongoing state of notification item.
+   * @since_tizen 5.5
+   * @return The ongoing state of notification item
+   */
+  bool GetOnGoingState() const;
+
+  /**
+   * @brief Sets the main type of notification item.
+   * @since_tizen 5.5
+   * @param[in] target_id The ID of notification item to set
+   * @param[in] type The main type
+   * @return true if target_id is valid to set
+   */
+  bool SetMainType(std::string target_id, MainType type);
+
+  /**
+   * @brief Gets the main type of notification item.
+   * @since_tizen 5.5
+   * @return The main type
+   */
+  MainType GetMainType() const;
+
+  /**
+   * @brief Gets the extension data.
+   * @since_tizen 5.5
+   * @param[in] key
+   * @return Bundle
+   */
+  tizen_base::Bundle GetExtensionData(std::string key);
+
+  /**
+   * @brief Sets the extension data.
+   * @since_tizen 5.5
+   * @param[in] key key string
+   * @param[in] value Bundle
+   */
+  void SetExtensionData(std::string key, tizen_base::Bundle value);
 
  private:
   class Impl;
   std::unique_ptr<Impl> impl_;
+  void UpdateSoundPrivatePath();
+  void UpdateVibrationPrivatePath();
 };  // class AbstractItem
 
 }  // namespace item