// This file is part of RSS Guard. // // Copyright (C) 2011-2016 by Martin Rotter // // RSS Guard 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 3 of the License, or // (at your option) any later version. // // RSS Guard 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 RSS Guard. If not, see . #ifndef SYSTEMFACTORY_H #define SYSTEMFACTORY_H #include #include #include #include #include class UpdateUrl { public: QString m_fileUrl; QString m_platform; QString m_os; }; class UpdateInfo { public: explicit UpdateInfo() : m_availableVersion(QString()), m_changes(QString()) { } QString m_availableVersion; QString m_changes; QHash m_urls; }; Q_DECLARE_METATYPE(UpdateInfo) class SystemFactory : public QObject { Q_OBJECT public: // Specifies possible states of auto-start functionality. enum AutoStartStatus { Enabled, Disabled, Unavailable }; // Constructors and destructors. explicit SystemFactory(QObject *parent = 0); // Constructors and destructors. virtual ~SystemFactory(); // Returns current status of auto-start function. SystemFactory::AutoStartStatus getAutoStartStatus() const; // Sets new status for auto-start function. // Function returns false if setting of // new status failed. bool setAutoStartStatus(const SystemFactory::AutoStartStatus &new_status); #if defined(Q_OS_WIN) bool removeTrolltechJunkRegistryKeys(); #endif #if defined(Q_OS_LINUX) // Returns standard location where auto-start .desktop files // should be placed. QString getAutostartDesktopFileLocation() const; #endif // Retrieves username of currently logged-in user. QString getUsername() const; // Tries to download list with new updates. QPair checkForUpdates() const; // Checks if update is newer than current application version. static bool isVersionNewer(const QString &new_version, const QString &base_version); static bool isVersionEqualOrNewer(const QString &new_version, const QString &base_version); static bool openFolderFile(const QString &file_path); public slots: void checkForUpdatesOnStartup(); private: // Performs parsing of downloaded file with list of updates. UpdateInfo parseUpdatesFile(const QByteArray &updates_file, const QByteArray &changelog) const; }; #endif // SYSTEMFACTORY_H