Source Code (Use browser search to find items of interest.)

Class Index

kiconedit'KTabBar (./kdegraphics/kiconedit/ktabbar.h:37)

class KTabBar : public QWidget
{
    Q_OBJECT

public:
    KTabBar( QWidget * parent = 0, const char * name = 0 );
   ~KTabBar();

    QTabBar *getQTab();
    QSize sizeHint();
    int addTab( QTab *tab );
    void setTabEnabled( int tab, bool enable );
    bool isTabEnabled( int tab );
    int currentTab();
    QTab *tab( int tab );
    int keyboardFocusTab();

public slots:
    void setCurrentTab( int tab );
    void setCurrentTab( QTab *tab );

signals:
    void selected( int );
    void scrolled( ArrowType );

protected slots:
    void leftClicked();
    void rightClicked();
    void emitSelected(int);

protected:
    void init();
    void setSizes();
    void resizeEvent ( QResizeEvent * );
    void paintEvent ( QPaintEvent * );

    KTabBarProtected *ptab;
};


kiconedit'KTabBar::KTabBar() (./kdegraphics/kiconedit/ktabbar.cpp:37)

KTabBar::KTabBar(QWidget *parent, const char *name)
 : QWidget(parent, name)
{
  initMetaObject();
  init();
}


kiconedit'KTabBar::~KTabBar() (./kdegraphics/kiconedit/ktabbar.cpp:44)

KTabBar::~KTabBar()
{
  //debug("KTabBar - destructor");

  //debug("KTabBar - destructor done");
}


kiconedit'KTabBar::init() (./kdegraphics/kiconedit/ktabbar.cpp:51)

void KTabBar::init()
{
  ptab = new KTabBarProtected;
  ptab->tpos = 0;
  ptab->leftscroll = ptab->rightscroll = false;
  ptab->tabw = new QWidget(this);
  ptab->qtab = new QTabBar(ptab->tabw);

  ptab->left = new KTabButton(LeftArrow, this);
  connect( ptab->left, SIGNAL(clicked()), SLOT( leftClicked()) );

  ptab->right = new KTabButton(RightArrow, this);
  connect( ptab->right, SIGNAL(clicked()), SLOT( rightClicked()) );

  connect( ptab->qtab, SIGNAL(selected(int)), SLOT( emitSelected(int)) );

  //debug("init - done");
}


kiconedit'KTabBar::getQTab() (./kdegraphics/kiconedit/ktabbar.cpp:70)

QTabBar *KTabBar::getQTab()
{
  return ptab->qtab;
}


kiconedit'KTabBar::sizeHint() (./kdegraphics/kiconedit/ktabbar.cpp:75)

QSize KTabBar::sizeHint()
{
  return ptab->qtab->sizeHint();
}


kiconedit'KTabBar::addTab() (./kdegraphics/kiconedit/ktabbar.cpp:80)

int KTabBar::addTab( QTab *tab )
{
  return ptab->qtab->addTab( tab );
}


kiconedit'KTabBar::setTabEnabled() (./kdegraphics/kiconedit/ktabbar.cpp:85)

void KTabBar::setTabEnabled( int tab, bool enable )
{
  ptab->qtab->setTabEnabled( tab, enable );
}


kiconedit'KTabBar::isTabEnabled() (./kdegraphics/kiconedit/ktabbar.cpp:90)

bool KTabBar::isTabEnabled( int tab )
{
  return ptab->qtab->isTabEnabled( tab );
}


kiconedit'KTabBar::currentTab() (./kdegraphics/kiconedit/ktabbar.cpp:95)

int KTabBar::currentTab()
{
  return ptab->qtab->currentTab();
}


kiconedit'KTabBar::tab() (./kdegraphics/kiconedit/ktabbar.cpp:100)

QTab *KTabBar::tab( int tab )
{
  return ptab->qtab->tab( tab );
}


kiconedit'KTabBar::keyboardFocusTab() (./kdegraphics/kiconedit/ktabbar.cpp:105)

int KTabBar::keyboardFocusTab()
{
  return ptab->qtab->keyboardFocusTab();
}


kiconedit'KTabBar::setCurrentTab() (./kdegraphics/kiconedit/ktabbar.cpp:110)

void KTabBar::setCurrentTab(int tab)
{
  ptab->qtab->setCurrentTab(tab);
}


kiconedit'KTabBar::setCurrentTab() (./kdegraphics/kiconedit/ktabbar.cpp:115)

void KTabBar::setCurrentTab(QTab *tab)
{
  ptab->qtab->setCurrentTab(tab);
}


kiconedit'KTabBar::leftClicked() (./kdegraphics/kiconedit/ktabbar.cpp:120)

