mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-23 18:32:51 +00:00
104 lines
3.4 KiB
C++
104 lines
3.4 KiB
C++
/*
|
|
Copyright (c) 2006 Volker Krause <vkrause@kde.org>
|
|
Copyright (c) 2007 Robert Zwerus <arzie@dds.nl>
|
|
|
|
This library is free software; you can redistribute it and/or modify it
|
|
under the terms of the GNU Library General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or (at your
|
|
option) any later version.
|
|
|
|
This library 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 Library General Public
|
|
License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to the
|
|
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
02110-1301, USA.
|
|
*/
|
|
|
|
#include "itemdumper.h"
|
|
#include "collectionpathresolver_p.h"
|
|
|
|
#include <akonadi/item.h>
|
|
|
|
#include <QtCore/QDebug>
|
|
#include <QtCore/QFile>
|
|
#include <QApplication>
|
|
|
|
#include <klocale.h>
|
|
#include <kapplication.h>
|
|
#include <kcmdlineargs.h>
|
|
|
|
#include <akonadi/transactionjobs.h>
|
|
#include <akonadi/itemcreatejob.h>
|
|
|
|
#define GLOBAL_TRANSACTION 1
|
|
|
|
using namespace Akonadi;
|
|
|
|
ItemDumper::ItemDumper( const QString &path, const QString &filename, const QString &mimetype, int count ) :
|
|
mJobCount( 0 )
|
|
{
|
|
CollectionPathResolver* resolver = new CollectionPathResolver( path, this );
|
|
Q_ASSERT( resolver->exec() );
|
|
const Collection collection = Collection( resolver->collection() );
|
|
|
|
QFile f( filename );
|
|
Q_ASSERT( f.open(QIODevice::ReadOnly) );
|
|
QByteArray data = f.readAll();
|
|
f.close();
|
|
Item item;
|
|
item.setMimeType( mimetype );
|
|
item.setPayloadFromData( data );
|
|
mTime.start();
|
|
#ifdef GLOBAL_TRANSACTION
|
|
TransactionBeginJob *begin = new TransactionBeginJob( this );
|
|
connect( begin, SIGNAL(result(KJob*)), SLOT(done(KJob*)) );
|
|
++mJobCount;
|
|
#endif
|
|
for ( int i = 0; i < count; ++i ) {
|
|
++mJobCount;
|
|
ItemCreateJob *job = new ItemCreateJob( item, collection, this );
|
|
connect( job, SIGNAL(result(KJob*)), SLOT(done(KJob*)) );
|
|
}
|
|
#ifdef GLOBAL_TRANSACTION
|
|
TransactionCommitJob *commit = new TransactionCommitJob( this );
|
|
connect( commit, SIGNAL(result(KJob*)), SLOT(done(KJob*)) );
|
|
++mJobCount;
|
|
#endif
|
|
}
|
|
|
|
void ItemDumper::done( KJob * job )
|
|
{
|
|
--mJobCount;
|
|
if ( job->error() ) {
|
|
qWarning() << "Error while creating item: " << job->errorString();
|
|
}
|
|
if ( mJobCount <= 0 ) {
|
|
qDebug() << "Time:" << mTime.elapsed() << "ms";
|
|
qApp->quit();
|
|
}
|
|
}
|
|
|
|
int main( int argc, char** argv )
|
|
{
|
|
KCmdLineArgs::init( argc, argv, "test", 0, ki18n("Test Application") ,"1.0" ,ki18n("test app") );
|
|
|
|
KCmdLineOptions options;
|
|
options.add("path <argument>", ki18n("IMAP destination path"));
|
|
options.add("mimetype <argument>", ki18n("Source mimetype"), "application/octet-stream");
|
|
options.add("file <argument>", ki18n("Source file"));
|
|
options.add("count <argument>", ki18n("Number of times this file is added"), "1");
|
|
KCmdLineArgs::addCmdLineOptions( options );
|
|
KApplication app;
|
|
KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
|
|
QString path = args->getOption( "path" );
|
|
QString mimetype = args->getOption( "mimetype" );
|
|
QString file = args->getOption( "file" );
|
|
int count = qMax( 1, args->getOption( "count").toInt() );
|
|
ItemDumper d( path, file, mimetype, count );
|
|
return app.exec();
|
|
}
|
|
|