Blank state

Add a blank state for analysis window
This commit is contained in:
Damien
2012-12-17 21:01:45 +01:00
parent 954e15a8fb
commit db39db5ea4
10 changed files with 581 additions and 169 deletions

209
src/BlankState.cpp Normal file
View 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
View 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

View File

@@ -193,3 +193,9 @@ GcScopeBar::showHideClicked()
emit showSideBar(state);
setShowSidebar(state);
}
void
GcScopeBar::setEnabledHideButton(bool EnableHideButton) {
showHide->setEnabled(EnableHideButton);
}

View File

@@ -33,6 +33,8 @@ public:
GcScopeBar(QWidget *parent, QWidget *traintool);
~GcScopeBar();
void setEnabledHideButton(bool showHideButton);
public slots:
void paintEvent (QPaintEvent *event);

View File

@@ -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()

View File

@@ -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

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
src/images/nogps.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

View File

@@ -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 \