mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-06-22 22:23:49 +08:00
新增截图预览
This commit is contained in:
@@ -8,16 +8,27 @@
|
||||
#include <QFormLayout>
|
||||
#include "page/spkpagebase.h"
|
||||
#include "spkstretchlayout.h"
|
||||
#include "spkimgviewer.h"
|
||||
|
||||
namespace SpkUi
|
||||
{
|
||||
class SpkDetailEntry;
|
||||
|
||||
class SpkClickLabel : public QLabel
|
||||
{
|
||||
Q_OBJECT
|
||||
protected:
|
||||
virtual void mousePressEvent(QMouseEvent *e) override { emit Pressed(); }
|
||||
signals:
|
||||
void Pressed();
|
||||
};
|
||||
|
||||
class SpkPageAppDetails : public SpkPageBase
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
SpkPageAppDetails(QWidget *parent = nullptr);
|
||||
~SpkPageAppDetails();
|
||||
|
||||
void LoadAppResources(QString pkgName, QString icon, QStringList screenshots, QStringList tags);
|
||||
void SetWebsiteLink(QString url);
|
||||
@@ -25,6 +36,7 @@ namespace SpkUi
|
||||
|
||||
private:
|
||||
QString mPkgPath;
|
||||
QPixmap mBrokenImg, mIconLoading;
|
||||
|
||||
public slots:
|
||||
void ResourceAcquisitionFinished(int id, ResourceResult result);
|
||||
@@ -34,14 +46,18 @@ namespace SpkUi
|
||||
static constexpr QSize IconSize { 144, 144 };
|
||||
|
||||
// Main Area
|
||||
QScrollArea *mMainArea;
|
||||
QWidget *mDetailWidget, *mIconTitleWidget, *mWid4MainArea;
|
||||
QScrollArea *mMainArea, *mScreenshotArea;
|
||||
QWidget *mDetailWidget, *mIconTitleWidget, *mWid4MainArea, *mWid4ShotArea;
|
||||
QLabel *mAppTitle, *mAppIcon, *mAppDescription, *mAppShortDesc, *mPkgName, *mVersion,
|
||||
*mWebsite;
|
||||
SpkDetailEntry *mAuthor, *mContributor, *mSite, *mArch, *mSize;
|
||||
SpkStretchLayout *mDetailLay;
|
||||
QVBoxLayout *mDetailsLay, *mTitleLay, *mMainLay;
|
||||
QHBoxLayout *mIconTitleLay;
|
||||
QHBoxLayout *mIconTitleLay, *mScreenshotLay;
|
||||
QList<SpkClickLabel*> mScreenshotPreviews;
|
||||
|
||||
QMap<int, QPixmap> mAppImages;
|
||||
SpkImgViewer *mImgViewer;
|
||||
|
||||
// Bottom bar
|
||||
QWidget *mBottomBar;
|
||||
@@ -50,6 +66,9 @@ namespace SpkUi
|
||||
|
||||
signals:
|
||||
void RequestDownload(QString name, QString pkgName, QString path);
|
||||
|
||||
private slots:
|
||||
void ImageClicked();
|
||||
};
|
||||
|
||||
class SpkDetailEntry : public QWidget
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QPainter>
|
||||
#include <QScrollArea>
|
||||
#include "spkwindow.h"
|
||||
|
||||
class ImgView : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ImgView(QWidget *parent = nullptr) : QWidget(parent) { mPixmap = nullptr; }
|
||||
void SetPixmap(QPixmap *p) { mPixmap = p; if(p) setFixedSize(p->size()); update(); }
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *e)
|
||||
{
|
||||
QPainter p(this);
|
||||
if(mPixmap)
|
||||
p.drawPixmap(0, 0, *mPixmap);
|
||||
p.end();
|
||||
e->accept();
|
||||
}
|
||||
|
||||
private:
|
||||
QPixmap *mPixmap;
|
||||
};
|
||||
|
||||
class SpkImgViewer : public SpkWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SpkImgViewer(QWidget *parent = nullptr);
|
||||
void ShowWithImage(int idx);
|
||||
void SetImageTotal(int a) { mTotalImg = a; }
|
||||
|
||||
public slots:
|
||||
void Clear();
|
||||
void SetPixmap(int idx, QPixmap *img);
|
||||
|
||||
private slots:
|
||||
void SwitchToImage(int idx);
|
||||
|
||||
protected:
|
||||
bool event(QEvent*) override;
|
||||
|
||||
private:
|
||||
void ResizeToFitImageSize(QSize);
|
||||
|
||||
private:
|
||||
QPushButton *mBtnPrev, *mBtnNext;
|
||||
QScrollArea *mImgArea;
|
||||
QLabel *mImgIndict;
|
||||
QMap<int, QPixmap*> mImgMap;
|
||||
int mCurrentImg, mTotalImg;
|
||||
QPixmap mIconLoading;
|
||||
|
||||
ImgView *mImgShow;
|
||||
};
|
||||
@@ -43,6 +43,7 @@ class SpkTitleBar : public QFrame
|
||||
public:
|
||||
SpkTitleBar(QWidget *parent = nullptr);
|
||||
~SpkTitleBar();
|
||||
static constexpr int Height = 48;
|
||||
using OperationButton = SpkTitleBarDefaultButton::OperationButton;
|
||||
void SetOperationButton(OperationButton);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user