From f2e2bbdfe3e5f1d6c533ef0e4d1a9ea9935c5204 Mon Sep 17 00:00:00 2001 From: Volker Lanz Date: Mon, 6 Oct 2008 08:01:28 +0000 Subject: [PATCH] Disable OK button in resize dialog per default, enabling it if something's modified. svn path=/trunk/playground/sysadmin/partitionmanager/; revision=868381 --- src/gui/resizedialog.cpp | 11 +++++++++++ src/gui/resizedialog.h | 2 ++ src/gui/sizedialogbase.cpp | 4 ++++ src/gui/sizedialogbase.h | 1 + 4 files changed, 18 insertions(+) diff --git a/src/gui/resizedialog.cpp b/src/gui/resizedialog.cpp index 0b41ddd..0685b07 100644 --- a/src/gui/resizedialog.cpp +++ b/src/gui/resizedialog.cpp @@ -58,6 +58,17 @@ ResizeDialog::~ResizeDialog() saveDialogSize(kcg); } +void ResizeDialog::setupDialog() +{ + SizeDialogBase::setupDialog(); + enableButtonOk(false); +} + +void ResizeDialog::setDirty() +{ + enableButtonOk(isModified()); +} + /** @return true if the user modified anything */ bool ResizeDialog::isModified() const { diff --git a/src/gui/resizedialog.h b/src/gui/resizedialog.h index e161d9d..1cdaf47 100644 --- a/src/gui/resizedialog.h +++ b/src/gui/resizedialog.h @@ -51,6 +51,8 @@ class ResizeDialog : public SizeDialogBase virtual bool canGrow() const; virtual bool canShrink() const; virtual bool canMove() const; + virtual void setupDialog(); + virtual void setDirty(); protected: qint64 originalFirstSector() const { return m_OriginalFirstSector; } diff --git a/src/gui/sizedialogbase.cpp b/src/gui/sizedialogbase.cpp index e023452..09b7e57 100644 --- a/src/gui/sizedialogbase.cpp +++ b/src/gui/sizedialogbase.cpp @@ -125,6 +125,7 @@ void SizeDialogBase::onSectorsBeforeChanged(qint64 newBefore) dialogWidget().spinFreeBefore().disconnect(this); dialogWidget().spinFreeBefore().setValue(sectorsToDialogUnit(partition(), preferredUnit(), newBefore)); connect(&dialogWidget().spinFreeBefore(), SIGNAL(valueChanged(int)), SLOT(onFreeSpaceBeforeChanged(int))); + setDirty(); } void SizeDialogBase::onSectorsAfterChanged(qint64 newAfter) @@ -132,6 +133,7 @@ void SizeDialogBase::onSectorsAfterChanged(qint64 newAfter) dialogWidget().spinFreeAfter().disconnect(this); dialogWidget().spinFreeAfter().setValue(sectorsToDialogUnit(partition(), preferredUnit(), newAfter)); connect(&dialogWidget().spinFreeAfter(), SIGNAL(valueChanged(int)), SLOT(onFreeSpaceAfterChanged(int))); + setDirty(); } void SizeDialogBase::onLengthChanged(qint64 newLength) @@ -160,6 +162,7 @@ void SizeDialogBase::onFreeSpaceBeforeChanged(int newBefore) } dialogWidget().partResizerWidget().updateSectors(newSectorsBefore, newSectorsAfter); + setDirty(); } void SizeDialogBase::onFreeSpaceAfterChanged(int newAfter) @@ -175,6 +178,7 @@ void SizeDialogBase::onFreeSpaceAfterChanged(int newAfter) } dialogWidget().partResizerWidget().updateSectors(newSectorsBefore, newSectorsAfter); + setDirty(); } const PartitionTable& SizeDialogBase::partitionTable() const diff --git a/src/gui/sizedialogbase.h b/src/gui/sizedialogbase.h index 909a006..1200e2f 100644 --- a/src/gui/sizedialogbase.h +++ b/src/gui/sizedialogbase.h @@ -65,6 +65,7 @@ class SizeDialogBase : public KDialog virtual qint64 maxSectors() const; virtual qint64 freeSectorsBefore() const { return m_FreeSectorsBefore; } virtual qint64 freeSectorsAfter() const { return m_FreeSectorsAfter; } + virtual void setDirty() {} static int sectorsToDialogUnit(const Partition& p, Capacity::Unit u, qint64 v); static qint64 dialogUnitToSectors(const Partition& p, Capacity::Unit u, int v);