Diffstat (limited to 'microkde/kdeui/kactionclasses.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | microkde/kdeui/kactionclasses.cpp | 111 |
1 files changed, 56 insertions, 55 deletions
diff --git a/microkde/kdeui/kactionclasses.cpp b/microkde/kdeui/kactionclasses.cpp index 82e6c8b..c611865 100644 --- a/microkde/kdeui/kactionclasses.cpp +++ b/microkde/kdeui/kactionclasses.cpp @@ -1,2058 +1,2059 @@ /* This file is part of the KDE libraries Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org> (C) 1999 Simon Hausmann <hausmann@kde.org> (C) 2000 Nicolas Hadacek <haadcek@kde.org> (C) 2000 Kurt Granroth <granroth@kde.org> (C) 2000 Michael Koch <koch@kde.org> (C) 2001 Holger Freyther <freyther@kde.org> (C) 2002 Ellis Whitehead <ellis@kde.org> (C) 2002 Joseph Wenninger <jowenn@kde.org> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "kactionclasses.h" #include <assert.h> #include <qfontdatabase.h> -#include <qobjectlist.h> +#include <qobject.h> //US#include <qwhatsthis.h> #include <qtimer.h> +//Added by qt3to4: +#include <Q3ValueList> //US#include <kaccel.h> //US#include <kapplication.h> #include <kconfig.h> #include <kdebug.h> //US#include <kfontcombo.h> //US#include <kmainwindow.h> //US#include <kmenubar.h> //US#include <kpopupmenu.h> #include <kcombobox.h> #include <ktoolbar.h> #include <ktoolbarbutton.h> #include <kurl.h> //US added the following includefiles #include <kconfigbase.h> #include <qwidget.h> -#include <qpopupmenu.h> +#include <q3popupmenu.h> #include <qmenubar.h> -#include <qmainwindow.h> -#include <qtoolbar.h> +#include <q3mainwindow.h> +#include <q3toolbar.h> #include <qcombobox.h> -#include <qmainwindow.h> - +#include <q3mainwindow.h> +#include <qcoreapplication.h> static QFontDatabase *fontDataBase = 0; static void cleanupFontDatabase() { delete fontDataBase; fontDataBase = 0; } static void get_fonts( QStringList &lst ) { if ( !fontDataBase ) { fontDataBase = new QFontDatabase(); qAddPostRoutine( cleanupFontDatabase ); } lst.clear(); QStringList families = fontDataBase->families(); for ( QStringList::Iterator it = families.begin(); it != families.end(); ++it ) { QString family = *it; if ( family. contains('-') ) // remove foundry family = family.right( family.length() - family.find('-' ) - 1); if ( !lst.contains( family ) ) lst.append( family ); } lst.sort(); } -static QValueList<int> get_standard_font_sizes() +static Q3ValueList<int> get_standard_font_sizes() { if ( !fontDataBase ) { fontDataBase = new QFontDatabase(); qAddPostRoutine( cleanupFontDatabase ); } return fontDataBase->standardSizes(); } class KToggleAction::KToggleActionPrivate { public: KToggleActionPrivate() { m_checked = false; } bool m_checked; QString m_exclusiveGroup; }; KToggleAction::KToggleAction( const QString& text, const KShortcut& cut, QObject* parent, const char* name ) : KAction( text, cut, parent, name ) { d = new KToggleActionPrivate; } KToggleAction::KToggleAction( const QString& text, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KAction( text, cut, receiver, slot, parent, name ) { d = new KToggleActionPrivate; } -KToggleAction::KToggleAction( const QString& text, const QIconSet& pix, +KToggleAction::KToggleAction( const QString& text, const QIcon& pix, const KShortcut& cut, QObject* parent, const char* name ) : KAction( text, pix, cut, parent, name ) { d = new KToggleActionPrivate; } KToggleAction::KToggleAction( const QString& text, const QString& pix, const KShortcut& cut, QObject* parent, const char* name ) : KAction( text, pix, cut, parent, name ) { d = new KToggleActionPrivate; } -KToggleAction::KToggleAction( const QString& text, const QIconSet& pix, +KToggleAction::KToggleAction( const QString& text, const QIcon& pix, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KAction( text, pix, cut, receiver, slot, parent, name ) { d = new KToggleActionPrivate; } KToggleAction::KToggleAction( const QString& text, const QString& pix, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KAction( text, pix, cut, receiver, slot, parent, name ) { d = new KToggleActionPrivate; } KToggleAction::KToggleAction( QObject* parent, const char* name ) : KAction( parent, name ) { d = new KToggleActionPrivate; } KToggleAction::~KToggleAction() { delete d; } int KToggleAction::plug( QWidget* widget, int index ) { - if ( !widget->inherits("QPopupMenu") && !widget->inherits("KToolBar") ) + if ( !widget->inherits("Q3PopupMenu") && !widget->inherits("KToolBar") ) { kdWarning() << "Can not plug KToggleAction in " << widget->className() << endl; return -1; } /*US if (kapp && !kapp->authorizeKAction(name())) return -1; */ int _index = KAction::plug( widget, index ); if ( _index == -1 ) return _index; - if ( widget->inherits("QPopupMenu") ) + if ( widget->inherits("Q3PopupMenu") ) { int id = itemId( _index ); - static_cast<QPopupMenu*>(widget)->setItemChecked( id, d->m_checked ); + static_cast<Q3PopupMenu*>(widget)->setItemChecked( id, d->m_checked ); } else if ( widget->inherits( "KToolBar" ) ) { KToolBar *bar = static_cast<KToolBar *>( widget ); bar->setToggle( itemId( _index ), true ); bar->setButton( itemId( _index ), isChecked() ); } return _index; } void KToggleAction::setChecked( bool c ) { if ( c == d->m_checked ) return; //kdDebug(129) << "KToggleAction::setChecked(" << c << ") " << this << " " << name() << endl; d->m_checked = c; int len = containerCount(); for( int i = 0; i < len; ++i ) updateChecked( i ); if ( c && parent() && !exclusiveGroup().isEmpty() ) { - const QObjectList *list = parent()->children(); - if ( list ) { - QObjectListIt it( *list ); - for( ; it.current(); ++it ) { - if ( it.current()->inherits( "KToggleAction" ) && it.current() != this && - static_cast<KToggleAction*>(it.current())->exclusiveGroup() == exclusiveGroup() ) { - KToggleAction *a = static_cast<KToggleAction*>(it.current()); + const QObjectList list = parent()->children(); + if ( !list.empty() ) { + for(QObjectList::const_iterator it=list.begin();it!=list.end();++it) { + if ( (*it)->inherits( "KToggleAction" ) && (*it) != this && + static_cast<KToggleAction*>((*it))->exclusiveGroup() == exclusiveGroup() ) { + KToggleAction *a = static_cast<KToggleAction*>(*it); if( a->isChecked() ) { a->setChecked( false ); emit a->toggled( false ); } } } } } } void KToggleAction::updateChecked( int id ) { QWidget *w = container( id ); - if ( w->inherits( "QPopupMenu" ) ) - static_cast<QPopupMenu*>(w)->setItemChecked( itemId( id ), d->m_checked ); + if ( w->inherits( "Q3PopupMenu" ) ) + static_cast<Q3PopupMenu*>(w)->setItemChecked( itemId( id ), d->m_checked ); else if ( w->inherits( "QMenuBar" ) ) static_cast<QMenuBar*>(w)->setItemChecked( itemId( id ), d->m_checked ); else if ( w->inherits( "KToolBar" ) ) { QWidget* r = static_cast<KToolBar*>( w )->getButton( itemId( id ) ); if ( r && r->inherits( "KToolBarButton" ) ) static_cast<KToolBar*>( w )->setButton( itemId( id ), d->m_checked ); } } void KToggleAction::slotActivated() { setChecked( !isChecked() ); emit activated(); emit toggled( isChecked() ); } bool KToggleAction::isChecked() const { return d->m_checked; } void KToggleAction::setExclusiveGroup( const QString& name ) { d->m_exclusiveGroup = name; } QString KToggleAction::exclusiveGroup() const { return d->m_exclusiveGroup; } KRadioAction::KRadioAction( const QString& text, const KShortcut& cut, QObject* parent, const char* name ) : KToggleAction( text, cut, parent, name ) { } KRadioAction::KRadioAction( const QString& text, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KToggleAction( text, cut, receiver, slot, parent, name ) { } -KRadioAction::KRadioAction( const QString& text, const QIconSet& pix, +KRadioAction::KRadioAction( const QString& text, const QIcon& pix, const KShortcut& cut, QObject* parent, const char* name ) : KToggleAction( text, pix, cut, parent, name ) { } KRadioAction::KRadioAction( const QString& text, const QString& pix, const KShortcut& cut, QObject* parent, const char* name ) : KToggleAction( text, pix, cut, parent, name ) { } -KRadioAction::KRadioAction( const QString& text, const QIconSet& pix, +KRadioAction::KRadioAction( const QString& text, const QIcon& pix, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KToggleAction( text, pix, cut, receiver, slot, parent, name ) { } KRadioAction::KRadioAction( const QString& text, const QString& pix, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KToggleAction( text, pix, cut, receiver, slot, parent, name ) { } KRadioAction::KRadioAction( QObject* parent, const char* name ) : KToggleAction( parent, name ) { } void KRadioAction::slotActivated() { if ( isChecked() ) { const QObject *senderObj = sender(); if ( !senderObj || !senderObj->inherits( "KToolBarButton" ) ) return; qDebug("KRadioAction::slotActivated has to be fixed"); const_cast<KToolBarButton *>( static_cast<const KToolBarButton *>( senderObj ) )->on( true ); return; } KToggleAction::slotActivated(); } class KSelectAction::KSelectActionPrivate { public: KSelectActionPrivate() { m_edit = false; m_menuAccelsEnabled = true; m_menu = 0; m_current = -1; m_comboWidth = -1; } bool m_edit; bool m_menuAccelsEnabled; - QPopupMenu *m_menu; + Q3PopupMenu *m_menu; int m_current; int m_comboWidth; QStringList m_list; QString makeMenuText( const QString &_text ) { if ( m_menuAccelsEnabled ) return _text; QString text = _text; uint i = 0; while ( i < text.length() ) { if ( text.at( i ) == '&' ) { text.insert( i, '&' ); i += 2; } else ++i; } return text; } }; KSelectAction::KSelectAction( const QString& text, const KShortcut& cut, QObject* parent, const char* name ) : KAction( text, cut, parent, name ) { d = new KSelectActionPrivate; } KSelectAction::KSelectAction( const QString& text, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KAction( text, cut, receiver, slot, parent, name ) { d = new KSelectActionPrivate; } -KSelectAction::KSelectAction( const QString& text, const QIconSet& pix, +KSelectAction::KSelectAction( const QString& text, const QIcon& pix, const KShortcut& cut, QObject* parent, const char* name ) : KAction( text, pix, cut, parent, name ) { d = new KSelectActionPrivate; } KSelectAction::KSelectAction( const QString& text, const QString& pix, const KShortcut& cut, QObject* parent, const char* name ) : KAction( text, pix, cut, parent, name ) { d = new KSelectActionPrivate; } -KSelectAction::KSelectAction( const QString& text, const QIconSet& pix, +KSelectAction::KSelectAction( const QString& text, const QIcon& pix, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KAction( text, pix, cut, receiver, slot, parent, name ) { d = new KSelectActionPrivate; } KSelectAction::KSelectAction( const QString& text, const QString& pix, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KAction( text, pix, cut, receiver, slot, parent, name ) { d = new KSelectActionPrivate; } KSelectAction::KSelectAction( QObject* parent, const char* name ) : KAction( parent, name ) { d = new KSelectActionPrivate; } KSelectAction::~KSelectAction() { assert(d); delete d->m_menu; delete d; d = 0; } void KSelectAction::setCurrentItem( int id ) { if ( id >= (int)d->m_list.count() ) { - ASSERT(id < (int)d->m_list.count()); + Q_ASSERT(id < (int)d->m_list.count()); return; } if ( d->m_menu ) { if ( d->m_current >= 0 ) d->m_menu->setItemChecked( d->m_current, false ); if ( id >= 0 ) { //US qDebug("KSelectAction::setCurrentItem %i", id); d->m_menu->setItemChecked( id, true ); } } d->m_current = id; int len = containerCount(); for( int i = 0; i < len; ++i ) updateCurrentItem( i ); // emit KAction::activated(); // emit activated( currentItem() ); // emit activated( currentText() ); } void KSelectAction::setComboWidth( int width ) { if ( width < 0 ) return; d->m_comboWidth=width; int len = containerCount(); for( int i = 0; i < len; ++i ) updateComboWidth( i ); } -QPopupMenu* KSelectAction::popupMenu() const +Q3PopupMenu* KSelectAction::popupMenu() const { kdDebug(129) << "KSelectAction::popupMenu()" << endl; // remove -- ellis if ( !d->m_menu ) { //US d->m_menu = new KPopupMenu(0L, "KSelectAction::popupMenu()"); - d->m_menu = new QPopupMenu(0L, "QSelectAction::popupMenu()"); + d->m_menu = new Q3PopupMenu(0L, "QSelectAction::popupMenu()"); setupMenu(); if ( d->m_current >= 0 ) d->m_menu->setItemChecked( d->m_current, true ); } return d->m_menu; } void KSelectAction::setupMenu() const { if ( !d->m_menu ) return; d->m_menu->clear(); QStringList::ConstIterator it = d->m_list.begin(); for( uint id = 0; it != d->m_list.end(); ++it, ++id ) { QString text = *it; if ( !text.isEmpty() ) d->m_menu->insertItem( d->makeMenuText( text ), this, SLOT( slotActivated( int ) ), 0, id ); else d->m_menu->insertSeparator(); } } void KSelectAction::changeItem( int index, const QString& text ) { if ( index < 0 || index >= (int)d->m_list.count() ) { kdWarning() << "KSelectAction::changeItem Index out of scope" << endl; return; } d->m_list[ index ] = text; if ( d->m_menu ) d->m_menu->changeItem( index, d->makeMenuText( text ) ); int len = containerCount(); for( int i = 0; i < len; ++i ) changeItem( i, index, text ); } void KSelectAction::changeItem( int id, int index, const QString& text) { if ( index < 0 ) return; QWidget* w = container( id ); if ( w->inherits( "KToolBar" ) ) { QWidget* r = (static_cast<KToolBar*>( w ))->getWidget( itemId( id ) ); if ( r->inherits( "QComboBox" ) ) { QComboBox *b = static_cast<QComboBox*>( r ); b->changeItem(text, index ); } } } void KSelectAction::setItems( const QStringList &lst ) { kdDebug(129) << "KAction::setItems()" << endl; // remove -- ellis d->m_list = lst; d->m_current = -1; setupMenu(); int len = containerCount(); for( int i = 0; i < len; ++i ) updateItems( i ); // Disable if empty and not editable setEnabled ( lst.count() > 0 || d->m_edit ); } QStringList KSelectAction::items() const { return d->m_list; } QString KSelectAction::currentText() const { if ( currentItem() < 0 ) return QString::null; return d->m_list[ currentItem() ]; } int KSelectAction::currentItem() const { return d->m_current; } void KSelectAction::updateCurrentItem( int id ) { if ( d->m_current < 0 ) return; QWidget* w = container( id ); if ( w->inherits( "KToolBar" ) ) { QWidget* r = static_cast<KToolBar*>( w )->getWidget( itemId( id ) ); if ( r->inherits( "QComboBox" ) ) { QComboBox *b = static_cast<QComboBox*>( r ); b->setCurrentItem( d->m_current ); } } } int KSelectAction::comboWidth() const { return d->m_comboWidth; } void KSelectAction::updateComboWidth( int id ) { QWidget* w = container( id ); if ( w->inherits( "KToolBar" ) ) { QWidget* r = static_cast<KToolBar*>( w )->getWidget( itemId( id ) ); if ( r->inherits( "QComboBox" ) ) { QComboBox *cb = static_cast<QComboBox*>( r ); cb->setMinimumWidth( d->m_comboWidth ); cb->setMaximumWidth( d->m_comboWidth ); } } } void KSelectAction::updateItems( int id ) { kdDebug(129) << "KAction::updateItems( " << id << ", lst )" << endl; // remove -- ellis QWidget* w = container( id ); if ( w->inherits( "KToolBar" ) ) { QWidget* r = static_cast<KToolBar*>( w )->getWidget( itemId( id ) ); if ( r->inherits( "QComboBox" ) ) { QComboBox *cb = static_cast<QComboBox*>( r ); cb->clear(); QStringList lst = comboItems(); QStringList::ConstIterator it = lst.begin(); for( ; it != lst.end(); ++it ) cb->insertItem( *it ); // Ok, this currently doesn't work due to a bug in QComboBox // (the sizehint is cached for ever and never recalculated) // Bug reported (against Qt 2.3.1). cb->setMinimumWidth( cb->sizeHint().width() ); } } } int KSelectAction::plug( QWidget *widget, int index ) { //US if (kapp && !kapp->authorizeKAction(name())) //US return -1; kdDebug(129) << "KAction::plug( " << widget << ", " << index << " )" << endl; // remove -- ellis - if ( widget->inherits("QPopupMenu") ) + if ( widget->inherits("Q3PopupMenu") ) { // Create the PopupMenu and store it in m_menu (void)popupMenu(); - QPopupMenu* menu = static_cast<QPopupMenu*>( widget ); + Q3PopupMenu* menu = static_cast<Q3PopupMenu*>( widget ); int id; if ( hasIconSet() ) id = menu->insertItem( iconSet(), text(), d->m_menu, -1, index ); else id = menu->insertItem( text(), d->m_menu, -1, index ); if ( !isEnabled() ) menu->setItemEnabled( id, false ); QString wth = whatsThis(); if ( !wth.isEmpty() ) menu->setWhatsThis( id, wth ); addContainer( menu, id ); connect( menu, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); return containerCount() - 1; } else if ( widget->inherits("KToolBar") ) { KToolBar* bar = static_cast<KToolBar*>( widget ); int id_ = KAction::getToolButtonID(); bar->insertCombo( comboItems(), id_, isEditable(), SIGNAL( activated( const QString & ) ), this, SLOT( slotActivated( const QString & ) ), isEnabled(), toolTip(), -1, index ); KComboBox *cb = bar->getCombo( id_ ); if ( cb ) { cb->setMaximumHeight( 34 ); - if (!isEditable()) cb->setFocusPolicy(QWidget::NoFocus); + if (!isEditable()) cb->setFocusPolicy(Qt::NoFocus); cb->setMinimumWidth( cb->sizeHint().width() ); if ( d->m_comboWidth > 0 ) { cb->setMinimumWidth( d->m_comboWidth ); cb->setMaximumWidth( d->m_comboWidth ); } cb->setInsertionPolicy( QComboBox::NoInsertion ); //US QWhatsThis::add( cb, whatsThis() ); } addContainer( bar, id_ ); connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); updateCurrentItem( containerCount() - 1 ); return containerCount() - 1; } kdWarning() << "Can not plug KAction in " << widget->className() << endl; return -1; } QStringList KSelectAction::comboItems() const { //qDebug("KSelectAction::comboItems has to be fixed"); if( d->m_menuAccelsEnabled ) { QStringList lst; QStringList::ConstIterator it = d->m_list.begin(); for( ; it != d->m_list.end(); ++it ) { QString item = *it; int i = item.find( '&' ); if ( i > -1 ) item = item.remove( i, 1 ); lst.append( item ); } return lst; } else { return d->m_list; } } void KSelectAction::clear() { if ( d->m_menu ) d->m_menu->clear(); int len = containerCount(); for( int i = 0; i < len; ++i ) updateClear( i ); } void KSelectAction::updateClear( int id ) { QWidget* w = container( id ); if ( w->inherits( "KToolBar" ) ) { QWidget* r = static_cast<KToolBar*>( w )->getWidget( itemId( id ) ); if ( r->inherits( "QComboBox" ) ) { QComboBox *b = static_cast<QComboBox*>( r ); b->clear(); } } } void KSelectAction::slotActivated( int id ) { if ( d->m_current == id ) return; setCurrentItem( id ); // Delay this. Especially useful when the slot connected to activated() will re-create // the menu, e.g. in the recent files action. This prevents a crash. QTimer::singleShot( 0, this, SLOT( slotActivated() ) ); } void KSelectAction::slotActivated( const QString &text ) { if ( isEditable() ) { QStringList lst = items(); if(lst.contains(text)==0) { lst.append( text ); setItems( lst ); } } int i = items().findIndex( text ); if ( i > -1 ) setCurrentItem( i ); else setCurrentItem( comboItems().findIndex( text ) ); // Delay this. Especially useful when the slot connected to activated() will re-create // the menu, e.g. in the recent files action. This prevents a crash. QTimer::singleShot( 0, this, SLOT( slotActivated() ) ); } void KSelectAction::slotActivated() { KAction::slotActivated(); kdDebug(129) << "KSelectAction::slotActivated currentItem=" << currentItem() << " currentText=" << currentText() << endl; emit activated( currentItem() ); emit activated( currentText() ); } void KSelectAction::setEditable( bool edit ) { d->m_edit = edit; } bool KSelectAction::isEditable() const { return d->m_edit; } void KSelectAction::setRemoveAmpersandsInCombo( bool b ) { setMenuAccelsEnabled( b ); } bool KSelectAction::removeAmpersandsInCombo() const { return menuAccelsEnabled( ); } void KSelectAction::setMenuAccelsEnabled( bool b ) { d->m_menuAccelsEnabled = b; } bool KSelectAction::menuAccelsEnabled() const { return d->m_menuAccelsEnabled; } class KListAction::KListActionPrivate { public: KListActionPrivate() { m_current = 0; } int m_current; }; KListAction::KListAction( const QString& text, const KShortcut& cut, QObject* parent, const char* name ) : KSelectAction( text, cut, parent, name ) { d = new KListActionPrivate; } KListAction::KListAction( const QString& text, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KSelectAction( text, cut, parent, name ) { d = new KListActionPrivate; if ( receiver ) connect( this, SIGNAL( activated( int ) ), receiver, slot ); } -KListAction::KListAction( const QString& text, const QIconSet& pix, +KListAction::KListAction( const QString& text, const QIcon& pix, const KShortcut& cut, QObject* parent, const char* name ) : KSelectAction( text, pix, cut, parent, name ) { d = new KListActionPrivate; } KListAction::KListAction( const QString& text, const QString& pix, const KShortcut& cut, QObject* parent, const char* name ) : KSelectAction( text, pix, cut, parent, name ) { d = new KListActionPrivate; } -KListAction::KListAction( const QString& text, const QIconSet& pix, +KListAction::KListAction( const QString& text, const QIcon& pix, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KSelectAction( text, pix, cut, parent, name ) { d = new KListActionPrivate; if ( receiver ) connect( this, SIGNAL( activated( int ) ), receiver, slot ); } KListAction::KListAction( const QString& text, const QString& pix, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KSelectAction( text, pix, cut, parent, name ) { d = new KListActionPrivate; if ( receiver ) connect( this, SIGNAL( activated( int ) ), receiver, slot ); } KListAction::KListAction( QObject* parent, const char* name ) : KSelectAction( parent, name ) { d = new KListActionPrivate; } KListAction::~KListAction() { delete d; d = 0; } void KListAction::setCurrentItem( int index ) { KSelectAction::setCurrentItem( index ); d->m_current = index; // emit KAction::activated(); // emit activated( currentItem() ); // emit activated( currentText() ); } QString KListAction::currentText() const { if ( currentItem() < 0 ) return QString::null; return items()[ currentItem() ]; } int KListAction::currentItem() const { return d->m_current; } class KRecentFilesAction::KRecentFilesActionPrivate { public: KRecentFilesActionPrivate() { m_maxItems = 0; } uint m_maxItems; }; KRecentFilesAction::KRecentFilesAction( const QString& text, const KShortcut& cut, QObject* parent, const char* name, uint maxItems ) : KListAction( text, cut, parent, name) { d = new KRecentFilesActionPrivate; d->m_maxItems = maxItems; init(); } KRecentFilesAction::KRecentFilesAction( const QString& text, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name, uint maxItems ) : KListAction( text, cut, parent, name) { d = new KRecentFilesActionPrivate; d->m_maxItems = maxItems; init(); if ( receiver ) connect( this, SIGNAL(urlSelected(const KURL&)), receiver, slot ); } KRecentFilesAction::KRecentFilesAction( const QString& text, - const QIconSet& pix, + const QIcon& pix, const KShortcut& cut, QObject* parent, const char* name, uint maxItems ) : KListAction( text, pix, cut, parent, name) { d = new KRecentFilesActionPrivate; d->m_maxItems = maxItems; init(); } KRecentFilesAction::KRecentFilesAction( const QString& text, const QString& pix, const KShortcut& cut, QObject* parent, const char* name, uint maxItems ) : KListAction( text, pix, cut, parent, name) { d = new KRecentFilesActionPrivate; d->m_maxItems = maxItems; init(); } KRecentFilesAction::KRecentFilesAction( const QString& text, - const QIconSet& pix, + const QIcon& pix, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name, uint maxItems ) : KListAction( text, pix, cut, parent, name) { d = new KRecentFilesActionPrivate; d->m_maxItems = maxItems; init(); if ( receiver ) connect( this, SIGNAL(urlSelected(const KURL&)), receiver, slot ); } KRecentFilesAction::KRecentFilesAction( const QString& text, const QString& pix, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name, uint maxItems ) : KListAction( text, pix, cut, parent, name) { d = new KRecentFilesActionPrivate; d->m_maxItems = maxItems; init(); if ( receiver ) connect( this, SIGNAL(urlSelected(const KURL&)), receiver, slot ); } KRecentFilesAction::KRecentFilesAction( QObject* parent, const char* name, uint maxItems ) : KListAction( parent, name ) { d = new KRecentFilesActionPrivate; d->m_maxItems = maxItems; init(); } void KRecentFilesAction::init() { connect( this, SIGNAL( activated( const QString& ) ), this, SLOT( itemSelected( const QString& ) ) ); setMenuAccelsEnabled( false ); } KRecentFilesAction::~KRecentFilesAction() { delete d; d = 0; } uint KRecentFilesAction::maxItems() const { return d->m_maxItems; } void KRecentFilesAction::setMaxItems( uint maxItems ) { QStringList lst = items(); uint oldCount = lst.count(); // set new maxItems d->m_maxItems = maxItems; // remove all items that are too much while( lst.count() > maxItems ) { // remove last item lst.remove( lst.last() ); } // set new list if changed if( lst.count() != oldCount ) setItems( lst ); } void KRecentFilesAction::addURL( const KURL& url ) { QString file = url.prettyURL(); QStringList lst = items(); // remove file if already in list lst.remove( file ); // remove las item if already maxitems in list if( lst.count() == d->m_maxItems ) { // remove last item lst.remove( lst.last() ); } // add file to list lst.prepend( file ); setItems( lst ); } void KRecentFilesAction::removeURL( const KURL& url ) { QStringList lst = items(); QString file = url.prettyURL(); // remove url if( lst.count() > 0 ) { lst.remove( file ); setItems( lst ); } } void KRecentFilesAction::clearURLList() { clear(); } void KRecentFilesAction::loadEntries( KConfig* config, QString groupname) { QString key; QString value; QString oldGroup; QStringList lst; oldGroup = config->group(); if (groupname.isEmpty()) groupname = "RecentFiles"; config->setGroup( groupname ); // read file list for( unsigned int i = 1 ; i <= d->m_maxItems ; i++ ) { key = QString( "File%1" ).arg( i ); value = config->readEntry( key, QString::null ); if (!value.isNull()) lst.append( value ); } // set file setItems( lst ); config->setGroup( oldGroup ); } void KRecentFilesAction::saveEntries( KConfig* config, QString groupname ) { QString key; QString value; QStringList lst = items(); if (groupname.isEmpty()) groupname = "RecentFiles"; config->deleteGroup( groupname); KConfigGroupSaver( config, groupname ); // write file list for( unsigned int i = 1 ; i <= lst.count() ; i++ ) { key = QString( "File%1" ).arg( i ); value = lst[ i - 1 ]; config->writeEntry( key, value ); } } void KRecentFilesAction::itemSelected( const QString& text ) { emit urlSelected( KURL( text ) ); } class KFontAction::KFontActionPrivate { public: KFontActionPrivate() { } QStringList m_fonts; }; KFontAction::KFontAction( const QString& text, const KShortcut& cut, QObject* parent, const char* name ) : KSelectAction( text, cut, parent, name ) { d = new KFontActionPrivate; get_fonts( d->m_fonts ); KSelectAction::setItems( d->m_fonts ); setEditable( true ); } KFontAction::KFontAction( const QString& text, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KSelectAction( text, cut, receiver, slot, parent, name ) { d = new KFontActionPrivate; get_fonts( d->m_fonts ); KSelectAction::setItems( d->m_fonts ); setEditable( true ); } -KFontAction::KFontAction( const QString& text, const QIconSet& pix, +KFontAction::KFontAction( const QString& text, const QIcon& pix, const KShortcut& cut, QObject* parent, const char* name ) : KSelectAction( text, pix, cut, parent, name ) { d = new KFontActionPrivate; get_fonts( d->m_fonts ); KSelectAction::setItems( d->m_fonts ); setEditable( true ); } KFontAction::KFontAction( const QString& text, const QString& pix, const KShortcut& cut, QObject* parent, const char* name ) : KSelectAction( text, pix, cut, parent, name ) { d = new KFontActionPrivate; get_fonts( d->m_fonts ); KSelectAction::setItems( d->m_fonts ); setEditable( true ); } -KFontAction::KFontAction( const QString& text, const QIconSet& pix, +KFontAction::KFontAction( const QString& text, const QIcon& pix, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KSelectAction( text, pix, cut, receiver, slot, parent, name ) { d = new KFontActionPrivate; get_fonts( d->m_fonts ); KSelectAction::setItems( d->m_fonts ); setEditable( true ); } KFontAction::KFontAction( const QString& text, const QString& pix, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KSelectAction( text, pix, cut, receiver, slot, parent, name ) { d = new KFontActionPrivate; get_fonts( d->m_fonts ); KSelectAction::setItems( d->m_fonts ); setEditable( true ); } KFontAction::KFontAction( QObject* parent, const char* name ) : KSelectAction( parent, name ) { d = new KFontActionPrivate; get_fonts( d->m_fonts ); KSelectAction::setItems( d->m_fonts ); setEditable( true ); } KFontAction::~KFontAction() { delete d; d = 0; } /* * Maintenance note: Keep in sync with KFontCombo::setCurrentFont() */ void KFontAction::setFont( const QString &family ) { QString lowerName = family.lower(); int i = 0; for ( QStringList::Iterator it = d->m_fonts.begin(); it != d->m_fonts.end(); ++it, ++i ) { if ((*it).lower() == lowerName) { setCurrentItem(i); return; } } i = lowerName.find(" ["); if (i>-1) { lowerName = lowerName.left(i); i = 0; for ( QStringList::Iterator it = d->m_fonts.begin(); it != d->m_fonts.end(); ++it, ++i ) { if ((*it).lower() == lowerName) { setCurrentItem(i); return; } } } lowerName += " ["; i = 0; for ( QStringList::Iterator it = d->m_fonts.begin(); it != d->m_fonts.end(); ++it, ++i ) { if ((*it).lower().startsWith(lowerName)) { setCurrentItem(i); return; } } kdDebug(129) << "Font not found " << family.lower() << endl; } int KFontAction::plug( QWidget *w, int index ) { qDebug("KFontAction::plug ha to be fixed"); /*US if (kapp && !kapp->authorizeKAction(name())) return -1; if ( w->inherits("KToolBar") ) { KToolBar* bar = static_cast<KToolBar*>( w ); int id_ = KAction::getToolButtonID(); KFontCombo *cb = new KFontCombo( items(), bar ); connect( cb, SIGNAL( activated( const QString & ) ), SLOT( slotActivated( const QString & ) ) ); cb->setEnabled( isEnabled() ); bar->insertWidget( id_, comboWidth(), cb, index ); cb->setMinimumWidth( cb->sizeHint().width() ); addContainer( bar, id_ ); connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); updateCurrentItem( containerCount() - 1 ); return containerCount() - 1; } else return KSelectAction::plug( w, index ); */ return 3; } class KFontSizeAction::KFontSizeActionPrivate { public: KFontSizeActionPrivate() { } }; KFontSizeAction::KFontSizeAction( const QString& text, const KShortcut& cut, QObject* parent, const char* name ) : KSelectAction( text, cut, parent, name ) { init(); } KFontSizeAction::KFontSizeAction( const QString& text, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KSelectAction( text, cut, receiver, slot, parent, name ) { init(); } -KFontSizeAction::KFontSizeAction( const QString& text, const QIconSet& pix, +KFontSizeAction::KFontSizeAction( const QString& text, const QIcon& pix, const KShortcut& cut, QObject* parent, const char* name ) : KSelectAction( text, pix, cut, parent, name ) { init(); } KFontSizeAction::KFontSizeAction( const QString& text, const QString& pix, const KShortcut& cut, QObject* parent, const char* name ) : KSelectAction( text, pix, cut, parent, name ) { init(); } -KFontSizeAction::KFontSizeAction( const QString& text, const QIconSet& pix, +KFontSizeAction::KFontSizeAction( const QString& text, const QIcon& pix, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KSelectAction( text, pix, cut, receiver, slot, parent, name ) { init(); } KFontSizeAction::KFontSizeAction( const QString& text, const QString& pix, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KSelectAction( text, pix, cut, receiver, slot, parent, name ) { init(); } KFontSizeAction::KFontSizeAction( QObject* parent, const char* name ) : KSelectAction( parent, name ) { init(); } KFontSizeAction::~KFontSizeAction() { delete d; d = 0; } void KFontSizeAction::init() { d = new KFontSizeActionPrivate; setEditable( true ); - QValueList<int> sizes = get_standard_font_sizes(); + Q3ValueList<int> sizes = get_standard_font_sizes(); QStringList lst; - for ( QValueList<int>::Iterator it = sizes.begin(); it != sizes.end(); ++it ) + for ( Q3ValueList<int>::Iterator it = sizes.begin(); it != sizes.end(); ++it ) lst.append( QString::number( *it ) ); setItems( lst ); } void KFontSizeAction::setFontSize( int size ) { if ( size == fontSize() ) { setCurrentItem( items().findIndex( QString::number( size ) ) ); return; } if ( size < 1 ) { kdWarning() << "KFontSizeAction: Size " << size << " is out of range" << endl; return; } int index = items().findIndex( QString::number( size ) ); if ( index == -1 ) { // Insert at the correct position in the list (to keep sorting) - QValueList<int> lst; + Q3ValueList<int> lst; // Convert to list of ints QStringList itemsList = items(); for (QStringList::Iterator it = itemsList.begin() ; it != itemsList.end() ; ++it) lst.append( (*it).toInt() ); // New size lst.append( size ); // Sort the list qDebug("KFontSizeAction::setFontSize heapsort not found."); //US has to be fixed //US qHeapSort( lst ); // Convert back to string list QStringList strLst; - for (QValueList<int>::Iterator it = lst.begin() ; it != lst.end() ; ++it) + for (Q3ValueList<int>::Iterator it = lst.begin() ; it != lst.end() ; ++it) strLst.append( QString::number(*it) ); KSelectAction::setItems( strLst ); // Find new current item index = lst.findIndex( size ); setCurrentItem( index ); } else setCurrentItem( index ); //emit KAction::activated(); //emit activated( index ); //emit activated( QString::number( size ) ); //emit fontSizeChanged( size ); } int KFontSizeAction::fontSize() const { return currentText().toInt(); } void KFontSizeAction::slotActivated( int index ) { KSelectAction::slotActivated( index ); emit fontSizeChanged( items()[ index ].toInt() ); } void KFontSizeAction::slotActivated( const QString& size ) { setFontSize( size.toInt() ); // insert sorted first KSelectAction::slotActivated( size ); emit fontSizeChanged( size.toInt() ); } class KActionMenu::KActionMenuPrivate { public: KActionMenuPrivate() { //US m_popup = new KPopupMenu(0L,"KActionMenu::KActionMenuPrivate"); - m_popup = new QPopupMenu(0L,"KActionMenu::KActionMenuPrivate"); + m_popup = new Q3PopupMenu(0L,"KActionMenu::KActionMenuPrivate"); m_delayed = true; m_stickyMenu = true; } ~KActionMenuPrivate() { delete m_popup; m_popup = 0; } //US KPopupMenu *m_popup; - QPopupMenu *m_popup; + Q3PopupMenu *m_popup; bool m_delayed; bool m_stickyMenu; }; KActionMenu::KActionMenu( QObject* parent, const char* name ) : KAction( parent, name ) { d = new KActionMenuPrivate; setShortcutConfigurable( false ); } KActionMenu::KActionMenu( const QString& text, QObject* parent, const char* name ) : KAction( text, 0, parent, name ) { d = new KActionMenuPrivate; setShortcutConfigurable( false ); } -KActionMenu::KActionMenu( const QString& text, const QIconSet& icon, +KActionMenu::KActionMenu( const QString& text, const QIcon& icon, QObject* parent, const char* name ) : KAction( text, icon, 0, parent, name ) { d = new KActionMenuPrivate; setShortcutConfigurable( false ); } KActionMenu::KActionMenu( const QString& text, const QString& icon, QObject* parent, const char* name ) : KAction( text, icon, 0, parent, name ) { d = new KActionMenuPrivate; setShortcutConfigurable( false ); } KActionMenu::~KActionMenu() { unplugAll(); kdDebug(129) << "KActionMenu::~KActionMenu()" << endl; // ellis delete d; d = 0; } void KActionMenu::popup( const QPoint& global ) { popupMenu()->popup( global ); } //US KPopupMenu* KActionMenu::popupMenu() const -QPopupMenu* KActionMenu::popupMenu() const +Q3PopupMenu* KActionMenu::popupMenu() const { return d->m_popup; } void KActionMenu::insert( KAction* cmd, int index ) { if ( cmd ) cmd->plug( d->m_popup, index ); } void KActionMenu::remove( KAction* cmd ) { if ( cmd ) cmd->unplug( d->m_popup ); } bool KActionMenu::delayed() const { return d->m_delayed; } void KActionMenu::setDelayed(bool _delayed) { d->m_delayed = _delayed; } bool KActionMenu::stickyMenu() const { return d->m_stickyMenu; } void KActionMenu::setStickyMenu(bool sticky) { d->m_stickyMenu = sticky; } int KActionMenu::plug( QWidget* widget, int index ) { /*US if (kapp && !kapp->authorizeKAction(name())) return -1; */ kdDebug(129) << "KAction::plug( " << widget << ", " << index << " )" << endl; // remove -- ellis - if ( widget->inherits("QPopupMenu") ) + if ( widget->inherits("Q3PopupMenu") ) { - QPopupMenu* menu = static_cast<QPopupMenu*>( widget ); + Q3PopupMenu* menu = static_cast<Q3PopupMenu*>( widget ); int id; if ( hasIconSet() ) id = menu->insertItem( iconSet(), text(), d->m_popup, -1, index ); else id = menu->insertItem( text(), d->m_popup, -1, index ); if ( !isEnabled() ) menu->setItemEnabled( id, false ); addContainer( menu, id ); connect( menu, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); if ( m_parentCollection ) m_parentCollection->connectHighlight( menu, this ); return containerCount() - 1; } else if ( widget->inherits( "KToolBar" ) ) { KToolBar *bar = static_cast<KToolBar *>( widget ); int id_ = KAction::getToolButtonID(); if ( icon().isEmpty() && !iconSet().isNull() ) bar->insertButton( iconSet().pixmap(), id_, SIGNAL( clicked() ), this, SLOT( slotActivated() ), isEnabled(), plainText(), index ); else { /*US KInstance *instance; if ( m_parentCollection ) instance = m_parentCollection->instance(); else instance = KGlobal::instance(); */ bar->insertButton( icon(), id_, SIGNAL( clicked() ), this, SLOT( slotActivated() ), isEnabled(), plainText(), index/*US, instance */); } addContainer( bar, id_ ); /*US if (!whatsThis().isEmpty()) QWhatsThis::add( bar->getButton(id_), whatsThis() ); */ connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); if (delayed()) { bar->setDelayedPopup( id_, popupMenu(), stickyMenu() ); } else { bar->getButton(id_)->setPopup(popupMenu(), stickyMenu() ); } if ( m_parentCollection ) m_parentCollection->connectHighlight( bar, this ); return containerCount() - 1; } else if ( widget->inherits( "QMenuBar" ) ) { QMenuBar *bar = static_cast<QMenuBar *>( widget ); int id; id = bar->insertItem( text(), popupMenu(), -1, index ); if ( !isEnabled() ) bar->setItemEnabled( id, false ); addContainer( bar, id ); connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); return containerCount() - 1; } return -1; } //////// KToolBarPopupAction::KToolBarPopupAction( const QString& text, const QString& icon, const KShortcut& cut, QObject* parent, const char* name ) : KAction( text, icon, cut, parent, name ) { m_popup = 0; m_delayed = true; m_stickyMenu = true; } KToolBarPopupAction::KToolBarPopupAction( const QString& text, const QString& icon, const KShortcut& cut, const QObject* receiver, const char* slot, QObject* parent, const char* name ) : KAction( text, icon, cut, receiver, slot, parent, name ) { m_popup = 0; m_delayed = true; m_stickyMenu = true; } KToolBarPopupAction::KToolBarPopupAction( const KGuiItem& item, const KShortcut& cut, const QObject* receiver, const char* slot, KActionCollection* parent, const char* name ) : KAction( item, cut, receiver, slot, parent, name ) { m_popup = 0; m_delayed = true; m_stickyMenu = true; } KToolBarPopupAction::~KToolBarPopupAction() { if ( m_popup ) delete m_popup; } bool KToolBarPopupAction::delayed() const { return m_delayed; } void KToolBarPopupAction::setDelayed(bool delayed) { m_delayed = delayed; } bool KToolBarPopupAction::stickyMenu() const { return m_stickyMenu; } void KToolBarPopupAction::setStickyMenu(bool sticky) { m_stickyMenu = sticky; } int KToolBarPopupAction::plug( QWidget *widget, int index ) { /*US if (kapp && !kapp->authorizeKAction(name())) return -1; */ // This is very related to KActionMenu::plug. // In fact this class could be an interesting base class for KActionMenu if ( widget->inherits( "KToolBar" ) ) { KToolBar *bar = (KToolBar *)widget; int id_ = KAction::getToolButtonID(); /*US KInstance * instance; if ( m_parentCollection ) instance = m_parentCollection->instance(); else instance = KGlobal::instance(); */ bar->insertButton( icon(), id_, SIGNAL( clicked() ), this, SLOT( slotActivated() ), isEnabled(), plainText(), index/*US, instance*/ ); addContainer( bar, id_ ); connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); if (delayed()) { bar->setDelayedPopup( id_, popupMenu(), stickyMenu() ); } else { bar->getButton(id_)->setPopup(popupMenu(), stickyMenu()); } /*US if ( !whatsThis().isEmpty() ) QWhatsThis::add( bar->getButton( id_ ), whatsThisWithIcon() ); */ return containerCount() - 1; } return KAction::plug( widget, index ); } //US KPopupMenu *KToolBarPopupAction::popupMenu() const -QPopupMenu *KToolBarPopupAction::popupMenu() const +Q3PopupMenu *KToolBarPopupAction::popupMenu() const { if ( !m_popup ) { KToolBarPopupAction *that = const_cast<KToolBarPopupAction*>(this); //US that->m_popup = new KPopupMenu; - that->m_popup = new QPopupMenu; + that->m_popup = new Q3PopupMenu; } return m_popup; } //////// KToggleToolBarAction::KToggleToolBarAction( const char* toolBarName, const QString& text, KActionCollection* parent, const char* name ) : KToggleAction( text, KShortcut(), parent, name ) , m_toolBarName( toolBarName ) , m_toolBar( 0L ) { } KToggleToolBarAction::KToggleToolBarAction( KToolBar *toolBar, const QString &text, KActionCollection *parent, const char *name ) : KToggleAction( text, KShortcut(), parent, name ) , m_toolBarName( 0 ) , m_toolBar( toolBar ) { } KToggleToolBarAction::~KToggleToolBarAction() { } int KToggleToolBarAction::plug( QWidget* w, int index ) { qDebug("KToggleToolBarAction::plug has to be fixed"); /*US if (kapp && !kapp->authorizeKAction(name())) return -1; if ( !m_toolBar ) { // Note: topLevelWidget() stops too early, we can't use it. QWidget * tl = w; QWidget * n; while ( !tl->isDialog() && ( n = tl->parentWidget() ) ) // lookup parent and store tl = n; //US KMainWindow * mw = dynamic_cast<KMainWindow *>(tl); // try to see if it's a kmainwindow QMainWindow * mw = 0; if ( tl->inherits("QMainWindow") ) mw = (QMainWindow *)(tl); // try to see if it's a kmainwindow if ( mw ) m_toolBar = mw->toolBar( m_toolBarName ); } if( m_toolBar ) { setChecked( m_toolBar->isVisible() ); connect( m_toolBar, SIGNAL(visibilityChanged(bool)), this, SLOT(setChecked(bool)) ); // Also emit toggled when the toolbar's visibility changes (see comment in header) connect( m_toolBar, SIGNAL(visibilityChanged(bool)), this, SIGNAL(toggled(bool)) ); } else { setEnabled( false ); } */ return KToggleAction::plug( w, index ); } void KToggleToolBarAction::setChecked( bool c ) { if( m_toolBar && c != m_toolBar->isVisible() ) { if( c ) { m_toolBar->show(); } else { m_toolBar->hide(); } qDebug("KToggleToolBarAction::setChecked has to be fixed"); /*US QMainWindow* mw = m_toolBar->mainWindow(); if ( mw && mw->inherits( "KMainWindow" ) ) static_cast<KMainWindow *>( mw )->setSettingsDirty(); */ } KToggleAction::setChecked( c ); } //////// KWidgetAction::KWidgetAction( QWidget* widget, const QString& text, const KShortcut& cut, const QObject* receiver, const char* slot, KActionCollection* parent, const char* name ) : KAction( text, cut, receiver, slot, parent, name ) , m_widget( widget ) , m_autoSized( false ) { } KWidgetAction::~KWidgetAction() { } void KWidgetAction::setAutoSized( bool autoSized ) { if( m_autoSized == autoSized ) return; m_autoSized = autoSized; if( !m_widget || !isPlugged() ) return; KToolBar* toolBar = (KToolBar*)m_widget->parent(); int i = findContainer( toolBar ); if ( i == -1 ) return; int id = itemId( i ); toolBar->setItemAutoSized( id, m_autoSized ); } int KWidgetAction::plug( QWidget* w, int index ) { /*US if (kapp && !kapp->authorizeKAction(name())) return -1; */ if ( !w->inherits( "KToolBar" ) ) { kdError() << "KWidgetAction::plug: KWidgetAction must be plugged into KToolBar." << endl; return -1; } if ( !m_widget ) { kdError() << "KWidgetAction::plug: Widget was deleted or null!" << endl; return -1; } KToolBar* toolBar = static_cast<KToolBar*>( w ); int id = KAction::getToolButtonID(); m_widget->reparent( toolBar, QPoint() ); toolBar->insertWidget( id, 0, m_widget, index ); toolBar->setItemAutoSized( id, m_autoSized ); //US QWhatsThis::add( m_widget, whatsThis() ); addContainer( toolBar, id ); connect( toolBar, SIGNAL( toolbarDestroyed() ), this, SLOT( slotToolbarDestroyed() ) ); connect( toolBar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); return containerCount() - 1; } void KWidgetAction::unplug( QWidget *w ) { if( !m_widget || !isPlugged() ) return; KToolBar* toolBar = (KToolBar*)m_widget->parent(); if ( toolBar == w ) { disconnect( toolBar, SIGNAL( toolbarDestroyed() ), this, SLOT( slotToolbarDestroyed() ) ); m_widget->reparent( 0L, QPoint(), false ); // false = showit } KAction::unplug( w ); } void KWidgetAction::slotToolbarDestroyed() { //Q_ASSERT( m_widget ); // When exiting the app the widget could be destroyed before the toolbar. - ASSERT( isPlugged() ); + Q_ASSERT( isPlugged() ); if( !m_widget || !isPlugged() ) return; // Don't let a toolbar being destroyed, delete my widget. m_widget->reparent( 0L, QPoint(), false /*showIt*/ ); } //////// KActionSeparator::KActionSeparator( QObject *parent, const char *name ) : KAction( parent, name ) { } KActionSeparator::~KActionSeparator() { } int KActionSeparator::plug( QWidget *widget, int index ) { - if ( widget->inherits("QPopupMenu") ) + if ( widget->inherits("Q3PopupMenu") ) { - QPopupMenu* menu = static_cast<QPopupMenu*>( widget ); + Q3PopupMenu* menu = static_cast<Q3PopupMenu*>( widget ); int id = menu->insertSeparator( index ); addContainer( menu, id ); connect( menu, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); return containerCount() - 1; } else if ( widget->inherits( "QMenuBar" ) ) { QMenuBar *menuBar = static_cast<QMenuBar *>( widget ); int id = menuBar->insertSeparator( index ); addContainer( menuBar, id ); connect( menuBar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); return containerCount() - 1; } else if ( widget->inherits( "KToolBar" ) ) { KToolBar *toolBar = static_cast<KToolBar *>( widget ); int id = toolBar->insertSeparator( index ); // toolBar->addSeparator(); addContainer( toolBar, id ); connect( toolBar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); return containerCount() - 1; } return -1; } void KToggleAction::virtual_hook( int id, void* data ) { KAction::virtual_hook( id, data ); } void KRadioAction::virtual_hook( int id, void* data ) { KToggleAction::virtual_hook( id, data ); } void KSelectAction::virtual_hook( int id, void* data ) { KAction::virtual_hook( id, data ); } void KListAction::virtual_hook( int id, void* data ) { KSelectAction::virtual_hook( id, data ); } void KRecentFilesAction::virtual_hook( int id, void* data ) { KListAction::virtual_hook( id, data ); } void KFontAction::virtual_hook( int id, void* data ) { KSelectAction::virtual_hook( id, data ); } void KFontSizeAction::virtual_hook( int id, void* data ) { KSelectAction::virtual_hook( id, data ); } void KActionMenu::virtual_hook( int id, void* data ) { KAction::virtual_hook( id, data ); } void KToolBarPopupAction::virtual_hook( int id, void* data ) { KAction::virtual_hook( id, data ); } void KToggleToolBarAction::virtual_hook( int id, void* data ) { KToggleAction::virtual_hook( id, data ); } void KWidgetAction::virtual_hook( int id, void* data ) { KAction::virtual_hook( id, data ); } void KActionSeparator::virtual_hook( int id, void* data ) { KAction::virtual_hook( id, data ); } /* vim: et sw=2 ts=2 */ /*US #include "kactionclasses.moc" */ |