summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/packagemanagergui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/installer/packagemanagergui.cpp')
-rw-r--r--src/libs/installer/packagemanagergui.cpp118
1 files changed, 53 insertions, 65 deletions
diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp
index 5b9e7493a..46ba310ba 100644
--- a/src/libs/installer/packagemanagergui.cpp
+++ b/src/libs/installer/packagemanagergui.cpp
@@ -177,7 +177,8 @@ protected:
void addPageAndProperties(ScriptEngine *engine)
{
- engine->addQObjectChildren(this);
+ engine->addToGlobalObject(this);
+ engine->addToGlobalObject(widget());
static const QStringList properties = QStringList() << QStringLiteral("final")
<< QStringLiteral("commit") << QStringLiteral("complete");
@@ -203,7 +204,8 @@ class PackageManagerGui::Private
{
public:
Private()
- : m_modified(false)
+ : m_currentId(-1)
+ , m_modified(false)
, m_autoSwitchPage(true)
, m_showSettingsButton(false)
{
@@ -225,7 +227,7 @@ public:
QLatin1String("unknown button"));
}
-
+ int m_currentId;
bool m_modified;
bool m_autoSwitchPage;
bool m_showSettingsButton;
@@ -281,7 +283,7 @@ PackageManagerGui::PackageManagerGui(PackageManagerCore *core, QWidget *parent)
connect(m_core, SIGNAL(uninstallationFinished()), this, SLOT(showFinishedPage()),
Qt::QueuedConnection);
- connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(executeControlScript(int)));
+ connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(currentPageChanged(int)));
connect(this, SIGNAL(currentIdChanged(int)), m_core, SIGNAL(currentPageChanged(int)));
connect(button(QWizard::FinishButton), SIGNAL(clicked()), this, SIGNAL(finishButtonClicked()));
connect(button(QWizard::FinishButton), SIGNAL(clicked()), m_core, SIGNAL(finishButtonClicked()));
@@ -511,8 +513,8 @@ void PackageManagerGui::wizardPageRemovalRequested(QWidget *widget)
continue;
removePage(pageId);
d->m_defaultPages.remove(pageId);
- packageManagerCore()->controlScriptEngine()->removeQObjectChildren(dynamicPage);
- packageManagerCore()->componentScriptEngine()->removeQObjectChildren(dynamicPage);
+ packageManagerCore()->controlScriptEngine()->removeFromGlobalObject(dynamicPage);
+ packageManagerCore()->componentScriptEngine()->removeFromGlobalObject(dynamicPage);
}
}
@@ -522,8 +524,8 @@ void PackageManagerGui::wizardWidgetInsertionRequested(QWidget *widget,
Q_ASSERT(widget);
if (QWizardPage *const p = QWizard::page(page)) {
p->layout()->addWidget(widget);
- packageManagerCore()->controlScriptEngine()->addQObjectChildren(p);
- packageManagerCore()->componentScriptEngine()->addQObjectChildren(p);
+ packageManagerCore()->controlScriptEngine()->addToGlobalObject(p);
+ packageManagerCore()->componentScriptEngine()->addToGlobalObject(p);
}
}
@@ -531,8 +533,8 @@ void PackageManagerGui::wizardWidgetRemovalRequested(QWidget *widget)
{
Q_ASSERT(widget);
widget->setParent(0);
- packageManagerCore()->controlScriptEngine()->removeQObjectChildren(widget);
- packageManagerCore()->componentScriptEngine()->removeQObjectChildren(widget);
+ packageManagerCore()->controlScriptEngine()->removeFromGlobalObject(widget);
+ packageManagerCore()->componentScriptEngine()->removeFromGlobalObject(widget);
}
void PackageManagerGui::wizardPageVisibilityChangeRequested(bool visible, int p)
@@ -698,26 +700,6 @@ void PackageManagerGui::setSettingsButtonEnabled(bool enabled)
btn->setEnabled(enabled);
}
-/**
- Returns the first descendant of \a parent that has \a objectName as name.
-
- This method is meant to be invoked from script.
- */
-QObject *PackageManagerGui::findChild(QObject *parent, const QString &objectName)
-{
- return parent->findChild<QObject*>(objectName);
-}
-
-/**
- Returns all descendants of \a parent that have \a objectName as name.
-
- This method is meant to be invoked from script.
- */
-QList<QObject *> PackageManagerGui::findChildren(QObject *parent, const QString &objectName)
-{
- return parent->findChildren<QObject*>(objectName);
-}
-
void PackageManagerGui::customButtonClicked(int which)
{
if (QWizard::WizardButton(which) == QWizard::CustomButton1 && d->m_showSettingsButton)
@@ -735,12 +717,29 @@ void PackageManagerGui::dependsOnLocalInstallerBinary()
}
}
+void PackageManagerGui::currentPageChanged(int newId)
+{
+ executeControlScript(newId);
+
+ PackageManagerPage *oldPage = qobject_cast<PackageManagerPage *>(page(d->m_currentId));
+ if (oldPage) {
+ oldPage->leaving();
+ emit oldPage->left();
+ }
+
+ d->m_currentId = newId;
+
+ PackageManagerPage *newPage = qobject_cast<PackageManagerPage *>(page(d->m_currentId));
+ if (newPage) {
+ newPage->entering();
+ emit newPage->entered();
+ }
+}
// -- PackageManagerPage
PackageManagerPage::PackageManagerPage(PackageManagerCore *core)
- : m_fresh(true)
- , m_complete(true)
+ : m_complete(true)
, m_needsSettingsButton(false)
, m_core(core)
, validatorComponent(0)
@@ -840,31 +839,6 @@ QWidget *PackageManagerPage::findWidget(const QString &objectName) const
return findChild<QWidget*> (objectName);
}
-/*!
- \internal
-
- Used to support some kind of initializePage() in the case the wizard has been set
- to QWizard::IndependentPages. If that option has been set, initializePage() would be only
- called once. So we provide entering() and leaving() based on this reimplemented function.
-*/
-void PackageManagerPage::setVisible(bool visible)
-{
- QWizardPage::setVisible(visible);
- if (m_fresh && !visible) {
- // this is only hit once when the page gets added to the wizard
- m_fresh = false;
- return;
- }
-
- if (visible) {
- entering();
- emit entered();
- } else {
- leaving();
- emit left();
- }
-}
-
int PackageManagerPage::nextId() const
{
const int next = QWizardPage::nextId(); // the page to show next
@@ -1488,12 +1462,30 @@ public:
m_treeView->setModel(m_currentModel);
m_treeView->setExpanded(m_currentModel->index(0, 0), true);
+ const bool installActionColumnVisible = false;
+ if (!installActionColumnVisible)
+ m_treeView->hideColumn(ComponentModelHelper::ActionColumn);
+
if (m_core->isInstaller()) {
m_treeView->setHeaderHidden(true);
- for (int i = 1; i < m_currentModel->columnCount(); ++i)
+ for (int i = ComponentModelHelper::InstalledVersionColumn; i < m_currentModel->columnCount(); ++i)
m_treeView->hideColumn(i);
+
+ if (installActionColumnVisible) {
+ m_treeView->header()->setStretchLastSection(false);
+ m_treeView->header()->setSectionResizeMode(
+ ComponentModelHelper::NameColumn, QHeaderView::Stretch);
+ m_treeView->header()->setSectionResizeMode(
+ ComponentModelHelper::ActionColumn, QHeaderView::ResizeToContents);
+ }
} else {
m_treeView->header()->setStretchLastSection(true);
+ if (installActionColumnVisible) {
+ m_treeView->header()->setSectionResizeMode(
+ ComponentModelHelper::NameColumn, QHeaderView::Interactive);
+ m_treeView->header()->setSectionResizeMode(
+ ComponentModelHelper::ActionColumn, QHeaderView::Interactive);
+ }
for (int i = 0; i < m_currentModel->columnCount(); ++i)
m_treeView->resizeColumnToContents(i);
}
@@ -1797,10 +1789,8 @@ bool TargetDirectoryPage::validatePage()
void TargetDirectoryPage::entering()
{
- if (QPushButton *const b = qobject_cast<QPushButton *>(gui()->button(QWizard::NextButton))) {
+ if (QPushButton *const b = qobject_cast<QPushButton *>(gui()->button(QWizard::NextButton)))
b->setDefault(true);
- b->setFocus();
- }
}
void TargetDirectoryPage::leaving()
@@ -2103,7 +2093,7 @@ void ReadyForInstallationPage::entering()
quint64 repositorySize = 0;
const bool createLocalRepository = packageManagerCore()->createLocalRepositoryFromBinary();
- if (createLocalRepository) {
+ if (createLocalRepository && packageManagerCore()->isInstaller()) {
repositorySize = QFile(QCoreApplication::applicationFilePath()).size();
// if we create a local repository, take that space into account as well
required += repositorySize;
@@ -2394,10 +2384,8 @@ void FinishedPage::entering()
} else {
if (packageManagerCore()->isInstaller()) {
m_commitButton = wizard()->button(QWizard::FinishButton);
- if (QPushButton *const b = qobject_cast<QPushButton *>(m_commitButton)) {
+ if (QPushButton *const b = qobject_cast<QPushButton *>(m_commitButton))
b->setDefault(true);
- b->setFocus();
- }
}
gui()->setOption(QWizard::NoCancelButton, true);