summaryrefslogtreecommitdiffstats
path: root/kolf/objects/test/test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kolf/objects/test/test.cpp')
-rw-r--r--kolf/objects/test/test.cpp104
1 files changed, 104 insertions, 0 deletions
diff --git a/kolf/objects/test/test.cpp b/kolf/objects/test/test.cpp
new file mode 100644
index 00000000..2c3d564f
--- /dev/null
+++ b/kolf/objects/test/test.cpp
@@ -0,0 +1,104 @@
+#include <qbrush.h>
+#include <qcolor.h>
+#include <qcanvas.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qslider.h>
+
+#include <klocale.h>
+#include <klibloader.h>
+#include <kapplication.h>
+#include <kdebug.h>
+#include <kconfig.h>
+
+#include "test.h"
+
+K_EXPORT_COMPONENT_FACTORY(libkolftest, TestFactory)
+QObject *TestFactory::createObject (QObject * /*parent*/, const char * /*name*/, const char * /*classname*/, const QStringList & /*args*/)
+{ return new TestObj; }
+
+Test::Test(QCanvas *canvas)
+ : QCanvasEllipse(60, 40, canvas), count(0), m_switchEvery(20)
+{
+ // force to the bottom of other objects
+ setZ(-100000);
+
+ // we want calls to advance() even though we have no velocity
+ setAnimated(true);
+}
+
+void Test::advance(int phase)
+{
+ QCanvasEllipse::advance(phase);
+
+ // phase is either 0 or 1, only calls with 1 should be handled
+ if (phase == 1)
+ {
+ // this makes it so the body is called every
+ // m_switchEvery times
+ if (count % m_switchEvery == 0)
+ {
+ // random color
+ const QColor myColor((QRgb)(kapp->random() % 0x01000000));
+
+ // set the brush, so our shape is drawn
+ // with the random color
+ setBrush(QBrush(myColor));
+
+ count = 0;
+ }
+
+ count++;
+ }
+}
+
+void Test::save(KConfig *cfg)
+{
+ // save our option from the course
+ // (courses are represented as KConfig files)
+ cfg->writeEntry("switchEvery", switchEvery());
+}
+
+void Test::load(KConfig *cfg)
+{
+ // load our option
+ setSwitchEvery(cfg->readNumEntry("switchEvery", 50));
+}
+
+TestConfig::TestConfig(Test *test, QWidget *parent)
+ : Config(parent), m_test(test)
+{
+ QVBoxLayout *layout = new QVBoxLayout(this, marginHint(), spacingHint());
+
+ layout->addStretch();
+
+ layout->addWidget(new QLabel(i18n("Flash speed"), this));
+
+ QHBoxLayout *hlayout = new QHBoxLayout(layout, spacingHint());
+ QLabel *slow = new QLabel(i18n("Slow"), this);
+ hlayout->addWidget(slow);
+ QSlider *slider = new QSlider(1, 100, 5, 101 - m_test->switchEvery(), Qt::Horizontal, this);
+ hlayout->addWidget(slider);
+ QLabel *fast = new QLabel(i18n("Fast"), this);
+ hlayout->addWidget(fast);
+
+ layout->addStretch();
+
+ connect(slider, SIGNAL(valueChanged(int)), this, SLOT(switchEveryChanged(int)));
+}
+
+void TestConfig::switchEveryChanged(int news)
+{
+ // update our object
+ m_test->setSwitchEvery((101 - news));
+
+ // tells Kolf the hole was modified
+ changed();
+}
+
+Config *Test::config(QWidget *parent)
+{
+ return new TestConfig(this, parent);
+}
+
+#include "test.moc"