void KTabBar::leftClicked()
{
  if(ptab->tpos == (0-(2*JUMP)))
    ptab->tpos += (2 * JUMP);
  else
    ptab->tpos += JUMP;
  QResizeEvent e(size(), size());
  resizeEvent(&e);
  emit scrolled( RightArrow );
}


kiconedit'KTabBar::rightClicked() (./kdegraphics/kiconedit/ktabbar.cpp:131)

void KTabBar::rightClicked()
{
  if(ptab->tpos == 0)
    ptab->tpos -= (2 * JUMP);
  else
    ptab->tpos -= JUMP;
  QResizeEvent e(size(), size());
  resizeEvent(&e);
  emit scrolled( LeftArrow );
}


kiconedit'KTabBar::emitSelected() (./kdegraphics/kiconedit/ktabbar.cpp:142)

void KTabBar::emitSelected(int tab)
{
  emit selected(tab);
}


kiconedit'KTabBar::setSizes() (./kdegraphics/kiconedit/ktabbar.cpp:147)

void KTabBar::setSizes()
{
  ptab->leftscroll = ptab->rightscroll = false;
  ptab->tw_width = width();
  ptab->t_width = ptab->qtab->sizeHint().width();
  if(ptab->tw_width > ptab->t_width)
    ptab->tw_width = ptab->t_width;
  ptab->tw_height = ptab->qtab->sizeHint().height();
  ptab->tw_start = 0;
  int r = 0;

  //debug("width: %d - t_width: %d", width(), ptab->t_width);
  //debug("tpos %d", ptab->tpos);

  if(width() >= ptab->t_width)
    ptab->tpos = 0;
  else
  {
    if(ptab->tpos < 0)
    {
      //debug("leftscroll");
      ptab->leftscroll = true;
      ptab->tw_start = ptab->tw_height;
      ptab->tw_width -= ptab->tw_start;
      r = ptab->tw_height;
    }

    if(width() < (ptab->t_width + ptab->tpos + ptab->tw_start))
    {
      //debug("rightscroll");
      ptab->rightscroll = true;
      ptab->tw_width -= ptab->tw_height;
    }
  }
  if(ptab->tw_width > (ptab->t_width+ptab->tpos))
    ptab->tw_width = ptab->t_width + ptab->tpos;
  //debug("tw_width %d", tw_width);
  //debug("\n");
}


kiconedit'KTabBar::resizeEvent() (./kdegraphics/kiconedit/ktabbar.cpp:187)

void KTabBar::resizeEvent(QResizeEvent *)
{
  //debug("KTabBar, resizing");

  setSizes();

  if(ptab->leftscroll)
  {
    ptab->left->setGeometry( 0, 0, ptab->tw_height, ptab->tw_height);
    ptab->left->show();
  }
  else
    ptab->left->hide();

  if(ptab->rightscroll)
  {
    ptab->right->setGeometry( width()-ptab->tw_height, 0,
                              ptab->tw_height, ptab->tw_height);
    ptab->right->show();
  }
  else
    ptab->right->hide();

  ptab->tabw->setGeometry( ptab->tw_start, 0,
                           ptab->tw_width, ptab->tw_height);
  ptab->qtab->setGeometry( ptab->tpos, 0,
                           ptab->qtab->sizeHint().width(), ptab->tw_height);
  //debug("KTabBar\ntabw: %dx%d\nqtab: %dx%d", tw_width, tw_height,
  //                          qtab->sizeHint().width(), tw_height);

  QPaintEvent pe(geometry());
  paintEvent( &pe );

  //debug("KTabBar, resize - done");
}


kiconedit'KTabBar::paintEvent() (./kdegraphics/kiconedit/ktabbar.cpp:223)

void KTabBar::paintEvent(QPaintEvent *)
{
  //debug("KTabBar - painting");

  int end = width()-1;
  int start = ptab->tw_width + ptab->tpos;
  //debug("width: %d - start: %d", width(), start);

  if(ptab->leftscroll)  // if we need a left button we start the tabs at tw_height
    start = ptab->tw_height; // ( tw_height == left->width() )
  //start = 0;
  if(ptab->rightscroll)
    end -= ptab->tw_height;
  //debug("width: %d", width());
  //debug("tw_width: %d", tw_width);
  //debug("tw_start: %d", tw_start);
  //debug("2*tw_height + tw_width: %d", (2*tw_height)+tw_width);
  //debug("start: %d - end: %d", start, end);

  QPainter p;
  // start painting widget
  p.begin(this);
  QPen pen( white, 1 );
  p.setPen( pen );

  // draw bottom line
  if(start < end)
    p.drawLine( start, ptab->tw_height-1, end, ptab->tw_height-1);

  p.end();

  //qtab->repaint();

  //debug("KTabBar - painting done");
}