[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.1/kdepim/akregator/src
From:       Allen Winter <winter () kde ! org>
Date:       2008-07-22 18:07:08
Message-ID: 1216750028.444228.13350.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 836655 by winterz:

backport SVN commit 836652 by winterz:

fix "Akregator's settings window is empty when embedded"
Use KCMultiDialog instead of KSettings::Dialog, which I understand
much better.


 M  +28 -11    akregator_part.cpp  
 M  +2 -0      akregator_part.h  


--- branches/KDE/4.1/kdepim/akregator/src/akregator_part.cpp #836654:836655
@@ -57,7 +57,7 @@
 #include <kio/netaccess.h>
 #include <KParts/GenericFactory>
 #include <KParts/Plugin>
-#include <KSettings/Dialog>
+#include <KCMultiDialog>
 
 #include <QFile>
 #include <QObject>
@@ -99,6 +99,7 @@
        , m_backedUpList(false)
        , m_mainWidget(0)
        , m_storage(0)
+       , m_dialog(0)
 
 {
     setPluginLoadingMode( LoadPluginsIfEnabled );
@@ -255,6 +256,7 @@
     kDebug() <<"Part::~Part() enter";
     if (!m_shuttingDown)
         slotOnShutdown();
+    delete m_dialog;
     kDebug() <<"Part::~Part(): leaving";
 }
 
@@ -633,16 +635,31 @@
 {
     saveSettings();
 
-    QStringList parts;
-    parts.append( componentData().componentName() );
-    QPointer<KSettings::Dialog> dlg( new KSettings::Dialog( parts, m_mainWidget ) );
-    dlg->setModal( true );
-    connect( dlg, SIGNAL( configCommitted() ),
-             this, SLOT( slotSettingsChanged() ) );
-    connect( dlg, SIGNAL( configCommitted() ),
-             TrayIcon::getInstance(), SLOT( settingsChanged() ) );
-    dlg->exec();
-    delete dlg;
+    if ( !m_dialog ) {
+        m_dialog = new KCMultiDialog( m_mainWidget );
+        connect( m_dialog, SIGNAL(configCommitted()),
+                 this, SLOT(slotSettingsChanged()) );
+        connect( m_dialog, SIGNAL(configCommitted()),
+                 TrayIcon::getInstance(), SLOT(settingsChanged()) );
+
+        QStringList modules;
+
+        modules.append( "akregator_config_general.desktop" );
+        modules.append( "akregator_config_onlinesync.desktop" );
+        modules.append( "akregator_config_archive.desktop" );
+        modules.append( "akregator_config_appearance.desktop" );
+        modules.append( "akregator_config_browser.desktop" );
+        modules.append( "akregator_config_advanced.desktop" );
+
+        // add them all
+        QStringList::iterator mit;
+        for ( mit = modules.begin(); mit != modules.end(); ++mit ) {
+            m_dialog->addModule( *mit );
+        }
+    }
+
+    m_dialog->show();
+    m_dialog->raise();
 }
 
 void Part::partActivateEvent(KParts::PartActivateEvent* event)
--- branches/KDE/4.1/kdepim/akregator/src/akregator_part.h #836654:836655
@@ -32,6 +32,7 @@
 
 class KConfigGroup;
 class KUrl;
+class KCMultiDialog;
 
 class QDomDocument;
 class QTimer;
@@ -196,6 +197,7 @@
         MainWidget* m_mainWidget;
         Backend::Storage* m_storage;
         ActionManagerImpl* m_actionManager;
+        KCMultiDialog* m_dialog;
 };
 
 } // namespace Akregator
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic