kutils Library API Documentation

kmultitabbar.cpp

00001 /*************************************************************************** 00002 kmultitabbar.cpp - description 00003 ------------------- 00004 begin : 2001 00005 copyright : (C) 2001,2002,2003 by Joseph Wenninger <jowenn@kde.org> 00006 ***************************************************************************/ 00007 00008 /*************************************************************************** 00009 This library is free software; you can redistribute it and/or 00010 modify it under the terms of the GNU Library General Public 00011 License as published by the Free Software Foundation; either 00012 version 2 of the License, or (at your option) any later version. 00013 00014 This library is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00017 Library General Public License for more details. 00018 00019 You should have received a copy of the GNU Library General Public License 00020 along with this library; see the file COPYING.LIB. If not, write to 00021 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00022 Boston, MA 02111-1307, USA. 00023 ***************************************************************************/ 00024 00025 #include "kmultitabbar.h" 00026 #include "kmultitabbar.moc" 00027 #include "kmultitabbar_p.h" 00028 #include "kmultitabbar_p.moc" 00029 #include <qbutton.h> 00030 #include <qpopupmenu.h> 00031 #include <qlayout.h> 00032 #include <qpainter.h> 00033 #include <qtooltip.h> 00034 #include <qfontmetrics.h> 00035 #include <qstyle.h> 00036 00037 #include <kiconloader.h> 00038 #include <kdebug.h> 00039 00040 00041 class KMultiTabBarTabPrivate { 00042 public: 00043 QPixmap pix; 00044 }; 00045 00046 00047 KMultiTabBarInternal::KMultiTabBarInternal(QWidget *parent, KMultiTabBar::KMultiTabBarMode bm):QScrollView(parent) 00048 { 00049 m_expandedTabSize=-1; 00050 m_showActiveTabTexts=false; 00051 m_tabs.setAutoDelete(true); 00052 setHScrollBarMode(AlwaysOff); 00053 setVScrollBarMode(AlwaysOff); 00054 if (bm==KMultiTabBar::Vertical) 00055 { 00056 box=new QVBox(viewport()); 00057 box->setFixedWidth(24); 00058 setFixedWidth(24); 00059 } 00060 else 00061 { 00062 box=new QHBox(viewport()); 00063 box->setFixedHeight(24); 00064 setFixedHeight(24); 00065 } 00066 addChild(box); 00067 setFrameStyle(NoFrame); 00068 viewport()->setBackgroundMode(Qt::PaletteBackground); 00069 } 00070 00071 void KMultiTabBarInternal::setStyle(enum KMultiTabBar::KMultiTabBarStyle style) 00072 { 00073 m_style=style; 00074 for (uint i=0;i<m_tabs.count();i++) 00075 m_tabs.at(i)->setStyle(m_style); 00076 viewport()->repaint(); 00077 } 00078 00079 void KMultiTabBarInternal::drawContents ( QPainter * paint, int clipx, int clipy, int clipw, int cliph ) 00080 { 00081 QScrollView::drawContents (paint , clipx, clipy, clipw, cliph ); 00082 00083 if (m_position==KMultiTabBar::Right) 00084 { 00085 00086 paint->setPen(colorGroup().shadow()); 00087 paint->drawLine(0,0,0,viewport()->height()); 00088 paint->setPen(colorGroup().background().dark(120)); 00089 paint->drawLine(1,0,1,viewport()->height()); 00090 00091 00092 } 00093 else 00094 if (m_position==KMultiTabBar::Left) 00095 { 00096 paint->setPen(colorGroup().light()); 00097 paint->drawLine(23,0,23,viewport()->height()); 00098 paint->drawLine(22,0,22,viewport()->height()); 00099 00100 paint->setPen(colorGroup().shadow()); 00101 paint->drawLine(0,0,0,viewport()->height()); 00102 } 00103 else 00104 if (m_position==KMultiTabBar::Bottom) 00105 { 00106 paint->setPen(colorGroup().shadow()); 00107 paint->drawLine(0,0,viewport()->width(),0); 00108 paint->setPen(colorGroup().background().dark(120)); 00109 paint->drawLine(0,1,viewport()->width(),1); 00110 } 00111 else 00112 { 00113 paint->setPen(colorGroup().light()); 00114 paint->drawLine(0,23,viewport()->width(),23); 00115 paint->drawLine(0,22,viewport()->width(),22); 00116 00117 /* paint->setPen(colorGroup().shadow()); 00118 paint->drawLine(0,0,0,viewport()->height());*/ 00119 00120 } 00121 00122 00123 } 00124 00125 void KMultiTabBarInternal::contentsMousePressEvent(QMouseEvent *ev) 00126 { 00127 ev->ignore(); 00128 } 00129 00130 void KMultiTabBarInternal::mousePressEvent(QMouseEvent *ev) 00131 { 00132 ev->ignore(); 00133 } 00134 00135 void KMultiTabBarInternal::showActiveTabTexts(bool show) 00136 { 00137 m_showActiveTabTexts=show; 00138 } 00139 00140 00141 KMultiTabBarTab* KMultiTabBarInternal::tab(int id) const 00142 { 00143 for (QPtrListIterator<KMultiTabBarTab> it(m_tabs);it.current();++it){ 00144 if (it.current()->id()==id) return it.current(); 00145 } 00146 return 0; 00147 } 00148 00149 00150 int KMultiTabBarInternal::appendTab(const QPixmap &pic ,int id,const QString& text) 00151 { 00152 KMultiTabBarTab *tab; 00153 m_tabs.append(tab= new KMultiTabBarTab(pic,text,id,box,m_position,m_style)); 00154 tab->showActiveTabText(m_showActiveTabTexts); 00155 00156 if (m_style==KMultiTabBar::KONQSBC) 00157 { 00158 if (m_expandedTabSize<tab->neededSize()) { 00159 m_expandedTabSize=tab->neededSize(); 00160 for (uint i=0;i<m_tabs.count();i++) 00161 m_tabs.at(i)->setSize(m_expandedTabSize); 00162 00163 } else tab->setSize(m_expandedTabSize); 00164 } else tab->updateState(); 00165 tab->show(); 00166 return 0; 00167 } 00168 00169 void KMultiTabBarInternal::removeTab(int id) 00170 { 00171 for (uint pos=0;pos<m_tabs.count();pos++) 00172 { 00173 if (m_tabs.at(pos)->id()==id) 00174 { 00175 m_tabs.remove(pos); 00176 break; 00177 } 00178 } 00179 } 00180 00181 void KMultiTabBarInternal::setPosition(enum KMultiTabBar::KMultiTabBarPosition pos) 00182 { 00183 m_position=pos; 00184 for (uint i=0;i<m_tabs.count();i++) 00185 m_tabs.at(i)->setTabsPosition(m_position); 00186 viewport()->repaint(); 00187 } 00188 00189 00190 KMultiTabBarButton::KMultiTabBarButton(const QPixmap& pic,const QString& text, QPopupMenu *popup, 00191 int id,QWidget *parent,KMultiTabBar::KMultiTabBarPosition pos,KMultiTabBar::KMultiTabBarStyle style) 00192 :QPushButton(QIconSet(),text,parent),m_style(style) 00193 { 00194 setIconSet(pic); 00195 setText(text); 00196 m_position=pos; 00197 if (popup) setPopup(popup); 00198 setFlat(true); 00199 setFixedHeight(24); 00200 setFixedWidth(24); 00201 m_id=id; 00202 QToolTip::add(this,text); 00203 connect(this,SIGNAL(clicked()),this,SLOT(slotClicked())); 00204 } 00205 00206 KMultiTabBarButton::KMultiTabBarButton(const QString& text, QPopupMenu *popup, 00207 int id,QWidget *parent,KMultiTabBar::KMultiTabBarPosition pos,KMultiTabBar::KMultiTabBarStyle style) 00208 :QPushButton(QIconSet(),text,parent),m_style(style) 00209 { 00210 setText(text); 00211 m_position=pos; 00212 if (popup) setPopup(popup); 00213 setFlat(true); 00214 setFixedHeight(24); 00215 setFixedWidth(24); 00216 m_id=id; 00217 QToolTip::add(this,text); 00218 connect(this,SIGNAL(clicked()),this,SLOT(slotClicked())); 00219 } 00220 00221 KMultiTabBarButton::~KMultiTabBarButton() { 00222 } 00223 00224 int KMultiTabBarButton::id() const{ 00225 return m_id; 00226 } 00227 00228 void KMultiTabBarButton::setText(const QString& text) 00229 { 00230 QPushButton::setText(text); 00231 m_text=text; 00232 QToolTip::add(this,text); 00233 } 00234 00235 void KMultiTabBarButton::slotClicked() 00236 { 00237 emit clicked(m_id); 00238 } 00239 00240 void KMultiTabBarButton::setPosition(KMultiTabBar::KMultiTabBarPosition pos) 00241 { 00242 m_position=pos; 00243 repaint(); 00244 } 00245 00246 void KMultiTabBarButton::setStyle(KMultiTabBar::KMultiTabBarStyle style) 00247 { 00248 m_style=style; 00249 repaint(); 00250 } 00251 00252 QSize KMultiTabBarButton::sizeHint() const 00253 { 00254 constPolish(); 00255 00256 int w = 0, h = 0; 00257 00258 // calculate contents size... 00259 #ifndef QT_NO_ICONSET 00260 if ( iconSet() && !iconSet()->isNull() ) { 00261 int iw = iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width() + 4; 00262 int ih = iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); 00263 w += iw; 00264 h = QMAX( h, ih ); 00265 } 00266 #endif 00267 if ( isMenuButton() ) 00268 w += style().pixelMetric(QStyle::PM_MenuButtonIndicator, this); 00269 00270 if ( pixmap() ) { 00271 QPixmap *pm = (QPixmap *)pixmap(); 00272 w += pm->width(); 00273 h += pm->height(); 00274 } else { 00275 QString s( text() ); 00276 bool empty = s.isEmpty(); 00277 if ( empty ) 00278 s = QString::fromLatin1("XXXX"); 00279 QFontMetrics fm = fontMetrics(); 00280 QSize sz = fm.size( ShowPrefix, s ); 00281 if(!empty || !w) 00282 w += sz.width(); 00283 if(!empty || !h) 00284 h = QMAX(h, sz.height()); 00285 } 00286 00287 return (style().sizeFromContents(QStyle::CT_ToolButton, this, QSize(w, h)). 00288 expandedTo(QApplication::globalStrut())); 00289 } 00290 00291 00292 KMultiTabBarTab::KMultiTabBarTab(const QPixmap& pic, const QString& text, 00293 int id,QWidget *parent,KMultiTabBar::KMultiTabBarPosition pos, 00294 KMultiTabBar::KMultiTabBarStyle style) 00295 :KMultiTabBarButton(text,0,id,parent,pos,style), 00296 m_showActiveTabText(false) 00297 { 00298 d=new KMultiTabBarTabPrivate(); 00299 setIcon(pic); 00300 m_expandedSize=24; 00301 setToggleButton(true); 00302 } 00303 00304 KMultiTabBarTab::~KMultiTabBarTab() { 00305 delete d; 00306 } 00307 00308 00309 void KMultiTabBarTab::setTabsPosition(KMultiTabBar::KMultiTabBarPosition pos) 00310 { 00311 if ((pos!=m_position) && ((pos==KMultiTabBar::Left) || (pos==KMultiTabBar::Right))) { 00312 if (!d->pix.isNull()) { 00313 QWMatrix temp;// (1.0F, 0.0F, 0.0F, -1.0F, 0.0F, 0.0F); 00314 temp.rotate(180); 00315 d->pix=d->pix.xForm(temp); 00316 setIconSet(d->pix); 00317 } 00318 } 00319 00320 setPosition(pos); 00321 // repaint(); 00322 } 00323 00324 void KMultiTabBarTab::setIcon(const QString& icon) 00325 { 00326 QPixmap pic=SmallIcon(icon); 00327 setIcon(pic); 00328 } 00329 00330 void KMultiTabBarTab::setIcon(const QPixmap& icon) 00331 { 00332 00333 if ((m_position==KMultiTabBar::Left) || (m_position==KMultiTabBar::Right)) { 00334 QWMatrix rotateMatrix; 00335 if (m_position==KMultiTabBar::Left) 00336 rotateMatrix.rotate(90); 00337 else 00338 rotateMatrix.rotate(-90); 00339 QPixmap pic=icon.xForm(rotateMatrix); 00340 #if 0 00341 if(m_position==KMultiTabBar::Left) { 00342 QWMatrix flipMatrix; 00343 flipMatrix.setMatrix(1.0F, 0.0F, 0.0F, -1.0F, 0.0F, 0.0F); 00344 pic=pic.xForm(flipMatrix); 00345 } 00346 #endif 00347 d->pix=pic; 00348 setIconSet(pic); 00349 } else setIconSet(icon); 00350 00351 } 00352 00353 void KMultiTabBarTab::slotClicked() 00354 { 00355 updateState(); 00356 KMultiTabBarButton::slotClicked(); 00357 } 00358 00359 void KMultiTabBarTab::setState(bool b) 00360 { 00361 setOn(b); 00362 updateState(); 00363 } 00364 00365 void KMultiTabBarTab::updateState() 00366 { 00367 00368 if (m_style!=KMultiTabBar::KONQSBC) { 00369 if ((m_style==KMultiTabBar::KDEV3) || (isOn())) { 00370 QPushButton::setText(m_text); 00371 } else { 00372 kdDebug()<<"KMultiTabBarTab::updateState(): setting text to an empty QString***************"<<endl; 00373 QPushButton::setText(QString::null); 00374 } 00375 00376 if ((m_position==KMultiTabBar::Right || m_position==KMultiTabBar::Left)) { 00377 setFixedWidth(24); 00378 if ((m_style==KMultiTabBar::KDEV3) || (isOn())) { 00379 setFixedHeight(KMultiTabBarButton::sizeHint().width()); 00380 } else setFixedHeight(36); 00381 } else { 00382 setFixedHeight(24); 00383 if ((m_style==KMultiTabBar::KDEV3) || (isOn())) { 00384 setFixedWidth(KMultiTabBarButton::sizeHint().width()); 00385 } else setFixedWidth(36); 00386 } 00387 } else { 00388 if ((!isOn()) || (!m_showActiveTabText)) 00389 { 00390 setFixedWidth(24); 00391 setFixedHeight(24); 00392 return; 00393 } 00394 if ((m_position==KMultiTabBar::Right || m_position==KMultiTabBar::Left)) 00395 setFixedHeight(m_expandedSize); 00396 else 00397 setFixedWidth(m_expandedSize); 00398 } 00399 00400 } 00401 00402 int KMultiTabBarTab::neededSize() 00403 { 00404 return (24+QFontMetrics(QFont()).width(m_text)+6); 00405 } 00406 00407 void KMultiTabBarTab::setSize(int size) 00408 { 00409 m_expandedSize=size; 00410 updateState(); 00411 } 00412 00413 void KMultiTabBarTab::showActiveTabText(bool show) 00414 { 00415 m_showActiveTabText=show; 00416 } 00417 00418 void KMultiTabBarTab::drawButtonLabel(QPainter *p) { 00419 drawButton(p); 00420 } 00421 void KMultiTabBarTab::drawButton(QPainter *paint) 00422 { 00423 if (m_style!=KMultiTabBar::KONQSBC) drawButtonStyled(paint); 00424 else drawButtonClassic(paint); 00425 } 00426 00427 void KMultiTabBarTab::drawButtonStyled(QPainter *paint) { 00428 00429 QSize sh; 00430 const int width = 36; // rotated 00431 const int height = 24; 00432 if ((m_style==KMultiTabBar::KDEV3) || (isOn())) 00433 sh=KMultiTabBarButton::sizeHint(); 00434 else 00435 sh=QSize(width,height); 00436 00437 QPixmap pixmap( sh.width(),height); 00438 pixmap.fill(eraseColor()); 00439 QPainter painter(&pixmap); 00440 00441 00442 QStyle::SFlags st=QStyle::Style_Default; 00443 00444 st|=QStyle::Style_Enabled; 00445 00446 if (isOn()) st|=QStyle::Style_On; 00447 00448 style().drawControl(QStyle::CE_PushButton,&painter,this, QRect(0,0,pixmap.width(),pixmap.height()), colorGroup(),st); 00449 style().drawControl(QStyle::CE_PushButtonLabel,&painter,this, QRect(0,0,pixmap.width(),pixmap.height()), colorGroup(),st); 00450 00451 switch (m_position) { 00452 case KMultiTabBar::Left: 00453 paint->rotate(-90); 00454 paint->drawPixmap(1-pixmap.width(),0,pixmap); 00455 break; 00456 case KMultiTabBar::Right: 00457 paint->rotate(90); 00458 paint->drawPixmap(0,1-pixmap.height(),pixmap); 00459 break; 00460 00461 default: 00462 paint->drawPixmap(0,0,pixmap); 00463 break; 00464 } 00465 // style().drawControl(QStyle::CE_PushButtonLabel,painter,this, QRect(0,0,pixmap.width(),pixmap.height()), 00466 // colorGroup(),QStyle::Style_Enabled); 00467 00468 00469 } 00470 00471 void KMultiTabBarTab::drawButtonClassic(QPainter *paint) 00472 { 00473 QPixmap pixmap; 00474 if ( iconSet()) 00475 pixmap = iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ); 00476 paint->fillRect(0, 0, 24, 24, colorGroup().background()); 00477 00478 if (!isOn()) 00479 { 00480 00481 if (m_position==KMultiTabBar::Right) 00482 { 00483 paint->fillRect(0,0,21,21,QBrush(colorGroup().background())); 00484 00485 paint->setPen(colorGroup().background().dark(150)); 00486 paint->drawLine(0,22,23,22); 00487 00488 paint->drawPixmap(12-pixmap.width()/2,12-pixmap.height()/2,pixmap); 00489 00490 paint->setPen(colorGroup().shadow()); 00491 paint->drawLine(0,0,0,23); 00492 paint->setPen(colorGroup().background().dark(120)); 00493 paint->drawLine(1,0,1,23); 00494 00495 } 00496 else 00497 if ((m_position==KMultiTabBar::Bottom) || (m_position==KMultiTabBar::Top)) 00498 { 00499 paint->fillRect(0,1,23,22,QBrush(colorGroup().background())); 00500 00501 paint->drawPixmap(12-pixmap.width()/2,12-pixmap.height()/2,pixmap); 00502 00503 paint->setPen(colorGroup().background().dark(120)); 00504 paint->drawLine(23,0,23,23); 00505 00506 00507 paint->setPen(colorGroup().light()); 00508 paint->drawLine(0,22,23,22); 00509 paint->drawLine(0,23,23,23); 00510 paint->setPen(colorGroup().shadow()); 00511 paint->drawLine(0,0,23,0); 00512 paint->setPen(colorGroup().background().dark(120)); 00513 paint->drawLine(0,1,23,1); 00514 00515 } 00516 else 00517 { 00518 paint->setPen(colorGroup().background().dark(120)); 00519 paint->drawLine(0,23,23,23); 00520 paint->fillRect(0,0,23,21,QBrush(colorGroup().background())); 00521 paint->drawPixmap(12-pixmap.width()/2,12-pixmap.height()/2,pixmap); 00522 00523 paint->setPen(colorGroup().light()); 00524 paint->drawLine(23,0,23,23); 00525 paint->drawLine(22,0,22,23); 00526 00527 paint->setPen(colorGroup().shadow()); 00528 paint->drawLine(0,0,0,23); 00529 00530 } 00531 00532 00533 } 00534 else 00535 { 00536 if (m_position==KMultiTabBar::Right) 00537 { 00538 paint->setPen(colorGroup().shadow()); 00539 paint->drawLine(0,height()-1,23,height()-1); 00540 paint->drawLine(0,height()-2,23,height()-2); 00541 paint->drawLine(23,0,23,height()-1); 00542 paint->drawLine(22,0,22,height()-1); 00543 paint->fillRect(0,0,21,height()-3,QBrush(colorGroup().light())); 00544 paint->drawPixmap(10-pixmap.width()/2,10-pixmap.height()/2,pixmap); 00545 00546 if (m_showActiveTabText) 00547 { 00548 if (height()<25+4) return; 00549 00550 QPixmap tpixmap(height()-25-3, width()-2); 00551 QPainter painter(&tpixmap); 00552 00553 painter.fillRect(0,0,tpixmap.width(),tpixmap.height(),QBrush(colorGroup().light())); 00554 00555 painter.setPen(colorGroup().text()); 00556 painter.drawText(0,+width()/2+QFontMetrics(QFont()).height()/2,m_text); 00557 00558 paint->rotate(90); 00559 kdDebug()<<"tpixmap.width:"<<tpixmap.width()<<endl; 00560 paint->drawPixmap(25,-tpixmap.height()+1,tpixmap); 00561 } 00562 00563 } 00564 else 00565 if (m_position==KMultiTabBar::Top) 00566 { 00567 paint->fillRect(0,0,width()-1,23,QBrush(colorGroup().light())); 00568 paint->drawPixmap(10-pixmap.width()/2,10-pixmap.height()/2,pixmap); 00569 if (m_showActiveTabText) 00570 { 00571 paint->setPen(colorGroup().text()); 00572 paint->drawText(25,height()/2+QFontMetrics(QFont()).height()/2,m_text); 00573 } 00574 } 00575 else 00576 if (m_position==KMultiTabBar::Bottom) 00577 { 00578 paint->setPen(colorGroup().shadow()); 00579 paint->drawLine(0,23,width()-1,23); 00580 paint->drawLine(0,22,width()-1,22); 00581 paint->fillRect(0,0,width()-1,21,QBrush(colorGroup().light())); 00582 paint->drawPixmap(10-pixmap.width()/2,10-pixmap.height()/2,pixmap); 00583 if (m_showActiveTabText) 00584 { 00585 paint->setPen(colorGroup().text()); 00586 paint->drawText(25,height()/2+QFontMetrics(QFont()).height()/2,m_text); 00587 } 00588 00589 } 00590 else 00591 { 00592 00593 00594 paint->setPen(colorGroup().shadow()); 00595 paint->drawLine(0,height()-1,23,height()-1); 00596 paint->drawLine(0,height()-2,23,height()-2); 00597 paint->fillRect(0,0,23,height()-3,QBrush(colorGroup().light())); 00598 paint->drawPixmap(10-pixmap.width()/2,10-pixmap.height()/2,pixmap); 00599 if (m_showActiveTabText) 00600 { 00601 00602 if (height()<25+4) return; 00603 00604 QPixmap tpixmap(height()-25-3, width()-2); 00605 QPainter painter(&tpixmap); 00606 00607 painter.fillRect(0,0,tpixmap.width(),tpixmap.height(),QBrush(colorGroup().light())); 00608 00609 painter.setPen(colorGroup().text()); 00610 painter.drawText(tpixmap.width()-QFontMetrics(QFont()).width(m_text),+width()/2+QFontMetrics(QFont()).height()/2,m_text); 00611 00612 paint->rotate(-90); 00613 kdDebug()<<"tpixmap.width:"<<tpixmap.width()<<endl; 00614 00615 paint->drawPixmap(-24-tpixmap.width(),2,tpixmap); 00616 00617 } 00618 00619 } 00620 00621 } 00622 } 00623 00624 00625 00626 00627 00628 00629 00630 KMultiTabBar::KMultiTabBar(KMultiTabBarMode bm, QWidget *parent,const char *name):QWidget(parent,name) 00631 { 00632 m_buttons.setAutoDelete(false); 00633 if (bm==Vertical) 00634 { 00635 m_l=new QVBoxLayout(this); 00636 setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding, true); 00637 // setFixedWidth(24); 00638 } 00639 else 00640 { 00641 m_l=new QHBoxLayout(this); 00642 setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed, true); 00643 // setFixedHeight(24); 00644 } 00645 m_l->setMargin(0); 00646 m_l->setAutoAdd(false); 00647 00648 m_internal=new KMultiTabBarInternal(this,bm); 00649 setPosition((bm==KMultiTabBar::Vertical)?KMultiTabBar::Right:KMultiTabBar::Bottom); 00650 setStyle(VSNET); 00651 // setStyle(KDEV3); 00652 //setStyle(KONQSBC); 00653 m_l->insertWidget(0,m_internal); 00654 m_l->insertWidget(0,m_btnTabSep=new QFrame(this)); 00655 m_btnTabSep->setFixedHeight(4); 00656 m_btnTabSep->setFrameStyle(QFrame::Panel | QFrame::Sunken); 00657 m_btnTabSep->setLineWidth(2); 00658 m_btnTabSep->hide(); 00659 00660 updateGeometry(); 00661 } 00662 00663 KMultiTabBar::~KMultiTabBar() { 00664 } 00665 00666 /*int KMultiTabBar::insertButton(QPixmap pic,int id ,const QString&) 00667 { 00668 (new KToolbarButton(pic,id,m_internal))->show(); 00669 return 0; 00670 }*/ 00671 00672 int KMultiTabBar::appendButton(const QPixmap &pic ,int id,QPopupMenu *popup,const QString&) 00673 { 00674 KMultiTabBarButton *btn; 00675 m_buttons.append(btn= new KMultiTabBarButton(pic,QString::null, 00676 popup,id,this,m_position,m_internal->m_style)); 00677 m_l->insertWidget(0,btn); 00678 btn->show(); 00679 m_btnTabSep->show(); 00680 return 0; 00681 } 00682 00683 int KMultiTabBar::appendTab(const QPixmap &pic ,int id ,const QString& text) 00684 { 00685 m_internal->appendTab(pic,id,text); 00686 return 0; 00687 } 00688 00689 KMultiTabBarButton* KMultiTabBar::button(int id) const 00690 { 00691 for (QPtrListIterator<KMultiTabBarButton> it(m_buttons);it.current();++it){ 00692 if (it.current()->id()==id) return it.current(); 00693 } 00694 return 0; 00695 } 00696 00697 KMultiTabBarTab* KMultiTabBar::tab(int id) const 00698 { 00699 return m_internal->tab(id); 00700 } 00701 00702 00703 00704 void KMultiTabBar::removeButton(int id) 00705 { 00706 for (uint pos=0;pos<m_buttons.count();pos++) 00707 { 00708 if (m_buttons.at(pos)->id()==id) 00709 { 00710 m_buttons.take(pos)->deleteLater(); 00711 break; 00712 } 00713 } 00714 if (m_buttons.count()==0) m_btnTabSep->hide(); 00715 } 00716 00717 void KMultiTabBar::removeTab(int id) 00718 { 00719 m_internal->removeTab(id); 00720 } 00721 00722 void KMultiTabBar::setTab(int id,bool state) 00723 { 00724 KMultiTabBarTab *ttab=tab(id); 00725 if (ttab) 00726 { 00727 ttab->setState(state); 00728 } 00729 } 00730 00731 bool KMultiTabBar::isTabRaised(int id) const 00732 { 00733 KMultiTabBarTab *ttab=tab(id); 00734 if (ttab) 00735 { 00736 return ttab->isOn(); 00737 } 00738 00739 return false; 00740 } 00741 00742 00743 void KMultiTabBar::showActiveTabTexts(bool show) 00744 { 00745 m_internal->showActiveTabTexts(show); 00746 } 00747 00748 void KMultiTabBar::setStyle(KMultiTabBarStyle style) 00749 { 00750 m_internal->setStyle(style); 00751 } 00752 00753 void KMultiTabBar::setPosition(KMultiTabBarPosition pos) 00754 { 00755 m_position=pos; 00756 m_internal->setPosition(pos); 00757 for (uint i=0;i<m_buttons.count();i++) 00758 m_buttons.at(i)->setPosition(pos); 00759 } 00760 00761 QPtrList<KMultiTabBarTab>* KMultiTabBar::tabs() {return m_internal->tabs();} 00762 QPtrList<KMultiTabBarButton>* KMultiTabBar::buttons() {return &m_buttons;} 00763
KDE Logo
This file is part of the documentation for kutils Library Version 3.2.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat Jun 12 15:09:15 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003