1-全部表单选

2-取消默认入库UID
3-对DLC信息进行增加
This commit is contained in:
JackLee_CN 2024-10-14 13:38:50 +08:00
parent 05f8f8a9d3
commit 0b55dfd546
6 changed files with 205 additions and 55 deletions

View File

@ -32,6 +32,26 @@ QGroupBox#GAME_INFO_GROUP,QGroupBox#ALL_DLC_GROUP{
QTableView#GAME_INFO_TABLE::item:selected { QTableView#GAME_INFO_TABLE::item:selected {
background-color: #0078d4; background-color: #0078d4;
} }
QMenu {
background-color: #444;
color: #fff;
border: 1px solid #666;
}
QMenu::item {
padding: 2px 20px 2px 20px;
}
QMenu::icon:checked {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:1 #fff, stop:0 #aaa);
}
QMenu::item:selected {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:1 #ffc, stop:0 #9c9);
color: black;
}
/*------------------标题栏样式 最小化 最大化 关闭---------------------*/ /*------------------标题栏样式 最小化 最大化 关闭---------------------*/
/*标题栏变量参数值定义*/ /*标题栏变量参数值定义*/
/*标题栏背景*/ /*标题栏背景*/
@ -75,6 +95,6 @@ QPushButton#min_button:hover,QPushButton#max_button:hover,QPushButton#close_butt
} }
QPushButton#min_button:pressed,QPushButton#max_button:pressed,QPushButton#close_button:pressed{ QPushButton#min_button:pressed,QPushButton#max_button:pressed,QPushButton#close_button:pressed{
padding-left:2px; padding-left:1px;
padding-top:2px; padding-top:1px;
} }

View File

@ -1,3 +1,7 @@
QWidget#m_widget{
background-color: #F3F3F3;
color:#2F4F4F;
}
QWidget#m_widget{ QWidget#m_widget{
border-radius:10px; border-radius:10px;
background-color: #F3F3F3; background-color: #F3F3F3;
@ -34,6 +38,7 @@ QGroupBox#GAME_INFO_GROUP,QGroupBox#ALL_DLC_GROUP{
QTableView#GAME_INFO_TABLE::item:selected { QTableView#GAME_INFO_TABLE::item:selected {
background-color: #0078d4; background-color: #0078d4;
} }
/*------------------标题栏样式 最小化 最大化 关闭---------------------*/ /*------------------标题栏样式 最小化 最大化 关闭---------------------*/
/*标题栏变量参数值定义*/ /*标题栏变量参数值定义*/
/*标题栏背景*/ /*标题栏背景*/
@ -77,6 +82,6 @@ QPushButton#min_button:hover,QPushButton#max_button:hover,QPushButton#close_butt
} }
QPushButton#min_button:pressed,QPushButton#max_button:pressed,QPushButton#close_button:pressed{ QPushButton#min_button:pressed,QPushButton#max_button:pressed,QPushButton#close_button:pressed{
padding-left:2px; padding-left:1px;
padding-top:2px; padding-top:1px;
} }

View File

