00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#include <qwidget.h>
00025
#include <qdragobject.h>
00026
00027
#include <kapplication.h>
00028
#include <kaction.h>
00029
#include <kdebug.h>
00030
#include <kgenericfactory.h>
00031
#include <kiconloader.h>
00032
#include <kmessagebox.h>
00033
#include <kstandarddirs.h>
00034
00035
#include <dcopclient.h>
00036
00037
#include <libkdepim/maillistdrag.h>
00038
00039
#include "core.h"
00040
#include "summarywidget.h"
00041
#include "korganizerplugin.h"
00042
#include "korg_uniqueapp.h"
00043
00044
typedef KGenericFactory< KOrganizerPlugin, Kontact::Core > KOrganizerPluginFactory;
00045 K_EXPORT_COMPONENT_FACTORY( libkontact_korganizerplugin,
00046 KOrganizerPluginFactory(
"kontact_korganizerplugin" ) )
00047
00048 KOrganizerPlugin::KOrganizerPlugin( Kontact::
Core *core, const
char *, const QStringList& )
00049 : Kontact::Plugin( core, core, "korganizer" ),
00050 mIface( 0 )
00051 {
00052 setInstance( KOrganizerPluginFactory::instance() );
00053
00054 instance()->iconLoader()->addAppDir(
"korganizer" );
00055 QPixmap pm = instance()->iconLoader()->loadIcon(
"appointment", KIcon::Toolbar );
00056
00057 insertNewAction(
new KAction( i18n(
"New Event" ), pm,
00058 0,
this, SLOT( slotNewEvent() ), actionCollection(),
00059
"new_event" ) );
00060
00061 mUniqueAppWatcher =
new Kontact::UniqueAppWatcher(
00062
new Kontact::UniqueAppHandlerFactory<KOrganizerUniqueAppHandler>(),
this );
00063 }
00064
00065 KOrganizerPlugin::~KOrganizerPlugin()
00066 {
00067 }
00068
00069
Kontact::Summary *KOrganizerPlugin::createSummaryWidget( QWidget *parent )
00070 {
00071
return new SummaryWidget(
this, parent );
00072 }
00073
00074 KParts::Part *KOrganizerPlugin::createPart()
00075 {
00076 KParts::Part *part = loadPart();
00077
00078
if ( !part )
00079
return 0;
00080
00081 mIface =
new KCalendarIface_stub( dcopClient(),
"kontact",
"CalendarIface" );
00082
00083
return part;
00084 }
00085
00086 QString KOrganizerPlugin::tipFile()
const
00087
{
00088 QString file = ::locate(
"data",
"korganizer/tips");
00089
return file;
00090 }
00091
00092 QStringList KOrganizerPlugin::invisibleToolbarActions()
const
00093
{
00094
return QStringList(
"new_event" );
00095 }
00096
00097
void KOrganizerPlugin::select()
00098 {
00099 interface()->showEventView();
00100 }
00101
00102 KCalendarIface_stub *KOrganizerPlugin::interface()
00103 {
00104
if ( !mIface ) {
00105 part();
00106 }
00107 Q_ASSERT( mIface );
00108
return mIface;
00109 }
00110
00111
void KOrganizerPlugin::slotNewEvent()
00112 {
00113 interface()->openEventEditor(
"" );
00114 }
00115
00116
bool KOrganizerPlugin::createDCOPInterface(
const QString& serviceType )
00117 {
00118 kdDebug(5602) << k_funcinfo << serviceType << endl;
00119
if ( serviceType ==
"DCOP/Organizer" || serviceType ==
"DCOP/Calendar" ) {
00120
if ( part() )
00121
return true;
00122 }
00123
00124
return false;
00125 }
00126
00127
bool KOrganizerPlugin::isRunningStandalone()
00128 {
00129
return mUniqueAppWatcher->isRunningStandalone();
00130 }
00131
00132
bool KOrganizerPlugin::canDecodeDrag( QMimeSource *mimeSource )
00133 {
00134
return QTextDrag::canDecode( mimeSource ) ||
00135 KPIM::MailListDrag::canDecode( mimeSource );
00136 }
00137
00138
void KOrganizerPlugin::processDropEvent( QDropEvent *event )
00139 {
00140 QString text;
00141
if ( QTextDrag::decode( event, text ) ) {
00142 kdDebug() <<
"DROP:" << text << endl;
00143 interface()->openEventEditor( text );
00144
return;
00145 }
00146
00147 KPIM::MailList mails;
00148
if ( KPIM::MailListDrag::decode( event, mails ) ) {
00149
if ( mails.count() != 1 ) {
00150 KMessageBox::sorry( core(),
00151 i18n(
"Drops of multiple mails aren't supported." ) );
00152 }
else {
00153 KPIM::MailSummary mail = mails.first();
00154 QString txt = i18n(
"From: %1\nTo: %2\nSubject: %3").arg( mail.from() )
00155 .arg( mail.to() ).arg( mail.subject() );
00156 QString uri =
"kmail:" + QString::number( mail.serialNumber() ) +
"/" +
00157 mail.messageId();
00158 interface()->openEventEditor( i18n(
"Mail: %1").arg( mail.subject() ), txt,
00159 uri );
00160 }
00161
return;
00162 }
00163
00164 KMessageBox::sorry( core(), i18n(
"Can't handle drop events of type '%1'.")
00165 .arg( event->format() ) );
00166 }
00167
00168
#include "korganizerplugin.moc"