/**
* @brief Launches add-operation.
- * @param address number or email
+ * @param[in] address number or email
* @return true in case of success, otherwise returns false.
*/
bool launch(const std::string &address, Operation operation);
/**
* @brief Set listener
- * @param l listener
+ * @param[in] l listener
*/
void setListener(IContactEditorListener *l);
public:
/**
* @brief Launches view-operation.
- * @param id Contact person id or MyProfile id
- * @param ownerType PersonType or MyProfileType
+ * @param[in] id Contact person id or MyProfile id
+ * @param[in] ownerType PersonType or MyProfileType
* @return true in case of success, otherwise returns false.
*/
static bool launch(int id, ContactAddress::OwnerType ownerType);
/**
* @brief Launches view-operation.
- * @param address reference to ContactAddress object.
+ * @param[in] address reference to ContactAddress object.
* @return true in case of success, otherwise returns false.
*/
static bool launch(const ContactAddress &address);
/**
* @brief Launches call by number
- * @param number Contact person number
+ * @param[in] number Contact person number
* @return true in case of success, otherwise returns false.
*/
static bool launch(const std::string &number);
typedef MsgList<Message> MessageList;
typedef std::shared_ptr<MsgList<Message>> MessageListRef;
+ /**
+ * @brief An abstraction that represents message-entity stored in message-service.
+ */
class Message
{
public:
+ /**
+ * @brief Each message can be sent or received, and this enum is used to distinguish the kind of every message.
+ */
enum Direction
{
- MD_Sent = 0,
- MD_Received
+ MD_Sent = 0, /**< Outgoing message.*/
+ MD_Received /**< Incoming message.*/
};
+ /**
+ * @brief A type of every message.
+ */
enum Type
{
- MT_Unknown,
- MT_SMS,
- MT_MMS,
- MT_MMS_Noti
+ MT_Unknown, /**< Unknown type of message. If you got it something bad has happened.*/
+ MT_SMS, /**< Text message - sms.*/
+ MT_MMS, /**< Multimedia message - mms.*/
+ MT_MMS_Noti /**< Depending on message-settings mms can be downloaded by demand. This type of message is aimed to notify user about new incoming mms is available to download.*/
};
+ /**
+ * @brief Status of every message.
+ */
enum NetworkStatus
{
- NS_Unknown = -1,
- NS_Not_Send,
- NS_Sending,
- NS_Send_Success,
- NS_Send_Fail,
- NS_Deliver_Success,
- NS_Deliver_Fail,
- NS_Received,
- NS_Req_Cancelled,
- NS_Retrieving,
- NS_Retrieve_Success,
- NS_Retrieve_Fail,
- NS_Deliver_Pending,
- NS_Deliver_Expired,
- NS_Send_Pending
+ NS_Unknown = -1, /**< Attempt to get message status has failed.*/
+ NS_Not_Send, /**< Message is a draft for now.*/
+ NS_Sending, /**< message is in progress of sending.*/
+ NS_Send_Success, /**< Message was successfully sent.*/
+ NS_Send_Fail, /**< Message was failed to sent.*/
+ NS_Deliver_Success, /**< Status of successfully sent delivery report.*/
+ NS_Deliver_Fail, /**< Status of delivery report sending failure.*/
+ NS_Received, /**< Incoming message.*/
+ NS_Req_Cancelled, /**< Message network status request canceled.*/
+ NS_Retrieving, /**< Message is in progress of retrieving. */
+ NS_Retrieve_Success,/**< Message was successfully retrieved.*/
+ NS_Retrieve_Fail, /**< Message was failed to retrieve.*/
+ NS_Deliver_Pending, /**< Message delivery is pending.*/
+ NS_Deliver_Expired, /**< Message delivery is expired.*/
+ NS_Send_Pending /**< Message send is pending. */
};
+ /**
+ * @brief Defines a storage for messages.
+ */
enum MessageStorageType
{
- MS_Unknown,
- MS_Phone,
- MS_Sim
+ MS_Unknown, /**< Unknown storage.*/
+ MS_Phone, /**< Phone's internal storage used for regular messages.*/
+ MS_Sim /**< Sim-card storage used for messages on SIM.*/
};
public:
virtual ~Message();
+ /**
+ * @brief Gets type of message.
+ * @return message type.
+ */
virtual Type getType() const = 0;
+
+ /**
+ * @brief Gets id of message.
+ * @return message id.
+ */
virtual MsgId getId() const = 0;
+
+ /**
+ * @brief Gets id of thread this message belongs to.
+ * @return thread id.
+ */
virtual ThreadId getThreadId() const = 0;
+
+ /**
+ * @brief Gets time when message was send\received.
+ * @return time.
+ */
virtual time_t getTime() const = 0;
+
+ /**
+ * @brief Gets list of addresses this message should be delivered to.
+ * @return recipients
+ */
virtual const MsgAddressList &getAddressList() const = 0;
+
+ /**
+ * @brief Adds one more recipient address into message.
+ * @return address added.
+ */
virtual MsgAddress &addAddress() = 0;
+
+ /**
+ * @brief Adds multiple recipient addresses into message.
+ */
virtual void addAddresses(const MsgAddressList &list) = 0;
+
+ /**
+ * @brief Gets message text.
+ * @return text.
+ */
virtual std::string getText() const = 0;
+
+ /**
+ * @brief Sets text into message
+ * @param[in] text message text.
+ */
virtual void setText(const std::string &text) = 0;
+
+ /**
+ * @brief Figures out whether message is outgoing or incoming.
+ * @return direction(in\out).
+ */
virtual Message::Direction getDirection() const = 0;
+
+ /**
+ * @brief Gets message network status.
+ * @return network status.
+ */
virtual NetworkStatus getNetworkStatus() const = 0;
+
+ /**
+ * @brief Returns message size,
+ * @return size.
+ */
virtual int getSize() const = 0;
+
+ /**
+ * @brief Gets message's subject if there's any.
+ * @return a subject string.
+ */
virtual std::string getSubject() const = 0;
+
+ /**
+ * @brief Adds subject-string into a message or replacing old one if message the subject.
+ * @param[in] text a new subject
+ */
virtual void setSubject(const std::string &text) = 0;
+
+ /**
+ * @brief Changes message's storage type.
+ * @param[in] msgStorage new storage type.
+ */
virtual void setMessageStorageType(Message::MessageStorageType msgStorage) = 0;
+
+ /**
+ * @brief Gets type of storage that contains this message.
+ */
virtual Message::MessageStorageType getMessageStorageType() const = 0;
+
+ /**
+ * @brief Checks whether this message is mms or not.
+ * @return true in case of mms, false otherwise.
+ */
virtual bool isMms() const = 0;
};
}
namespace Msg
{
- // TODO: rename to MessageSms
class MessageSMS;
typedef std::shared_ptr<MessageSMS> MessageSMSRef;
typedef MsgList<MessageSMS> MessageSMSList;
typedef MsgList<MsgAddress> MsgAddressList;
typedef std::shared_ptr<MsgList<MsgAddress>> MsgAddressListRef;
+ /**
+ * @brief Basic abstraction that represents a recipient's address message should be delivered to.
+ */
class MsgAddress
{
public:
+ /**
+ * @brief Type of address.
+ */
enum AddressType
{
- Phone,
- Email,
- UnknownAddressType
+ Phone, /**< Phone number*/
+ Email, /**< Email address*/
+ UnknownAddressType /**< Unknown address, you get it if phone number format or email-format validations has failed to parce address.*/
};
+ /**
+ * @brief A kind of recipient that defines a way how message should be delivered to this address.
+ */
enum RecipientType
{
- To,
- Cc,
- Bcc,
+ To, /**< Primary recipient, messages are sent directly to this address.*/
+ Cc, /**< "Carbon copy", secondary recipient. This address gets a message as a copy of original message sent to other "TO"-recipient.*/
+ Bcc, /**< "Blind carbon copy" to tertiary recipients who receive the message. The primary and secondary recipients cannot see the tertiary recipients.*/
UnknownRecipientType
};
public:
virtual ~MsgAddress() {};
+ /**
+ * @brief Gets address string.
+ * @return address string.
+ **/
virtual std::string getAddress() const = 0;
+
+ /**
+ * @brief Gets address type.
+ * @return address type.
+ **/
virtual AddressType getAddressType() const = 0;
+
+ /**
+ * @brief Gets recipient type.
+ * @return recipient type.
+ **/
virtual RecipientType getRecipientType() const = 0;
+ /**
+ * @brief Sets address-string.
+ * @param[in] address address string.
+ */
virtual void setAddress(const std::string &address) = 0;
+
+ /**
+ * @brief Sets type of address.
+ * @param[in] type address type.
+ */
virtual void setAddressType(AddressType type) = 0;
+
+ /**
+ * @brief Sets recipient type.
+ * @param[in] type recipient type.
+ */
virtual void setRecipientType(RecipientType type) = 0;
};
typedef std::shared_ptr<MsgConversationItem> MsgConversationItemRef;
typedef std::shared_ptr<MsgList<MsgConversationItem>> MsgConversationListRef;
+ /**
+ * @brief An interface that provides basic information about conversation-list item.
+ */
class MsgConversationItem
{
public:
virtual ~MsgConversationItem();
+ /**
+ * @brief Gets id of thread this conversation-item belongs to.
+ * @return thread id.
+ */
virtual ThreadId getThreadId() const = 0;
+
+ /**
+ * @brief Gets id of message this conversation-item is related with.
+ * @return message id.
+ */
virtual MsgId getMsgId() const = 0;
+
+ /**
+ * @brief Gets message-text displayed in conversation-item.
+ * @return message text.
+ */
virtual std::string getText() const = 0;
+
+ /**
+ * @brief Gets subject-string.
+ * @brief subject.
+ */
virtual std::string getSubject() const = 0;
+
+ /**
+ * @brief Gets a time when message status was updated last time(it could happen after sending\receiving\editing draft/etc).
+ * @return time.
+ */
virtual time_t getTime() const = 0;
+
+ /**
+ * @brief Gets message direction.
+ * @return direction: Outgoing or Incoming
+ */
virtual Message::Direction getDirection() const = 0;
+
+ /**
+ * @brief Gets message type.
+ * @return message type.
+ */
virtual Message::Type getType() const = 0;
+
+ /**
+ * @brief Gets message network status.
+ * @return message network status.
+ */
virtual Message::NetworkStatus getNetworkStatus() const = 0;
+
+ /**
+ * @brief Checks whether conversation-item is related to draft message or not.
+ * @return true if message is draft, false otherwise.
+ */
virtual bool isDraft() const = 0;
+
+ /**
+ * @brief Checks whether conversation-item is related to read message or not.
+ * @return true if message is read, false otherwise.
+ */
virtual bool isRead() const = 0;
+
+ /**
+ * @brief Gets the count of pages message related to this conversation item contains.
+ * @return number of pages.
+ */
virtual int getPagesCount() const = 0;
+
+ /**
+ * @brief Gets the count of attachments message related to this conversation item contains.
+ * @return number of attachments.
+ */
virtual int getAttachCount() const = 0;
- virtual std::string getAttachName() const = 0;
- virtual const MsgConvMediaList &getMediaList() const = 0;
- // TODO: check this methods
- virtual std::string getAudioName() const = 0;
- virtual std::string getImageThumbPath() const = 0;
- virtual std::string getVideoThumbPath() const = 0;
- virtual std::string getFirstMediaPath() const = 0;
+ /**
+ * @brief Gets media-files list.
+ * @return media-files list.
+ */
+ virtual const MsgConvMediaList &getMediaList() const = 0;
};
}
namespace Msg
{
+ /**
+ * @brief Core-instance of whole mechanism that interacts with message-service.
+ */
class MsgEngine
{
public:
MsgEngine();
~MsgEngine();
+ /**
+ * @brief Initiates connection to message-service.
+ * @returns msg-service specific success code in case of success, otherwise returns error-code.
+ */
int openService();
+
+ /**
+ * @brief Closes connection to message-service.
+ * @returns msg-service specific success code in case of success, otherwise returns error-code.
+ */
int closeService();
+ /**
+ * @brief Checks whether message-service opened is ready to operate(was openService() called before or not).
+ * @param[out] error-message string filled if no connection to message service was opened.
+ * @result true if message-service is already opened, otherwise false.
+ */
bool isReady(std::string &errorMsg) const;
MsgStorage &getStorage();
MsgComposer &getComposer();
const MsgComposer &getComposer() const;
+ /**
+ * @brief Converts msg-service error codes into a string representation.
+ * @param[in] error an msg-service side error code
+ * @result msg-service define name string, e.g "MESSAGES_ERROR_NONE" for MESSAGES_ERROR_NONE code.
+ */
static std::string whatError(int error);
+
+ /**
+ * @brief Calculates input text length by encode type.
+ * @param[in] text input text.
+ * @param[out] text metric.
+ **/
static void calculateTextMetric(const std::string &text, MsgTextMetric &textMetric);
private:
namespace Msg
{
+ /**
+ * @brief Generic container for message-objects.
+ */
template<typename T>
class MsgList
{
public:
virtual ~MsgList() {}
+
+ /**
+ * @brief Constant getter by index..
+ * @param[in] i index.
+ * @return message-object.
+ */
virtual const T &at(int i) const = 0;
+
+ /**
+ * @brief Nonconstant getter by index..
+ * @param[in] i index.
+ * @return message-object.
+ */
virtual T &at(int i) = 0;
+
+ /**
+ * @brief Gets count of message-objects list contains.
+ * @return list size.
+ */
virtual int getLength() const = 0;
inline const T &operator[](int i) const
return at(i);
}
+ /**
+ * @brief Checks if list is empty or not.
+ * @return true if list is empty, false otherwise.
+ */
inline bool isEmpty() const
{
return getLength() <= 0;
typedef MsgList<MsgMedia> MsgMediaList;
typedef std::shared_ptr<MsgList<MsgMedia>> MsgMediaListRef;
+ /**
+ * @brief represents a file to be attached to message.
+ */
class MsgMedia
{
public:
+ /**
+ * @brief Attacment-type.
+ */
enum Type
{
- UnknownType = 0,
- ImageType,
- AudioType,
- VideoType,
- TextType,
- AnimateType,
- ImageOrVideoType
+ UnknownType = 0, /**< File type unsupported by smil-player, can't be played by smil-player. Attached as unknown filetype.*/
+ ImageType, /**< Image file. Can be played with smil-player.*/
+ AudioType, /**< Audio file. Can be played with smil-player.*/
+ VideoType, /**< Video file. Can be played with smil-player.*/
+ TextType, /**< Text-section of page.*/
+ AnimateType, /**< Animated vector graphics or other animated format supported by smil-player. */
+ ImageOrVideoType //TODO: I'm unused enum-item, remove me.
};
public:
virtual ~MsgMedia() {};
+ /**
+ * @brief Gets type of media.
+ * @return media type.
+ */
virtual Type getType() const = 0;
+
+ /**
+ * @brief Gets path to file.
+ * @return path.
+ */
virtual std::string getFilePath() const = 0;
+
+ /**
+ * @brief Gets filename.
+ * @return filename.
+ */
virtual std::string getFileName() const = 0;
+ /**
+ * @brief Sets path to file.
+ * @param[in] path.
+ */
virtual void setFilePath(const std::string &path) = 0;
+
+ /**
+ * @brief Sets filename.
+ * @param[in] filename.
+ */
virtual void setFileName(const std::string &name) = 0;
};
}
typedef MsgList<MsgPage> MsgPageList;
typedef std::shared_ptr<MsgList<MsgPage>> MsgPageListRef;
+ /**
+ * @brief An abstraction that represents a concept of "page".
+ * This is a part of MMS that contains one previewable attachment(video or image) and a number of attachments that have no preview(documents, audio-files etc).
+ */
class MsgPage
{
public:
virtual ~MsgPage();
+ /**
+ * @brief Non-constant getter of media-attachment list.
+ * @return list of media-attachments.
+ */
virtual MsgMediaList &getMediaList() = 0;
+
+ /**
+ * @brief Constant getter of media-attachment list.
+ * @return read-only media-attachment list.
+ */
const MsgMediaList &getMediaList() const;
+
+ /**
+ * @brief Adds media to pages.
+ * @return media-structure that was added.
+ */
virtual MsgMedia &addMedia() = 0;
+
+ /**
+ * @brief Sets page duration.
+ * @param[in] duration page duration in seconds.
+ */
virtual void setPageDuration(int duration) = 0;
+
+ /**
+ * @brief Gets page duration.
+ * @return duration page duration in seconds.
+ */
virtual int getPageDuration() const = 0;
};
}
class IMsgStorageListener;
class MsgDataContainer;
+ /**
+ * @brief Instance responsible for interaction with message-service internal message-storage.
+ */
class MsgStorage
{
public:
MsgStorage();
virtual ~MsgStorage();
+ /**
+ * @brief Adds a subscriber to be notified about message-storage events.
+ * @param[in] listener object listening message-storage events.
+ */
void addListener(IMsgStorageListener &listener);
+
+ /**
+ * @brief Removes a subscriber if it was added before. If no such subscriber was added nothing happens.
+ * @param[in] listener a subscriber to be removed.
+ */
void removeListener(IMsgStorageListener &listener);
// Thread:
+ /**
+ * @brief Gets list of threads existing in message-storage.
+ * @return list of threads
+ */
virtual MsgThreadListRef getThreadList() = 0;
+
+ /**
+ * @brief Gets thread by a specified id.
+ * @param[in] id a thread-id
+ * @return thread with id specified
+ */
virtual MsgThreadItemRef getThread(ThreadId id) = 0;
+
+ /**
+ * @brief Gets thread by a specified address-list.
+ * @param[in] addressList a list of recipient-addresses unique for each thread
+ * @return thread with id specified
+ */
virtual ThreadId getThreadId(const MsgAddressList &addressList) = 0;
+
+ /**
+ * @brief Gets thread by a specified address-list.
+ * @param[in] list of recipient-addresses unique for each thread packed packed in std::list.
+ * @return thread with id specified
+ */
virtual ThreadId getThreadId(const std::list<std::string> &addressList) = 0;
+
+ /**
+ * @brief Gets thread by a specified message-id.
+ * @param[in] id unique message-id this thread contains.
+ * @return thread with id specified
+ */
virtual ThreadId getThreadId(MsgId id) = 0;
+
+ /**
+ * @brief Deletes thread with specified id.
+ * @param[in] id id of thread to be removed.
+ * @return true in case of success, otherwise false.
+ */
virtual bool deleteThread(ThreadId id) = 0;
+
+ /**
+ * @brief Gets address-list of a thread with specified id.
+ * @param[in] id id of thread that contains address list to be removed.
+ * @return list of addresses for specified thread.
+ */
virtual MsgAddressListRef getAddressList(ThreadId id) = 0;
+
+ /**
+ * @brief Performs a search by specified keyword.
+ * @param[in] word a search keyword.
+ * @return list of threads that contain messages with text matched with a keyword.
+ */
virtual MsgThreadListRef searchThread(const std::string &word) = 0;
+
+ /**
+ * @brief Marks thread with specified id as read.
+ * @param[in] id id of thread to mark as read.
+ */
virtual void setReadStatus(ThreadId id) = 0;
+
+ /**
+ * @brief Gets number of threads with unread messages.
+ * @return number of unread threads.
+ */
virtual int getUnreadThreadCount() const = 0;
+
+ /**
+ * @brief Checks whether thread with specified id has email in it's address-list.
+ * @param[in] id an id of thread.
+ * @return true if thread has email in it's address-list, otharwise false.
+ */
bool hasEmail(ThreadId id);
// Message:
+ /**
+ * @brief Gets a list of messages on SIM.
+ * @return list messages on SIM.
+ */
virtual MessageSMSListRef getSimMsgList() = 0;
+
+ /**
+ * @brief Gets message by specified message-id.
+ * @param[in] id id of message to be found.
+ * @return found message if it's exists or empty MessageRef if search fails.
+ */
virtual MessageRef getMessage(MsgId id) = 0;
+
+ /**
+ * @brief Commits edited message into message-storage in two optional way:
+ * -# save existing message
+ * -# create a copy of source message
+ * @param[out] msg message to be saved.
+ * @param[in] a updateExisting flag that defines a saving strategy. If true the existing message is saved, otherwise a new message-copy is created.
+ * @return id of saved message.
+ */
virtual MsgId saveMessage(Message &msg, bool updateExisting) = 0;
+
+ /**
+ * @brief Deletes single message with specified id.
+ * @param[in] id an id of message to be removed.
+ * @return true in case of successful deletion, otherwise false.
+ */
virtual bool deleteMessage(MsgId id) = 0;
+
+ /**
+ * @brief Deletes multiple messages with specified ids.
+ * @param[in] idList list of message-id to be removed.
+ * @return true in case of successful deletion, otherwise false. Also returns false if idList is empty.
+ */
virtual bool deleteMessages(const MsgIdList &idList) = 0;
+
+ /**
+ * @brief Performs search of a message based on a keyword.
+ * @param[in] word a search keyword.
+ * @return list of messages with text matched with a keyword.
+ */
virtual MessageListRef searchMessage(const std::string &word) = 0;
+
+ /**
+ * @brief Marks message with specified id as read.
+ * @param[in] id id of message to mark as read
+ * @param[in] new read-status a status of message. Set @c true if the message is read, otherwise set @c false if the message is not read
+ */
virtual void setReadStatus(MsgId id, bool status) = 0;
+
+ /**
+ * @brief Gets list of reports(Delivery/Read) relevand for mwssage with specified id.
+ * @param[in] msgId message-id.
+ * @return list of reports.
+ */
virtual MsgReportListRef getMsgReportList(MsgId msgId) = 0;
+
virtual bool isReadReportChecked(MsgId msgId) = 0; // TODO: remove to MmsMessage
virtual bool isDeliverReportChecked(MsgId msgId) = 0; //TODO: remove to MmsMessage
// Conversation:
+ /**
+ * @brief Gets conversation-list that belongs to thread with specified id.
+ * @param[in] id thread id.
+ * @return List of messages from thread.
+ */
virtual MsgConversationListRef getConversationList(ThreadId id) = 0;
+
+ /**
+ * @brief Gets an item from conversation-list corresponded to message with specified id.
+ * @param[in] id message id.
+ * @return Conversation-list item.
+ */
virtual MsgConversationItemRef getConversationItem(MsgId id) = 0;
protected:
MsgStorageListeners m_Listeners;
};
+
+ /**
+ * @brief A listener aimed to notify subscribers about message-storage events.
+ */
class IMsgStorageListener
{
public:
virtual ~IMsgStorageListener() {};
- // TODO: delete this
- virtual void onMsgStorageChange(const MsgIdList &msgIdList) {};
-
+ /**
+ * @brief Message-storage updates for the given messages.
+ * @param[in] msgIdList list of message identifiers relevant to this notification.
+ */
virtual void onMsgStorageUpdate(const MsgIdList &msgIdList) {};
+
+ /**
+ * @brief Notification about new messages addition.
+ * @param[in] msgIdList list of message identifiers relevant to this notification.
+ */
virtual void onMsgStorageInsert(const MsgIdList &msgIdList) {};
+
+ /**
+ * @brief Notification about new messages deletion.
+ * @param[in] msgIdList list of message identifiers relevant to this notification.
+ */
virtual void onMsgStorageDelete(const MsgIdList &msgIdList) {};
+
+ /**
+ * @brief Notifies that recipient stored in contacts was updated.
+ * @param[in] msgIdList list of message identifiers relevant to this notification.
+ */
virtual void onMsgStorageContact(const MsgIdList &msgIdList) {};
};
}
typedef std::shared_ptr<MsgThreadItem> MsgThreadItemRef;
typedef std::shared_ptr<MsgList<MsgThreadItem>> MsgThreadListRef;
+ /**
+ * @brief An interface that should be implemented by data-structure responsible for accessing basic thread information.
+ */
class MsgThreadItem
{
public:
virtual ~MsgThreadItem();
+ /**
+ * @brief Gets thread-id.
+ * @return thread-id.
+ */
virtual ThreadId getId() const = 0;
+
+ /**
+ * @brief Gets thread-name.
+ * @return thread-name.
+ */
virtual std::string getName() const = 0;
+
+ /**
+ * @brief Gets text of the latest message in the thread.
+ * @return text of last message.
+ */
virtual std::string getLastMessage() const = 0;
+
+ /**
+ * @brief Gets time when last message was updated\sent\received.
+ * @return thread's last message update/send/received time.
+ */
virtual time_t getTime() const = 0;
+
+ /**
+ * @brief Checks whether thread has draft message or not.
+ * @return true if there's draft message, otherwise false.
+ */
virtual bool hasDraftMessage() const = 0;
+
+ /**
+ * @brief Checks whether thread has failed message or not.
+ * @return true if there's failed message, otherwise false.
+ */
virtual bool hasFailedMessage() const = 0;
+
+ /**
+ * @brief Checks whether thread has message in progress of sending or not.
+ * @return false if no message from thread is sending now, otherwise trtue.
+ */
virtual bool isSending() const = 0;
+
+ /**
+ * @brief Gets number of unread messages in thread.
+ * @return number of unread messages.
+ */
virtual int getUnreadCount() const = 0;
};
}
namespace Msg
{
+ /**
+ * @brief Manages sending(receiving) messages activity.
+ */
class MsgTransport
{
public:
+ /**
+ * @brief Possible results message sending could cause to.
+ */
enum SendResult
{
- SendSuccess = 0,
- SendFail = -1,
- SendNullPointer = -2,
- SendNoSIM = -3,
- SendMemoryFull = -4,
- SendDPMRestricted = -5,
+ SendSuccess = 0, /**< Sending successful.*/
+ SendFail = -1, /**< Sending failure.*/
+ SendNullPointer = -2, /**< Invalid parameter passed into sendMessage().*/
+ SendNoSIM = -3, /**< No SIM was found.*/
+ SendMemoryFull = -4, /**< No free space available for message-storage.*/
+ SendDPMRestricted = -5, /**< Sending message is restricted by DPM.*/
};
public:
MsgTransport();
virtual ~MsgTransport();
+ /**
+ * @brief Message-service specific implementation of sending message of any type(sms or mms).
+ * @param[in, out] msg a message to be sent.
+ * @param[out] threadId an id of thread the sent message belongs to.
+ * @return result-code.
+ */
virtual SendResult sendMessage(Message &msg, ThreadId *threadId = nullptr) = 0;
+
+ /**
+ * @brief General(for calling by client) implementation of sending message of any type(sms or mms).
+ * @param[in, out] msg a message to be sent.
+ * @param[out] threadId an id of thread the sent message belongs to.
+ * @return result-code.
+ */
SendResult sendMessage(MessageRef &msg, ThreadId *threadId = nullptr);
+
+ /**
+ * @brief Sending MMS.
+ * @param[in, out] msg a message to be sent.
+ * @param[out] threadId an id of thread the sent message belongs to.
+ * @return result-code.
+ */
SendResult sendMessage(MessageMmsRef &msg, ThreadId *threadId = nullptr);
+
+ /**
+ * @brief Sending SMS.
+ * @param[in, out] msg a message to be sent.
+ * @param[out] threadId an id of thread the sent message belongs to.
+ * @return result-code.
+ */
SendResult sendMessage(MessageSMSRef &msg, ThreadId *threadId = nullptr);
+ /**
+ * @brief Manually downloads MMS by demand.
+ * @param[in] msgId id of message to be downloaded.
+ */
virtual void retrieveMessage(MsgId msgId) = 0;
};
}
#ifdef TIZEN_PRIVATE_API
- int res = msg_open_msg_handle(&m_MsgHandle);
- MSG_LOG("handle open error = ", res);
+ result = msg_open_msg_handle(&m_MsgHandle);
+ MSG_LOG("handle open error = ", result);
m_Storage.reset(new MsgStoragePrivate(m_MsgHandle));
m_Transport.reset(new MsgTransportPrivate(m_MsgHandle));
if(m_MsgHandle)
{
#ifdef TIZEN_PRIVATE_API
- msg_close_msg_handle(&m_MsgHandle);
+ result = msg_close_msg_handle(&m_MsgHandle);
#else
result = messages_close_service(m_MsgHandle);
#endif
return attachments;
}
-std::string MsgConversationItemPrivate::getAttachName() const
-{
- return MsgUtilsPrivate::getStr(m_MsgStruct, MSG_CONV_MSG_ATTACH_NAME_STR, MSG_FILENAME_LEN_MAX);
-}
-
-std::string MsgConversationItemPrivate::getAudioName() const
-{
- return MsgUtilsPrivate::getStr(m_MsgStruct, MSG_CONV_MSG_AUDIO_NAME_STR, MSG_FILENAME_LEN_MAX);
-}
-
-std::string MsgConversationItemPrivate::getImageThumbPath() const
-{
- return MsgUtilsPrivate::getStr(m_MsgStruct, MSG_CONV_MSG_IMAGE_THUMB_PATH_STR, MSG_FILEPATH_LEN_MAX);
-}
-
-std::string MsgConversationItemPrivate::getVideoThumbPath() const
-{
- return MsgUtilsPrivate::getStr(m_MsgStruct, MSG_CONV_MSG_VIDEO_THUMB_PATH_STR, MSG_FILEPATH_LEN_MAX);
-}
-
-std::string MsgConversationItemPrivate::getFirstMediaPath() const
-{
- return MsgUtilsPrivate::getStr(m_MsgStruct, MSG_CONV_MSG_1ST_MEDIA_PATH_STR, MSG_FILEPATH_LEN_MAX);
-}
-
const MsgConvMediaListHandlePrivate &MsgConversationItemPrivate::getMediaList() const
{
msg_list_handle_t multipartList = nullptr;
namespace Msg
{
+ /**
+ * @brief Implementation of MsgConversationItem with msg-service private API usage.
+ */
class MsgConversationItemPrivate
: public MsgStructPrivate
, public MsgConversationItem
virtual bool isRead() const;
virtual int getPagesCount() const;
virtual int getAttachCount() const;
- virtual std::string getAttachName() const;
- virtual std::string getAudioName() const;
- virtual std::string getImageThumbPath() const;
- virtual std::string getVideoThumbPath() const;
- virtual std::string getFirstMediaPath() const;
virtual const MsgConvMediaListHandlePrivate &getMediaList() const;
protected:
msgIdList.push_back(pMsgIdList->msgIdList[i]);
}
- self->notifyListeners(msgIdList, &IMsgStorageListener::onMsgStorageChange);
-
switch(storageChangeType)
{
case MSG_STORAGE_CHANGE_UPDATE:
namespace Msg
{
+ /**
+ * @brief Private msg-service API specific implementation of sending messages routine.
+ */
class MsgTransportPrivate
: public MsgTransport
{
namespace Msg
{
+ /**
+ * @brief Wraps all basic Evas_Object operations and manages automatic self-removal by EVAS_CALLBACK_FREE and EVAS_CALLBACK_DEL events.
+ */
class View
: public BaseView
{
public:
View();
+ /**
+ * @brief Destroys nested Evas_Object.
+ */
void destroy();
operator Evas_Object *() const;
Evas_Object *getEo() const;
+
+ /**
+ * @brief Checks whether view is visible or not.
+ * @return true if view is visible, otherwise false.
+ */
bool isVisible() const;
+
+ /**
+ * @brief Shows view.
+ */
void show();
+
+ /**
+ * @brief Hides view.
+ */
void hide();
+
+ /**
+ * @brief Manages view's visibility.
+ * @param[in] show if true shows view, otherwise hides it.
+ */
void setVisibility(bool show);
+
+ /**
+ * @brief Moves view to specified Evas-coordinates.
+ * @param[in] x x-coordinate
+ * @param[in] y y-coordinate
+ */
void move(Evas_Coord x, Evas_Coord y);
+
+ /**
+ * @brief Sets size-weight hints.
+ * @param[in] x x-coordinate
+ * @param[in] y y-coordinate
+ */
void setSizeHintWeight(double x = EVAS_HINT_EXPAND, double y = EVAS_HINT_EXPAND);
+
+ /**
+ * @brief Sets size-align hints.
+ * @param[in] x x-coordinate
+ * @param[in] y y-coordinate
+ */
void setSizeHintAlign(double x = EVAS_HINT_FILL, double y = EVAS_HINT_FILL);
+
+ /**
+ * @brief Make the scroller minimum size limited to the minimum size of the view's content
+ *
+ * @param[in] w Enable limiting minimum size horizontally
+ * @param[in] h Enable limiting minimum size vertically
+ */
void setScrollerContentMinLimit(Eina_Bool w, Eina_Bool h);
+
+ /**
+ * @brief Sets size-weight and size-align hints in order to make view expanded.
+ */
void expand();
+
+ /**
+ * @brief Sets specified Evas_object's size-weight and size-align hints in order to make it expanded.
+ * @param[in] obj an Evas_Object to be expanded.
+ */
static void expand(Evas_Object *obj);
+
+ /**
+ * @brief Sets min size hints.
+ * @param[in] w width hint.
+ * @param[in] h height hint.
+ */
void setSizeHintMin(Evas_Coord w, Evas_Coord h);
+
+ /**
+ * @brief Sets max size hints.
+ * @param[in] w width hint.
+ * @param[in] h height hint.
+ */
void setSizeHintMax(Evas_Coord w, Evas_Coord h);
+
+ /**
+ * @brief Gets min size hints.
+ * @param[out] w width hint.
+ * @param[out] h height hint.
+ */
void getSizeHintMin(Evas_Coord *w, Evas_Coord *h) const;
+
+ /**
+ * @brief Gets max size hints.
+ * @param[out] w width hint.
+ * @param[out] h height hint.
+ */
void getSizeHintMax(Evas_Coord *w, Evas_Coord *h) const;
+
+ /**
+ * @brief Sets specified content into specified part.
+ * @param[in] content a content to set into view.
+ * @param[in] part a part content should be placed to. If part is nullptr the default part is used.
+ * @param[in] saveOldContent a flag that checks whether old view's content should be returned or not.
+ * @return if saveOldContent is true returns old content set into view before, otherwise returns nullptr.
+ */
Evas_Object *setContent(Evas_Object *content, const char *part = nullptr, bool saveOldContent = false);
+
+ /**
+ * @brief Unsets view's content.
+ * @param[in] part a part content should be removed from. If part is nullptr the default part is used.
+ * @return old view's content in case of success, nullptr in case of errors.
+ */
Evas_Object *unsetContent(const char *part = nullptr);
+
+ /**
+ * @brief Gets view's content.
+ * @param[in] part a content-part. If part is nullptr the default part is used.
+ * @return view's content in case of success, nullptr in case of errors.
+ */
Evas_Object* getContent(const char *part = nullptr) const;
+
+ /**
+ * @brief Set the ability for an view object to be focused.
+ * @param[in] enable if true view is enabled to be focused, otherwise it can not be focused.
+ */
void setFocusAllow(bool enable);
+
+ /**
+ * @brief Checks whether view can be focused or not.
+ * @return true if view is able to be focused, otherwise false.
+ */
bool getFocusAllow() const;
+
+ /**
+ * @brief Sets(unsets) focus to view.
+ * @param[in] focus if true sets focus to view, otherwise onfocuses it.
+ */
void setFocus(bool focus);
+
+ /**
+ * @brief Checks whether view is focused or not.
+ * @return true if view is focused, otherwise false.
+ */
bool getFocus() const;
- void setTranslateble(bool translateble, const char *domain, const char *part = nullptr);
+
+ /**
+ * @brief Mark the part text to be translatable or not.
+ * @param[in] translatable @c true, the part text will be translated internally. @c false, otherwise.
+ * @param[in] domain The translation domain to use.
+ * @param[in] part The part name of the translatable text, if part is nullptr the default part is used.
+ */
+ void setTranslatable(bool translatable, const char *domain, const char *part = nullptr);
+
+ /**
+ * @brief Sends a signal to edje-object.
+ * @param[in] emission The signal's name.
+ * @param[in] source The signal's source.
+ */
void emitSignal(const char *emission, const char *source);
+
+ /**
+ * @brief Sets user-data associated with specified key-string.
+ * @param[in] key a string-key.
+ * @param[in] data to be stored.
+ */
void setData(const char *key, const void *data);
+
+ /**
+ * @brief Gets data associated with specified key-string.
+ * @param[in] key a string-key.
+ * @return user-data.
+ */
void *getData(const char *key) const;
void addEventCb(Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data);
void addSmartCb(const char *event, Evas_Smart_Cb func, const void *data);
template<typename T>
static T dynamicCast(void *evasObj);
+ /**
+ * @brief Gets text placed in specified part.
+ * @param[in] part a part to get text from. If part is nullptr the default part is used.
+ * @return a text part contains. If part contains no text returns empty string.
+ */
std::string getText(const char *part = nullptr) const;
+
+ /**
+ * @brief A C-style implementation of getText().
+ */
const char *getTextCStr(const char *part = nullptr) const;
+
+ /**
+ * @brief Sets text into specified part.
+ * @param[in] text a text to be set in specified part
+ * @param[in] part a part to get text from. If part is nullptr the default part is used.
+ */
void setText(const char *text, const char *part = nullptr);
+
+ /**
+ * @brief Sets text into specified part.
+ * @param[in] text a text to be set in specified part
+ * @param[in] part a part to get text from. If part is nullptr the default part is used.
+ */
void setText(const std::string &text, const char *part = nullptr);
+
+ /**
+ * @brief Sets IDS of translatable string into specified part.
+ * @param[in] text a translatable text to be set in specified part.
+ * @param[in] part a part to get text from. If part is nullptr the default part is used.
+ */
void setText(const TText &text, const char *part = nullptr);
+
static void setText(Evas_Object *obj, const TText &text, const char *part = nullptr);
static Evas_Object *addLayout(Evas_Object *parent, const std::string &edjePath, const std::string &group);
return elm_object_focus_get(m_pEo);
}
- inline void View::setTranslateble(bool translateble, const char *domain, const char *part)
+ inline void View::setTranslatable(bool translatable, const char *domain, const char *part)
{
- elm_object_domain_part_text_translatable_set(m_pEo, part, domain, translateble);
+ elm_object_domain_part_text_translatable_set(m_pEo, part, domain, translatable);
}
inline void View::emitSignal(const char *emission, const char *source)
namespace Msg
{
+ /**
+ * @brief Wraps all basic Elm_Object_Item operations and manages automatic self-removal by delete-callback.
+ */
class ViewItem
: public BaseView
{
ViewItem& operator=(const ViewItem&) = delete;
operator Elm_Object_Item *() const;
+
+ /**
+ * @brief Destroys view-item.
+ */
virtual void destroy();
+
+ /**
+ * @brief Sets specified content into specified part.
+ * @param[in] content a content to set into view-item.
+ * @param[in] part a part content should be placed to. If part is nullptr the default part is used.
+ * @param[in] saveOldContent a flag that checks whether old view's content should be returned or not.
+ * @return if saveOldContent is true returns old content set into view before, otherwise returns nullptr.
+ */
Evas_Object *setContent(Evas_Object *content, const char *part = nullptr, bool saveOldContent = false);
+
+ /**
+ * @brief Gets view-items's content.
+ * @param[in] part a content-part. If part is nullptr the default part is used.
+ * @return view's content in case of success, nullptr in case of errors.
+ */
Evas_Object *getContent(const char *part = nullptr) const;
+
+ /**
+ * @brief Sends a signal to edje-object.
+ * @param[in] emission The signal's name.
+ * @param[in] source The signal's source.
+ */
void emitSignal(const char *signal, const char *source = "elm");
+
+ /**
+ * @brief Gets item-data.
+ * @return item-data.
+ */
void *getData() const;
+
+ /**
+ * @brief Sets item-data.
+ * @param[in] data item-data.
+ */
void setData(void *data);
+
+ /**
+ * @brief Gets Elm_Object_Item current view-item is wrapping.
+ * @return wrapped object-item.
+ */
Elm_Object_Item *getElmObjItem() const;
+
+ /**
+ * @brief Get the widget object's handle which contains a given view-item.
+ */
Evas_Object *getWidget() const;
+
+ /**
+ * @brief Disables(enables) view-item.
+ * @param[in] val if true disables view-item, otherwise enables it.
+ */
void disabled(bool val);
+
+ /**
+ * @brief Checks whether view-item is disabled or not.
+ * @return true if view-item is disabled, otherwise false.
+ */
bool isDisabled() const;
- void setTranslateble(bool translateble, const char *domain, const char *part = nullptr);
+ /**
+ * @brief Mark the part text to be translatable or not.
+ * @param[in] translatable @c true, the part text will be translated internally. @c false, otherwise.
+ * @param[in] domain The translation domain to use.
+ * @param[in] part The part name of the translatable text, if part is nullptr the default part is used.
+ */
+ void setTranslatable(bool translatable, const char *domain, const char *part = nullptr);
+
+ /**
+ * @brief Gets text placed in specified part.
+ * @param[in] part a part to get text from. If part is nullptr the default part is used.
+ * @return a text part contains. If part contains no text returns empty string.
+ */
std::string getText(const char *part = nullptr) const;
+
+ /**
+ * @brief A C-style implementation of getText().
+ */
const char *getTextCStr(const char *part = nullptr) const;
+
+ /**
+ * @brief Sets text into specified part.
+ * @param[in] text a text to be set in specified part
+ * @param[in] part a part to get text from. If part is nullptr the default part is used.
+ */
void setText(const char *text, const char *part = nullptr);
+
+ /**
+ * @brief Sets text into specified part.
+ * @param[in] text a text to be set in specified part
+ * @param[in] part a part to get text from. If part is nullptr the default part is used.
+ */
void setText(const std::string &text, const char *part = nullptr);
+
+ /**
+ * @brief Sets IDS of translatable string into specified part.
+ * @param[in] text a translatable text to be set in specified part.
+ * @param[in] part a part to get text from. If part is nullptr the default part is used.
+ */
void setText(const TText &text, const char *part = nullptr);
static void setText(Elm_Object_Item *it, const TText &text, const char *part = nullptr);
elm_object_item_part_text_set(m_pItem, part, text);
}
- inline void ViewItem::setTranslateble(bool translateble, const char *domain, const char *part)
+ inline void ViewItem::setTranslatable(bool translatable, const char *domain, const char *part)
{
- elm_object_item_domain_part_text_translatable_set(m_pItem, part, domain, translateble);
+ elm_object_item_domain_part_text_translatable_set(m_pItem, part, domain, translatable);
}
inline void ViewItem::setText(const std::string &text, const char *part)