summaryrefslogtreecommitdiffstats
path: root/knewstuff/downloaddialog.cpp
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2014-09-21 18:30:01 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2014-09-21 18:30:01 -0500
commitf6d69d45cf25180a8285b2dd5c146a0481fd09ce (patch)
tree1bb437c632896e2f278931105530f61ee567bf69 /knewstuff/downloaddialog.cpp
parent47ac4096211c3f8634bc5e17027523dfe955bcaf (diff)
downloadtdelibs-f6d69d45cf25180a8285b2dd5c146a0481fd09ce.tar.gz
tdelibs-f6d69d45cf25180a8285b2dd5c146a0481fd09ce.zip
Finish renaming knewstuff
This relates to Bug 2093
Diffstat (limited to 'knewstuff/downloaddialog.cpp')
-rw-r--r--knewstuff/downloaddialog.cpp952
1 files changed, 0 insertions, 952 deletions
diff --git a/knewstuff/downloaddialog.cpp b/knewstuff/downloaddialog.cpp
deleted file mode 100644
index 4a3c56ff4..000000000
--- a/knewstuff/downloaddialog.cpp
+++ /dev/null
@@ -1,952 +0,0 @@
-/*
- This file is part of TDENewStuff.
- Copyright (c) 2003 Josef Spillner <spillner@kde.org>
- Copyright (c) 2014 Timothy Pearson <kb9vqf@pearsoncomputing.net>
-
- 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.
-*/
-
-#include "downloaddialog.h"
-#include "downloaddialog.moc"
-
-#include <tdelocale.h>
-#include <tdelistview.h>
-#include <kdebug.h>
-#include <tdeio/job.h>
-#include <tdeio/netaccess.h>
-#include <tdemessagebox.h>
-#include <kurl.h>
-#include <tdeconfig.h>
-#include <tdeapplication.h>
-#include <kiconloader.h>
-
-#include <knewstuff/entry.h>
-#include <knewstuff/knewstuffgeneric.h>
-#include <knewstuff/engine.h>
-
-#include <tqlayout.h>
-#include <tqpushbutton.h>
-#include <tqdom.h>
-#include <tqlabel.h>
-#include <tqtextbrowser.h>
-#include <tqtabwidget.h>
-#include <tqtimer.h> // hack
-
-#define OPENDESKTOP_REDIRECT_URL "opendesktop.org/content/download.php?content="
-
-using namespace KNS;
-
-struct DownloadDialog::Private
-{
- TQString m_providerlist;
- TQWidget *m_page;
- TDEListView *m_lvtmp_r, *m_lvtmp_d, *m_lvtmp_l;
- TQPtrList<Entry> m_installlist;
- TQMap<TDEIO::Job*, Provider*> m_variantjobs;
- TQMap<TDEIO::Job*, TQStringList> m_variants;
- TQMap<Provider*, Provider*> m_newproviders;
-};
-
-class NumSortListViewItem : public TDEListViewItem
-{
- public:
- NumSortListViewItem( TQListView * parent, TQString label1, TQString label2 = TQString::null, TQString label3 = TQString::null, TQString label4 = TQString::null, TQString label5 = TQString::null, TQString label6 = TQString::null, TQString label7 = TQString::null, TQString label8 = TQString::null ) :
- TDEListViewItem( parent, label1, label2, label3, label4, label5, label6, label7, label8 )
- {
- }
-
- TQString key(int col, bool asc) const {
- if (col == 2)
- {
- TQString s;
- s.sprintf("%08d", text(col).toInt());
- return s;
- }
- return TDEListViewItem::key( col, asc );
- }
-};
-
-class DateSortListViewItem : public TDEListViewItem
-{
- public:
- DateSortListViewItem( TQListView * parent, TQString label1, TQString label2 = TQString::null, TQString label3 = TQString::null, TQString label4 = TQString::null, TQString label5 = TQString::null, TQString label6 = TQString::null, TQString label7 = TQString::null, TQString label8 = TQString::null ) :
- TDEListViewItem( parent, label1, label2, label3, label4, label5, label6, label7, label8 )
- {
- }
-
- TQString key(int col, bool asc) const {
- if (col == 2)
- {
- TQString s;
- TQDate date = TDEGlobal::locale()->readDate(text(col));
- s.sprintf("%08d", date.year() * 366 + date.dayOfYear());
- return s;
- }
- return TDEListViewItem::key( col, asc );
- }
-};
-
-// BEGIN deprecated for KDE 4
-DownloadDialog::DownloadDialog(Engine *engine, TQWidget *)
-: KDialogBase(KDialogBase::IconList, i18n("Get Hot New Stuff"),
- KDialogBase::Close, KDialogBase::Close)
-{
- init(engine);
-}
-
-DownloadDialog::DownloadDialog(TQWidget *)
-: KDialogBase(KDialogBase::IconList, i18n("Get Hot New Stuff"),
- KDialogBase::Close, KDialogBase::Close)
-{
- init(0);
-}
-
-void DownloadDialog::open(TQString type)
-{
- DownloadDialog d;
- d.setType(type);
- d.load();
- d.exec();
-}
-// END deprecated for KDE 4
-
-DownloadDialog::DownloadDialog(Engine *engine, TQWidget *, const TQString& caption)
-: KDialogBase(KDialogBase::IconList, (caption.isNull() ? i18n("Get Hot New Stuff") : caption),
- KDialogBase::Close, KDialogBase::Close)
-{
- init(engine);
-}
-
-DownloadDialog::DownloadDialog(TQWidget *, const TQString& caption)
-: KDialogBase(KDialogBase::IconList, (caption.isNull() ? i18n("Get Hot New Stuff") : caption),
- KDialogBase::Close, KDialogBase::Close)
-{
- init(0);
-}
-
-void DownloadDialog::init(Engine *engine)
-{
- resize(700, 400);
- d = new Private();
-
- m_engine = engine;
- d->m_page = NULL;
-
- connect(this, TQT_SIGNAL(aboutToShowPage(TQWidget*)), TQT_SLOT(slotPage(TQWidget*)));
-
- if(!engine)
- {
- m_loader = new ProviderLoader(this);
- connect(m_loader, TQT_SIGNAL(providersLoaded(Provider::List*)), TQT_SLOT(slotProviders(Provider::List*)));
- }
-
- m_entries.setAutoDelete(true);
-}
-
-DownloadDialog::~DownloadDialog()
-{
- for (TQMap<TQWidget *, TQValueList<TQPushButton *>* >::const_iterator it = m_buttons.constBegin(); it != m_buttons.constEnd(); ++it)
- delete it.data();
- for (TQMap<TQWidget *, TQValueList<TDEListView *>* >::const_iterator it = m_map.constBegin(); it != m_map.constEnd(); ++it)
- delete it.data();
- delete d;
-}
-
-void DownloadDialog::load()
-{
- m_loader->load(m_filter, d->m_providerlist);
-}
-
-void DownloadDialog::load(TQString providerList)
-{
- m_loader->load(m_filter, providerList);
-}
-
-void DownloadDialog::clear()
-{
- TQMap<TQWidget*, TQValueList<TDEListView*>* >::Iterator it;
- TQMap<TQWidget*, TQValueList<TDEListView*>* >::Iterator end(m_map.end());
- for(it = m_map.begin(); it != end; ++it)
- {
- TQValueList<TDEListView*> *v = it.data();
- kdDebug() << "clear listviews in " << v << endl;
- if(v)
- {
- (*(v->at(0)))->clear();
- (*(v->at(1)))->clear();
- (*(v->at(2)))->clear();
-
- //delete (*it);
- }
-
- delete it.key();
- }
- m_map.clear();
-}
-
-void DownloadDialog::slotProviders(Provider::List *list)
-{
- Provider *p;
- /*TQFrame *frame;*/
-
- for(p = list->first(); p; p = list->next())
- {
- kdDebug() << "++ provider ++ " << p->name() << endl;
-
- if(!m_filter.isEmpty())
- loadProvider(p);
- else
- addProvider(p);
- /*if(p == list->getFirst())
- slotPage(m_frame);*/ // only if !qtbug
- }
-}
-
-void DownloadDialog::addProvider(Provider *p)
-{
- TQFrame *frame;
- TQTabWidget *ctl;
- TQWidget *w_d, *w_r, *w_l;
- TQTextBrowser *rt;
- TQString tmp;
- int ret;
- TQPixmap pix;
-
- if(m_map.count() == 0)
- {
- frame = addPage(i18n("Welcome"), i18n("Welcome"), TQPixmap(TQString("")));
- delete frame;
- }
-
- kdDebug() << "addProvider()/begin" << endl;
-
- ret = true;
- if(p->icon().path().isEmpty()) ret = false;
- else
- {
- if(!p->icon().protocol().isEmpty())
- {
- ret = TDEIO::NetAccess::download(p->icon(), tmp, this);
- if(ret) pix = TQPixmap(tmp);
- }
- else
- {
- pix = TDEGlobal::iconLoader()->loadIcon(p->icon().path(), TDEIcon::Panel);
- ret = true;
- }
- }
- if(!ret) pix = TDEGlobal::iconLoader()->loadIcon("knewstuff", TDEIcon::Panel);
- frame = addPage(p->name(), p->name(), pix);
- m_frame = frame;
-
- w_d = new TQWidget(frame);
- w_r = new TQWidget(frame);
- w_l = new TQWidget(frame);
-
- ctl = new TQTabWidget(frame);
- ctl->addTab(w_r, i18n("Highest Rated"));
- ctl->addTab(w_d, i18n("Most Downloads"));
- ctl->addTab(w_l, i18n("Latest"));
-
- m_curtab = 0;
- connect(ctl, TQT_SIGNAL(currentChanged(TQWidget *)), TQT_SLOT(slotTab()));
-
- TQHBoxLayout *box = new TQHBoxLayout(frame);
- box->add(ctl);
-
- d->m_lvtmp_r = new TDEListView(w_r);
- d->m_lvtmp_r->addColumn(i18n("Name"));
- d->m_lvtmp_r->addColumn(i18n("Version"));
- d->m_lvtmp_r->addColumn(i18n("Rating"));
- d->m_lvtmp_r->setSorting(2, false);
-
- d->m_lvtmp_d = new TDEListView(w_d);
- d->m_lvtmp_d->addColumn(i18n("Name"));
- d->m_lvtmp_d->addColumn(i18n("Version"));
- d->m_lvtmp_d->addColumn(i18n("Downloads"));
- d->m_lvtmp_d->setSorting(2, false);
-
- d->m_lvtmp_l = new TDEListView(w_l);
- d->m_lvtmp_l->addColumn(i18n("Name"));
- d->m_lvtmp_l->addColumn(i18n("Version"));
- d->m_lvtmp_l->addColumn(i18n("Release Date"));
- d->m_lvtmp_l->setSorting(2, false);
-
- connect(d->m_lvtmp_r, TQT_SIGNAL(clicked(TQListViewItem*)), TQT_SLOT(slotSelected()));
- connect(d->m_lvtmp_d, TQT_SIGNAL(clicked(TQListViewItem*)), TQT_SLOT(slotSelected()));
- connect(d->m_lvtmp_l, TQT_SIGNAL(clicked(TQListViewItem*)), TQT_SLOT(slotSelected()));
-
- rt = new TQTextBrowser(frame);
- rt->setMinimumWidth(150);
-
- TQPushButton *in = new TQPushButton(i18n("Install"), frame);
- TQPushButton *de = new TQPushButton(i18n("Details"), frame);
- in->setEnabled(false);
- de->setEnabled(false);
-
- box->addSpacing(spacingHint());
- TQVBoxLayout *vbox = new TQVBoxLayout(box);
- vbox->add(rt);
- vbox->addSpacing(spacingHint());
- vbox->add(de);
- vbox->add(in);
-
- connect(rt, TQT_SIGNAL(linkClicked(const TQString&)), TQT_SLOT(slotEmail(const TQString&)));
-
- connect(in, TQT_SIGNAL(clicked()), TQT_SLOT(slotInstall()));
- connect(de, TQT_SIGNAL(clicked()), TQT_SLOT(slotDetails()));
-
- TQVBoxLayout *box2 = new TQVBoxLayout(w_r);
- box2->add(d->m_lvtmp_r);
- TQVBoxLayout *box3 = new TQVBoxLayout(w_d);
- box3->add(d->m_lvtmp_d);
- TQVBoxLayout *box4 = new TQVBoxLayout(w_l);
- box4->add(d->m_lvtmp_l);
-
- TQValueList<TDEListView*> *v = new TQValueList<TDEListView*>;
- *v << d->m_lvtmp_r << d->m_lvtmp_d << d->m_lvtmp_l;
- m_map[frame] = v;
- m_rts[frame] = rt;
- TQValueList<TQPushButton*> *vb = new TQValueList<TQPushButton*>;
- *vb << in << de;
- m_buttons[frame] = vb;
- m_providers[frame] = p;
-
- kdDebug() << "addProvider()/end; d->m_lvtmp_r = " << d->m_lvtmp_r << endl;
-
- if(m_engine) slotPage(frame);
-
- TQTimer::singleShot(100, this, TQT_SLOT(slotFinish()));
-}
-
-void DownloadDialog::slotResult(TDEIO::Job *job)
-{
- TQDomDocument dom;
- TQDomElement knewstuff;
- TQDomElement content;
-
- kdDebug() << "got data: " << m_data[job] << endl;
-
- kapp->config()->setGroup("TDENewStuffStatus");
-
- dom.setContent(m_data[job]);
- knewstuff = dom.documentElement();
-
- for(TQDomNode pn = knewstuff.firstChild(); !pn.isNull(); pn = pn.nextSibling())
- {
- TQDomElement stuff = pn.toElement();
-
- if(stuff.tagName() == "data")
- {
- content = pn.toElement();
- }
- }
-
- for(TQDomNode pn = content.firstChild(); !pn.isNull(); pn = pn.nextSibling())
- {
- TQDomElement stuff = pn.toElement();
-
- kdDebug() << "element: " << stuff.tagName() << endl;
-
- if(stuff.tagName() == "content")
- {
- Entry *entry = new Entry(stuff);
- kdDebug() << "TYPE::" << entry->type() << " FILTER::" << m_filter << endl;
- if(!entry->type().isEmpty())
- {
- if((!m_filter.isEmpty()) && (entry->type() != m_filter)) continue;
- }
-
- /*if((!m_filter.isEmpty()) && (m_jobs[job]))
- {
- Provider *p = m_jobs[job];
- if(d->m_newproviders[p])
- {
- addProvider(p);
- slotPage(m_frame);
- d->m_newproviders[p] = 0;
- }
- }*/
- if((!m_filter.isEmpty()) && (d->m_variantjobs[job]))
- {
- Provider *p = d->m_variantjobs[job];
- if(d->m_newproviders[p])
- {
- addProvider(p);
- slotPage(m_frame);
- d->m_newproviders[p] = 0;
- }
- }
-
- /*if(m_jobs[job]) addEntry(entry);
- else*/
- if(d->m_variantjobs[job]) addEntry(entry, d->m_variants[job]);
- }
- }
-}
-
-int DownloadDialog::installStatus(Entry *entry)
-{
- TQDate date;
- TQString datestring;
- int installed;
-
- TQString lang = TDEGlobal::locale()->language();
-
- kapp->config()->setGroup("TDENewStuffStatus");
- datestring = kapp->config()->readEntry(entry->name(lang));
- if(datestring.isNull()) installed = 0;
- else
- {
- date = TQT_TQDATE_OBJECT(TQDate::fromString(datestring, Qt::ISODate));
- if(!date.isValid()) installed = 0;
- else if(date < entry->releaseDate()) installed = -1;
- else installed = 1;
- }
-
- return installed;
-}
-
-void DownloadDialog::addEntry(Entry *entry, const TQStringList& variants)
-{
- TQPixmap pix;
- int installed;
-
- installed = installStatus(entry);
-
- if(installed > 0) pix = TDEGlobal::iconLoader()->loadIcon("ok", TDEIcon::Small);
- else if(installed < 0) pix = TDEGlobal::iconLoader()->loadIcon("history", TDEIcon::Small);
- else pix = TQPixmap();
-
- TQString lang = TDEGlobal::locale()->language();
-
- if(variants.contains("score"))
- {
- TDEListViewItem *tmp_r = new NumSortListViewItem(lv_r,
- entry->name(lang), entry->version(), TQString("%1").arg(entry->rating()));
- tmp_r->setPixmap(0, pix);
- }
- if(variants.contains("downloads"))
- {
- TDEListViewItem *tmp_d = new NumSortListViewItem(lv_d,
- entry->name(lang), entry->version(), TQString("%1").arg(entry->downloads()));
- tmp_d->setPixmap(0, pix);
- }
- if(variants.contains("latest"))
- {
- TDEListViewItem *tmp_l = new DateSortListViewItem(lv_l,
- entry->name(lang), entry->version(), TDEGlobal::locale()->formatDate(entry->releaseDate()));
- tmp_l->setPixmap(0, pix);
- }
-
- m_entries.append(entry);
-
- kdDebug() << "added entry " << entry->name() << " for variants " << variants << endl;
-}
-
-void DownloadDialog::addEntry(Entry *entry)
-{
- TQStringList variants;
-
- variants << "score";
- variants << "downloads";
- variants << "latest";
-
- addEntry(entry, variants);
-
- // not used anymore due to variants (but still used by engine)
- kdDebug() << "added entry " << entry->name() << endl;
-}
-
-void DownloadDialog::slotData(TDEIO::Job *job, const TQByteArray &a)
-{
- TQCString tmp(a, a.size() + 1);
- m_data[job].append(TQString::fromUtf8(tmp));
-}
-
-void DownloadDialog::slotDetails()
-{
- Entry *e = getEntry();
- if(!e) return;
-
- TQString lang = TDEGlobal::locale()->language();
-
- TQString info = i18n
- (
- "Name: %1\n"
- "Author: %2\n"
- "License: %3\n"
- "Version: %4\n"
- "Release: %5\n"
- "Rating: %6\n"
- "Downloads: %7\n"
- "Release date: %8\n"
- "Summary: %9\n"
- ).arg(e->name(lang)
- ).arg(e->author()
- ).arg(e->license()
- ).arg(e->version()
- ).arg(e->release()
- ).arg(e->rating()
- ).arg(e->downloads()
- ).arg(TDEGlobal::locale()->formatDate(e->releaseDate())
- ).arg(e->summary(lang)
- );
-
- info.append(i18n
- (
- "Preview: %1\n"
- "Payload: %2\n"
- ).arg(e->preview().url()
- ).arg(e->payload().url()
- ));
-
- KMessageBox::information(this, info, i18n("Details"));
-}
-
-TQListViewItem *DownloadDialog::currentEntryItem()
-{
- if((m_curtab == 0) && (lv_r->selectedItem())) return lv_r->selectedItem();
- if((m_curtab == 1) && (lv_d->selectedItem())) return lv_d->selectedItem();
- if((m_curtab == 2) && (lv_l->selectedItem())) return lv_l->selectedItem();
-
- return 0;
-}
-
-void DownloadDialog::slotInstall()
-{
- Entry *e = getEntry();
- if(!e) return;
-
- d->m_lvtmp_r->setEnabled( false );
- d->m_lvtmp_l->setEnabled( false );
- d->m_lvtmp_d->setEnabled( false );
-
- kdDebug() << "download entry now" << endl;
-
- // OpenDesktop.org broke the basic functionality of TDEHNS by forcing
- // downloads though an advertising display page. This in turn forces
- // the user to download and manually install the wallpaper, which
- // is relatively complex and negates much of the benefit of TDEHNS.
- // Therefore, if the download URL contains OPENDESKTOP_REDIRECT_URL
- // then download the raw HTML page and extract the real download URL for use below.
- // In the future we may want to figure out how to display unobtrusive ads
- // during the download process, but OpenDesktop.org would need to add back
- // in the direct download ability for this to even be considered.
- if (e->payload().url().contains(OPENDESKTOP_REDIRECT_URL)) {
- TDEIO::TransferJob *job = TDEIO::get( KURL( e->payload() ), false, false );
- connect( job, TQT_SIGNAL( result( TDEIO::Job * ) ),
- TQT_SLOT( slotJobResult( TDEIO::Job * ) ) );
- connect( job, TQT_SIGNAL( data( TDEIO::Job *, const TQByteArray & ) ),
- TQT_SLOT( slotJobData( TDEIO::Job *, const TQByteArray & ) ) );
- }
- else {
- slotInstallPhase2();
- }
-}
-
-void DownloadDialog::slotInstallPhase2()
-{
- Entry *e = getEntry();
- if(!e) return;
-
- m_entryitem = currentEntryItem();
- m_entryname = m_entryitem->text(0);
-
- kdDebug() << "download entry now (phase 2)" << endl;
-
- if(m_engine)
- {
- m_engine->download(e);
- install(e);
- }
- else
- {
- m_s = new TDENewStuffGeneric(e->type(), this);
- m_entry = e;
- KURL source = e->payload();
- KURL dest = KURL(m_s->downloadDestination(e));
-
- TDEIO::FileCopyJob *job = TDEIO::file_copy(source, dest, -1, true);
- connect(job, TQT_SIGNAL(result(TDEIO::Job*)), TQT_SLOT(slotInstalled(TDEIO::Job*)));
- }
-}
-
-void DownloadDialog::slotJobData( TDEIO::Job *, const TQByteArray &data )
-{
- kdDebug() << "DownloadDialog::slotJobData()" << endl;
-
- if ( data.size() == 0 ) return;
-
- TQCString str( data, data.size() + 1 );
-
- mJobData.append( TQString::fromUtf8( str ) );
-}
-
-void DownloadDialog::slotJobResult( TDEIO::Job *job )
-{
- if ( job->error() ) {
- job->showErrorDialog( this );
- return;
- }
-
- Entry *e = getEntry();
- if(!e) return;
-
- // See previous note regarding OpenDesktop.org
- if (e->payload().url().contains(OPENDESKTOP_REDIRECT_URL)) {
- TQString realURL = mJobData.mid(mJobData.find("<a href=\"/CONTENT/content-files/"));
- realURL = realURL.mid(0, realURL.find("Click here</a>")-2);
- realURL = realURL.mid(realURL.find("/CONTENT/content-files"));
- realURL = e->payload().protocol() + "://opendesktop.org" + realURL;
- e->setPayload(realURL);
- }
-
- slotInstallPhase2();
-}
-
-void DownloadDialog::install(Entry *e)
-{
- kapp->config()->setGroup("TDENewStuffStatus");
- kapp->config()->writeEntry(m_entryname, TQString(e->releaseDate().toString(Qt::ISODate)));
- kapp->config()->sync();
-
- TQPixmap pix = TDEGlobal::iconLoader()->loadIcon("ok", TDEIcon::Small);
-
- TQString lang = TDEGlobal::locale()->language();
-
- if(m_entryitem)
- {
- m_entryitem->setPixmap(0, pix);
-
- TQListViewItem *item;
- item = lv_r->findItem(e->name(lang), 0);
- if(item) item->setPixmap(0, pix);
- item = lv_d->findItem(e->name(lang), 0);
- if(item) item->setPixmap(0, pix);
- item = lv_l->findItem(e->name(lang), 0);
- if(item) item->setPixmap(0, pix);
- }
-
- if(currentEntryItem() == m_entryitem)
- {
- TQPushButton *in;
- in = *(m_buttons[d->m_page]->at(0));
- if(in) in->setEnabled(false);
- }
-
- d->m_installlist.append(e);
- d->m_lvtmp_r->setEnabled( true );
- d->m_lvtmp_l->setEnabled( true );
- d->m_lvtmp_d->setEnabled( true );
-}
-
-void DownloadDialog::slotInstalled(TDEIO::Job *job)
-{
- bool ret = job && (job->error() == 0);
- if(ret)
- {
- TDEIO::FileCopyJob *cjob = ::tqqt_cast<TDEIO::FileCopyJob*>(job);
- if(cjob)
- {
- ret = m_s->install(cjob->destURL().path());
- }
- else ret = false;
- }
-
- if(ret)
- {
- install(m_entry);
-
- KMessageBox::information(this, i18n("Installation successful."), i18n("Installation"));
- }
- else KMessageBox::error(this, i18n("Installation failed."), i18n("Installation"));
- d->m_lvtmp_r->setEnabled( true );
- d->m_lvtmp_l->setEnabled( true );
- d->m_lvtmp_d->setEnabled( true );
-
- delete m_s;
-}
-
-void DownloadDialog::slotTab()
-{
- int tab = static_cast<const TQTabWidget *>(sender())->currentPageIndex();
- kdDebug() << "switch tab to: " << tab << endl;
-
- Entry *eold = getEntry();
- m_curtab = tab;
- Entry *e = getEntry();
-
- if(e == eold) return;
-
- if(e)
- {
- slotSelected();
- }
- else
- {
- TQPushButton *de, *in;
- in = *(m_buttons[d->m_page]->at(0));
- de = *(m_buttons[d->m_page]->at(1));
-
- if(in) in->setEnabled(false);
- if(de) de->setEnabled(false);
-
- m_rt->clear();
- }
-}
-
-void DownloadDialog::slotSelected()
-{
- TQString tmp;
- bool enabled;
- Entry *e = getEntry();
- TQString lang = TDEGlobal::locale()->language();
- bool ret;
-
- if(e)
- {
- TQString lang = TDEGlobal::locale()->language();
-
- TQListViewItem *item;
- if(m_curtab != 0)
- {
- lv_r->clearSelection();
- item = lv_r->findItem(e->name(lang), 0);
- if(item) lv_r->setSelected(item, true);
- }
- if(m_curtab != 1)
- {
- lv_d->clearSelection();
- item = lv_d->findItem(e->name(lang), 0);
- if(item) lv_d->setSelected(item, true);
- }
- if(m_curtab != 2)
- {
- lv_l->clearSelection();
- item = lv_l->findItem(e->name(lang), 0);
- if(item) lv_l->setSelected(item, true);
- }
-
- if(!e->preview(lang).isValid())
- {
- ret = 0;
- }
- else
- {
- ret = TDEIO::NetAccess::download(e->preview(lang), tmp, this);
- }
-
- TQString desc = TQString("<b>%1</b><br>").arg(e->name(lang));
- if(!e->authorEmail().isNull())
- {
- desc += TQString("<a href='mailto:" + e->authorEmail() + "'>" + e->author() + "</a>");
- }
- else
- {
- desc += TQString("%1").arg(e->author());
- }
- desc += TQString("<br>%1").arg(TDEGlobal::locale()->formatDate(e->releaseDate()));
- desc += TQString("<br><br>");
- if(ret)
- {
- desc += TQString("<img src='%1'>").arg(tmp);
- }
- else
- {
- desc += i18n("Preview not available.");
- }
- desc += TQString("<br><i>%1</i>").arg(e->summary(lang));
- desc += TQString("<br>(%1)").arg(e->license());
-
- m_rt->clear();
- m_rt->setText(desc);
-
- if(installStatus(e) == 1) enabled = false;
- else enabled = true;
-
- TQPushButton *de, *in;
- in = *(m_buttons[d->m_page]->at(0));
- de = *(m_buttons[d->m_page]->at(1));
- if(in) in->setEnabled(enabled);
- if(de) de->setEnabled(true);
- }
-}
-
-void DownloadDialog::slotEmail(const TQString& link)
-{
- kdDebug() << "EMAIL: " << link << endl;
- kapp->invokeMailer(link);
- slotSelected(); // TQTextBrowser oddity workaround as it cannot handle mailto: URLs
-}
-
-Entry *DownloadDialog::getEntry()
-{
- TQListViewItem *entryItem = currentEntryItem();
-
- if(!entryItem)
- return 0;
-
- TQString entryName = entryItem->text(0);
-
- TQString lang = TDEGlobal::locale()->language();
-
- for(Entry *e = m_entries.first(); e; e = m_entries.next())
- if(e->name(lang) == entryName)
- return e;
-
- return 0;
-}
-
-void DownloadDialog::slotPage(TQWidget *w)
-{
- Provider *p;
-
- kdDebug() << "changed widget!!!" << endl;
-
- if(m_map.find(w) == m_map.end()) return;
-
- d->m_page = w;
-
- lv_r = *(m_map[w]->at(0));
- lv_d = *(m_map[w]->at(1));
- lv_l = *(m_map[w]->at(2));
- p = m_providers[w];
- m_rt = m_rts[w];
-
- kdDebug() << "valid change!!!; lv_r = " << lv_r << endl;
-
- if(m_engine) return;
-
- if(!m_filter.isEmpty()) return;
-
- lv_r->clear();
- lv_d->clear();
- lv_l->clear();
-
- kdDebug() << "-- fetch -- " << p->downloadUrl() << endl;
-
- loadProvider(p);
-}
-
-void DownloadDialog::loadProvider(Provider *p)
-{
- TQMap<TDEIO::Job*, Provider*>::Iterator it;
-
- for(it = d->m_variantjobs.begin(); it != d->m_variantjobs.end(); it++)
- {
- if(it.data() == p)
- {
- kdDebug() << "-- found provider data in cache" << endl;
- slotResult(it.key());
- return;
- }
- }
-
- TQStringList variants;
- variants << "score";
- variants << "downloads";
- variants << "latest";
-
- // Optimise URLs so each unique URL only gets fetched once
-
- TQMap<TQString, TQStringList> urls;
-
- for(TQStringList::Iterator it = variants.begin(); it != variants.end(); it++)
- {
- TQString url = p->downloadUrlVariant((*it)).url();
- if(!urls.contains(url))
- {
- urls[url] = TQStringList();
- }
- urls[url] << (*it);
-
- it = variants.remove(it);
- }
-
- // Now fetch the URLs while keeping the variant list for each attached
-
- for(TQMap<TQString, TQStringList>::Iterator it = urls.begin(); it != urls.end(); it++)
- {
- TQString url = it.key();
- TQStringList urlvariants = it.data();
-
- TDEIO::TransferJob *variantjob = TDEIO::get(url);
- d->m_newproviders[p] = p;
- d->m_variantjobs[variantjob] = p;
- d->m_variants[variantjob] = urlvariants;
- m_data[variantjob] = "";
-
- connect(variantjob, TQT_SIGNAL(result(TDEIO::Job*)), TQT_SLOT(slotResult(TDEIO::Job*)));
- connect(variantjob, TQT_SIGNAL(data(TDEIO::Job*, const TQByteArray&)),
- TQT_SLOT(slotData(TDEIO::Job*, const TQByteArray&)));
- }
-
- if(variants.count() == 0) return;
-
- // If not all variants are given, use default URL for those
-
- kdDebug() << "-- reached old downloadurl section; variants left: " << variants.count() << endl;
-
- TDEIO::TransferJob *job = TDEIO::get(p->downloadUrl());
-
- d->m_newproviders[p] = p;
- d->m_variantjobs[job] = p;
- d->m_variants[job] = variants;
- //m_jobs[job] = p; // not used anymore due to variants
- m_data[job] = "";
-
- connect(job, TQT_SIGNAL(result(TDEIO::Job*)), TQT_SLOT(slotResult(TDEIO::Job*)));
- connect(job, TQT_SIGNAL(data(TDEIO::Job*, const TQByteArray&)),
- TQT_SLOT(slotData(TDEIO::Job*, const TQByteArray&)));
-}
-
-void DownloadDialog::setType(TQString type)
-{
- m_filter = type;
-}
-
-void DownloadDialog::setProviderList(const TQString& providerList)
-{
- d->m_providerlist = providerList;
-}
-
-void DownloadDialog::slotOk()
-{
-}
-
-void DownloadDialog::slotApply()
-{
-}
-
-void DownloadDialog::open(const TQString& type, const TQString& caption)
-{
- DownloadDialog d(0, caption);
- d.setType(type);
- d.load();
- d.exec();
-}
-
-void DownloadDialog::slotFinish()
-{
- showPage(1);
- //updateBackground();
-}
-
-TQPtrList<Entry> DownloadDialog::installedEntries()
-{
- return d->m_installlist;
-}