diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch) | |
tree | 5ac38a06f3dde268dc7927dc155896926aaf7012 /kdeui/kguiitem.cpp | |
download | tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip |
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/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kdeui/kguiitem.cpp')
-rw-r--r-- | kdeui/kguiitem.cpp | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/kdeui/kguiitem.cpp b/kdeui/kguiitem.cpp new file mode 100644 index 000000000..35093019e --- /dev/null +++ b/kdeui/kguiitem.cpp @@ -0,0 +1,229 @@ +/* This file is part of the KDE libraries + Copyright (C) 2001 Holger Freyther (freyher@yahoo.com) + based on ideas from Martijn and Simon + many thanks to Simon + + 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., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include <qregexp.h> +#include <qstring.h> +#include <qiconset.h> +#include <qpixmap.h> + +#include <assert.h> +#include <kiconloader.h> +#include <kdebug.h> + +#include "kguiitem.h" + +class KGuiItem::KGuiItemPrivate +{ +public: + KGuiItemPrivate() + { + m_enabled = true; + m_hasIcon = false; + } + + KGuiItemPrivate( const KGuiItemPrivate &rhs ) + { + ( *this ) = rhs; + } + + KGuiItemPrivate &operator=( const KGuiItemPrivate &rhs ) + { + m_text = rhs.m_text; + m_iconSet = rhs.m_iconSet; + m_iconName = rhs.m_iconName; + m_toolTip = rhs.m_toolTip; + m_whatsThis = rhs.m_whatsThis; + m_statusText = rhs.m_statusText; + m_enabled = rhs.m_enabled; + m_hasIcon = rhs.m_hasIcon; + + return *this; + } + + QString m_text; + QString m_toolTip; + QString m_whatsThis; + QString m_statusText; + QString m_iconName; + QIconSet m_iconSet; + bool m_hasIcon : 1; + bool m_enabled : 1; +}; + + +KGuiItem::KGuiItem() { + d = new KGuiItemPrivate; +} + +KGuiItem::KGuiItem( const QString &text, const QString &iconName, + const QString &toolTip, const QString &whatsThis ) +{ + d = new KGuiItemPrivate; + d->m_text = text; + d->m_toolTip = toolTip; + d->m_whatsThis = whatsThis; + setIconName( iconName ); +} + +KGuiItem::KGuiItem( const QString &text, const QIconSet &iconSet, + const QString &toolTip, const QString &whatsThis ) +{ + d = new KGuiItemPrivate; + d->m_text = text; + d->m_toolTip = toolTip; + d->m_whatsThis = whatsThis; + setIconSet( iconSet ); +} + +KGuiItem::KGuiItem( const KGuiItem &rhs ) + : d( 0 ) +{ + ( *this ) = rhs; +} + +KGuiItem &KGuiItem::operator=( const KGuiItem &rhs ) +{ + if ( d == rhs.d ) + return *this; + + assert( rhs.d ); + + delete d; + d = new KGuiItemPrivate( *rhs.d ); + + return *this; +} + +KGuiItem::~KGuiItem() +{ + delete d; +} + +QString KGuiItem::text() const +{ + return d->m_text; +} + + +QString KGuiItem::plainText() const +{ + const int len = d->m_text.length(); + + if (len == 0) + return d->m_text; + + //Can assume len >= 1 from now on. + QString stripped; + + int resultLength = 0; + stripped.setLength(len); + + const QChar* data = d->m_text.unicode(); + for ( int pos = 0; pos < len; ++pos ) + { + if ( data[ pos ] != '&' ) + stripped[ resultLength++ ] = data[ pos ]; + else if ( pos + 1 < len && data[ pos + 1 ] == '&' ) + stripped[ resultLength++ ] = data[ pos++ ]; + } + + stripped.truncate(resultLength); + + return stripped; +} + +QIconSet KGuiItem::iconSet( KIcon::Group group, int size, KInstance* instance ) const +{ + if( d->m_hasIcon ) + { + if( !d->m_iconName.isEmpty()) + { +// some caching here would(?) come handy + return instance->iconLoader()->loadIconSet( d->m_iconName, group, size, true, false ); + } + else + { + return d->m_iconSet; + } + } + else + return QIconSet(); +} + +QString KGuiItem::iconName() const +{ + return d->m_iconName; +} + +QString KGuiItem::toolTip() const +{ + return d->m_toolTip; +} + +QString KGuiItem::whatsThis() const +{ + return d->m_whatsThis; +} + +bool KGuiItem::isEnabled() const +{ + return d->m_enabled; +} + +bool KGuiItem::hasIcon() const +{ + return d->m_hasIcon; +} + +void KGuiItem::setText( const QString &text ) { + d->m_text=text; +} + +void KGuiItem::setIconSet( const QIconSet &iconset ) +{ + d->m_iconSet = iconset; + d->m_iconName = QString::null; + d->m_hasIcon = !iconset.isNull(); +} + +void KGuiItem::setIconName( const QString &iconName ) +{ + d->m_iconName = iconName; + d->m_iconSet = QIconSet(); + d->m_hasIcon = !iconName.isEmpty(); +} + +void KGuiItem::setToolTip( const QString &toolTip ) +{ + d->m_toolTip = toolTip; +} + +void KGuiItem::setWhatsThis( const QString &whatsThis ) +{ + d->m_whatsThis = whatsThis; +} + +void KGuiItem::setEnabled( bool enabled ) +{ + d->m_enabled = enabled; +} + +// vim: set et sw=4: + |