1*4882a593Smuzhiyun #include "mainwindow.h"
2*4882a593Smuzhiyun #include <QApplication>
3*4882a593Smuzhiyun #include <QDebug>
4*4882a593Smuzhiyun #include <QDesktopWidget>
5*4882a593Smuzhiyun #include <QFileInfo>
6*4882a593Smuzhiyun #include <QHBoxLayout>
7*4882a593Smuzhiyun #include <QStandardPaths>
8*4882a593Smuzhiyun #include <QToolBar>
9*4882a593Smuzhiyun #include <QVBoxLayout>
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun #define USERDATA_SETTING_CFG "/userdata/setting.cfg"
12*4882a593Smuzhiyun #define HOME_SETTING_CFG QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/setting.cfg"
13*4882a593Smuzhiyun
MainWindow(QWidget * parent)14*4882a593Smuzhiyun MainWindow::MainWindow(QWidget *parent)
15*4882a593Smuzhiyun : QMainWindow(parent)
16*4882a593Smuzhiyun {
17*4882a593Smuzhiyun const QRect availableGeometry = QApplication::desktop()->availableGeometry(this);
18*4882a593Smuzhiyun resize(availableGeometry.width(), availableGeometry.height());
19*4882a593Smuzhiyun setMinimumWidth(availableGeometry.width());
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun audio = nullptr;
22*4882a593Smuzhiyun wifi = nullptr;
23*4882a593Smuzhiyun bt = nullptr;
24*4882a593Smuzhiyun update = nullptr;
25*4882a593Smuzhiyun factoryReset = nullptr;
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun getConfig();
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun returnBtn.setStyleSheet(tr("border-image: url(:/return.png);"));
30*4882a593Smuzhiyun QPixmap pixmap(":/return.png");
31*4882a593Smuzhiyun returnBtn.setFixedSize(pixmap.width(), pixmap.height());
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun QFont font;
34*4882a593Smuzhiyun title.setText("Setting");
35*4882a593Smuzhiyun font.setPixelSize(availableGeometry.height()/20);
36*4882a593Smuzhiyun title.setFont(font);
37*4882a593Smuzhiyun title.setAlignment(Qt::AlignLeft);
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun QHBoxLayout *hlayout = new QHBoxLayout;
41*4882a593Smuzhiyun hlayout->addWidget(&returnBtn);
42*4882a593Smuzhiyun hlayout->addWidget(&title);
43*4882a593Smuzhiyun hlayout->addWidget(&subTitle);
44*4882a593Smuzhiyun hlayout->addWidget(&toggleBtn);
45*4882a593Smuzhiyun font.setPixelSize(pixmap.height()*1/3);
46*4882a593Smuzhiyun subTitle.setFont(font);
47*4882a593Smuzhiyun subTitle.setAlignment(Qt::AlignCenter);
48*4882a593Smuzhiyun subTitle.setVisible(false);
49*4882a593Smuzhiyun font.setPixelSize(pixmap.height()/2);
50*4882a593Smuzhiyun toggleBtn.setFont(font);
51*4882a593Smuzhiyun toggleBtn.setFixedSize(pixmap.width(), pixmap.height());
52*4882a593Smuzhiyun toggleBtn.setVisible(false);
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun font.setPixelSize(availableGeometry.height()/20);
55*4882a593Smuzhiyun // QListWidgetItem *audio = new QListWidgetItem(tr("Audio"), &listWidget);
56*4882a593Smuzhiyun // audio->setFont(font);
57*4882a593Smuzhiyun QListWidgetItem *wifi = new QListWidgetItem(tr("WiFi"), &listWidget);
58*4882a593Smuzhiyun wifi->setFont(font);
59*4882a593Smuzhiyun QListWidgetItem *bt = new QListWidgetItem(tr("BT"), &listWidget);
60*4882a593Smuzhiyun bt->setFont(font);
61*4882a593Smuzhiyun QListWidgetItem *update = new QListWidgetItem(tr("Update"), &listWidget);
62*4882a593Smuzhiyun update->setFont(font);
63*4882a593Smuzhiyun QListWidgetItem *factory = new QListWidgetItem(tr("Factory Reset"), &listWidget);
64*4882a593Smuzhiyun factory->setFont(font);
65*4882a593Smuzhiyun listWidget.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
66*4882a593Smuzhiyun listWidget.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun stack.addWidget(&listWidget);
69*4882a593Smuzhiyun stack.setCurrentIndex(0);
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun QWidget *hWidget = new QWidget;
72*4882a593Smuzhiyun hWidget->setLayout(hlayout);
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun QVBoxLayout *vlayout = new QVBoxLayout;
75*4882a593Smuzhiyun vlayout->addWidget(hWidget);
76*4882a593Smuzhiyun vlayout->addWidget(&stack);
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun QWidget *vWidget = new QWidget;
79*4882a593Smuzhiyun vWidget->setLayout(vlayout);
80*4882a593Smuzhiyun setCentralWidget(vWidget);
81*4882a593Smuzhiyun setStyleSheet("background-color:rgb(204,228,247)");
82*4882a593Smuzhiyun setWindowState(Qt::WindowMaximized);
83*4882a593Smuzhiyun setWindowFlags(Qt::FramelessWindowHint);
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun connect(&listWidget, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(on_itemClicked(QListWidgetItem *)));
86*4882a593Smuzhiyun connect(&returnBtn, SIGNAL(clicked(bool)), this, SLOT(on_returnClicked()));
87*4882a593Smuzhiyun }
88*4882a593Smuzhiyun
~MainWindow()89*4882a593Smuzhiyun MainWindow::~MainWindow()
90*4882a593Smuzhiyun {
91*4882a593Smuzhiyun
92*4882a593Smuzhiyun }
93*4882a593Smuzhiyun
saveConfig(int volume,int wifi,int bt)94*4882a593Smuzhiyun QString MainWindow::saveConfig(int volume, int wifi, int bt)
95*4882a593Smuzhiyun {
96*4882a593Smuzhiyun QString path;
97*4882a593Smuzhiyun QFileInfo fi("/userdata");
98*4882a593Smuzhiyun if(fi.isDir()){
99*4882a593Smuzhiyun path = USERDATA_SETTING_CFG;
100*4882a593Smuzhiyun }else {
101*4882a593Smuzhiyun path = HOME_SETTING_CFG;
102*4882a593Smuzhiyun }
103*4882a593Smuzhiyun QFile file(path);
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun if(! file.open(QIODevice::ReadWrite | QIODevice::Text)){
106*4882a593Smuzhiyun qDebug() << "open rw setting.cfg failed";
107*4882a593Smuzhiyun return nullptr;
108*4882a593Smuzhiyun }
109*4882a593Smuzhiyun QTextStream out(&file);
110*4882a593Smuzhiyun out << "volume = " + QString::number(volume) << endl;
111*4882a593Smuzhiyun out << "isWifiOn = " + QString::number(wifi) << endl;
112*4882a593Smuzhiyun out << "isBtOn = " + QString::number(bt) << endl;
113*4882a593Smuzhiyun out.flush();
114*4882a593Smuzhiyun file.close();
115*4882a593Smuzhiyun return path;
116*4882a593Smuzhiyun }
117*4882a593Smuzhiyun
getValue(QTextStream * in,QString text)118*4882a593Smuzhiyun int MainWindow::getValue(QTextStream *in, QString text)
119*4882a593Smuzhiyun {
120*4882a593Smuzhiyun in->seek(0);
121*4882a593Smuzhiyun do {
122*4882a593Smuzhiyun QString temp = in->readLine();
123*4882a593Smuzhiyun if(temp.startsWith(text)){
124*4882a593Smuzhiyun int size = text.count();
125*4882a593Smuzhiyun QString result = temp.mid(size, temp.count());
126*4882a593Smuzhiyun return result.toInt();
127*4882a593Smuzhiyun }
128*4882a593Smuzhiyun }while (! in->atEnd());
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun return -1;
131*4882a593Smuzhiyun }
132*4882a593Smuzhiyun
getConfig()133*4882a593Smuzhiyun void MainWindow::getConfig()
134*4882a593Smuzhiyun {
135*4882a593Smuzhiyun QString path;
136*4882a593Smuzhiyun
137*4882a593Smuzhiyun if(QFile::exists(USERDATA_SETTING_CFG)){
138*4882a593Smuzhiyun path = USERDATA_SETTING_CFG;
139*4882a593Smuzhiyun }else if(QFile::exists(HOME_SETTING_CFG)){
140*4882a593Smuzhiyun path = HOME_SETTING_CFG;
141*4882a593Smuzhiyun }else {
142*4882a593Smuzhiyun path = saveConfig(100, 0, 0);
143*4882a593Smuzhiyun }
144*4882a593Smuzhiyun
145*4882a593Smuzhiyun QFile file(path);
146*4882a593Smuzhiyun if(! file.open(QIODevice::ReadOnly | QIODevice::Text)){
147*4882a593Smuzhiyun qDebug() << "open ro setting.cfg failed";
148*4882a593Smuzhiyun return;
149*4882a593Smuzhiyun }
150*4882a593Smuzhiyun QTextStream in(&file);
151*4882a593Smuzhiyun volume = getValue(&in, "volume = ");
152*4882a593Smuzhiyun isWifiOn = getValue(&in, "isWifiOn = ");
153*4882a593Smuzhiyun isBtOn = getValue(&in, "isBtOn = ");
154*4882a593Smuzhiyun }
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun
on_itemClicked(QListWidgetItem * item)157*4882a593Smuzhiyun void MainWindow::on_itemClicked(QListWidgetItem *item)
158*4882a593Smuzhiyun {
159*4882a593Smuzhiyun title.setText(item->text());
160*4882a593Smuzhiyun
161*4882a593Smuzhiyun if(! item->text().compare("Audio")){
162*4882a593Smuzhiyun audio = new qtAudio(this);
163*4882a593Smuzhiyun stack.addWidget(audio);
164*4882a593Smuzhiyun stack.setCurrentIndex(stack.indexOf(audio));
165*4882a593Smuzhiyun } else if(! item->text().compare("WiFi")){
166*4882a593Smuzhiyun wifi = qtWifi::getInstance(this, &subTitle, &toggleBtn, isWifiOn);
167*4882a593Smuzhiyun stack.addWidget(wifi);
168*4882a593Smuzhiyun stack.setCurrentIndex(stack.indexOf(wifi));
169*4882a593Smuzhiyun } else if(! item->text().compare("BT")){
170*4882a593Smuzhiyun bt = qtBT::getInstance(this, &subTitle, &toggleBtn, isBtOn);
171*4882a593Smuzhiyun stack.addWidget(bt);
172*4882a593Smuzhiyun stack.setCurrentIndex(stack.indexOf(bt));
173*4882a593Smuzhiyun } else if(! item->text().compare("Update")){
174*4882a593Smuzhiyun update = new qtUpdate(this);
175*4882a593Smuzhiyun stack.addWidget(update);
176*4882a593Smuzhiyun stack.setCurrentIndex(stack.indexOf(update));
177*4882a593Smuzhiyun } else if(! item->text().compare("Factory Reset")){
178*4882a593Smuzhiyun factoryReset = new qtFactoryReset(this);
179*4882a593Smuzhiyun stack.addWidget(factoryReset);
180*4882a593Smuzhiyun stack.setCurrentIndex(stack.indexOf(factoryReset));
181*4882a593Smuzhiyun }
182*4882a593Smuzhiyun }
183*4882a593Smuzhiyun
on_returnClicked()184*4882a593Smuzhiyun void MainWindow::on_returnClicked()
185*4882a593Smuzhiyun {
186*4882a593Smuzhiyun if(title.text() == "Setting"){
187*4882a593Smuzhiyun if(bt){
188*4882a593Smuzhiyun isBtOn = bt->isOn();
189*4882a593Smuzhiyun delete bt;
190*4882a593Smuzhiyun bt = nullptr;
191*4882a593Smuzhiyun }
192*4882a593Smuzhiyun saveConfig(volume, isWifiOn, isBtOn);
193*4882a593Smuzhiyun qApp->exit(0);
194*4882a593Smuzhiyun }else {
195*4882a593Smuzhiyun title.setText("Setting");
196*4882a593Smuzhiyun if(audio){
197*4882a593Smuzhiyun stack.removeWidget(audio);
198*4882a593Smuzhiyun delete audio;
199*4882a593Smuzhiyun audio = nullptr;
200*4882a593Smuzhiyun }else if(wifi){
201*4882a593Smuzhiyun stack.removeWidget(wifi);
202*4882a593Smuzhiyun isWifiOn = wifi->isOn();
203*4882a593Smuzhiyun delete wifi;
204*4882a593Smuzhiyun wifi = nullptr;
205*4882a593Smuzhiyun }else if(bt){
206*4882a593Smuzhiyun stack.removeWidget(bt);
207*4882a593Smuzhiyun isBtOn = bt->isOn();
208*4882a593Smuzhiyun delete bt;
209*4882a593Smuzhiyun bt = nullptr;
210*4882a593Smuzhiyun }else if(update){
211*4882a593Smuzhiyun stack.removeWidget(update);
212*4882a593Smuzhiyun delete update;
213*4882a593Smuzhiyun update = nullptr;
214*4882a593Smuzhiyun }else if(factoryReset){
215*4882a593Smuzhiyun stack.removeWidget(factoryReset);
216*4882a593Smuzhiyun delete factoryReset;
217*4882a593Smuzhiyun factoryReset = nullptr;
218*4882a593Smuzhiyun }
219*4882a593Smuzhiyun stack.setCurrentIndex(stack.indexOf(&listWidget));
220*4882a593Smuzhiyun }
221*4882a593Smuzhiyun }
222