diff options
author | con <qtc-commiter@nokia.com> | 2008-12-02 12:01:29 +0100 |
---|---|---|
committer | con <qtc-commiter@nokia.com> | 2008-12-02 12:01:29 +0100 |
commit | 05c35356abc31549c5db6eba31fb608c0365c2a0 (patch) | |
tree | be044530104267afaff13f8943889cb97f8c8bad /src/plugins/coreplugin/plugindialog.cpp |
Initial import
Diffstat (limited to 'src/plugins/coreplugin/plugindialog.cpp')
-rw-r--r-- | src/plugins/coreplugin/plugindialog.cpp | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/src/plugins/coreplugin/plugindialog.cpp b/src/plugins/coreplugin/plugindialog.cpp new file mode 100644 index 0000000000..dcf8c9b826 --- /dev/null +++ b/src/plugins/coreplugin/plugindialog.cpp @@ -0,0 +1,141 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception version +** 1.2, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ +#include "plugindialog.h" +#include <extensionsystem/pluginmanager.h> +#include <extensionsystem/pluginview.h> +#include <extensionsystem/plugindetailsview.h> +#include <extensionsystem/pluginerrorview.h> +#include <extensionsystem/pluginspec.h> + +#include <QtGui/QVBoxLayout> +#include <QtGui/QHBoxLayout> +#include <QtGui/QDialog> +#include <QtGui/QDialogButtonBox> +#include <QtGui/QPushButton> +#include <QtDebug> + +using namespace Core::Internal; + +PluginDialog::PluginDialog(ExtensionSystem::PluginManager *manager, QWidget *parent) + : QDialog(parent) + , m_view(new ExtensionSystem::PluginView(manager, this)) +{ + QVBoxLayout *vl = new QVBoxLayout(this); + vl->addWidget(m_view); + + m_detailsButton = new QPushButton(tr("Details"), this); + m_errorDetailsButton = new QPushButton(tr("Error Details"), this); + m_closeButton = new QPushButton(tr("Close"), this); + m_detailsButton->setEnabled(false); + m_errorDetailsButton->setEnabled(false); + m_closeButton->setEnabled(true); + m_closeButton->setDefault(true); + + QHBoxLayout *hl = new QHBoxLayout; + hl->addWidget(m_detailsButton); + hl->addWidget(m_errorDetailsButton); + hl->addStretch(5); + hl->addWidget(m_closeButton); + + vl->addLayout(hl); + + resize(650, 400); + setWindowTitle(tr("Installed Plugins")); + + connect(m_view, SIGNAL(currentPluginChanged(ExtensionSystem::PluginSpec*)), + this, SLOT(updateButtons())); + connect(m_view, SIGNAL(pluginActivated(ExtensionSystem::PluginSpec*)), + this, SLOT(openDetails(ExtensionSystem::PluginSpec*))); + connect(m_detailsButton, SIGNAL(clicked()), this, SLOT(openDetails())); + connect(m_errorDetailsButton, SIGNAL(clicked()), this, SLOT(openErrorDetails())); + connect(m_closeButton, SIGNAL(clicked()), this, SLOT(accept())); + updateButtons(); +} + +void PluginDialog::updateButtons() +{ + ExtensionSystem::PluginSpec *selectedSpec = m_view->currentPlugin(); + if (selectedSpec) { + m_detailsButton->setEnabled(true); + m_errorDetailsButton->setEnabled(selectedSpec->hasError()); + } else { + m_detailsButton->setEnabled(false); + m_errorDetailsButton->setEnabled(false); + } +} + + +void PluginDialog::openDetails() +{ + openDetails(m_view->currentPlugin()); +} + +void PluginDialog::openDetails(ExtensionSystem::PluginSpec *spec) +{ + if (!spec) + return; + QDialog dialog(this); + dialog.setWindowTitle(tr("Plugin Details of %1").arg(spec->name())); + QVBoxLayout *layout = new QVBoxLayout; + dialog.setLayout(layout); + ExtensionSystem::PluginDetailsView *details = new ExtensionSystem::PluginDetailsView(&dialog); + layout->addWidget(details); + details->update(spec); + QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Close, Qt::Horizontal, &dialog); + layout->addWidget(buttons); + connect(buttons, SIGNAL(accepted()), &dialog, SLOT(accept())); + connect(buttons, SIGNAL(rejected()), &dialog, SLOT(reject())); + dialog.resize(400, 500); + dialog.exec(); +} + +void PluginDialog::openErrorDetails() +{ + ExtensionSystem::PluginSpec *spec = m_view->currentPlugin(); + if (!spec) + return; + QDialog dialog(this); + dialog.setWindowTitle(tr("Plugin Errors of %1").arg(spec->name())); + QVBoxLayout *layout = new QVBoxLayout; + dialog.setLayout(layout); + ExtensionSystem::PluginErrorView *errors = new ExtensionSystem::PluginErrorView(&dialog); + layout->addWidget(errors); + errors->update(spec); + QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Close, Qt::Horizontal, &dialog); + layout->addWidget(buttons); + connect(buttons, SIGNAL(accepted()), &dialog, SLOT(accept())); + connect(buttons, SIGNAL(rejected()), &dialog, SLOT(reject())); + dialog.resize(500, 300); + dialog.exec(); +} + |