summaryrefslogtreecommitdiffstats
path: root/kontact/interfaces/core.cpp
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch)
tree67208f7c145782a7e90b123b982ca78d88cc2c87 /kontact/interfaces/core.cpp
downloadtdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.tar.gz
tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kontact/interfaces/core.cpp')
-rw-r--r--kontact/interfaces/core.cpp129
1 files changed, 129 insertions, 0 deletions
diff --git a/kontact/interfaces/core.cpp b/kontact/interfaces/core.cpp
new file mode 100644
index 00000000..19ed8bad
--- /dev/null
+++ b/kontact/interfaces/core.cpp
@@ -0,0 +1,129 @@
+/*
+ This file is part of KDE Kontact.
+
+ Copyright (c) 2001 Matthias Hoelzer-Kluepfel <mhk@kde.org>
+ Copyright (c) 2002-2003 Daniel Molkentin <molkentin@kde.org>
+ Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "core.h"
+
+#include <kparts/part.h>
+#include <kparts/componentfactory.h>
+#include <kdebug.h>
+#include <qtimer.h>
+#include <klocale.h>
+
+using namespace Kontact;
+
+class Core::Private
+{
+public:
+ QString lastErrorMessage;
+};
+
+Core::Core( QWidget *parent, const char *name )
+ : KParts::MainWindow( parent, name )
+{
+ d = new Private;
+ QTimer* timer = new QTimer( this );
+ mLastDate = QDate::currentDate();
+ connect(timer, SIGNAL( timeout() ), SLOT( checkNewDay() ) );
+ timer->start( 1000*60 );
+}
+
+Core::~Core()
+{
+ delete d;
+}
+
+KParts::ReadOnlyPart *Core::createPart( const char *libname )
+{
+ kdDebug(5601) << "Core::createPart(): " << libname << endl;
+
+ QMap<QCString,KParts::ReadOnlyPart *>::ConstIterator it;
+ it = mParts.find( libname );
+ if ( it != mParts.end() ) return it.data();
+
+ kdDebug(5601) << "Creating new KPart" << endl;
+
+ int error = 0;
+ KParts::ReadOnlyPart *part =
+ KParts::ComponentFactory::
+ createPartInstanceFromLibrary<KParts::ReadOnlyPart>
+ ( libname, this, 0, this, "kontact", QStringList(), &error );
+
+ KParts::ReadOnlyPart *pimPart = dynamic_cast<KParts::ReadOnlyPart*>( part );
+ if ( pimPart ) {
+ mParts.insert( libname, pimPart );
+ QObject::connect( pimPart, SIGNAL( destroyed( QObject * ) ),
+ SLOT( slotPartDestroyed( QObject * ) ) );
+ } else {
+ // TODO move to KParts::ComponentFactory
+ switch( error ) {
+ case KParts::ComponentFactory::ErrNoServiceFound:
+ d->lastErrorMessage = i18n( "No service found" );
+ break;
+ case KParts::ComponentFactory::ErrServiceProvidesNoLibrary:
+ d->lastErrorMessage = i18n( "Program error: the .desktop file for the service does not have a Library key." );
+ break;
+ case KParts::ComponentFactory::ErrNoLibrary:
+ d->lastErrorMessage = KLibLoader::self()->lastErrorMessage();
+ break;
+ case KParts::ComponentFactory::ErrNoFactory:
+ d->lastErrorMessage = i18n( "Program error: the library %1 does not provide a factory." ).arg( libname );
+ break;
+ case KParts::ComponentFactory::ErrNoComponent:
+ d->lastErrorMessage = i18n( "Program error: the library %1 does not support creating components of the specified type" ).arg( libname );
+ break;
+ }
+ kdWarning(5601) << d->lastErrorMessage << endl;
+ }
+
+ return pimPart;
+}
+
+void Core::slotPartDestroyed( QObject * obj )
+{
+ // the part was deleted, we need to remove it from the part map to not return
+ // a dangling pointer in createPart
+ QMap<QCString, KParts::ReadOnlyPart*>::Iterator end = mParts.end();
+ QMap<QCString, KParts::ReadOnlyPart*>::Iterator it = mParts.begin();
+ for ( ; it != end; ++it ) {
+ if ( it.data() == obj ) {
+ mParts.remove( it );
+ return;
+ }
+ }
+}
+
+void Core::checkNewDay()
+{
+ if ( mLastDate != QDate::currentDate() )
+ emit dayChanged( QDate::currentDate() );
+
+ mLastDate = QDate::currentDate();
+}
+
+QString Core::lastErrorMessage() const
+{
+ return d->lastErrorMessage;
+}
+
+#include "core.moc"
+// vim: sw=2 sts=2 et tw=80