31 #include "kmail_part.h"
33 #include "kmmainwin.h"
34 #include "kmmainwidget.h"
35 #include "kmfoldertree.h"
36 #include "kmstartup.h"
37 #include "aboutdata.h"
39 #include "accountmanager.h"
41 #include "sidebarextension.h"
42 #include "infoextension.h"
43 #include "recentaddresses.h"
44 using TDERecentAddress::RecentAddresses;
46 #include <tdeapplication.h>
47 #include <tdeparts/mainwindow.h>
48 #include <tdeparts/genericfactory.h>
49 #include <knotifyclient.h>
50 #include <dcopclient.h>
51 #include <kiconloader.h>
53 #include <kstatusbar.h>
54 #include <ksettings/dispatcher.h>
60 typedef KParts::GenericFactory< KMailPart > KMailFactory;
61 K_EXPORT_COMPONENT_FACTORY( libkmailpart, KMailFactory )
63 KMailPart::KMailPart(TQWidget *parentWidget, const
char *widgetName,
64 TQObject *parent, const
char *name, const TQStringList &) :
65 DCOPObject("
KMailIface"), KParts::ReadOnlyPart(parent, name),
66 mParentWidget( parentWidget )
68 kdDebug(5006) <<
"KMailPart()" << endl;
69 kdDebug(5006) <<
" InstanceName: " << kapp->instanceName() << endl;
71 setInstance(KMailFactory::instance());
73 kdDebug(5006) <<
"KMailPart()..." << endl;
74 kdDebug(5006) <<
" InstanceName: " << kapp->instanceName() << endl;
77 KMail::insertLibraryCataloguesAndIcons();
81 KNotifyClient::startDaemon();
85 kapp->dcopClient()->suspend();
90 mKMailKernel->setXmlGuiInstance( KMailFactory::instance() );
93 mKMailKernel->doSessionManagement();
96 mKMailKernel->recoverDeadLetters();
98 kmsetSignalHandler(kmsignalHandler);
99 kapp->dcopClient()->resume();
102 TQWidget *canvas =
new TQWidget(parentWidget, widgetName);
103 canvas->setFocusPolicy(TQ_ClickFocus);
105 TDEGlobal::iconLoader()->addAppDir(
"kmail");
109 connect(mReaderWin, TQT_SIGNAL(urlClicked(
const KURL&,
int)),
110 mReaderWin, TQT_SLOT(slotUrlClicked()));
111 TQVBoxLayout *topLayout =
new TQVBoxLayout(canvas);
112 topLayout->addWidget(mReaderWin);
113 mReaderWin->setAutoDelete(
true );
114 kmkernel->inboxFolder()->open();
115 KMMessage *msg = kmkernel->inboxFolder()->getMsg(0);
116 mReaderWin->
setMsg( msg,
true );
117 mReaderWin->setFocusPolicy(TQWidget::ClickFocus);
118 mStatusBar =
new KMailStatusBarExtension(
this);
120 TDEGlobal::iconLoader()->addAppDir(
"kmail");
121 setXMLFile(
"kmail_part.rc" );
122 kmkernel->inboxFolder()->close();
124 mainWidget =
new KMMainWidget( canvas,
"mainWidget",
this, actionCollection(),
126 TQVBoxLayout *topLayout =
new TQVBoxLayout(canvas);
127 topLayout->addWidget(mainWidget);
128 mainWidget->setFocusPolicy(TQ_ClickFocus);
129 mStatusBar =
new KMailStatusBarExtension(
this);
130 mStatusBar->addStatusBarItem( mainWidget->vacationScriptIndicator(), 2, false );
132 new KParts::SideBarExtension( mainWidget->folderTree(),
137 KParts::InfoExtension *ie =
new KParts::InfoExtension(
this,
"KMailInfo" );
138 connect( mainWidget->folderTree(), TQT_SIGNAL(folderSelected(
KMFolder*)),
this, TQT_SLOT(exportFolder(
KMFolder*)) );
139 connect( mainWidget->folderTree(), TQT_SIGNAL(iconChanged(KMFolderTreeItem*)),
140 this, TQT_SLOT(slotIconChanged(KMFolderTreeItem*)) );
141 connect( mainWidget->folderTree(), TQT_SIGNAL(nameChanged(KMFolderTreeItem*)),
142 this, TQT_SLOT(slotNameChanged(KMFolderTreeItem*)) );
143 connect(
this, TQT_SIGNAL(textChanged(
const TQString&)), ie, TQT_SIGNAL(textChanged(
const TQString&)) );
144 connect(
this, TQT_SIGNAL(iconChanged(
const TQPixmap&)), ie, TQT_SIGNAL(iconChanged(
const TQPixmap&)) );
146 TDEGlobal::iconLoader()->addAppDir(
"kmail" );
147 setXMLFile(
"kmail_part.rc" );
150 KSettings::Dispatcher::self()->registerInstance( KMailFactory::instance(), mKMailKernel,
151 TQT_SLOT( slotConfigChanged() ) );
154 KMailPart::~KMailPart()
156 kdDebug(5006) <<
"Closing last KMMainWin: stopping mail check" << endl;
159 kmkernel->abortMailCheck();
160 kmkernel->acctMgr()->cancelMailCheck();
162 mainWidget->destruct();
168 TDEAboutData *KMailPart::createAboutData()
170 return new KMail::AboutData();
173 bool KMailPart::openFile()
175 kdDebug(5006) <<
"KMailPart:openFile()" << endl;
181 void KMailPart::exportFolder(
KMFolder *folder )
183 KMFolderTreeItem* fti =
static_cast< KMFolderTreeItem*
>( mainWidget->folderTree()->currentItem() );
186 emit textChanged( folder->
label() );
189 emit iconChanged( fti->normalIcon( 22 ) );
192 void KMailPart::slotIconChanged( KMFolderTreeItem *fti )
194 emit iconChanged( fti->normalIcon( 22 ) );
197 void KMailPart::slotNameChanged( KMFolderTreeItem *fti )
199 emit textChanged( fti->folder()->label() );
209 class KPartsMainWindowWithPublicizedCreateGUI :
public KParts::MainWindow
212 void createGUIPublic( KParts::Part *part ) {
219 void KMailPart::guiActivateEvent(KParts::GUIActivateEvent *e)
221 kdDebug(5006) <<
"KMailPart::guiActivateEvent" << endl;
222 KParts::ReadOnlyPart::guiActivateEvent(e);
223 mainWidget->initializeFilterActions();
224 mainWidget->initializeFolderShortcutActions();
225 mainWidget->setupForwardingActionsList();
226 mainWidget->updateVactionScripStatus();
229 void KMailPart::exit()
234 TQWidget* KMailPart::parentWidget()
const
236 return mParentWidget;
240 KMailStatusBarExtension::KMailStatusBarExtension( KMailPart *parent )
241 : KParts::StatusBarExtension( parent ), mParent( parent )
245 TDEMainWindow * KMailStatusBarExtension::mainWindow()
const
247 return static_cast<TDEMainWindow*
>( mParent->parentWidget() );
250 #include "kmail_part.moc"