/************************************************************************** ** * *This file is part of Qt SDK** ** * *Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).* ** * *Contact: Nokia Corporation qt-info@nokia.com** ** * *GNU Lesser General Public License Usage ** * *This file may be used under the terms of the GNU Lesser General Public * *License version 2.1 as published by the Free Software Foundation and * *appearing in the file LICENSE.LGPL included in the packaging of this file. * *Please review the following information to ensure the GNU Lesser General * *Public License version 2.1 requirements will be met: * *http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** * *In addition, as a special exception, Nokia gives you certain additional * *rights. These rights are described in the Nokia Qt LGPL Exception version * *1.1, included in the file LGPL_EXCEPTION.txt in this package. ** * *If you are unsure which license is appropriate for your use, please contact * *(qt-info@nokia.com). ** **************************************************************************/ #ifndef QINSTALLER_COMPONENT_H #define QINSTALLER_COMPONENT_H #include "qinstallerglobal.h" #include "qinstallercomponent_p.h" #include #include #include #include #include #include namespace KDUpdater { class Update; class UpdateOperation; struct PackageInfo; } namespace QInstaller { class Installer; class INSTALLER_EXPORT Component : public QObject, public QScriptable, public ComponentModelHelper { Q_OBJECT Q_DISABLE_COPY(Component); Q_PROPERTY(QString name READ name) Q_PROPERTY(QString displayName READ displayName) Q_PROPERTY(bool selected READ isSelected WRITE setSelected) Q_PROPERTY(bool autoCreateOperations READ autoCreateOperations WRITE setAutoCreateOperations) Q_PROPERTY(QStringList archives READ archives) Q_PROPERTY(QStringList userInterfaces READ userInterfaces) Q_PROPERTY(QStringList dependencies READ dependencies) Q_PROPERTY(bool fromOnlineRepository READ isFromOnlineRepository) Q_PROPERTY(QUrl repositoryUrl READ repositoryUrl) Q_PROPERTY(bool removeBeforeUpdate READ removeBeforeUpdate WRITE setRemoveBeforeUpdate) Q_PROPERTY(bool installed READ isInstalled) Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled) public: explicit Component(Installer *installer); explicit Component(KDUpdater::Update *update, Installer *installer); ~Component(); enum SelectMode { NormalSelectMode, InitializeComponentTreeSelectMode }; struct IsVirtual { bool operator() (const Component *comp) const { return comp->value(QLatin1String("Virtual"), QLatin1String("false")) .toLower() == QLatin1String("true"); } }; struct InstallPriorityLessThan { bool operator() (const Component *lhs, const Component *rhs) { const QLatin1String priority("InstallPriority"); return lhs->value(priority).toInt() < rhs->value(priority).toInt(); } }; struct SortingPriorityLessThan { bool operator() (const Component *lhs, const Component *rhs) const { const QLatin1String priority("SortingPriority"); return lhs->value(priority).toInt() < rhs->value(priority).toInt(); } }; void loadDataFromPackageInfo(const KDUpdater::PackageInfo &packageInfo); void loadDataFromUpdate(KDUpdater::Update* update); //TODO: remove this, it makes no sense void updateState(const bool selected); QHash variables() const; Q_INVOKABLE void setValue(const QString &key, const QString &value); Q_INVOKABLE QString value(const QString &key, const QString &defaultValue = QString()) const; QStringList archives() const; Installer *installer() const; void appendComponent(Component *component); void removeComponent(Component *component); Component *parentComponent(RunModes runMode = AllMode) const; QList childComponents(bool recursive = false, RunModes runMode = AllMode) const; void loadComponentScript(); //move this to private void loadComponentScript(const QString &fileName); void loadTranslations(const QDir &directory, const QStringList &qms); void loadUserInterfaces(const QDir &directory, const QStringList &uis); void loadLicenses(const QString &directory, const QHash &hash); void markAsPerformedInstallation(); QStringList userInterfaces() const; QHash > licenses() const; Q_INVOKABLE QWidget *userInterface(const QString &name) const; Q_INVOKABLE virtual void createOperations(); Q_INVOKABLE virtual void createOperationsForArchive(const QString &archive); Q_INVOKABLE virtual void createOperationsForPath(const QString &path); Q_INVOKABLE QList > pathesForUninstallation() const; Q_INVOKABLE void registerPathForUninstallation(const QString &path, bool wipe = false); QList operations() const; void addOperation(KDUpdater::UpdateOperation *operation); Q_INVOKABLE bool addOperation(const QString &operation, const QString ¶meter1 = QString(), const QString ¶meter2 = QString(), const QString ¶meter3 = QString(), const QString ¶meter4 = QString(), const QString ¶meter5 = QString(), const QString ¶meter6 = QString(), const QString ¶meter7 = QString(), const QString ¶meter8 = QString(), const QString ¶meter9 = QString(), const QString ¶meter10 = QString()); void addElevatedOperation(KDUpdater::UpdateOperation *operation); Q_INVOKABLE bool addElevatedOperation(const QString &operation, const QString ¶meter1 = QString(), const QString ¶meter2 = QString(), const QString ¶meter3 = QString(), const QString ¶meter4 = QString(), const QString ¶meter5 = QString(), const QString ¶meter6 = QString(), const QString ¶meter7 = QString(), const QString ¶meter8 = QString(), const QString ¶meter9 = QString(), const QString ¶meter10 = QString()); QStringList downloadableArchives() const; Q_INVOKABLE void addDownloadableArchive(const QString &path); Q_INVOKABLE void removeDownloadableArchive(const QString &path); QStringList stopProcessForUpdateRequests() const; Q_INVOKABLE void addStopProcessForUpdateRequest(const QString &process); Q_INVOKABLE void removeStopProcessForUpdateRequest(const QString &process); Q_INVOKABLE void setStopProcessForUpdateRequest(const QString &process, bool requested); QString name() const; QString displayName() const; QString uncompressedSize() const; QUrl repositoryUrl() const; void setRepositoryUrl(const QUrl &url); bool removeBeforeUpdate() const; void setRemoveBeforeUpdate(bool removeBeforeUpdate); QStringList dependencies() const; QList dependees() const; void languageChanged(); QString localTempPath() const; bool autoCreateOperations() const; bool operationsCreatedSuccessfully() const; Q_INVOKABLE bool isInstalled() const; Q_INVOKABLE bool installationRequested() const; Q_INVOKABLE bool uninstallationRequested() const; Q_INVOKABLE bool wasInstalled() const; Q_INVOKABLE bool wasUninstalled() const; Q_INVOKABLE bool isFromOnlineRepository() const; // TODO: remove the selected stuff bool isSelected(RunModes runMode = AllMode) const; //Qt::CheckState checkState(RunModes runMode) const; public Q_SLOTS: void setAutoCreateOperations(bool autoCreateOperations); void setSelected(bool selected, RunModes runMode = AllMode, SelectMode selectMode = NormalSelectMode); Q_SIGNALS: void loaded(); void selectedChanged(bool selected); void valueChanged(const QString &key, const QString &value); protected: QScriptValue callScriptMethod(const QString &name, const QScriptValueList ¶meters = QScriptValueList()); private Q_SLOTS: void updateModelData(const QString &key, const QString &value); private: void setLocalTempPath(const QString &tempPath); KDUpdater::UpdateOperation *createOperation(const QString &operation, const QString ¶meter1 = QString(), const QString ¶meter2 = QString(), const QString ¶meter3 = QString(), const QString ¶meter4 = QString(), const QString ¶meter5 = QString(), const QString ¶meter6 = QString(), const QString ¶meter7 = QString(), const QString ¶meter8 = QString(), const QString ¶meter9 = QString(), const QString ¶meter10 = QString()); private: ComponentPrivate *d; }; } // namespace QInstaller Q_DECLARE_METATYPE(QInstaller::Component*); #endif // QINSTALLER_COMPONENT_H