From 08d46030299d74fb3280db5a03d2e024444e7119 Mon Sep 17 00:00:00 2001 From: David Edmundson Date: Tue, 8 Jul 2014 16:28:15 +0200 Subject: [PATCH] Remove page when adding widgets to select what type of applet to install We only support one REVIEW: 119180 BUG: 337072 --- shell/widgetexplorer/openwidgetassistant.cpp | 103 +++---------------- shell/widgetexplorer/openwidgetassistant_p.h | 9 +- 2 files changed, 17 insertions(+), 95 deletions(-) diff --git a/shell/widgetexplorer/openwidgetassistant.cpp b/shell/widgetexplorer/openwidgetassistant.cpp index 915a448be..ed1d0e3e0 100644 --- a/shell/widgetexplorer/openwidgetassistant.cpp +++ b/shell/widgetexplorer/openwidgetassistant.cpp @@ -39,101 +39,30 @@ namespace Plasma OpenWidgetAssistant::OpenWidgetAssistant(QWidget *parent) : KAssistantDialog(parent), - m_fileDialog(0), + m_fileWidget(0), m_filePageWidget(0) { - QWidget *selectWidget = new QWidget(this); - QVBoxLayout *selectLayout = new QVBoxLayout(selectWidget); - QLabel *selectLabel = new QLabel(selectWidget); - selectLabel->setText(i18n("Select the type of widget to install from the list below.")); - m_widgetTypeList = new QListWidget(selectWidget); - m_widgetTypeList->setSelectionMode(QAbstractItemView::SingleSelection); - //m_widgetTypeList->setSelectionBehavior(QAbstractItemView::SelectItems); - connect(m_widgetTypeList, SIGNAL(itemActivated(QListWidgetItem*)), this, SLOT(next())); - connect(m_widgetTypeList, SIGNAL(itemSelectionChanged()), this, SLOT(slotItemChanged())); - - QString constraint("'Applet' in [X-Plasma-ComponentTypes] and exist [X-Plasma-PackageFormat]"); - KService::List offers = KServiceTypeTrader::self()->query("Plasma/ScriptEngine", constraint); - - QListWidgetItem * item = new QListWidgetItem(QIcon::fromTheme("plasma"), i18n("Plasmoid: Native plasma widget"), m_widgetTypeList); - item->setSelected(true); - m_widgetTypeList->setCurrentItem(item); - - foreach (const KService::Ptr &offer, offers) { - QString text(offer->name()); - if (!offer->comment().isEmpty()) { - text.append(": ").append(offer->comment()); - } - - item = new QListWidgetItem(text, m_widgetTypeList); - item->setData(PackageStructureRole, offer->property("X-KDE-PluginInfo-Name")); - - if (!offer->icon().isEmpty()) { - item->setIcon(QIcon::fromTheme(offer->icon())); - } - } + m_filePageWidget = new QWidget(this); - selectLayout->addWidget(selectLabel); - selectLayout->addWidget(m_widgetTypeList); + QVBoxLayout *layout = new QVBoxLayout(m_filePageWidget); + m_fileWidget = new KFileWidget(QUrl(), m_filePageWidget); + m_fileWidget->setOperationMode(KFileWidget::Opening); + m_fileWidget->setMode(KFile::File | KFile::ExistingOnly); + connect(this, SIGNAL(user1Clicked()), m_fileWidget, SLOT(slotOk())); + connect(m_fileWidget, SIGNAL(accepted()), this, SLOT(finished())); + layout->addWidget(m_fileWidget); - m_typePage = new KPageWidgetItem(selectWidget, i18n("Install New Widget From File")); - m_typePage->setIcon(QIcon::fromTheme("plasma")); - addPage(m_typePage); + m_fileWidget->setFilter(QString()); + QStringList mimes; + mimes << "application/x-plasma"; + m_fileWidget->setMimeFilter(mimes); - m_filePageWidget = new QWidget(this); - m_filePage = new KPageWidgetItem(m_filePageWidget, i18n("Select File")); + m_filePage = new KPageWidgetItem(m_filePageWidget, i18n("Select Plasmoid File")); addPage(m_filePage); - connect(this, SIGNAL(currentPageChanged(KPageWidgetItem*,KPageWidgetItem*)), SLOT(prepPage(KPageWidgetItem*,KPageWidgetItem*))); - - //connect( this, SIGNAL(helpClicked()), this, SLOT(slotHelpClicked()) ); - //m_widgetTypeList->setFocus(); resize(QSize(560, 400).expandedTo(minimumSizeHint())); } - -void OpenWidgetAssistant::prepPage(KPageWidgetItem *current, KPageWidgetItem *before) -{ - Q_UNUSED(before); - if (m_widgetTypeList->selectedItems().isEmpty()) { - return; - } - - if (current != m_filePage) { - return; - } - - if (!m_fileDialog) { - QVBoxLayout *layout = new QVBoxLayout(m_filePageWidget); - m_fileDialog = new KFileWidget(QUrl(), m_filePageWidget); - m_fileDialog->setOperationMode(KFileWidget::Opening); - m_fileDialog->setMode(KFile::File | KFile::ExistingOnly); - connect(this, SIGNAL(user1Clicked()), m_fileDialog, SLOT(slotOk())); - connect(m_fileDialog, SIGNAL(accepted()), this, SLOT(finished())); - //m_fileDialog->setWindowFlags(Qt::Widget); - layout->addWidget(m_fileDialog); - } - - QListWidgetItem *item = m_widgetTypeList->selectedItems().first(); - Q_ASSERT(item); - - QString type = item->data(PackageStructureRole).toString(); - - m_fileDialog->setFilter(QString()); - if (!type.isEmpty()) { - QString constraint = QString("'%1' == [X-KDE-PluginInfo-Name]").arg(type); - KService::List offers = KServiceTypeTrader::self()->query("Plasma/PackageStructure", constraint); - - qDebug() << "looking for a Plasma/PackageStructure with" << constraint << type; - Q_ASSERT(offers.count() > 0); - - } else { - QStringList mimes; - mimes << "application/x-plasma"; - m_fileDialog->setMimeFilter(mimes); - } -} - void OpenWidgetAssistant::slotHelpClicked() { //enable it when doc will created @@ -141,8 +70,8 @@ void OpenWidgetAssistant::slotHelpClicked() void OpenWidgetAssistant::finished() { - m_fileDialog->accept(); // how interesting .. accept() must be called before the state is set - QString packageFilePath = m_fileDialog->selectedFile(); + m_fileWidget->accept(); // how interesting .. accept() must be called before the state is set + QString packageFilePath = m_fileWidget->selectedFile(); if (packageFilePath.isEmpty()) { //TODO: user visible error handling qDebug() << "hm. no file path?"; diff --git a/shell/widgetexplorer/openwidgetassistant_p.h b/shell/widgetexplorer/openwidgetassistant_p.h index edfb1c72f..3826e3683 100644 --- a/shell/widgetexplorer/openwidgetassistant_p.h +++ b/shell/widgetexplorer/openwidgetassistant_p.h @@ -35,23 +35,16 @@ class OpenWidgetAssistant : public KAssistantDialog Q_OBJECT public: - enum { - PackageStructureRole = Qt::UserRole + 1 - }; - OpenWidgetAssistant(QWidget *parent); protected Q_SLOTS: - void prepPage(KPageWidgetItem *current, KPageWidgetItem *before); void finished(); void slotHelpClicked(); private: - KPageWidgetItem *m_typePage; KPageWidgetItem *m_filePage; - KFileWidget *m_fileDialog; + KFileWidget *m_fileWidget; QWidget *m_filePageWidget; - QListWidget *m_widgetTypeList; }; } // Plasma namespace