summaryrefslogtreecommitdiffstats
path: root/tdehtml/misc/knsplugininstaller.h
diff options
context:
space:
mode:
Diffstat (limited to 'tdehtml/misc/knsplugininstaller.h')
-rw-r--r--tdehtml/misc/knsplugininstaller.h268
1 files changed, 268 insertions, 0 deletions
diff --git a/tdehtml/misc/knsplugininstaller.h b/tdehtml/misc/knsplugininstaller.h
new file mode 100644
index 000000000..240202468
--- /dev/null
+++ b/tdehtml/misc/knsplugininstaller.h
@@ -0,0 +1,268 @@
+/*
+ This file is part of the KDE libraries
+
+ Copyright (C) 2005 Benoit Canet <bcanet@dental-on-line.fr>
+ Copyright (C) 2005 Aurelien Gateau <agateau@dental-on-line.fr>
+
+ 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 Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef KNSPLUGININSTALLER_H
+#define KNSPLUGININSTALLER_H
+
+#include <job.h>
+#include <ktextedit.h>
+#include <kmimetype.h>
+#include <kprogress.h>
+#include <kurl.h>
+#include <kwizard.h>
+
+#include <tqbuttongroup.h>
+#include <tqdom.h>
+#include <tqlabel.h>
+#include <tqobject.h>
+#include <tqprocess.h>
+#include <tqradiobutton.h>
+#include <tqvaluelist.h>
+#include <tqvbox.h>
+#include <tqwidget.h>
+
+class TQStringList;
+
+/*
+ * This class contains all the infos needed to install a given plugin
+ * Takes and parse a TQDomNode in its constructor
+ */
+class KNSPluginInfo
+{
+
+public:
+
+ /*
+ * Construct the plugin info object
+ */
+ KNSPluginInfo();
+ KNSPluginInfo(TQDomNode pluginNode);
+ ~KNSPluginInfo();
+
+ /*
+ * Check the validity of the plugin info object
+ */
+ bool isValid() const;
+
+ //Accessor methods
+ TQString pluginName() const;
+ TQString licence() const;
+ KURL licenceURL() const;
+ KURL pluginURL() const;
+ const TQStringList& pluginFileList() const;
+
+private:
+
+ // plugin info
+ TQString m_pluginName;
+ TQString m_licence;
+ KURL m_licenceURL;
+ KURL m_pluginURL;
+ TQStringList m_pluginFileList;
+
+
+};
+
+
+/*
+ * This class contain all the the methods used to perform a plugin installation
+ *
+ */
+class KNSPluginInstallEngine : public TQObject
+{
+ 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 TQValueList<KNSPluginInfo>& 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();
+
+
+ TQMap<TQString, TQString> m_archMap;
+ TQString m_pluginsXmlConfig;
+ TQValueList<KNSPluginInfo> m_pluginList;
+ KMimeType::Ptr m_mime;
+ KURL m_pluginsListFileURL;
+ TQString m_tmpPluginFileName;
+ TDEIO::CopyJob *m_downloadJob;
+ TDEIO::CopyJob *m_installFileJob;
+ KNSPluginInfo m_toInstallPluginInfo;
+ TQProcess *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(TDEIO::Job *job, unsigned long percent);
+ void slotDownloadResult(TDEIO::Job *job);
+
+ // Used to monitor the plugin installation
+ void slotCopyProgress(TDEIO::Job *job, unsigned long percent);
+ void slotCopyResult(TDEIO::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(TQWidget *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(TQWidget *page);
+
+
+ // Plugin installation engine
+ KNSPluginInstallEngine m_installEngine;
+
+ // pages widgets
+ TQVBox *m_confirmationVBox;
+ TQVBox *m_licenceVBox;
+ TQWidget *m_installationProgressWidget;
+ TQWidget *m_finishWidget;
+
+ // plugin list
+ KListView *m_pluginListView;
+
+ // licence stuff
+ TQLabel *m_licencePageLabel;
+ KTextEdit *m_licencePageText;
+ TQRadioButton *m_licencePageAgree;
+ TQRadioButton *m_licencePageDisagree;
+ TQButtonGroup *m_agreementButtonGroup;
+
+ // installation progress bar
+ KProgress *m_installationProgressBar;
+
+ // Finish Label
+ TQLabel *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