Skip to content

Commit

Permalink
feat: 增加特性展示功能
Browse files Browse the repository at this point in the history
1. 增加特性对话框类接口;
2. dapplication增加特性对话框相关接口;
3. 重新布局关于对话框;

Log: 新增特性介绍功能
Task: https://pms.uniontech.com/task-view-227391.html
Influence: 特性介绍,关于介绍
Change-Id: Ie6244bd313bb385846f4c5c066108b65f5afcb4f
  • Loading branch information
wang fei authored and deepin-bot[bot] committed Jan 13, 2023
1 parent cb689dc commit 217cfc5
Show file tree
Hide file tree
Showing 27 changed files with 812 additions and 37 deletions.
83 changes: 83 additions & 0 deletions docs/widgets/dfeaturedisplaydialog.zh_CN.dox
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
/*!
@~chinese
@file dfeaturedisplaydialog.h
@ingroup dtkwidget

@class Dtk::Widget::DFeatureItem
@brief 特性介绍中的每项特性

@fn explicit Dtk::Widget::DFeatureItem::DFeatureItem(const QIcon &icon, const QString &name, const QString &description, QObject *parent)
@brief 特性项的构造函数
@param[in] icon 特性项的图标
@param[in] name 特性项的名称
@param[in] description 特性项的内容描述
@param[in] parent 特性项的父对象

@fn explicit Dtk::Widget::DFeatureItem::~DFeatureItem()
@brief 特性项的析构函数

@fn QIcon Dtk::Widget::DFeatureItem::icon() const
@brief 获取特性项的图标
@return 特性项的图标

@fn void Dtk::Widget::DFeatureItem::setIcon(const QIcon &icon)
@brief 设置特性项的图标
@param[in] icon 特性项的图标

@fn QIcon Dtk::Widget::DFeatureItem::name() const
@brief 获取特性项的名称
@return 特性项的名称

@fn QIcon Dtk::Widget::DFeatureItem::setName(const QString &name) const
@brief 设置特性项的名称
@param[in] name 特性项的名称

@fn QIcon Dtk::Widget::DFeatureItem::description() const
@brief 获取特性项的内容描述
@return 特性项的内容描述

@fn QIcon Dtk::Widget::DFeatureItem::setDescription(const QString &description) const
@brief 设置特性项的内容描述
@param[in] description 特性项的内容描述

@class Dtk::Widget::DFeatureDisplayDialog
@brief 特性介绍对话框,展示应用更新的新特性

@fn Dtk::Widget::DFeatureDisplayDialog::DFeatureDisplayDialog(QWidget *parent)
@brief 特性介绍对话框的构造函数
@param[in] parent 特性介绍对话框的父对象

@fn explicit Dtk::Widget::DFeatureDisplayDialog::~DFeatureDisplayDialog()
@brief 特性介绍对话框的析构函数

@fn void Dtk::Widget::DFeatureDisplayDialog::setTitle(const QString &title)
@brief 设置特性介绍对话框的主题
@param[in] title 特性介绍对话框的主题

@fn void Dtk::Widget::DFeatureDisplayDialog::addItem(DFeatureItem *item)
@brief 增加特性介绍对话框的特性项
@param[in] item 特性介绍对话框的特性项

@fn void Dtk::Widget::DFeatureDisplayDialog::removeItem(DFeatureItem *item)
@brief 移除特性介绍对话框的特性项
@param[in] item 特性介绍对话框的特性项

@fn void Dtk::Widget::DFeatureDisplayDialog::addItems(QList<DFeatureItem*> items)
@brief 增加多个特性介绍对话框的特性项
@param[in] items 特性介绍对话框的特性项列表

@fn void Dtk::Widget::DFeatureDisplayDialog::clearItems()
@brief 清除特性介绍对话框的所有特性项

@fn void Dtk::Widget::DFeatureDisplayDialog::setLinkButtonVisible(bool isVisible)
@brief 设置链接按钮是否可见
@param[in] isVisible 链接按钮是否可见

@fn void Dtk::Widget::DFeatureDisplayDialog::setLinkUrl(const QString &url)
@brief 设置链接按钮链接地址
@param[in] isVisible 链接按钮的链接地址

@fn void Dtk::Widget::DFeatureDisplayDialog::show()
@brief 显示特性介绍对话框

*/
1 change: 1 addition & 0 deletions examples/dwidget-examples/collections/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -88,3 +88,4 @@ target_include_directories(${BIN_NAME} PUBLIC
${Qt5Gui_PRIVATE_INCLUDE_DIRS}
)
install(TARGETS ${BIN_NAME} DESTINATION "${CMAKE_INSTALL_LIBDIR}/libdtk-${CMAKE_PROJECT_VERSION}/DWidget/examples/")
dconfig_override_files(APPID dtk-example META_NAME org.deepin.dtkwidget.feature-display FILES ./org.deepin.dtkwiget.feature-display.json)
1 change: 1 addition & 0 deletions examples/dwidget-examples/collections/buttonexample.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,7 @@ DIconButtonExample::DIconButtonExample(QWidget *parent)
pHBoxLayout->setSpacing(0);

