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 000000000..e66886e05 Binary files /dev/null and b/src/images/sidebar/folder.png differ diff --git a/src/images/sidebar/movie.png b/src/images/sidebar/movie.png new file mode 100755 index 000000000..91a5701be Binary files /dev/null and b/src/images/sidebar/movie.png differ diff --git a/src/images/sidebar/power.png b/src/images/sidebar/power.png new file mode 100755 index 000000000..6549987db Binary files /dev/null and b/src/images/sidebar/power.png differ