[SCM] Kaboom - Debian KDE 3->4 migration tool branch, master, updated. master/0.9.1-27-g586cac1
Modestas Vainius
modax-guest at alioth.debian.org
Fri Apr 3 16:51:47 UTC 2009
The following commit has been merged in the master branch:
commit ccd369648581bfbdd392745ae8722f75aed6e91f
Author: Modestas Vainius <modestas at vainius.eu>
Date: Fri Apr 3 14:41:55 2009 +0300
Fix layouting of ChoicePage.
* Enforce minimum wizard window size - 640x480.
* Avoid resizing of the wizard window and visual movement of widgets
when space calculation state changes.
* Tell a user how much free space the backup needs.
Signed-off-by: Modestas Vainius <modestas at vainius.eu>
diff --git a/choicepage.cpp b/choicepage.cpp
index 1d82278..f5f8c42 100644
--- a/choicepage.cpp
+++ b/choicepage.cpp
@@ -22,10 +22,12 @@
#include "diroperations/progresswidget.h"
#include "kaboomsettings.h"
+#include <QtGui/QStackedLayout>
+
class ChoicePagePrivate
{
public:
- ChoicePagePrivate() : backup(NULL) {}
+ ChoicePagePrivate() : backup(0), spaceLayout(0) {}
QLabel *configInfoLabel, *configLabel, *onceDoneLabel;
QLabel *scenariosLabel;
RichRadioButton *clean;
@@ -34,9 +36,12 @@ class ChoicePagePrivate
RichRadioButton *merge;
QButtonGroup *buttons;
QCheckBox *backup;
- QLabel *freewarning;
ProgressWidget *progresswidget;
+ ProgressWidget *freespace;
+ QLabel *freewarning;
+ QLabel *kdehomeSize;
QPushButton *recheck;
+ QStackedLayout *spaceLayout;
};
ChoicePage::ChoicePage(QWidget *parent) : QWizardPage(parent)
@@ -96,7 +101,6 @@ ChoicePage::ChoicePage(QWidget *parent) : QWizardPage(parent)
this);
d->buttons->addButton(d->migrate,MigrationTool::Migrate);
lay->addWidget(d->migrate);
- d->migrate->setChecked(true);
}
if(s.kde4homeDir().exists())
{
@@ -134,10 +138,6 @@ ChoicePage::ChoicePage(QWidget *parent) : QWizardPage(parent)
d->buttons->addButton(d->merge,MigrationTool::Merge);
lay->addWidget(d->merge);
}
- else
- {
- d->move->setChecked(true);
- }
}
d->clean = new RichRadioButton(
tr("Start with default KDE settings and data."),
@@ -157,20 +157,60 @@ ChoicePage::ChoicePage(QWidget *parent) : QWizardPage(parent)
registerField("backup",d->backup);
lay->addWidget(d->backup);
+ // Default choice
+ if (s.kdehomeDir().exists())
+ {
+ d->migrate->setChecked(true);
+ }
+ else
+ {
+ if (s.kde4homeDir().exists()) {
+ d->move->setChecked(true);
+ }
+ }
+
if(s.kdehomeDir().exists()) //if no kdedir, nothing to backup.
{
- d->freewarning = new QLabel(this);
- d->freewarning->setWordWrap(true);
- d->freewarning->hide();
+ // Use stacked layout to prevent wizard window from changing
+ // size
+ d->spaceLayout = new QStackedLayout;
+ QWidget *spaceCheck = new QWidget(this);
+ QWidget *spaceLack = new QWidget(this);
+ QWidget *spaceOk = new QWidget(this);
+ QHBoxLayout *spaceCheckLay = new QHBoxLayout(spaceCheck);
+ QGridLayout *spaceLackLay = new QGridLayout(spaceLack);
+ QVBoxLayout *spaceOkLay = new QVBoxLayout(spaceOk);
- QHBoxLayout *hlay = new QHBoxLayout;
d->progresswidget = new ProgressWidget(this);
- hlay->addWidget(d->progresswidget);
d->recheck = new QPushButton(tr("Check again"));
- hlay->addWidget(d->recheck, 0, Qt::AlignBottom);
connect(d->recheck,SIGNAL(clicked()),this,SLOT(checkSpaceForBackup()));
- lay->addLayout(hlay);
- lay->addWidget(d->freewarning);
+
+ d->freespace = new ProgressWidget(this);
+ d->freewarning = new QLabel(spaceCheck);
+ d->freewarning->setWordWrap(true);
+ d->freewarning->setText(
+ tr("<strong>Warning</strong>: insufficient free space to complete a backup. "
+ "Consider freeing up some space."));
+ d->freewarning->setToolTip(
+ tr("To free up some disk case, cancel the wizard now or switch to the Linux virtual terminal."));
+ d->freewarning->setMinimumWidth(506);
+ d->freewarning->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
+
+ d->kdehomeSize = new QLabel(spaceOk);
+
+ spaceCheckLay->addWidget(d->progresswidget, 0, Qt::AlignTop);
+ spaceLackLay->addWidget(d->freespace, 0, 0, Qt::AlignTop);
+ spaceLackLay->addWidget(d->recheck, 0, 1, Qt::AlignBottom);
+ spaceLackLay->addWidget(d->freewarning, 1, 0, 1, -1, Qt::AlignTop);
+ spaceOkLay->addSpacing(7);
+ spaceOkLay->addWidget(d->kdehomeSize, 0, Qt::AlignTop);
+
+ d->spaceLayout->addWidget(spaceCheck);
+ d->spaceLayout->addWidget(spaceLack);
+ d->spaceLayout->addWidget(spaceOk);
+ lay->addLayout(d->spaceLayout);
+
+ showSpaceWidget(SpaceOk);
}
else
{
@@ -178,6 +218,13 @@ ChoicePage::ChoicePage(QWidget *parent) : QWizardPage(parent)
}
}
+void ChoicePage::showSpaceWidget(SpaceWidget widgetIndex)
+{
+ if (d->spaceLayout) {
+ d->spaceLayout->setCurrentIndex(widgetIndex);
+ }
+}
+
void ChoicePage::initializePage()
{
if ( KaboomSettings::instance().kdehomeDir().exists() )
@@ -189,17 +236,6 @@ bool ChoicePage::backupSelected() const
return d->backup ? d->backup->isChecked() : false;
}
-void ChoicePage::setFreeWarningText(bool show)
-{
- d->freewarning->setText((show) ?
- tr("<p><strong>Warning:</strong> Insufficient free space to complete a backup. "
- "Consider freeing up some space.") : QString::null);
- d->freewarning->setToolTip((show) ?
- tr("To free up some disk case, cancel the wizard now or switch to virtual terminal.") :
- QString::null);
- if (show) d->freewarning->show();
-}
-
void ChoicePage::checkSpaceForBackup()
{
Q_ASSERT(KaboomSettings::instance().kdehomeDir().exists());
@@ -208,12 +244,9 @@ void ChoicePage::checkSpaceForBackup()
wizard()->button(QWizard::BackButton)->setEnabled(false);
wizard()->button(QWizard::NextButton)->setEnabled(false);
- d->progresswidget->show();
- d->progresswidget->setToolTip(QString::null);
- d->recheck->hide();
d->backup->setEnabled(false);
d->backup->setChecked(false);
- setFreeWarningText(false);
+ showSpaceWidget(SpaceChecking);
quint64 dirsize = -1;
quint64 freespace = DirOperations::freeDirSpace(QDir::homePath());
@@ -227,23 +260,21 @@ void ChoicePage::checkSpaceForBackup()
if(dirsize > freespace)
{
quint64 partsize = DirOperations::totalPartitionSize(QDir::homePath());
- d->progresswidget->setMaximum(partsize);
- d->progresswidget->setValue(partsize-freespace);
- d->progresswidget->setLabelText(
+ d->freespace->setMaximum(partsize);
+ d->freespace->setValue(partsize-freespace);
+ d->freespace->setLabelText(
tr("<p><i>The current KDE 3 settings and data directory takes up %1</i></p>")
.arg(DirOperations::bytesToString(dirsize))
);
- d->progresswidget->setToolTip(tr("% of disk space currently used"));
- d->recheck->show();
- setFreeWarningText(true);
+ d->freespace->setToolTip(tr("%1 of disk space currently used").arg((partsize-freespace)*100/freespace));
+ showSpaceWidget(SpaceLack);
}
else
{
- d->progresswidget->hide();
- d->recheck->hide();
- d->freewarning->hide();
+ d->kdehomeSize->setText(tr("Backup needs <strong>%1 MiB</strong> of free disk space").arg(dirsize / 1024 / 1024));
d->backup->setEnabled(true);
d->backup->setChecked(true);
+ showSpaceWidget(SpaceOk);
}
wizard()->button(QWizard::BackButton)->setEnabled(true);
diff --git a/choicepage.h b/choicepage.h
index 17ef15f..cb37a0b 100644
--- a/choicepage.h
+++ b/choicepage.h
@@ -30,12 +30,15 @@ class ChoicePage : public QWizardPage
void initializePage();
private slots:
void checkSpaceForBackup();
- void setFreeWarningText(bool show);
private:
+ enum SpaceWidget {
+ SpaceChecking = 0,
+ SpaceLack = 1,
+ SpaceOk = 2,
+ };
ChoicePagePrivate *d;
-
-
+ void showSpaceWidget(SpaceWidget widgetIndex);
};
diff --git a/migrationtool.cpp b/migrationtool.cpp
index 90c6e87..2400d31 100644
--- a/migrationtool.cpp
+++ b/migrationtool.cpp
@@ -51,8 +51,21 @@ MigrationTool::MigrationTool(QWidget *parent) : QWizard(parent)
setPage(Migration,d->migration);
setStartId(MigrationTool::Intro);
+}
+QSize MigrationTool::minimumSizeHint() const
+{
+ // Minimum 640x480
+ QSize size = QWizard::minimumSizeHint();
+ if (size.width() < 640) {
+ size.setWidth(640);
+ }
+ if (size.height() < 480) {
+ size.setHeight(480);
+ }
+ return size;
}
+
int MigrationTool::nextId() const
{
switch(currentId())
diff --git a/migrationtool.h b/migrationtool.h
index c73315f..270e417 100644
--- a/migrationtool.h
+++ b/migrationtool.h
@@ -40,6 +40,7 @@ class MigrationTool : public QWizard
int nextId() const;
void setMigrationError(const QString& error);
QString migrationError() const;
+ virtual QSize minimumSizeHint() const;
private:
MigrationToolPrivate *d;
diff --git a/richradiobutton.cpp b/richradiobutton.cpp
index 6755490..1fa116f 100644
--- a/richradiobutton.cpp
+++ b/richradiobutton.cpp
@@ -24,8 +24,7 @@
#include <QtGui/QStyle>
#include <QtGui/QStylePainter>
#include <QtGui/QStyleOptionButton>
-
-//#include <QtCore/QDebug>
+#include <QtCore/QDebug>
class EventEater : public QObject
{
@@ -123,7 +122,8 @@ void RichRadioButton::Private::init(RichRadioButton *q)
layout->addWidget(m_button, 0, 0);
layout->addWidget(m_label, 0, 1);
layout->addWidget(m_detailsLabel, 1, 1);
- layout->setRowMinimumHeight(1, 0);
+ // 640 minus watermark width, Qt is not able to properly sizeHint() it.
+ layout->setColumnMinimumWidth(1, 506);
m_button->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
m_label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
--
Kaboom - Debian KDE 3->4 migration tool
More information about the pkg-kde-commits
mailing list