DIconButton *pButton_1 = new DIconButton(DStyle::SP_IncreaseElement, this);
pButton_1->setNewNotification(true);

DIconButton *pButton_2 = new DIconButton(DStyle::SP_ArrowEnter, this);

Expand Down
5 changes: 5 additions & 0 deletions examples/dwidget-examples/collections/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,11 @@ int main(int argc, char *argv[])
a->setApplicationName("dtk-example");
a->setOrganizationName("deepin");
a->setApplicationVersion("1.0");
a->setProductIcon(QIcon(":/images/logo_icon.svg"));
a->setWindowIcon(QIcon(":/images/logo_icon.svg"));
a->setApplicationDescription(QApplication::translate("main", "Collections provides the examples for dtk applications."));
a->setApplicationDisplayName(QObject::tr("Collections"));
a->setApplicationLicense(QObject::tr("2023 UnionTech Software Technology Co., Ltd."));

DApplicationSettings as;
Q_UNUSED(as)
Expand Down
11 changes: 11 additions & 0 deletions examples/dwidget-examples/collections/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
#include "dsettingsdialog.h"
#include "dsettingsoption.h"
#include "dsettings.h"
#include "dfeaturedisplaydialog.h"

DCORE_USE_NAMESPACE
DWIDGET_USE_NAMESPACE
Expand Down Expand Up @@ -147,6 +148,16 @@ MainWindow::MainWindow(QWidget *parent)

//初始化选中主菜单第一项
m_pListView->setCurrentIndex(m_pListViewModel->index(0, 0));

DFeatureDisplayDialog *dlg = qApp->featureDisplayDialog();
dlg->setLinkButtonVisible(true);
dlg->setLinkUrl("http://www.chinauos.com");
dlg->setTitle("欢迎使用dtk");
dlg->addItem(new DFeatureItem(QIcon::fromTheme("dialog-warning"), "按钮", "普通的文字按钮(DPushButton),带警告颜色的按钮(DWarningButton),起引导作用的按钮(DSuggestButton),工具栏按钮(DToolButton),图标按钮(DIconButton)等。", dlg));
dlg->addItem(new DFeatureItem(QIcon::fromTheme("dialog-warning"), "提示", "悬停显示(DToolTip),提示出现有延迟,鼠标是悬停2妙左右出现,触屏是按住就出现,带尖角的popup窗口(DArrowRectangle)。", dlg));
dlg->addItem(new DFeatureItem(QIcon::fromTheme("dialog-warning"), "对话框", "普通对话框(DDialog),用于需要用户处理事务,又不希望跳转页面以致打断工作流程时。", dlg));
dlg->addItem(new DFeatureItem(QIcon::fromTheme("dialog-warning"), "DSpinner", "所有需要用户等待的地方,且没有具体的等待时间,不知道进度,可能很快也可能需要比较久。", dlg));
dlg->addItem(new DFeatureItem(QIcon::fromTheme("dialog-warning"), "进度条", "进度条(DWaterProgress)一种带趣味的展示形式,作用是减少用户枯燥的等待。", dlg));
}

#if 1
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"magic": "dsg.config.override",
"version": "1.0",
"contents": {
"autoDisplayFeature": {
"value": true,
"serial": 1,
"permissions": "readwrite"
},
"featureUpdated": {
"value": true,
"serial": 1,
"permissions": "readwrite"
}
}
}
1 change: 1 addition & 0 deletions include/dtkwidget/DWidget/DFeatureDisplayDialog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "dfeaturedisplaydialog.h"
4 changes: 4 additions & 0 deletions include/dtkwidget/widgets/daboutdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ class DAboutDialog : public DDialog
QString acknowledgementLink() const;
QString license() const;

Q_SIGNALS:
void featureActivated();

public Q_SLOTS:
void setWindowTitle(const QString &windowTitle);
void setProductIcon(const QIcon &icon);
Expand All @@ -55,6 +58,7 @@ public Q_SLOTS:

private:
Q_PRIVATE_SLOT(d_func(), void _q_onLinkActivated(const QString &link))
Q_PRIVATE_SLOT(d_func(), void _q_onFeatureActivated(const QString &link))

Q_DISABLE_COPY(DAboutDialog)
D_DECLARE_PRIVATE(DAboutDialog)
Expand Down
4 changes: 4 additions & 0 deletions include/dtkwidget/widgets/dapplication.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ DWIDGET_BEGIN_NAMESPACE
class DApplication;
class DApplicationPrivate;
class DAboutDialog;
class DFeatureDisplayDialog;
class DAppHandler;

