Subversion Repositories Scribus

Rev

Rev 75 | Rev 80 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 paul 1
/***************************************************************************
2
                          mspinbox.cpp  -  description
3
                             -------------------
4
    begin                : Sat Jun 16 2001
5
    copyright            : (C) 2001 by Franz Schmid
6
    email                : Franz.Schmid@altmuehlnet.de
7
 ***************************************************************************/
8
 
9
/***************************************************************************
10
 *                                                                         *
11
 *   This program is free software; you can redistribute it and/or modify  *
12
 *   it under the terms of the GNU General Public License as published by  *
13
 *   the Free Software Foundation; either version 2 of the License, or     *
14
 *   (at your option) any later version.                                   *
15
 *                                                                         *
16
 ***************************************************************************/
17
 
18
#include "mspinbox.h"
19
#include "qapplication.h"
20
 
21
MSpinBox::MSpinBox(QWidget *pa, int s):QSpinBox(pa)
22
{
23
        switch (s)
24
                {
25
                case 1:
26
                        Decimals = 10;
27
                        Width = 1;
28
                        break;
29
                case 2:
30
                        Decimals = 100;
31
                        Width = 2;
32
                default:
33
                        Decimals = 100;
34
                        Width = 2;
35
                        break;
36
                }
37
        setValidator(0);
77 Franz 38
        ed = editor();
3 paul 39
}
40
 
41
bool MSpinBox::eventFilter( QObject* ob, QEvent* ev )
42
{
43
        bool retval = FALSE;
44
        if ( ev->type() == QEvent::KeyPress )
45
                {
46
                QKeyEvent* k = (QKeyEvent*)ev;
47
                if (k->key() == Key_Shift)
48
                        {
49
                        setLineStep(Decimals / 10);
50
                        retval = true;
51
            qApp->sendEvent( this, ev );
52
                        return retval;
53
                        }
54
                }
55
        if ( ev->type() == QEvent::KeyRelease )
56
                {
57
                QKeyEvent* k = (QKeyEvent*)ev;
58
                if (k->key() == Key_Shift)
59
                        {
60
                        setLineStep(Decimals);
61
                        retval = true;
62
            qApp->sendEvent( this, ev );
63
                        return retval;
64
                        }
65
                }
66
        return QSpinBox::eventFilter(ob, ev);
67
}
68
 
69
QString MSpinBox::mapValueToText(int value)
70
{
75 Franz 71
        double dez;
68 Franz 72
        if (Width == 1)
75 Franz 73
                dez = 10.0;
68 Franz 74
        else
75 Franz 75
                dez = 100.0;
68 Franz 76
        return QString::number(static_cast<double>(value) / dez, 'f', Width);
3 paul 77
}
78
 
79
int MSpinBox::mapTextToValue(bool *)
80
{
75 Franz 81
        float dez;
68 Franz 82
        if (Width == 1)
75 Franz 83
                dez = 10.0;
68 Franz 84
        else
75 Franz 85
                dez = 100.0;
68 Franz 86
        return int(qRound(text().toFloat()*dez));
3 paul 87
}
88
 
89
void MSpinBox::setDecimals(int deci)
90
{
91
        Decimals = deci;
92
        setLineStep(Decimals);
93
        if (deci > 9)
94
                Width = 1;
95
        if (deci > 99)
96
                Width = 2;
97
}