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 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.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Sep 29 09:43:28 2004 by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2003