xref: /OK3568_Linux_fs/app/qsetting/mainwindow.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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