diff options
author | Robert Griebl <rgriebl@trolltech.com> | 2010-04-14 14:40:51 +0200 |
---|---|---|
committer | Robert Griebl <rgriebl@trolltech.com> | 2010-04-14 14:40:51 +0200 |
commit | 3a80c2e66884dd706a16fc4e89835410811d3d2c (patch) | |
tree | 3982a2a2e886c7da7a2a073723ff03448edf3522 | |
parent | 3d0e9c5aa5b560e85ee761a55ca40f4c31acf232 (diff) |
improved the settings side panel
-rw-r--r-- | kineticscroller.pro | 4 | ||||
-rw-r--r-- | main.cpp | 4 | ||||
-rw-r--r-- | metrics.h | 2 | ||||
-rw-r--r-- | metricswidget.cpp (renamed from metrics.cpp) | 103 | ||||
-rw-r--r-- | metricswidget.h | 29 |
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 @@ -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 |