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