Source Code (Use browser search to find items of interest.)
Class Index
kdelibs'KDateInternalMonthPicker (./kdelibs/kdeui/kdatetbl.h:35)
class KDateInternalMonthPicker : public QTableView
{
Q_OBJECT
protected:
/** Store the month that has been clicked [1..12]. */
int result;
/** Contains the largest rectangle needed by the month names. */
QRect max;
signals:
/** This is send from the mouse click event handler. */
void closeMe(int);
public:
/** The constructor. */
KDateInternalMonthPicker(int fontsize, QWidget* parent, const char* name=0);
/** The size hint. */
QSize sizeHint() const;
/** Return the result. 0 means no selection (reject()), 1..12 are the
months. */
int getResult();
protected:
/** Set up the painter. */
void setupPainter(QPainter *p);
/** The resize event. */
void resizeEvent(QResizeEvent*);
/** Paint a cell. This simply draws the month names in it. */
void paintCell(QPainter* painter, int row, int col);
/** Catch mouse click events.
Emit monthSelected(int) when a cell has been clicked. */
void mousePressEvent(QMouseEvent *e);
private:
class KDateInternalMonthPrivate;
KDateInternalMonthPrivate *d;
};
/** Year selection widget.
* @internal
* @version $Id: kdatetbl.h,v 1.11 2000/03/16 20:47:59 granroth Exp $
* @author Tim Gilman, Mirko Sucker
*/
kdelibs'KDateInternalMonthPicker::KDateInternalMonthPicker() (./kdelibs/kdeui/kdatetbl.cpp:364)
KDateInternalMonthPicker::KDateInternalMonthPicker
(int fontsize, QWidget* parent, const char* name)
: QTableView(parent, name),
result(0) // invalid
{
int temp;
QRect rect;
QFont font;
// -----
font=KGlobal::generalFont();
font.setPointSize(fontsize);
setFont(font);
setNumRows(4);
setNumCols(3);
// enable to find drawing failures:
// setTableFlags(Tbl_clipCellPainting);
setBackgroundColor(lightGray); // for consistency with the datepicker
// ----- find the preferred size
// (this is slow, possibly, but unfortunatly it is needed here):
QFontMetrics metrics(font);
for(temp=1; temp<13; ++temp)
{
rect=metrics.boundingRect(*(KDatePicker::Month[temp-1]));
if(max.width()<rect.width()) max.setWidth(rect.width());
if(max.height()<rect.height()) max.setHeight(rect.height());
}
}
QSize
kdelibs'KDateInternalMonthPicker::sizeHint() (./kdelibs/kdeui/kdatetbl.cpp:394)
KDateInternalMonthPicker::sizeHint() const
{
return QSize((max.width()+6)*numCols()+2*frameWidth(),
(max.height()+6)*numRows()+2*frameWidth());
}
int
kdelibs'KDateInternalMonthPicker::getResult() (./kdelibs/kdeui/kdatetbl.cpp:401)
KDateInternalMonthPicker::getResult()
{
return result;
}
void
kdelibs'KDateInternalMonthPicker::setupPainter() (./kdelibs/kdeui/kdatetbl.cpp:407)
KDateInternalMonthPicker::setupPainter(QPainter *p)
{
p->setPen(black);
}
void
kdelibs'KDateInternalMonthPicker::resizeEvent() (./kdelibs/kdeui/kdatetbl.cpp:413)
KDateInternalMonthPicker::resizeEvent(QResizeEvent*)
{
setCellWidth(width()/3);
setCellHeight(height()/4);
}
void
kdelibs'KDateInternalMonthPicker::paintCell() (./kdelibs/kdeui/kdatetbl.cpp:420)
KDateInternalMonthPicker::paintCell(QPainter* painter, int row, int col)
{
int index;
QString text;
// ----- find the number of the cell:
index=3*row+col+1;
text=*(KDatePicker::Month[index-1]);
painter->drawText(0, 0, cellWidth(), cellHeight(), AlignCenter, text);
}
void
kdelibs'KDateInternalMonthPicker::mousePressEvent() (./kdelibs/kdeui/kdatetbl.cpp:431)
KDateInternalMonthPicker::mousePressEvent(QMouseEvent *e)
{
if(e->type()!=QEvent::MouseButtonPress)
{ // we only react on mouse press events:
return;
}
if(!isEnabled())
{
kapp->beep();
return;
}
// -----
int row, col, pos;
QPoint mouseCoord;
// -----
mouseCoord = e->pos();
row=findRow(mouseCoord.y());
col=findCol(mouseCoord.x());
if(row<0 || col<0)
{ // the user clicked on the frame of the table
emit(closeMe(0));
}
pos=3*row+col+1;
result=pos;
emit(closeMe(1));
}