| # kdeui Library API Documentation
Overview | Class Hierarchy | Classes | Classes (annotated) | Members | Namespaces | Source Files

# kguiitem.cpp

    00001 /* This file is part of the KDE libraries
    00002     Copyright (C) 2001 Holger Freyther (freyher@yahoo.com)
    00003                   based on ideas from Martijn and Simon
    00004                   many thanks to Simon
    00005
    00006     This library is free software; you can redistribute it and/or
    00007     modify it under the terms of the GNU Library General Public
    00008     License version 2 as published by the Free Software Foundation.
    00009
    00010     This library is distributed in the hope that it will be useful,
    00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
    00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00013     Library General Public License for more details.
    00014
    00015     You should have received a copy of the GNU Library General Public License
    00016     along with this library; see the file COPYING.LIB.  If not, write to
    00017     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    00018     Boston, MA 02111-1307, USA.
    00019 */
    00020
    00021 #include <qregexp.h>
    00022 #include <qstring.h>
    00023 #include <qiconset.h>
    00024 #include <qpixmap.h>
    00025
    00026 #include <assert.h>
    00027 #include <kiconloader.h>
    00028 #include <kdebug.h>
    00029
    00030 #include "kguiitem.h"
    00031
    00032 class KGuiItem::KGuiItemPrivate
    00033 {
    00034 public:
    00035     KGuiItemPrivate()
    00036     {
    00037         m_enabled = true;
    00038         m_hasIcon = false;
    00039     }
    00040
    00041     KGuiItemPrivate( const KGuiItemPrivate &rhs )
    00042     {
    00043         ( *this ) = rhs;
    00044     }
    00045
    00046     KGuiItemPrivate &operator=( const KGuiItemPrivate &rhs )
    00047     {
    00048         m_text = rhs.m_text;
    00049         m_iconSet = rhs.m_iconSet;
    00050         m_iconName = rhs.m_iconName;
    00051         m_toolTip = rhs.m_toolTip;
    00052         m_whatsThis = rhs.m_whatsThis;
    00053         m_statusText = rhs.m_statusText;
    00054         m_enabled = rhs.m_enabled;
    00055         m_hasIcon = rhs.m_hasIcon;
    00056
    00057         return *this;
    00058     }
    00059
    00060     QString m_text;
    00061     QString m_toolTip;
    00062     QString m_whatsThis;
    00063     QString m_statusText;
    00064     QString m_iconName;
    00065     QIconSet m_iconSet;
    00066     bool m_hasIcon : 1;
    00067     bool m_enabled : 1;
    00068 };
    00069
    00070
    00071 KGuiItem::KGuiItem() {
    00072     d = new KGuiItemPrivate;
    00073 }
    00074
    00075 KGuiItem::KGuiItem( const QString &text,    const QString &iconName,
    00076                     const QString &toolTip, const QString &whatsThis )
    00077 {
    00078     d = new KGuiItemPrivate;
    00079     d->m_text = text;
    00080     d->m_toolTip = toolTip;
    00081     d->m_whatsThis = whatsThis;
    00082     setIconName( iconName );
    00083 }
    00084
    00085 KGuiItem::KGuiItem( const QString &text,    const QIconSet &iconSet,
    00086                     const QString &toolTip, const QString &whatsThis )
    00087 {
    00088     d = new KGuiItemPrivate;
    00089     d->m_text = text;
    00090     d->m_toolTip = toolTip;
    00091     d->m_whatsThis = whatsThis;
    00092     setIconSet( iconSet );
    00093 }
    00094
    00095 KGuiItem::KGuiItem( const KGuiItem &rhs )
    00096     : d( 0 )
    00097 {
    00098     ( *this ) = rhs;
    00099 }
    00100
    00101 KGuiItem &KGuiItem::operator=( const KGuiItem &rhs )
    00102 {
    00103     if ( d == rhs.d )
    00104         return *this;
    00105
    00106     assert( rhs.d );
    00107
    00108     delete d;
    00109     d = new KGuiItemPrivate( *rhs.d );
    00110
    00111     return *this;
    00112 }
    00113
    00114 KGuiItem::~KGuiItem()
    00115 {
    00116     delete d;
    00117 }
    00118
    00119 QString KGuiItem::text() const
    00120 {
    00121     return d->m_text;
    00122 }
    00123
    00124
    00125 QString KGuiItem::plainText() const
    00126 {
    00127     const int len = d->m_text.length();
    00128
    00129     if (len == 0)
    00130         return d->m_text;
    00131
    00132     //Can assume len >= 1 from now on.
    00133     QString stripped;
    00134
    00135     int resultLength = 0;
    00136     stripped.setLength(len);
    00137
    00138     const QChar* data    = d->m_text.unicode();
    00139     for ( int pos = 0; pos < len; ++pos )
    00140     {
    00141         if ( data[ pos ] != '&' )
    00142             stripped[ resultLength++ ] = data[ pos ];
    00143         else if ( pos + 1 < len && data[ pos + 1 ] == '&' )
    00144             stripped[ resultLength++ ] = data[ pos++ ];
    00145     }
    00146
    00147     stripped.truncate(resultLength);
    00148
    00149     return stripped;
    00150 }
    00151
    00152 QIconSet KGuiItem::iconSet( KIcon::Group group, int size, KInstance* instance ) const
    00153 {
    00154     if( d->m_hasIcon )
    00155     {
    00156         if( !d->m_iconName.isEmpty())
    00157         {
    00158 // some caching here would(?) come handy
    00159             return instance->iconLoader()->loadIconSet( d->m_iconName, group, size );
    00160 // here is a little problem that with delayed icon loading
    00161 // we can't check if the icon really exists ... so what ...
    00162 //            if( set.isNull() )
    00163 //            {
    00164 //                d->m_hasIcon = false;
    00165 //                return QIconSet();
    00166 //            }
    00167 //            return set;
    00168         }
    00169         else
    00170         {
    00171             return d->m_iconSet;
    00172         }
    00173     }
    00174     else
    00175         return QIconSet();
    00176 }
    00177
    00178 QString KGuiItem::iconName() const
    00179 {
    00180     return d->m_iconName;
    00181 }
    00182
    00183 QString KGuiItem::toolTip() const
    00184 {
    00185     return d->m_toolTip;
    00186 }
    00187
    00188 QString KGuiItem::whatsThis() const
    00189 {
    00190     return d->m_whatsThis;
    00191 }
    00192
    00193 bool KGuiItem::isEnabled() const
    00194 {
    00195     return d->m_enabled;
    00196 }
    00197
    00198 bool KGuiItem::hasIcon() const
    00199 {
    00200     return d->m_hasIcon;
    00201 }
    00202
    00203 void KGuiItem::setText( const QString &text ) {
    00204     d->m_text=text;
    00205 }
    00206
    00207 void KGuiItem::setIconSet( const QIconSet &iconset )
    00208 {
    00209     d->m_iconSet = iconset;
    00210     d->m_iconName = QString::null;
    00211     d->m_hasIcon = !iconset.isNull();
    00212 }
    00213
    00214 void KGuiItem::setIconName( const QString &iconName )
    00215 {
    00216     d->m_iconName = iconName;
    00217     d->m_iconSet = QIconSet();
    00218     d->m_hasIcon = !iconName.isEmpty();
    00219 }
    00220
    00221 void KGuiItem::setToolTip( const QString &toolTip )
    00222 {
    00223     d->m_toolTip = toolTip;
    00224 }
    00225
    00226 void KGuiItem::setWhatsThis( const QString &whatsThis )
    00227 {
    00228     d->m_whatsThis = whatsThis;
    00229 }
    00230
    00231 void KGuiItem::setEnabled( bool enabled )
    00232 {
    00233     d->m_enabled = enabled;
    00234 }
    00235
    00236 // vim: set et sw=4:
    00237

This file is part of the documentation for kdeui Library Version 3.4.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat Jun 11 20:20:17 2005 by doxygen 1.4.1 written by Dimitri van Heesch, © 1997-2003