You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
4.7 KiB
177 lines
4.7 KiB
#include "kmmainwin.h" |
|
#include "kmmainwidget.h" |
|
#include "kstatusbar.h" |
|
#include "kmkernel.h" |
|
#include "kmsender.h" |
|
#include "kmbroadcaststatus.h" |
|
#include <klocale.h> |
|
#include <kedittoolbar.h> |
|
#include <kconfig.h> |
|
|
|
#include "kmmainwin.moc" |
|
|
|
KMMainWin::KMMainWin(QWidget *) |
|
: KMTopLevelWidget("kmail-mainwindow") |
|
{ |
|
mKMMainWidget = new KMMainWidget( this, "KMMainWidget", actionCollection() ); |
|
mKMMainWidget->resize( 450, 600 ); |
|
setCentralWidget(mKMMainWidget); |
|
setupStatusBar(); |
|
|
|
#if KDE_IS_VERSION( 3, 1, 90 ) |
|
createStandardStatusBarAction(); |
|
setStandardToolBarMenuEnabled(true); |
|
#endif |
|
|
|
KStdAction::configureToolbars(this, SLOT(slotEditToolbars()), |
|
actionCollection(), "kmail_configure_toolbars" ); |
|
|
|
#if !KDE_IS_VERSION( 3, 1, 90 ) |
|
mToolbarAction = KStdAction::showToolbar(this, |
|
SLOT(slotToggleToolBar()), |
|
actionCollection()); |
|
mStatusbarAction = KStdAction::showStatusbar(this, |
|
SLOT(slotToggleStatusBar()), |
|
actionCollection()); |
|
#endif |
|
|
|
KStdAction::quit( this, SLOT(slotQuit()), actionCollection()); |
|
createGUI( "kmmainwin.rc", false ); |
|
#if !KDE_IS_VERSION( 3, 1, 90 ) |
|
mToolbarAction->setChecked(!toolBar()->isHidden()); |
|
mStatusbarAction->setChecked(!statusBar()->isHidden()); |
|
#endif |
|
|
|
connect( guiFactory()->container("folder", this), |
|
SIGNAL( aboutToShow() ), mKMMainWidget, |
|
SLOT( updateFolderMenu() )); |
|
|
|
connect( guiFactory()->container("message", this), |
|
SIGNAL( aboutToShow() ), mKMMainWidget, |
|
SLOT( updateMessageMenu() )); |
|
|
|
// contains "Create Filter" actions. |
|
connect( guiFactory()->container("tools", this), |
|
SIGNAL( aboutToShow() ), mKMMainWidget, |
|
SLOT( updateMessageMenu() )); |
|
|
|
// contains "View source" action. |
|
connect( guiFactory()->container("view", this), |
|
SIGNAL( aboutToShow() ), mKMMainWidget, |
|
SLOT( updateMessageMenu() )); |
|
|
|
conserveMemory(); |
|
applyMainWindowSettings(KMKernel::config(), "Main Window"); |
|
connect(kernel->msgSender(), SIGNAL(statusMsg(const QString&)), |
|
this, SLOT(statusMsg(const QString&))); |
|
connect(mKMMainWidget->messageView(), SIGNAL(statusMsg(const QString&)), |
|
this, SLOT(htmlStatusMsg(const QString&))); |
|
connect(mKMMainWidget, SIGNAL(captionChangeRequest(const QString&)), |
|
SLOT(setCaption(const QString&)) ); |
|
} |
|
|
|
KMMainWin::~KMMainWin() |
|
{ |
|
saveMainWindowSettings(KMKernel::config(), "Main Window"); |
|
KMKernel::config()->sync(); |
|
} |
|
|
|
void KMMainWin::statusMsg(const QString& aText) |
|
{ |
|
mLastStatusMsg = aText; |
|
displayStatusMsg(aText); |
|
} |
|
|
|
void KMMainWin::htmlStatusMsg(const QString& aText) |
|
{ |
|
if (aText.isEmpty()) displayStatusMsg(mLastStatusMsg); |
|
else displayStatusMsg(aText); |
|
} |
|
|
|
void KMMainWin::displayStatusMsg(const QString& aText) |
|
{ |
|
QString text = " " + aText + " "; |
|
int statusWidth = statusBar()->width() - littleProgress->width() |
|
- fontMetrics().maxWidth(); |
|
|
|
while (!text.isEmpty() && fontMetrics().width( text ) >= statusWidth) |
|
text.truncate( text.length() - 1); |
|
|
|
// ### FIXME: We should disable richtext/HTML (to avoid possible denial of service attacks), |
|
// but this code would double the size of the satus bar if the user hovers |
|
// over an <foo@bar.com>-style email address :-( |
|
// text.replace("&", "&"); |
|
// text.replace("<", "<"); |
|
// text.replace(">", ">"); |
|
|
|
statusBar()->changeItem(text, mMessageStatusId); |
|
} |
|
|
|
void KMMainWin::slotToggleToolBar() |
|
{ |
|
#if !KDE_IS_VERSION( 3, 1, 90 ) |
|
if(toolBar("mainToolBar")->isVisible()) |
|
toolBar("mainToolBar")->hide(); |
|
else |
|
toolBar("mainToolBar")->show(); |
|
#endif |
|
} |
|
|
|
void KMMainWin::slotToggleStatusBar() |
|
{ |
|
#if !KDE_IS_VERSION( 3, 1, 90 ) |
|
if (statusBar()->isVisible()) |
|
statusBar()->hide(); |
|
else |
|
statusBar()->show(); |
|
#endif |
|
} |
|
|
|
void KMMainWin::slotEditToolbars() |
|
{ |
|
saveMainWindowSettings(KMKernel::config(), "MainWindow"); |
|
KEditToolbar dlg(actionCollection(), "kmmainwin.rc"); |
|
|
|
connect( &dlg, SIGNAL(newToolbarConfig()), |
|
SLOT(slotUpdateToolbars()) ); |
|
|
|
dlg.exec(); |
|
} |
|
|
|
void KMMainWin::slotUpdateToolbars() |
|
{ |
|
createGUI("kmmainwin.rc"); |
|
applyMainWindowSettings(KMKernel::config(), "MainWindow"); |
|
#if !KDE_IS_VERSION( 3, 1, 90 ) |
|
mToolbarAction->setChecked(!toolBar()->isHidden()); |
|
#endif |
|
} |
|
|
|
void KMMainWin::setupStatusBar() |
|
{ |
|
mMessageStatusId = 1; |
|
littleProgress = mainKMWidget()->progressDialog(); |
|
|
|
statusBar()->addWidget( littleProgress, 0 , true ); |
|
statusBar()->insertItem(i18n(" Initializing..."), 1, 1 ); |
|
statusBar()->setItemAlignment( 1, AlignLeft | AlignVCenter ); |
|
littleProgress->show(); |
|
} |
|
|
|
/** Read configuration options after widgets are created. */ |
|
void KMMainWin::readConfig(void) |
|
{ |
|
mKMMainWidget->readConfig(); |
|
} |
|
|
|
/** Write configuration options. */ |
|
void KMMainWin::writeConfig(void) |
|
{ |
|
mKMMainWidget->writeConfig(); |
|
} |
|
|
|
void KMMainWin::slotQuit() |
|
{ |
|
close(); |
|
} |
|
|
|
|