KDEUI
ktogglefullscreenaction.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include "ktogglefullscreenaction.h"
00029
00030 #include <QtCore/QEvent>
00031
00032 #include <kdebug.h>
00033 #include <kicon.h>
00034 #include <klocale.h>
00035
00036 class KToggleFullScreenAction::Private
00037 {
00038 public:
00039 Private()
00040 : window( 0 )
00041 {
00042 }
00043
00044 QWidget* window;
00045 };
00046
00047 KToggleFullScreenAction::KToggleFullScreenAction( QObject *parent )
00048 : KToggleAction( KIcon( "view-fullscreen" ), i18n( "F&ull Screen Mode" ), parent ),
00049 d( new Private )
00050 {
00051 setIconText( i18n( "Full Screen" ) );
00052 }
00053
00054 KToggleFullScreenAction::KToggleFullScreenAction( QWidget *window, QObject *parent )
00055 : KToggleAction( KIcon( "view-fullscreen" ), i18n( "F&ull Screen Mode" ), parent ),
00056 d( new Private )
00057 {
00058 setIconText( i18n( "Full Screen" ) );
00059 setWindow( window );
00060 }
00061
00062 KToggleFullScreenAction::~KToggleFullScreenAction()
00063 {
00064 delete d;
00065 }
00066
00067 void KToggleFullScreenAction::setWindow( QWidget* window )
00068 {
00069 if ( d->window )
00070 d->window->removeEventFilter( this );
00071
00072 d->window = window;
00073
00074 if ( d->window )
00075 d->window->installEventFilter( this );
00076 }
00077
00078 void KToggleFullScreenAction::slotToggled( bool checked )
00079 {
00080 if ( checked ) {
00081 setText( i18n( "Exit F&ull Screen Mode" ) );
00082 setIconText( i18n( "Exit Full Screen" ) );
00083 setIcon( KIcon( "view-restore" ) );
00084 } else {
00085 setText( i18n( "F&ull Screen Mode" ) );
00086 setIconText( i18n( "Full Screen" ) );
00087 setIcon( KIcon( "view-fullscreen" ) );
00088 }
00089
00090 KToggleAction::slotToggled( checked );
00091 }
00092
00093 bool KToggleFullScreenAction::eventFilter( QObject* object, QEvent* event )
00094 {
00095 if ( object == d->window )
00096 if ( event->type() == QEvent::WindowStateChange ) {
00097 if ( d->window->isFullScreen() != isChecked() )
00098 activate( QAction::Trigger );
00099 }
00100
00101 return false;
00102 }
00103
00104 void KToggleFullScreenAction::setFullScreen( QWidget* window, bool set )
00105 {
00106 if( set )
00107 window->setWindowState( window->windowState() | Qt::WindowFullScreen );
00108 else
00109 window->setWindowState( window->windowState() & ~Qt::WindowFullScreen );
00110 }
00111
00112 #include "ktogglefullscreenaction.moc"