[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/systemsettings
From: Ben Cooksley <sourtooth () gmail ! com>
Date: 2009-05-25 8:01:50
Message-ID: 1243238510.184516.16213.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 972520 by bcooksley:
Always ensure modules are closed when switching views.
Always ensure that there are no changes before allowing access to the configuration \
dialog. Plugin Interface Change: ModuleView::closeModules() now forcibly closes \
modules.
BUG: 193902
BUG: 193904
M +4 -0 app/SettingsBase.cpp
M +6 -0 classic/ClassicMode.cpp
M +1 -0 classic/ClassicMode.h
M +4 -0 core/BaseMode.cpp
M +9 -1 core/BaseMode.h
M +1 -6 core/ModuleView.cpp
M +3 -7 core/ModuleView.h
M +8 -1 icons/IconMode.cpp
M +1 -0 icons/IconMode.h
--- trunk/KDE/kdebase/workspace/systemsettings/app/SettingsBase.cpp #972519:972520
@@ -204,6 +204,9 @@
if( !configDialog ) {
initConfig();
}
+ if( activeView && activeView->moduleView() && \
!activeView->moduleView()->resolveChanges() ) { + return; // It shouldn't be \
triggering anyway, since the action is disabled + }
QStringList pluginList = possibleViews.keys();
int configIndex = pluginList.indexOf(mainConfigGroup.readEntry( "ActiveView", \
"icon_mode" )); @@ -260,6 +263,7 @@
if( activeView ) {
activeView->saveState();
+ activeView->leaveModuleView();
}
QString viewToUse = mainConfigGroup.readEntry( "ActiveView", "icon_mode" );
--- trunk/KDE/kdebase/workspace/systemsettings/classic/ClassicMode.cpp #972519:972520
@@ -205,4 +205,10 @@
d->classicWidget->setSizes( config().readEntry( "viewLayout", defaultSizes ) );
}
+void ClassicMode::leaveModuleView()
+{
+ d->moduleView->closeModules();
+ d->stackedWidget->setCurrentWidget( d->classicCategory );
+}
+
#include "ClassicMode.moc"
--- trunk/KDE/kdebase/workspace/systemsettings/classic/ClassicMode.h #972519:972520
@@ -32,6 +32,7 @@
ClassicMode(QObject * parent, const QVariantList& );
~ClassicMode();
void initEvent();
+ void leaveModuleView();
QWidget * mainWidget();
KAboutData * aboutData();
ModuleView * moduleView() const;
--- trunk/KDE/kdebase/workspace/systemsettings/core/BaseMode.cpp #972519:972520
@@ -117,6 +117,10 @@
{
}
+void BaseMode::leaveModuleView()
+{
+}
+
MenuItem * BaseMode::rootItem() const
{
return d->rootItem;
--- trunk/KDE/kdebase/workspace/systemsettings/core/BaseMode.h #972519:972520
@@ -111,10 +111,18 @@
virtual void saveState();
/**
+ * Causes the view to unload all modules in the module view, and return to their \
module selection state + *
+ * @warning Failure to reimplement will cause modules to not be unloaded when \
changing views. + * This must be implemented.
+ */
+ virtual void leaveModuleView();
+
+ /**
* Provides access to the ModuleView the application uses to display control \
modules.\n
*
* @warning Failure to reimplement will cause modules not to be checked for \
configuration
- * changes, and for the module to not be displayed in the About dialog.
+ * changes, and for the module to not be displayed in the About dialog. It must \
be implemented.
* @returns The ModuleView used by the plugin for handling modules.
*/
virtual ModuleView * moduleView() const;
--- trunk/KDE/kdebase/workspace/systemsettings/core/ModuleView.cpp #972519:972520
@@ -219,12 +219,8 @@
}
}
-bool ModuleView::closeModules()
+void ModuleView::closeModules()
{
- if( !resolveChanges() ) {
- return false;
- }
-
blockSignals(true);
QMap<KPageWidgetItem*, KCModuleProxy*>::iterator pageIterator;
QMap<KPageWidgetItem*, KCModuleProxy*>::iterator endIterator = d->mPages.end();
@@ -239,7 +235,6 @@
d->mPages.clear();
d->mModules.clear();
blockSignals(false);
- return true;
}
void ModuleView::moduleSave()
--- trunk/KDE/kdebase/workspace/systemsettings/core/ModuleView.h #972519:972520
@@ -85,14 +85,10 @@
/**
* Closes all active modules, after checking there are no active changes.
*
- * @warning The modules will not be closed if the currently active module has
- * changes and the user cancels the closing.
- *
- * @returns true if the modules were all closed successfully.
- * @returns false if the modules were not closed successfully, this usually only
- happens when the user cancels the closing.
+ * @warning This forces all modules to be destroyed regardless of if changes \
exist or not + * If possible, always check with resolveChanges() first.
*/
- bool closeModules();
+ void closeModules();
public Q_SLOTS:
/**
--- trunk/KDE/kdebase/workspace/systemsettings/icons/IconMode.cpp #972519:972520
@@ -147,7 +147,8 @@
void IconMode::backToOverview()
{
- if( d->moduleView->closeModules() ) {
+ if( d->moduleView->resolveChanges() ) {
+ d->moduleView->closeModules();
d->iconWidget->show();
d->mainWidget->setCurrentWidget( d->iconWidget );
d->backAction->setEnabled( false );
@@ -189,4 +190,10 @@
d->mainWidget->setCurrentWidget( d->iconWidget );
}
+void IconMode::leaveModuleView()
+{
+ d->moduleView->closeModules(); // We have to force it here
+ backToOverview();
+}
+
#include "IconMode.moc"
--- trunk/KDE/kdebase/workspace/systemsettings/icons/IconMode.h #972519:972520
@@ -36,6 +36,7 @@
~IconMode();
QWidget * mainWidget();
void initEvent();
+ void leaveModuleView();
KAboutData * aboutData();
ModuleView * moduleView() const;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic