[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&nbsp;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