21 |
21 |
22 #include <QMouseEvent> |
22 #include <QMouseEvent> |
23 #include <QPainter> |
23 #include <QPainter> |
24 |
24 |
25 ItemNum::ItemNum(const QImage& im, const QImage& img, QWidget * parent, unsigned char min, unsigned char max) : |
25 ItemNum::ItemNum(const QImage& im, const QImage& img, QWidget * parent, unsigned char min, unsigned char max) : |
26 QFrame(parent), m_im(im), m_img(img), infinityState(false), nonInteractive(false), minItems(min), maxItems(max), |
26 QFrame(parent), m_im(im), m_img(img), infinityState(false), nonInteractive(false), minItems(min), maxItems(max), |
27 numItems(min+2 >= max ? min : min+2) |
27 numItems(min+2 >= max ? min : min+2) |
28 { |
28 { |
29 enabled = true; |
29 enabled = true; |
30 //if(frontendEffects) setAttribute(Qt::WA_PaintOnScreen, true); |
30 //if(frontendEffects) setAttribute(Qt::WA_PaintOnScreen, true); |
31 } |
31 } |
32 |
32 |
34 { |
34 { |
35 } |
35 } |
36 |
36 |
37 void ItemNum::mousePressEvent ( QMouseEvent * event ) |
37 void ItemNum::mousePressEvent ( QMouseEvent * event ) |
38 { |
38 { |
39 if(nonInteractive) return; |
39 if(nonInteractive) return; |
40 if(event->button()==Qt::LeftButton && enabled) { |
40 if(event->button()==Qt::LeftButton && enabled) |
41 event->accept(); |
41 { |
42 if((infinityState && numItems <= maxItems) || (!infinityState && numItems < maxItems)) { |
42 event->accept(); |
43 incItems(); |
43 if((infinityState && numItems <= maxItems) || (!infinityState && numItems < maxItems)) |
44 } else { |
44 { |
45 numItems = minItems+1; |
45 incItems(); |
46 // appears there's an emit in there |
46 } |
47 decItems(); |
47 else |
|
48 { |
|
49 numItems = minItems+1; |
|
50 // appears there's an emit in there |
|
51 decItems(); |
|
52 } |
48 } |
53 } |
49 } else if (event->button()==Qt::RightButton && enabled) { |
54 else if (event->button()==Qt::RightButton && enabled) |
50 event->accept(); |
55 { |
51 if(numItems > minItems) { |
56 event->accept(); |
52 decItems(); |
57 if(numItems > minItems) |
53 } else { |
58 { |
54 numItems = maxItems+(infinityState?0:-1); |
59 decItems(); |
55 incItems(); |
60 } |
|
61 else |
|
62 { |
|
63 numItems = maxItems+(infinityState?0:-1); |
|
64 incItems(); |
|
65 } |
56 } |
66 } |
57 } else { |
67 else |
58 event->ignore(); |
68 { |
59 return; |
69 event->ignore(); |
60 } |
70 return; |
61 repaint(); |
71 } |
|
72 repaint(); |
62 } |
73 } |
63 void ItemNum::wheelEvent ( QWheelEvent * event ) |
74 void ItemNum::wheelEvent ( QWheelEvent * event ) |
64 { |
75 { |
65 if (nonInteractive) return; |
76 if (nonInteractive) return; |
66 if (!enabled) |
77 if (!enabled) |
84 else |
95 else |
85 { |
96 { |
86 if(numItems > minItems) |
97 if(numItems > minItems) |
87 decItems(); |
98 decItems(); |
88 } |
99 } |
89 repaint(); |
100 repaint(); |
90 } |
101 } |
91 |
102 |
92 QSize ItemNum::sizeHint () const |
103 QSize ItemNum::sizeHint () const |
93 { |
104 { |
94 return QSize((maxItems+1)*12, 32); |
105 return QSize((maxItems+1)*12, 32); |
95 } |
106 } |
96 |
107 |
97 void ItemNum::paintEvent(QPaintEvent* event) |
108 void ItemNum::paintEvent(QPaintEvent* event) |
98 { |
109 { |
99 Q_UNUSED(event); |
110 Q_UNUSED(event); |
100 |
111 |
101 QPainter painter(this); |
112 QPainter painter(this); |
102 |
113 |
103 if (numItems==maxItems+1) { |
114 if (numItems==maxItems+1) |
104 QRect target(0, 0, 100, 32); |
115 { |
105 if (enabled) { |
116 QRect target(0, 0, 100, 32); |
106 painter.drawImage(target, QImage(":/res/infinity.png")); |
117 if (enabled) |
107 } else { |
118 { |
108 painter.drawImage(target, QImage(":/res/infinitygrey.png")); |
119 painter.drawImage(target, QImage(":/res/infinity.png")); |
|
120 } |
|
121 else |
|
122 { |
|
123 painter.drawImage(target, QImage(":/res/infinitygrey.png")); |
|
124 } |
109 } |
125 } |
110 } else { |
126 else |
111 for(int i=0; i<numItems; i++) { |
127 { |
112 QRect target(11 * i, i % 2, 25, 35); |
128 for(int i=0; i<numItems; i++) |
113 if (enabled) { |
129 { |
114 painter.drawImage(target, m_im); |
130 QRect target(11 * i, i % 2, 25, 35); |
115 } else { |
131 if (enabled) |
116 painter.drawImage(target, m_img); |
132 { |
117 } |
133 painter.drawImage(target, m_im); |
|
134 } |
|
135 else |
|
136 { |
|
137 painter.drawImage(target, m_img); |
|
138 } |
|
139 } |
118 } |
140 } |
119 } |
|
120 } |
141 } |
121 |
142 |
122 unsigned char ItemNum::getItemsNum() const |
143 unsigned char ItemNum::getItemsNum() const |
123 { |
144 { |
124 return numItems; |
145 return numItems; |
125 } |
146 } |
126 |
147 |
127 void ItemNum::setItemsNum(const unsigned char num) |
148 void ItemNum::setItemsNum(const unsigned char num) |
128 { |
149 { |
129 numItems=num; |
150 numItems=num; |
130 repaint(); |
151 repaint(); |
131 } |
152 } |
132 |
153 |
133 void ItemNum::setInfinityState(bool value) |
154 void ItemNum::setInfinityState(bool value) |
134 { |
155 { |
135 infinityState=value; |
156 infinityState=value; |
136 } |
157 } |
137 |
158 |
138 void ItemNum::setEnabled(bool value) |
159 void ItemNum::setEnabled(bool value) |
139 { |
160 { |
140 enabled=value; |
161 enabled=value; |
141 repaint(); |
162 repaint(); |
142 } |
163 } |