Akonadi: preliminary support for KJot

Added preliminary Support for KJots's custom format of storing Akonadi Notes.
Currently it is assumed that all the notes it stores is of Plain Text format
(as happens in the AkoNotes Plasmoid).

Later on will have to dig into implementing support for notes in HTML and other
formats too?
This commit is contained in:
Dinesh 2011-03-30 23:47:57 +05:30 committed by Patrick Ohly
parent a3d7412972
commit f531648bb4
2 changed files with 59 additions and 2 deletions

View File

@ -255,5 +255,56 @@ void AkonadiSyncSource::readItem(const std::string &luid, std::string &data, boo
}
}
QString AkonadiMemoSource::toKJots(QString data){
// KJots stores it's resource in the format
//Subject: Hello World
//Content-Type: text/plain <------- always plain text for the akonadi resource
//Date: Wed, 30 Mar 2011 01:02:48 +0530 <----date created
//MIME-Version: 1.0 <----- always the same
// <---- This line break seperates the content from the information
//<Content>
QString subject = "Subject: ";
QString contentType = "Content-Type: text/plain";
QString dateTime = QDateTime::currentDateTime().toString(Qt::ISODate);
QString mimeVersion = "MIME-Version: 1.0";
QString content;
QStringList lines = data.split('\n');
subject += lines.first();
content = data.remove(0,data.indexOf('\n')+1);
QString result = subject + '\n' +
contentType + '\n' +
dateTime + '\n'+
mimeVersion + "\n\n"+
content;
return result;
}
QString AkonadiMemoSource::toSynthesis(QString data){
//Synthesis expects Plain Text in the form Subject + "\n" + Content
QString subject;
QString content;
subject = data.split('\n').first();
subject.remove("Subject: ");
content = data.remove(0,data.indexOf("\n\n")+2);
return subject+'\n'+content;
}
void AkonadiMemoSource::readItem(const std::string &luid, std::string &data, bool raw)
{
AkonadiSyncSource::readItem(luid, data, raw);
data = toSynthesis(QString::fromStdString(data)).toStdString();
}
TrackingSyncSource::InsertItemResult AkonadiMemoSource::insertItem(const std::string &luid, const std::string &data, bool raw)
{
std::string formattedData = toKJots(QString::fromStdString(data)).toStdString();
return AkonadiSyncSource::insertItem(luid, formattedData , raw);
}
SE_END_CXX
#endif // ENABLE_AKONADI

View File

@ -70,7 +70,7 @@ public:
virtual bool isEmpty();
private:
void start();
protected:
Akonadi::Collection m_collection;
const std::string m_subMime;
};
@ -138,9 +138,13 @@ public:
class AkonadiMemoSource : public AkonadiSyncSource
{
private:
QString toKJots(QString data);
QString toSynthesis(QString data);
public:
AkonadiMemoSource(const SyncSourceParams &params)
: AkonadiSyncSource("text/x-vnd.akonadi.calendar.journal", params)
: AkonadiSyncSource("text/x-vnd.akonadi.note", params)
{
}
@ -151,6 +155,8 @@ public:
// to display notes: probably work for knote??
virtual std::string getMimeType() const { return "text/plain"; }
virtual std::string getMimeVersion() const { return "1.0"; }
virtual InsertItemResult insertItem(const std::string &luid, const std::string &item, bool raw);
virtual void readItem(const std::string &luid, std::string &item, bool raw);
};
SE_END_CXX