214 lines
5.6 KiB
C++
214 lines
5.6 KiB
C++
#include "addapp.h"
|
|
#include <QFileDialog>
|
|
#include <QProcessEnvironment>
|
|
#include <QMessageBox>
|
|
#include <sqlitehelper.h>
|
|
#include "config.h"
|
|
#include "applicationmanager.h"
|
|
|
|
|
|
#define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING
|
|
#include <experimental/filesystem>
|
|
namespace fs = std::experimental::filesystem;
|
|
|
|
|
|
AddApp::AddApp(bool isEdit, Record2 *row , QWidget* parent)
|
|
: QDialog(parent)
|
|
{
|
|
ui.setupUi(this);
|
|
this->row=row;
|
|
SQLiteHelper sqlite_helper;
|
|
setFixedSize(450, 450);
|
|
Record2 record;
|
|
sqlite_helper.get_a_software(row->orig_name, &record);
|
|
setWindowFlags(Qt::WindowCloseButtonHint);
|
|
form = new QFormLayout;
|
|
name = new QLineEdit;
|
|
form->addRow(QString::fromLocal8Bit("名称"), name);
|
|
|
|
if (isEdit)
|
|
{
|
|
name_label = new QLabel(orig_name_str);
|
|
form->addRow(QString::fromLocal8Bit("全名"), name_label);
|
|
|
|
if (!record.orig_name.isEmpty())
|
|
{
|
|
name_label->setText(record.orig_name);
|
|
}
|
|
orig_name_str = record.orig_name;
|
|
}
|
|
else
|
|
{
|
|
orig_name = new QLineEdit;
|
|
form->addRow(QString::fromLocal8Bit("全名"), orig_name);
|
|
}
|
|
|
|
if (record.orig_name.isEmpty())
|
|
{
|
|
path = new QPushButton(QString::fromLocal8Bit("浏览"));
|
|
connect(path, &QPushButton::clicked, this, &AddApp::broswer_exe);
|
|
form->addRow(QString::fromLocal8Bit("路径"), path);
|
|
sort = new QLineEdit;
|
|
sort->setValidator(new QIntValidator(10, 100));
|
|
form->addRow(QString::fromLocal8Bit("排序"), sort);
|
|
QList<Categrory> categrories;
|
|
layout_inner = new QVBoxLayout;
|
|
sqlite_helper.get_category(categrories, true);
|
|
|
|
for (auto category : categrories)
|
|
{
|
|
QCheckBox* check_box = new QCheckBox(category.name);
|
|
|
|
layout_inner->addWidget(check_box);
|
|
categories_list.insert(category.id, check_box);
|
|
}
|
|
form->addRow(QString::fromLocal8Bit("类别"), layout_inner);
|
|
submit_btn = new QPushButton(QString::fromLocal8Bit("提交"));
|
|
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
|
|
{
|
|
name->setText(record.name);
|
|
name_str = record.name;
|
|
sort_str = QString::number(record.sort);
|
|
path = new QPushButton(QString::fromLocal8Bit("浏览"));
|
|
path_str = record.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("路径"), path);
|
|
sort = new QLineEdit;
|
|
sort->setText(QString::number(record.sort));
|
|
sort->setValidator(new QIntValidator(10, 100));
|
|
form->addRow(QString::fromLocal8Bit("排序"), sort);
|
|
QList<Categrory> categrories;
|
|
layout_inner = new QVBoxLayout;
|
|
sqlite_helper.get_category(categrories, true);
|
|
this->categories = record.categories;
|
|
for (auto category : categrories)
|
|
{
|
|
QCheckBox* check_box = new QCheckBox(category.name);
|
|
if (record.categories[category.id - 1])
|
|
{
|
|
check_box->setCheckState(Qt::Checked);
|
|
}
|
|
layout_inner->addWidget(check_box);
|
|
categories_list.insert(category.id, check_box);
|
|
}
|
|
form->addRow(QString::fromLocal8Bit("类别"), layout_inner);
|
|
submit_btn = new QPushButton(QString::fromLocal8Bit("提交"));
|
|
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(){
|
|
QString path_str_old = path_str;
|
|
if(path_str.isEmpty())
|
|
{
|
|
path_str = QFileDialog::getOpenFileName(this, QString::fromLocal8Bit("选择程序"),
|
|
QApplication::applicationDirPath(), QString::fromLocal8Bit("应用程序 (*.exe)"));
|
|
}
|
|
else
|
|
{
|
|
path_str = QFileDialog::getOpenFileName(this, QString::fromLocal8Bit("选择程序"),
|
|
path_str, QString::fromLocal8Bit("应用程序 (*.exe)"));
|
|
}
|
|
if (path_str.isEmpty()) {
|
|
path_str = path_str_old;
|
|
}
|
|
fs::path file(path_str.toStdWString());
|
|
path->setText(QString::fromStdWString(file.filename().c_str()));
|
|
|
|
}
|
|
|
|
void AddApp::submit() {
|
|
if(isEdit)
|
|
{
|
|
if (!path->text().isEmpty())
|
|
{
|
|
QString name_str_old = name_str;
|
|
QString sort_str_old = sort_str;
|
|
name_str = name->text();
|
|
sort_str = sort->text();
|
|
if (name_str.isEmpty()) {
|
|
name_str = name_str_old;
|
|
}
|
|
if (sort_str.isEmpty()) {
|
|
sort_str = sort_str_old;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
QMessageBox::critical(this, QString::fromLocal8Bit("错误"), QString::fromLocal8Bit("未填写路径"));
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((!orig_name->text().isEmpty()) && (!path->text().isEmpty()))
|
|
{
|
|
orig_name_str = orig_name->text();
|
|
if (name->text().isEmpty()) {
|
|
name_str = orig_name_str;
|
|
}
|
|
else {
|
|
name_str = name->text();
|
|
}
|
|
|
|
sort_str = sort->text();
|
|
}
|
|
else
|
|
{
|
|
QMessageBox::critical(this, QString::fromLocal8Bit("错误"), QString::fromLocal8Bit("未填写全名或路径"));
|
|
return;
|
|
}
|
|
}
|
|
categories = new bool[8];
|
|
for (int i = 0; i < 8; i++) {
|
|
categories[i] = false;
|
|
}
|
|
categories[ALL-1] = true;
|
|
if (row->op == "soft") {
|
|
categories[SOFT-1] = true;
|
|
}
|
|
else if (row->op == "app") {
|
|
categories[INNER-1] = true;
|
|
}
|
|
for(auto key:categories_list.keys())
|
|
{
|
|
categories[key - 1] = categories_list[key]->checkState();
|
|
}
|
|
|
|
for (int i = 0; i < 8; i++) {
|
|
qDebug() << categories[i];
|
|
}
|
|
|
|
changed = true;
|
|
close();
|
|
}
|