From 865f314dd5ed55508f45a32973b709b79a541e36 Mon Sep 17 00:00:00 2001 From: tpearson Date: Fri, 11 Dec 2009 03:46:01 +0000 Subject: kdelibs update to Trinity v3.5.11 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1061230 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- khtml/misc/knsplugininstaller.h | 269 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 269 insertions(+) create mode 100644 khtml/misc/knsplugininstaller.h (limited to 'khtml/misc/knsplugininstaller.h') diff --git a/khtml/misc/knsplugininstaller.h b/khtml/misc/knsplugininstaller.h new file mode 100644 index 000000000..d49a79f78 --- /dev/null +++ b/khtml/misc/knsplugininstaller.h @@ -0,0 +1,269 @@ +/* + * This file is part of the KDE project. + * + * Copyright (C) 2005 Benoit Canet + * with some advices from Aurelien Gateau + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef KNSPLUGININSTALLER_H +#define KNSPLUGININSTALLER_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class QStringList; + +/* + * This class contains all the infos needed to install a given plugin + * Takes and parse a QDomNode in its constructor + */ +class KNSPluginInfo +{ + +public: + + /* + * Construct the plugin info object + */ + KNSPluginInfo(); + KNSPluginInfo(QDomNode pluginNode); + ~KNSPluginInfo(); + + /* + * Check the validity of the plugin info object + */ + bool isValid() const; + + //Accessor methods + QString pluginName() const; + QString licence() const; + KURL licenceURL() const; + KURL pluginURL() const; + const QStringList& pluginFileList() const; + +private: + + // plugin info + QString m_pluginName; + QString m_licence; + KURL m_licenceURL; + KURL m_pluginURL; + QStringList m_pluginFileList; + + +}; + + +/* + * This class contain all the the methods used to perform a plugin installation + * + */ +class KNSPluginInstallEngine : public QObject +{ + Q_OBJECT +public: + + /* + * Construct the class + */ + KNSPluginInstallEngine(KMimeType::Ptr mime); + ~KNSPluginInstallEngine(); + + /* + * Check if the installer engine and wizzard is activated + */ + static bool isActive(); + /** + * Check the availability of a plugin + */ + bool pluginAvailable(); + /* + * Return the list of plugins Available + */ + const QValueList& pluginList() const; + void startInstall(KNSPluginInfo info); + + + +private: + + // methods used to check the kde config and detect if an adequate plugin is available + + /* + * load kde KNSPluginInstaller config + */ + bool loadConfig(); + /* + * retrieve the xml configuration file + */ + bool loadXmlConfig(); + /* + * parse the xml configuration file + */ + bool findPlugin(); + + + QMap m_archMap; + QString m_pluginsXmlConfig; + QValueList m_pluginList; + KMimeType::Ptr m_mime; + KURL m_pluginsListFileURL; + QString m_tmpPluginFileName; + KIO::CopyJob *m_downloadJob; + KIO::CopyJob *m_installFileJob; + KNSPluginInfo m_toInstallPluginInfo; + QProcess *m_scanProc; + +signals: + // Signals used to communicate with the wizzard + void installProgress(int percent); + void installCompleted(); + void installFailed(); + +private slots: + // Used to monitor the plugin downloading + void slotDownLoadProgress(KIO::Job *job, unsigned long percent); + void slotDownloadResult(KIO::Job *job); + + // Used to monitor the plugin installation + void slotCopyProgress(KIO::Job *job, unsigned long percent); + void slotCopyResult(KIO::Job *job); + + // Used to monitor the plugins scan + void readScanProcFromStdout(); + void endScanProc(); + + + +}; + +/* + * This class is a wizzard used to install a plugin + */ +class KNSPluginWizard : public KWizard +{ + Q_OBJECT +public: + + /** + * Construct a KNSpluginInstaller + */ + KNSPluginWizard(QWidget *parent, const char *name, KMimeType::Ptr mime); + ~KNSPluginWizard(); + + + /** + * Lauch the wizzard + */ + int exec(); + /* + * Check the availability of a plugin + */ + bool pluginAvailable(); + + +private: + // methods used in the constructor to init the wizzard pages + void initConfirmationPage(); + void initLicencePage(); + void initInstallationProgressPage(); + void initFinishPage(); + + // in this method we disable or enable the wizzard pages buttons + void initPagesButtonStates(); + + /* + * Connect signals + */ + void connectSignals(); + + /* + * Overiden method called when a page is shown + */ + void showPage(QWidget *page); + + + // Plugin installation engine + KNSPluginInstallEngine m_installEngine; + + // pages widgets + QVBox *m_confirmationVBox; + QVBox *m_licenceVBox; + QWidget *m_installationProgressWidget; + QWidget *m_finishWidget; + + // plugin list + KListView *m_pluginListView; + + // licence stuff + QLabel *m_licencePageLabel; + KTextEdit *m_licencePageText; + QRadioButton *m_licencePageAgree; + QRadioButton *m_licencePageDisagree; + QButtonGroup *m_agreementButtonGroup; + + // installation progress bar + KProgress *m_installationProgressBar; + + // Finish Label + QLabel *m_finishLabel; + + // installation status + bool m_installationComplete; + +private slots: + /* + * Check if the user Agree or disagree with the licence + */ + void slotAgreementClicked(int id); + /* + * Called when the installation is completed + */ + void slotInstallationCompleted(); + /* + * Called when the installation has failed + */ + void slotInstallationFailed(); + +signals: + /* + * Emited when the installation has complete - TODO connect this signal to reload the page + */ + void pluginInstallCompleted(); +}; + + + + + +#endif -- cgit v1.2.1