diff --git a/Makefile.am b/Makefile.am index ac54f6f70..631f04dd1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -75,6 +75,9 @@ updatedir = $(kde_datadir)/kconf_update update_DATA = kmail.upd upgrade-transport.pl kmail-pgpidentity.pl \ upgrade-signature.pl kmail-upd-identities.pl +tipdir = $(kde_datadir)/kmail +tip_DATA = tips + messages: rc.cpp $(XGETTEXT) *.cpp *.h -o $(podir)/kmail.pot diff --git a/kmkernel.cpp b/kmkernel.cpp index 0bcb11e61..d3382bd18 100644 --- a/kmkernel.cpp +++ b/kmkernel.cpp @@ -35,6 +35,7 @@ #include "kmidentity.h" #include "identitymanager.h" #include +#include #include #include @@ -1009,5 +1010,13 @@ IdentityManager * KMKernel::identityManager() { return mIdentityManager; } +void KMKernel::slotShowTipOnStart() { + KTipDialog::showTip(0); +} + +void KMKernel::slotShowTip() { + KTipDialog::showTip( 0, QString::null, true ); +} + #include "kmkernel.moc" diff --git a/kmkernel.h b/kmkernel.h index ca37e838d..ac0a460ad 100644 --- a/kmkernel.h +++ b/kmkernel.h @@ -149,6 +149,12 @@ public: QByteArray getCollectedStdErr(KProcess*); public slots: + /** Show tip-of-the-day on startup */ + void slotShowTipOnStart(); + + /** Show tip-of-the-day, forced */ + void slotShowTip(); + /** Connect the received* signals of K(Shell)Process to these slots to let the kernel collect the output for you. diff --git a/kmmainwin.cpp b/kmmainwin.cpp index 90a0ea27e..5dfb71e8f 100644 --- a/kmmainwin.cpp +++ b/kmmainwin.cpp @@ -2789,6 +2789,10 @@ void KMMainWin::setupMenuBar() i18n("Display KMail's Welcome Page") ), 0, this, SLOT(slotIntro()), actionCollection(), "help_kmail_welcomepage" ); + (void) new KAction( KGuiItem( i18n("Tip of the &Day..."), 0, + i18n("Show \"Tip of the Day\"") ), + 0, kernel, SLOT(slotShowTip()), + actionCollection(), "help_show_tip" ); createGUI( "kmmainwin.rc", false ); diff --git a/kmmainwin.rc b/kmmainwin.rc index 32d089a75..81e79496f 100644 --- a/kmmainwin.rc +++ b/kmmainwin.rc @@ -1,6 +1,6 @@ - + &File @@ -103,6 +103,7 @@ + diff --git a/main.cpp b/main.cpp index 1daffa99c..7c222e941 100644 --- a/main.cpp +++ b/main.cpp @@ -11,6 +11,8 @@ #include #include +#include + #include #include #include @@ -315,6 +317,9 @@ int main(int argc, char *argv[]) // any dead letters? kmailKernel.recoverDeadLetters(); + // show tip-of-the-day: + QTimer::singleShot( 5000, &kmailKernel, SLOT(slotShowTipOnStart()) ); + setSignalHandler(signalHandler); kapp->dcopClient()->resume(); // Ok. We are ready for DCOP requests. diff --git a/tips b/tips new file mode 100644 index 000000000..25a4983c7 --- /dev/null +++ b/tips @@ -0,0 +1,65 @@ + + +

...that you can use the Left/Right keys of your keyboard to go to +the previous/next message?

+ +
+ + + +

...that you can rapidly create filters on sender, recipient, +subject and mailing lists with Tools->Create Filter?

+ +
+ + + +

...that you can get rid of the "[mailing list name]" +added to the subject of some mailing lists by using the rewrite +header filter action? Just use +

rewrite header "Subject"
+   replace "\s*\[mailing list name\]\s*"
+   with ""
+

+ +
+ + + +

...that you can associate mailing lists with folders in the +Folder->Properties... dialog? You can then use +Message->Post to Mailing List... to open the composer with +the mailing list address preset.

+ +
+ + + +

...that you can assign custom icons to each folder individually? +See Folder->Properties...

+ +
+ + + +

...that KMail can show a color bar indicating the type of message +(Plain text/HTML/OpenPGP) currently displayed?

+

This thwards attempts to fake successful signature verification by +sending HTML mails mimicking KMail's signature status frames.

+ +
+ + + +

...that you can filter on any header by simply entering it's name +in the first edit field of a search rule?

+ +
+ + + +

...that you can filter out HTML-only messages with the rule +

"Content-type" contains "text/html"?
+

+ +