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"
28 #include "poisettings.h"
29 #include "speedalarmsettings.h"
31 MainMenu::MainMenu(QWidget* parent): QDialog(parent), itemCount_(0),
32 currentRow_(0), themeSelector_(0), unitSelector_(0), poiSettings_(0),
33 speedAlarmSettings_(0), aboutDialog_(0)
35 layout_ = new QVBoxLayout;
38 setWindowTitle(tr("Menu"));
39 addAction(tr("Reset trip"), this, SIGNAL(resetTrip()));
40 addAction(tr("Reset all"), this, SLOT(confirmReset()));
41 addAction(tr("Theme"), this, SLOT(selectTheme()));
42 addAction(tr("Set unit"), this, SLOT(selectUnit()));
43 addAction(tr("Speed camera alerts"), this, SLOT(openPoiAlerts()));
44 addAction(tr("Speed alarm"), this, SLOT(openSpeedAlarm()));
45 addAction(tr("Flip screen"), this, SIGNAL(flip()));
46 addAction(tr("About"), this, SLOT(showAbout()));
49 void MainMenu::selectTheme()
53 themeSelector_ = new ThemeSelector(this);
54 connect(themeSelector_, SIGNAL(themeChanged()), this, SIGNAL(themeChanged()));
57 themeSelector_->show();
60 void MainMenu::openPoiAlerts()
64 poiSettings_ = new PoiSettings(this);
70 void MainMenu::openSpeedAlarm()
72 if(!speedAlarmSettings_)
74 speedAlarmSettings_ = new SpeedAlarmSettings(this);
77 speedAlarmSettings_->show();
80 void MainMenu::selectUnit()
84 unitSelector_ = new UnitSelector(this);
85 connect(unitSelector_, SIGNAL(unitChanged()), this, SIGNAL(unitChanged()));
88 unitSelector_->show();
91 void MainMenu::showAbout()
95 aboutDialog_ = new QDialog(this);
96 aboutDialog_->setWindowTitle(tr("About"));
98 QHBoxLayout* mainLayout = new QHBoxLayout;
99 QPixmap pixmap(":/resources/appicon.png");
100 QLabel* image = new QLabel;
101 image->setPixmap(pixmap);
102 mainLayout->addWidget(image, 0, Qt::AlignLeft);
103 mainLayout->addSpacing(15);
104 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>"));
105 text->setOpenExternalLinks(true);
106 mainLayout->addWidget(text, 10, Qt::AlignLeft);
108 aboutDialog_->setLayout(mainLayout);
111 aboutDialog_->show();
114 void MainMenu::confirmReset()
118 QMessageBox::StandardButton result = QMessageBox::question(this, tr("Reset all"),
119 tr("Are you sure? All recorded data will be lost."),
120 QMessageBox::Yes | QMessageBox::No);
122 if(result == QMessageBox::Yes)
128 void MainMenu::addAction(const QString& text,
129 const QObject* receiver,
132 if(itemCount_ % 2 == 0 || !currentRow_)
134 currentRow_ = new QHBoxLayout;
135 layout_->addLayout(currentRow_);
138 QPushButton* button = new QPushButton(text);
139 connect(button, SIGNAL(clicked(bool)), receiver, member);
140 connect(button, SIGNAL(clicked(bool)), this, SLOT(hide()));
141 currentRow_->addWidget(button);