Blame view

app/gui/oven_control/preheattempgauge.cpp 1.7 KB
6f96c947a   김태훈   GUI 0.1.4
1
2
3
4
5
6
7
  #include "preheattempgauge.h"
  
  #include <QPainter>
  #include <QtDebug>
  
  PreheatTempGauge::PreheatTempGauge(QWidget *parent) : QWidget(parent)
  {
05f2a7552   김태훈   image 관리 구조 변경
8
9
10
      border.load(":/images/gauge/bar_short_frame.png");
      indicator.load(":/images/gauge/bar_indicator.png");
      body.load(":/images/gauge/bar_short_red.png");
6f96c947a   김태훈   GUI 0.1.4
11
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
12
      val = 0;
6f96c947a   김태훈   GUI 0.1.4
13
14
15
16
17
18
      min = 0;
      max = 1;
  }
  
  void PreheatTempGauge::setValue(int value)
  {
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
19
20
21
22
      if (value == val)
          return;
  
      val = qBound(min, value, max);
6f96c947a   김태훈   GUI 0.1.4
23
24
25
26
27
28
  
      update();
  }
  
  void PreheatTempGauge::setMinimum(int minimum)
  {
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
29
30
      if (minimum == min)
          return;
6f96c947a   김태훈   GUI 0.1.4
31
32
      min = minimum;
      max = qMax(min, max);
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
33
      val = qBound(min, val, max);
6f96c947a   김태훈   GUI 0.1.4
34
35
36
37
38
39
  
      update();
  }
  
  void PreheatTempGauge::setMaximum(int maximum)
  {
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
40
41
      if (maximum == max)
          return;
6f96c947a   김태훈   GUI 0.1.4
42
43
      max = maximum;
      min = qMin(min, max);
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
44
      val = qBound(min, val, max);
6f96c947a   김태훈   GUI 0.1.4
45
46
47
48
49
50
51
52
53
  
      update();
  }
  
  void PreheatTempGauge::paintEvent(QPaintEvent */*event*/)
  {
      QPainter painter(this);
      painter.setBrush(Qt::NoBrush);
      painter.setPen(Qt::NoPen);
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
54
      qreal percentage = (qreal) (val - min) / qMax(max - min, 1);
6f96c947a   김태훈   GUI 0.1.4
55
56
57
58
59
60
61
62
63
64
65
66
67
      percentage = qBound((qreal) 0.0, percentage, (qreal) 1.0);
  
      QRect targetRect(
                  (border.size().width() - body.size().width()) / 2 + indicator.size().width() / 2,
                  (border.size().height() - body.size().height()) / 2 + indicator.size().height(),
                  body.size().width() * percentage, body.height());
  
      QRect sourceRect(0, 0, body.size().width() * percentage, body.height());
  
      painter.drawPixmap(targetRect, body, sourceRect);
      painter.drawPixmap(indicator.size().width() / 2, indicator.size().height(), border);
      painter.drawPixmap(targetRect.right() - indicator.size().width() / 2, 0, indicator);
  }