File indexing completed on 2024-09-22 04:40:52

0001 /*
0002     SPDX-FileCopyrightText: 2007 Volker Krause <vkrause@kde.org>
0003     SPDX-FileCopyrightText: 2008 Kevin Krammer <kevin.krammer@gmx.at>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #pragma once
0009 
0010 #include "agentbase.h"
0011 #include "tracerinterface.h"
0012 
0013 #include <KLocalizedString>
0014 
0015 class QSettings;
0016 class QTimer;
0017 class QNetworkConfigurationManager;
0018 
0019 namespace Akonadi
0020 {
0021 /**
0022  * @internal
0023  */
0024 class AgentBasePrivate : public QObject
0025 {
0026     Q_OBJECT
0027     Q_CLASSINFO("D-Bus Interface", "org.kde.dfaure")
0028 
0029 public:
0030     explicit AgentBasePrivate(AgentBase *parent);
0031     ~AgentBasePrivate() override;
0032     void init();
0033     virtual void delayedInit();
0034 
0035 public Q_SLOTS:
0036     void slotStatus(int status, const QString &message);
0037     void slotPercent(int progress);
0038     void slotWarning(const QString &message);
0039     void slotError(const QString &message);
0040     void slotNetworkStatusChange(bool isOnline);
0041     void slotResumedFromSuspend();
0042     void slotTemporaryOfflineTimeout();
0043 
0044     virtual void changeProcessed();
0045 
0046     QString defaultReadyMessage() const
0047     {
0048         if (mOnline) {
0049             return i18nc("@info:status Application ready for work", "Ready");
0050         }
0051         return i18nc("@info:status", "Offline");
0052     }
0053 
0054     QString defaultSyncingMessage() const
0055     {
0056         return i18nc("@info:status", "Syncing...");
0057     }
0058 
0059     QString defaultErrorMessage() const
0060     {
0061         return i18nc("@info:status", "Error.");
0062     }
0063 
0064     QString defaultUnconfiguredMessage() const
0065     {
0066         return i18nc("@info:status", "Not configured");
0067     }
0068 
0069     void setProgramName();
0070 
0071 public:
0072     AgentBase *q_ptr;
0073     Q_DECLARE_PUBLIC(AgentBase)
0074 
0075     QString mId;
0076     QString mName;
0077     QString mResourceTypeName;
0078 
0079     int mStatusCode;
0080     QString mStatusMessage;
0081 
0082     int mProgress;
0083     QString mProgressMessage;
0084 
0085     bool mNeedsNetwork;
0086     bool mOnline;
0087     bool mDesiredOnlineState;
0088 
0089     bool mPendingQuit;
0090 
0091     QSettings *mSettings = nullptr;
0092 
0093     ChangeRecorder *mChangeRecorder = nullptr;
0094 
0095     org::freedesktop::Akonadi::Tracer *mTracer = nullptr;
0096 
0097     AgentBase::Observer *mObserver = nullptr;
0098     QDBusInterface *mPowerInterface = nullptr;
0099 
0100     QTimer *mTemporaryOfflineTimer = nullptr;
0101 
0102     QEventLoopLocker *mEventLoopLocker = nullptr;
0103 public Q_SLOTS:
0104     // Dump the contents of the current ChangeReplay
0105     Q_SCRIPTABLE QString dumpNotificationListToString() const;
0106     Q_SCRIPTABLE void dumpMemoryInfo() const;
0107     Q_SCRIPTABLE QString dumpMemoryInfoToString() const;
0108 
0109     virtual void itemAdded(const Akonadi::Item &item, const Akonadi::Collection &collection);
0110     virtual void itemChanged(const Akonadi::Item &item, const QSet<QByteArray> &partIdentifiers);
0111     virtual void itemMoved(const Akonadi::Item &item, const Akonadi::Collection &source, const Akonadi::Collection &destination);
0112     virtual void itemRemoved(const Akonadi::Item &item);
0113     void itemLinked(const Akonadi::Item &item, const Akonadi::Collection &collection);
0114     void itemUnlinked(const Akonadi::Item &item, const Akonadi::Collection &collection);
0115 
0116     virtual void itemsFlagsChanged(const Akonadi::Item::List &items, const QSet<QByteArray> &addedFlags, const QSet<QByteArray> &removedFlags);
0117     virtual void itemsMoved(const Akonadi::Item::List &items, const Akonadi::Collection &source, const Akonadi::Collection &destination);
0118     virtual void itemsRemoved(const Akonadi::Item::List &items);
0119     virtual void itemsLinked(const Akonadi::Item::List &items, const Akonadi::Collection &collection);
0120     virtual void itemsUnlinked(const Akonadi::Item::List &items, const Akonadi::Collection &collection);
0121 
0122     virtual void collectionAdded(const Akonadi::Collection &collection, const Akonadi::Collection &parent);
0123     virtual void collectionChanged(const Akonadi::Collection &collection);
0124     virtual void collectionChanged(const Akonadi::Collection &collection, const QSet<QByteArray> &changedAttributes);
0125     virtual void collectionMoved(const Akonadi::Collection &collection, const Akonadi::Collection &source, const Akonadi::Collection &destination);
0126     virtual void collectionRemoved(const Akonadi::Collection &collection);
0127     void collectionSubscribed(const Akonadi::Collection &collection, const Akonadi::Collection &parent);
0128     void collectionUnsubscribed(const Akonadi::Collection &collection);
0129 
0130     virtual void tagAdded(const Akonadi::Tag &tag);
0131     virtual void tagChanged(const Akonadi::Tag &tag);
0132     virtual void tagRemoved(const Akonadi::Tag &tag);
0133     virtual void itemsTagsChanged(const Akonadi::Item::List &items, const QSet<Akonadi::Tag> &addedTags, const QSet<Akonadi::Tag> &removedTags);
0134 
0135     virtual void relationAdded(const Akonadi::Relation &relation);
0136     virtual void relationRemoved(const Akonadi::Relation &relation);
0137     virtual void
0138     itemsRelationsChanged(const Akonadi::Item::List &items, const Akonadi::Relation::List &addedRelations, const Akonadi::Relation::List &removedRelations);
0139 };
0140 
0141 }