mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-14 16:39:57 +00:00
.. now closes train view blankstate when device added and workouts have been imported. .. and made the home and diary views have same buttons as the analysis view. That may change in later releases when we have planning functions.
247 lines
9.3 KiB
C++
247 lines
9.3 KiB
C++
/*
|
|
* 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)
|
|
{
|
|
QVBoxLayout *mainLayout = new QVBoxLayout(this);
|
|
mainLayout->addStretch();
|
|
QHBoxLayout *homeLayout = new QHBoxLayout;
|
|
mainLayout->addLayout(homeLayout);
|
|
homeLayout->setAlignment(Qt::AlignCenter);
|
|
homeLayout->addSpacing(20); // left margin
|
|
setProperty("nomenu", true);
|
|
|
|
// 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->setFocusPolicy(Qt::NoFocus);
|
|
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);
|
|
|
|
// control if shown or not in future
|
|
QHBoxLayout *bottomRow = new QHBoxLayout;
|
|
mainLayout->addSpacing(20);
|
|
mainLayout->addLayout(bottomRow);
|
|
|
|
dontShow = new QCheckBox(tr("Don't show this next time."), this);
|
|
dontShow->setFocusPolicy(Qt::NoFocus);
|
|
closeButton = new QPushButton(tr("Close"), this);
|
|
closeButton->setFocusPolicy(Qt::NoFocus);
|
|
bottomRow->addWidget(dontShow);
|
|
bottomRow->addStretch();
|
|
bottomRow->addWidget(closeButton);
|
|
|
|
connect(closeButton, SIGNAL(clicked()), this, SIGNAL(closeClicked()));
|
|
}
|
|
|
|
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->setWordWrap(true);
|
|
shortCutLabel->setText(shortCut.label);
|
|
shortCutLabel->setFont(QFont("Helvetica", 14, QFont::Light, false));
|
|
leftLayout->addWidget(shortCutLabel);
|
|
|
|
QPushButton *shortCutButton = new QPushButton(this);
|
|
shortCutButton->setFocusPolicy(Qt::NoFocus);
|
|
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)
|
|
{
|
|
dontShow->setChecked(appsettings->cvalue(main->cyclist, GC_BLANK_ANALYSIS, false).toBool());
|
|
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 disk 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)
|
|
{
|
|
dontShow->setChecked(appsettings->cvalue(main->cyclist, GC_BLANK_HOME, false).toBool());
|
|
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 disk 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 diary window when no ride
|
|
//
|
|
BlankStateDiaryPage::BlankStateDiaryPage(MainWindow *main) : BlankStatePage(main)
|
|
{
|
|
dontShow->setChecked(appsettings->cvalue(main->cyclist, GC_BLANK_DIARY, false).toBool());
|
|
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 disk 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 train window when no ride
|
|
//
|
|
BlankStateTrainPage::BlankStateTrainPage(MainWindow *main) : BlankStatePage(main)
|
|
{
|
|
dontShow->setChecked(appsettings->cvalue(main->cyclist, GC_BLANK_TRAIN, false).toBool());
|
|
welcomeTitle->setText("Train");
|
|
welcomeText->setText("No devices or workouts ?\nLet's get you setup.");
|
|
|
|
img->setIcon(QPixmap(":images/train.png"));
|
|
img->setIconSize(QSize(800,330));
|
|
|
|
ShortCut scAddDevice;
|
|
// - add a realtime device
|
|
// - find video and workouts
|
|
scAddDevice.label = tr("Find and add training devices.");
|
|
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("Find and Import your videos and workouts.");
|
|
scImportWorkout.buttonLabel = tr("Scan hard drives");
|
|
scImportWorkout.buttonIconPath = ":images/toolbar/Disk.png";
|
|
QPushButton *importWorkoutButton = addToShortCuts(scImportWorkout);
|
|
connect(importWorkoutButton, SIGNAL(clicked()), main, SLOT(manageLibrary()));
|
|
|
|
ShortCut scDownloadWorkout;
|
|
scDownloadWorkout.label = tr("Download workout files from the Erg DB.");
|
|
scDownloadWorkout.buttonLabel = tr("Download workouts");
|
|
scDownloadWorkout.buttonIconPath = ":images/mac/download.png";
|
|
QPushButton *downloadWorkoutButton = addToShortCuts(scDownloadWorkout);
|
|
connect(downloadWorkoutButton, SIGNAL(clicked()), main, SLOT(downloadErgDB()));
|
|
}
|