2 * This file is part of jSpeed.
4 * jSpeed is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * jSpeed is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with jSpeed. If not, see <http://www.gnu.org/licenses/>.
19 #include <QtGui/QPushButton>
20 #include <QtGui/QVBoxLayout>
21 #include <QtGui/QHBoxLayout>
22 #include <QtGui/QMessageBox>
23 #include <QtGui/QLabel>
24 #include <QtGui/QPixmap>
26 #include "themeselector.h"
27 #include "unitselector.h"
29 MainMenu::MainMenu(QWidget* parent): QDialog(parent), itemCount_(0),
30 currentRow_(0), themeSelector_(0), unitSelector_(0), aboutDialog_(0)
32 layout_ = new QVBoxLayout;
35 setWindowTitle(tr("Menu"));
36 addAction(tr("Reset trip"), this, SIGNAL(resetTrip()));
37 addAction(tr("Reset all"), this, SLOT(confirmReset()));
38 addAction(tr("Select theme"), this, SLOT(selectTheme()));
39 addAction(tr("Set unit"), this, SLOT(selectUnit()));
40 addAction(tr("Flip screen"), this, SIGNAL(flip()));
41 addAction(tr("About"), this, SLOT(showAbout()));
44 void MainMenu::selectTheme()
48 themeSelector_ = new ThemeSelector(this);
49 connect(themeSelector_, SIGNAL(themeChanged()), this, SIGNAL(themeChanged()));
52 themeSelector_->show();
55 void MainMenu::selectUnit()
59 unitSelector_ = new UnitSelector(this);
60 connect(unitSelector_, SIGNAL(unitChanged()), this, SIGNAL(unitChanged()));
63 unitSelector_->show();
66 void MainMenu::showAbout()
70 aboutDialog_ = new QDialog(this);
71 aboutDialog_->setWindowTitle(tr("About"));
73 QHBoxLayout* mainLayout = new QHBoxLayout;
74 QPixmap pixmap(":/resources/appicon.png");
75 QLabel* image = new QLabel;
76 image->setPixmap(pixmap);
77 mainLayout->addWidget(image, 0, Qt::AlignLeft);
78 mainLayout->addSpacing(15);
79 QLabel* text = new QLabel(QString::fromUtf8("<font size='4'><b>jSpeed</b></font><br>(c) 2010 Jesse Hakanen<br><a href='http://jspeed.garage.maemo.org' style='color:#ffffff'>http://jspeed.garage.maemo.org</a>"));
80 text->setOpenExternalLinks(true);
81 mainLayout->addWidget(text, 10, Qt::AlignLeft);
83 aboutDialog_->setLayout(mainLayout);
89 void MainMenu::confirmReset()
91 QMessageBox::StandardButton result = QMessageBox::question(this, tr("Reset all"),
92 tr("Are you sure? All recorded data will be lost."),
93 QMessageBox::Yes | QMessageBox::No);
95 if(result == QMessageBox::Yes)
101 void MainMenu::addAction(const QString& text,
102 const QObject* receiver,
105 if(itemCount_ % 2 == 0 || !currentRow_)
107 currentRow_ = new QHBoxLayout;
108 layout_->addLayout(currentRow_);
111 QPushButton* button = new QPushButton(text);
112 connect(button, SIGNAL(clicked(bool)), receiver, member);
113 connect(button, SIGNAL(clicked(bool)), this, SLOT(hide()));
114 currentRow_->addWidget(button);