summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNorwegian Rock Cat <qt-info@nokia.com>2009-05-08 15:30:44 +0200
committerNorwegian Rock Cat <qt-info@nokia.com>2009-05-08 15:30:44 +0200
commitcd454b572b712dc840dbdcfc959d6ba2894cee70 (patch)
tree2f203de5f3e744c51c6ebc4b178dbd115dbfe47a /src
parent6ed6f5f572f2f309ba961d3e4c0f00bf6629b20f (diff)
Stub in a lot of functions.
Diffstat (limited to 'src')
-rw-r--r--src/qtsegmentcontrol.cpp184
-rw-r--r--src/qtsegmentcontrol.h17
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);