summaryrefslogtreecommitdiff
authorzecke <zecke>2004-09-12 20:31:20 (UTC)
committer zecke <zecke>2004-09-12 20:31:20 (UTC)
commitb52e2e46ec535a5307276b8fdf1e578aa5d29283 (patch) (side-by-side diff)
treef30d0fd2faaf89c2bc982e3f8a645645bf74edd8
parent90aaa298cc69522e88e1f81ade7d5259131b1544 (diff)
downloadopie-b52e2e46ec535a5307276b8fdf1e578aa5d29283.zip
opie-b52e2e46ec535a5307276b8fdf1e578aa5d29283.tar.gz
opie-b52e2e46ec535a5307276b8fdf1e578aa5d29283.tar.bz2
-Only create configWidgets once per config dialog, properly delete them
-Delete the Widgets before we remove the plugin from our address space some random clean ups
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/today/today.cpp38
-rw-r--r--core/pim/today/today.h1
-rw-r--r--core/pim/today/todayconfig.cpp32
-rw-r--r--core/pim/today/todayconfig.h4
4 files changed, 43 insertions, 32 deletions
diff --git a/core/pim/today/today.cpp b/core/pim/today/today.cpp
index a8c8651..be7cbce 100644
--- a/core/pim/today/today.cpp
+++ b/core/pim/today/today.cpp
@@ -30,2 +30,3 @@
#include <qwhatsthis.h>
+#include <qmessagebox.h>
@@ -56,4 +57,3 @@ Today::Today( QWidget* parent, const char* name, WFlags fl )
- #if defined(Q_WS_QWS)
- #if !defined(QT_NO_COP)
+#if !defined(QT_NO_COP)
@@ -62,4 +62,3 @@ Today::Today( QWidget* parent, const char* name, WFlags fl )
this, SLOT ( channelReceived(const QCString&,const QByteArray&) ) );
- #endif
- #endif
+#endif
@@ -86,3 +85,2 @@ Today::Today( QWidget* parent, const char* name, WFlags fl )
initialize();
- QPEApplication::showWidget( this );
}
@@ -181,4 +179,2 @@ void Today::loadPlugins() {
- OPluginItem::List lst = m_pluginLoader->allAvailable( true );
-
m_manager = new OPluginManager( m_pluginLoader );
@@ -186,2 +182,17 @@ void Today::loadPlugins() {
+ /*
+ * check if loading of Plugins crashed
+ */
+ if( m_pluginLoader->isInSafeMode() ) {
+ QMessageBox::information(this, tr("Today Error"),
+ tr("<qt>The plugin '%1' caused Today to crash."
+ " It could be that the plugin is not properly"
+ " installed.<br>Today tries to continue loading"
+ " plugins.</qt>")
+ .arg( m_manager->crashedPlugin().name()));
+ }
+
+ OPluginItem::List lst = m_pluginLoader->filtered( true );
+
+
for ( OPluginItem::List::Iterator it = lst.begin(); it != lst.end(); ++it ) {
@@ -235,3 +246,3 @@ void Today::startConfig() {
- if ( conf.exec() == QDialog::Accepted ) {
+ if ( QPEApplication::execDialog(&conf) == QDialog::Accepted ) {
conf.writeConfig();
@@ -346,8 +357,7 @@ void Today::editCard() {
Today::~Today() {
- if (m_pluginLoader) {
- delete m_pluginLoader;
- }
- if (m_manager) {
- delete m_manager;
- }
+ for(QMap<QString, TodayPlugin>::Iterator it = pluginList.begin(); it != pluginList.end(); ++it )
+ delete it.data().guiBox;
+
+ delete m_pluginLoader;
+ delete m_manager;
}
diff --git a/core/pim/today/today.h b/core/pim/today/today.h
index c947ae1..dfc819d 100644
--- a/core/pim/today/today.h
+++ b/core/pim/today/today.h
@@ -42,3 +42,2 @@ namespace Opie {
class Today : public TodayBase {
-
Q_OBJECT
diff --git a/core/pim/today/todayconfig.cpp b/core/pim/today/todayconfig.cpp
index c9823d4..dacce8b 100644
--- a/core/pim/today/todayconfig.cpp
+++ b/core/pim/today/todayconfig.cpp
@@ -98,3 +98,2 @@ TodayConfig::TodayConfig( QWidget* parent, const char* name, bool modal )
readConfig();
- QPEApplication::showDialog( this );
}
@@ -103,3 +102,3 @@ TodayConfig::TodayConfig( QWidget* parent, const char* name, bool modal )
void TodayConfig::setUpPlugins( OPluginManager * plugManager, OPluginLoader *plugLoader ) {
-
+ m_configMap.clear();
@@ -115,13 +114,15 @@ void TodayConfig::setUpPlugins( OPluginManager * plugManager, OPluginLoader *plu
TodayPluginInterface* iface = m_pluginLoader->load<TodayPluginInterface>( *it, IID_TodayPluginInterface );
+ TodayConfigWidget *widget = iface->guiPart()->configWidget( TabWidget3 );
- if ( iface->guiPart()->configWidget(this) != 0l ) {
- TodayConfigWidget* widget = iface->guiPart()->configWidget( TabWidget3 );
- TabWidget3->addTab( widget, iface->guiPart()->pixmapNameConfig()
- , iface->guiPart()->appName() );
- }
+ if (!widget )
+ continue;
+
+ m_configMap.insert( iface, widget );
+ TabWidget3->addTab( widget, iface->guiPart()->pixmapNameConfig()
+ , iface->guiPart()->appName() );
}
- for ( OPluginItem::List::Iterator it = lst.begin(); it != lst.end(); ++it ) {
+ for ( OPluginItem::List::Iterator it = lst.begin(); it != lst.end(); ++it )
pluginManagement( (*it) );
- }
+
@@ -176,6 +177,6 @@ void TodayConfig::writeConfig() {
QListViewItemIterator list_it( m_appletListView );
- //
+ OPluginItem::List lst = m_pluginLoader->allAvailable( true );
+
// this makes sure the names get saved in the order selected
for ( ; list_it.current(); ++list_it ) {
- OPluginItem::List lst = m_pluginLoader->allAvailable( true );
for ( OPluginItem::List::Iterator it = lst.begin(); it != lst.end(); ++it ) {
@@ -205,8 +206,7 @@ void TodayConfig::writeConfig() {
- OPluginItem::List lst = m_pluginManager->managedPlugins();
- for ( OPluginItem::List::Iterator it = lst.begin(); it != lst.end(); ++it ) {
+ OPluginItem::List managedLst = m_pluginManager->managedPlugins();
+ for ( OPluginItem::List::Iterator it = managedLst.begin(); it != managedLst.end(); ++it ) {
TodayPluginInterface* iface = m_pluginLoader->load<TodayPluginInterface>( *it, IID_TodayPluginInterface );
- if ( iface->guiPart()->configWidget(this) != 0l ) {
- iface->guiPart()->configWidget(this)->writeConfig();
- }
+ if ( m_configMap.contains( iface ) )
+ m_configMap[iface]->writeConfig();
}
diff --git a/core/pim/today/todayconfig.h b/core/pim/today/todayconfig.h
index ab79f31..81120d3 100644
--- a/core/pim/today/todayconfig.h
+++ b/core/pim/today/todayconfig.h
@@ -32,2 +32,4 @@ class QSpinBox;
class QTabWidget;
+class TodayConfigWidget;
+class TodayPluginInterface;
@@ -42,3 +44,2 @@ namespace Opie {
class TodayConfig : public QDialog {
-
Q_OBJECT
@@ -66,2 +67,3 @@ private:
QMap<QString,QCheckListItem*> m_applets;
+ QMap<TodayPluginInterface*,TodayConfigWidget*> m_configMap;