]>
cloud.milkyroute.net Git - dolphin.git/blob - src/panels/information/nepomukmassupdatejob.cpp
8e3813023aaacd290b2fd0c4d845df684e53ae38
1 /***************************************************************************
2 * Copyright (C) 2008 by Sebastian Trueg <trueg@kde.org> *
4 * This program is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program; if not, write to the *
16 * Free Software Foundation, Inc., *
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
18 ***************************************************************************/
20 #include "nepomukmassupdatejob_p.h"
24 #include <nepomuk/tag.h>
25 #include <nepomuk/tools.h>
28 Nepomuk::MassUpdateJob::MassUpdateJob(QObject
* parent
)
32 setCapabilities(Killable
|Suspendable
);
33 connect(&m_processTimer
, SIGNAL(timeout()),
34 this, SLOT(slotNext()));
37 Nepomuk::MassUpdateJob::~MassUpdateJob()
41 void Nepomuk::MassUpdateJob::setFiles(const KUrl::List
& urls
)
44 foreach(const KUrl
&url
, urls
){
45 m_resources
.append(Resource(url
));
47 setTotalAmount(KJob::Files
, m_resources
.count());
50 void Nepomuk::MassUpdateJob::setResources(const QList
<Nepomuk::Resource
>& rl
)
53 setTotalAmount(KJob::Files
, m_resources
.count());
56 void Nepomuk::MassUpdateJob::setProperties(const QList
<QPair
<QUrl
,Nepomuk::Variant
> >& props
)
61 void Nepomuk::MassUpdateJob::start()
64 emit
description(this, i18nc("@info:progress", "Changing annotations"));
66 m_processTimer
.start();
71 bool Nepomuk::MassUpdateJob::doKill()
74 m_processTimer
.stop();
82 bool Nepomuk::MassUpdateJob::doSuspend()
84 m_processTimer
.stop();
88 bool Nepomuk::MassUpdateJob::doResume()
91 m_processTimer
.start();
98 void Nepomuk::MassUpdateJob::slotNext()
100 if (!isSuspended()) {
101 if (m_index
< m_resources
.count()){
102 Nepomuk::Resource
& res
= m_resources
[m_index
];
103 for (int i
= 0; i
< m_properties
.count(); ++i
){
104 res
.setProperty(m_properties
[i
].first
, m_properties
[i
].second
);
107 setProcessedAmount(KJob::Files
, m_index
);
108 } else if (m_index
>= m_resources
.count()) {
110 m_processTimer
.stop();
116 Nepomuk::MassUpdateJob
* Nepomuk::MassUpdateJob::tagResources(const QList
<Nepomuk::Resource
>& rl
,
117 const QList
<Nepomuk::Tag
>& tags
)
119 Nepomuk::MassUpdateJob
* job
= new Nepomuk::MassUpdateJob();
120 job
->setResources(rl
);
121 job
->setProperties(QList
<QPair
<QUrl
,Nepomuk::Variant
> >() <<
122 qMakePair(QUrl(Nepomuk::Resource::tagUri()),
123 Nepomuk::Variant(convertResourceList
<Tag
>(tags
))));
127 Nepomuk::MassUpdateJob
* Nepomuk::MassUpdateJob::rateResources(const QList
<Nepomuk::Resource
>& rl
,
130 Nepomuk::MassUpdateJob
* job
= new Nepomuk::MassUpdateJob();
131 job
->setResources(rl
);
132 job
->setProperties(QList
<QPair
<QUrl
,Nepomuk::Variant
> >() <<
133 qMakePair(QUrl(Nepomuk::Resource::ratingUri()),
134 Nepomuk::Variant(rating
)));
138 Nepomuk::MassUpdateJob
* Nepomuk::MassUpdateJob::commentResources(const QList
<Nepomuk::Resource
>& rl
,
139 const QString
& comment
)
141 Nepomuk::MassUpdateJob
* job
= new Nepomuk::MassUpdateJob();
142 job
->setResources(rl
);
143 job
->setProperties(QList
<QPair
<QUrl
,Nepomuk::Variant
> >() <<
144 qMakePair(QUrl(Nepomuk::Resource::descriptionUri()),
145 Nepomuk::Variant(comment
)));
149 #include "nepomukmassupdatejob_p.moc"