summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Griebl <rgriebl@trolltech.com>2010-04-14 14:40:51 +0200
committerRobert Griebl <rgriebl@trolltech.com>2010-04-14 14:40:51 +0200
commit3a80c2e66884dd706a16fc4e89835410811d3d2c (patch)
tree3982a2a2e886c7da7a2a073723ff03448edf3522
parent3d0e9c5aa5b560e85ee761a55ca40f4c31acf232 (diff)
improved the settings side panel
-rw-r--r--kineticscroller.pro4
-rw-r--r--main.cpp4
-rw-r--r--metrics.h2
-rw-r--r--metricswidget.cpp (renamed from metrics.cpp)103
-rw-r--r--metricswidget.h29
5 files changed, 127 insertions, 15 deletions
diff --git a/kineticscroller.pro b/kineticscroller.pro
index 3d51d54..02a9c60 100644
--- a/kineticscroller.pro
+++ b/kineticscroller.pro
@@ -8,5 +8,5 @@ DEPENDPATH += .
INCLUDEPATH += .
# Input
-HEADERS += qkineticscroller.h qkineticscroller_p.h qscrollareakineticscroller.h metrics.h
-SOURCES += main.cpp qkineticscroller.cpp qscrollareakineticscroller.cpp metrics.cpp
+HEADERS += qkineticscroller.h qkineticscroller_p.h qscrollareakineticscroller.h metricswidget.h
+SOURCES += main.cpp qkineticscroller.cpp qscrollareakineticscroller.cpp metricswidget.cpp
diff --git a/main.cpp b/main.cpp
index 2c44120..6d272d7 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,7 +1,7 @@
#include <QtGui>
#include "qscrollareakineticscroller.h"
-#include "metrics.h"
+#include "metricswidget.h"
int main(int argc, char **argv)
{
@@ -16,7 +16,7 @@ int main(int argc, char **argv)
QScrollAreaKineticScroller *s = new QScrollAreaKineticScroller();
s->setWidget(lw);
- QWidget *metrics = metricsWidget(s);
+ QWidget *metrics = new MetricsWidget(s);
QHBoxLayout *lay = new QHBoxLayout(w);
lay->addWidget(lw);
diff --git a/metrics.h b/metrics.h
deleted file mode 100644
index 14d8624..0000000
--- a/metrics.h
+++ /dev/null
@@ -1,2 +0,0 @@
-
-extern QWidget *metricsWidget(QKineticScroller *scroller);
diff --git a/metrics.cpp b/metricswidget.cpp
index 0fda845..e79d62c 100644
--- a/metrics.cpp
+++ b/metricswidget.cpp
@@ -1,4 +1,6 @@
#include <QtGui>
+
+#include "metricswidget.h"
#include "qkineticscroller.h"
struct MetricItem
@@ -171,14 +173,14 @@ MetricItem items[QKineticScroller::ScrollMetricCount] = {
#undef METRIC
-QGridLayout *createControlGrid(QWidget *parent, QKineticScroller *scroller)
+QGridLayout *MetricsWidget::createControlGrid()
{
QGridLayout *grid = new QGridLayout();
int row = 0;
for (int i = 0; i < QKineticScroller::ScrollMetricCount; i++) {
- ItemUpdater *u = new ItemUpdater(items + i, scroller);
- u->setParent(parent);
+ ItemUpdater *u = new ItemUpdater(items + i, m_scroller);
+ u->setParent(this);
grid->addWidget(u->nameLabel(), row, 0);
grid->addWidget(u->valueControl(), row, 1);
@@ -191,12 +193,95 @@ QGridLayout *createControlGrid(QWidget *parent, QKineticScroller *scroller)
return grid;
}
-QWidget *metricsWidget(QKineticScroller *scroller)
+class HackScroller : public QKineticScroller {
+public:
+ using QKineticScroller::viewportSize;
+ using QKineticScroller::maximumContentPosition;
+};
+
+MetricsWidget::MetricsWidget(QKineticScroller *scroller)
+ : QWidget(), m_scroller(scroller)
+{
+ setWindowTitle(QLatin1String("Kinetic Scroller Metrics"));
+ QVBoxLayout *layout = new QVBoxLayout(this);
+ QGroupBox *grp;
+ QGridLayout *grid;
+
+ grp = new QGroupBox(QLatin1String("General"));
+ grid = new QGridLayout();
+ QCheckBox *onoff = new QCheckBox(QLatin1String("Enabled"));
+ onoff->setChecked(m_scroller->isEnabled());
+ connect(onoff, SIGNAL(toggled(bool)), this, SLOT(enabledChanged(bool)));
+ grid->addWidget(onoff, 0, 0, 1, 2);
+ grid->addWidget(new QLabel("DPI"), 1, 0);
+ QSpinBox *dpi = new QSpinBox();
+ dpi->setRange(10, 1000);
+ dpi->setSuffix(QLatin1String(" dpi"));
+ dpi->setValue(m_scroller->dpi());
+ connect(dpi, SIGNAL(valueChanged(int)), this, SLOT(dpiChanged(int)));
+ grid->addWidget(dpi, 1, 1);
+
+ grid->addWidget(new QLabel("Overshoot Policy"), 2, 0);
+ m_ospolicy = new QComboBox();
+ m_ospolicy->addItem("When Scrollable", QKineticScroller::OvershootWhenScrollable);
+ m_ospolicy->addItem("Always On", QKineticScroller::OvershootAlwaysOn);
+ m_ospolicy->addItem("Always Off", QKineticScroller::OvershootAlwaysOff);
+ m_ospolicy->setCurrentIndex(m_ospolicy->findData(m_scroller->overshootPolicy()));
+ connect(m_ospolicy, SIGNAL(currentIndexChanged(int)), this, SLOT(overshootPolicyChanged(int)));
+ grid->addWidget(m_ospolicy, 2, 1);
+ grp->setLayout(grid);
+ layout->addWidget(grp);
+
+ grp = new QGroupBox(QLatin1String("Scroll Metrics"));
+ grid = createControlGrid();
+ grp->setLayout(grid);
+ layout->addWidget(grp);
+
+ grp = new QGroupBox(QLatin1String("Scroll To"));
+ grid = new QGridLayout();
+
+ QSizeF vp = static_cast<HackScroller *>(m_scroller)->viewportSize();
+ QPointF maxc = static_cast<HackScroller *>(m_scroller)->maximumContentPosition();
+
+ m_scrollx = new QSpinBox();
+ m_scrollx->setRange(int(-vp.width()), int(maxc.x() + vp.width()));
+ m_scrollx->setSuffix(QLatin1String(" pix"));
+ m_scrolly = new QSpinBox();
+ m_scrolly->setRange(int(-vp.height()), int(maxc.y() + vp.height()));
+ m_scrolly->setSuffix(QLatin1String(" pix"));
+ m_scrolltime = new QSpinBox();
+ m_scrolltime->setRange(0, 10000);
+ m_scrolltime->setValue(1000);
+ m_scrolltime->setSuffix(QLatin1String(" ms"));
+ QPushButton *go = new QPushButton(QLatin1String("Go"));
+ connect(go, SIGNAL(clicked()), this, SLOT(scrollTo()));
+ grid->addWidget(m_scrollx, 0, 0);
+ grid->addWidget(m_scrolly, 0, 1);
+ grid->addWidget(m_scrolltime, 0, 2);
+ grid->addWidget(go, 0, 3);
+
+ grp->setLayout(grid);
+ layout->addWidget(grp);
+}
+
+void MetricsWidget::enabledChanged(bool on)
+{
+ m_scroller->setEnabled(on);
+}
+
+void MetricsWidget::dpiChanged(int dpi)
+{
+ m_scroller->setDpi(dpi);
+}
+
+void MetricsWidget::overshootPolicyChanged(int index)
+{
+ m_scroller->setOvershootPolicy(static_cast<QKineticScroller::OvershootPolicy>(m_ospolicy->itemData(index).toInt()));
+}
+
+void MetricsWidget::scrollTo()
{
- QWidget *w = new QWidget();
- w->setWindowTitle(QLatin1String("Kinetic Scroller Metrics"));
- w->setLayout(createControlGrid(w, scroller));
- return w;
+ m_scroller->scrollTo(QPointF(m_scrollx->value(), m_scrolly->value()), m_scrolltime->value());
}
-#include "metrics.moc"
+#include "metricswidget.moc"
diff --git a/metricswidget.h b/metricswidget.h
new file mode 100644
index 0000000..955dc12
--- /dev/null
+++ b/metricswidget.h
@@ -0,0 +1,29 @@
+#ifndef METRICSWIDGET_H
+#define METRICSWIDGET_H
+
+#include <QtGui>
+
+class QKineticScroller;
+
+class MetricsWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ MetricsWidget(QKineticScroller *scroller);
+
+private slots:
+ void enabledChanged(bool on);
+ void dpiChanged(int dpi);
+ void overshootPolicyChanged(int index);
+ void scrollTo();
+
+private:
+ QGridLayout *createControlGrid();
+
+ QKineticScroller *m_scroller;
+ QSpinBox *m_scrollx, *m_scrolly, *m_scrolltime;
+ QComboBox *m_ospolicy;
+};
+
+#endif