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 resizeEvent(0); 00177 break; 00178 } 00179 } 00180 } 00181 00182 void KMultiTabBarInternal::setPosition(enum KMultiTabBar::KMultiTabBarPosition pos) 00183 { 00184 m_position=pos; 00185 for (uint i=0;i<m_tabs.count();i++) 00186 m_tabs.at(i)->setTabsPosition(m_position); 00187 viewport()->repaint(); 00188 } 00189 00190 00191 KMultiTabBarButton::KMultiTabBarButton(const QPixmap& pic,const QString& text, QPopupMenu *popup, 00192 int id,QWidget *parent,KMultiTabBar::KMultiTabBarPosition pos,KMultiTabBar::KMultiTabBarStyle style) 00193 :QPushButton(QIconSet(),text,parent),m_style(style) 00194 { 00195 setIconSet(pic); 00196 setText(text); 00197 m_position=pos; 00198 if (popup) setPopup(popup); 00199 setFlat(true); 00200 setFixedHeight(24); 00201 setFixedWidth(24); 00202 m_id=id; 00203 QToolTip::add(this,text); 00204 connect(this,SIGNAL(clicked()),this,SLOT(slotClicked())); 00205 } 00206 00207 KMultiTabBarButton::KMultiTabBarButton(const QString& text, QPopupMenu *popup, 00208 int id,QWidget *parent,KMultiTabBar::KMultiTabBarPosition pos,KMultiTabBar::KMultiTabBarStyle style) 00209 :QPushButton(QIconSet(),text,parent),m_style(style) 00210 { 00211 setText(text); 00212 m_position=pos; 00213 if (popup) setPopup(popup); 00214 setFlat(true); 00215 setFixedHeight(24); 00216 setFixedWidth(24); 00217 m_id=id; 00218 QToolTip::add(this,text); 00219 connect(this,SIGNAL(clicked()),this,SLOT(slotClicked())); 00220 } 00221 00222 KMultiTabBarButton::~KMultiTabBarButton() { 00223 } 00224 00225 int KMultiTabBarButton::id() const{ 00226 return m_id; 00227 } 00228 00229 void KMultiTabBarButton::setText(const QString& text) 00230 { 00231 QPushButton::setText(text); 00232 m_text=text; 00233 QToolTip::add(this,text); 00234 } 00235 00236 void KMultiTabBarButton::slotClicked() 00237 { 00238 emit clicked(m_id); 00239 } 00240 00241 void KMultiTabBarButton::setPosition(KMultiTabBar::KMultiTabBarPosition pos) 00242 { 00243 m_position=pos; 00244 repaint(); 00245 } 00246 00247 void KMultiTabBarButton::setStyle(KMultiTabBar::KMultiTabBarStyle style) 00248 { 00249 m_style=style; 00250 repaint(); 00251 } 00252 00253 QSize KMultiTabBarButton::sizeHint() const 00254 { 00255 constPolish(); 00256 00257 int w = 0, h = 0; 00258 00259 // calculate contents size... 00260 #ifndef QT_NO_ICONSET 00261 if ( iconSet() && !iconSet()->isNull() ) { 00262 int iw = iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width() + 4; 00263 int ih = iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); 00264 w += iw; 00265 h = QMAX( h, ih ); 00266 } 00267 #endif 00268 if ( isMenuButton() ) 00269 w += style().pixelMetric(QStyle::PM_MenuButtonIndicator, this); 00270 00271 if ( pixmap() ) { 00272 QPixmap *pm = (QPixmap *)pixmap(); 00273 w += pm->width(); 00274 h += pm->height(); 00275 } else { 00276 QString s( text() ); 00277 bool empty = s.isEmpty(); 00278 if ( empty ) 00279 s = QString::fromLatin1("XXXX"); 00280 QFontMetrics fm = fontMetrics(); 00281 QSize sz = fm.size( ShowPrefix, s ); 00282 if(!empty || !w) 00283 w += sz.width(); 00284 if(!empty || !h) 00285 h = QMAX(h, sz.height()); 00286 } 00287 00288 return (style().sizeFromContents(QStyle::CT_ToolButton, this, QSize(w, h)). 00289 expandedTo(QApplication::globalStrut())); 00290 } 00291 00292 00293 KMultiTabBarTab::KMultiTabBarTab(const QPixmap& pic, const QString& text, 00294 int id,QWidget *parent,KMultiTabBar::KMultiTabBarPosition pos, 00295 KMultiTabBar::KMultiTabBarStyle style) 00296 :KMultiTabBarButton(text,0,id,parent,pos,style), 00297 m_showActiveTabText(false) 00298 { 00299 d=new KMultiTabBarTabPrivate(); 00300 setIcon(pic); 00301 m_expandedSize=24; 00302 setToggleButton(true); 00303 } 00304 00305 KMultiTabBarTab::~KMultiTabBarTab() { 00306 delete d; 00307 } 00308 00309 00310 void KMultiTabBarTab::setTabsPosition(KMultiTabBar::KMultiTabBarPosition pos) 00311 { 00312 if ((pos!=m_position) && ((pos==KMultiTabBar::Left) || (pos==KMultiTabBar::Right))) { 00313 if (!d->pix.isNull()) { 00314 QWMatrix temp;// (1.0F, 0.0F, 0.0F, -1.0F, 0.0F, 0.0F); 00315 temp.rotate(180); 00316 d->pix=d->pix.xForm(temp); 00317 setIconSet(d->pix); 00318 } 00319 } 00320 00321 setPosition(pos); 00322 // repaint(); 00323 } 00324 00325 void KMultiTabBarTab::setIcon(const QString& icon) 00326 { 00327 QPixmap pic=SmallIcon(icon); 00328 setIcon(pic); 00329 } 00330 00331 void KMultiTabBarTab::setIcon(const QPixmap& icon) 00332 { 00333 00334 if ((m_position==KMultiTabBar::Left) || (m_position==KMultiTabBar::Right)) { 00335 QWMatrix rotateMatrix; 00336 if (m_position==KMultiTabBar::Left) 00337 rotateMatrix.rotate(90); 00338 else 00339 rotateMatrix.rotate(-90); 00340 QPixmap pic=icon.xForm(rotateMatrix); 00341 #if 0 00342 if(m_position==KMultiTabBar::Left) { 00343 QWMatrix flipMatrix; 00344 flipMatrix.setMatrix(1.0F, 0.0F, 0.0F, -1.0F, 0.0F, 0.0F); 00345 pic=pic.xForm(flipMatrix); 00346 } 00347 #endif 00348 d->pix=pic; 00349 setIconSet(pic); 00350 } else setIconSet(icon); 00351 00352 } 00353 00354 void KMultiTabBarTab::slotClicked() 00355 { 00356 updateState(); 00357 KMultiTabBarButton::slotClicked(); 00358 } 00359 00360 void KMultiTabBarTab::setState(bool b) 00361 { 00362 setOn(b); 00363 updateState(); 00364 } 00365 00366 void KMultiTabBarTab::updateState() 00367 { 00368 00369 if (m_style!=KMultiTabBar::KONQSBC) { 00370 if ((m_style==KMultiTabBar::KDEV3) || (isOn())) { 00371 QPushButton::setText(m_text); 00372 } else { 00373 kdDebug()<<"KMultiTabBarTab::updateState(): setting text to an empty QString***************"<<endl; 00374 QPushButton::setText(QString::null); 00375 } 00376 00377 if ((m_position==KMultiTabBar::Right || m_position==KMultiTabBar::Left)) { 00378 setFixedWidth(24); 00379 if ((m_style==KMultiTabBar::KDEV3) || (isOn())) { 00380 setFixedHeight(KMultiTabBarButton::sizeHint().width()); 00381 } else setFixedHeight(36); 00382 } else { 00383 setFixedHeight(24); 00384 if ((m_style==KMultiTabBar::KDEV3) || (isOn())) { 00385 setFixedWidth(KMultiTabBarButton::sizeHint().width()); 00386 } else setFixedWidth(36); 00387 } 00388 } else { 00389 if ((!isOn()) || (!m_showActiveTabText)) 00390 { 00391 setFixedWidth(24); 00392 setFixedHeight(24); 00393 return; 00394 } 00395 if ((m_position==KMultiTabBar::Right || m_position==KMultiTabBar::Left)) 00396 setFixedHeight(m_expandedSize); 00397 else 00398 setFixedWidth(m_expandedSize); 00399 } 00400 00401 } 00402 00403 int KMultiTabBarTab::neededSize() 00404 { 00405 return (24+QFontMetrics(QFont()).width(m_text)+6); 00406 } 00407 00408 void KMultiTabBarTab::setSize(int size) 00409 { 00410 m_expandedSize=size; 00411 updateState(); 00412 } 00413 00414 void KMultiTabBarTab::showActiveTabText(bool show) 00415 { 00416 m_showActiveTabText=show; 00417 } 00418 00419 void KMultiTabBarTab::drawButtonLabel(QPainter *p) { 00420 drawButton(p); 00421 } 00422 void KMultiTabBarTab::drawButton(QPainter *paint) 00423 { 00424 if (m_style!=KMultiTabBar::KONQSBC) drawButtonStyled(paint); 00425 else drawButtonClassic(paint); 00426 } 00427 00428 void KMultiTabBarTab::drawButtonStyled(QPainter *paint) { 00429 00430 QSize sh; 00431 const int width = 36; // rotated 00432 const int height = 24; 00433 if ((m_style==KMultiTabBar::KDEV3) || (isOn())) 00434 sh=KMultiTabBarButton::sizeHint(); 00435 else 00436 sh=QSize(width,height); 00437 00438 QPixmap pixmap( sh.width(),height); 00439 pixmap.fill(eraseColor()); 00440 QPainter painter(&pixmap); 00441 00442 00443 QStyle::SFlags st=QStyle::Style_Default; 00444 00445 st|=QStyle::Style_Enabled; 00446 00447 if (isOn()) st|=QStyle::Style_On; 00448 00449 style().drawControl(QStyle::CE_PushButton,&painter,this, QRect(0,0,pixmap.width(),pixmap.height()), colorGroup(),st); 00450 style().drawControl(QStyle::CE_PushButtonLabel,&painter,this, QRect(0,0,pixmap.width(),pixmap.height()), colorGroup(),st); 00451 00452 switch (m_position) { 00453 case KMultiTabBar::Left: 00454 paint->rotate(-90); 00455 paint->drawPixmap(1-pixmap.width(),0,pixmap); 00456 break; 00457 case KMultiTabBar::Right: 00458 paint->rotate(90); 00459 paint->drawPixmap(0,1-pixmap.height(),pixmap); 00460 break; 00461 00462 default: 00463 paint->drawPixmap(0,0,pixmap); 00464 break; 00465 } 00466 // style().drawControl(QStyle::CE_PushButtonLabel,painter,this, QRect(0,0,pixmap.width(),pixmap.height()), 00467 // colorGroup(),QStyle::Style_Enabled); 00468 00469 00470 } 00471 00472 void KMultiTabBarTab::drawButtonClassic(QPainter *paint) 00473 { 00474 QPixmap pixmap; 00475 if ( iconSet()) 00476 pixmap = iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ); 00477 paint->fillRect(0, 0, 24, 24, colorGroup().background()); 00478 00479 if (!isOn()) 00480 { 00481 00482 if (m_position==KMultiTabBar::Right) 00483 { 00484 paint->fillRect(0,0,21,21,QBrush(colorGroup().background())); 00485 00486 paint->setPen(colorGroup().background().dark(150)); 00487 paint->drawLine(0,22,23,22); 00488 00489 paint->drawPixmap(12-pixmap.width()/2,12-pixmap.height()/2,pixmap); 00490 00491 paint->setPen(colorGroup().shadow()); 00492 paint->drawLine(0,0,0,23); 00493 paint->setPen(colorGroup().background().dark(120)); 00494 paint->drawLine(1,0,1,23); 00495 00496 } 00497 else 00498 if ((m_position==KMultiTabBar::Bottom) || (m_position==KMultiTabBar::Top)) 00499 { 00500 paint->fillRect(0,1,23,22,QBrush(colorGroup().background())); 00501 00502 paint->drawPixmap(12-pixmap.width()/2,12-pixmap.height()/2,pixmap); 00503 00504 paint->setPen(colorGroup().background().dark(120)); 00505 paint->drawLine(23,0,23,23); 00506 00507 00508 paint->setPen(colorGroup().light()); 00509 paint->drawLine(0,22,23,22); 00510 paint->drawLine(0,23,23,23); 00511 paint->setPen(colorGroup().shadow()); 00512 paint->drawLine(0,0,23,0); 00513 paint->setPen(colorGroup().background().dark(120)); 00514 paint->drawLine(0,1,23,1); 00515 00516 } 00517 else 00518 { 00519 paint->setPen(colorGroup().background().dark(120)); 00520 paint->drawLine(0,23,23,23); 00521 paint->fillRect(0,0,23,21,QBrush(colorGroup().background())); 00522 paint->drawPixmap(12-pixmap.width()/2,12-pixmap.height()/2,pixmap); 00523 00524 paint->setPen(colorGroup().light()); 00525 paint->drawLine(23,0,23,23); 00526 paint->drawLine(22,0,22,23); 00527 00528 paint->setPen(colorGroup().shadow()); 00529 paint->drawLine(0,0,0,23); 00530 00531 } 00532 00533 00534 } 00535 else 00536 { 00537 if (m_position==KMultiTabBar::Right) 00538 { 00539 paint->setPen(colorGroup().shadow()); 00540 paint->drawLine(0,height()-1,23,height()-1); 00541 paint->drawLine(0,height()-2,23,height()-2); 00542 paint->drawLine(23,0,23,height()-1); 00543 paint->drawLine(22,0,22,height()-1); 00544 paint->fillRect(0,0,21,height()-3,QBrush(colorGroup().light())); 00545 paint->drawPixmap(10-pixmap.width()/2,10-pixmap.height()/2,pixmap); 00546 00547 if (m_showActiveTabText) 00548 { 00549 if (height()<25+4) return; 00550 00551 QPixmap tpixmap(height()-25-3, width()-2); 00552 QPainter painter(&tpixmap); 00553 00554 painter.fillRect(0,0,tpixmap.width(),tpixmap.height(),QBrush(colorGroup().light())); 00555 00556 painter.setPen(colorGroup().text()); 00557 painter.drawText(0,+width()/2+QFontMetrics(QFont()).height()/2,m_text); 00558 00559 paint->rotate(90); 00560 kdDebug()<<"tpixmap.width:"<<tpixmap.width()<<endl; 00561 paint->drawPixmap(25,-tpixmap.height()+1,tpixmap); 00562 } 00563 00564 } 00565 else 00566 if (m_position==KMultiTabBar::Top) 00567 { 00568 paint->fillRect(0,0,width()-1,23,QBrush(colorGroup().light())); 00569 paint->drawPixmap(10-pixmap.width()/2,10-pixmap.height()/2,pixmap); 00570 if (m_showActiveTabText) 00571 { 00572 paint->setPen(colorGroup().text()); 00573 paint->drawText(25,height()/2+QFontMetrics(QFont()).height()/2,m_text); 00574 } 00575 } 00576 else 00577 if (m_position==KMultiTabBar::Bottom) 00578 { 00579 paint->setPen(colorGroup().shadow()); 00580 paint->drawLine(0,23,width()-1,23); 00581 paint->drawLine(0,22,width()-1,22); 00582 paint->fillRect(0,0,width()-1,21,QBrush(colorGroup().light())); 00583 paint->drawPixmap(10-pixmap.width()/2,10-pixmap.height()/2,pixmap); 00584 if (m_showActiveTabText) 00585 { 00586 paint->setPen(colorGroup().text()); 00587 paint->drawText(25,height()/2+QFontMetrics(QFont()).height()/2,m_text); 00588 } 00589 00590 } 00591 else 00592 { 00593 00594 00595 paint->setPen(colorGroup().shadow()); 00596 paint->drawLine(0,height()-1,23,height()-1); 00597 paint->drawLine(0,height()-2,23,height()-2); 00598 paint->fillRect(0,0,23,height()-3,QBrush(colorGroup().light())); 00599 paint->drawPixmap(10-pixmap.width()/2,10-pixmap.height()/2,pixmap); 00600 if (m_showActiveTabText) 00601 { 00602 00603 if (height()<25+4) return; 00604 00605 QPixmap tpixmap(height()-25-3, width()-2); 00606 QPainter painter(&tpixmap); 00607 00608 painter.fillRect(0,0,tpixmap.width(),tpixmap.height(),QBrush(colorGroup().light())); 00609 00610 painter.setPen(colorGroup().text()); 00611 painter.drawText(tpixmap.width()-QFontMetrics(QFont()).width(m_text),+width()/2+QFontMetrics(QFont()).height()/2,m_text); 00612 00613 paint->rotate(-90); 00614 kdDebug()<<"tpixmap.width:"<<tpixmap.width()<<endl; 00615 00616 paint->drawPixmap(-24-tpixmap.width(),2,tpixmap); 00617 00618 } 00619 00620 } 00621 00622 } 00623 } 00624 00625 00626 00627 00628 00629 00630 00631 KMultiTabBar::KMultiTabBar(KMultiTabBarMode bm, QWidget *parent,const char *name):QWidget(parent,name) 00632 { 00633 m_buttons.setAutoDelete(false); 00634 if (bm==Vertical) 00635 { 00636 m_l=new QVBoxLayout(this); 00637 setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding, true); 00638 // setFixedWidth(24); 00639 } 00640 else 00641 { 00642 m_l=new QHBoxLayout(this); 00643 setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed, true); 00644 // setFixedHeight(24); 00645 } 00646 m_l->setMargin(0); 00647 m_l->setAutoAdd(false); 00648 00649 m_internal=new KMultiTabBarInternal(this,bm); 00650 setPosition((bm==KMultiTabBar::Vertical)?KMultiTabBar::Right:KMultiTabBar::Bottom); 00651 setStyle(VSNET); 00652 // setStyle(KDEV3); 00653 //setStyle(KONQSBC); 00654 m_l->insertWidget(0,m_internal); 00655 m_l->insertWidget(0,m_btnTabSep=new QFrame(this)); 00656 m_btnTabSep->setFixedHeight(4); 00657 m_btnTabSep->setFrameStyle(QFrame::Panel | QFrame::Sunken); 00658 m_btnTabSep->setLineWidth(2); 00659 m_btnTabSep->hide(); 00660 00661 updateGeometry(); 00662 } 00663 00664 KMultiTabBar::~KMultiTabBar() { 00665 } 00666 00667 /*int KMultiTabBar::insertButton(QPixmap pic,int id ,const QString&) 00668 { 00669 (new KToolbarButton(pic,id,m_internal))->show(); 00670 return 0; 00671 }*/ 00672 00673 int KMultiTabBar::appendButton(const QPixmap &pic ,int id,QPopupMenu *popup,const QString&) 00674 { 00675 KMultiTabBarButton *btn; 00676 m_buttons.append(btn= new KMultiTabBarButton(pic,QString::null, 00677 popup,id,this,m_position,m_internal->m_style)); 00678 m_l->insertWidget(0,btn); 00679 btn->show(); 00680 m_btnTabSep->show(); 00681 return 0; 00682 } 00683 00684 int KMultiTabBar::appendTab(const QPixmap &pic ,int id ,const QString& text) 00685 { 00686 m_internal->appendTab(pic,id,text); 00687 return 0; 00688 } 00689 00690 KMultiTabBarButton* KMultiTabBar::button(int id) const 00691 { 00692 for (QPtrListIterator<KMultiTabBarButton> it(m_buttons);it.current();++it){ 00693 if (it.current()->id()==id) return it.current(); 00694 } 00695 return 0; 00696 } 00697 00698 KMultiTabBarTab* KMultiTabBar::tab(int id) const 00699 { 00700 return m_internal->tab(id); 00701 } 00702 00703 00704 00705 void KMultiTabBar::removeButton(int id) 00706 { 00707 for (uint pos=0;pos<m_buttons.count();pos++) 00708 { 00709 if (m_buttons.at(pos)->id()==id) 00710 { 00711 m_buttons.take(pos)->deleteLater(); 00712 break; 00713 } 00714 } 00715 if (m_buttons.count()==0) m_btnTabSep->hide(); 00716 } 00717 00718 void KMultiTabBar::removeTab(int id) 00719 { 00720 m_internal->removeTab(id); 00721 } 00722 00723 void KMultiTabBar::setTab(int id,bool state) 00724 { 00725 KMultiTabBarTab *ttab=tab(id); 00726 if (ttab) 00727 { 00728 ttab->setState(state); 00729 } 00730 } 00731 00732 bool KMultiTabBar::isTabRaised(int id) const 00733 { 00734 KMultiTabBarTab *ttab=tab(id); 00735 if (ttab) 00736 { 00737 return ttab->isOn(); 00738 } 00739 00740 return false; 00741 } 00742 00743 00744 void KMultiTabBar::showActiveTabTexts(bool show) 00745 { 00746 m_internal->showActiveTabTexts(show); 00747 } 00748 00749 void KMultiTabBar::setStyle(KMultiTabBarStyle style) 00750 { 00751 m_internal->setStyle(style); 00752 } 00753 00754 void KMultiTabBar::setPosition(KMultiTabBarPosition pos) 00755 { 00756 m_position=pos; 00757 m_internal->setPosition(pos); 00758 for (uint i=0;i<m_buttons.count();i++) 00759 m_buttons.at(i)->setPosition(pos); 00760 } 00761 00762 QPtrList<KMultiTabBarTab>* KMultiTabBar::tabs() {return m_internal->tabs();} 00763 QPtrList<KMultiTabBarButton>* KMultiTabBar::buttons() {return &m_buttons;} 00764
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 Fri Oct 8 11:15:23 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003