emailservices/nmailbase/inc/nmcommon.h
changeset 18 578830873419
child 20 ecc8def7944a
equal deleted inserted replaced
4:e7aa27f58ae1 18:578830873419
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #ifndef NMCOMMON_H_
       
    19 #define NMCOMMON_H_
       
    20 
       
    21 #include <QtGlobal>
       
    22 #include <QString>
       
    23 #include <QMetaType>
       
    24 #include <QVariant>
       
    25 
       
    26 #define USE_POPIMAP_TESTPLUGIN
       
    27 
       
    28 //for pop/imap client plugins testing
       
    29 //used in uiengine, clientplugins and testplugin
       
    30 #ifdef USE_POPIMAP_TESTPLUGIN
       
    31 #define POPTESTPLUGINID 0x2000EEEE
       
    32 #define IMAPTESTPLUGINID  0x2000EEEF
       
    33 #endif
       
    34 
       
    35 /*!
       
    36     \struct NmMailboxEvent
       
    37     \brief Enumeration for mailbox related events
       
    38  */
       
    39 enum NmMailboxEvent
       
    40 {
       
    41     NmMailboxCreated,
       
    42     NmMailboxChanged,
       
    43     NmMailboxDeleted
       
    44 };
       
    45 Q_DECLARE_METATYPE(NmMailboxEvent)
       
    46 
       
    47 /*!
       
    48     \struct NmMessageEvent
       
    49     \brief Enumeration for message related events
       
    50  */
       
    51 enum NmMessageEvent
       
    52 {
       
    53     NmMessageCreated,
       
    54     NmMessageChanged,
       
    55     NmMessageDeleted
       
    56 };
       
    57 Q_DECLARE_METATYPE(NmMessageEvent)
       
    58 
       
    59 enum NmFolderType
       
    60 {
       
    61     NmFolderInbox = 1,
       
    62     NmFolderOutbox,
       
    63     NmFolderDrafts,
       
    64     NmFolderSent,
       
    65     NmFolderDeleted,
       
    66     NmFolderOther
       
    67 };
       
    68 
       
    69 enum NmConnectState
       
    70 {
       
    71 	Connecting,
       
    72 	Connected,
       
    73 	Disconnecting,
       
    74 	Disconnected
       
    75 };
       
    76 Q_DECLARE_METATYPE(NmConnectState)
       
    77 
       
    78 enum NmSyncState
       
    79 {
       
    80     Synchronizing,
       
    81     SyncComplete
       
    82 };
       
    83 Q_DECLARE_METATYPE(NmSyncState)
       
    84 
       
    85 enum NmEnvelopeProperties
       
    86 {
       
    87 	MarkAsRead,
       
    88 	MarkAsUnread
       
    89 };
       
    90 
       
    91 enum NmMessagePriority
       
    92 {
       
    93     NmMessagePriorityLow,
       
    94     NmMessagePriorityNormal,
       
    95     NmMessagePriorityHigh
       
    96 };
       
    97 
       
    98 /*!
       
    99     \struct NmMessageFlag
       
   100     \brief Enumeration for message flags
       
   101  */
       
   102 enum NmMessageFlag {
       
   103     NmMessageFlagRead = 1,
       
   104     NmMessageFlagReadLocally = 2,
       
   105     NmMessageFlagLow = 4,
       
   106     NmMessageFlagImportant = 8,
       
   107     NmMessageFlagFollowUpComplete = 16,
       
   108     NmMessageFlagFollowUp = 32,
       
   109     NmMessageFlagAttachments = 64,
       
   110     NmMessageFlagMultiple = 128,
       
   111     NmMessageFlagCalendarMsg = 256,
       
   112     NmMessageFlagAnswered = 512,
       
   113     NmMessageFlagForwarded = 1024,
       
   114     NmMessageFlagOnlyToMe = 2048,
       
   115     NmMessageFlagRemoteDeleted = 4096,
       
   116     NmMessageFlagHasMsgSender = 8192
       
   117 };
       
   118 Q_DECLARE_FLAGS(NmMessageFlags, NmMessageFlag)
       
   119 Q_DECLARE_OPERATORS_FOR_FLAGS(NmMessageFlags)
       
   120 
       
   121 /** email list sorting options */
       
   122 enum NmMailSortField
       
   123     {
       
   124     NmMailDontCare,            // user accepts any sort order
       
   125     NmMailSortByDate,          // sorting is done by date
       
   126     NmMailSortBySender,        // sorting is done by sender
       
   127     NmMailSortByRecipient,     // sorting is done by recipients
       
   128     NmMailSortBySubject,       // sorting is done by subject
       
   129     NmMailSortByPriority,      // sorting is done by priority
       
   130     NmMailSortByFlagStatus,    // follow up and completed
       
   131     NmMailSortByUnread,        // sorting is based on unread
       
   132     NmMailSortBySize,          // sorting is done by size
       
   133     NmMailSortByAttachment     // sorting is based on if message has attachments
       
   134     };
       
   135 Q_DECLARE_METATYPE(NmMailSortField)
       
   136 
       
   137 
       
   138 /** email list sort order */
       
   139 enum NmMailSortOrder
       
   140     {
       
   141 	NmMailDescending,
       
   142 	NmMailAscending
       
   143     };
       
   144 Q_DECLARE_METATYPE(NmMailSortOrder)
       
   145 
       
   146 /*!
       
   147 	NMail error codes
       
   148 */
       
   149 
       
   150 const int NmNoError = 0;
       
   151 const int NmNotFoundError = -1;
       
   152 const int NmGeneralError = -2;
       
   153 const int NmCancelError = -3;
       
   154 
       
   155 /*!
       
   156 	Predefined constants for ContentTypes and parameters
       
   157 	for ContentType and ContentDisposition
       
   158 */
       
   159 const QString NmContentTypeMultipartMixed = "multipart/mixed";
       
   160 const QString NmContentTypeMultipartAlternative = "multipart/alternative";
       
   161 const QString NmContentTypeMultipartDigest = "multipart/digest";
       
   162 const QString NmContentTypeMultipartParallel = "multipart/parallel";
       
   163 const QString NmContentTypeMultipartRelated =  "multipart/related";
       
   164 const QString NmContentTypeTextPlain = "text/plain";
       
   165 const QString NmContentTypeTextHtml = "text/html";
       
   166 const QString NmContentTypeTypeMessage = "message/rfc822";
       
   167 const QString NmContentTypeParamName = " name=";
       
   168 const QString NmContentTypeParamCharset = " charset=";
       
   169 
       
   170 const QString NmContentDispAttachment = " attachment";
       
   171 const QString NmContentDispParamFilename = " filename=";
       
   172 
       
   173 const QString NmContentDescrAttachmentHtml = "Attachment.html";
       
   174 
       
   175 
       
   176 /*!
       
   177     \class NmId
       
   178     \brief Unique identifier for any mail spesific objects like mailbox, folder,
       
   179     message, message part etc. Id is stored in unsigned 64 bit integer
       
   180  */
       
   181 class NmId
       
   182 {
       
   183 public:
       
   184 	inline NmId() : mPluginId(0), mId(0) { }
       
   185     inline NmId(quint64 combinedId);
       
   186 	inline quint64 id() const;
       
   187     inline void setId(quint64 pluginIdAndId);
       
   188 	inline bool operator==(const NmId& id) const;
       
   189 	inline bool operator!=(const NmId& id) const;
       
   190 
       
   191     inline quint32 id32() const;
       
   192     inline void setId32(quint32 id32);
       
   193     inline quint32 pluginId32() const;
       
   194     inline void setPluginId32(quint32 pluginId32);
       
   195 
       
   196 private:
       
   197 	quint32 mPluginId;
       
   198 	quint32 mId;
       
   199 };
       
   200 
       
   201 Q_DECLARE_METATYPE(NmId)
       
   202 Q_DECLARE_METATYPE(QList<NmId>)
       
   203 
       
   204 /*!
       
   205 	 Constructor for nm id \a id is 64 bit unsigned integer
       
   206  */
       
   207 inline NmId::NmId(quint64 combinedId)
       
   208 {
       
   209     setId(combinedId);
       
   210 }
       
   211 
       
   212 /*!
       
   213 	 Setter for nm id \a id is 64 bit unsigned integer
       
   214  */
       
   215 inline void NmId::setId(quint64 pluginIdAndId)
       
   216 {
       
   217 	// first 32 bits (from big end) refers fs plugin id
       
   218     mPluginId = pluginIdAndId >> 32;
       
   219 	// last 32 bits refers fs id
       
   220     mId = pluginIdAndId;
       
   221 }
       
   222 
       
   223 /*!
       
   224 	 Returns 64 unsigned integer id
       
   225  */
       
   226 inline quint64 NmId::id() const
       
   227 {
       
   228     quint64 id = mPluginId;
       
   229     id = id << 32;
       
   230     id += mId;
       
   231     return id;
       
   232 }
       
   233 
       
   234 /*!
       
   235 	 Equal operator
       
   236  */
       
   237 inline bool NmId::operator==(const NmId& id) const
       
   238 {
       
   239 	bool ret = true;
       
   240     if ((mId != id.mId) || (mPluginId != id.mPluginId)) {
       
   241 		ret = false;
       
   242 	}
       
   243 	return ret;
       
   244 }
       
   245 
       
   246 /*!
       
   247 	 Not equal operator
       
   248  */
       
   249 inline bool NmId::operator!=(const NmId& id) const
       
   250 {
       
   251 	bool ret = false;
       
   252     if ((mId != id.mId) || (mPluginId != id.mPluginId)) {
       
   253 		ret = true;
       
   254 	}
       
   255 	return ret;
       
   256 }
       
   257 
       
   258 /*!
       
   259      return unsigned 32-bit id
       
   260  */
       
   261 inline quint32 NmId::id32() const
       
   262 {
       
   263     return mId;
       
   264 }
       
   265 
       
   266 /*!
       
   267      returns unsigned 32-bit plugin id
       
   268  */
       
   269 inline quint32 NmId::pluginId32() const
       
   270 {
       
   271     return mPluginId;
       
   272 }
       
   273 
       
   274 /*!
       
   275      sets unique 32-bit id
       
   276  */
       
   277 inline void NmId::setId32(quint32 id32)
       
   278 {
       
   279     mId = id32;
       
   280 }
       
   281 
       
   282 /*!
       
   283      sets unique 32-bit plugin id
       
   284  */
       
   285 inline void NmId::setPluginId32(quint32 pluginId32)
       
   286 {
       
   287     mPluginId = pluginId32;
       
   288 }
       
   289 
       
   290 /*!
       
   291      static function for debug prints
       
   292  */
       
   293 #include <QDebug>
       
   294 #include <QFile>
       
   295 #include <QDateTime>
       
   296 
       
   297 static void printToFileAndConsole(QString str, QString filename)
       
   298 {
       
   299     // Print to file
       
   300     QFile debugFile(filename);
       
   301     QIODevice::OpenMode openMode = QIODevice::Text;
       
   302     if (debugFile.exists()) {
       
   303         openMode |= QIODevice::Append;
       
   304     } else {
       
   305         openMode |= QIODevice::WriteOnly;
       
   306     }
       
   307 
       
   308     // Create date string
       
   309     QString d = QDateTime::currentDateTime().toString("dd.MM.yyyy hh:mm:ss");
       
   310 
       
   311     if (debugFile.open(openMode)) {
       
   312         QTextStream debugStream(&debugFile);
       
   313         debugStream << d << "  " << str << endl;
       
   314         debugFile.close();
       
   315     }
       
   316     // Print to console
       
   317     qDebug() << d << str << endl;
       
   318  }
       
   319 
       
   320 //
       
   321 // NMLOG is used to log QStrings to text file. For example:
       
   322 //
       
   323 // NMLOG("nmailui: application opened successfully");
       
   324 //
       
   325 // QString fileName = "mailbox.xml";
       
   326 // int error = -12;
       
   327 // NMLOG(QString("### cannot open file: err=%1  file='%2' ###").arg(error).arg(fileName));
       
   328 //
       
   329 #define NMLOG(a) { printToFileAndConsole(a, "c:/logs/nmail.log"); }
       
   330 
       
   331 /*! email list sort criteria definition */
       
   332 class NmMailSortCriteria
       
   333 {
       
   334 public:
       
   335     NmMailSortField mField;
       
   336     NmMailSortOrder mOrder;
       
   337 };
       
   338 
       
   339 
       
   340 #endif /* NMCOMMON_H_ */
       
   341 
       
   342 
       
   343