00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
#ifdef HAVE_CONFIG_H
00027
#include <config.h>
00028
#endif
00029
00030
#include "kmail_part.h"
00031
00032
#include "kmmainwin.h"
00033
#include "kmmainwidget.h"
00034
#include "kmfoldertree.h"
00035
#include "kmstartup.h"
00036
#include "kmbroadcaststatus.h"
00037
#include "aboutdata.h"
00038
#include "kmkernel.h"
00039
#include "kmfolder.h"
00040
#include "sidebarextension.h"
00041
#include "infoextension.h"
00042
00043
#include <kapplication.h>
00044
#include <kparts/genericfactory.h>
00045
#include <knotifyclient.h>
00046
#include <dcopclient.h>
00047
#include <kiconloader.h>
00048
#include <kdebug.h>
00049
#include "recentaddresses.h"
00050
using KRecentAddress::RecentAddresses;
00051
#include <qlayout.h>
00052
00053
00054
typedef KParts::GenericFactory< KMailPart > KMailFactory;
00055 K_EXPORT_COMPONENT_FACTORY( libkmailpart, KMailFactory )
00056
00057 KMailPart::KMailPart(QWidget *parentWidget, const
char *widgetName,
00058 QObject *parent, const
char *name, const QStringList &) :
00059 DCOPObject("
KMailIface"), KParts::ReadOnlyPart(parent, name),
00060 mParentWidget( parentWidget )
00061 {
00062 kdDebug(5006) <<
"KMailPart()" << endl;
00063 kdDebug(5006) <<
" InstanceName: " << kapp->instanceName() << endl;
00064
00065 setInstance(KMailFactory::instance());
00066
00067 kdDebug(5006) <<
"KMailPart()..." << endl;
00068 kdDebug(5006) <<
" InstanceName: " << kapp->instanceName() << endl;
00069
00070
00071 KMail::insertLibraryCatalogues();
00072
00073
00074
00075 KNotifyClient::startDaemon();
00076
00077 KMail::lockOrDie();
00078
00079 kapp->dcopClient()->suspend();
00080
00081
00082 KMKernel *kmailKernel =
new KMKernel();
00083 kmailKernel->init();
00084 kmailKernel->setXmlGuiInstance( KMailFactory::instance() );
00085
00086
00087
00088
00089
00090
00091 kmailKernel->doSessionManagement();
00092
00093
00094 kmailKernel->recoverDeadLetters();
00095
00096 kmsetSignalHandler(kmsignalHandler);
00097 kapp->dcopClient()->resume();
00098
00099
00100 QWidget *canvas =
new QWidget(parentWidget, widgetName);
00101 canvas->setFocusPolicy(QWidget::ClickFocus);
00102 setWidget(canvas);
00103 KGlobal::iconLoader()->addAppDir(
"kmail");
00104
#if 0
00105
00106 KMReaderWin *mReaderWin =
new KMReaderWin( canvas, canvas, actionCollection() );
00107 connect(mReaderWin, SIGNAL(urlClicked(
const KURL&,
int)),
00108 mReaderWin, SLOT(slotUrlClicked()));
00109 QVBoxLayout *topLayout =
new QVBoxLayout(canvas);
00110 topLayout->addWidget(mReaderWin);
00111 mReaderWin->setAutoDelete(
true );
00112 kmkernel->inboxFolder()->open();
00113 KMMessage *msg = kmkernel->inboxFolder()->getMsg(0);
00114 mReaderWin->setMsg( msg,
true );
00115 mReaderWin->setFocusPolicy(QWidget::ClickFocus);
00116 m_extension =
new KMailBrowserExtension(
this);
00117
#if KDE_IS_VERSION( 3, 1, 90 )
00118
mStatusBar =
new KMailStatusBarExtension(
this);
00119 mStatusBar->addStatusBarItem( mainWidget->progressDialog(), 0,
true );
00120
00121
#endif
00122
KGlobal::iconLoader()->addAppDir(
"kmail");
00123 setXMLFile(
"kmmainwin.rc" );
00124 kmkernel->inboxFolder()->close();
00125
#else
00126
mainWidget =
new KMMainWidget( canvas,
"mainWidget", actionCollection(), kapp->config());
00127 QVBoxLayout *topLayout =
new QVBoxLayout(canvas);
00128 topLayout->addWidget(mainWidget);
00129 mainWidget->setFocusPolicy(QWidget::ClickFocus);
00130 m_extension =
new KMailBrowserExtension(
this);
00131
#if KDE_IS_VERSION( 3, 1, 90 )
00132
mStatusBar =
new KMailStatusBarExtension(
this);
00133 mStatusBar->addStatusBarItem( mainWidget->progressDialog(), 0,
true );
00134
new KParts::SideBarExtension( mainWidget->folderTree(),
00135
this,
00136
"KMailSidebar" );
00137
00138
00139 KParts::InfoExtension *ie =
new KParts::InfoExtension(
this,
"KMailInfo" );
00140 connect( mainWidget->folderTree(), SIGNAL(folderSelected(
KMFolder*)),
this, SLOT(exportFolder(
KMFolder*)) );
00141 connect( mainWidget->folderTree(), SIGNAL(iconChanged(KMFolderTreeItem*)),
00142
this, SLOT(slotIconChanged(KMFolderTreeItem*)) );
00143 connect( mainWidget->folderTree(), SIGNAL(nameChanged(KMFolderTreeItem*)),
00144
this, SLOT(slotNameChanged(KMFolderTreeItem*)) );
00145 connect(
this, SIGNAL(textChanged(
const QString&)), ie, SIGNAL(textChanged(
const QString&)) );
00146 connect(
this, SIGNAL(iconChanged(
const QPixmap&)), ie, SIGNAL(iconChanged(
const QPixmap&)) );
00147
00148
#endif
00149
KGlobal::iconLoader()->addAppDir(
"kmail" );
00150 setXMLFile(
"kmmainwin.rc" );
00151
#endif
00152
}
00153
00154 KMailPart::~KMailPart()
00155 {
00156 RecentAddresses::self(KMKernel::config())->save( KMKernel::config() );
00157 KMKernel::config()->sync();
00158 kmkernel->dumpDeadLetters();
00159 kmkernel->setShuttingDown(
true );
00160 mainWidget->destruct();
00161 kmkernel->notClosedByUser();
00162
delete kmkernel;
00163 KMail::cleanup();
00164 }
00165
00166 KAboutData *KMailPart::createAboutData()
00167 {
00168
return new KMail::AboutData();
00169 }
00170
00171
bool KMailPart::openFile()
00172 {
00173 kdDebug(5006) <<
"KMailPart:openFile()" << endl;
00174
00175 mainWidget->show();
00176
return true;
00177 }
00178
00179
void KMailPart::exportFolder(
KMFolder *folder )
00180 {
00181 KMFolderTreeItem* fti = static_cast< KMFolderTreeItem* >( mainWidget->folderTree()->currentItem() );
00182
00183
if ( folder != 0 )
00184 emit textChanged( folder->
label() );
00185
00186
if ( fti )
00187 emit iconChanged( fti->normalIcon( 22 ) );
00188 }
00189
00190
void KMailPart::slotIconChanged( KMFolderTreeItem *fti )
00191 {
00192 emit iconChanged( fti->normalIcon( 22 ) );
00193 }
00194
00195
void KMailPart::slotNameChanged( KMFolderTreeItem *fti )
00196 {
00197 emit textChanged( fti->folder()->label() );
00198 }
00199
00200
00201
void KMailPart::guiActivateEvent(KParts::GUIActivateEvent *e)
00202 {
00203 kdDebug(5006) <<
"KMailPart::guiActivateEvent" << endl;
00204 KParts::ReadOnlyPart::guiActivateEvent(e);
00205 }
00206
00207
void KMailPart::exit()
00208 {
00209
delete this;
00210 }
00211
00212 QWidget* KMailPart::parentWidget()
const
00213
{
00214
return mParentWidget;
00215 }
00216
00217 KMailBrowserExtension::KMailBrowserExtension(KMailPart *parent) :
00218 KParts::BrowserExtension(parent, "KMailBrowserExtension")
00219 {
00220 }
00221
00222 KMailBrowserExtension::~KMailBrowserExtension()
00223 {
00224 }
00225
00226
#if KDE_IS_VERSION( 3, 1, 90 )
00227
KMailStatusBarExtension::KMailStatusBarExtension( KMailPart *parent )
00228 : KParts::StatusBarExtension( parent ), mParent( parent )
00229 {
00230 }
00231
00232 KMainWindow * KMailStatusBarExtension::mainWindow()
const
00233
{
00234
return static_cast<KMainWindow*>( mParent->parentWidget() );
00235 }
00236
00237
#endif
00238
00239
00240
#include "kmail_part.moc"
00241