summaryrefslogtreecommitdiffstats
path: root/ksysv/SpinBox.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ksysv/SpinBox.cpp')
-rw-r--r--ksysv/SpinBox.cpp87
1 files changed, 87 insertions, 0 deletions
diff --git a/ksysv/SpinBox.cpp b/ksysv/SpinBox.cpp
new file mode 100644
index 0000000..63a217a
--- /dev/null
+++ b/ksysv/SpinBox.cpp
@@ -0,0 +1,87 @@
+// (c) 2000 Peter Putzer
+
+#include <qlineedit.h>
+
+#include <kdebug.h>
+
+#include "ksv_core.h"
+#include "SpinBox.h"
+
+KSVSpinBox::KSVSpinBox (QWidget* parent, const char* name)
+ : QSpinBox (0, 99, 1, parent, name),
+ KCompletionBase (),
+ mClearedSelection (false)
+{
+ KCompletion* comp = ksv::numberCompletion();
+ setCompletionObject (comp, true);
+
+ editor()->installEventFilter (this);
+
+ connect (editor(), SIGNAL (textChanged (const QString&)),
+ comp, SLOT (slotMakeCompletion (const QString&)));
+ connect (comp, SIGNAL (match (const QString&)),
+ this, SLOT (handleMatch (const QString&)));
+}
+
+KSVSpinBox::~KSVSpinBox ()
+{
+}
+
+QString KSVSpinBox::mapValueToText (int value)
+{
+ QString result;
+
+ if (value < 10)
+ result.sprintf("%.2i", value);
+ else
+ result.setNum (value);
+
+ return result;
+}
+
+void KSVSpinBox::setCompletedText (const QString& text)
+{
+ QLineEdit* e = editor ();
+ const int pos = e->cursorPosition();
+
+ e->setText (text);
+
+ e->setSelection (pos, text.length());
+ e->setCursorPosition (pos);
+}
+
+void KSVSpinBox::setCompletedItems (const QStringList& /*items*/)
+{
+ // dont know what is supposed to be in here but it has to be defined
+ // because else the lack of this damn thing is making it abstract
+}
+
+void KSVSpinBox::handleMatch (const QString& match)
+{
+ if (!match.isNull() && editor()->text().length() < 2 && !mClearedSelection)
+ setCompletedText (match);
+}
+
+bool KSVSpinBox::eventFilter (QObject* o, QEvent* e)
+{
+ Q_UNUSED(o);
+ if (e->type() == QEvent::KeyPress)
+ {
+ QKeyEvent* ke = static_cast<QKeyEvent*> (e);
+
+ switch (ke->key())
+ {
+ case Key_BackSpace:
+ case Key_Delete:
+ mClearedSelection = true;
+ break;
+
+ default:
+ mClearedSelection = false;
+ }
+ }
+
+ return false;
+}
+
+#include "SpinBox.moc"