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.
258 lines
6.9 KiB
258 lines
6.9 KiB
15 years ago
|
/*
|
||
|
This file is part of KNewStuff.
|
||
|
Copyright (c) 2003 Josef Spillner <spillner@kde.org>
|
||
|
|
||
|
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 KNEWSTUFF_DOWNLOADDIALOG_H
|
||
|
#define KNEWSTUFF_DOWNLOADDIALOG_H
|
||
|
|
||
|
#include <kdialogbase.h>
|
||
|
#include <knewstuff/provider.h>
|
||
|
|
||
|
namespace KIO
|
||
|
{
|
||
|
class Job;
|
||
|
}
|
||
|
|
||
|
class KListView;
|
||
|
class QTextBrowser;
|
||
|
class QFrame;
|
||
|
class KNewStuffGeneric;
|
||
|
|
||
|
namespace KNS
|
||
|
{
|
||
|
|
||
|
class ProviderLoader;
|
||
|
class Entry;
|
||
|
class Provider;
|
||
|
class Engine;
|
||
|
|
||
|
/**
|
||
|
* @short Common download dialog for data browsing and installation.
|
||
|
*
|
||
|
* It provides an easy-to-use convenience method named open() which does all
|
||
|
* the work, unless a more complex operation is needed.
|
||
|
* \code
|
||
|
* KNewStuff::DownloadDialog::open("kdesktop/wallpapers");
|
||
|
* \endcode
|
||
|
*
|
||
|
* @author Josef Spillner (spillner@kde.org)
|
||
|
* \par Maintainer:
|
||
|
* Josef Spillner (spillner@kde.org)
|
||
|
*/
|
||
|
class KDE_EXPORT DownloadDialog : public KDialogBase
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
struct Private;
|
||
|
public:
|
||
|
/**
|
||
|
Constructor.
|
||
|
|
||
|
@param engine a pre-built engine object, or NULL if the download
|
||
|
dialog should create an engine on its own
|
||
|
@param parent the parent window
|
||
|
@param caption the dialog caption
|
||
|
*/
|
||
|
DownloadDialog(Engine *engine, QWidget *parent, const QString& caption);
|
||
|
|
||
|
/**
|
||
|
Alternative constructor.
|
||
|
Always uses an internal engine.
|
||
|
|
||
|
@param parent the parent window
|
||
|
@param caption the dialog caption
|
||
|
*/
|
||
|
DownloadDialog(QWidget *parent, const QString& caption);
|
||
|
|
||
|
/**
|
||
|
Destructor.
|
||
|
*/
|
||
|
~DownloadDialog();
|
||
|
|
||
|
/**
|
||
|
Restricts the display of available data to a certain data type.
|
||
|
|
||
|
@param type a Hotstuff data type such as "korganizer/calendar"
|
||
|
*/
|
||
|
void setType(QString type);
|
||
|
// ### KDE 4.0: use const QString&
|
||
|
|
||
|
/**
|
||
|
Fetches descriptions of all available data, optionally considering
|
||
|
a previously set type.
|
||
|
*/
|
||
|
void load();
|
||
|
|
||
|
/**
|
||
|
Explicitly uses this provider list instead of the one read from
|
||
|
the application configuration.
|
||
|
|
||
|
@param providerList the URL of the provider list
|
||
|
|
||
|
@since 3.4
|
||
|
*/
|
||
|
void setProviderList(const QString& providerList);
|
||
|
|
||
|
/**
|
||
|
Fetches descriptions of all available data, optionally considering
|
||
|
a previously set type.
|
||
|
|
||
|
@param providerList the URl to the list of providers; if empty
|
||
|
we first try the ProvidersUrl from KGlobal::config, then we
|
||
|
fall back to a hardcoded value.
|
||
|
*/
|
||
|
void load(QString providerList); // KDE4: merge with load() above
|
||
|
|
||
|
/**
|
||
|
Adds another provider to the download dialog.
|
||
|
This is normally done internally.
|
||
|
|
||
|
@param p the Hotstuff provider to be added
|
||
|
*/
|
||
|
void addProvider(Provider *p);
|
||
|
|
||
|
/**
|
||
|
Adds an additional entry to the current provider.
|
||
|
This is normally done internally.
|
||
|
|
||
|
@param entry a Hotstuff data entry to be added
|
||
|
*/
|
||
|
void addEntry(Entry *entry);
|
||
|
|
||
|
/**
|
||
|
Adds an additional entry to the current provider.
|
||
|
This is normally done internal.
|
||
|
This version takes into accounts the download variant.
|
||
|
|
||
|
@param entry a Hotstuff data entry to be added
|
||
|
@param variants all variants this entry is intended for
|
||
|
*/
|
||
|
void addEntry(Entry *entry, const QStringList& variants);
|
||
|
|
||
|
/**
|
||
|
Clears the entry list of the current provider.
|
||
|
This is normally done internally.
|
||
|
*/
|
||
|
void clear();
|
||
|
|
||
|
/**
|
||
|
Constructor.
|
||
|
|
||
|
@param engine a pre-built engine object, or NULL if the download
|
||
|
dialog should create an engine on its own
|
||
|
@param parent the parent window
|
||
|
*/
|
||
|
DownloadDialog(Engine *engine, QWidget *parent = 0);
|
||
|
// ### KDE 4.0: remove and make caption/parent argument optional
|
||
|
|
||
|
/**
|
||
|
Alternative constructor.
|
||
|
Always uses an internal engine.
|
||
|
|
||
|
@param parent the parent window
|
||
|
*/
|
||
|
DownloadDialog(QWidget *parent = 0);
|
||
|
// ### KDE 4.0: remove and make caption/parent argument optional
|
||
|
|
||
|
/**
|
||
|
Opens the download dialog.
|
||
|
This is a convenience method which automatically sets up the dialog.
|
||
|
@see setType()
|
||
|
@see load()
|
||
|
|
||
|
@param type a data type such as "korganizer/calendar"
|
||
|
@param caption the dialog caption
|
||
|
*/
|
||
|
static void open(const QString& type, const QString& caption);
|
||
|
|
||
|
/**
|
||
|
Opens the download dialog.
|
||
|
This is a convenience method which automatically sets up the dialog.
|
||
|
@see setType()
|
||
|
@see load()
|
||
|
|
||
|
@param type a data type such as "korganizer/calendar"
|
||
|
@deprecated use open( const QString& type, const QString& caption );
|
||
|
*/
|
||
|
static void open(QString type) KDE_DEPRECATED; // ### KDE 4.0: remove and make caption/parent argument optional
|
||
|
|
||
|
/**
|
||
|
Returns the list of installed data entries.
|
||
|
|
||
|
@return list of data entries which have been installed
|
||
|
*/
|
||
|
QPtrList<Entry> installedEntries();
|
||
|
// ### KDE 4.0: the open() method should return this
|
||
|
|
||
|
public slots:
|
||
|
/**
|
||
|
Availability of the provider list.
|
||
|
|
||
|
@param list list of Hotstuff providers
|
||
|
*/
|
||
|
void slotProviders(Provider::List *list);
|
||
|
|
||
|
protected slots:
|
||
|
void slotApply();
|
||
|
void slotOk();
|
||
|
|
||
|
private slots:
|
||
|
void slotResult(KIO::Job *job);
|
||
|
void slotData(KIO::Job *job, const QByteArray &a);
|
||
|
void slotInstall();
|
||
|
void slotDetails();
|
||
|
void slotInstalled(KIO::Job *job);
|
||
|
void slotTab();
|
||
|
void slotSelected();
|
||
|
void slotPage(QWidget *w);
|
||
|
void slotFinish();
|
||
|
void slotEmail(const QString& link);
|
||
|
|
||
|
private:
|
||
|
void init(Engine *e);
|
||
|
Entry *getEntry();
|
||
|
void loadProvider(Provider *p);
|
||
|
void install(Entry *e);
|
||
|
int installStatus(Entry *e);
|
||
|
QListViewItem *currentEntryItem();
|
||
|
|
||
|
ProviderLoader *m_loader;
|
||
|
QString m_entryname;
|
||
|
KListView *lv_r, *lv_d, *lv_l;
|
||
|
QTextBrowser *m_rt;
|
||
|
QFrame *m_frame;
|
||
|
QListViewItem *m_entryitem;
|
||
|
QPtrList<Entry> m_entries;
|
||
|
Entry *m_entry;
|
||
|
KNewStuffGeneric *m_s;
|
||
|
int m_curtab;
|
||
|
QMap<QWidget*, QValueList<KListView*>* > m_map;
|
||
|
QMap<QWidget*, Provider*> m_providers;
|
||
|
QMap<QWidget*, QTextBrowser*> m_rts;
|
||
|
QMap<QWidget*, QValueList<QPushButton*>* > m_buttons;
|
||
|
QMap<KIO::Job*, Provider*> m_jobs;
|
||
|
QMap<KIO::Job*, QString> m_data;
|
||
|
QString m_filter;
|
||
|
Engine *m_engine;
|
||
|
Private *d;
|
||
|
};
|
||
|
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
|