mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-13 16:18:42 +00:00
Blank state
Add a blank state for analysis window
This commit is contained in:
209
src/BlankState.cpp
Normal file
209
src/BlankState.cpp
Normal file
@@ -0,0 +1,209 @@
|
||||
/*
|
||||
* Copyright (c) 2012 Damien Grauser (Damien.Grauser@pev-geneve.ch) *
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation; either version 2 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc., 51
|
||||
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "BlankState.h"
|
||||
#include <QtGui>
|
||||
#include "MainWindow.h"
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
#include "QtMacButton.h" // mac
|
||||
#endif
|
||||
|
||||
//
|
||||
// Replace home window when no ride
|
||||
//
|
||||
BlankStatePage::BlankStatePage(MainWindow *main) : main(main)
|
||||
{
|
||||
QHBoxLayout *homeLayout = new QHBoxLayout(this);
|
||||
homeLayout->setAlignment(Qt::AlignCenter);
|
||||
homeLayout->addSpacing(20); // left margin
|
||||
|
||||
// left part
|
||||
QWidget *left = new QWidget(this);
|
||||
leftLayout = new QVBoxLayout(left);
|
||||
leftLayout->setAlignment(Qt::AlignLeft | Qt::AlignBottom);
|
||||
left->setLayout(leftLayout);
|
||||
|
||||
welcomeTitle = new QLabel(left);
|
||||
welcomeTitle->setFont(QFont("Helvetica", 30, QFont::Bold, false));
|
||||
leftLayout->addWidget(welcomeTitle);
|
||||
|
||||
welcomeText = new QLabel(left);
|
||||
welcomeText->setFont(QFont("Helvetica", 16, QFont::Light, false));
|
||||
leftLayout->addWidget(welcomeText);
|
||||
|
||||
leftLayout->addSpacing(10);
|
||||
|
||||
homeLayout->addWidget(left);
|
||||
homeLayout->addSpacing(50);
|
||||
|
||||
QWidget *right = new QWidget(this);
|
||||
QVBoxLayout *rightLayout = new QVBoxLayout(right);
|
||||
rightLayout->setAlignment(Qt::AlignRight | Qt::AlignBottom);
|
||||
right->setLayout(rightLayout);
|
||||
|
||||
img = new QToolButton(this);
|
||||
img->setToolButtonStyle(Qt::ToolButtonIconOnly);
|
||||
img->setStyleSheet("QToolButton {text-align: left;color : blue;background: transparent}");
|
||||
rightLayout->addWidget(img);
|
||||
|
||||
homeLayout->addWidget(right);
|
||||
// right margin
|
||||
homeLayout->addSpacing(20);
|
||||
|
||||
setLayout(homeLayout);
|
||||
}
|
||||
|
||||
QPushButton*
|
||||
BlankStatePage::addToShortCuts(ShortCut shortCut)
|
||||
{
|
||||
//
|
||||
// Separator
|
||||
//
|
||||
if (shortCuts.count()>0) {
|
||||
leftLayout->addSpacing(20);
|
||||
QFrame* line = new QFrame();
|
||||
line->setFrameShape(QFrame::HLine);
|
||||
line->setFrameShadow(QFrame::Sunken);
|
||||
leftLayout->addWidget(line);
|
||||
}
|
||||
|
||||
// append to the list of shortcuts
|
||||
shortCuts.append(shortCut);
|
||||
|
||||
//
|
||||
// Create text and button
|
||||
//
|
||||
QLabel *shortCutLabel = new QLabel(this);
|
||||
shortCutLabel->setText(shortCut.label);
|
||||
shortCutLabel->setFont(QFont("Helvetica", 16, QFont::Light, false));
|
||||
leftLayout->addWidget(shortCutLabel);
|
||||
|
||||
QPushButton *shortCutButton = new QPushButton(this);
|
||||
shortCutButton->setText(shortCut.buttonLabel);
|
||||
shortCutButton->setIcon(QPixmap(shortCut.buttonIconPath));
|
||||
shortCutButton->setIconSize(QSize(60,60));
|
||||
//importButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||
//importButton->setStyleSheet("QToolButton {text-align: left;color : blue;background: transparent}");
|
||||
shortCutButton->setStyleSheet("QPushButton {border-radius: 10px;border-style: outset; background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #DDDDDD, stop: 1 #BBBBBB); border-width: 1px; border-color: #555555;} QPushButton:pressed {background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #BBBBBB, stop: 1 #999999);}");
|
||||
shortCutButton->setFixedWidth(200);
|
||||
leftLayout->addWidget(shortCutButton);
|
||||
|
||||
return shortCutButton;
|
||||
}
|
||||
|
||||
//
|
||||
// Replace analysis window when no ride
|
||||
//
|
||||
BlankStateAnalysisPage::BlankStateAnalysisPage(MainWindow *main) : BlankStatePage(main)
|
||||
{
|
||||
welcomeTitle->setText("Analysis");
|
||||
welcomeText->setText("No ride ?\nLet's start with some data.");
|
||||
|
||||
img->setIcon(QPixmap(":images/analysis.png"));
|
||||
img->setIconSize(QSize(800,330));
|
||||
|
||||
ShortCut scImport;
|
||||
scImport.label = tr("Import files from your disc or usb device");
|
||||
scImport.buttonLabel = tr("Import data");
|
||||
scImport.buttonIconPath = ":images/mac/download.png";
|
||||
QPushButton *importButton = addToShortCuts(scImport);
|
||||
connect(importButton, SIGNAL(clicked()), main, SLOT(importFile()));
|
||||
|
||||
ShortCut scDownload;
|
||||
scDownload.label = tr("Download from serial device.");
|
||||
scDownload.buttonLabel = tr("Download from device");
|
||||
scDownload.buttonIconPath = ":images/mac/download.png";
|
||||
QPushButton *downloadButton = addToShortCuts(scDownload);
|
||||
connect(downloadButton, SIGNAL(clicked()), main, SLOT(downloadRide()));
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
// Replace home window when no ride
|
||||
//
|
||||
BlankStateHomePage::BlankStateHomePage(MainWindow *main) : BlankStatePage(main)
|
||||
{
|
||||
welcomeTitle->setText("Home");
|
||||
welcomeText->setText("No ride ?\nLet's start with some data.");
|
||||
|
||||
img->setIcon(QPixmap(":images/home.png"));
|
||||
img->setIconSize(QSize(800,330));
|
||||
|
||||
/*ShortCut scImport;
|
||||
scImport.label = tr("Import files from your disc or usb device");
|
||||
scImport.buttonLabel = tr("Import data");
|
||||
scImport.buttonIconPath = ":images/mac/download.png";
|
||||
addToShortCuts(scImport);
|
||||
|
||||
ShortCut scDownload;
|
||||
scDownload.label = tr("Download from serial device.");
|
||||
scDownload.buttonLabel = tr("Download from device");
|
||||
scDownload.buttonIconPath = ":images/mac/download.png";
|
||||
addToShortCuts(scDownload);*/
|
||||
}
|
||||
|
||||
//
|
||||
// Replace diary window when no ride
|
||||
//
|
||||
BlankStateDiaryPage::BlankStateDiaryPage(MainWindow *main) : BlankStatePage(main)
|
||||
{
|
||||
welcomeTitle->setText("Diary");
|
||||
welcomeText->setText("No ride ?\nLet's start with some data.");
|
||||
|
||||
img->setIcon(QPixmap(":images/diary.png"));
|
||||
img->setIconSize(QSize(800,330));
|
||||
|
||||
/*ShortCut scImport;
|
||||
scImport.label = tr("Import files from your disc or usb device");
|
||||
scImport.buttonLabel = tr("Import data");
|
||||
scImport.buttonIconPath = ":images/mac/download.png";
|
||||
addToShortCuts(scImport);
|
||||
|
||||
ShortCut scDownload;
|
||||
scDownload.label = tr("Download from serial device.");
|
||||
scDownload.buttonLabel = tr("Download from device");
|
||||
scDownload.buttonIconPath = ":images/mac/download.png";
|
||||
addToShortCuts(scDownload);*/
|
||||
}
|
||||
|
||||
//
|
||||
// Replace train window when no ride
|
||||
//
|
||||
BlankStateTrainPage::BlankStateTrainPage(MainWindow *main) : BlankStatePage(main)
|
||||
{
|
||||
welcomeTitle->setText("Train");
|
||||
welcomeText->setText("No ride ?\nLet's start with some data.");
|
||||
|
||||
img->setIcon(QPixmap(":images/train.png"));
|
||||
img->setIconSize(QSize(800,330));
|
||||
|
||||
ShortCut scAddDevice;
|
||||
scAddDevice.label = tr("Scan and add device for realtime.");
|
||||
scAddDevice.buttonLabel = tr("Add device");
|
||||
scAddDevice.buttonIconPath = ":images/mac/download.png";
|
||||
QPushButton *addDeviceButton = addToShortCuts(scAddDevice);
|
||||
connect(addDeviceButton, SIGNAL(clicked()), main, SLOT(addDevice()));
|
||||
|
||||
|
||||
ShortCut scImportWorkout;
|
||||
scImportWorkout.label = tr("Import Video or Workout from Disk.");
|
||||
scImportWorkout.buttonLabel = tr("Import Video/Workout");
|
||||
scImportWorkout.buttonIconPath = ":images/mac/download.png";
|
||||
QPushButton *importWorkoutButton = addToShortCuts(scImportWorkout);
|
||||
connect(importWorkoutButton, SIGNAL(clicked()), main, SLOT(importWorkout()));
|
||||
}
|
||||
99
src/BlankState.h
Normal file
99
src/BlankState.h
Normal file
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
* Copyright (c) 2012 Damien Grauser (Damien.Grauser@pev-geneve.ch)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation; either version 2 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc., 51
|
||||
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef BLANKSTATE_H
|
||||
#define BLANKSTATE_H
|
||||
|
||||
#include "GoldenCheetah.h"
|
||||
#include <QtGui>
|
||||
|
||||
struct ShortCut
|
||||
{
|
||||
QString label;
|
||||
QString text;
|
||||
QString buttonLabel;
|
||||
QString buttonIconPath;
|
||||
QMetaMethod buttonSlot;
|
||||
};
|
||||
|
||||
class BlankStatePage : public GcWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
G_OBJECT
|
||||
|
||||
public:
|
||||
BlankStatePage(MainWindow *main);
|
||||
|
||||
QPushButton *addToShortCuts(ShortCut shortCut);
|
||||
|
||||
protected:
|
||||
MainWindow *main;
|
||||
|
||||
QVBoxLayout *leftLayout;
|
||||
QLabel *welcomeTitle;
|
||||
QLabel *welcomeText;
|
||||
|
||||
QToolButton *img;
|
||||
|
||||
|
||||
|
||||
private:
|
||||
QList<ShortCut> shortCuts;
|
||||
};
|
||||
|
||||
class BlankStateAnalysisPage : public BlankStatePage
|
||||
{
|
||||
Q_OBJECT
|
||||
G_OBJECT
|
||||
|
||||
public:
|
||||
BlankStateAnalysisPage(MainWindow *main);
|
||||
|
||||
};
|
||||
|
||||
class BlankStateHomePage : public BlankStatePage
|
||||
{
|
||||
Q_OBJECT
|
||||
G_OBJECT
|
||||
|
||||
public:
|
||||
BlankStateHomePage(MainWindow *main);
|
||||
|
||||
};
|
||||
|
||||
class BlankStateDiaryPage : public BlankStatePage
|
||||
{
|
||||
Q_OBJECT
|
||||
G_OBJECT
|
||||
|
||||
public:
|
||||
BlankStateDiaryPage(MainWindow *main);
|
||||
|
||||
};
|
||||
|
||||
class BlankStateTrainPage : public BlankStatePage
|
||||
{
|
||||
Q_OBJECT
|
||||
G_OBJECT
|
||||
|
||||
public:
|
||||
BlankStateTrainPage(MainWindow *main);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -193,3 +193,9 @@ GcScopeBar::showHideClicked()
|
||||
emit showSideBar(state);
|
||||
setShowSidebar(state);
|
||||
}
|
||||
|
||||
void
|
||||
GcScopeBar::setEnabledHideButton(bool EnableHideButton) {
|
||||
showHide->setEnabled(EnableHideButton);
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,8 @@ public:
|
||||
GcScopeBar(QWidget *parent, QWidget *traintool);
|
||||
~GcScopeBar();
|
||||
|
||||
void setEnabledHideButton(bool showHideButton);
|
||||
|
||||
public slots:
|
||||
void paintEvent (QPaintEvent *event);
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "AddIntervalDialog.h"
|
||||
#include "AthleteTool.h"
|
||||
#include "BestIntervalDialog.h"
|
||||
#include "BlankState.h"
|
||||
#include "ChooseCyclistDialog.h"
|
||||
#include "Colors.h"
|
||||
#include "ConfigDialog.h"
|
||||
@@ -688,6 +689,13 @@ MainWindow::MainWindow(const QDir &home) :
|
||||
analysisControls->addWidget(analWindow->controls());
|
||||
currentWindow = analWindow;
|
||||
|
||||
// NO RIDE WINDOW - Replace analysis, home and train window when no ride
|
||||
blankStateAnalysisPage = new BlankStateAnalysisPage(this);
|
||||
blankStateHomePage = new BlankStateHomePage(this);
|
||||
blankStateDiaryPage = new BlankStateDiaryPage(this);
|
||||
blankStateTrainPage = new BlankStateTrainPage(this);
|
||||
|
||||
|
||||
// POPULATE TOOLBOX
|
||||
|
||||
// do controllers after home windows -- they need their first signals caught
|
||||
@@ -722,7 +730,13 @@ MainWindow::MainWindow(const QDir &home) :
|
||||
views->addWidget(diaryWindow);
|
||||
views->addWidget(homeWindow);
|
||||
|
||||
views->setCurrentIndex(0); // default to Analysis
|
||||
// add Blank State pages
|
||||
views->addWidget(blankStateAnalysisPage);
|
||||
views->addWidget(blankStateHomePage);
|
||||
views->addWidget(blankStateDiaryPage);
|
||||
views->addWidget(blankStateTrainPage);
|
||||
|
||||
//views->setCurrentIndex(0);
|
||||
views->setContentsMargins(0,0,0,0);
|
||||
|
||||
|
||||
@@ -907,6 +921,9 @@ MainWindow::MainWindow(const QDir &home) :
|
||||
if (allRides->childCount() != 0)
|
||||
treeWidget->setCurrentItem(allRides->child(allRides->childCount()-1));
|
||||
|
||||
// default to Analysis
|
||||
selectAnalysis();
|
||||
|
||||
// now we're up and runnning lets connect the signals
|
||||
connect(treeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(rideTreeWidgetSelectionChanged()));
|
||||
connect(intervalWidget,SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(showContextMenuPopup(const QPoint &)));
|
||||
@@ -1435,11 +1452,29 @@ MainWindow::helpView()
|
||||
void
|
||||
MainWindow::selectAnalysis()
|
||||
{
|
||||
masterControls->setCurrentIndex(0);
|
||||
views->setCurrentIndex(0);
|
||||
analWindow->selected(); // tell it!
|
||||
currentWindow = analWindow;
|
||||
trainTool->getToolbarButtons()->hide();
|
||||
// No ride - no analysis view
|
||||
if (allRides->childCount() == 0) {
|
||||
masterControls->setVisible(false);
|
||||
toolBox->hide();
|
||||
#ifndef Q_OS_MAC
|
||||
side->setEnabled(false);
|
||||
#else
|
||||
scopebar->setEnabledHideButton(false);
|
||||
#endif
|
||||
views->setCurrentWidget(blankStateAnalysisPage);
|
||||
} else {
|
||||
masterControls->setVisible(true);
|
||||
toolBox->show();
|
||||
#ifndef Q_OS_MAC
|
||||
side->setEnabled(true);
|
||||
#else
|
||||
scopebar->setEnabledHideButton(true);
|
||||
#endif
|
||||
masterControls->setCurrentIndex(0);
|
||||
views->setCurrentIndex(0);
|
||||
analWindow->selected(); // tell it!
|
||||
currentWindow = analWindow;
|
||||
trainTool->getToolbarButtons()->hide();
|
||||
#ifndef Q_OS_MAC
|
||||
analButtons->show();
|
||||
#ifdef GC_HAVE_ICAL
|
||||
@@ -1448,69 +1483,113 @@ MainWindow::selectAnalysis()
|
||||
toolbar->select(1);
|
||||
#endif
|
||||
#else
|
||||
scopebar->selected(2);
|
||||
scopebar->selected(2);
|
||||
#endif
|
||||
toolBox->setCurrentIndex(0);
|
||||
setStyle();
|
||||
toolBox->setCurrentIndex(0);
|
||||
setStyle();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MainWindow::selectTrain()
|
||||
{
|
||||
masterControls->setCurrentIndex(1);
|
||||
views->setCurrentIndex(1);
|
||||
trainWindow->selected(); // tell it!
|
||||
currentWindow = trainWindow;
|
||||
trainTool->getToolbarButtons()->show();
|
||||
if (allRides->childCount() == 0) {
|
||||
masterControls->setVisible(false);
|
||||
toolBox->hide();
|
||||
#ifndef Q_OS_MAC
|
||||
analButtons->hide();
|
||||
#ifdef GC_HAVE_ICAL
|
||||
toolbar->select(3);
|
||||
side->setEnabled(false);
|
||||
#else
|
||||
toolbar->select(2);
|
||||
scopebar->setEnabledHideButton(false);
|
||||
#endif
|
||||
#else
|
||||
scopebar->selected(3);
|
||||
#endif
|
||||
toolBox->setCurrentIndex(2);
|
||||
setStyle();
|
||||
views->setCurrentWidget(blankStateTrainPage);
|
||||
} else {
|
||||
masterControls->setVisible(true);
|
||||
toolBox->show();
|
||||
side->setEnabled(true);
|
||||
masterControls->setCurrentIndex(1);
|
||||
views->setCurrentIndex(1);
|
||||
trainWindow->selected(); // tell it!
|
||||
currentWindow = trainWindow;
|
||||
trainTool->getToolbarButtons()->show();
|
||||
#ifndef Q_OS_MAC
|
||||
analButtons->hide();
|
||||
#ifdef GC_HAVE_ICAL
|
||||
toolbar->select(3);
|
||||
#else
|
||||
toolbar->select(2);
|
||||
#endif
|
||||
#else
|
||||
scopebar->selected(3);
|
||||
#endif
|
||||
toolBox->setCurrentIndex(2);
|
||||
setStyle();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MainWindow::selectDiary()
|
||||
{
|
||||
masterControls->setCurrentIndex(2);
|
||||
views->setCurrentIndex(2);
|
||||
diaryWindow->selected(); // tell it!
|
||||
currentWindow = diaryWindow;
|
||||
trainTool->getToolbarButtons()->hide();
|
||||
if (allRides->childCount() == 0) {
|
||||
masterControls->setVisible(false);
|
||||
toolBox->hide();
|
||||
#ifndef Q_OS_MAC
|
||||
analButtons->hide();
|
||||
toolbar->select(1);
|
||||
side->setEnabled(false);
|
||||
#else
|
||||
scopebar->selected(1);
|
||||
scopebar->setEnabledHideButton(false);
|
||||
#endif
|
||||
toolBox->setCurrentIndex(1);
|
||||
gcCalendar->refresh(); // get that signal with the date range...
|
||||
setStyle();
|
||||
views->setCurrentWidget(blankStateDiaryPage);
|
||||
} else {
|
||||
masterControls->setVisible(true);
|
||||
toolBox->show();
|
||||
side->show();
|
||||
masterControls->setCurrentIndex(2);
|
||||
views->setCurrentIndex(2);
|
||||
diaryWindow->selected(); // tell it!
|
||||
currentWindow = diaryWindow;
|
||||
trainTool->getToolbarButtons()->hide();
|
||||
#ifndef Q_OS_MAC
|
||||
analButtons->hide();
|
||||
toolbar->select(1);
|
||||
#else
|
||||
scopebar->selected(1);
|
||||
#endif
|
||||
toolBox->setCurrentIndex(1);
|
||||
gcCalendar->refresh(); // get that signal with the date range...
|
||||
setStyle();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MainWindow::selectHome()
|
||||
{
|
||||
masterControls->setCurrentIndex(3);
|
||||
views->setCurrentIndex(3);
|
||||
homeWindow->selected(); // tell it!
|
||||
currentWindow = homeWindow;
|
||||
trainTool->getToolbarButtons()->hide();
|
||||
// No ride - no analysis view
|
||||
if (allRides->childCount() == 0) {
|
||||
masterControls->setVisible(false);
|
||||
toolBox->hide();
|
||||
#ifndef Q_OS_MAC
|
||||
analButtons->hide();
|
||||
toolbar->select(0);
|
||||
side->setEnabled(false);
|
||||
#else
|
||||
scopebar->selected(0);
|
||||
scopebar->setEnabledHideButton(false);
|
||||
#endif
|
||||
toolBox->setCurrentIndex(3);
|
||||
setStyle();
|
||||
views->setCurrentWidget(blankStateHomePage);
|
||||
} else {
|
||||
masterControls->setVisible(true);
|
||||
toolBox->show();
|
||||
side->setEnabled(true);
|
||||
masterControls->setCurrentIndex(3);
|
||||
views->setCurrentIndex(3);
|
||||
homeWindow->selected(); // tell it!
|
||||
currentWindow = homeWindow;
|
||||
trainTool->getToolbarButtons()->hide();
|
||||
#ifndef Q_OS_MAC
|
||||
analButtons->hide();
|
||||
toolbar->select(0);
|
||||
#else
|
||||
scopebar->selected(0);
|
||||
#endif
|
||||
toolBox->setCurrentIndex(3);
|
||||
setStyle();
|
||||
}
|
||||
}
|
||||
void
|
||||
MainWindow::selectAthlete()
|
||||
|
||||
@@ -70,6 +70,10 @@ class QtMacSegmentedButton;
|
||||
class GcScopeBar;
|
||||
class RideFileCache;
|
||||
class Library;
|
||||
class BlankStateAnalysisPage;
|
||||
class BlankStateHomePage;
|
||||
class BlankStateDiaryPage;
|
||||
class BlankStateTrainPage;
|
||||
|
||||
extern QList<MainWindow *> mainwindows; // keep track of all the MainWindows we have open
|
||||
|
||||
@@ -148,6 +152,12 @@ class MainWindow : public QMainWindow
|
||||
HomeWindow *trainWindow;
|
||||
HomeWindow *analWindow;
|
||||
HomeWindow *currentWindow; // tracks the curerntly showing window
|
||||
|
||||
BlankStateAnalysisPage *blankStateAnalysisPage;
|
||||
BlankStateHomePage *blankStateHomePage;
|
||||
BlankStateDiaryPage *blankStateDiaryPage;
|
||||
BlankStateTrainPage *blankStateTrainPage;
|
||||
|
||||
ChartSettings *chartSettings;
|
||||
|
||||
// state data
|
||||
|
||||
@@ -1,126 +1,131 @@
|
||||
<!DOCTYPE RCC><RCC version="1.0">
|
||||
<qresource>
|
||||
<file>images/devices/garminusb.png</file>
|
||||
<file>images/devices/computrainer.png</file>
|
||||
<file>images/devices/kickr.png</file>
|
||||
<file>images/devices/fortius.png</file>
|
||||
<file>images/devices/quarqd.png</file>
|
||||
<file>images/toolbar/main/togglefull.png</file>
|
||||
<file>images/toolbar/main/hideside.png</file>
|
||||
<file>images/toolbar/main/hiderside.png</file>
|
||||
<file>images/toolbar/main/normal.png</file>
|
||||
<file>images/toolbar/main/showside.png</file>
|
||||
<file>images/toolbar/main/showrside.png</file>
|
||||
<file>images/toolbar/main/style.png</file>
|
||||
<file>images/toolbar/main/tab.png</file>
|
||||
<file>images/toolbar/main/tile.png</file>
|
||||
<file>images/toolbar/main/analysis.png</file>
|
||||
<file>images/toolbar/main/athlete.png</file>
|
||||
<file>images/toolbar/main/config.png</file>
|
||||
<file>images/toolbar/main/diary.png</file>
|
||||
<file>images/toolbar/main/help.png</file>
|
||||
<file>images/toolbar/main/home.png</file>
|
||||
<file>images/toolbar/main/measures.png</file>
|
||||
<file>images/toolbar/main/train.png</file>
|
||||
<file>images/toolbar/clear.png</file>
|
||||
<file>images/toolbar/search.png</file>
|
||||
<file>images/toolbar/filter.png</file>
|
||||
<file>images/toolbar/GeneralPreferences.png</file>
|
||||
<file>images/toolbar/user.png</file>
|
||||
<file>images/toolbar/passwords.png</file>
|
||||
<file>images/toolbar/color.png</file>
|
||||
<file>images/toolbar/data.png</file>
|
||||
<file>images/toolbar/abacus.png</file>
|
||||
<file>images/maps/cycling_feed.png</file>
|
||||
<file>images/maps/loop.png</file>
|
||||
<file>images/maps/cycling.png</file>
|
||||
<file>images/maps/cycling_sprint.png</file>
|
||||
<file>images/maps/finish.png</file>
|
||||
<file>images/IconAltitude.png</file>
|
||||
<file>images/IconBike.png</file>
|
||||
<file>images/IconCadence.png</file>
|
||||
<file>images/IconGPS.png</file>
|
||||
<file>images/IconHR.png</file>
|
||||
<file>images/IconPower.png</file>
|
||||
<file>images/IconRun.png</file>
|
||||
<file>images/IconSpeed.png</file>
|
||||
<file>images/IconSwim.png</file>
|
||||
<file>images/IconTemp.png</file>
|
||||
<file>images/IconTorque.png</file>
|
||||
<file>images/IconWind.png</file>
|
||||
<file>images/aluBar.png</file>
|
||||
<file>images/aluToolBar.png</file>
|
||||
<file>images/aluBarDark.png</file>
|
||||
<file>images/aluLight.jpg</file>
|
||||
<file>images/carbon.jpg</file>
|
||||
<file>images/dark.jpg</file>
|
||||
<file>images/twitter.png</file>
|
||||
<file>images/cyclist.png</file>
|
||||
<file>images/imetrics.png</file>
|
||||
<file>images/power.png</file>
|
||||
<file>images/arduino.png</file>
|
||||
<file>images/query.png</file>
|
||||
<file>images/update.png</file>
|
||||
<file>images/gc.png</file>
|
||||
<file>images/gc-blank.png</file>
|
||||
<file>images/config.png</file>
|
||||
<file>images/cheetah.png</file>
|
||||
<file>images/noavatar.png</file>
|
||||
<file>images/activity.png</file>
|
||||
<file>images/metadata.png</file>
|
||||
<file>images/stopwatch.png</file>
|
||||
<file>images/settings.png</file>
|
||||
<file>images/addchart.png</file>
|
||||
<file>images/library.png</file>
|
||||
<file>translations/gc_fr.qm</file>
|
||||
<file>translations/gc_ja.qm</file>
|
||||
<file>translations/gc_it.qm</file>
|
||||
<file>translations/gc_pt-br.qm</file>
|
||||
<file>translations/gc_de.qm</file>
|
||||
<file>translations/gc_ru.qm</file>
|
||||
<file>translations/gc_cs.qm</file>
|
||||
<file>translations/gc_es.qm</file>
|
||||
<file>translations/gc_pt.qm</file>
|
||||
<file>xml/charts.xml</file>
|
||||
<file>xml/metadata.xml</file>
|
||||
<file>xml/measures.xml</file>
|
||||
<file>xml/train-layout.xml</file>
|
||||
<file>xml/diary-layout.xml</file>
|
||||
<file>xml/analysis-layout.xml</file>
|
||||
<file>xml/home-layout.xml</file>
|
||||
<file>html/ltm-summary.html</file>
|
||||
<file>images/oxygen/play.png</file>
|
||||
<file>images/oxygen/pause.png</file>
|
||||
<file>images/oxygen/stop.png</file>
|
||||
<file>images/oxygen/ffwd.png</file>
|
||||
<file>images/oxygen/rewind.png</file>
|
||||
<file>images/oxygen/lap.png</file>
|
||||
<file>images/oxygen/save.png</file>
|
||||
<file>images/oxygen/open.png</file>
|
||||
<file>images/toolbar/close-icon.png</file>
|
||||
<file>images/toolbar/save.png</file>
|
||||
<file>images/toolbar/splash green.png</file>
|
||||
<file>images/toolbar/cut.png</file>
|
||||
<file>images/toolbar/copy.png</file>
|
||||
<file>images/toolbar/paste.png</file>
|
||||
<file>images/toolbar/undo.png</file>
|
||||
<file>images/toolbar/redo.png</file>
|
||||
<file>images/toolbar/back_alt.png</file>
|
||||
<file>images/toolbar/forward_alt.png</file>
|
||||
<file>images/toolbar/popbutton.png</file>
|
||||
<file>images/toolbar/flipbutton.png</file>
|
||||
<file>images/splashscreen.png</file>
|
||||
<file>images/mac/compose.png</file>
|
||||
<file>images/mac/download.png</file>
|
||||
<file>images/mac/share.png</file>
|
||||
<file>images/mac/split.png</file>
|
||||
<file>images/mac/trash.png</file>
|
||||
<file>images/mac/stop.png</file>
|
||||
<file>images/mac/tabbed.png</file>
|
||||
<file>images/mac/tiled.png</file>
|
||||
<file>images/mac/scope-active.png</file>
|
||||
<file>images/mac/scope-inactive.png</file>
|
||||
<file>images/mac/hide.png</file>
|
||||
<file>images/mac/show.png</file>
|
||||
</qresource>
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>images/devices/garminusb.png</file>
|
||||
<file>images/devices/computrainer.png</file>
|
||||
<file>images/devices/kickr.png</file>
|
||||
<file>images/devices/fortius.png</file>
|
||||
<file>images/devices/quarqd.png</file>
|
||||
<file>images/toolbar/main/togglefull.png</file>
|
||||
<file>images/toolbar/main/hideside.png</file>
|
||||
<file>images/toolbar/main/hiderside.png</file>
|
||||
<file>images/toolbar/main/normal.png</file>
|
||||
<file>images/toolbar/main/showside.png</file>
|
||||
<file>images/toolbar/main/showrside.png</file>
|
||||
<file>images/toolbar/main/style.png</file>
|
||||
<file>images/toolbar/main/tab.png</file>
|
||||
<file>images/toolbar/main/tile.png</file>
|
||||
<file>images/toolbar/main/analysis.png</file>
|
||||
<file>images/toolbar/main/athlete.png</file>
|
||||
<file>images/toolbar/main/config.png</file>
|
||||
<file>images/toolbar/main/diary.png</file>
|
||||
<file>images/toolbar/main/help.png</file>
|
||||
<file>images/toolbar/main/home.png</file>
|
||||
<file>images/toolbar/main/measures.png</file>
|
||||
<file>images/toolbar/main/train.png</file>
|
||||
<file>images/toolbar/clear.png</file>
|
||||
<file>images/toolbar/search.png</file>
|
||||
<file>images/toolbar/filter.png</file>
|
||||
<file>images/toolbar/GeneralPreferences.png</file>
|
||||
<file>images/toolbar/user.png</file>
|
||||
<file>images/toolbar/passwords.png</file>
|
||||
<file>images/toolbar/color.png</file>
|
||||
<file>images/toolbar/data.png</file>
|
||||
<file>images/toolbar/abacus.png</file>
|
||||
<file>images/maps/cycling_feed.png</file>
|
||||
<file>images/maps/loop.png</file>
|
||||
<file>images/maps/cycling.png</file>
|
||||
<file>images/maps/cycling_sprint.png</file>
|
||||
<file>images/maps/finish.png</file>
|
||||
<file>images/IconAltitude.png</file>
|
||||
<file>images/IconBike.png</file>
|
||||
<file>images/IconCadence.png</file>
|
||||
<file>images/IconGPS.png</file>
|
||||
<file>images/IconHR.png</file>
|
||||
<file>images/IconPower.png</file>
|
||||
<file>images/IconRun.png</file>
|
||||
<file>images/IconSpeed.png</file>
|
||||
<file>images/IconSwim.png</file>
|
||||
<file>images/IconTemp.png</file>
|
||||
<file>images/IconTorque.png</file>
|
||||
<file>images/IconWind.png</file>
|
||||
<file>images/aluBar.png</file>
|
||||
<file>images/aluToolBar.png</file>
|
||||
<file>images/aluBarDark.png</file>
|
||||
<file>images/aluLight.jpg</file>
|
||||
<file>images/carbon.jpg</file>
|
||||
<file>images/dark.jpg</file>
|
||||
<file>images/twitter.png</file>
|
||||
<file>images/cyclist.png</file>
|
||||
<file>images/imetrics.png</file>
|
||||
<file>images/power.png</file>
|
||||
<file>images/arduino.png</file>
|
||||
<file>images/query.png</file>
|
||||
<file>images/update.png</file>
|
||||
<file>images/gc.png</file>
|
||||
<file>images/gc-blank.png</file>
|
||||
<file>images/config.png</file>
|
||||
<file>images/cheetah.png</file>
|
||||
<file>images/noavatar.png</file>
|
||||
<file>images/activity.png</file>
|
||||
<file>images/metadata.png</file>
|
||||
<file>images/stopwatch.png</file>
|
||||
<file>images/settings.png</file>
|
||||
<file>images/addchart.png</file>
|
||||
<file>images/library.png</file>
|
||||
<file>translations/gc_fr.qm</file>
|
||||
<file>translations/gc_ja.qm</file>
|
||||
<file>translations/gc_it.qm</file>
|
||||
<file>translations/gc_pt-br.qm</file>
|
||||
<file>translations/gc_de.qm</file>
|
||||
<file>translations/gc_ru.qm</file>
|
||||
<file>translations/gc_cs.qm</file>
|
||||
<file>translations/gc_es.qm</file>
|
||||
<file>translations/gc_pt.qm</file>
|
||||
<file>xml/charts.xml</file>
|
||||
<file>xml/metadata.xml</file>
|
||||
<file>xml/measures.xml</file>
|
||||
<file>xml/train-layout.xml</file>
|
||||
<file>xml/diary-layout.xml</file>
|
||||
<file>xml/analysis-layout.xml</file>
|
||||
<file>xml/home-layout.xml</file>
|
||||
<file>html/ltm-summary.html</file>
|
||||
<file>images/oxygen/play.png</file>
|
||||
<file>images/oxygen/pause.png</file>
|
||||
<file>images/oxygen/stop.png</file>
|
||||
<file>images/oxygen/ffwd.png</file>
|
||||
<file>images/oxygen/rewind.png</file>
|
||||
<file>images/oxygen/lap.png</file>
|
||||
<file>images/oxygen/save.png</file>
|
||||
<file>images/oxygen/open.png</file>
|
||||
<file>images/toolbar/close-icon.png</file>
|
||||
<file>images/toolbar/save.png</file>
|
||||
<file>images/toolbar/splash green.png</file>
|
||||
<file>images/toolbar/cut.png</file>
|
||||
<file>images/toolbar/copy.png</file>
|
||||
<file>images/toolbar/paste.png</file>
|
||||
<file>images/toolbar/undo.png</file>
|
||||
<file>images/toolbar/redo.png</file>
|
||||
<file>images/toolbar/back_alt.png</file>
|
||||
<file>images/toolbar/forward_alt.png</file>
|
||||
<file>images/toolbar/popbutton.png</file>
|
||||
<file>images/toolbar/flipbutton.png</file>
|
||||
<file>images/splashscreen.png</file>
|
||||
<file>images/mac/compose.png</file>
|
||||
<file>images/mac/download.png</file>
|
||||
<file>images/mac/share.png</file>
|
||||
<file>images/mac/split.png</file>
|
||||
<file>images/mac/trash.png</file>
|
||||
<file>images/mac/stop.png</file>
|
||||
<file>images/mac/tabbed.png</file>
|
||||
<file>images/mac/tiled.png</file>
|
||||
<file>images/mac/scope-active.png</file>
|
||||
<file>images/mac/scope-inactive.png</file>
|
||||
<file>images/mac/hide.png</file>
|
||||
<file>images/mac/show.png</file>
|
||||
<file>images/nogps.png</file>
|
||||
<file>images/analysis.png</file>
|
||||
<file>images/home.png</file>
|
||||
<file>images/train.png</file>
|
||||
<file>images/diary.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
BIN
src/images/analysis.png
Normal file
BIN
src/images/analysis.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 104 KiB |
BIN
src/images/nogps.png
Normal file
BIN
src/images/nogps.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 118 KiB |
@@ -233,6 +233,7 @@ HEADERS += \
|
||||
BinRideFile.h \
|
||||
Bin2RideFile.h \
|
||||
BingMap.h \
|
||||
BlankState.h \
|
||||
CalendarDownload.h \
|
||||
ChartSettings.h \
|
||||
ChooseCyclistDialog.h \
|
||||
@@ -423,6 +424,7 @@ SOURCES += \
|
||||
BinRideFile.cpp \
|
||||
Bin2RideFile.cpp \
|
||||
BingMap.cpp \
|
||||
BlankState.cpp \
|
||||
CalendarDownload.cpp \
|
||||
ChartSettings.cpp \
|
||||
ChooseCyclistDialog.cpp \
|
||||
|
||||
Reference in New Issue
Block a user