Qt Virtual Chart Table (QVCT)
COverlayDetailView.cpp
Go to the documentation of this file.
1 // INDENTING (emacs/vi): -*- mode:c++; tab-width:2; c-basic-offset:2; intent-tabs-mode:nil; -*- ex: set tabstop=2 expandtab:
2 
3 /*
4  * Qt Virtual Chart Table (QVCT)
5  * Copyright (C) 2012 Cedric Dufour <http://cedric.dufour.name>
6  * Author: Cedric Dufour <http://cedric.dufour.name>
7  *
8  * The Qt Virtual Chart Table (QVCT) is free software:
9  * you can redistribute it and/or modify it under the terms of the GNU General
10  * Public License as published by the Free Software Foundation, Version 3.
11  *
12  * The Qt Virtual Chart Table (QVCT) is distributed in the hope
13  * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
14  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15  *
16  * See the GNU General Public License for more details.
17  */
18 
19 // QT
20 #include <QDockWidget>
21 #include <QStackedWidget>
22 #include <QWidget>
23 
24 // QVCT
25 #include "QVCTRuntime.hpp"
27 
28 
29 //------------------------------------------------------------------------------
30 // CONSTRUCTORS / DESTRUCTOR
31 //------------------------------------------------------------------------------
32 
34  : QDockWidget( tr("Overlay Detail"), _pqParent )
35  , pqStackedWidget( 0 )
36 {
37  QDockWidget::setObjectName( "OverlayDetail" ); // required to save main window's state
38  QDockWidget::setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea );
40 }
41 
43 {
44  // Create stacked widget
45  pqStackedWidget = new QStackedWidget();
46 
47  // Add overlay
48 
49  // ... pointer (COverlayDetailView::POINTER_POINT)
50  CPointerPointDetailView* __poPointerPointDetailView = new CPointerPointDetailView();
51  QVCTRuntime::registerPointerPointDetailView( __poPointerPointDetailView );
52  pqStackedWidget->addWidget( __poPointerPointDetailView );
53 
54  // ... landmark container (COverlayDetailView::LANDMARK_CONTAINER)
55  CLandmarkContainerDetailView* __poLandmarkContainerDetailView = new CLandmarkContainerDetailView();
56  QVCTRuntime::registerLandmarkContainerDetailView( __poLandmarkContainerDetailView );
57  pqStackedWidget->addWidget( __poLandmarkContainerDetailView );
58 
59  // ... landmark point (COverlayDetailView::LANDMARK_POINT)
60  CLandmarkPointDetailView* __poLandmarkPointDetailView = new CLandmarkPointDetailView();
61  QVCTRuntime::registerLandmarkPointDetailView( __poLandmarkPointDetailView );
62  pqStackedWidget->addWidget( __poLandmarkPointDetailView );
63 
64  // ... route container (COverlayDetailView::ROUTE_CONTAINER)
65  CRouteContainerDetailView* __poRouteContainerDetailView = new CRouteContainerDetailView();
66  QVCTRuntime::registerRouteContainerDetailView( __poRouteContainerDetailView );
67  pqStackedWidget->addWidget( __poRouteContainerDetailView );
68 
69  // ... route point (COverlayDetailView::ROUTE_POINT)
70  CRoutePointDetailView* __poRoutePointDetailView = new CRoutePointDetailView();
71  QVCTRuntime::registerRoutePointDetailView( __poRoutePointDetailView );
72  pqStackedWidget->addWidget( __poRoutePointDetailView );
73 
74  // ... track container (COverlayDetailView::TRACK_CONTAINER)
75  CTrackContainerDetailView* __poTrackContainerDetailView = new CTrackContainerDetailView();
76  QVCTRuntime::registerTrackContainerDetailView( __poTrackContainerDetailView );
77  pqStackedWidget->addWidget( __poTrackContainerDetailView );
78 
79  // ... track sub-container (COverlayDetailView::TRACK_SUBCONTAINER)
80  CTrackSubContainerDetailView* __poTrackSubContainerDetailView = new CTrackSubContainerDetailView();
81  QVCTRuntime::registerTrackSubContainerDetailView( __poTrackSubContainerDetailView );
82  pqStackedWidget->addWidget( __poTrackSubContainerDetailView );
83 
84  // ... track point (COverlayDetailView::TRACK_POINT)
85  CTrackPointDetailView* __poTrackPointDetailView = new CTrackPointDetailView();
86  QVCTRuntime::registerTrackPointDetailView( __poTrackPointDetailView );
87  pqStackedWidget->addWidget( __poTrackPointDetailView );
88 
89  // ... vessel container (COverlayDetailView::VESSEL_CONTAINER)
90  CVesselContainerDetailView* __poVesselContainerDetailView = new CVesselContainerDetailView();
91  QVCTRuntime::registerVesselContainerDetailView( __poVesselContainerDetailView );
92  pqStackedWidget->addWidget( __poVesselContainerDetailView );
93 
94  // ... vessel container's device (COverlayDetailView::VESSEL_CONTAINER_DEVICE)
95  CVesselContainerDeviceDetailView* __poVesselContainerDeviceDetailView = new CVesselContainerDeviceDetailView();
96  QVCTRuntime::registerVesselContainerDeviceDetailView( __poVesselContainerDeviceDetailView );
97  pqStackedWidget->addWidget( __poVesselContainerDeviceDetailView );
98 
99  // ... vessel point (COverlayDetailView::VESSEL_POINT)
100  CVesselPointDetailView* __poVesselPointDetailView = new CVesselPointDetailView();
101  QVCTRuntime::registerVesselPointDetailView( __poVesselPointDetailView );
102  pqStackedWidget->addWidget( __poVesselPointDetailView );
103 
104  // ... vessel point's device (COverlayDetailView::VESSEL_POINT_DEVICE)
105  CVesselPointDeviceDetailView* __poVesselPointDeviceDetailView = new CVesselPointDeviceDetailView();
106  QVCTRuntime::registerVesselPointDeviceDetailView( __poVesselPointDeviceDetailView );
107  pqStackedWidget->addWidget( __poVesselPointDeviceDetailView );
108 
109  // ... device (COverlayDetailView::DEVICE)
110  CDeviceDetailView* __poDeviceDetailView = new CDeviceDetailView();
111  QVCTRuntime::registerDeviceDetailView( __poDeviceDetailView );
112  pqStackedWidget->addWidget( __poDeviceDetailView );
113 
114  // Finalize
115  pqStackedWidget->setMaximumHeight( pqStackedWidget->minimumSizeHint().height() );
116  QDockWidget::setWidget( pqStackedWidget );
117 }
118 
119 
120 //------------------------------------------------------------------------------
121 // METHODS
122 //------------------------------------------------------------------------------
123 
124 //
125 // OTHER
126 //
127 
129 {
130  if( QVCTRuntime::useChartTable()->getOverlayPointMove() ) return; // NOTE: Prevent view switching when moving a point
131  pqStackedWidget->setCurrentIndex( eView );
132 }
[UI] device's detail view
[UI] Landmark container's detail view
[UI] Landmark item's detail view
COverlayDetailView(QWidget *_pqParent=0)
void switchView(EView eView)
Displays the requested container/item details (switching to the appropriate widget)
QStackedWidget * pqStackedWidget
Stacked widget to present all viewable overlays.
void constructLayout()
Constructs the layout of the user-interface.
[UI] Pointer item's detail view
[UI] Route container's detail view
[UI] Route item's detail view
[UI] Track container's detail view
[UI] Track item's detail view
[UI] Track sub-container's detail view
[UI] Vessel container's detail view
[UI] Vessel item's detail view
[UI] Vessel point's detail view
static void registerVesselPointDetailView(CVesselPointDetailView *_poVesselPointDetailView)
static void registerVesselPointDeviceDetailView(CVesselPointDeviceDetailView *_poVesselPointDeviceDetailView)
static void registerVesselContainerDeviceDetailView(CVesselContainerDeviceDetailView *_poVesselContainerDeviceDetailView)
static void registerVesselContainerDetailView(CVesselContainerDetailView *_poVesselContainerDetailView)
static void registerLandmarkPointDetailView(CLandmarkPointDetailView *_poLandmarkPointDetailView)
static void registerRouteContainerDetailView(CRouteContainerDetailView *_poRouteContainerDetailView)
static void registerRoutePointDetailView(CRoutePointDetailView *_poRoutePointDetailView)
static void registerDeviceDetailView(CDeviceDetailView *_poDeviceDetailView)
static void registerLandmarkContainerDetailView(CLandmarkContainerDetailView *_poLandmarkContainerDetailView)
static void registerTrackPointDetailView(CTrackPointDetailView *_poTrackPointDetailView)
static void registerTrackSubContainerDetailView(CTrackSubContainerDetailView *_poTrackSubContainerDetailView)
static void registerPointerPointDetailView(CPointerPointDetailView *_poPointerPointDetailView)
static void registerTrackContainerDetailView(CTrackContainerDetailView *_poTrackContainerDetailView)
static CChartTable * useChartTable()