-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathLocationTabController.cpp
More file actions
118 lines (103 loc) · 4.53 KB
/
LocationTabController.cpp
File metadata and controls
118 lines (103 loc) · 4.53 KB
1
2
3
4
5
6
7
8
9
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/***********************************************************************************************************************
* OpenStudio(R), Copyright (c) OpenStudio Coalition and other contributors.
* See also https://openstudiocoalition.org/about/software_license/
***********************************************************************************************************************/
#include "LocationTabController.hpp"
#include "LifeCycleCostsTabView.hpp"
#include "LocationTabView.hpp"
#include "GroundTemperatureView.hpp"
#include "UtilityBillsView.hpp"
#include "UtilityBillsController.hpp"
#include <openstudio/model/Model.hpp>
#include <openstudio/model/Model_Impl.hpp>
#include <openstudio/model/RunPeriod.hpp>
#include <openstudio/model/RunPeriod_Impl.hpp>
#include <openstudio/model/WeatherFile.hpp>
#include <openstudio/model/WeatherFile_Impl.hpp>
#include <openstudio/model/YearDescription.hpp>
#include <openstudio/model/YearDescription_Impl.hpp>
#include <QLabel>
#include <QStackedWidget>
namespace openstudio {
LocationTabController::LocationTabController(bool isIP, const model::Model& model, const QString& modelTempDir)
: MainTabController(new LocationTabView(model, modelTempDir)), m_modelTempDir(modelTempDir), m_model(model), m_isIP(isIP) {
mainContentWidget()->addSubTab(tr("Weather File && Design Days"), WEATHER_FILE);
mainContentWidget()->addSubTab(tr("Life Cycle Costs"), LIFE_CYCLE_COSTS);
mainContentWidget()->addSubTab(tr("Utility Bills"), UTILITY_BILLS);
mainContentWidget()->addSubTab(tr("Ground Temperatures"), GROUND_TEMPERATURES);
// setSubTab(0);
auto* locationView = new LocationView(m_isIP, m_model, m_modelTempDir);
connect(this, &LocationTabController::toggleUnitsClicked, locationView, &LocationView::toggleUnitsClicked);
this->mainContentWidget()->setSubTab(locationView);
m_currentView = locationView;
connect(this, &LocationTabController::toggleUnitsClicked, this, [this](bool isIP) { m_isIP = isIP; });
connect(this->mainContentWidget(), &MainTabView::tabSelected, this, &LocationTabController::setSubTab);
}
LocationTabController::~LocationTabController() {
disconnect(this->mainContentWidget(), &MainTabView::tabSelected, this, &LocationTabController::setSubTab);
}
bool LocationTabController::showUtilityBills() {
// Determine if the utility bill sub-tab is shown
boost::optional<model::YearDescription> yearDescription = m_model.yearDescription();
if (yearDescription) {
boost::optional<int> calendarYear = yearDescription.get().calendarYear();
if (calendarYear) {
boost::optional<model::WeatherFile> weatherFile = m_model.weatherFile();
if (weatherFile) {
boost::optional<model::RunPeriod> runPeriod = m_model.getOptionalUniqueModelObject<model::RunPeriod>();
return runPeriod.is_initialized();
}
}
}
// Oops, missing some needed object above, so default to warning
return false;
}
void LocationTabController::setSubTab(int index) {
if (m_currentIndex == index) {
return;
}
m_currentIndex = index;
if (m_currentView != nullptr) {
delete m_currentView;
}
switch (index) {
case 0: {
auto* locationView = new LocationView(m_isIP, m_model, m_modelTempDir);
connect(this, &LocationTabController::toggleUnitsClicked, locationView, &LocationView::toggleUnitsClicked);
this->mainContentWidget()->setSubTab(locationView);
m_currentView = locationView;
break;
}
case 1: {
auto* lifeCycleCostsView = new LifeCycleCostsView(m_model);
this->mainContentWidget()->setSubTab(lifeCycleCostsView);
m_currentView = lifeCycleCostsView;
break;
}
case 2: {
if (showUtilityBills()) {
auto* utilityBillsController = new UtilityBillsController(m_model);
this->mainContentWidget()->setSubTab(utilityBillsController->subTabView());
m_currentView = utilityBillsController->subTabView()->inspectorView();
} else {
auto* label = new QLabel();
label->setPixmap(QPixmap(":/images/utility_calibration_warning.png"));
label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
this->mainContentWidget()->setSubTab(label);
m_currentView = label;
}
break;
}
case 3: {
auto* gtView = new GroundTemperatureView(m_isIP, m_model);
connect(this, &LocationTabController::toggleUnitsClicked, gtView, &GroundTemperatureView::toggleUnitsClicked);
this->mainContentWidget()->setSubTab(gtView);
m_currentView = gtView;
break;
}
default:
OS_ASSERT(false);
break;
}
}
} // namespace openstudio