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.
242 lines
7.4 KiB
242 lines
7.4 KiB
/* |
|
* Copyright 2019 Kai Uwe Broulik <kde@privat.broulik.de> |
|
* |
|
* This library is free software; you can redistribute it and/or |
|
* modify it under the terms of the GNU Lesser General Public |
|
* License as published by the Free Software Foundation; either |
|
* version 2.1 of the License, or (at your option) version 3, or any |
|
* later version accepted by the membership of KDE e.V. (or its |
|
* successor approved by the membership of KDE e.V.), which shall |
|
* act as a proxy defined in Section 6 of version 3 of the license. |
|
* |
|
* 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 |
|
* Lesser General Public License for more details. |
|
* |
|
* You should have received a copy of the GNU Lesser General Public |
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>. |
|
*/ |
|
|
|
#pragma once |
|
|
|
#include <QDateTime> |
|
#include <QString> |
|
#include <QUrl> |
|
|
|
#include "notifications.h" |
|
|
|
#include "notificationmanager_export.h" |
|
|
|
namespace NotificationManager |
|
{ |
|
|
|
class JobPrivate; |
|
|
|
class NOTIFICATIONMANAGER_EXPORT Job : public QObject |
|
{ |
|
Q_OBJECT |
|
|
|
/** |
|
* The job infoMessage, e.g. "Copying". |
|
*/ |
|
Q_PROPERTY(QString summary READ summary NOTIFY summaryChanged) |
|
/** |
|
* User-friendly compact description text of the job, |
|
* for example "42 of 1337 files to "~/some/folder", or |
|
* "SomeFile.txt to Downloads". |
|
*/ |
|
Q_PROPERTY(QString text READ text NOTIFY textChanged) |
|
|
|
/** |
|
* The desktop entry of the application owning the job, e.g. "org.kde.dolphin". |
|
*/ |
|
Q_PROPERTY(QString desktopEntry READ desktopEntry CONSTANT) |
|
/** |
|
* The user-visible name of the application owning the job, e.g. "Dolphin". |
|
*/ |
|
Q_PROPERTY(QString applicationName READ applicationName CONSTANT) |
|
/** |
|
* The icon name of the application owning the job, e.g. "system-file-manager". |
|
*/ |
|
Q_PROPERTY(QString applicationIconName READ applicationIconName CONSTANT) |
|
/** |
|
* The state the job is currently in. |
|
*/ |
|
Q_PROPERTY(Notifications::JobState state READ state NOTIFY stateChanged) |
|
/** |
|
* The total percentage (0-100) of job completion. |
|
*/ |
|
Q_PROPERTY(int percentage READ percentage NOTIFY percentageChanged) |
|
/** |
|
* The error code of the job failure. |
|
*/ |
|
Q_PROPERTY(int error READ error NOTIFY errorChanged) |
|
/** |
|
* Whether the job can be suspended. |
|
* |
|
* @sa Notifications::suspendJob |
|
* @sa Notifications::resumeJob |
|
*/ |
|
Q_PROPERTY(bool suspendable READ suspendable CONSTANT) |
|
/** |
|
* Whether the job can be aborted. |
|
* |
|
* @sa Notifications::killJob |
|
*/ |
|
Q_PROPERTY(bool killable READ killable CONSTANT) |
|
|
|
/** |
|
* The destination URL of a job. |
|
*/ |
|
Q_PROPERTY(QUrl destUrl READ destUrl NOTIFY destUrlChanged) |
|
|
|
/** |
|
* Current transfer rate in Byte/s |
|
*/ |
|
Q_PROPERTY(qulonglong speed READ speed NOTIFY speedChanged) |
|
|
|
Q_PROPERTY(qulonglong processedBytes READ processedBytes NOTIFY processedBytesChanged) |
|
Q_PROPERTY(qulonglong processedFiles READ processedFiles NOTIFY processedFilesChanged) |
|
Q_PROPERTY(qulonglong processedDirectories READ processedDirectories NOTIFY processedDirectoriesChanged) |
|
|
|
Q_PROPERTY(qulonglong totalBytes READ totalBytes NOTIFY totalBytesChanged) |
|
Q_PROPERTY(qulonglong totalFiles READ totalFiles NOTIFY totalFilesChanged) |
|
Q_PROPERTY(qulonglong totalDirectories READ totalDirectories NOTIFY totalDirectoriesChanged) |
|
|
|
Q_PROPERTY(QString descriptionLabel1 READ descriptionLabel1 NOTIFY descriptionLabel1Changed) |
|
Q_PROPERTY(QString descriptionValue1 READ descriptionValue1 NOTIFY descriptionValue1Changed) |
|
|
|
Q_PROPERTY(QString descriptionLabel2 READ descriptionLabel2 NOTIFY descriptionLabel2Changed) |
|
Q_PROPERTY(QString descriptionValue2 READ descriptionValue2 NOTIFY descriptionValue2Changed) |
|
|
|
/** |
|
* Whether there are any details available for this job. |
|
* |
|
* This is true as soon as any of the following are available: |
|
* - processed amount (of any unit) |
|
* - total amount (of any unit) |
|
* - description label or value (of any row) |
|
* - speed |
|
*/ |
|
Q_PROPERTY(bool hasDetails READ hasDetails NOTIFY hasDetailsChanged) |
|
|
|
/** |
|
* This tries to generate a valid URL for a file that's being processed by converting descriptionValue2 |
|
* (which is assumed to be the Destination) and if that isn't valid, descriptionValue1 to a URL. |
|
*/ |
|
Q_PROPERTY(QUrl descriptionUrl READ descriptionUrl NOTIFY descriptionUrlChanged) |
|
|
|
public: |
|
explicit Job(uint id, QObject *parent = nullptr); |
|
~Job() override; |
|
|
|
uint id() const; |
|
|
|
QDateTime created() const; |
|
|
|
QDateTime updated() const; |
|
void resetUpdated(); |
|
|
|
QString summary() const; |
|
QString text() const; |
|
|
|
QString desktopEntry() const; |
|
// TODO remove and let only constructor do it? |
|
void setDesktopEntry(const QString &desktopEntry); |
|
|
|
QString applicationName() const; |
|
// TODO remove and let only constructor do it? |
|
void setApplicationName(const QString &applicationName); |
|
|
|
QString applicationIconName() const; |
|
// TODO remove and let only constructor do it? |
|
void setApplicationIconName(const QString &applicationIconName); |
|
|
|
Notifications::JobState state() const; |
|
void setState(Notifications::JobState jobState); |
|
|
|
int percentage() const; |
|
|
|
int error() const; |
|
void setError(int error); |
|
|
|
QString errorText() const; |
|
void setErrorText(const QString &errorText); |
|
|
|
bool suspendable() const; |
|
// TODO remove and let only constructor do it? |
|
void setSuspendable(bool suspendable); |
|
|
|
bool killable() const; |
|
// TODO remove and let only constructor do it? |
|
void setKillable(bool killable); |
|
|
|
QUrl destUrl() const; |
|
|
|
qulonglong speed() const; |
|
|
|
qulonglong processedBytes() const; |
|
qulonglong processedFiles() const; |
|
qulonglong processedDirectories() const; |
|
|
|
qulonglong totalBytes() const; |
|
qulonglong totalFiles() const; |
|
qulonglong totalDirectories() const; |
|
|
|
QString descriptionLabel1() const; |
|
QString descriptionValue1() const; |
|
|
|
QString descriptionLabel2() const; |
|
QString descriptionValue2() const; |
|
|
|
bool hasDetails() const; |
|
|
|
QUrl descriptionUrl() const; |
|
|
|
bool expired() const; |
|
void setExpired(bool expired); |
|
|
|
bool dismissed() const; |
|
void setDismissed(bool dismissed); |
|
|
|
Q_INVOKABLE void suspend(); |
|
Q_INVOKABLE void resume(); |
|
Q_INVOKABLE void kill(); |
|
|
|
signals: |
|
void updatedChanged(); |
|
void summaryChanged(); |
|
void textChanged(); |
|
void stateChanged(Notifications::JobState jobState); |
|
void percentageChanged(int percentage); |
|
void errorChanged(int error); |
|
void errorTextChanged(const QString &errorText); |
|
void destUrlChanged(); |
|
void speedChanged(); |
|
void processedBytesChanged(); |
|
void processedFilesChanged(); |
|
void processedDirectoriesChanged(); |
|
void processedAmountChanged(); |
|
void totalBytesChanged(); |
|
void totalFilesChanged(); |
|
void totalDirectoriesChanged(); |
|
void totalAmountChanged(); |
|
void descriptionLabel1Changed(); |
|
void descriptionValue1Changed(); |
|
void descriptionLabel2Changed(); |
|
void descriptionValue2Changed(); |
|
void descriptionUrlChanged(); |
|
void hasDetailsChanged(); |
|
void expiredChanged(); |
|
void dismissedChanged(); |
|
|
|
private: |
|
JobPrivate *d; |
|
|
|
friend class JobsModel; |
|
friend class JobsModelPrivate; |
|
|
|
}; |
|
|
|
} // namespace NotificationManager
|
|
|