OfficeAssistant_Win10/OfficeAssistant_msvc/addapp.cpp

165 lines
4.6 KiB
C++
Raw Normal View History

2023-08-13 12:16:22 +08:00
#include "addapp.h"
#include <QFileDialog>
#include <QProcessEnvironment>
#include <QMessageBox>
#include <sqlitehelper.h>
#include "applicationmanager.h"
#if _MSC_VER >=1936
#include <filesystem>
namespace fs = std::filesystem;
#else
#define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
#endif
AddApp::AddApp(bool isEdit, Record2 *row , QWidget* parent)
: QDialog(parent)
{
ui.setupUi(this);
SQLiteHelper sqlite_helper;
setFixedSize(450, 450);
setWindowFlags(Qt::WindowCloseButtonHint);
form = new QFormLayout;
name = new QLineEdit;
form->addRow(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), name);
if(isEdit)
{
name_label = new QLabel(orig_name_str);
form->addRow(QString::fromLocal8Bit("ȫ<EFBFBD><EFBFBD>"), name_label);
}
else
{
orig_name = new QLineEdit;
form->addRow(QString::fromLocal8Bit("ȫ<EFBFBD><EFBFBD>"), orig_name);
}
if(row==nullptr)
{
path = new QPushButton(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
connect(path, &QPushButton::clicked, this, &AddApp::broswer_exe);
form->addRow(QString::fromLocal8Bit("·<EFBFBD><EFBFBD>"), path);
sort = new QLineEdit;
sort->setValidator(new QIntValidator(10, 100));
form->addRow(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), sort);
QList<Categrory> categrories;
layout_inner = new QVBoxLayout;
sqlite_helper.get_category(categrories);
for (auto category : categrories)
{
if ((category.id == 1) || (category.id == 8) || (category.id == 4) || (category.id == 5 || category.id == 3))
{
continue;
}
QCheckBox* check_box = new QCheckBox(category.name);
layout_inner->addWidget(check_box);
categories_list.insert(category.id, check_box);
}
form->addRow(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), layout_inner);
submit_btn = new QPushButton(QString::fromLocal8Bit("<EFBFBD>"));
form->addWidget(submit_btn);
this->setLayout(form);
connect(path, &QPushButton::click, this, &AddApp::broswer_exe);
connect(submit_btn, &QPushButton::clicked, this, &AddApp::submit);
this->isEdit = isEdit;
}else
{
path = new QPushButton(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
path_str = row->exe_file;
path->setText(QString::fromWCharArray(fs::path(path_str.toStdWString()).filename().c_str()));
connect(path, &QPushButton::clicked, this, &AddApp::broswer_exe);
form->addRow(QString::fromLocal8Bit("·<EFBFBD><EFBFBD>"), path);
sort = new QLineEdit;
sort->setText(QString::number(row->sort));
sort->setValidator(new QIntValidator(10, 100));
form->addRow(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), sort);
QList<Categrory> categrories;
layout_inner = new QVBoxLayout;
sqlite_helper.get_category(categrories);
for (auto category : categrories)
{
if ((category.id == 1) || (category.id == 8) || (category.id == 4) || (category.id == 5 || category.id == 3))
{
continue;
}
QCheckBox* check_box = new QCheckBox(category.name);
if(row->categories[category.id])
{
check_box->setCheckState(Qt::Checked);
}
layout_inner->addWidget(check_box);
categories_list.insert(category.id, check_box);
}
form->addRow(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), layout_inner);
submit_btn = new QPushButton(QString::fromLocal8Bit("<EFBFBD>"));
form->addWidget(submit_btn);
this->setLayout(form);
connect(path, &QPushButton::click, this, &AddApp::broswer_exe);
connect(submit_btn, &QPushButton::clicked, this, &AddApp::submit);
this->isEdit = isEdit;
}
}
AddApp::~AddApp()
{
//delete categories;
delete name;
if(isEdit)
{
delete name_label;
}else
{
delete orig_name;
}
delete path;
delete sort;
delete submit_btn;
delete form;
}
void AddApp::broswer_exe(){
path_str = QFileDialog::getOpenFileName(this, QString::fromLocal8Bit("ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),
QApplication::applicationDirPath(), QString::fromLocal8Bit("Ӧ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD> (*.exe)"));
fs::path file(path_str.toStdWString());
path->setText(QString::fromStdWString(file.filename().c_str()));
}
void AddApp::submit() {
if((!orig_name->text().isEmpty())&&(!path->text().isEmpty()))
{
orig_name_str = orig_name->text();
name_str = orig_name_str;
sort_str = sort->text();
}
else
{
QMessageBox::critical(this, QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), QString::fromLocal8Bit("δ<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>·<EFBFBD><EFBFBD>"));
return;
}
categories = new bool[8];
categories[0] = true;
categories[2] = true;
categories[7] = true;
categories[3] = false;
categories[4] = false;
for(auto key:categories_list.keys())
{
if(key==0||key==2||key==7||key==3||key==4)
{
continue;
}
else
{
categories[key - 1] = categories_list[key]->checkState();
}
}
categories[0] = true;
categories[7] = true;
changed = true;
close();
}