Support for message importance.
This commit is contained in:
parent
0b37c6d09c
commit
3639b96ea8
@ -2,6 +2,11 @@
|
|||||||
VERSION 0.6.4cvs
|
VERSION 0.6.4cvs
|
||||||
================
|
================
|
||||||
|
|
||||||
|
2005-03-31 Vincent Richard <vincent@vincent-richard.net>
|
||||||
|
|
||||||
|
* misc/importanceHelper.{cpp|hpp}: added support for message importance:
|
||||||
|
"X-Priority:" and "Importance:" fields.
|
||||||
|
|
||||||
2005-03-28 Vincent Richard <vincent@vincent-richard.net>
|
2005-03-28 Vincent Richard <vincent@vincent-richard.net>
|
||||||
|
|
||||||
* messaging/POP3Store.cpp: fixed POP3Store::sendPacket() to send "\r\n"
|
* messaging/POP3Store.cpp: fixed POP3Store::sendPacket() to send "\r\n"
|
||||||
|
@ -157,7 +157,8 @@ libvmime_sources = [
|
|||||||
'mdn/MDNHelper.cpp', 'mdn/MDNHelper.hpp',
|
'mdn/MDNHelper.cpp', 'mdn/MDNHelper.hpp',
|
||||||
'mdn/MDNInfos.cpp', 'mdn/MDNInfos.hpp',
|
'mdn/MDNInfos.cpp', 'mdn/MDNInfos.hpp',
|
||||||
'mdn/receivedMDNInfos.cpp', 'mdn/receivedMDNInfos.hpp',
|
'mdn/receivedMDNInfos.cpp', 'mdn/receivedMDNInfos.hpp',
|
||||||
'mdn/sendableMDNInfos.cpp', 'mdn/sendableMDNInfos.hpp'
|
'mdn/sendableMDNInfos.cpp', 'mdn/sendableMDNInfos.hpp',
|
||||||
|
'misc/importanceHelper.cpp', 'misc/importanceHelper.hpp'
|
||||||
]
|
]
|
||||||
|
|
||||||
libvmime_examples_sources = [
|
libvmime_examples_sources = [
|
||||||
|
143
src/misc/importanceHelper.cpp
Normal file
143
src/misc/importanceHelper.cpp
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
//
|
||||||
|
// VMime library (http://www.vmime.org)
|
||||||
|
// Copyright (C) 2002-2005 Vincent Richard <vincent@vincent-richard.net>
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU General Public License as
|
||||||
|
// published by the Free Software Foundation; either version 2 of
|
||||||
|
// the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "vmime/misc/importanceHelper.hpp"
|
||||||
|
#include "vmime/exception.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
namespace vmime {
|
||||||
|
namespace misc {
|
||||||
|
|
||||||
|
|
||||||
|
void importanceHelper::resetImportance(message* msg)
|
||||||
|
{
|
||||||
|
header* hdr = msg->getHeader();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
headerField* fld = hdr->findField("X-Priority");
|
||||||
|
hdr->removeField(fld);
|
||||||
|
}
|
||||||
|
catch (exceptions::no_such_field)
|
||||||
|
{
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
headerField* fld = hdr->findField("Importance");
|
||||||
|
hdr->removeField(fld);
|
||||||
|
}
|
||||||
|
catch (exceptions::no_such_field)
|
||||||
|
{
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const importanceHelper::Importance importanceHelper::getImportance(const message* msg)
|
||||||
|
{
|
||||||
|
const header* hdr = msg->getHeader();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
const defaultField* fld = dynamic_cast <const defaultField*>(hdr->findField("X-Priority"));
|
||||||
|
const string value = fld->getValue();
|
||||||
|
|
||||||
|
int n = IMPORTANCE_NORMAL;
|
||||||
|
|
||||||
|
std::istringstream iss(value);
|
||||||
|
iss >> n;
|
||||||
|
|
||||||
|
Importance i = IMPORTANCE_NORMAL;
|
||||||
|
|
||||||
|
switch (n)
|
||||||
|
{
|
||||||
|
case 1: i = IMPORTANCE_HIGHEST; break;
|
||||||
|
case 2: i = IMPORTANCE_HIGH; break;
|
||||||
|
case 3: i = IMPORTANCE_NORMAL; break;
|
||||||
|
case 4: i = IMPORTANCE_LOW; break;
|
||||||
|
case 5: i = IMPORTANCE_LOWEST; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (i);
|
||||||
|
}
|
||||||
|
catch (exceptions::no_such_field)
|
||||||
|
{
|
||||||
|
const defaultField* fld = dynamic_cast <const defaultField*>(hdr->findField("Importance"));
|
||||||
|
const string value = utility::stringUtils::toLower(utility::stringUtils::trim(fld->getValue()));
|
||||||
|
|
||||||
|
if (value == "low")
|
||||||
|
return (IMPORTANCE_LOWEST);
|
||||||
|
else if (value == "high")
|
||||||
|
return (IMPORTANCE_HIGHEST);
|
||||||
|
else
|
||||||
|
return (IMPORTANCE_NORMAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Should not go here...
|
||||||
|
return (IMPORTANCE_NORMAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void importanceHelper::setImportance(message* msg, const Importance i)
|
||||||
|
{
|
||||||
|
header* hdr = msg->getHeader();
|
||||||
|
|
||||||
|
// "X-Priority:" Field
|
||||||
|
defaultField* fld = dynamic_cast <defaultField*>(hdr->getField("X-Priority"));
|
||||||
|
|
||||||
|
switch (i)
|
||||||
|
{
|
||||||
|
case IMPORTANCE_HIGHEST: fld->setValue("1 (Highest)"); break;
|
||||||
|
case IMPORTANCE_HIGH: fld->setValue("2 (High)"); break;
|
||||||
|
default:
|
||||||
|
case IMPORTANCE_NORMAL: fld->setValue("3 (Normal)"); break;
|
||||||
|
case IMPORTANCE_LOW: fld->setValue("4 (Low)"); break;
|
||||||
|
case IMPORTANCE_LOWEST: fld->setValue("5 (Lowest)"); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// "Importance:" Field
|
||||||
|
fld = dynamic_cast <defaultField*>(hdr->getField("Importance"));
|
||||||
|
|
||||||
|
switch (i)
|
||||||
|
{
|
||||||
|
case IMPORTANCE_HIGHEST:
|
||||||
|
case IMPORTANCE_HIGH:
|
||||||
|
|
||||||
|
fld->setValue("high");
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
case IMPORTANCE_NORMAL:
|
||||||
|
|
||||||
|
fld->setValue("normal");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IMPORTANCE_LOWEST:
|
||||||
|
case IMPORTANCE_LOW:
|
||||||
|
|
||||||
|
fld->setValue("low");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} // misc
|
||||||
|
} // vmime
|
80
vmime/misc/importanceHelper.hpp
Normal file
80
vmime/misc/importanceHelper.hpp
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
//
|
||||||
|
// VMime library (http://www.vmime.org)
|
||||||
|
// Copyright (C) 2002-2005 Vincent Richard <vincent@vincent-richard.net>
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU General Public License as
|
||||||
|
// published by the Free Software Foundation; either version 2 of
|
||||||
|
// the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef VMIME_MISC_IMPORTANCEHELPER_HPP_INCLUDED
|
||||||
|
#define VMIME_MISC_IMPORTANCEHELPER_HPP_INCLUDED
|
||||||
|
|
||||||
|
|
||||||
|
#include "vmime/message.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
namespace vmime {
|
||||||
|
namespace misc {
|
||||||
|
|
||||||
|
|
||||||
|
/** Deals with setting and retrieving message importance (also
|
||||||
|
* known as priority).
|
||||||
|
*
|
||||||
|
* Basically, it wraps the use of the 'X-Priority' (non standard)
|
||||||
|
* and 'Importance' (RFC-1327, RFC-1911) fields.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class importanceHelper
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
/** Different levels of importance. */
|
||||||
|
enum Importance
|
||||||
|
{
|
||||||
|
IMPORTANCE_HIGHEST,
|
||||||
|
IMPORTANCE_HIGH,
|
||||||
|
IMPORTANCE_NORMAL,
|
||||||
|
IMPORTANCE_LOW,
|
||||||
|
IMPORTANCE_LOWEST
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/** Reset the importance of the message to the default importance.
|
||||||
|
*
|
||||||
|
* @param msg message on which to reset importance
|
||||||
|
*/
|
||||||
|
static void resetImportance(message* msg);
|
||||||
|
|
||||||
|
/** Return the importance of the specified message.
|
||||||
|
*
|
||||||
|
* @param msg message from which to retrieve importance
|
||||||
|
* @return importance of the message, or default importance is no
|
||||||
|
* information about importance is given in the message
|
||||||
|
*/
|
||||||
|
static const Importance getImportance(const message* msg);
|
||||||
|
|
||||||
|
/** Set the importance of the specified message.
|
||||||
|
*
|
||||||
|
* @param msg message on which to set importance
|
||||||
|
* @param i new message importance
|
||||||
|
*/
|
||||||
|
static void setImportance(message* msg, const Importance i);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
} // misc
|
||||||
|
} // vmime
|
||||||
|
|
||||||
|
|
||||||
|
#endif // VMIME_MISC_IMPORTANCEHELPER_HPP_INCLUDED
|
@ -76,6 +76,9 @@
|
|||||||
// MDN
|
// MDN
|
||||||
#include "vmime/mdn/MDNHelper.hpp"
|
#include "vmime/mdn/MDNHelper.hpp"
|
||||||
|
|
||||||
|
// Misc
|
||||||
|
#include "vmime/misc/importanceHelper.hpp"
|
||||||
|
|
||||||
// Property set
|
// Property set
|
||||||
#include "vmime/propertySet.hpp"
|
#include "vmime/propertySet.hpp"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user