1
//=========================================================
4
// $Id: nentry.cpp,v 1.1 2002/01/30 14:54:03 muse Exp $
5
// (C) Copyright 1999 Werner Schweer (ws@seh.de)
6
//=========================================================
15
#include <qapplication.h>
25
NentryFilter::NentryFilter(QObject* parent)
30
void Nentry::setText(const QString& s)
35
//---------------------------------------------------------
37
//---------------------------------------------------------
39
bool NentryFilter::eventFilter(QObject*, QEvent* event)
41
Nentry* e = (Nentry*)parent();
42
if (event->type() == QEvent::MouseButtonPress) {
43
e->mousePress((QMouseEvent*)event);
46
if (event->type() == QEvent::MouseMove) {
47
e->mouseMove((QMouseEvent*)event);
50
if (event->type() == QEvent::MouseButtonDblClick) {
51
e->mouseDoubleClick((QMouseEvent*)event);
54
if (event->type() == QEvent::MouseButtonRelease) {
55
e->mouseRelease((QMouseEvent*)event);
58
if (event->type() == QEvent::Wheel) {
59
e->wheel((QWheelEvent*)event);
62
if (event->type() == QEvent::KeyPress) {
63
return e->keyPress((QKeyEvent*)event);
68
//---------------------------------------------------------
70
// lineedit int values
71
//---------------------------------------------------------
73
Nentry::Nentry(QWidget* parent, const QString& txt = "",
74
int _lPos = 0, bool dark=false) : QFrame(parent)
78
edit = new QLineEdit(this);
79
timer = new QTimer(this);
80
filter = new NentryFilter(this);
82
edit->installEventFilter(filter);
83
edit->setFrame(drawFrame);
85
connect(timer, SIGNAL(timeout()), SLOT(repeat()));
86
connect(edit, SIGNAL(returnPressed()), SLOT(endEdit()));
87
edit->setCursor(QCursor(arrowCursor));
88
// edit->setFont(font3);
90
layout = new QHBoxLayout(this);
92
layout->addWidget(edit, 1, AlignHCenter);
95
label = new QLabel(txt, this);
97
layout->addStretch(5);
98
layout->addSpacing(5);
99
layout->addWidget(label);
100
layout->addSpacing(5);
101
layout->addWidget(edit);
102
layout->addSpacing(5);
103
layout->addStretch(5);
106
label->setAlignment(AlignLeft);
107
layout->addWidget(edit, 0, AlignRight);
108
layout->addSpacing(5);
109
layout->addWidget(label, 100, AlignRight|AlignVCenter);
115
edit->setFocusPolicy(NoFocus);
118
void Nentry::setFocusPolicy(FocusPolicy policy)
120
edit->setFocusPolicy(policy);
123
void Nentry::setDark()
125
const QPalette& oldpalette = edit->palette();
126
QColorGroup cg1 = oldpalette.normal();
127
cg1.setColor(QColorGroup::Base, cg1.background());
128
QPalette newpalette(cg1, cg1, cg1);
129
edit->setPalette(newpalette);
132
//---------------------------------------------------------
134
//---------------------------------------------------------
136
void Nentry::setSize(int n)
138
QString s("0000000000000000");
139
QFontMetrics fm = edit->fontMetrics();
144
w = fm.width('0') * n;
146
edit->setFixedSize(w + 14, 15);
149
//---------------------------------------------------------
151
//---------------------------------------------------------
153
void Nentry::setFrame(bool flag)
156
edit->setFrame(drawFrame);
159
//---------------------------------------------------------
161
//---------------------------------------------------------
163
void Nentry::endEdit()
165
if (edit->edited()) {
166
if (setSValue(edit->text())) {
167
setString(val, false);
170
edit->setEdited(false);
177
edit->setFrame(false);
178
setString(val, false);
181
//---------------------------------------------------------
183
//---------------------------------------------------------
185
void Nentry::mousePress(QMouseEvent* event)
187
button = event->button();
190
if (event->button() == QMouseEvent::LeftButton) {
191
focusW = qApp->focusWidget();
193
edit->setFrame(true);
194
setString(val, true);
199
timer->start(TIMER1);
203
//---------------------------------------------------------
205
//---------------------------------------------------------
207
void Nentry::repeat()
209
if (timecount == 1) {
212
timer->start(TIMER2);
216
if (timecount == TIMEC) {
218
timer->start(TIMER3);
220
if (timecount == TIMEC2) {
222
timer->start(TIMER4);
226
case QMouseEvent::LeftButton:
228
case QMouseEvent::MidButton:
231
case QMouseEvent::RightButton:
242
//---------------------------------------------------------
244
//---------------------------------------------------------
246
void Nentry::mouseRelease(QMouseEvent* event)
248
button = QMouseEvent::NoButton;
250
if (event->button() != QMouseEvent::LeftButton) {
257
//---------------------------------------------------------
259
//---------------------------------------------------------
261
void Nentry::mouseMove(QMouseEvent*)
264
case QMouseEvent::LeftButton:
266
case QMouseEvent::MidButton:
268
case QMouseEvent::RightButton:
275
//---------------------------------------------------------
277
//---------------------------------------------------------
279
void Nentry::mouseDoubleClick(QMouseEvent* event)
281
if (event->button() != QMouseEvent::LeftButton) {
287
//---------------------------------------------------------
289
//---------------------------------------------------------
291
void Nentry::wheel(QWheelEvent* event)
293
int n = event->delta();
301
//---------------------------------------------------------
303
//---------------------------------------------------------
305
void Nentry::setValue(int v)
310
// edit->setCursorPosition(-1);
312
edit->setFrame(false);
313
edit->setEnabled(false);
316
edit->setEnabled(true);
321
//---------------------------------------------------------
323
//---------------------------------------------------------
325
bool Nentry::keyPress(QKeyEvent* event)
327
bool shift = event->state() & ShiftButton;
328
bool ctrl = event->state() & ControlButton;
329
int key = event->key();
363
case Key_Up: incValue(0); return true;
364
case Key_Down: decValue(0); return true;