Qt Virtual Chart Table (QVCT)
CRouteOverlayActionsView.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 <QHBoxLayout>
21 #include <QPushButton>
22 
23 // QVCT
24 #include "QVCTRuntime.hpp"
26 
27 
28 //------------------------------------------------------------------------------
29 // CONSTRUCTORS / DESTRUCTOR
30 //------------------------------------------------------------------------------
31 
33 {
35 }
36 
38 {
39  // Create the buttons
40  // ... order invert
41  pqPushButtonOrderInvert = new QPushButton( QIcon( ":icons/32x32/order_invert.png" ), "" );
42  pqPushButtonOrderInvert->setToolTip( tr("[overlay/route] Invert order") );
43  pqPushButtonOrderInvert->setMaximumSize( 36, 34 );
44  QWidget::connect( pqPushButtonOrderInvert, SIGNAL( clicked() ), this, SLOT( slotOrderInvert() ) );
45  // ... order ascending
46  pqPushButtonOrderAscending = new QPushButton( QIcon( ":icons/32x32/order_ascending.png" ), "" );
47  pqPushButtonOrderAscending->setToolTip( tr("[overlay] Sort in ascending order") );
48  pqPushButtonOrderAscending->setMaximumSize( 36, 34 );
49  QWidget::connect( pqPushButtonOrderAscending, SIGNAL( clicked() ), this, SLOT( slotOrderAscending() ) );
50  // ... order descending
51  pqPushButtonOrderDescending = new QPushButton( QIcon( ":icons/32x32/order_descending.png" ), "" );
52  pqPushButtonOrderDescending->setToolTip( tr("[overlay] Sort in descending order") );
53  pqPushButtonOrderDescending->setMaximumSize( 36, 34 );
54  QWidget::connect( pqPushButtonOrderDescending, SIGNAL( clicked() ), this, SLOT( slotOrderDescending() ) );
55  // ... save (dummy)
56  QPushButton* __pqPushButtonSave = new QPushButton( QIcon( ":icons/32x32/save_select.png" ), "" );
57  __pqPushButtonSave->setMaximumSize( 36, 34 );
58  __pqPushButtonSave->setEnabled( false );
59  // ... delete
60  pqPushButtonDelete = new QPushButton( QIcon( ":icons/32x32/delete_select.png" ), "" );
61  pqPushButtonDelete->setToolTip( tr("Delete selected waypoints") );
62  pqPushButtonDelete->setMaximumSize( 36, 34 );
63  QWidget::connect( pqPushButtonDelete, SIGNAL( clicked() ), this, SLOT( slotDelete() ) );
64 
65  // Add buttons
66  QHBoxLayout* __pqHBoxLayoutButtons = new QHBoxLayout();
67  __pqHBoxLayoutButtons->addWidget( pqPushButtonOrderInvert, 0, Qt::AlignLeft );
68  __pqHBoxLayoutButtons->addWidget( pqPushButtonOrderAscending, 0, Qt::AlignLeft );
69  __pqHBoxLayoutButtons->addWidget( pqPushButtonOrderDescending, 0, Qt::AlignLeft );
70  __pqHBoxLayoutButtons->addWidget( __pqPushButtonSave, 0, Qt::AlignLeft );
71  __pqHBoxLayoutButtons->addWidget( pqPushButtonDelete, 0, Qt::AlignLeft );
72 
73  // Set the layout
74  QDialog::setLayout( __pqHBoxLayoutButtons );
75 
76 }
77 
78 
79 //------------------------------------------------------------------------------
80 // METHODS
81 //------------------------------------------------------------------------------
82 
83 //
84 // SLOTS
85 //
86 
88 {
89  do // error-catching block
90  {
91  CRouteOverlay* __poRouteOverlay = QVCTRuntime::useRouteOverlay();
92  QTreeWidgetItem* __pqTreeWidgetItem_current = __poRouteOverlay->currentItem();
93  if( !__pqTreeWidgetItem_current ) break;
94  switch( __pqTreeWidgetItem_current->type() )
95  {
96 
99  {
100  int __iHead = 0, __iTail = __pqTreeWidgetItem_current->childCount()-1;
101  while( __iTail > __iHead )
102  {
103  QTreeWidgetItem* __pqTreeWidgetItem_head = __pqTreeWidgetItem_current->child( __iHead );
104  QTreeWidgetItem* __pqTreeWidgetItem_tail = __pqTreeWidgetItem_current->child( __iTail );
105  __pqTreeWidgetItem_current->removeChild( __pqTreeWidgetItem_head );
106  __pqTreeWidgetItem_current->removeChild( __pqTreeWidgetItem_tail );
107  __pqTreeWidgetItem_current->insertChild( __iHead++, __pqTreeWidgetItem_tail );
108  __pqTreeWidgetItem_current->insertChild( __iTail--, __pqTreeWidgetItem_head );
109  }
110  if( __pqTreeWidgetItem_current->type() == COverlayObject::CONTAINER )
111  {
112  __poRouteOverlay->forceRedraw();
114  }
116  }
117  break;
118 
119  default:;
120 
121  }
122  }
123  while( false ); // error-catching block
124  QDialog::accept();
125 }
126 
128 {
129  do // error-catching block
130  {
131  CRouteOverlay* __poRouteOverlay = QVCTRuntime::useRouteOverlay();
132  QTreeWidgetItem* __pqTreeWidgetItem_current = __poRouteOverlay->currentItem();
133  if( !__pqTreeWidgetItem_current ) break;
134  switch( __pqTreeWidgetItem_current->type() )
135  {
136 
138  __pqTreeWidgetItem_current->sortChildren( CRouteOverlay::NAME, Qt::AscendingOrder );
140  break;
141 
142  default:;
143 
144  }
145  }
146  while( false ); // error-catching block
147  QDialog::accept();
148 }
149 
151 {
152  do // error-catching block
153  {
154  CRouteOverlay* __poRouteOverlay = QVCTRuntime::useRouteOverlay();
155  QTreeWidgetItem* __pqTreeWidgetItem_current = __poRouteOverlay->currentItem();
156  if( !__pqTreeWidgetItem_current ) break;
157  switch( __pqTreeWidgetItem_current->type() )
158  {
159 
161  __pqTreeWidgetItem_current->sortChildren( CRouteOverlay::NAME, Qt::DescendingOrder );
163  break;
164 
165  default:;
166 
167  }
168  }
169  while( false ); // error-catching block
170  QDialog::accept();
171 }
172 
174 {
175  do // error-catching block
176  {
177  if( !QVCTRuntime::useMainWindow()->deleteConfirm( tr("Selected waypoint(s)") ) ) break;
178  QMutex* __pqMutexDataChange = QVCTRuntime::useMutexDataChange();
179  CRouteOverlay* __poRouteOverlay = QVCTRuntime::useRouteOverlay();
180  __pqMutexDataChange->lock();
181  bool __bModified = __poRouteOverlay->deleteSelection();
182  __pqMutexDataChange->unlock();
183  if( __bModified )
184  {
185  __poRouteOverlay->forceRedraw();
188  };
189  }
190  while( false ); // error-catching block
191  QDialog::accept();
192 }
void setProjectModified()
Sets the status of the project to modified (data have changed and need saving)
void updateChart()
Update the (current) chart content (on screen)
@ CONTAINER
Container.
@ OVERLAY
(Base) overlay
void forceRedraw()
Forces this overlay's rendering (not matter its cache content)
Definition: COverlay.hpp:115
QPushButton * pqPushButtonOrderInvert
[UI:Button] Order invert
void slotDelete()
[UI:Slot] Slot to delete overlay's selected content
void constructLayout()
Constructs the layout of the user-interface.
QPushButton * pqPushButtonOrderDescending
[UI:Button] Order descending
void slotOrderInvert()
[UI:Slot] Slot to invert content order
QPushButton * pqPushButtonDelete
[UI:Button] Delete
QPushButton * pqPushButtonOrderAscending
[UI:Button] Order ascending
void slotOrderDescending()
[UI:Slot] Slot to order content in descending direction
void slotOrderAscending()
[UI:Slot] Slot to order content in ascending direction
[UI] Route overlay container
int deleteSelection()
Deletes selected items within this overlay's containers.
@ NAME
Route name.
static QMutex * useMutexDataChange()
static CRouteOverlay * useRouteOverlay()
static CMainWindow * useMainWindow()
static CChartTable * useChartTable()