forked from CCOMJHC/camp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdetailsview.cpp
107 lines (100 loc) · 3.05 KB
/
detailsview.cpp
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
#include "detailsview.h"
#include <QStandardItemModel>
#include "autonomousvehicleproject.h"
#include "backgroundraster.h"
#include "backgrounddetails.h"
#include "waypoint.h"
#include "waypointdetails.h"
#include "trackline.h"
#include "tracklinedetails.h"
#include "surveypattern.h"
#include "surveypatterndetails.h"
#include "platform.h"
#include "platformdetails.h"
#include "behavior.h"
#include "behaviordetails.h"
#include <QDebug>
DetailsView::DetailsView(QWidget *parent) : QWidget(parent), m_project(nullptr),currentWidget(nullptr)
{
backgroundDetails = new BackgroundDetails(this);
backgroundDetails->hide();
waypointDetails = new WaypointDetails(this);
waypointDetails->hide();
trackLineDetails = new TrackLineDetails(this);
trackLineDetails->hide();
surveyPatternDetails = new SurveyPatternDetails(this);
surveyPatternDetails->hide();
platformDetails = new PlatformDetails(this);
platformDetails->hide();
behaviorDetails = new BehaviorDetails(this);
behaviorDetails->hide();
}
QSize DetailsView::sizeHint() const
{
if(currentWidget)
return currentWidget->sizeHint();
return QWidget::sizeHint();
}
void DetailsView::setProject(AutonomousVehicleProject *project)
{
m_project = project;
}
void DetailsView::setCurrentWidget(QWidget *widget)
{
if(currentWidget != widget)
{
if(currentWidget)
currentWidget->hide();
currentWidget = widget;
if(currentWidget)
{
currentWidget->show();
updateGeometry();
}
}
}
void DetailsView::onCurrentItemChanged(const QModelIndex ¤t, const QModelIndex &previous)
{
MissionItem* mi = m_project->itemFromIndex(current);
qDebug() << "metaobject class name: " << mi->metaObject()->className();
QString itemType = mi->metaObject()->className();
if (itemType == "BackgroundRaster")
{
BackgroundRaster *bg = qobject_cast<BackgroundRaster*>(mi);
setCurrentWidget(backgroundDetails);
backgroundDetails->setBackgroundRaster(bg);
}
else if (itemType == "Waypoint")
{
Waypoint *wp = qobject_cast<Waypoint*>(mi);
setCurrentWidget(waypointDetails);
waypointDetails->setWaypoint(wp);
}
else if (itemType == "TrackLine")
{
TrackLine *tl = qobject_cast<TrackLine*>(mi);
setCurrentWidget(trackLineDetails);
trackLineDetails->setTrackLine(tl);
}
else if (itemType == "SurveyPattern")
{
SurveyPattern *sp = qobject_cast<SurveyPattern*>(mi);
setCurrentWidget(surveyPatternDetails);
surveyPatternDetails->setSurveyPattern(sp);
}
else if (itemType == "Platform")
{
Platform *p = qobject_cast<Platform*>(mi);
setCurrentWidget(platformDetails);
platformDetails->setPlatform(p);
}
else if (itemType == "Behavior")
{
Behavior *b = qobject_cast<Behavior*>(mi);
setCurrentWidget(behaviorDetails);
behaviorDetails->setBehavior(b);
}
else
setCurrentWidget(nullptr);
m_project->setCurrent(current);
}