#include "mainwindow.h" #include #include #include #include #include #include #include #include #define USERDATA_SETTING_CFG "/userdata/setting.cfg" #define HOME_SETTING_CFG QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/setting.cfg" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { const QRect availableGeometry = QApplication::desktop()->availableGeometry(this); resize(availableGeometry.width(), availableGeometry.height()); setMinimumWidth(availableGeometry.width()); audio = nullptr; wifi = nullptr; bt = nullptr; update = nullptr; factoryReset = nullptr; getConfig(); returnBtn.setStyleSheet(tr("border-image: url(:/return.png);")); QPixmap pixmap(":/return.png"); returnBtn.setFixedSize(pixmap.width(), pixmap.height()); QFont font; title.setText("Setting"); font.setPixelSize(availableGeometry.height()/20); title.setFont(font); title.setAlignment(Qt::AlignLeft); QHBoxLayout *hlayout = new QHBoxLayout; hlayout->addWidget(&returnBtn); hlayout->addWidget(&title); hlayout->addWidget(&subTitle); hlayout->addWidget(&toggleBtn); font.setPixelSize(pixmap.height()*1/3); subTitle.setFont(font); subTitle.setAlignment(Qt::AlignCenter); subTitle.setVisible(false); font.setPixelSize(pixmap.height()/2); toggleBtn.setFont(font); toggleBtn.setFixedSize(pixmap.width(), pixmap.height()); toggleBtn.setVisible(false); font.setPixelSize(availableGeometry.height()/20); // QListWidgetItem *audio = new QListWidgetItem(tr("Audio"), &listWidget); // audio->setFont(font); QListWidgetItem *wifi = new QListWidgetItem(tr("WiFi"), &listWidget); wifi->setFont(font); QListWidgetItem *bt = new QListWidgetItem(tr("BT"), &listWidget); bt->setFont(font); QListWidgetItem *update = new QListWidgetItem(tr("Update"), &listWidget); update->setFont(font); QListWidgetItem *factory = new QListWidgetItem(tr("Factory Reset"), &listWidget); factory->setFont(font); listWidget.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); listWidget.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); stack.addWidget(&listWidget); stack.setCurrentIndex(0); QWidget *hWidget = new QWidget; hWidget->setLayout(hlayout); QVBoxLayout *vlayout = new QVBoxLayout; vlayout->addWidget(hWidget); vlayout->addWidget(&stack); QWidget *vWidget = new QWidget; vWidget->setLayout(vlayout); setCentralWidget(vWidget); setStyleSheet("background-color:rgb(204,228,247)"); setWindowState(Qt::WindowMaximized); setWindowFlags(Qt::FramelessWindowHint); connect(&listWidget, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(on_itemClicked(QListWidgetItem *))); connect(&returnBtn, SIGNAL(clicked(bool)), this, SLOT(on_returnClicked())); } MainWindow::~MainWindow() { } QString MainWindow::saveConfig(int volume, int wifi, int bt) { QString path; QFileInfo fi("/userdata"); if(fi.isDir()){ path = USERDATA_SETTING_CFG; }else { path = HOME_SETTING_CFG; } QFile file(path); if(! file.open(QIODevice::ReadWrite | QIODevice::Text)){ qDebug() << "open rw setting.cfg failed"; return nullptr; } QTextStream out(&file); out << "volume = " + QString::number(volume) << endl; out << "isWifiOn = " + QString::number(wifi) << endl; out << "isBtOn = " + QString::number(bt) << endl; out.flush(); file.close(); return path; } int MainWindow::getValue(QTextStream *in, QString text) { in->seek(0); do { QString temp = in->readLine(); if(temp.startsWith(text)){ int size = text.count(); QString result = temp.mid(size, temp.count()); return result.toInt(); } }while (! in->atEnd()); return -1; } void MainWindow::getConfig() { QString path; if(QFile::exists(USERDATA_SETTING_CFG)){ path = USERDATA_SETTING_CFG; }else if(QFile::exists(HOME_SETTING_CFG)){ path = HOME_SETTING_CFG; }else { path = saveConfig(100, 0, 0); } QFile file(path); if(! file.open(QIODevice::ReadOnly | QIODevice::Text)){ qDebug() << "open ro setting.cfg failed"; return; } QTextStream in(&file); volume = getValue(&in, "volume = "); isWifiOn = getValue(&in, "isWifiOn = "); isBtOn = getValue(&in, "isBtOn = "); } void MainWindow::on_itemClicked(QListWidgetItem *item) { title.setText(item->text()); if(! item->text().compare("Audio")){ audio = new qtAudio(this); stack.addWidget(audio); stack.setCurrentIndex(stack.indexOf(audio)); } else if(! item->text().compare("WiFi")){ wifi = qtWifi::getInstance(this, &subTitle, &toggleBtn, isWifiOn); stack.addWidget(wifi); stack.setCurrentIndex(stack.indexOf(wifi)); } else if(! item->text().compare("BT")){ bt = qtBT::getInstance(this, &subTitle, &toggleBtn, isBtOn); stack.addWidget(bt); stack.setCurrentIndex(stack.indexOf(bt)); } else if(! item->text().compare("Update")){ update = new qtUpdate(this); stack.addWidget(update); stack.setCurrentIndex(stack.indexOf(update)); } else if(! item->text().compare("Factory Reset")){ factoryReset = new qtFactoryReset(this); stack.addWidget(factoryReset); stack.setCurrentIndex(stack.indexOf(factoryReset)); } } void MainWindow::on_returnClicked() { if(title.text() == "Setting"){ if(bt){ isBtOn = bt->isOn(); delete bt; bt = nullptr; } saveConfig(volume, isWifiOn, isBtOn); qApp->exit(0); }else { title.setText("Setting"); if(audio){ stack.removeWidget(audio); delete audio; audio = nullptr; }else if(wifi){ stack.removeWidget(wifi); isWifiOn = wifi->isOn(); delete wifi; wifi = nullptr; }else if(bt){ stack.removeWidget(bt); isBtOn = bt->isOn(); delete bt; bt = nullptr; }else if(update){ stack.removeWidget(update); delete update; update = nullptr; }else if(factoryReset){ stack.removeWidget(factoryReset); delete factoryReset; factoryReset = nullptr; } stack.setCurrentIndex(stack.indexOf(&listWidget)); } }