• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeutils API Reference
  • KDE Home
  • Contact Us
 

superkaramba

  • sources
  • kde-4.12
  • kdeutils
  • superkaramba
  • src
  • meters
meters/bar.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2003 by Hans Karlsson <karlsson.h@home.se> *
3  * Copyright (C) 2003 Matt Broadstone <mbroadst@gmail.com> *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) any later version. *
9  ***************************************************************************/
10 #include "bar.h"
11 #include "bar.moc"
12 
13 #include "karamba.h"
14 
15 #include <QPainter>
16 #include <QTimer>
17 
18 
19 Bar::Bar(Karamba* k, int x, int y, int width, int height)
20  : Meter(k, x, y, width, height)
21 {
22  m_value = 0;
23  m_minValue = 0;
24  m_maxValue = 100;
25  m_barValue = 0;
26  m_verticalBar = false;
27  m_oldBarValue = -1;
28 
29  m_timer = new QTimer(this);
30  connect(m_timer, SIGNAL(timeout()), this, SLOT(valueChanged()));
31 }
32 
33 Bar::~Bar()
34 {
35  delete m_timer;
36 }
37 
38 bool Bar::setImage(const QString &fileName)
39 {
40  QFileInfo fileInfo(fileName);
41  bool res = false;
42 
43  if (m_karamba->theme().isThemeFile(fileName)) {
44  QByteArray ba = m_karamba->theme().readThemeFile(fileName);
45  res = m_pixmap.loadFromData(ba);
46  } else
47  res = m_pixmap.load(fileName);
48 
49  m_pixmapWidth = m_pixmap.width();
50  m_pixmapHeight = m_pixmap.height();
51 
52  if (getWidth() == 0 || getHeight() == 0) {
53  setWidth(m_pixmapWidth);
54  setHeight(m_pixmapHeight);
55  }
56 
57  if (res)
58  m_imagePath = fileName;
59 
60  return res;
61 }
62 
63 QString Bar::getImage() const
64 {
65  return m_imagePath;
66 }
67 
68 void Bar::setValue(int v)
69 {
70  if (v > m_maxValue)
71  v = m_maxValue;
72 
73  if (v < m_minValue)
74  v = m_minValue;
75 
76  m_oldBarValue = m_barValue;
77  m_barValue = v;
78 
79  m_timer->start(5);
80 }
81 
82 void Bar::setValue(const QString &v)
83 {
84  setValue((int)(v.toDouble() + 0.5));
85 }
86 
87 int Bar::getValue() const
88 {
89  return m_barValue;
90 }
91 
92 void Bar::valueChanged()
93 {
94  int diff = m_maxValue - m_minValue;
95  int size = 0;
96 
97  if (diff != 0) {
98  if (m_verticalBar)
99  size = getHeight();
100  else
101  size = getWidth();
102 
103  if (m_oldBarValue < m_barValue) {
104  if (m_value < int((m_barValue - m_minValue)*size / diff + 0.5)) {
105  m_value++;
106  m_oldBarValue++;
107  } else
108  m_timer->stop();
109  } else if (m_oldBarValue > m_barValue) {
110  if (m_value > int((m_barValue - m_minValue)*size / diff + 0.5)) {
111  m_value--;
112  m_oldBarValue--;
113  } else
114  m_timer->stop();
115  } else {
116  m_timer->stop();
117  m_value = int((m_barValue - m_minValue) * size / diff + 0.5);
118  }
119  } else {
120  m_value = 0;
121  m_timer->stop();
122  }
123 
124  update();
125 }
126 
127 void Bar::setMax(int m)
128 {
129  Meter::setMax(m);
130  recalculateValue();
131 }
132 
133 void Bar::setMin(int m)
134 {
135  Meter::setMin(m);
136  recalculateValue();
137 }
138 
139 void Bar::setVertical(bool b)
140 {
141  m_verticalBar = b;
142 }
143 
144 int Bar::getVertical() const
145 {
146  return m_verticalBar;
147 }
148 
149 void Bar::recalculateValue()
150 {
151  setValue(m_barValue);
152 }
153 
154 void Bar::paint(QPainter *p, const QStyleOptionGraphicsItem *option,
155  QWidget *widget)
156 {
157  Q_UNUSED(option);
158  Q_UNUSED(widget);
159 
160  // only draw image if not hidden
161  if (!m_hidden) {
162  int width, height;
163  width = getWidth();
164  height = getHeight();
165 
166  if (m_verticalBar)
167  p->drawTiledPixmap(0, 0 + height - m_value, width, m_value, m_pixmap, 0, m_pixmapHeight
168  - m_value);
169  else // horizontal
170  p->drawTiledPixmap(0, 0, m_value, height, m_pixmap);
171  }
172 }
Bar::recalculateValue
void recalculateValue()
Definition: meters/bar.cpp:149
Meter::getHeight
virtual int getHeight() const
Definition: meters/meter.cpp:97
Meter::getWidth
virtual int getWidth() const
Definition: meters/meter.cpp:83
QWidget
Bar::Bar
Bar(Karamba *k, int x, int y, int width, int height)
Definition: meters/bar.cpp:19
Bar::getValue
int getValue() const
Definition: meters/bar.cpp:87
Bar::setVertical
void setVertical(bool)
Definition: meters/bar.cpp:139
Meter::setHeight
virtual void setHeight(int)
Definition: meters/meter.cpp:102
ThemeFile::isThemeFile
bool isThemeFile(const QString &filename) const
Definition: themefile.cpp:424
Bar::paint
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
Definition: meters/bar.cpp:154
Karamba::theme
const ThemeFile & theme() const
Definition: karamba.cpp:2071
Karamba
Definition: karamba.h:52
Bar::setImage
bool setImage(const QString &imagePath)
Definition: meters/bar.cpp:38
Bar::getVertical
int getVertical() const
Definition: meters/bar.cpp:144
Meter::m_hidden
bool m_hidden
Definition: meters/meter.h:78
Bar::~Bar
~Bar()
Definition: meters/bar.cpp:33
Meter::setWidth
virtual void setWidth(int)
Definition: meters/meter.cpp:88
Bar::setMin
virtual void setMin(int m)
Definition: meters/bar.cpp:133
bar.h
Bar::valueChanged
void valueChanged()
Definition: meters/bar.cpp:92
Meter::m_maxValue
int m_maxValue
Definition: meters/meter.h:80
Meter::setMax
virtual void setMax(int max)
Definition: meters/meter.cpp:126
Meter::m_karamba
Karamba * m_karamba
Definition: meters/meter.h:84
Meter::setMin
virtual void setMin(int min)
Definition: meters/meter.cpp:116
Meter
Definition: meters/meter.h:23
ThemeFile::readThemeFile
QByteArray readThemeFile(const QString &filename) const
Definition: themefile.cpp:443
Meter::m_minValue
int m_minValue
Definition: meters/meter.h:79
Bar::getImage
QString getImage() const
Definition: meters/bar.cpp:63
Bar::setValue
void setValue(const QString &)
Definition: meters/bar.cpp:82
Bar::setMax
virtual void setMax(int m)
Definition: meters/bar.cpp:127
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:07:19 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

superkaramba

Skip menu "superkaramba"
  • Main Page
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeutils API Reference

Skip menu "kdeutils API Reference"
  • ark
  • filelight
  • kcalc
  • kcharselect
  • kdf
  • kfloppy
  • kgpg
  • kremotecontrol
  • ktimer
  • kwallet
  • superkaramba
  • sweeper

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal