kdeui Library API Documentation

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 
KDE Logo
This file is part of the documentation for kdeui Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed May 4 07:12:11 2005 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003