Blame view

app/gui/oven_control/dirtylevel.cpp 2.38 KB
8e11aab8d   김태훈   파일 위치 변경
1
2
3
4
5
6
  #include "dirtylevel.h"
  
  #include <QDateTime>
  
  namespace {
  QDateTime cookStartTime;
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
7
  bool cookStarted = false;
8e11aab8d   김태훈   파일 위치 변경
8
9
  qint64 cookingTime;
  int cookingCount;
29a473b4e   김태훈   청결/관리 상태 기능 뼈대 추가
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
  
  void decountState(int level)
  {
      int current = DirtyLevel::state();
      int target = qMax(current - level, 0);
      switch (target)
      {
      case 0:
          cookingCount = 0;
          break;
      case 1:
          cookingCount = 1;
          break;
      case 2:
          cookingCount = 6;
          break;
      case 3:
          cookingCount = 11;
          break;
      case 4:
          cookingCount = 16;
          break;
      case 5:
          cookingCount = 21;
          break;
      }
  }
8e11aab8d   김태훈   파일 위치 변경
37
38
39
40
41
  }
  
  
  void DirtyLevel::cookStart()
  {
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
42
      cookStarted = true;
093c536e0   김태훈   컴파일 오류 수정
43
      cookStartTime = QDateTime::currentDateTime();
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
44
      ::cookingCount++;
8e11aab8d   김태훈   파일 위치 변경
45
46
47
48
  }
  
  void DirtyLevel::cookEnd()
  {
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
49
50
51
52
53
      if (cookStarted)
      {
          cookStarted = true;
          ::cookingTime += cookStartTime.secsTo(QDateTime::currentDateTime());
      }
8e11aab8d   김태훈   파일 위치 변경
54
  }
29a473b4e   김태훈   청결/관리 상태 기능 뼈대 추가
55
56
57
58
59
  void DirtyLevel::wash(int type)
  {
      switch (type)
      {
      case 1:
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
60
          ::cookingTime = qMax(::cookingTime - 2 * 3600, (qint64) 0);
29a473b4e   김태훈   청결/관리 상태 기능 뼈대 추가
61
62
63
          decountState(1);
          break;
      case 2:
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
64
          ::cookingTime = qMax(::cookingTime - 3 * 3600, (qint64) 0);
29a473b4e   김태훈   청결/관리 상태 기능 뼈대 추가
65
66
67
          decountState(1);
          break;
      case 3:
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
68
          ::cookingTime = qMax(::cookingTime - 4 * 3600, (qint64) 0);
29a473b4e   김태훈   청결/관리 상태 기능 뼈대 추가
69
70
71
          decountState(2);
          break;
      case 4:
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
72
          ::cookingTime = qMax(::cookingTime - 10 * 3600, (qint64) 0);
29a473b4e   김태훈   청결/관리 상태 기능 뼈대 추가
73
74
75
          decountState(2);
          break;
      case 5:
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
76
          ::cookingTime = qMax(::cookingTime - 2 * 3600, (qint64) 0);
29a473b4e   김태훈   청결/관리 상태 기능 뼈대 추가
77
78
79
80
          decountState(1);
          break;
      }
  }
8e11aab8d   김태훈   파일 위치 변경
81
82
  int DirtyLevel::dirty()
  {
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
83
      if (::cookingCount < 1)
8e11aab8d   김태훈   파일 위치 변경
84
          return 0;
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
85
      if (::cookingTime < 1 * 3600)
8e11aab8d   김태훈   파일 위치 변경
86
          return 1;
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
87
      if (::cookingTime < 3 * 3600)
8e11aab8d   김태훈   파일 위치 변경
88
          return 2;
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
89
      if (::cookingTime < 5 * 3600)
8e11aab8d   김태훈   파일 위치 변경
90
          return 3;
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
91
      if (::cookingTime < 7 * 3600)
8e11aab8d   김태훈   파일 위치 변경
92
93
94
95
96
97
          return 4;
      return 5;
  }
  
  int DirtyLevel::state()
  {
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
98
      if (::cookingCount < 1)
8e11aab8d   김태훈   파일 위치 변경
99
          return 0;
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
100
      if (::cookingCount <= 5)
8e11aab8d   김태훈   파일 위치 변경
101
          return 1;
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
102
      if (::cookingCount <= 10)
8e11aab8d   김태훈   파일 위치 변경
103
          return 2;
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
104
      if (::cookingCount <= 15)
8e11aab8d   김태훈   파일 위치 변경
105
          return 3;
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
106
      if (::cookingCount <= 20)
8e11aab8d   김태훈   파일 위치 변경
107
108
109
          return 4;
      return 5;
  }
f4f894f09   김태훈   청결/관리 상태 저장 값 Get...
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
  
  void DirtyLevel::setCookingTime(qint64 secs)
  {
      ::cookingTime = secs;
  }
  
  int DirtyLevel::cookingTime()
  {
      return ::cookingTime;
  }
  
  int DirtyLevel::cookingCount()
  {
      return ::cookingCount;
  }
  
  void DirtyLevel::setCookingCount(int count)
  {
      ::cookingCount = count;
  }