Blame view

app/gui/oven_control/cookbook.cpp 3.16 KB
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
1
2
3
4
  #include "cookbook.h"
  
  #include <QApplication>
  #include <QErrorMessage>
221a2fb64   김태훈   요리 이름에 다국어 지원
5
  #include "config.h"
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
6
7
8
9
10
11
12
  static QErrorMessage *errorDialog = NULL;
  static void showError(QString errorMessage)
  {
      if (errorDialog == NULL)
      {
          errorDialog = new QErrorMessage;
          errorDialog->setWindowModality(Qt::ApplicationModal);
b3e47756e   김태훈   소스 파일 일괄 변경
13
          errorDialog->setGeometry(QRect(0, 511, 1080, 511));
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
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
      }
  
      errorDialog->showMessage(errorMessage);
      errorDialog->exec();
  }
  
  CookBook::CookBook(Define::CookType type)
      : type(type)
  {
      switch (type)
      {
      case Define::Poultry:
          root = QString("/prime/cookbook/poultry/");
          break;
      case Define::Meat:
          root = QString("/prime/cookbook/meat/");
          break;
      case Define::Fish:
          root = QString("/prime/cookbook/fish/");
          break;
      case Define::Desert:
          root = QString("/prime/cookbook/desert/");
          break;
      case Define::Vegetable:
          root = QString("/prime/cookbook/vegetable/");
          break;
      case Define::Bread:
          root = QString("/prime/cookbook/bread/");
          break;
      case Define::Etc:
          root = QString("/prime/cookbook/etc/");
          break;
      default:
          return;
      }
  
      QFile file(root + "list.csv");
      if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
      {
          showError("File not found: " + file.fileName());
          return;
      }
221a2fb64   김태훈   요리 이름에 다국어 지원
56
      int cookNameSection;
2bc03da30   김태훈   컴파일 오류 제거
57
      Define::language_type lang = (Define::language_type) Config::getInstance()->getConfigValue(Define::config_language).d32;
221a2fb64   김태훈   요리 이름에 다국어 지원
58
59
60
61
62
63
64
65
66
67
68
69
70
71
      switch (lang)
      {
      case Define::language_kr:
          cookNameSection = 1;
          break;
      case Define::language_en:
          cookNameSection = 2;
          break;
      case Define::language_ch:
          cookNameSection = 3;
          break;
      default:
          cookNameSection = 1;
      }
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
      int lineCount = 0;
      while (!file.atEnd())
      {
          lineCount++;
  
          QString line = QString::fromUtf8(file.readLine()).trimmed();
          if (line.isEmpty())
              continue;
  
          if (line.startsWith("directory"))
              continue;
  
          QString errorMessage = QString("%3: %1, line %2").arg(file.fileName()).arg(lineCount);
  
          QString directory = line.section(',', 0, 0).trimmed();
          if (directory.isEmpty())
          {
              showError(errorMessage.arg("Directory name is missed"));
              continue;
          }
221a2fb64   김태훈   요리 이름에 다국어 지원
92
          QString cookname = line.section(',', cookNameSection, cookNameSection).trimmed();
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
93
94
95
96
97
          if (cookname.isEmpty())
          {
              showError(errorMessage.arg("Cook name is missed"));
              continue;
          }
d1404f93d   고영탁   GUI V1.0.4
98
99
100
          cookname.replace("\
  ", "
  ");
35b9cc32e   고영탁   다국어 지원 수정 및 메뉴얼 테...
101
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
          list.append(cookname);
          book.append(ListEntity { directory, cookname });
      }
  
      file.close();
  }
  
  Cook CookBook::get(int index)
  {
      if (index < book.size())
      {
          ListEntity e = book.at(index);
          return Cook(type, root + e.directory, e.name);
      }
  
      return Cook();
  }
f588aa273   김태훈   부가 기능 로직 추가
119
120
121
122
123
124
125
126
127
128
129
  QString CookBook::name(QString root)
  {
      QString directory = root.replace(this->root, "").replace("/", "").trimmed();
      foreach (ListEntity e, book)
      {
          if (e.directory == directory)
              return e.name;
      }
  
      return QString();
  }