#if defined(qApp)
Expand Down Expand Up @@ -99,6 +100,9 @@ class LIBDTKWIDGETSHARED_EXPORT DApplication : public QApplication, public DTK_C
DAboutDialog *aboutDialog();
void setAboutDialog(DAboutDialog *aboutDialog);

DFeatureDisplayDialog *featureDisplayDialog();
void setFeatureDisplayDialog(DFeatureDisplayDialog *featureDisplayDialog);

bool visibleMenuShortcutText() const;
void setVisibleMenuShortcutText(bool value);

Expand Down
60 changes: 60 additions & 0 deletions include/dtkwidget/widgets/dfeaturedisplaydialog.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later

#ifndef DFEATUREDISPLAYDIALOG_H
#define DFEATUREDISPLAYDIALOG_H

#include <DDialog>

class QLabel;
DWIDGET_BEGIN_NAMESPACE

class DFeatureItemPrivate;
class DFeatureItem :public QObject, public DTK_CORE_NAMESPACE::DObject
{
Q_OBJECT
public:
explicit DFeatureItem(const QIcon &icon = QIcon(), const QString &name = QString(),
const QString &description = QString(), QObject *parent = nullptr);
~DFeatureItem() override;

QIcon icon() const;
void setIcon(const QIcon &icon);

QString name() const;
void setName(const QString &name);

QString description() const;
void setDescription(const QString &description);

private:
D_DECLARE_PRIVATE(DFeatureItem)
};

class DFeatureDisplayDialogPrivate;
class DFeatureDisplayDialog : public DDialog
{
Q_OBJECT
public:
explicit DFeatureDisplayDialog(QWidget *parent = nullptr);
~DFeatureDisplayDialog() override;

void setTitle(const QString &title);
void addItem(DFeatureItem *item);
void removeItem(DFeatureItem* item);
void addItems(QList<DFeatureItem*> items);
void clearItems();
void setLinkButtonVisible(bool isVisible);
void setLinkUrl(const QString &url);
void show();

private:
D_DECLARE_PRIVATE(DFeatureDisplayDialog)
D_PRIVATE_SLOT(void _q_toggleLinkBtn())

};

DWIDGET_END_NAMESPACE

#endif // DFEATUREDISPLAYDIALOG_H
1 change: 1 addition & 0 deletions include/dtkwidget/widgets/dmainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ public Q_SLOTS:

private:
D_DECLARE_PRIVATE(DMainWindow)
D_PRIVATE_SLOT(void _q_autoShowFeatureDialog())
};

DWIDGET_END_NAMESPACE
Expand Down
1 change: 1 addition & 0 deletions include/dtkwidget/widgets/dstyle.h
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ class DStyle : public QCommonStyle
static void setFocusRectVisible(QWidget *widget, bool visible);
static void setFrameRadius(QWidget *widget, int radius);
static void setUncheckedItemIndicatorVisible(QWidget *widget, bool visible);
static void setRedPointVisible(QObject *object, bool visible);
DStyle();

static void drawPrimitive(const QStyle *style, DStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w = nullptr);
Expand Down
5 changes: 3 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# find_package
find_package(DtkGui 5.6 REQUIRED)
find_package(DtkCore 5.6 REQUIRED)
find_package(Dtk REQUIRED COMPONENTS Core Gui)

find_package(Qt5 REQUIRED COMPONENTS Core)
find_package(Qt5 REQUIRED COMPONENTS Network)
Expand Down Expand Up @@ -110,3 +109,5 @@ install(DIRECTORY ../include/dtkwidget/global/ DESTINATION "${INCLUDE_INSTALL_DI
install(DIRECTORY ../include/dtkwidget/widgets/ DESTINATION "${INCLUDE_INSTALL_DIR}" FILES_MATCHING PATTERN "*")

install(FILES ${TRANSLATEDFILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/libdtk-${CMAKE_PROJECT_VERSION}/DWidget/translations")

DCONFIG_META_FILES(COMMONID org.deepin.dtkwidget FILES "./org.deepin.dtkwidget.feature-display.json")
26 changes: 26 additions & 0 deletions src/org.deepin.dtkwidget.feature-display.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"magic": "dsg.config.meta",
"version": "1.0",
"contents": {
"featureUpdated": {
"value": false,
"serial": 0,
"flags": [],
"name": "Whether the application has new feature updates",
"name[zh_CN]": "配置应用的更新状态",
"description": "Configure the update status of the application",
"permissions": "readwrite",
"visibility": "public"
},
"autoDisplayFeature": {
"value": false,
"serial": 0,
"flags": [],
"name": "The application automatically display new features once",
"name[zh_CN]": "配置应用是否自动展示一次新特性",
"description": "The application automatically display updated contents once",
"permissions": "readwrite",
"visibility": "public"
}
}
}
Loading

0 comments on commit 217cfc5

Please sign in to comment.