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));
}