@ -79,21 +79,21 @@ void xsteam_ui::xsteam_init_mind_layout()
ip_uid_tag = new QLabel(tr("游戏UID:")); ip_uid_tag = new QLabel(tr("游戏UID:"));
ip_uid_tag->setObjectName("GAME_UID"); ip_uid_tag->setObjectName("GAME_UID");
ip_uid_edit = new QLineEdit("457140"); ip_uid_edit = new QLineEdit("");
ip_uid_edit->setValidator(new QRegularExpressionValidator(QRegularExpression("[0-9]+$"))); ip_uid_edit->setValidator(new QRegularExpressionValidator(QRegularExpression("[0-9]+$")));
ip_uid_edit->setMaxLength(8); ip_uid_edit->setMaxLength(8);
ip_layout->addWidget(ip_uid_tag); ip_layout->addWidget(ip_uid_tag);
ip_layout->addWidget(ip_uid_edit); ip_layout->addWidget(ip_uid_edit);
ip_layout->setContentsMargins(2, 2, 2, 2); ip_layout->setContentsMargins(2, 2, 2, 2);
btn_dlc_push = new QPushButton(tr("获取DLC")); btn_dlc_push = new QPushButton(tr("入库信息"));
btn_dlc_push->setObjectName("SET_DLC"); btn_dlc_push->setObjectName("SET_DLC");
ip_iu_layout = new QHBoxLayout(); ip_iu_layout = new QHBoxLayout();
btn_uid_push = new QPushButton(tr("入库")); btn_uid_push = new QPushButton(tr("入库"));
btn_uid_push->setObjectName("INPUT"); btn_uid_push->setObjectName("INPUT");
btn_uid_update=new QPushButton(tr("更新")); btn_uid_update = new QPushButton(tr("更新"));
btn_uid_update->setObjectName("UPDATE"); btn_uid_update->setObjectName("UPDATE");
ip_iu_layout->addWidget(btn_uid_push); ip_iu_layout->addWidget(btn_uid_push);
ip_iu_layout->addWidget(btn_uid_update); ip_iu_layout->addWidget(btn_uid_update);
@ -115,8 +115,10 @@ void xsteam_ui::xsteam_init_mind_layout()
ip_all_dlc_group = new QGroupBox(tr("DLC信息")); ip_all_dlc_group = new QGroupBox(tr("DLC信息"));
ip_all_dlc_group->setObjectName("ALL_DLC_GROUP"); ip_all_dlc_group->setObjectName("ALL_DLC_GROUP");
ip_all_dlc_table = new xsteam_view(); ip_all_dlc_table = new xsteam_view();
ip_all_dlc_table->setObjectName("ALL_DLC_TABLE");
ip_all_dlc_table->init_view(VIEW_MODE::ALL_DLC_INFO); ip_all_dlc_table->init_view(VIEW_MODE::ALL_DLC_INFO);
ip_in_dlc_table = new xsteam_view(); ip_in_dlc_table = new xsteam_view();
ip_in_dlc_table->setObjectName("IN_DLC_TABLE");
ip_in_dlc_table->init_view(VIEW_MODE::IN_DLC_INFO); ip_in_dlc_table->init_view(VIEW_MODE::IN_DLC_INFO);
ip_dlc_info_layout->addLayout(ip_layout); ip_dlc_info_layout->addLayout(ip_layout);
@ -178,6 +180,8 @@ void xsteam_ui::xsteam_init_style()
void xsteam_ui::xsteam_init_connect() void xsteam_ui::xsteam_init_connect()
{ {
ip_uid_table->setContextMenuPolicy(Qt::CustomContextMenu); ip_uid_table->setContextMenuPolicy(Qt::CustomContextMenu);
ip_all_dlc_table->setContextMenuPolicy(Qt::CustomContextMenu);
ip_in_dlc_table->setContextMenuPolicy(Qt::CustomContextMenu);
connect(btn_server_edit, SIGNAL(clicked()), this, SLOT(slots_open_server_edit())); connect(btn_server_edit, SIGNAL(clicked()), this, SLOT(slots_open_server_edit()));
connect(btn_xs_sets, SIGNAL(clicked()), this, SLOT(slots_open_setting())); connect(btn_xs_sets, SIGNAL(clicked()), this, SLOT(slots_open_setting()));
connect(btn_run_steam, SIGNAL(clicked()), this, SLOT(slots_run_steam_steamtools())); connect(btn_run_steam, SIGNAL(clicked()), this, SLOT(slots_run_steam_steamtools()));
@ -191,34 +195,146 @@ void xsteam_ui::xsteam_init_connect()
connect(xs_git_fetch, SIGNAL(signal_fetch_return_data(UidData)), this, SLOT(slots_table_append(UidData))); connect(xs_git_fetch, SIGNAL(signal_fetch_return_data(UidData)), this, SLOT(slots_table_append(UidData)));
connect(ip_uid_table->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(slots_selection_row(const QItemSelection &, const QItemSelection &))); connect(ip_uid_table->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(slots_selection_row(const QItemSelection &, const QItemSelection &)));
connect(ip_uid_table, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slots_rightMenu(QPoint))); connect(ip_uid_table, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slots_rightMenu(QPoint)));
connect(ip_all_dlc_table, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slots_rightMenu(QPoint)));
connect(ip_in_dlc_table, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slots_rightMenu(QPoint)));
connect(btn_dlc_push, SIGNAL(clicked()), this, SLOT(slots_get_uid_dlcs()));
}
void xsteam_ui::slots_get_uid_dlcs()
{
UidData uid_data;
slots_msg_text("获取DLC信息...");
ip_all_dlc_table->item_clear();
if (xsteam_curl_steam_id_app_info(ip_uid_edit->text().toStdString(), uid_data))
{
ip_all_dlc_table->item_append(uid_data, VIEW_MODE::ALL_DLC_INFO);
xs_data = uid_data;
slots_msg_text("DLC信息获取完毕");
}
else
{
slots_msg_text("获取DLC信息失败!请检查UID是否正确&网络是否畅通");
}
} }
void xsteam_ui::slots_rightMenu(const QPoint &pos) void xsteam_ui::slots_rightMenu(const QPoint &pos)
{ {
QTableView *signalSrc = (QTableView *)sender(); // 获取到了发送该信号按钮的指针 QTableView *signalSrc = (QTableView *)sender(); // 获取到了发送该信号按钮的指针
QModelIndex index = signalSrc->indexAt(pos); QModelIndex index = signalSrc->indexAt(pos);
if (sender()->objectName() == "GAME_INFO_TABLE")
{
if (index.row() > -1) if (index.row() > -1)
{ {
// 创建菜单对象 // 创建菜单对象
QMenu *m_menu = new QMenu(this); QMenu *m_menu = new QMenu(this);
QAction *delete_task = new QAction(tr("移除入库"), this); QAction *delete_task = new QAction(tr("移除入库"), this);
QAction *update_task = new QAction(tr("更新入库"), this);
delete_task->setData(1); delete_task->setData(1);
update_task->setData(2);
delete_task->setObjectName(signalSrc->objectName()); delete_task->setObjectName(signalSrc->objectName());
update_task->setObjectName(signalSrc->objectName());
// 把QAction对象添加到菜单上 // 把QAction对象添加到菜单上
m_menu->addAction(delete_task); m_menu->addAction(delete_task);
m_menu->addAction(update_task);
// 连接鼠标右键点击信号 // 连接鼠标右键点击信号
connect(delete_task, SIGNAL(triggered()), this, SLOT(slots_delete_uid_st())); connect(delete_task, SIGNAL(triggered()), this, SLOT(slots_delete_uid_st()));
connect(update_task, SIGNAL(triggered()), this, SLOT(slots_updata_uid_st()));
// 在鼠标右键点击的地方显示菜单 // 在鼠标右键点击的地方显示菜单
m_menu->exec(QCursor::pos()); m_menu->exec(QCursor::pos());
QList<QAction *> list = m_menu->actions(); QList<QAction *> list = m_menu->actions();
foreach (QAction *pAction, list) foreach (QAction *pAction, list)
{
delete pAction; delete pAction;
}
delete m_menu; delete m_menu;
} }
}
else if (sender()->objectName() == "ALL_DLC_TABLE")
{
if (index.row() > -1)
{
// 创建菜单对象
QMenu *m_menu = new QMenu(this);
QAction *delete_task = new QAction(tr("增加DLC"), this);
delete_task->setData(1);
delete_task->setObjectName(signalSrc->objectName());
// 把QAction对象添加到菜单上
m_menu->addAction(delete_task);
// 连接鼠标右键点击信号
connect(delete_task, SIGNAL(triggered()), this, SLOT(slots_in_dlc_add()));
// 在鼠标右键点击的地方显示菜单
m_menu->exec(QCursor::pos());
QList<QAction *> list = m_menu->actions();
foreach (QAction *pAction, list)
{
delete pAction;
}
delete m_menu;
}
}
else if (sender()->objectName() == "IN_DLC_TABLE")
{
if (index.row() > -1)
{
// 创建菜单对象
QMenu *m_menu = new QMenu(this);
QAction *delete_task = new QAction(tr("移除DLC"), this);
delete_task->setData(1);
delete_task->setObjectName(signalSrc->objectName());
// 把QAction对象添加到菜单上
m_menu->addAction(delete_task);
// 连接鼠标右键点击信号
connect(delete_task, SIGNAL(triggered()), this, SLOT(slots_in_dlc_delete()));
// 在鼠标右键点击的地方显示菜单
m_menu->exec(QCursor::pos());
QList<QAction *> list = m_menu->actions();
foreach (QAction *pAction, list)
{
delete pAction;
}
delete m_menu;
}
}
}
void xsteam_ui::slots_in_dlc_delete()
{
int curRow = ip_in_dlc_table->currentIndex().row();
if (curRow > -1)
{
QAbstractItemModel *modessl = ip_in_dlc_table->model();
QModelIndex indextemp = modessl->index(curRow, 0);
QString dlc_id = modessl->data(indextemp).value<QString>();
modessl->removeRow(curRow);
ip_in_dlc_table->setModel(modessl);
xs_data.n_dlc.erase(std::remove(xs_data.n_dlc.begin(), xs_data.n_dlc.end(), dlc_id), xs_data.n_dlc.end());
for (auto &data : _data.u_data)
{
if (data.uid == ip_uid_edit->text().toStdString())
{
for (auto &dlc : data.n_dlc)
{
if (dlc == dlc_id.toStdString())
{
data.n_dlc.erase(std::remove(data.n_dlc.begin(), data.n_dlc.end(), dlc_id), data.n_dlc.end());
slots_msg_text("删除DLC:"+dlc_id.toStdString()+"成功!");
}
}
}
}
}
}
void xsteam_ui::slots_in_dlc_add()
{
int curRow = ip_all_dlc_table->currentIndex().row();
if (curRow > -1)
{
QAbstractItemModel *modessl = ip_all_dlc_table->model();
QModelIndex indextemp = modessl->index(curRow, 0);
QString dlc_id = modessl->data(indextemp).value<QString>();
xs_data.n_dlc.push_back(dlc_id.toStdString());
ip_in_dlc_table->item_append(xs_data, VIEW_MODE::IN_DLC_INFO);
for (auto &x_dlc : _data.u_data)
{
if (x_dlc.uid == ip_uid_edit->text().toStdString())
{
x_dlc.n_dlc.push_back(dlc_id.toStdString());
slots_msg_text("增加:"+dlc_id.toStdString()+"成功!");
}
}
}
} }
void xsteam_ui::slots_delete_uid_st() void xsteam_ui::slots_delete_uid_st()
{ {
@ -231,9 +347,7 @@ void xsteam_ui::slots_delete_uid_st()
modessl->removeRow(curRow); modessl->removeRow(curRow);
ip_uid_table->setModel(modessl); ip_uid_table->setModel(modessl);
QFuture<void> future = QtConcurrent::run([=]() QFuture<void> future = QtConcurrent::run([=]()
{ { xsteam_delete_uid_st(uid.toStdString()); });
xsteam_delete_uid_st(uid.toStdString());
});
} }
} }
void xsteam_ui::slots_updata_uid_st() void xsteam_ui::slots_updata_uid_st()
@ -274,6 +388,7 @@ void xsteam_ui::slots_selection_row(const QItemSelection &current, const QItemSe
break; break;
} }
} }
ip_uid_edit->setText(QString::fromStdString(u_data.uid));
ip_all_dlc_table->item_append(u_data, VIEW_MODE::ALL_DLC_INFO); ip_all_dlc_table->item_append(u_data, VIEW_MODE::ALL_DLC_INFO);
ip_in_dlc_table->item_append(u_data, VIEW_MODE::IN_DLC_INFO); ip_in_dlc_table->item_append(u_data, VIEW_MODE::IN_DLC_INFO);
} }
@ -314,13 +429,6 @@ void xsteam_ui::table_load_ui_data()
ip_uid_table->item_append(x, VIEW_MODE::UID_INFO); ip_uid_table->item_append(x, VIEW_MODE::UID_INFO);
} }
} }
void xsteam_ui::slots_open_server_edit()
{
xs_src_edit_ui = xsteam_src_edit_ui::Instance();
xs_src_edit_ui->setGeometry(((QWidget *)this->parent())->geometry());
connect(xs_src_edit_ui, SIGNAL(signals_update()), this, SLOT(slots_server_combobox_load_data()));
xs_src_edit_ui->exec();
}
void xsteam_ui::slots_run_steam_steamtools() void xsteam_ui::slots_run_steam_steamtools()
{ {
@ -334,15 +442,25 @@ void xsteam_ui::slots_run_steam_steamtools()
xsteam_run_steam_steamtools(RUN_MODE::STEAMTOOLS); xsteam_run_steam_steamtools(RUN_MODE::STEAMTOOLS);
} }
} }
void xsteam_ui::slots_open_server_edit()
{
xs_src_edit_ui = xsteam_src_edit_ui::Instance();
xs_src_edit_ui->setMaximumSize(660, 580);
xs_src_edit_ui->setGeometry(((QWidget *)this->parent())->geometry());
connect(xs_src_edit_ui, SIGNAL(signals_update()), this, SLOT(slots_server_combobox_load_data()));
xs_src_edit_ui->exec();
}
void xsteam_ui::slots_open_setting() void xsteam_ui::slots_open_setting()
{ {
xs_sets_ui = xsteam_set_ui::Instance(); xs_sets_ui = xsteam_set_ui::Instance();
xs_sets_ui->setMaximumSize(660, 580);
xs_sets_ui->setGeometry(((QWidget *)this->parent())->geometry()); xs_sets_ui->setGeometry(((QWidget *)this->parent())->geometry());
xs_sets_ui->exec(); xs_sets_ui->exec();
} }
void xsteam_ui::slots_open_about() void xsteam_ui::slots_open_about()
{ {
xs_about_ui = xsteam_about_ui::Instance(); xs_about_ui = xsteam_about_ui::Instance();
xs_about_ui->setMaximumSize(660, 580);
xs_about_ui->setGeometry(((QWidget *)this->parent())->geometry()); xs_about_ui->setGeometry(((QWidget *)this->parent())->geometry());
xs_about_ui->exec(); xs_about_ui->exec();
} }
@ -360,14 +478,15 @@ void xsteam_ui::slots_table_append(UidData u_data)
} }
void xsteam_ui::slots_imput_uid_push() void xsteam_ui::slots_imput_uid_push()
{ {
in_data = {};
InputData i_data;
UidData u_data;
bool steam_ok = false; bool steam_ok = false;
bool steamtools_ok = false; bool steamtools_ok = false;
i_data.t_g_uid = ip_uid_edit->text().toStdString(); in_data.t_g_uid = ip_uid_edit->text().toStdString();
i_data.t_s_name = server_txt->currentText().toStdString(); in_data.t_s_name = server_txt->currentText().toStdString();
if (xsteam_uid_exists(i_data.t_g_uid)) if(ip_uid_edit->text().toStdString()==""){
slots_msg_text("入库UID不能为空");
}
if (xsteam_uid_exists(in_data.t_g_uid))
{ {
slots_msg_text("当前游戏已入库!请勿反复入库"); slots_msg_text("当前游戏已入库!请勿反复入库");
return; return;
@ -377,13 +496,14 @@ void xsteam_ui::slots_imput_uid_push()
slots_msg_text("请检查steam和steamtools路径"); slots_msg_text("请检查steam和steamtools路径");
return; return;
} }
if(!xsteam_src_data_exists(i_data.t_s_name)){ if (!xsteam_src_data_exists(in_data.t_s_name))
{
slots_msg_text("请先拉取源服务器清单列表到本地"); slots_msg_text("请先拉取源服务器清单列表到本地");
return; return;
} }
slots_disable_enable_function(false); slots_disable_enable_function(false);
QFuture<void> future = QtConcurrent::run([=](InputData i_data, UidData u_data) QFuture<void> future = QtConcurrent::run([=](InputData i_data, UidData u_data)
{ {
xs_git_fetch->fecth_uid_to_steam(i_data, u_data); xs_git_fetch->fecth_uid_to_steam(in_data, xs_data);
slots_disable_enable_function(true); }, i_data, u_data); slots_disable_enable_function(true); }, in_data, xs_data);
} }

