Support for message importance.
This commit is contained in:
parent
0b37c6d09c
commit
3639b96ea8
@ -2,6 +2,11 @@
|
||||
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>
|
||||
|
||||
* messaging/POP3Store.cpp: fixed POP3Store::sendPacket() to send "\r\n"
|
||||
|
@ -157,7 +157,8 @@ libvmime_sources = [
|
||||
'mdn/MDNHelper.cpp', 'mdn/MDNHelper.hpp',
|
||||
'mdn/MDNInfos.cpp', 'mdn/MDNInfos.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 = [
|
||||
|
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
|
||||
#include "vmime/mdn/MDNHelper.hpp"
|
||||
|
||||
// Misc
|
||||
#include "vmime/misc/importanceHelper.hpp"
|
||||
|
||||
// Property set
|
||||
#include "vmime/propertySet.hpp"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user