File: intlabel.cpp

package info (click to toggle)
muse 0.6.3-3
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 8,936 kB
  • ctags: 7,446
  • sloc: cpp: 66,262; sh: 8,355; makefile: 755; ansic: 172
file content (126 lines) | stat: -rw-r--r-- 3,064 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
//=========================================================
//  MusE
//  Linux Music Editor
//    $Id: intlabel.cpp,v 1.1.1.1 2003/10/29 10:06:28 wschweer Exp $
//  (C) Copyright 1999 Werner Schweer (ws@seh.de)
//=========================================================

#include <stdio.h>

#include "intlabel.h"
#include <qvalidator.h>
#include <qpalette.h>
#include <stdio.h>

#include "utils.h"

//---------------------------------------------------------
//   IntLabel
//---------------------------------------------------------

IntLabel::IntLabel(int _val, int _min, int _max, QWidget* parent,
   int _off, const QString& str, int lPos)
      : Nentry(parent, str, lPos)
      {
      specialValue = "off";
      min = _min;
      max = _max;
      val = _val+1;           // dont optimize away
      off = _off;
      setValue(_val);
      int len = num2cols(min, max);
      setSize(len);
      }

void IntLabel::setSpecialValueText(const QString& s)
      {
      specialValue = s;
      setString(val);
      }

//---------------------------------------------------------
//   setString
//---------------------------------------------------------

bool IntLabel::setString(int v, bool editable)
      {
      if (v < min || v > max) {
            setText(QString("---"));
            return true;
            }
      else if (v == off) {
            if (editable)
                  setText(QString(""));
            else
                  setText(specialValue);
            }
      else {
            QString s;
            s.setNum(v);
            if (!editable)
                 s += suffix;
            setText(s);
            }
      return false;
      }

//---------------------------------------------------------
//   setSValue
//---------------------------------------------------------

bool IntLabel::setSValue(const QString& s)
      {
      int v;
      if (s == specialValue)
            v = off;
      else {
            bool ok;
            v = s.toInt(&ok);
            if (!ok)
                  return true;
            if (v < min)
                  v = min;
            if (v > max)
                  v = max;
            }
      if (v != val) {
            setValue(v);
            emit valueChanged(val);
            }
      return false;
      }

//---------------------------------------------------------
//   incValue
//---------------------------------------------------------

void IntLabel::incValue(int)
      {
      if (val < max) {
            setValue(val+1);
            emit valueChanged(val);
            }
      }

//---------------------------------------------------------
//   decValue
//---------------------------------------------------------

void IntLabel::decValue(int)
      {
      if (val > min) {
            setValue(val-1);
            emit valueChanged(val);
            }
      }

//---------------------------------------------------------
//   setOff
//---------------------------------------------------------

void IntLabel::setOff(int v)
      {
      off = v;
      setString(val);
      }