You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kxmleditor/part/actions.cpp

230 lines
6.0 KiB

/***************************************************************************
actions.cpp - description
-------------------
begin : Tue Jul 10 2001
copyright : (C) 2001, 2002, 2003 by The KXMLEditor Team
email : lvanek@users.sourceforge.net
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include "actions.h"
// include files for QT
#include <qwhatsthis.h>
#include <qdragobject.h>
#include <qcombobox.h>
#include <qapplication.h>
// include files for KDE
#include <ktoolbar.h>
#include <kiconloader.h>
#include <kmimetype.h>
#include <kdebug.h>
//-------------------------------------------------------------------
//
// KXmlEditorComboAction member functions
//
//-------------------------------------------------------------------
KXmlEditorComboAction::KXmlEditorComboAction(const QString& text,
int accel,
const QObject *receiver,
const char *member,
QObject* parent,
const char* name)
: KAction(text, accel, parent, name),
m_pCombo(0)
{
m_receiver = receiver;
m_member = member;
}
KXmlEditorComboAction::~KXmlEditorComboAction()
{
//delete m_pCombo; // L.V. this cause crash !!!
}
QComboBox* KXmlEditorComboAction::comboBox()
{
return m_pCombo;
}
int KXmlEditorComboAction::plug(QWidget *w, int index)
{
// if ( !w->inherits( "KToolBar" ) );
// return -1;
KToolBar *toolBar = (KToolBar *) w;
int id = KAction::getToolButtonID();
//kdDebug() << "KXmlEditorComboAction::plug id=" << id << endl;
m_pCombo = new QComboBox( toolBar, "Path Combo" );
m_pCombo->setEditable(true);
m_pCombo->setInsertionPolicy(QComboBox::NoInsertion);
toolBar->insertWidget( id, 70, m_pCombo, index );
connect( m_pCombo, SIGNAL(activated(const QString&)), m_receiver, m_member );
addContainer( toolBar, id );
connect(toolBar, SIGNAL(destroyed()), this, SLOT(slotDestroyed()));
toolBar->setItemAutoSized(id, true);
QWhatsThis::add( m_pCombo, whatsThis() );
return containerCount() - 1;
}
void KXmlEditorComboAction::unplug(QWidget *w)
{
// if ( !w->inherits( "KToolBar" ) )
// return;
KToolBar *toolBar = (KToolBar *)w;
int idx = findContainer( w );
//kdDebug() << "KXmlEditorComboAction::unplug idx=" << idx << " menuId=" << menuId(idx) << endl;
toolBar->removeItem( menuId( idx ) );
removeContainer( idx );
m_pCombo = 0;
}
void KXmlEditorComboAction::slotClear()
{
if ( containerCount() == 0 )
{
kdWarning() << "[KXmlEditorComboAction::slotClear] action not plugged" << endl;
return;
}
m_pCombo->clear();
}
void KXmlEditorComboAction::slotClearEdit()
{
if ( containerCount() == 0 )
{
kdWarning() << "[KXmlEditorComboAction::slotClearEdit] action not plugged" << endl;
return;
}
m_pCombo->clearEdit();
}
void KXmlEditorComboAction::slotFocusEdit()
{
if ( containerCount() == 0 )
{
kdWarning() << "[KXmlEditorComboAction::slotFocusEdit] action not plugged" << endl;
return;
}
m_pCombo->setFocus();
}
QString KXmlEditorComboAction::currentText() const
{
if ( containerCount() == 0 )
{
kdWarning() << "[KXmlEditorComboAction::currentText] action not plugged" << endl;
return QString::null;
}
return m_pCombo->currentText();
}
const QPixmap * KXmlEditorComboAction::currentPixmap() const
{
if ( containerCount() == 0 )
{
kdWarning() << "[KXmlEditorComboAction::currentPixmap] action not plugged" << endl;
return 0;
}
return m_pCombo->pixmap( m_pCombo->currentItem() );
}
void KXmlEditorComboAction::insertItem( const QPixmap & pixmap, const QString & text )
{
if ( containerCount() == 0 )
{
kdWarning() << "[KXmlEditorComboAction::insertItem] action not plugged" << endl;
return;
}
if ( text.isEmpty() )
kdWarning() << "[KXmlEditorComboAction::insertItem] empty string as parameter" << endl;
int nIndex = findItem(text);
if ( nIndex != -1 )
m_pCombo->removeItem(nIndex);
m_pCombo->insertItem( pixmap, text, 0 );
m_pCombo->setCurrentItem(0);
if ( m_pCombo->count() > 15 )
m_pCombo->removeItem(15);
}
void KXmlEditorComboAction::removeItem( const QString & text )
{
if ( containerCount() == 0 )
{
kdWarning() << "[KXmlEditorComboAction::removeItem] action not plugged" << endl;
return;
}
int nIndex = findItem(text);
if ( nIndex == -1 )
{
kdDebug() << "KXmlEditorComboAction::removeItem] item not found" << endl;
return;
}
m_pCombo->removeItem(nIndex);
}
int KXmlEditorComboAction::findItem( const QString & text )
{
if ( containerCount() == 0 )
{
kdWarning() << "[KXmlEditorComboAction::findItem] action not plugged" << endl;
return -1;
}
int nIndex = -1;
int i=0;
while ( ( i < m_pCombo->count() ) && ( nIndex == -1 ) )
{
if ( m_pCombo->text(i) == text )
nIndex = i;
i++;
}
return nIndex;
}
ToolbarLabel::ToolbarLabel( const QString& text )
: QLabel( text, 0L, "kde toolbar widget" ) // Use this name for it to be styled!
// , m_mw(mw)
{
setBackgroundMode( Qt::PaletteButton );
setAlignment( (QApplication::reverseLayout() ? Qt::AlignRight : Qt::AlignLeft) |
Qt::AlignVCenter | Qt::ShowPrefix );
adjustSize();
}