diff options
author | Norwegian Rock Cat <qt-info@nokia.com> | 2009-05-08 15:30:44 +0200 |
---|---|---|
committer | Norwegian Rock Cat <qt-info@nokia.com> | 2009-05-08 15:30:44 +0200 |
commit | cd454b572b712dc840dbdcfc959d6ba2894cee70 (patch) | |
tree | 2f203de5f3e744c51c6ebc4b178dbd115dbfe47a /src | |
parent | 6ed6f5f572f2f309ba961d3e4c0f00bf6629b20f (diff) |
Stub in a lot of functions.
Diffstat (limited to 'src')
-rw-r--r-- | src/qtsegmentcontrol.cpp | 184 | ||||
-rw-r--r-- | src/qtsegmentcontrol.h | 17 |
2 files changed, 194 insertions, 7 deletions
diff --git a/src/qtsegmentcontrol.cpp b/src/qtsegmentcontrol.cpp index 0367f7c..4efc91d 100644 --- a/src/qtsegmentcontrol.cpp +++ b/src/qtsegmentcontrol.cpp @@ -13,7 +13,7 @@ struct SegmentInfo { class QtSegmentControlPrivate { public: - QtSegmentControlPrivate(QtSegmentControl *myQ) : q(myQ), count(0), lastSelected(-1) {}; + QtSegmentControlPrivate(QtSegmentControl *myQ) : q(myQ), lastSelected(-1) {}; ~QtSegmentControlPrivate() {}; QtSegmentControl *q; @@ -21,6 +21,7 @@ public: QSize iconSize; QVector<SegmentInfo> segments; int lastSelected; + inline bool indexOK(int index) { return index >= 0 && index < segments.count(); } }; QtSegmentControl::QtSegmentControl(QWidget *parent) @@ -45,6 +46,183 @@ void QtSegmentControl::setCount(int newCount) bool QtSegmentControl::isSegmentSelected(int index) const { - // Stuff Good. - const SegmentInfo &info = segments.at(index); + if (!indexOK(index)) + return false; + + return segments.at(index).selected; +} + +int QtSegmentControl::selectedSegment() const +{ + return d->lastSelected; +} + +void QtSegmentControl::setSegmentSelected(int index, bool selected) +{ + if (!indexOK(index)) + return; + + if (segmentInfo[index].selected != selected) { + segmentInfo[index].selected = selected; + update(); // ### segment rect; + emit segmentSelected(index); + } +} + +void QtSegmentControl::setSegmentEnabled(int index, bool enabled) +{ + if (!indexOK(index)) + return; + + if (segmentInfo[index].enabled != enabled) { + segmentInfo[index].enabled = enabled; + update(); // ### segment rect + } +} + +void QtSegmentControl::setSelectionBehavior(SelectionBehavior behavior) +{ + if (d->selectionBehavior == behavior) + return; + + d->selectionBehavior = behavior; + // ### change up selection and update() +} + +QtSegmentControl::SelectionBehavior QtSegmentControl::selectionBehavior() const +{ + return d->selectionBehavior; +} + +void QtSegmentControl::setSegmentText(int index, const QString &text) +{ + if (!indexOK(index)) + return; + + if (d->segmentInfo[index].text != text) { + d->segmentInfo[index].text = text; + update(); // ### segment rect; + } +} + +QString QtSegmentControl::segmentText(int index) const +{ + indexOK(index) ? d->segmentInfo.at(index).text : QString(); +} + +void QtSegmentControl::setSegmentIcon(int index, const QIcon &icon) +{ + if (!indexOK(index)) + return; + + if (d->segmentInfo[index].icon != icon) { + d->segmentInfo[index].icon = icon; + update(); // ## segment rect; + } +} + +QIcon QtSegmentControl::segmentIcon(int index) +{ + indexOK(index) ? d->segmentInfo.at(index).icon : QIcon(); +} + +void QtSegmentControl::setIconSize(const QSize &size) +{ + if (d->iconSize == size) + return; + + d->iconSize = size; + update(); +} + +QSize QtSegmentControl::iconSize() const +{ + return d->iconSize; +} + +void QtSegmentControl::setSegmentMenu(int index, QMenu *menu) +{ + if (!indexOK(index)) + return; + + if (menu != d->segmentInfo[index].menu) { + QMenu *oldMenu = d->segmentInfo[index].menu; + d->segmentInfo[index].menu = menu; + delete oldMenu; + update(); // ### segment rect + } } + +QMenu *QtSegmentControl::segmentMenu(int index) const +{ + indexOK(index) ? d->segmentInfo.at(index).menu : 0; +} + +void QtSegmentControl::setSegmentToolTip(int segment, const QString &tipText) +{ + if (!indexOK(index)) + return; + + d->segmentInfo[segment].toolTipText = tipText; +} + +QString QtSegmentControl::toolTipText(int segment) const +{ + return d->indexOK(segment) ? d->segmentInfo.at(segment).toolTipText : QString(); +} + +void QtSegmentControl::setSegmentWhatsThis(int segment, const QString &whatsThisText) +{ + if (!d->indexOK(segment)) + return; + + d->segmentInfo[segment].whatsThisText = whatsThisText; +} + +QString QtSegmentControl::segmentWhatsThis(int segment) const +{ + return d->indexOK(segment) ? d->segmentInfo.at(segment).whatsThisText : QString(); +} + +QSize QtSegmentControl::segmentSizeHint(int segment, const QSize &size) const +{ + return QSize(20, 20); +} + + +void QtSegmentControl::paintEvent(QPaintEvent *) +{ + QPainter p(this); + p.fillRect(rect(), Qt::blue); +} + +void QtSegmentControl::mousePressEvent(QMouseEvent *event) +{ + return QWidget::mousePressEvent(event); +} + +void QtSegmentControl::mouseMoveEvent(QMouseEvent *event) +{ + return QWidget::mouseMoveEvent(event); +} + +void QtSegmentControl::mouseReleaseEvent(QMouseEvent *event) +{ + return QWidget::mouseReleaseEvent(event); +} + +void QtSegmentControl::keyPressEvent(QKeyEvent *event) +{ + return QWidget::keyPressEvent(event); +} + +void QtSegmentControl::keyReleaseEvent(QKeyEvent *event) +{ + return QWidget::keyReleaseEvent(event); +} + +bool QtSegmentControl::event(QEvent *event) +{ + return QWidget::event(event); +} + diff --git a/src/qtsegmentcontrol.h b/src/qtsegmentcontrol.h index 3847b2e..387ebc7 100644 --- a/src/qtsegmentcontrol.h +++ b/src/qtsegmentcontrol.h @@ -34,11 +34,11 @@ public: void setSelectionBehavior(SelectionBehavior behavior); SelectionBehavior selectionBehavior() const; - void setSegmentText(const QString &text); - QString segmentText() const; + void setSegmentText(int index, const QString &text); + QString segmentText(int index) const; - void setSegmentIcon(const QIcon &icon); - QIcon segmentIcon() const; + void setSegmentIcon(int index, const QIcon &icon); + QIcon segmentIcon(int index) const; void setIconSize(const QSize &size); QSize iconSize() const; @@ -54,6 +54,15 @@ public: virtual QSize segmentSizeHint(int segment, const QSize &size) const; +protected: + void paintEvent(QPaintEvent *pe); + void mousePressEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); + void keyPressEvent(QKeyEvent *event); + void keyReleaseEvent(QKeyEvent *event); + bool event(QEvent *event); + Q_SIGNALS: void segmentSelected(int selected); |