summaryrefslogtreecommitdiff
path: root/core/pim/today/today.cpp
Side-by-side diff
Diffstat (limited to 'core/pim/today/today.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/today/today.cpp38
1 files changed, 24 insertions, 14 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
@@ -25,12 +25,13 @@
#include <qpe/qpeapplication.h>
#include <qpe/contact.h>
#include <qdir.h>
#include <qtimer.h>
#include <qwhatsthis.h>
+#include <qmessagebox.h>
using namespace Opie::Ui;
using Opie::Core::OPluginItem;
using Opie::Core::OPluginLoader;
using Opie::Core::OPluginManager;
using Opie::Core::OConfig;
@@ -51,20 +52,18 @@ static QMap<QString, TodayPlugin> pluginList;
Today::Today( QWidget* parent, const char* name, WFlags fl )
: TodayBase( parent, name, fl ) {
QObject::connect( (QObject*)ConfigButton, SIGNAL( clicked() ), this, SLOT( startConfig() ) );
QObject::connect( (QObject*)OwnerField, SIGNAL( clicked() ), this, SLOT( editCard() ) );
- #if defined(Q_WS_QWS)
- #if !defined(QT_NO_COP)
+#if !defined(QT_NO_COP)
QCopChannel *todayChannel = new QCopChannel( "QPE/Today" , this );
connect ( todayChannel, SIGNAL( received(const QCString&,const QByteArray&) ),
this, SLOT ( channelReceived(const QCString&,const QByteArray&) ) );
- #endif
- #endif
+#endif
setOwnerField();
m_big_box = 0L;
layout = new QVBoxLayout( this );
layout->addWidget( Frame );
@@ -81,13 +80,12 @@ Today::Today( QWidget* parent, const char* name, WFlags fl )
m_refreshTimer = new QTimer( this );
connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
init();
loadPlugins();
initialize();
- QPEApplication::showWidget( this );
}
/**
* Qcop receive method.
*/
void Today::channelReceived( const QCString &msg, const QByteArray & data ) {
@@ -176,17 +174,30 @@ void Today::init() {
*/
void Today::loadPlugins() {
m_pluginLoader = new OPluginLoader( "today", true );
m_pluginLoader->setAutoDelete( true );
- OPluginItem::List lst = m_pluginLoader->allAvailable( true );
-
m_manager = new OPluginManager( m_pluginLoader );
m_manager->load();
+ /*
+ * 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 ) {
TodayPluginInterface* iface = m_pluginLoader->load<TodayPluginInterface>( *it, IID_TodayPluginInterface );
TodayPlugin plugin;
plugin.iface = iface;
plugin.name = (*it).name();
@@ -230,13 +241,13 @@ void Today::startConfig() {
disconnect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
m_refreshTimer->stop( );
TodayConfig conf( this, "dialog", true );
conf.setUpPlugins( m_manager, m_pluginLoader );
- if ( conf.exec() == QDialog::Accepted ) {
+ if ( QPEApplication::execDialog(&conf) == QDialog::Accepted ) {
conf.writeConfig();
initialize();
} else {
// since reinitialize is not called in that case , reconnect the signal
m_refreshTimer->start( 15000 ); // get the config value in here later
connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
@@ -341,14 +352,13 @@ void Today::startApplication() {
void Today::editCard() {
QCopEnvelope env( "QPE/Application/addressbook", "editPersonalAndClose()" );
}
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;
}