INBOX folder special use.
This commit is contained in:
parent
36cc0c65c8
commit
2d369b9ac9
@ -67,6 +67,7 @@ public:
|
|||||||
enum SpecialUses {
|
enum SpecialUses {
|
||||||
SPECIALUSE_NONE, /**< User folder, no special use (or unknown). */
|
SPECIALUSE_NONE, /**< User folder, no special use (or unknown). */
|
||||||
SPECIALUSE_ALL, /**< Virtual folder containing all messages. */
|
SPECIALUSE_ALL, /**< Virtual folder containing all messages. */
|
||||||
|
SPECIALUSE_INBOX, /**< Inbox. */
|
||||||
SPECIALUSE_ARCHIVE, /**< Folder is used to archives messages (server-dependent). */
|
SPECIALUSE_ARCHIVE, /**< Folder is used to archives messages (server-dependent). */
|
||||||
SPECIALUSE_DRAFTS, /**< Folder is used to hold draft messages - typically, messages
|
SPECIALUSE_DRAFTS, /**< Folder is used to hold draft messages - typically, messages
|
||||||
that are being composed but have not yet been sent. */
|
that are being composed but have not yet been sent. */
|
||||||
|
@ -244,6 +244,7 @@ void IMAPFolder::open(const int mode, bool failIfModeIsNotAvailable) {
|
|||||||
|
|
||||||
IMAPUtils::mailboxFlagsToFolderAttributes(
|
IMAPUtils::mailboxFlagsToFolderAttributes(
|
||||||
connection,
|
connection,
|
||||||
|
m_path,
|
||||||
*responseData->mailbox_data->mailbox_flag_list,
|
*responseData->mailbox_data->mailbox_flag_list,
|
||||||
*m_attribs
|
*m_attribs
|
||||||
);
|
);
|
||||||
@ -527,6 +528,7 @@ int IMAPFolder::testExistAndGetType() {
|
|||||||
// Get the folder type/flags at the same time
|
// Get the folder type/flags at the same time
|
||||||
IMAPUtils::mailboxFlagsToFolderAttributes(
|
IMAPUtils::mailboxFlagsToFolderAttributes(
|
||||||
m_connection,
|
m_connection,
|
||||||
|
m_path,
|
||||||
*mailboxData->mailbox_list->mailbox_flag_list,
|
*mailboxData->mailbox_list->mailbox_flag_list,
|
||||||
attribs
|
attribs
|
||||||
);
|
);
|
||||||
@ -755,6 +757,7 @@ std::vector <shared_ptr <folder> > IMAPFolder::getFolders(const bool recursive)
|
|||||||
|
|
||||||
IMAPUtils::mailboxFlagsToFolderAttributes(
|
IMAPUtils::mailboxFlagsToFolderAttributes(
|
||||||
m_connection,
|
m_connection,
|
||||||
|
path,
|
||||||
*mailboxData->mailbox_list->mailbox_flag_list,
|
*mailboxData->mailbox_list->mailbox_flag_list,
|
||||||
*attribs
|
*attribs
|
||||||
);
|
);
|
||||||
@ -1523,6 +1526,7 @@ void IMAPFolder::processStatusUpdate(const IMAPParser::response* resp) {
|
|||||||
folderAttributes attribs;
|
folderAttributes attribs;
|
||||||
IMAPUtils::mailboxFlagsToFolderAttributes(
|
IMAPUtils::mailboxFlagsToFolderAttributes(
|
||||||
m_connection,
|
m_connection,
|
||||||
|
m_path,
|
||||||
*(*it)->response_data->mailbox_data->mailbox_list->mailbox_flag_list,
|
*(*it)->response_data->mailbox_data->mailbox_list->mailbox_flag_list,
|
||||||
attribs
|
attribs
|
||||||
);
|
);
|
||||||
|
@ -390,6 +390,7 @@ const folder::path::component IMAPUtils::fromModifiedUTF7(const string& text) {
|
|||||||
// static
|
// static
|
||||||
void IMAPUtils::mailboxFlagsToFolderAttributes(
|
void IMAPUtils::mailboxFlagsToFolderAttributes(
|
||||||
const shared_ptr <const IMAPConnection>& cnt,
|
const shared_ptr <const IMAPConnection>& cnt,
|
||||||
|
const folder::path &path,
|
||||||
const IMAPParser::mailbox_flag_list& list,
|
const IMAPParser::mailbox_flag_list& list,
|
||||||
folderAttributes& attribs
|
folderAttributes& attribs
|
||||||
) {
|
) {
|
||||||
@ -471,6 +472,10 @@ void IMAPUtils::mailboxFlagsToFolderAttributes(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (path.getSize() == 1 && path.getLastComponent().getBuffer() == "INBOX") {
|
||||||
|
specialUse = folderAttributes::SPECIALUSE_INBOX;
|
||||||
|
}
|
||||||
|
|
||||||
attribs.setSpecialUse(specialUse);
|
attribs.setSpecialUse(specialUse);
|
||||||
attribs.setType(type);
|
attribs.setType(type);
|
||||||
attribs.setFlags(flags);
|
attribs.setFlags(flags);
|
||||||
|
@ -70,11 +70,13 @@ public:
|
|||||||
/** Parse mailbox flags and fill in folder attributes.
|
/** Parse mailbox flags and fill in folder attributes.
|
||||||
*
|
*
|
||||||
* @param cnt reference to current IMAP connection (for testing capabilities)
|
* @param cnt reference to current IMAP connection (for testing capabilities)
|
||||||
|
* @param path folder full path
|
||||||
* @param list list of mailbox flags
|
* @param list list of mailbox flags
|
||||||
* @param attribs reference to an object holding folder attributes
|
* @param attribs reference to an object holding folder attributes
|
||||||
*/
|
*/
|
||||||
static void mailboxFlagsToFolderAttributes(
|
static void mailboxFlagsToFolderAttributes(
|
||||||
const shared_ptr <const IMAPConnection>& cnt,
|
const shared_ptr <const IMAPConnection>& cnt,
|
||||||
|
const folder::path &path,
|
||||||
const IMAPParser::mailbox_flag_list& list,
|
const IMAPParser::mailbox_flag_list& list,
|
||||||
folderAttributes& attribs
|
folderAttributes& attribs
|
||||||
);
|
);
|
||||||
|
@ -103,6 +103,7 @@ const folderAttributes POP3Folder::getAttributes() {
|
|||||||
attribs.setType(folderAttributes::TYPE_CONTAINS_FOLDERS);
|
attribs.setType(folderAttributes::TYPE_CONTAINS_FOLDERS);
|
||||||
} else if (m_path.getSize() == 1 && m_path[0].getBuffer() == "INBOX") {
|
} else if (m_path.getSize() == 1 && m_path[0].getBuffer() == "INBOX") {
|
||||||
attribs.setType(folderAttributes::TYPE_CONTAINS_MESSAGES);
|
attribs.setType(folderAttributes::TYPE_CONTAINS_MESSAGES);
|
||||||
|
attribs.setSpecialUse(folderAttributes::SPECIALUSE_INBOX);
|
||||||
} else {
|
} else {
|
||||||
throw exceptions::folder_not_found();
|
throw exceptions::folder_not_found();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user