应用详情页添加分享和请求更新按钮,设置页面添加更新客户端和清理缓存、读取缓存大小功能

This commit is contained in:
2022-12-11 01:03:13 +08:00
parent 0817901a59
commit dd0605d0ba
6 changed files with 159 additions and 12 deletions

View File

@@ -37,7 +37,10 @@ MainWindow::MainWindow(QWidget *parent)
menu->addAction(setting);
ui->titlebar->setMenu(menu);
connect(setting, &QAction::triggered, this, [=]{switchPage(AppPageSettings);});
connect(setting, &QAction::triggered, this, [=]{
switchPage(AppPageSettings);
ui->settingspage->updateUI();
});
//主题切换
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [=](DGuiApplicationHelper::ColorType themeType) {
if (themeType == DGuiApplicationHelper::DarkType) {
@@ -107,10 +110,6 @@ MainWindow::MainWindow(QWidget *parent)
connect(backButtom, &QPushButton::clicked, [=]() {
ui->stackedWidget->setCurrentIndex(pageHistory.at(pageHistory.count() - 2));
if (pageHistory.at(pageHistory.count() - 1) == 3) {
ui->appintopage->clear();
}
pageHistory.removeLast();
if (pageHistory.count() > 1) {
backButtom->show();
@@ -139,7 +138,6 @@ MainWindow::MainWindow(QWidget *parent)
ui->buttonGroup->buttons()[i]->setStyleSheet("QPushButton{qproperty-icon: url(data/images/userMangaer/teacher.png);}");
connect(ui->buttonGroup->buttons()[i], &QPushButton::toggled, [=](bool checked) {
if (checked == true) {
ui->appintopage->clear();
updateUi(i);
}
});
@@ -169,7 +167,9 @@ MainWindow::MainWindow(QWidget *parent)
connect(ui->applistpage_1, &AppListPage::clicked, this, [=](QUrl spk) {
openUrl(spk);
});
connect(ui->settingspage, &SettingsPage::openUrl, this, [=](QUrl spk) {
openUrl(spk);
});
emit DGuiApplicationHelper::instance()->themeTypeChanged(DGuiApplicationHelper::instance()->themeType());
}

View File

@@ -51,6 +51,7 @@ void AppIntoPage::openUrl(QUrl url)
{
spk=url;
SparkAPI *api=new SparkAPI(this);
clear();
connect(api,&SparkAPI::finishedObject,[=](QJsonObject appinfo){
info = appinfo;
@@ -316,3 +317,28 @@ void AppIntoPage::on_pushButton_3_clicked()
ui->pushButton_3->setEnabled(true);
});
}
void AppIntoPage::on_shareButton_clicked()
{
qDebug() << "Share" << spk;
QClipboard *clipboard = QApplication::clipboard();
clipboard->setText(spk.toString());
}
void AppIntoPage::on_updateButton_clicked()
{
QString feedbackSpk = "spk://store/chat/store.spark-app.feedback";
QFile actionSubmissionClientStatus("/opt/durapps/store.spark-app.feedback");
if (actionSubmissionClientStatus.exists())
{
qDebug() << "反馈器存在";
QProcess::startDetached("sh /opt/durapps/store.spark-app.feedback/launch.sh");
}
else{
qDebug() << "反馈器不存在,跳转页面";
openUrl(feedbackSpk);
}
}

View File

@@ -5,6 +5,7 @@
#include <QUrl>
#include <QString>
#include <QtConcurrent>
#include <QClipboard>
#include "backend/sparkapi.h"
#include "backend/image_show.h"
#include "widgets/downloadlistwidget.h"
@@ -29,6 +30,10 @@ private slots:
void on_pushButton_3_clicked();
void on_shareButton_clicked();
void on_updateButton_clicked();
private:
QJsonObject info;
QPixmap iconpixmap;

View File

@@ -529,16 +529,16 @@
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<widget class="QPushButton" name="shareButton">
<property name="text">
<string>PushButton</string>
<string>Share</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_2">
<widget class="QPushButton" name="updateButton">
<property name="text">
<string>PushButton</string>
<string>Request Update</string>
</property>
</widget>
</item>

View File

@@ -1,6 +1,6 @@
#include "settingspage.h"
#include "ui_settingspage.h"
bool SettingsPage::isdownload = false;
SettingsPage::SettingsPage(QWidget *parent) :
QWidget(parent),
ui(new Ui::SettingsPage)
@@ -116,3 +116,104 @@ void SettingsPage::on_comboBox_server_currentIndexChanged(const QString &arg1)
}
}
void SettingsPage::setIsDownload(bool isdownload)
{
SettingsPage::isdownload = isdownload;
}
void SettingsPage::updateUI()
{
if(isdownload)
{
ui->pushButton_clear->setEnabled(false);
}
else
{
ui->pushButton_clear->setEnabled(true);
}
// 显示缓存占用空间
quint64 tmp_size = dirFileSize(QString::fromUtf8(TMP_PATH));
QString tmp_size_str;
if(tmp_size < 1024)
{
tmp_size_str = QString::number(tmp_size) + "B";
}
else if(tmp_size < (1024 * 1024))
{
tmp_size_str = QString::number(0.01 * int(100 * (tmp_size / 1024))) + "KB";
}
else if(tmp_size<(1024*1024*1024))
{
tmp_size_str = QString::number(0.01 * int(100 * (tmp_size / (1024 * 1024)))) + "MB";
}
else
{
tmp_size_str = QString::number(0.01 * int(100 * (tmp_size / (1024 * 1024 * 1024)))) + "GB";
}
ui->tmp_size_ui->setText(tmp_size_str);
}
quint64 SettingsPage::dirFileSize(const QString &path)
{
QDir dir(path);
quint64 size = 0;
// dir.entryInfoList(QDir::Files); // 返回文件信息
foreach(QFileInfo fileInfo, dir.entryInfoList(QDir::Files))
{
// 计算文件大小
size += quint64(fileInfo.size());
}
// dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot); // 返回所有子目录,并进行过滤
foreach(QString subDir, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
{
// 若存在子目录,则递归调用 dirFileSize() 函数
size += dirFileSize(path + QDir::separator() + subDir);
}
return size;
}
void SettingsPage::on_pushButton_updateApt_clicked()
{
QtConcurrent::run([=]()
{
ui->pushButton_updateApt->setEnabled(false);
ui->label_aptserver->setText(tr("Updating, please wait..."));
emit openUrl(QUrl("spk://store/tools/spark-store"));
ui->label_aptserver->setText(tr(""));
ui->pushButton_updateApt->setEnabled(true);
});
}
void SettingsPage::on_pushButton_clear_clicked()
{
QtConcurrent::run([=]()
{
ui->pushButton_clear->setEnabled(false);
QDir tmpdir("/tmp/spark-store");
tmpdir.setFilter(QDir::Files);
int quantity = int(tmpdir.count());
for(int i = 0; i < quantity; i++)
{
tmpdir.remove(tmpdir[i]);
}
ui->pushButton_clear->setEnabled(true);
updateUI();
});
}
void SettingsPage::on_pushButton_clearWebCache_clicked()
{
QtConcurrent::run([=]()
{
QString dataLocal = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation);
QDir cacheDir(dataLocal );
cacheDir.removeRecursively();
});
}

View File

@@ -8,6 +8,8 @@
#include <QSettings>
#include <QtConcurrent>
#include "../backend/sparkapi.h"
#define TMP_PATH "/tmp/spark-store"
namespace Ui {
class SettingsPage;
}
@@ -17,6 +19,8 @@ class SettingsPage : public QWidget
Q_OBJECT
public:
static void setIsDownload(bool isdownload);
void updateUI();
explicit SettingsPage(QWidget *parent = nullptr);
void setTheme(bool dark);
~SettingsPage();
@@ -26,11 +30,22 @@ private slots:
void on_comboBox_server_currentIndexChanged(const QString &arg1);
void on_pushButton_updateApt_clicked();
void on_pushButton_clear_clicked();
void on_pushButton_clearWebCache_clicked();
private:
static bool isdownload;
bool configCanSave;
quint64 dirFileSize(const QString &path);
void readServerList();
void initConfig();
Ui::SettingsPage *ui;
signals:
void openUrl(QUrl spk);
};
#endif // SETTINGSPAGE_H