You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.9 KiB
86 lines
2.9 KiB
/******************************************************************** |
|
This file is part of the KDE project. |
|
|
|
Copyright (C) 2014 Martin Gräßlin <mgraesslin@kde.org> |
|
|
|
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, see <http://www.gnu.org/licenses/>. |
|
*********************************************************************/ |
|
#include "clipboardjob.h" |
|
#include "klipper.h" |
|
#include "history.h" |
|
#include "historyitem.h" |
|
|
|
ClipboardJob::ClipboardJob(Klipper *klipper, const QString &destination, const QString &operation, const QVariantMap ¶meters, QObject *parent) |
|
: Plasma::ServiceJob(destination, operation, parameters, parent) |
|
, m_klipper(klipper) |
|
{ |
|
} |
|
|
|
void ClipboardJob::start() |
|
{ |
|
const QString operation = operationName(); |
|
// first check for operations not needing an item |
|
if (operation == QLatin1String("clearHistory")) { |
|
m_klipper->slotAskClearHistory(); |
|
setResult(true); |
|
emitResult(); |
|
return; |
|
} else if (operation == QLatin1String("configureKlipper")) { |
|
m_klipper->slotConfigure(); |
|
setResult(true); |
|
emitResult(); |
|
return; |
|
} |
|
|
|
// other operations need the item |
|
HistoryItemConstPtr item = m_klipper->history()->find(QByteArray::fromBase64(destination().toUtf8())); |
|
if (item.isNull()) { |
|
setResult(false); |
|
emitResult(); |
|
return; |
|
} |
|
if (operation == QLatin1String("select")) { |
|
m_klipper->history()->slotMoveToTop(item->uuid()); |
|
setResult(true); |
|
} else if (operation == QLatin1String("remove")) { |
|
m_klipper->history()->remove(item); |
|
setResult(true); |
|
} else if (operation == QLatin1String("edit")) { |
|
connect(m_klipper, &Klipper::editFinished, this, |
|
[this, item](HistoryItemConstPtr editedItem, int result) { |
|
if (item != editedItem) { |
|
// not our item |
|
return; |
|
} |
|
setResult(result); |
|
emitResult(); |
|
} |
|
); |
|
m_klipper->editData(item); |
|
return; |
|
} else if (operation == QLatin1String("barcode")) { |
|
#ifdef HAVE_PRISON |
|
m_klipper->showBarcode(item); |
|
setResult(true); |
|
#else |
|
setResult(false); |
|
#endif |
|
} else if (operation == QLatin1String("action")) { |
|
m_klipper->urlGrabber()->invokeAction(item); |
|
setResult(true); |
|
} else { |
|
setResult(false); |
|
} |
|
emitResult(); |
|
}
|
|
|