Qt Virtual Chart Table (QVCT)
CTrackOverlayActionsView.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] 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  CTrackOverlay* __poTrackOverlay = QVCTRuntime::useTrackOverlay();
92  QTreeWidgetItem* __pqTreeWidgetItem_current = __poTrackOverlay->currentItem();
93  if( !__pqTreeWidgetItem_current ) break;
94  switch( __pqTreeWidgetItem_current->type() )
95  {
96 
98  {
99  int __iHead = 0, __iTail = __pqTreeWidgetItem_current->childCount()-1;
100  while( __iTail > __iHead )
101  {
102  QTreeWidgetItem* __pqTreeWidgetItem_head = __pqTreeWidgetItem_current->child( __iHead );
103  QTreeWidgetItem* __pqTreeWidgetItem_tail = __pqTreeWidgetItem_current->child( __iTail );
104  __pqTreeWidgetItem_current->removeChild( __pqTreeWidgetItem_head );
105  __pqTreeWidgetItem_current->removeChild( __pqTreeWidgetItem_tail );
106  __pqTreeWidgetItem_current->insertChild( __iHead++, __pqTreeWidgetItem_tail );
107  __pqTreeWidgetItem_current->insertChild( __iTail--, __pqTreeWidgetItem_head );
108  }
110  }
111  break;
112 
113  default:;
114 
115  }
116  }
117  while( false ); // error-catching block
118  QDialog::accept();
119 }
120 
122 {
123  do // error-catching block
124  {
125  CTrackOverlay* __poTrackOverlay = QVCTRuntime::useTrackOverlay();
126  QTreeWidgetItem* __pqTreeWidgetItem_current = __poTrackOverlay->currentItem();
127  if( !__pqTreeWidgetItem_current ) break;
128  switch( __pqTreeWidgetItem_current->type() )
129  {
130 
132  __pqTreeWidgetItem_current->sortChildren( CTrackOverlay::NAME, Qt::AscendingOrder );
134  break;
135 
136  default:;
137 
138  }
139  }
140  while( false ); // error-catching block
141  QDialog::accept();
142 }
143 
145 {
146  do // error-catching block
147  {
148  CTrackOverlay* __poTrackOverlay = QVCTRuntime::useTrackOverlay();
149  QTreeWidgetItem* __pqTreeWidgetItem_current = __poTrackOverlay->currentItem();
150  if( !__pqTreeWidgetItem_current ) break;
151  switch( __pqTreeWidgetItem_current->type() )
152  {
153 
155  __pqTreeWidgetItem_current->sortChildren( CTrackOverlay::NAME, Qt::DescendingOrder );
157  break;
158 
159  default:;
160 
161  }
162  }
163  while( false ); // error-catching block
164  QDialog::accept();
165 }
166 
168 {
169  do // error-catching block
170  {
171  if( !QVCTRuntime::useMainWindow()->deleteConfirm( tr("Selected point(s)") ) ) break;
172  QMutex* __pqMutexDataChange = QVCTRuntime::useMutexDataChange();
173  CTrackOverlay* __poTrackOverlay = QVCTRuntime::useTrackOverlay();
174  __pqMutexDataChange->lock();
175  bool __bModified = __poTrackOverlay->deleteSelection();
176  __pqMutexDataChange->unlock();
177  if( __bModified )
178  {
179  __poTrackOverlay->forceRedraw();
182  };
183  }
184  while( false ); // error-catching block
185  QDialog::accept();
186 }
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)
@ OVERLAY
(Base) overlay
void forceRedraw()
Forces this overlay's rendering (not matter its cache content)
Definition: COverlay.hpp:115
void slotDelete()
[UI:Slot] Slot to delete overlay's selected content
void constructLayout()
Constructs the layout of the user-interface.
QPushButton * pqPushButtonOrderAscending
[UI:Button] Order ascending
QPushButton * pqPushButtonDelete
[UI:Button] Delete
void slotOrderAscending()
[UI:Slot] Slot to order overlay's content in ascending direction
void slotOrderDescending()
[UI:Slot] Slot to order overlay's content in descending direction
QPushButton * pqPushButtonOrderDescending
[UI:Button] Order descending
void slotOrderInvert()
[UI:Slot] Slot to invert overlay's content order
QPushButton * pqPushButtonOrderInvert
[UI:Button] Order invert
[UI] Track overlay container
@ NAME
Track name.
int deleteSelection()
Deletes selected items within this overlay's containers.
static QMutex * useMutexDataChange()
static CMainWindow * useMainWindow()
static CChartTable * useChartTable()
static CTrackOverlay * useTrackOverlay()