[Kde-pim] retrieving a resource from an akonadi:/ url

Jos van den Oever jos at vandenoever.info
Sat Jul 2 17:55:25 BST 2016


On Saturday 02 July 2016 12:55:44 Kevin Krammer wrote:
> On Tuesday, 2016-06-28, 15:14:51, Daniel Vrátil wrote:
> > On Tuesday, June 28, 2016 10:54:15 AM CEST Jos van den Oever wrote:
> > > Hi all,
> > > 
> > > I'm writing a simple application on which I'd like to drop emails.
> > > Dropping
> > > mails from kmail gives an akonadi:/ url. How can I talk to akonadi to
> > > get
> > > the actual raw mail? The mails are all in maildir, so getting the file
> > > path
> > > would be fine too.
> > 
> > Hi,
> > 
> > you have two options. You can use the Akonadi KIO slave that is part of
> > kdepim-runtime to get the email - just pass the URL to KIO::get(), that
> > should work. Alternatively you can use Akonadi directly. The URL is
> > something like akonadi://?id=1234, so you use Akonadi::ItemFetchJob to
> > retrieve an Akonadi::Item  with that ID.
> 
> Akonadi::Item can even be initialized with such an URL, i.e. no need to
> parse this manually.
> 
> Item::fromUrl() if I remember correctly.

That's the one. It accepts a KUrl. I'm using it like this:

```cpp
void DropSite::handleAkonadiUrls(const QList<QUrl>& urls)
{
    Akonadi::Item::List list;
    list.reserve(urls.size());
    for (auto& url: urls) {
        if (url.scheme() == QLatin1String("akonadi")) {
            list.append(Akonadi::Item::fromUrl(KUrl(url)));
        }
    }
    ...
}
```

to use with the result from QMimeData::urls() which is available from 
QDropEvent.

I've written function createMailDirPath (see attachment) to obtain the file 
path from the concatenated Akonadi::Item::remoteId() values.
This works great. I'm doing this instead of using the raw data from akonadi 
because I noticed that the bytearray returned from akonadi is not exactly the 
same as the contents of the file in the maildir.

Cheers,
Jos



-------------- next part --------------
A non-text attachment was scrubbed...
Name: dropsite.cpp
Type: text/x-c++src
Size: 3403 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-pim/attachments/20160702/47e91c56/attachment.cpp>
-------------- next part --------------
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/


More information about the kde-pim mailing list