View File

@ -80,7 +80,9 @@ private:
xsteam_about_ui* xs_about_ui; xsteam_about_ui* xs_about_ui;
xsteam_git_fetch* xs_git_fetch; xsteam_git_fetch* xs_git_fetch;
QSpacerItem * sparcer_item = new QSpacerItem(0,0,QSizePolicy::Expanding,QSizePolicy::Fixed); QSpacerItem * sparcer_item = new QSpacerItem(0,0,QSizePolicy::Expanding,QSizePolicy::Fixed);
//connect
InputData in_data;
UidData xs_data;
private slots: private slots:
void slots_open_server_edit(); void slots_open_server_edit();
void slots_open_setting(); void slots_open_setting();
@ -97,6 +99,9 @@ private slots:
void slots_rightMenu(const QPoint &pos); void slots_rightMenu(const QPoint &pos);
void slots_delete_uid_st(); void slots_delete_uid_st();
void slots_updata_uid_st(); void slots_updata_uid_st();
void slots_get_uid_dlcs();
void slots_in_dlc_delete();
void slots_in_dlc_add();
signals: signals:
void signals_src_combobox_update(); void signals_src_combobox_update();
}; };

View File

@ -29,6 +29,7 @@ void xsteam_view::init_view(VIEW_MODE view_mode)
m_model->setColumnCount(ex_in_dlc_table_head_tips.count()); m_model->setColumnCount(ex_in_dlc_table_head_tips.count());
m_model->setHorizontalHeaderLabels(ex_in_dlc_table_head_tips); m_model->setHorizontalHeaderLabels(ex_in_dlc_table_head_tips);
} }
setSelectionMode(QAbstractItemView::SingleSelection);
horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
setSelectionBehavior(QAbstractItemView::SelectRows); setSelectionBehavior(QAbstractItemView::SelectRows);
setEditTriggers(QAbstractItemView::NoEditTriggers); setEditTriggers(QAbstractItemView::NoEditTriggers);

View File

@ -25,7 +25,6 @@ public:
~xsteam_view(); ~xsteam_view();
void init_view(VIEW_MODE); void init_view(VIEW_MODE);
void item_append(UidData& data,VIEW_MODE mode); void item_append(UidData& data,VIEW_MODE mode);
private:
void item_clear(); void item_clear();
private: private:
QStandardItemModel* m_model; QStandardItemModel* m_model;