summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNorwegian Rock Cat <qt-info@nokia.com>2009-04-24 17:26:26 +0200
committerNorwegian Rock Cat <qt-info@nokia.com>2009-04-24 17:26:26 +0200
commit6ed6f5f572f2f309ba961d3e4c0f00bf6629b20f (patch)
treeb9d44fe9ba398c2acfff7414984b7faf7c42809c
parentded95798869f7394f6b8a8a0a606988c14eaa357 (diff)
Some more work.
-rw-r--r--src/qtsegmentcontrol.cpp50
-rw-r--r--src/qtsegmentcontrol.h22
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;
};