Files
GoldenCheetah/src/BlankState.cpp
Mark Liversedge 1149d2327a BlankState basics completed
.. 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.
2013-01-12 23:28:59 +00:00

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()));
}