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