30#include "kmail_part.h" 
   33#include "kmmainwidget.h" 
   34#include "kmfoldertree.h" 
   38#include "accountmanager.h" 
   40#include "sidebarextension.h" 
   41#include "infoextension.h" 
   42#include "recentaddresses.h" 
   43using TDERecentAddress::RecentAddresses;
 
   45#include <tdeapplication.h> 
   46#include <tdeparts/mainwindow.h> 
   47#include <tdeparts/genericfactory.h> 
   48#include <knotifyclient.h> 
   49#include <dcopclient.h> 
   50#include <kiconloader.h> 
   52#include <kstatusbar.h> 
   53#include <ksettings/dispatcher.h> 
   59typedef KParts::GenericFactory< KMailPart > KMailFactory;
 
   60K_EXPORT_COMPONENT_FACTORY( libkmailpart, KMailFactory )
 
   62KMailPart::KMailPart(TQWidget *parentWidget, 
const char *widgetName,
 
   63             TQObject *parent, 
const char *name, 
const TQStringList &) :
 
   64  DCOPObject(
"KMailIface"), KParts::ReadOnlyPart(parent, name),
 
   65  mParentWidget( parentWidget )
 
   67  kdDebug(5006) << 
"KMailPart()" << endl;
 
   68  kdDebug(5006) << 
"  InstanceName: " << tdeApp->instanceName() << endl;
 
   70  setInstance(KMailFactory::instance());
 
   72  kdDebug(5006) << 
"KMailPart()..." << endl;
 
   73  kdDebug(5006) << 
"  InstanceName: " << tdeApp->instanceName() << endl;
 
   76  KMail::insertLibraryCataloguesAndIcons();
 
   80  KNotifyClient::startDaemon();
 
   84  tdeApp->dcopClient()->suspend(); 
 
   89  mKMailKernel->setXmlGuiInstance( KMailFactory::instance() );
 
   92  mKMailKernel->doSessionManagement();
 
   95  mKMailKernel->recoverDeadLetters();
 
   97  kmsetSignalHandler(kmsignalHandler);
 
   98  tdeApp->dcopClient()->resume(); 
 
  101  TQWidget *canvas = 
new TQWidget(parentWidget, widgetName);
 
  102  canvas->setFocusPolicy(TQWidget::ClickFocus);
 
  104  TDEGlobal::iconLoader()->addAppDir(
"kmail");
 
  108  connect(mReaderWin, TQ_SIGNAL(urlClicked(
const KURL&,
int)),
 
  109      mReaderWin, TQ_SLOT(slotUrlClicked()));
 
  110  TQVBoxLayout *topLayout = 
new TQVBoxLayout(canvas);
 
  111  topLayout->addWidget(mReaderWin);
 
  112  mReaderWin->setAutoDelete( 
true );
 
  113  kmkernel->inboxFolder()->open();
 
  114  KMMessage *msg = kmkernel->inboxFolder()->getMsg(0);
 
  115  mReaderWin->
setMsg( msg, 
true );
 
  116  mReaderWin->setFocusPolicy(TQWidget::ClickFocus);
 
  117  mStatusBar  = 
new KMailStatusBarExtension(
this);
 
  119  TDEGlobal::iconLoader()->addAppDir(
"kmail");
 
  120  setXMLFile( 
"kmail_part.rc" );
 
  121  kmkernel->inboxFolder()->close();
 
  123  mainWidget = 
