kmail_part.cpp
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 mainWidget->initializeFilterActions();
00218 }
00219
00220 void KMailPart::exit()
00221 {
00222 delete this;
00223 }
00224
00225 QWidget* KMailPart::parentWidget() const
00226 {
00227 return mParentWidget;
00228 }
00229
00230 KMailBrowserExtension::KMailBrowserExtension(KMailPart *parent) :
00231 KParts::BrowserExtension(parent, "KMailBrowserExtension")
00232 {
00233 }
00234
00235 KMailBrowserExtension::~KMailBrowserExtension()
00236 {
00237 }
00238
00239 KMailStatusBarExtension::KMailStatusBarExtension( KMailPart *parent )
00240 : KParts::StatusBarExtension( parent ), mParent( parent )
00241 {
00242 }
00243
00244 KMainWindow * KMailStatusBarExtension::mainWindow() const
00245 {
00246 return static_cast<KMainWindow*>( mParent->parentWidget() );
00247 }
00248
00249
00250 #include "kmail_part.moc"
00251
This file is part of the documentation for kmail Library Version 3.3.2.