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 &) :
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" This class implements a "reader window", that is a window used for reading or viewing messages...
Central point of coordination in KMail.
checkMail wont show reader but will check mail.
virtual void setMsg(KMMessage *msg, bool force=false, bool updateOnly=false)
Set the message that shall be shown.
virtual TQString label() const
Returns the label of the folder for visualization.
The account manager is responsible for creating accounts of various types via the factory method crea...