new KMMainWidget( canvas, 
"mainWidget", 
this, actionCollection(),
 
  125  TQVBoxLayout *topLayout = 
new TQVBoxLayout(canvas);
 
  126  topLayout->addWidget(mainWidget);
 
  127  mainWidget->setFocusPolicy(TQWidget::ClickFocus);
 
  128  mStatusBar  = 
new KMailStatusBarExtension(
this);
 
  129  mStatusBar->addStatusBarItem( mainWidget->vacationScriptIndicator(), 2, 
false );
 
  131  new KParts::SideBarExtension( mainWidget->folderTree(),
 
  136  KParts::InfoExtension *ie = 
new KParts::InfoExtension( 
this, 
"KMailInfo" );
 
  137  connect( mainWidget->folderTree(), TQ_SIGNAL(folderSelected(
KMFolder*)), 
this, TQ_SLOT(exportFolder(
KMFolder*)) );
 
  138  connect( mainWidget->folderTree(), TQ_SIGNAL(iconChanged(KMFolderTreeItem*)),
 
  139           this, TQ_SLOT(slotIconChanged(KMFolderTreeItem*)) );
 
  140  connect( mainWidget->folderTree(), TQ_SIGNAL(nameChanged(KMFolderTreeItem*)),
 
  141           this, TQ_SLOT(slotNameChanged(KMFolderTreeItem*)) );
 
  142  connect( 
this, TQ_SIGNAL(textChanged(
const TQString&)), ie, TQ_SIGNAL(textChanged(
const TQString&)) );
 
  143  connect( 
this, TQ_SIGNAL(iconChanged(
const TQPixmap&)), ie, TQ_SIGNAL(iconChanged(
const TQPixmap&)) );
 
  145  TDEGlobal::iconLoader()->addAppDir( 
"kmail" );
 
  146  setXMLFile( 
"kmail_part.rc" );
 
  149  KSettings::Dispatcher::self()->registerInstance( KMailFactory::instance(), mKMailKernel,
 
  150                                                   TQ_SLOT( slotConfigChanged() ) );
 
  153KMailPart::~KMailPart()
 
  155  kdDebug(5006) << 
"Closing last KMMainWin: stopping mail check" << endl;
 
  158  kmkernel->abortMailCheck();
 
  159  kmkernel->acctMgr()->cancelMailCheck();
 
  161  mainWidget->destruct();
 
  167TDEAboutData *KMailPart::createAboutData()
 
  169  return new KMail::AboutData();
 
  172bool KMailPart::openFile()
 
  174  kdDebug(5006) << 
"KMailPart:openFile()" << endl;
 
  180void KMailPart::exportFolder( 
KMFolder *folder )
 
  182  KMFolderTreeItem* fti = 
static_cast< KMFolderTreeItem* 
>( mainWidget->folderTree()->currentItem() );
 
  185    emit textChanged( folder->
label() );
 
  188    emit iconChanged( fti->normalIcon( 22 ) );
 
  191void KMailPart::slotIconChanged( KMFolderTreeItem *fti )
 
  193  emit iconChanged( fti->normalIcon( 22 ) );
 
  196void KMailPart::slotNameChanged( KMFolderTreeItem *fti )
 
  198  emit textChanged( fti->folder()->label() );
 
  208class KPartsMainWindowWithPublicizedCreateGUI : 
public KParts::MainWindow
 
  211  void createGUIPublic( KParts::Part *part ) {
 
  218void KMailPart::guiActivateEvent(KParts::GUIActivateEvent *e)
 
  220  kdDebug(5006) << 
"KMailPart::guiActivateEvent" << endl;
 
  221  KParts::ReadOnlyPart::guiActivateEvent(e);
 
  222  mainWidget->initializeFilterActions();
 
  223  mainWidget->initializeFolderShortcutActions();
 
  224  mainWidget->setupForwardingActionsList();
 
  225  mainWidget->updateVactionScripStatus();
 
  228void KMailPart::exit()
 
  233TQWidget* KMailPart::parentWidget()
 const 
  235  return mParentWidget;
 
  239KMailStatusBarExtension::KMailStatusBarExtension( KMailPart *parent )
 
  240  : KParts::StatusBarExtension( parent ), mParent( parent )
 
  244TDEMainWindow * KMailStatusBarExtension::mainWindow()
 const 
  246  return static_cast<TDEMainWindow*
>( mParent->parentWidget() );
 
  249#include "kmail_part.moc" 
virtual TQString label() const
Returns the label of the folder for visualization.
 
Central point of coordination in KMail.
 
This class implements a "reader window", that is a window used for reading or viewing messages.
 
virtual void setMsg(KMMessage *msg, bool force=false, bool updateOnly=false)
Set the message that shall be shown.
 
The account manager is responsible for creating accounts of various types via the factory method crea...