Source Code (Use browser search to find items of interest.)
Class Index
karchie'KTabListBoxTable (./kdenetwork/karchie/ktablistbox.h:91)
class KTabListBoxTable: public QTableView
{
Q_OBJECT
friend KTabListBox;
public:
KTabListBoxTable(KTabListBox *owner=0);
virtual ~KTabListBoxTable();
void enableKey();
int findRealCol(int x);
protected:
virtual void focusInEvent(QFocusEvent*);
virtual void focusOutEvent(QFocusEvent*);
virtual void mouseDoubleClickEvent (QMouseEvent*);
virtual void mousePressEvent (QMouseEvent*);
virtual void mouseReleaseEvent (QMouseEvent*);
virtual void mouseMoveEvent (QMouseEvent*);
virtual void doItemSelection (QMouseEvent*, int idx);
virtual void paintCell (QPainter*, int row, int col);
virtual int cellWidth (int col);
void reconnectSBSignals ();
QPoint dragStartPos;
int dragCol;
int dragRow;
int selIdx;
};
//--------------------------------------------------
/** A multi column listbox
* Features:
* - User resizeable columns.
* - The order of columns can be changed with drag&drop. (Alex)
* - 3 modes: Standard, SimpleOrder, ComplexOrder. (Alex)
* ToDo:
* - Configurable vertical column divisor lines.
* - Save all setting to config file.
* - fix flickering into column headers.
* @deprecated
*/
karchie'KTabListBoxTable::KTabListBoxTable() (./kdenetwork/karchie/ktablistbox.cpp:1543)
KTabListBoxTable::KTabListBoxTable(KTabListBox *parent):
KTabListBoxTableInherited(parent)
{
QFontMetrics fm = fontMetrics();
initMetaObject();
dragCol = -1;
dragRow = -1;
selIdx = -1;
setTableFlags(Tbl_autoVScrollBar|Tbl_autoHScrollBar|Tbl_smoothVScrolling|
Tbl_clipCellPainting);
switch(style())
{
case MotifStyle:
case WindowsStyle:
setBackgroundColor(colorGroup().base());
setFrameStyle( QFrame::WinPanel | QFrame::Sunken );
break;
default:
setLineWidth(1);
setFrameStyle(QFrame::Panel|QFrame::Plain);
}
setCellWidth(0);
setCellHeight(fm.lineSpacing() + 1);
setNumRows(0);
setCursor(arrowCursor);
setMouseTracking(FALSE);
setFocusPolicy(NoFocus);
// You can enable it with enableKey();
//setFocusPolicy(StrongFocus);
}
//-----------------------------------------------------------------------------
karchie'KTabListBoxTable::~KTabListBoxTable() (./kdenetwork/karchie/ktablistbox.cpp:1584)
KTabListBoxTable::~KTabListBoxTable()
{
}
//----------------------------------------------------------------------------
karchie'KTabListBoxTable::enableKey() (./kdenetwork/karchie/ktablistbox.cpp:1589)
void KTabListBoxTable::enableKey()
{
setFocusPolicy(StrongFocus);
}
//-----------------------------------------------------------------------------
karchie'KTabListBoxTable::findRealCol() (./kdenetwork/karchie/ktablistbox.cpp:1595)
int KTabListBoxTable::findRealCol(int xPos)
{
int column = -1;
int xPos1;
KTabListBox*owner =(KTabListBox*)parentWidget();
int maxCol=owner->numColumns;
if ( xPos >= minViewX() && xPos <= maxViewX() )
{
column = 0;
xPos1=xPos+xOffset();
int cumWidth= 2;
while ( column < maxCol )
{
cumWidth += cellWidth( column );
if ( xPos1 < cumWidth ) break;
column++;
}
}
if ( column >=maxCol ) return -1;
if(column==-1) return -1;
return owner->colShowList[column];
}
//-----------------------------------------------------------------------------
karchie'KTabListBoxTable::paintCell() (./kdenetwork/karchie/ktablistbox.cpp:1621)
void KTabListBoxTable::paintCell(QPainter* p, int row, int col)
{
KTabListBox* owner =(KTabListBox*)parentWidget();
KTabListBoxItem* item = owner->getItem(owner->itemShowList[row]);
if (!item) return;
p->setPen(item->foreground());
int t=owner->colShowList[col];
owner->colList[t]->paintCell(p, row, item->text(t),(item->marked()==-1));
}
//-----------------------------------------------------------------------------
karchie'KTabListBoxTable::cellWidth() (./kdenetwork/karchie/ktablistbox.cpp:1634)
int KTabListBoxTable::cellWidth(int col)
{
KTabListBox* owner =(KTabListBox*)parentWidget();
return(owner->colList ? owner->colList[owner->colShowList[col]]->width() : 0);
}
//-----------------------------------------------------------------------------
karchie'KTabListBoxTable::mouseDoubleClickEvent() (./kdenetwork/karchie/ktablistbox.cpp:1643)
void KTabListBoxTable::mouseDoubleClickEvent(QMouseEvent* e)
{
KTabListBox* owner =(KTabListBox*)parentWidget();
int idx, colnr;
if(findRow(e->pos().y())<0) return;
idx = owner->currentItem();
colnr = findRealCol(e->pos().x());
if (idx >= 0) emit owner->selected(idx,colnr);
}
//-----------------------------------------------------------------------------
karchie'KTabListBoxTable::doItemSelection() (./kdenetwork/karchie/ktablistbox.cpp:1656)
void KTabListBoxTable::doItemSelection(QMouseEvent* e, int idx)
{
KTabListBox* owner =(KTabListBox*)parentWidget();
int i, di, colnr;
owner->unmarkAll();
if ((e->state()&ShiftButton)!=0 && owner->currentItem()>=0)
{
i = owner->itemPosList(owner->currentItem());
idx= owner->itemPosList(idx);
di =(i>idx ? -1 : 1);
while(1)
{
owner->markItem(owner->itemShowList[i]);
if (i == idx) break;
i += di;
}
}
else
{
colnr = findRealCol(e->pos().x());
owner->setCurrentItem(idx,colnr);
}
}
//-----------------------------------------------------------------------------
karchie'KTabListBoxTable::mousePressEvent() (./kdenetwork/karchie/ktablistbox.cpp:1683)
void KTabListBoxTable::mousePressEvent(QMouseEvent* e)
{
KTabListBox* owner =(KTabListBox*)parentWidget();
int row, col;
row=findRow(e->pos().y());
if(row<0) return;
row = owner->itemShowList[row];
col = findRealCol(e->pos().x());
if (e->button() == RightButton)
{
// handle popup menu
if (row >= 0 && col >= 0)
emit owner->popupMenu(row, col);
return;
}
else if (e->button() == MidButton)
{
// handle middle click
if (row >= 0 && col >= 0)
emit owner->midClick(row, col);
return;
}
// arm for possible dragging
dragStartPos = e->pos();
dragCol = col;
dragRow = row;
// handle item highlighting
if (row >= 0 && owner->getItem(row)->marked() < -1)
{
doItemSelection(e, row);
selIdx = row;
}
else selIdx = -1;
}
//-----------------------------------------------------------------------------
karchie'KTabListBoxTable::mouseReleaseEvent() (./kdenetwork/karchie/ktablistbox.cpp:1723)
void KTabListBoxTable::mouseReleaseEvent(QMouseEvent* e)
{
KTabListBox* owner =(KTabListBox*)parentWidget();
int idx;
if (e->button() != LeftButton) return;
idx = findRow(e->pos().y());
if(idx<0) return;
idx = owner->itemShowList[idx];
if (idx >= 0 && selIdx < 0)
doItemSelection(e, idx);
}
//-----------------------------------------------------------------------------
karchie'KTabListBoxTable::mouseMoveEvent() (./kdenetwork/karchie/ktablistbox.cpp:1739)
void KTabListBoxTable::mouseMoveEvent(QMouseEvent* e)
{
KTabListBox* owner =(KTabListBox*)parentWidget();
if ((e->state() &(RightButton|LeftButton|MidButton)) != 0)
{
if (dragRow >= 0 && dragCol >= 0 &&
(abs(e->pos().x()-dragStartPos.x()) >= 5 ||
abs(e->pos().y()-dragStartPos.y()) >= 5))
{
// we have a liftoff !
owner->startDrag(dragRow, dragCol);
dragRow = dragCol = -1;
return;
}
}
}
//-----------------------------------------------------------------------------
karchie'KTabListBoxTable::reconnectSBSignals() (./kdenetwork/karchie/ktablistbox.cpp:1759)
void KTabListBoxTable::reconnectSBSignals()
{
QScrollBar* hsb = (QScrollBar*)horizontalScrollBar();
KTabListBox* owner =(KTabListBox*)parentWidget();
if (!hsb) return;
hsb->setTracking(TRUE);
connect(hsb, SIGNAL(valueChanged(int)), owner, SLOT(horSbValue(int)));
connect(hsb, SIGNAL(sliderReleased()), owner, SLOT(horSbSlidingDone()));
}
//-----------------------------------------------------------------------------
karchie'KTabListBoxTable::focusInEvent() (./kdenetwork/karchie/ktablistbox.cpp:1773)
void KTabListBoxTable::focusInEvent(QFocusEvent*)
{
// Just do nothing here to avoid the annoying flicker whick happens due
// to a redraw() call per default.
}
//-----------------------------------------------------------------------------
karchie'KTabListBoxTable::focusOutEvent() (./kdenetwork/karchie/ktablistbox.cpp:1781)
void KTabListBoxTable::focusOutEvent(QFocusEvent*)
{
// Just do nothing here to avoid the annoying flicker whick happens due
// to a redraw() call per default.
}