KDEUI
ktoggleaction.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 "ktoggleaction.h"
00029
00030 #include <kdebug.h>
00031 #include <kguiitem.h>
00032 #include <kicon.h>
00033 #include <klocale.h>
00034
00035 class KToggleAction::Private
00036 {
00037 public:
00038 Private( KToggleAction *_parent )
00039 : parent( _parent ), checkedGuiItem( 0L )
00040 {
00041 }
00042
00043 ~Private()
00044 {
00045 delete checkedGuiItem;
00046 }
00047
00048 void init()
00049 {
00050 parent->setCheckable( true );
00051 connect( parent, SIGNAL( toggled( bool ) ),
00052 parent, SLOT( slotToggled( bool ) ) );
00053 }
00054
00055 KToggleAction* parent;
00056 KGuiItem* checkedGuiItem;
00057 };
00058
00059
00060 KToggleAction::KToggleAction( QObject *parent )
00061 : KAction( parent ),
00062 d( new Private( this ) )
00063 {
00064 d->init();
00065 }
00066
00067 KToggleAction::KToggleAction( const QString & text, QObject *parent )
00068 : KAction( text, parent ),
00069 d( new Private( this ) )
00070 {
00071 d->init();
00072 }
00073
00074 KToggleAction::KToggleAction( const KIcon & icon, const QString & text, QObject *parent )
00075 : KAction( icon, text, parent ),
00076 d( new Private( this ) )
00077 {
00078 d->init();
00079 }
00080
00081 KToggleAction::~KToggleAction()
00082 {
00083 delete d;
00084 }
00085
00086
00087 void KToggleAction::setCheckedState( const KGuiItem& checkedItem )
00088 {
00089 delete d->checkedGuiItem;
00090 d->checkedGuiItem = new KGuiItem( checkedItem );
00091 }
00092
00093 void KToggleAction::slotToggled( bool )
00094 {
00095 if ( d->checkedGuiItem ) {
00096 QString string = d->checkedGuiItem->text();
00097 d->checkedGuiItem->setText( text() );
00098 setText( string );
00099
00100 string = d->checkedGuiItem->toolTip();
00101 d->checkedGuiItem->setToolTip( toolTip() );
00102 setToolTip( string );
00103
00104 if ( d->checkedGuiItem->hasIcon() ) {
00105 KIcon icon = d->checkedGuiItem->icon();
00106 d->checkedGuiItem->setIcon( KIcon(this->icon()) );
00107 QAction::setIcon( icon );
00108 }
00109 }
00110 }
00111
00112 #include "ktoggleaction.moc"