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