From a9ac871ce0b631f98adde8ce1e6daf2aa2cc2e83 Mon Sep 17 00:00:00 2001 From: Mark Liversedge Date: Mon, 25 Feb 2013 22:41:48 +0000 Subject: [PATCH] Splitter for Train View .. icons and basics. Wanted three treeviews to work on the issue related to treeviews not expanding properly. --- src/TrainTool.cpp | 66 +++++++++------------------------- src/TrainTool.h | 16 +++------ src/application.qrc | 3 ++ src/images/sidebar/folder.png | Bin 0 -> 211 bytes src/images/sidebar/movie.png | Bin 0 -> 232 bytes src/images/sidebar/power.png | Bin 0 -> 227 bytes 6 files changed, 24 insertions(+), 61 deletions(-) create mode 100755 src/images/sidebar/folder.png create mode 100755 src/images/sidebar/movie.png create mode 100755 src/images/sidebar/power.png diff --git a/src/TrainTool.cpp b/src/TrainTool.cpp index a4fd13ab6..53f3ff81e 100644 --- a/src/TrainTool.cpp +++ b/src/TrainTool.cpp @@ -115,9 +115,7 @@ TrainTool::TrainTool(MainWindow *parent, const QDir &home) : GcWindow(parent), h deviceTree->header()->hide(); deviceTree->setAlternatingRowColors (false); deviceTree->setIndentation(5); - allDevices = new QTreeWidgetItem(deviceTree, HEAD_TYPE); - allDevices->setText(0, tr("Devices")); - deviceTree->expandItem(allDevices); + deviceTree->expandItem(deviceTree->invisibleRootItem()); deviceTree->setContextMenuPolicy(Qt::CustomContextMenu); workoutModel = new QSqlTableModel(this, trainDB->connection()); @@ -283,19 +281,20 @@ TrainTool::TrainTool(MainWindow *parent, const QDir &home) : GcWindow(parent), h recordSelector->setChecked(Qt::Checked); recordSelector->hide(); // we don't let users change this for now - trainSplitter = new QSplitter; - trainSplitter->setHandleWidth(1); - trainSplitter->setFrameStyle(QFrame::NoFrame); - trainSplitter->setOrientation(Qt::Vertical); + trainSplitter = new GcSplitter(Qt::Vertical); trainSplitter->setContentsMargins(0,0,0,0); - trainSplitter->setLineWidth(0); - trainSplitter->setMidLineWidth(0); - + deviceItem = new GcSplitterItem(tr("Devices"), QIcon(QPixmap(":images/sidebar/power.png")), this); + workoutItem = new GcSplitterItem(tr("Workouts"), QIcon(QPixmap(":images/sidebar/folder.png")), this); + deviceItem->addWidget(deviceTree); + trainSplitter->addWidget(deviceItem); + workoutItem->addWidget(workoutTree); + trainSplitter->addWidget(workoutItem); cl->addWidget(trainSplitter); - trainSplitter->addWidget(deviceTree); - trainSplitter->addWidget(workoutTree); + #if defined Q_OS_MAC || defined GC_HAVE_VLC - trainSplitter->addWidget(mediaTree); + mediaItem = new GcSplitterItem(tr("Media"), QIcon(QPixmap(":images/sidebar/movie.png")), this); + mediaItem->addWidget(mediaTree); + trainSplitter->addWidget(mediaItem); #endif #ifdef Q_OS_MAC @@ -333,7 +332,6 @@ TrainTool::TrainTool(MainWindow *parent, const QDir &home) : GcWindow(parent), h // now the GUI is setup lets sort our control variables gui_timer = new QTimer(this); disk_timer = new QTimer(this); - stream_timer = new QTimer(this); load_timer = new QTimer(this); session_time = QTime(); @@ -405,7 +403,7 @@ TrainTool::configChanged() // DEVICES // zap whats there - QList devices = allDevices->takeChildren(); + QList devices = deviceTree->invisibleRootItem()->takeChildren(); for (int i=0; ivalue(this, TRAIN_MULTI, false).toBool() == true) @@ -422,7 +420,7 @@ TrainTool::configChanged() for (int i=0; iinvisibleRootItem(), i); device->setText(0, Devices.at(i).name); // Create the controllers for each device @@ -447,7 +445,7 @@ TrainTool::configChanged() // select the first device if (Devices.count()) { - deviceTree->setCurrentItem(allDevices->child(0)); + deviceTree->setCurrentItem(deviceTree->invisibleRootItem()->child(0)); } // And select default workout to Ergo QModelIndex firstWorkout = sortModel->index(0, 0, QModelIndex()); @@ -461,26 +459,6 @@ TrainTool::configChanged() useMetricUnits = main->useMetricUnits; } -/*---------------------------------------------------------------------- - * Race Server Selected - *----------------------------------------------------------------------*/ -void -TrainTool::serverTreeWidgetSelectionChanged() -{ - serverSelected(); -} - -int -TrainTool::selectedServerNumber() -{ - if (serverTree->selectedItems().isEmpty()) return -1; - - QTreeWidgetItem *selected = serverTree->selectedItems().first(); - - if (selected->type() == HEAD_TYPE) return -1; - else return selected->type(); -} - /*---------------------------------------------------------------------- * Device Selected *--------------------------------------------------------------------*/ @@ -634,7 +612,6 @@ void TrainTool::Start() // when start button is pressed status &=~RT_PAUSED; foreach(int dev, devices()) Devices[dev].controller->restart(); gui_timer->start(REFRESHRATE); - if (status & RT_STREAMING) stream_timer->start(STREAMRATE); if (status & RT_RECORDING) disk_timer->start(SAMPLERATE); load_period.restart(); if (status & RT_WORKOUT) load_timer->start(LOADRATE); @@ -656,7 +633,6 @@ void TrainTool::Start() // when start button is pressed foreach(int dev, devices()) Devices[dev].controller->pause(); status |=RT_PAUSED; gui_timer->stop(); - if (status & RT_STREAMING) stream_timer->stop(); if (status & RT_RECORDING) disk_timer->stop(); if (status & RT_WORKOUT) load_timer->stop(); load_msecs += load_period.restart(); @@ -753,12 +729,6 @@ void TrainTool::Start() // when start button is pressed disk_timer->start(SAMPLERATE); // start screen } } - - // stream - if (status & RT_STREAMING) { - stream_timer->start(STREAMRATE); - } - gui_timer->start(REFRESHRATE); // start recording } @@ -776,7 +746,6 @@ void TrainTool::Pause() // pause capture to recalibrate status &=~RT_PAUSED; foreach(int dev, devices()) Devices[dev].controller->restart(); gui_timer->start(REFRESHRATE); - if (status & RT_STREAMING) stream_timer->start(STREAMRATE); if (status & RT_RECORDING) disk_timer->start(SAMPLERATE); load_period.restart(); if (status & RT_WORKOUT) load_timer->start(LOADRATE); @@ -795,7 +764,6 @@ void TrainTool::Pause() // pause capture to recalibrate foreach(int dev, devices()) Devices[dev].controller->pause(); status |=RT_PAUSED; gui_timer->stop(); - if (status & RT_STREAMING) stream_timer->stop(); if (status & RT_RECORDING) disk_timer->stop(); if (status & RT_WORKOUT) load_timer->stop(); load_msecs += load_period.restart(); @@ -1169,7 +1137,6 @@ void TrainTool::Calibrate() lap_time.start(); load_period.restart(); if (status & RT_WORKOUT) load_timer->start(LOADRATE); - if (status & RT_STREAMING) stream_timer->start(STREAMRATE); if (status & RT_RECORDING) disk_timer->start(SAMPLERATE); main->notifyUnPause(); // get video started again, amongst other things @@ -1205,7 +1172,6 @@ void TrainTool::Calibrate() session_elapsed_msec += session_time.elapsed(); lap_elapsed_msec += lap_time.elapsed(); - if (status & RT_STREAMING) stream_timer->stop(); if (status & RT_RECORDING) disk_timer->stop(); if (status & RT_WORKOUT) load_timer->stop(); load_msecs += load_period.restart(); @@ -1518,7 +1484,7 @@ TrainTool::deleteDevice() // Delete the selected device QTreeWidgetItem *selected = deviceTree->selectedItems().first(); - int index = allDevices->indexOfChild(selected); + int index = deviceTree->invisibleRootItem()->indexOfChild(selected); if (index < 0 || index > list.size()) return; diff --git a/src/TrainTool.h b/src/TrainTool.h index e604cfec7..7e437fc5d 100644 --- a/src/TrainTool.h +++ b/src/TrainTool.h @@ -27,6 +27,7 @@ #include "DeviceTypes.h" #include "ErgFile.h" #include "ErgFilePlot.h" +#include "GcSideBarItem.h" // standard stuff #include @@ -83,11 +84,8 @@ class TrainTool : public GcWindow const QTreeWidgetItem *currentWorkout() { return workout; } const QTreeWidgetItem *currentMedia() { return media; } const QTreeWidgetItem *workoutItems() { return allWorkouts; } - const QTreeWidgetItem *currentServer() { return server; } - const QTreeWidgetItem *serverItems() { return allServers; } int selectedDeviceNumber(); - int selectedServerNumber(); // set labels when ergfile selected etc void setLabels(); @@ -113,13 +111,11 @@ class TrainTool : public GcWindow signals: void deviceSelected(); - void serverSelected(); void start(); void pause(); void stop(); private slots: - void serverTreeWidgetSelectionChanged(); void deviceTreeWidgetSelectionChanged(); void workoutTreeWidgetSelectionChanged(); void mediaTreeWidgetSelectionChanged(); @@ -165,7 +161,10 @@ class TrainTool : public GcWindow const QDir home; MainWindow *main; - QSplitter *trainSplitter; + GcSplitter *trainSplitter; + GcSplitterItem *deviceItem, + *workoutItem, + *mediaItem; QWidget *toolbarButtons; @@ -173,15 +172,11 @@ class TrainTool : public GcWindow QSqlTableModel *workoutModel; QTreeWidget *deviceTree; - QTreeWidget *serverTree; QTreeView *workoutTree; QSortFilterProxyModel *sortModel; // sorting workout list QSortFilterProxyModel *vsortModel; // sorting video list QTreeView *mediaTree; - QTreeWidgetItem *allServers; - QTreeWidgetItem *allDevices; - QTreeWidgetItem *server; QTreeWidgetItem *allWorkouts; QTreeWidgetItem *workout; QTreeWidgetItem *media; @@ -224,7 +219,6 @@ class TrainTool : public GcWindow QTime session_time, lap_time; QTimer *gui_timer, // refresh the gui - *stream_timer, // send telemetry to server *load_timer, // change the load on the device *disk_timer; // write to .CSV file diff --git a/src/application.qrc b/src/application.qrc index 7bc0914e5..17a342ebc 100644 --- a/src/application.qrc +++ b/src/application.qrc @@ -134,5 +134,8 @@ images/sidebar/minus.png images/sidebar/plus.png images/sidebar/extra.png + images/sidebar/folder.png + images/sidebar/movie.png + images/sidebar/power.png diff --git a/src/images/sidebar/folder.png b/src/images/sidebar/folder.png new file mode 100755 index 0000000000000000000000000000000000000000..e66886e051e5aa0170c4ba26706e00364972d54d GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vpiiKLoEE0Qx*sq1g)6Qm~x=r z#MzGFXP-k&qr~Bjk_?yJw^MI;pfi@LoEE0Qxy0t7^Z$?-pDAR zt?p8tU>|{ALRnJ6=x|$z$0h?(p+(fU~|+E<0!Q zlSd0bNjtK!Fnp|9!Qi2I;u^mPmp#)>R)-q-4&en7@3bZ`D)9bZsHAYcp@C_Z(}aTx z&ioE9xecVm*#0*%DcCoOG^)ru82TulapRFnWAI~bQJE0y;Gr8p>43EmSBcxKUI0Bu{;OXk;vd$@?2>{^RMri;5 literal 0 HcmV?d00001 diff --git a/src/images/sidebar/power.png b/src/images/sidebar/power.png new file mode 100755 index 0000000000000000000000000000000000000000..6549987db310ee56017a0152cbc06e05921259f6 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`t2|vCLoEE0QxxPR7^cQKgrDWHI=Bc3j}bp0n=gbJiJY6ZW|%#5r^^o|xtMi>2`g z^G3D>+4nfENHl0~xVX1ro#ga=tqzA zbA0*C3EUI*wj>%G>RB*^r0^fHFnwIy$Q1C&PVwvy9t{SsrXqQZRUa5*8aa#@l%FRW ab1*FQkP%eQ+w}tIY6eeNKbLh*2~7Zk?oiVJ literal 0 HcmV?d00001