You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdelibs/khtml/misc/knsplugininstaller.h

269 lines
6.0 KiB

/*
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 <qbuttongroup.h>
#include <qdom.h>
#include <qlabel.h>
#include <qobject.h>
#include <qprocess.h>
#include <qradiobutton.h>
#include <qvaluelist.h>
#include <qvbox.h>
#include <qwidget.h>
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<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();
QMap<QString, QString> m_archMap;
QString m_pluginsXmlConfig;
QValueList<KNSPluginInfo> 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