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., 51 Franklin Street, Fifth Floor, 00018 Boston, MA 02110-1301, USA. 00019 */ 00020 00021 #include <tqregexp.h> 00022 #include <tqstring.h> 00023 #include <tqiconset.h> 00024 #include <tqpixmap.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 TQString m_text; 00061 TQString m_toolTip; 00062 TQString m_whatsThis; 00063 TQString m_statusText; 00064 TQString m_iconName; 00065 TQIconSet 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 TQString &text, const TQString &iconName, 00076 const TQString &toolTip, const TQString &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 TQString &text, const TQIconSet &iconSet, 00086 const TQString &toolTip, const TQString &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 TQString KGuiItem::text() const 00120 { 00121 return d->m_text; 00122 } 00123 00124 00125 TQString 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 TQString stripped; 00134 00135 int resultLength = 0; 00136 stripped.setLength(len); 00137 00138 const TQChar* 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 TQIconSet KGuiItem::iconSet( TDEIcon::Group group, int size, TDEInstance* 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, true, false ); 00160 } 00161 else 00162 { 00163 return d->m_iconSet; 00164 } 00165 } 00166 else 00167 { 00168 return TQIconSet(); 00169 } 00170 } 00171 00172 TQString KGuiItem::iconName() const 00173 { 00174 return d->m_iconName; 00175 } 00176 00177 TQString KGuiItem::toolTip() const 00178 { 00179 return d->m_toolTip; 00180 } 00181 00182 TQString KGuiItem::whatsThis() const 00183 { 00184 return d->m_whatsThis; 00185 } 00186 00187 bool KGuiItem::isEnabled() const 00188 { 00189 return d->m_enabled; 00190 } 00191 00192 bool KGuiItem::hasIcon() const 00193 { 00194 return d->m_hasIcon; 00195 } 00196 00197 void KGuiItem::setText( const TQString &text ) { 00198 d->m_text=text; 00199 } 00200 00201 void KGuiItem::setIconSet( const TQIconSet &iconset ) 00202 { 00203 d->m_iconSet = iconset; 00204 d->m_iconName = TQString::null; 00205 d->m_hasIcon = !iconset.isNull(); 00206 } 00207 00208 void KGuiItem::setIconName( const TQString &iconName ) 00209 { 00210 d->m_iconName = iconName; 00211 d->m_iconSet = TQIconSet(); 00212 d->m_hasIcon = !iconName.isEmpty(); 00213 } 00214 00215 void KGuiItem::setToolTip( const TQString &toolTip ) 00216 { 00217 d->m_toolTip = toolTip; 00218 } 00219 00220 void KGuiItem::setWhatsThis( const TQString &whatsThis ) 00221 { 00222 d->m_whatsThis = whatsThis; 00223 } 00224 00225 void KGuiItem::setEnabled( bool enabled ) 00226 { 00227 d->m_enabled = enabled; 00228 } 00229 00230 // vim: set et sw=4: 00231