diff options
author | Norwegian Rock Cat <qt-info@nokia.com> | 2009-04-24 17:26:26 +0200 |
---|---|---|
committer | Norwegian Rock Cat <qt-info@nokia.com> | 2009-04-24 17:26:26 +0200 |
commit | 6ed6f5f572f2f309ba961d3e4c0f00bf6629b20f (patch) | |
tree | b9d44fe9ba398c2acfff7414984b7faf7c42809c | |
parent | ded95798869f7394f6b8a8a0a606988c14eaa357 (diff) |
Some more work.
-rw-r--r-- | src/qtsegmentcontrol.cpp | 50 | ||||
-rw-r--r-- | src/qtsegmentcontrol.h | 22 |
2 files changed, 68 insertions, 4 deletions
diff --git a/src/qtsegmentcontrol.cpp b/src/qtsegmentcontrol.cpp new file mode 100644 index 0000000..0367f7c --- /dev/null +++ b/src/qtsegmentcontrol.cpp @@ -0,0 +1,50 @@ +#include "qtsegmentcontrol.h" + +struct SegmentInfo { + SegmentInfo() : menu(0), selected(false) {} + ~SegmentInfo() { delete menu; } + QString text; + QString toolTip; + QString whatsThis; + QIcon icon; + QMenu *menu; + bool selected; +}; + +class QtSegmentControlPrivate { +public: + QtSegmentControlPrivate(QtSegmentControl *myQ) : q(myQ), count(0), lastSelected(-1) {}; + ~QtSegmentControlPrivate() {}; + + QtSegmentControl *q; + QtSegmentControl::SelectionBehavior selectionBehavior; + QSize iconSize; + QVector<SegmentInfo> segments; + int lastSelected; +}; + +QtSegmentControl::QtSegmentControl(QWidget *parent) + : QWidget(parent), d(new QtSegmentControl(this)) +{ +} + +QtSegmentControl::~QtSegmentControl() +{ + delete d; +} + +int QtSegmentControl::count() const +{ + return segments.count(); +} + +void QtSegmentControl::setCount(int newCount) +{ + segments.resize(newCount); +} + +bool QtSegmentControl::isSegmentSelected(int index) const +{ + // Stuff Good. + const SegmentInfo &info = segments.at(index); +} diff --git a/src/qtsegmentcontrol.h b/src/qtsegmentcontrol.h index 60e4eb5..3847b2e 100644 --- a/src/qtsegmentcontrol.h +++ b/src/qtsegmentcontrol.h @@ -3,10 +3,18 @@ */ #include <QtGui/QWidget> +class QMenu; + +class QtSegmentControlPrivate; class QtSegmentedControl { Q_OBJECT + Q_ENUMS(SelectionBehavior) + Q_PROPERTY(SelectionBehavior READ selectionBehavior WRITE setSelectionBehavior) + Q_PREPERTY(selectedSection READ selectedSection NOTIFY sectionSelected) + Q_PREPERTY(int count READ count WRITE setCount) + Q_PREPERTY(QSize iconSize READ iconSize WRITE setIconSize) public: enum SelectionBehavior { SelectOne, SelectAll, SelectNone } @@ -17,8 +25,8 @@ public: void setCount(); bool isSegmentSelected(int index) const; - void setSegmentSelected(int index); int selectedSegment() const; + void setSegmentSelected(int index, bool selected); void setSegmentEnabled(int index, bool enable); bool segmentEnabled(int index) const; @@ -35,8 +43,8 @@ public: void setIconSize(const QSize &size); QSize iconSize() const; - void setMenu(QMenu *menu); - QMenu *menu() const; + void setSegmentMenu(int segment, QMenu *menu); + QMenu *segmentMenu(int segment) const; void setSegmentToolTip(int segment, const QString &tipText); QString segmentToolTip(int segment) const; @@ -44,5 +52,11 @@ public: void setSegmentWhatsThis(int segment, const QString &whatsThisText); QString segmentWhatsThis(int segment) const; - virtual QSize segmentSizeHint(const QSize &size) const; + virtual QSize segmentSizeHint(int segment, const QSize &size) const; + +Q_SIGNALS: + void segmentSelected(int selected); + +private: + QtSegmentControlPrivate *d; }; |