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.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Apr 22 14:24:51 2004 by doxygen 1.2.18 written by Dimitri van Heesch, © 1997-2003