#ifndef SYNCTHINGFILEITEMACTIONSTATICDATA_H #define SYNCTHINGFILEITEMACTIONSTATICDATA_H #include /*! * \brief The SyncthingFileItemActionStaticData class holds objects required during the whole application's live time. * * For instance the connection to Syncthing is kept alive until Dolphin is closed to prevent re-establishing it on each and * every time the context menu is shown. */ class SyncthingFileItemActionStaticData : public QObject { Q_OBJECT Q_PROPERTY(QString configPath READ configPath) Q_PROPERTY(bool useBrightCustomColors READ isUsingBrightCustomColors) Q_PROPERTY(QString currentError READ currentError WRITE setCurrentError NOTIFY currentErrorChanged RESET clearCurrentError) Q_PROPERTY(bool hasError READ hasError NOTIFY hasErrorChanged) Q_PROPERTY(bool initialized READ isInitialized) public: explicit SyncthingFileItemActionStaticData(); Data::SyncthingConnection &connection(); const Data::SyncthingConnection &connection() const; const QString &configPath() const; bool isUsingBrightCustomColors() const; const QString ¤tError() const; bool hasError() const; bool isInitialized() const; public Q_SLOTS: void initialize(); bool applySyncthingConfiguration(const QString &syncthingConfigFilePath, const QString &syncthingApiKey, bool skipSavingConfig); void applyBrightCustomColorsSetting(bool useBrightCustomColors, bool skipSavingConfig); void logConnectionStatus(); void logConnectionError(const QString &errorMessage, Data::SyncthingErrorCategory errorCategory); void rescanDir(const QString &dirId, const QString &relpath = QString()); static void showAboutDialog(); void selectSyncthingConfig(); void handleBrightCustomColorsChanged(); void setCurrentError(const QString ¤tError); void clearCurrentError(); Q_SIGNALS: void currentErrorChanged(const QString &error); void hasErrorChanged(bool hasError); private: void appendNoteToError(QString &errorMessage, const QString &newSyncthingConfigFilePath) const; Data::SyncthingConnection m_connection; QString m_configFilePath; QString m_currentError; bool m_useBrightCustomColors; bool m_initialized; }; inline Data::SyncthingConnection &SyncthingFileItemActionStaticData::connection() { return m_connection; } inline const Data::SyncthingConnection &SyncthingFileItemActionStaticData::connection() const { return m_connection; } inline const QString &SyncthingFileItemActionStaticData::configPath() const { return m_configFilePath; } inline bool SyncthingFileItemActionStaticData::isUsingBrightCustomColors() const { return m_useBrightCustomColors; } inline const QString &SyncthingFileItemActionStaticData::currentError() const { return m_currentError; } inline bool SyncthingFileItemActionStaticData::hasError() const { return !currentError().isEmpty(); } inline bool SyncthingFileItemActionStaticData::isInitialized() const { return m_initialized; } inline void SyncthingFileItemActionStaticData::clearCurrentError() { m_currentError.clear(); } #endif // SYNCTHINGFILEITEMACTIONSTATICDATA_H