Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
4238d3e1fa | |||
35dd8cb465 | |||
f3dc14698d | |||
fd35c2bf03 | |||
99fd3d61ce |
3
.vscode/settings.json
vendored
@ -110,7 +110,8 @@
|
|||||||
"qheaderview": "cpp",
|
"qheaderview": "cpp",
|
||||||
"qabstractlistmodel": "cpp",
|
"qabstractlistmodel": "cpp",
|
||||||
"qtconcurrentrun": "cpp",
|
"qtconcurrentrun": "cpp",
|
||||||
"*.in": "cpp"
|
"*.in": "cpp",
|
||||||
|
"qactiongroup": "cpp"
|
||||||
},
|
},
|
||||||
"Codegeex.RepoIndex": true
|
"Codegeex.RepoIndex": true
|
||||||
}
|
}
|
@ -1,9 +1,9 @@
|
|||||||
#cmake最低版本
|
#cmake最低版本
|
||||||
cmake_minimum_required(VERSION 3.19)
|
cmake_minimum_required(VERSION 3.19)
|
||||||
|
|
||||||
set(VCPKG_ROOT "F:/SourceCode/vcpkg")
|
SET(VCPKG_ROOT "F:/SourceCode/vcpkg")
|
||||||
set(CMAKE_TOOLCHAIN_FILE "F:/SourceCode/vcpkg/scripts/buildsystems/vcpkg.cmake")
|
SET(CMAKE_TOOLCHAIN_FILE "F:/SourceCode/vcpkg/scripts/buildsystems/vcpkg.cmake")
|
||||||
set(VCPKG_TARGET_TRIPLET "x64-mingw-static")
|
SET(VCPKG_TARGET_TRIPLET "x64-mingw-static")
|
||||||
SET(CMAKE_C_COMPILER "x86_64-w64-mingw32-gcc.exe")
|
SET(CMAKE_C_COMPILER "x86_64-w64-mingw32-gcc.exe")
|
||||||
SET(CMAKE_CXX_COMPILER "x86_64-w64-mingw32-g++.exe")
|
SET(CMAKE_CXX_COMPILER "x86_64-w64-mingw32-g++.exe")
|
||||||
#项目版本
|
#项目版本
|
||||||
@ -29,6 +29,7 @@ SET(CMAKE_CXX_FLAGS"-Wall -Wextra")
|
|||||||
SET(CMAKE_CXX_FLAGS_RELEASE"-O3 -s")
|
SET(CMAKE_CXX_FLAGS_RELEASE"-O3 -s")
|
||||||
SET(CMAKE_BUILD_TYPE "Release")
|
SET(CMAKE_BUILD_TYPE "Release")
|
||||||
|
|
||||||
|
MESSAGE(STATUS ${PROJECT_BINARY_DIR})
|
||||||
MESSAGE(STATUS "----------编译模式 START-------------")
|
MESSAGE(STATUS "----------编译模式 START-------------")
|
||||||
if(NOT CMAKE_BUILD_TYPE)
|
if(NOT CMAKE_BUILD_TYPE)
|
||||||
MESSAGE(STATUS "[CMAKE_BUILD_TYPE]当前值[Debug]")
|
MESSAGE(STATUS "[CMAKE_BUILD_TYPE]当前值[Debug]")
|
||||||
@ -37,13 +38,19 @@ if(NOT CMAKE_BUILD_TYPE)
|
|||||||
else()
|
else()
|
||||||
MESSAGE(STATUS "[CMAKE_BUILD_TYPE]当前值[Release]")
|
MESSAGE(STATUS "[CMAKE_BUILD_TYPE]当前值[Release]")
|
||||||
SET(CMAKE_BUILD_TYPE "Release")
|
SET(CMAKE_BUILD_TYPE "Release")
|
||||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/release)
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/release/)
|
||||||
endif()
|
endif()
|
||||||
MESSAGE(STATUS "----------编译模式 END---------------")
|
MESSAGE(STATUS "----------编译模式 END---------------")
|
||||||
|
|
||||||
#设置QT .cmake文件路径
|
#设置QT .cmake文件路径
|
||||||
#自编译QT静态库
|
#自编译QT静态库
|
||||||
|
SET(QT_STATU "static")
|
||||||
|
|
||||||
|
if(QT_STATU STREQUAL "dynamic")
|
||||||
|
SET(QT_DIR "D:/Dev/Qt/6.8.0/mingw_64/lib/cmake")
|
||||||
|
else()
|
||||||
SET(QT_DIR "D:/Dev/Qt/6.8.0/mingw1310_static_x64/lib/cmake")
|
SET(QT_DIR "D:/Dev/Qt/6.8.0/mingw1310_static_x64/lib/cmake")
|
||||||
|
endif()
|
||||||
|
|
||||||
SET(JSON ${PROJECT_SOURCE_DIR}/3rdparty/json)
|
SET(JSON ${PROJECT_SOURCE_DIR}/3rdparty/json)
|
||||||
|
|
||||||
@ -102,12 +109,10 @@ endif()
|
|||||||
include_directories(${JSON}/include)
|
include_directories(${JSON}/include)
|
||||||
|
|
||||||
#增加XSteam的cpp
|
#增加XSteam的cpp
|
||||||
FILE(GLOB src "${PROJECT_SOURCE_DIR}/src/*.cpp" "${PROJECT_SOURCE_DIR}/src/*.h")
|
FILE(GLOB src_xsteam "${PROJECT_SOURCE_DIR}/src/*.cpp" "${PROJECT_SOURCE_DIR}/src/*.h")
|
||||||
|
|
||||||
|
SET(PROJECT_SOURCES ${src_xsteam})
|
||||||
|
|
||||||
SET(PROJECT_SOURCES
|
|
||||||
main.cpp
|
|
||||||
${src}
|
|
||||||
)
|
|
||||||
# 设置消息策略为qFatal来禁用qDebug信息
|
# 设置消息策略为qFatal来禁用qDebug信息
|
||||||
LIST(APPEND CMAKE_CXX_FLAGS "-DQT_NO_DEBUG_OUTPUT")
|
LIST(APPEND CMAKE_CXX_FLAGS "-DQT_NO_DEBUG_OUTPUT")
|
||||||
|
|
||||||
@ -153,12 +158,7 @@ target_link_options(${PROJECT_NAME} PUBLIC -Wl,--allow-multiple-definition)
|
|||||||
|
|
||||||
# 打印GCC版本号信息
|
# 打印GCC版本号信息
|
||||||
message(STATUS "G++ version: ${CMAKE_CXX_COMPILER_VERSION}")
|
message(STATUS "G++ version: ${CMAKE_CXX_COMPILER_VERSION}")
|
||||||
# 打印所有CMAKE_开头的变量
|
|
||||||
foreach(var IN LISTS CMAKE_VARIABLES)
|
|
||||||
if(var MATCHES "^CMAKE_")
|
|
||||||
message(STATUS "${var} = ${${var}}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
# 获取Qt版本号
|
# 获取Qt版本号
|
||||||
SET(QT_VERSION_STR "${Qt6_VERSION}")
|
SET(QT_VERSION_STR "${Qt6_VERSION}")
|
||||||
# 打印Qt版本号
|
# 打印Qt版本号
|
||||||
|
3
res.qrc
@ -2,6 +2,9 @@
|
|||||||
<qresource prefix="/">
|
<qresource prefix="/">
|
||||||
<file>res/img/btn/btn_setting.png</file>
|
<file>res/img/btn/btn_setting.png</file>
|
||||||
<file>res/img/btn/btn_about.png</file>
|
<file>res/img/btn/btn_about.png</file>
|
||||||
|
<file>res/img/btn/net_ok.png</file>
|
||||||
|
<file>res/img/btn/net_error.png</file>
|
||||||
|
<file>res/img/btn/net_wait.png</file>
|
||||||
<file>res/img/xsteam.ico</file>
|
<file>res/img/xsteam.ico</file>
|
||||||
<file>res/img/xsteam.png</file>
|
<file>res/img/xsteam.png</file>
|
||||||
<file>res/bin/luapacka.exe</file>
|
<file>res/bin/luapacka.exe</file>
|
||||||
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 791 B |
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 966 B |
BIN
res/img/btn/net_error.png
Normal file
After Width: | Height: | Size: 897 B |
BIN
res/img/btn/net_ok.png
Normal file
After Width: | Height: | Size: 886 B |
BIN
res/img/btn/net_wait.png
Normal file
After Width: | Height: | Size: 678 B |
@ -8,7 +8,7 @@ QPushButton#ico_button{
|
|||||||
image:url(:/res/img/xsteam.png);
|
image:url(:/res/img/xsteam.png);
|
||||||
border:none;
|
border:none;
|
||||||
}
|
}
|
||||||
QLabel#HEAD_STR,QLabel#SRC_SERVER,QLabel#GAME_UID,QLabel#VERSION_TIPS,QLabel#STATE_TIPS,QLabel#VERSION_TIPS_TXT{
|
QLabel#HEAD_STR,QLabel#SRC_SERVER,QLabel#GAME_UID,QLabel#VERSION_TIPS,QLabel#STATE_TIPS,QLabel#VERSION_TIPS_TXT,QLabel#INFO{
|
||||||
color:#F2F2F2;
|
color:#F2F2F2;
|
||||||
}
|
}
|
||||||
QPushButton#BTN_SETS{
|
QPushButton#BTN_SETS{
|
||||||
|
@ -13,7 +13,7 @@ QPushButton#ico_button{
|
|||||||
border:none;
|
border:none;
|
||||||
}
|
}
|
||||||
|
|
||||||
QLabel#HEAD_STR,QLabel#SRC_SERVER,QLabel#GAME_UID,QLabel#VERSION_TIPS,QLabel#STATE_TIPS,QLabel#VERSION_TIPS_TXT{
|
QLabel#HEAD_STR,QLabel#SRC_SERVER,QLabel#GAME_UID,QLabel#VERSION_TIPS,QLabel#STATE_TIPS,QLabel#VERSION_TIPS_TXT,QLabel#INFO{
|
||||||
color:#404040;
|
color:#404040;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include "src/sui.h"
|
#include "sui.h"
|
||||||
#include <QTranslator>
|
#include <QTranslator>
|
||||||
#include "src/xsteam_base_ex.h"
|
#include "xsteam_base_ex.h"
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
@ -73,7 +73,8 @@ sui_title::sui_title(QWidget *parent)
|
|||||||
sui_title::~sui_title()
|
sui_title::~sui_title()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
void sui_title::connect_slots(){
|
void sui_title::connect_slots()
|
||||||
|
{
|
||||||
// 连接三个按钮的信号槽3
|
// 连接三个按钮的信号槽3
|
||||||
connect(m_icon_button, SIGNAL(clicked(bool)), this, SLOT(slots_ico_menu()));
|
connect(m_icon_button, SIGNAL(clicked(bool)), this, SLOT(slots_ico_menu()));
|
||||||
connect(m_min_button, SIGNAL(clicked(bool)), this, SLOT(on_clicked()));
|
connect(m_min_button, SIGNAL(clicked(bool)), this, SLOT(on_clicked()));
|
||||||
@ -84,15 +85,18 @@ void sui_title::slots_ico_menu()
|
|||||||
{
|
{
|
||||||
m_menu = new QMenu();
|
m_menu = new QMenu();
|
||||||
// 外观
|
// 外观
|
||||||
if(!s_menu){
|
if (!s_menu)
|
||||||
|
{
|
||||||
QActionGroup *s_QGroup = new QActionGroup(this);
|
QActionGroup *s_QGroup = new QActionGroup(this);
|
||||||
s_menu = new QMenu(tr("外观设置"));
|
s_menu = new QMenu(tr("外观设置"));
|
||||||
for(int i=0;i<=style_table.count()-1;i++){
|
for (int i = 0; i <= style_table.count() - 1; i++)
|
||||||
|
{
|
||||||
QString sName = QFileInfo(style_table[i]).baseName();
|
QString sName = QFileInfo(style_table[i]).baseName();
|
||||||
QAction *s_Action = new QAction(sName, s_QGroup);
|
QAction *s_Action = new QAction(sName, s_QGroup);
|
||||||
s_Action->setObjectName(QString::number(i));
|
s_Action->setObjectName(QString::number(i));
|
||||||
s_Action->setCheckable(true);
|
s_Action->setCheckable(true);
|
||||||
if(i==_data.x_config.style){
|
if (i == _data.x_config.style)
|
||||||
|
{
|
||||||
s_Action->setChecked(true);
|
s_Action->setChecked(true);
|
||||||
}
|
}
|
||||||
connect(s_Action, SIGNAL(triggered(bool)), this, SLOT(slots_set_style_change()));
|
connect(s_Action, SIGNAL(triggered(bool)), this, SLOT(slots_set_style_change()));
|
||||||
@ -100,14 +104,17 @@ void sui_title::slots_ico_menu()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 字体
|
// 字体
|
||||||
if(!f_menu){
|
if (!f_menu)
|
||||||
|
{
|
||||||
QActionGroup *f_QGroup = new QActionGroup(this);
|
QActionGroup *f_QGroup = new QActionGroup(this);
|
||||||
f_menu = new QMenu(tr("字体设置"));
|
f_menu = new QMenu(tr("字体设置"));
|
||||||
for(int i=0;i<=font_table.count()-1;i++){
|
for (int i = 0; i <= font_table.count() - 1; i++)
|
||||||
|
{
|
||||||
QAction *f_Action = new QAction(font_table[i], f_QGroup);
|
QAction *f_Action = new QAction(font_table[i], f_QGroup);
|
||||||
f_Action->setObjectName(QString::number(i));
|
f_Action->setObjectName(QString::number(i));
|
||||||
f_Action->setCheckable(true);
|
f_Action->setCheckable(true);
|
||||||
if(i==_data.x_config.font){
|
if (i == _data.x_config.font)
|
||||||
|
{
|
||||||
f_Action->setChecked(true);
|
f_Action->setChecked(true);
|
||||||
}
|
}
|
||||||
connect(f_Action, SIGNAL(triggered(bool)), this, SLOT(slots_set_font_change()));
|
connect(f_Action, SIGNAL(triggered(bool)), this, SLOT(slots_set_font_change()));
|
||||||
@ -120,7 +127,8 @@ void sui_title::slots_ico_menu()
|
|||||||
QAction *b_Action = new QAction("字体加粗", b_QGroup);
|
QAction *b_Action = new QAction("字体加粗", b_QGroup);
|
||||||
b_Action->setObjectName("font_bold");
|
b_Action->setObjectName("font_bold");
|
||||||
b_Action->setCheckable(true);
|
b_Action->setCheckable(true);
|
||||||
if(_data.x_config.font_bold){
|
if (_data.x_config.font_bold)
|
||||||
|
{
|
||||||
b_Action->setChecked(true);
|
b_Action->setChecked(true);
|
||||||
}
|
}
|
||||||
connect(b_Action, SIGNAL(triggered(bool)), this, SLOT(slots_set_font_change()));
|
connect(b_Action, SIGNAL(triggered(bool)), this, SLOT(slots_set_font_change()));
|
||||||
@ -134,43 +142,59 @@ void sui_title::slots_ico_menu()
|
|||||||
}
|
}
|
||||||
void sui_title::slots_set_style_change()
|
void sui_title::slots_set_style_change()
|
||||||
{
|
{
|
||||||
if(sender()!=nullptr){
|
if (sender() != nullptr)
|
||||||
|
{
|
||||||
_data.x_config.style = sender()->objectName().toInt();
|
_data.x_config.style = sender()->objectName().toInt();
|
||||||
}
|
}
|
||||||
change_style(_data.x_config.style);
|
change_style(_data.x_config.style);
|
||||||
}
|
}
|
||||||
void sui_title::slots_set_font_change()
|
void sui_title::slots_set_font_change()
|
||||||
{
|
{
|
||||||
if(sender()!=nullptr){
|
if (sender() != nullptr)
|
||||||
if(sender()->objectName()=="font_bold"){
|
{
|
||||||
if(_data.x_config.font_bold){
|
if (sender()->objectName() == "font_bold")
|
||||||
|
{
|
||||||
|
if (_data.x_config.font_bold)
|
||||||
|
{
|
||||||
_data.x_config.font_bold = 0;
|
_data.x_config.font_bold = 0;
|
||||||
((QAction *)sender())->setChecked(false);
|
((QAction *)sender())->setChecked(false);
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
_data.x_config.font_bold = 1;
|
_data.x_config.font_bold = 1;
|
||||||
((QAction *)sender())->setChecked(true);
|
((QAction *)sender())->setChecked(true);
|
||||||
}
|
}
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
_data.x_config.font = sender()->objectName().toInt();
|
_data.x_config.font = sender()->objectName().toInt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
QFont font;
|
QFont font;
|
||||||
if(!font_table[_data.x_config.font].isEmpty()){
|
if (!font_table[_data.x_config.font].isEmpty())
|
||||||
|
{
|
||||||
font.setFamily(font_table[_data.x_config.font]);
|
font.setFamily(font_table[_data.x_config.font]);
|
||||||
font.setPointSize(10);
|
font.setPointSize(10);
|
||||||
if( _data.x_config.font_bold){
|
if (_data.x_config.font_bold)
|
||||||
|
{
|
||||||
font.setBold(true);
|
font.setBold(true);
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
font.setBold(false);
|
font.setBold(false);
|
||||||
}
|
}
|
||||||
QApplication::setFont(font);
|
QApplication::setFont(font);
|
||||||
}else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
qDebug() << "Failed to load font.";
|
qDebug() << "Failed to load font.";
|
||||||
}
|
}
|
||||||
|
|
||||||
change_style(_data.x_config.style);
|
change_style(_data.x_config.style);
|
||||||
}
|
}
|
||||||
void sui_title::change_style(int index){
|
void sui_title::change_style(int index)
|
||||||
|
{
|
||||||
|
_data.x_config.style=index;
|
||||||
QString style = tr(":/res/qss/") + style_table[index];
|
QString style = tr(":/res/qss/") + style_table[index];
|
||||||
QFile qss(style);
|
QFile qss(style);
|
||||||
if (qss.open(QFile::ReadOnly))
|
if (qss.open(QFile::ReadOnly))
|
||||||
@ -189,43 +213,6 @@ void sui_title::mouseDoubleClickEvent(QMouseEvent *event)
|
|||||||
Q_UNUSED(event); // 没有实质性的作用,只是用来允许event可以不使用,用来避免编译器警告
|
Q_UNUSED(event); // 没有实质性的作用,只是用来允许event可以不使用,用来避免编译器警告
|
||||||
emit m_max_button->clicked();
|
emit m_max_button->clicked();
|
||||||
}
|
}
|
||||||
//使用事件过滤器监听标题栏所在的窗体,所以当窗体标题、图标等信息发生改变时,标题栏也应该随之改变
|
|
||||||
bool sui_title::eventFilter(QObject *obj, QEvent *event)
|
|
||||||
{
|
|
||||||
qDebug()<<event->type();
|
|
||||||
switch ( event->type() ) //判断发生事件的类型
|
|
||||||
{
|
|
||||||
case QEvent::WindowTitleChange: //窗口标题改变事件
|
|
||||||
{
|
|
||||||
QWidget *pWidget = qobject_cast<QWidget *>(obj); //获得发生事件的窗口对象
|
|
||||||
if (pWidget)
|
|
||||||
{
|
|
||||||
//窗体标题改变,则标题栏标题也随之改变
|
|
||||||
//m_pTitleLabel->setText(pWidget->windowTitle());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case QEvent::WindowIconChange: //窗口图标改变事件
|
|
||||||
{
|
|
||||||
QWidget *pWidget = qobject_cast<QWidget *>(obj);
|
|
||||||
if (pWidget)
|
|
||||||
{
|
|
||||||
//窗体图标改变,则标题栏图标也随之改变
|
|
||||||
QIcon icon = pWidget->windowIcon();
|
|
||||||
//m_pIconLabel->setPixmap(icon.pixmap(m_pIconLabel->size()));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case QEvent::Resize:
|
|
||||||
up_maximize(); //最大化/还原
|
|
||||||
return true;
|
|
||||||
default:
|
|
||||||
return QWidget::eventFilter(obj, event);
|
|
||||||
}
|
|
||||||
return QWidget::eventFilter(obj, event);
|
|
||||||
}
|
|
||||||
// 进行最小化、最大化/还原、关闭操作
|
// 进行最小化、最大化/还原、关闭操作
|
||||||
void sui_title::on_clicked()
|
void sui_title::on_clicked()
|
||||||
{
|
{
|
||||||
@ -274,6 +261,7 @@ void sui_title::up_maximize()
|
|||||||
m_max_button->setStyle(QApplication::style());
|
m_max_button->setStyle(QApplication::style());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void sui_title::set_title_txt(QString str){
|
void sui_title::set_title_txt(QString str)
|
||||||
|
{
|
||||||
m_title_label->setText(str);
|
m_title_label->setText(str);
|
||||||
}
|
}
|
@ -13,8 +13,10 @@
|
|||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
#include <QStyleFactory>
|
||||||
#include <QActionGroup>
|
#include <QActionGroup>
|
||||||
#include <QFontDatabase>
|
#include <QFontDatabase>
|
||||||
|
#include <QStyleFactory>
|
||||||
#include "xsteam_ex.h"
|
#include "xsteam_ex.h"
|
||||||
class sui_title: public QWidget
|
class sui_title: public QWidget
|
||||||
{
|
{
|
||||||
@ -26,8 +28,6 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
//双击标题栏进行界面的最大化/还原
|
//双击标题栏进行界面的最大化/还原
|
||||||
void mouseDoubleClickEvent(QMouseEvent *event);
|
void mouseDoubleClickEvent(QMouseEvent *event);
|
||||||
//设置界面标题与图标
|
|
||||||
bool eventFilter(QObject *obj, QEvent *event);
|
|
||||||
private slots:
|
private slots:
|
||||||
//进行最小化、最大化/还原、关闭操作
|
//进行最小化、最大化/还原、关闭操作
|
||||||
void on_clicked();
|
void on_clicked();
|
||||||
|
@ -7,8 +7,10 @@ xsteam_curl::xsteam_curl()
|
|||||||
xsteam_curl::~xsteam_curl()
|
xsteam_curl::~xsteam_curl()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
void xsteam_curl::init_curl(){
|
void xsteam_curl::init_curl()
|
||||||
if(curl!=nullptr){
|
{
|
||||||
|
if (curl != nullptr)
|
||||||
|
{
|
||||||
curl_easy_cleanup(curl);
|
curl_easy_cleanup(curl);
|
||||||
curl = nullptr;
|
curl = nullptr;
|
||||||
}
|
}
|
||||||
@ -84,7 +86,8 @@ bool xsteam_curl::get_steam_header_ico(std::string logo_url,std::string _c_uid)
|
|||||||
QDir dir(QString::fromStdString(base_str + "/save/img"));
|
QDir dir(QString::fromStdString(base_str + "/save/img"));
|
||||||
std::string u_str = logo_url + _c_uid + "/header.jpg";
|
std::string u_str = logo_url + _c_uid + "/header.jpg";
|
||||||
std::string s_str = base_str + "/save/img/" + _c_uid + ".jpg";
|
std::string s_str = base_str + "/save/img/" + _c_uid + ".jpg";
|
||||||
if(!dir.exists()){
|
if (!dir.exists())
|
||||||
|
{
|
||||||
QDir().mkpath(QString::fromStdString(base_str + "/save/img"));
|
QDir().mkpath(QString::fromStdString(base_str + "/save/img"));
|
||||||
}
|
}
|
||||||
init_curl();
|
init_curl();
|
||||||
@ -122,3 +125,43 @@ bool xsteam_curl::get_steam_header_ico(std::string logo_url,std::string _c_uid)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
bool xsteam_curl::get_url_state(std::string url)
|
||||||
|
{
|
||||||
|
CURL *curl;
|
||||||
|
CURLcode res;
|
||||||
|
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||||
|
curl = curl_easy_init();
|
||||||
|
std::string strTmpStr;
|
||||||
|
std::string strRsp;
|
||||||
|
int retry = 3;
|
||||||
|
if (curl)
|
||||||
|
{
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
|
||||||
|
curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &strTmpStr);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if (strTmpStr.data() == nullptr)
|
||||||
|
{
|
||||||
|
if (retry == 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
retry--;
|
||||||
|
}
|
||||||
|
if (QString::fromStdString(strTmpStr).contains(QStringLiteral("404"), Qt::CaseSensitive) ||
|
||||||
|
QString::fromStdString(strTmpStr).contains(QStringLiteral("500"), Qt::CaseSensitive) ||
|
||||||
|
QString::fromStdString(strTmpStr).contains(QStringLiteral("403"), Qt::CaseSensitive) ||
|
||||||
|
QString::fromStdString(strTmpStr).contains(QStringLiteral("502"), Qt::CaseSensitive) ||
|
||||||
|
res == CURLE_QUOTE_ERROR)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}else{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
curl_global_cleanup();
|
||||||
|
return false;
|
||||||
|
}
|
@ -20,6 +20,7 @@ public:
|
|||||||
~xsteam_curl();
|
~xsteam_curl();
|
||||||
std::string get_steam_id_info(std::string,std::string _c_uid);
|
std::string get_steam_id_info(std::string,std::string _c_uid);
|
||||||
bool get_steam_header_ico(std::string,std::string _c_uid);
|
bool get_steam_header_ico(std::string,std::string _c_uid);
|
||||||
|
bool get_url_state(std::string url);
|
||||||
private:
|
private:
|
||||||
void init_curl();
|
void init_curl();
|
||||||
CURL *curl;
|
CURL *curl;
|
||||||
|
@ -257,7 +257,6 @@ bool xsteam_curl_steam_id_app_info(UidData &u_data)
|
|||||||
}
|
}
|
||||||
if (u_data.name != "")
|
if (u_data.name != "")
|
||||||
{
|
{
|
||||||
//_data.u_data.push_back(u_data);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -92,6 +92,7 @@ bool xsteam_git::branch_or_tags_remote_array()
|
|||||||
out << std::setw(4) << ref_name.substr(local_head_str.size()) << "\n";
|
out << std::setw(4) << ref_name.substr(local_head_str.size()) << "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_data.s_ex_data[src_name].clear();
|
||||||
_data.s_ex_data.insert(std::pair<std::string, std::vector<std::string>>(src_name, tags));
|
_data.s_ex_data.insert(std::pair<std::string, std::vector<std::string>>(src_name, tags));
|
||||||
out.close();
|
out.close();
|
||||||
free_git_ext();
|
free_git_ext();
|
||||||
|
13
src/xsteam_push_manifest.cpp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include "xsteam_push_manifest.h"
|
||||||
|
xsteam_push_manifest::xsteam_push_manifest(/* args */)
|
||||||
|
{
|
||||||
|
init_push_manifest_ui();
|
||||||
|
}
|
||||||
|
|
||||||
|
xsteam_push_manifest::~xsteam_push_manifest()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
void xsteam_push_manifest::init_push_manifest_ui(){
|
||||||
|
setWindowTitle(tr("XSteam清单分享"));
|
||||||
|
}
|
36
src/xsteam_push_manifest.h
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#ifndef XSTEAM_PUSH_MANIFEST_H
|
||||||
|
#define XSTEAM_PUSH_MANIFEST_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QMutex>
|
||||||
|
class xsteam_push_manifest:public QDialog
|
||||||
|
{
|
||||||
|
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
static xsteam_push_manifest *Instance()
|
||||||
|
{
|
||||||
|
if (!_instance)
|
||||||
|
{
|
||||||
|
static QMutex mutex;
|
||||||
|
mutex.lock();
|
||||||
|
if (!_instance)
|
||||||
|
{
|
||||||
|
_instance = new xsteam_push_manifest();
|
||||||
|
}
|
||||||
|
mutex.unlock();
|
||||||
|
}
|
||||||
|
return _instance;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
xsteam_push_manifest();
|
||||||
|
~xsteam_push_manifest();
|
||||||
|
xsteam_push_manifest(const xsteam_push_manifest &other);
|
||||||
|
const xsteam_push_manifest &operator=(const xsteam_push_manifest &other);
|
||||||
|
static xsteam_push_manifest* _instance;
|
||||||
|
static QMutex mutex;
|
||||||
|
void init_push_manifest_ui();
|
||||||
|
};
|
||||||
|
xsteam_push_manifest *xsteam_push_manifest::_instance = {};
|
||||||
|
QMutex xsteam_push_manifest::mutex;
|
||||||
|
#endif //XSTEAM_PUSH_MANIFEST_H
|
@ -39,6 +39,7 @@ void xsteam_ui::xsteam_init_info_layout()
|
|||||||
{
|
{
|
||||||
info_layout = new QHBoxLayout();
|
info_layout = new QHBoxLayout();
|
||||||
info_txt_tag = new QLabel(tr("本工具建议配合SteamTools和Steam++使用"));
|
info_txt_tag = new QLabel(tr("本工具建议配合SteamTools和Steam++使用"));
|
||||||
|
info_txt_tag->setObjectName("INFO");
|
||||||
info_layout->addItem(sparcer_item);
|
info_layout->addItem(sparcer_item);
|
||||||
info_layout->addWidget(info_txt_tag);
|
info_layout->addWidget(info_txt_tag);
|
||||||
info_layout->addItem(sparcer_item);
|
info_layout->addItem(sparcer_item);
|
||||||
@ -49,6 +50,7 @@ void xsteam_ui::xsteam_init_mind_layout()
|
|||||||
server_tag = new QLabel(tr("源数据:"));
|
server_tag = new QLabel(tr("源数据:"));
|
||||||
server_tag->setObjectName("SRC_SERVER");
|
server_tag->setObjectName("SRC_SERVER");
|
||||||
server_txt = new QComboBox();
|
server_txt = new QComboBox();
|
||||||
|
server_state=new QLabel();
|
||||||
btn_server_edit = new QPushButton(tr("编辑源"));
|
btn_server_edit = new QPushButton(tr("编辑源"));
|
||||||
btn_server_edit->setObjectName("EDIT");
|
btn_server_edit->setObjectName("EDIT");
|
||||||
btn_fetch_src_data = new QPushButton(tr("拉取"));
|
btn_fetch_src_data = new QPushButton(tr("拉取"));
|
||||||
@ -59,14 +61,19 @@ void xsteam_ui::xsteam_init_mind_layout()
|
|||||||
btn_run_steam->setObjectName("RUN_STEAM");
|
btn_run_steam->setObjectName("RUN_STEAM");
|
||||||
btn_run_steamdb = new QPushButton(tr("SteamDB"));
|
btn_run_steamdb = new QPushButton(tr("SteamDB"));
|
||||||
btn_run_steamdb->setObjectName("STEAM_DB");
|
btn_run_steamdb->setObjectName("STEAM_DB");
|
||||||
|
btn_push_manifest = new QPushButton(tr("清单分享"));
|
||||||
|
btn_push_manifest->setObjectName("PUSH_MANIFEST");
|
||||||
|
btn_push_manifest->setVisible(false);
|
||||||
|
|
||||||
server_layout->addWidget(server_tag);
|
server_layout->addWidget(server_tag);
|
||||||
server_layout->addWidget(server_txt);
|
server_layout->addWidget(server_txt);
|
||||||
|
server_layout->addWidget(server_state);
|
||||||
server_layout->addWidget(btn_fetch_src_data);
|
server_layout->addWidget(btn_fetch_src_data);
|
||||||
server_layout->addWidget(btn_server_edit);
|
server_layout->addWidget(btn_server_edit);
|
||||||
server_layout->addWidget(btn_run_steam);
|
server_layout->addWidget(btn_run_steam);
|
||||||
server_layout->addWidget(btn_run_steamtools);
|
server_layout->addWidget(btn_run_steamtools);
|
||||||
server_layout->addWidget(btn_run_steamdb);
|
server_layout->addWidget(btn_run_steamdb);
|
||||||
|
server_layout->addWidget(btn_push_manifest);
|
||||||
server_layout->setStretch(0, 1);
|
server_layout->setStretch(0, 1);
|
||||||
server_layout->setStretch(1, 7);
|
server_layout->setStretch(1, 7);
|
||||||
server_layout->setStretch(2, 1);
|
server_layout->setStretch(2, 1);
|
||||||
@ -197,6 +204,39 @@ void xsteam_ui::xsteam_init_connect()
|
|||||||
connect(ip_all_dlc_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(ip_in_dlc_table, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slots_rightMenu(QPoint)));
|
||||||
connect(btn_dlc_push, SIGNAL(clicked()), this, SLOT(slots_get_uid_dlcs()));
|
connect(btn_dlc_push, SIGNAL(clicked()), this, SLOT(slots_get_uid_dlcs()));
|
||||||
|
connect(btn_push_manifest, SIGNAL(clicked()), this, SLOT(slots_push_manifest()));
|
||||||
|
connect(server_txt, SIGNAL(currentIndexChanged(int)), this, SLOT(slots_change_src_state(int)));
|
||||||
|
}
|
||||||
|
void xsteam_ui::slots_change_src_state(int index)
|
||||||
|
{
|
||||||
|
QPixmap xs_pixmap;
|
||||||
|
std::string url;
|
||||||
|
xs_pixmap.load(":res/img/btn/net_wait.png");
|
||||||
|
xs_pixmap = xs_pixmap.scaled(20,20,Qt::KeepAspectRatio,Qt::SmoothTransformation);
|
||||||
|
server_state->setPixmap(xs_pixmap);
|
||||||
|
for (auto &i : _data.s_data)
|
||||||
|
{
|
||||||
|
if (i.src_name == server_txt->itemText(index))
|
||||||
|
{
|
||||||
|
url = i.src_url;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (url != "")
|
||||||
|
{
|
||||||
|
QFuture<void> future = QtConcurrent::run([=](std::string _url,QPixmap _pixmap) {
|
||||||
|
xsteam_curl* xs_curl=new xsteam_curl();
|
||||||
|
if(xs_curl->get_url_state(_url)){
|
||||||
|
_pixmap.load(":/res/img/btn/net_ok.png");
|
||||||
|
}else{
|
||||||
|
_pixmap.load(":/res/img/btn/net_error.png");
|
||||||
|
}
|
||||||
|
_pixmap=_pixmap.scaled(20,20,Qt::KeepAspectRatio,Qt::SmoothTransformation);
|
||||||
|
server_state->setPixmap(_pixmap);
|
||||||
|
delete xs_curl;
|
||||||
|
xs_curl=nullptr;
|
||||||
|
},url,xs_pixmap);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
void xsteam_ui::slots_get_uid_dlcs()
|
void xsteam_ui::slots_get_uid_dlcs()
|
||||||
{
|
{
|
||||||
@ -436,6 +476,13 @@ 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_push_manifest()
|
||||||
|
{
|
||||||
|
xs_push_manifest = xsteam_push_manifest::Instance();
|
||||||
|
xs_push_manifest->setMaximumSize(((QWidget *)this->parent())->width(), ((QWidget *)this->parent())->height() - 25);
|
||||||
|
xs_push_manifest->setGeometry(((QWidget *)this->parent())->geometry());
|
||||||
|
xs_push_manifest->exec();
|
||||||
|
}
|
||||||
void xsteam_ui::slots_open_server_edit()
|
void xsteam_ui::slots_open_server_edit()
|
||||||
{
|
{
|
||||||
xs_src_edit_ui = xsteam_src_edit_ui::Instance();
|
xs_src_edit_ui = xsteam_src_edit_ui::Instance();
|
||||||
@ -458,6 +505,7 @@ void xsteam_ui::slots_open_about()
|
|||||||
xs_about_ui->setGeometry(((QWidget *)this->parent())->geometry());
|
xs_about_ui->setGeometry(((QWidget *)this->parent())->geometry());
|
||||||
xs_about_ui->exec();
|
xs_about_ui->exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
void xsteam_ui::slots_table_append(UidData u_data)
|
void xsteam_ui::slots_table_append(UidData u_data)
|
||||||
{
|
{
|
||||||
if (xs_state == PUSH_MODE::PUSH_ADD)
|
if (xs_state == PUSH_MODE::PUSH_ADD)
|
||||||
@ -480,6 +528,8 @@ void xsteam_ui::slots_table_append(UidData u_data)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ip_uid_table->item_clear();
|
||||||
|
table_load_ui_data();
|
||||||
slots_msg_text(u_data.uid + "更新完毕!");
|
slots_msg_text(u_data.uid + "更新完毕!");
|
||||||
}
|
}
|
||||||
QFuture<void> future = QtConcurrent::run([=]()
|
QFuture<void> future = QtConcurrent::run([=]()
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include "xsteam_about_ui.h"
|
#include "xsteam_about_ui.h"
|
||||||
#include "xsteam_view.h"
|
#include "xsteam_view.h"
|
||||||
#include "xsteam_git_fetch.h"
|
#include "xsteam_git_fetch.h"
|
||||||
|
#include "xsteam_push_manifest.h"
|
||||||
#include <version.h>
|
#include <version.h>
|
||||||
|
|
||||||
class xsteam_ui:public QWidget{
|
class xsteam_ui:public QWidget{
|
||||||
@ -40,6 +41,7 @@ private:
|
|||||||
QHBoxLayout* server_layout;
|
QHBoxLayout* server_layout;
|
||||||
QLabel* server_tag;
|
QLabel* server_tag;
|
||||||
QComboBox* server_txt;
|
QComboBox* server_txt;
|
||||||
|
QLabel* server_state;
|
||||||
QPushButton* btn_server_edit;
|
QPushButton* btn_server_edit;
|
||||||
QPushButton* btn_fetch_src_data;
|
QPushButton* btn_fetch_src_data;
|
||||||
QPushButton* btn_run_steam;
|
QPushButton* btn_run_steam;
|
||||||
@ -55,6 +57,7 @@ private:
|
|||||||
QPushButton* btn_uid_update;
|
QPushButton* btn_uid_update;
|
||||||
QPushButton* btn_dlc_push;
|
QPushButton* btn_dlc_push;
|
||||||
QPushButton* btn_run_steamdb;
|
QPushButton* btn_run_steamdb;
|
||||||
|
QPushButton* btn_push_manifest;
|
||||||
|
|
||||||
QHBoxLayout* ip_data_layout;
|
QHBoxLayout* ip_data_layout;
|
||||||
//入库游戏列表
|
//入库游戏列表
|
||||||
@ -79,6 +82,7 @@ private:
|
|||||||
xsteam_set_ui * xs_sets_ui;
|
xsteam_set_ui * xs_sets_ui;
|
||||||
xsteam_about_ui* xs_about_ui;
|
xsteam_about_ui* xs_about_ui;
|
||||||
xsteam_git_fetch* xs_git_fetch;
|
xsteam_git_fetch* xs_git_fetch;
|
||||||
|
xsteam_push_manifest* xs_push_manifest;
|
||||||
QSpacerItem * sparcer_item = new QSpacerItem(0,0,QSizePolicy::Expanding,QSizePolicy::Fixed);
|
QSpacerItem * sparcer_item = new QSpacerItem(0,0,QSizePolicy::Expanding,QSizePolicy::Fixed);
|
||||||
|
|
||||||
UidData xs_data;
|
UidData xs_data;
|
||||||
@ -88,6 +92,7 @@ private slots:
|
|||||||
void slots_open_setting();
|
void slots_open_setting();
|
||||||
void slots_open_about();
|
void slots_open_about();
|
||||||
void slots_open_steamdb();
|
void slots_open_steamdb();
|
||||||
|
void slots_push_manifest();
|
||||||
void slots_imput_uid_push();
|
void slots_imput_uid_push();
|
||||||
void slots_server_combobox_load_data();
|
void slots_server_combobox_load_data();
|
||||||
void slots_disable_enable_function(bool state);
|
void slots_disable_enable_function(bool state);
|
||||||
@ -102,6 +107,7 @@ private slots:
|
|||||||
void slots_in_dlc_delete();
|
void slots_in_dlc_delete();
|
||||||
void slots_in_dlc_add();
|
void slots_in_dlc_add();
|
||||||
void slots_imput_update_uid_push();
|
void slots_imput_update_uid_push();
|
||||||
|
void slots_change_src_state(int);
|
||||||
signals:
|
signals:
|
||||||
void signals_src_combobox_update();
|
void signals_src_combobox_update();
|
||||||
};
|
};
|
||||||
|