From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kmail/kcursorsaver.h | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 kmail/kcursorsaver.h (limited to 'kmail/kcursorsaver.h') diff --git a/kmail/kcursorsaver.h b/kmail/kcursorsaver.h new file mode 100644 index 000000000..930cab6f0 --- /dev/null +++ b/kmail/kcursorsaver.h @@ -0,0 +1,61 @@ +#ifndef kcursorsaver_h +#define kcursorsaver_h + +#include +#include + +/** + * @short sets a cursor and makes sure it's restored on destruction + * Create a KCursorSaver object when you want to set the cursor. + * As soon as it gets out of scope, it will restore the original + * cursor. + */ +class KCursorSaver : public Qt +{ +public: + /// constructor taking QCursor shapes + KCursorSaver(Qt::CursorShape shape) { + QApplication::setOverrideCursor( QCursor(shape) ); + inited = true; + } + + /// copy constructor. The right side won't restore the cursor + KCursorSaver( const KCursorSaver &rhs ) { + *this = rhs; + } + + /// restore the cursor + ~KCursorSaver() { + if (inited) + QApplication::restoreOverrideCursor(); + } + + /// call this to explitly restore the cursor + inline void restoreCursor(void) { + QApplication::restoreOverrideCursor(); + inited = false; + } + +protected: + void operator=( const KCursorSaver &rhs ) { + inited = rhs.inited; + rhs.inited = false; + } + +private: + mutable bool inited; +}; + +/** + * convenience functions + */ +namespace KBusyPtr { + inline KCursorSaver idle() { + return KCursorSaver(QCursor::ArrowCursor); + } + inline KCursorSaver busy() { + return KCursorSaver(QCursor::WaitCursor); + } +} + +#endif /*kbusyptr_h_*/ -- cgit v1.2.1