添加 FontAwesome 支持

规范原来的 Segoe 图标,并添加对 FontAwesome 的支持。
This commit is contained in:
SeaYJ 2024-04-11 09:07:26 +08:00
parent 6ebd659e13
commit 9b9e981edc
20 changed files with 4002 additions and 1812 deletions

View File

@ -127,7 +127,7 @@
<file>qml/global/ItemsOriginal.qml</file> <file>qml/global/ItemsOriginal.qml</file>
<file>qml/global/qmldir</file> <file>qml/global/qmldir</file>
<file>qml/page/T_Acrylic.qml</file> <file>qml/page/T_Acrylic.qml</file>
<file>qml/page/T_Awesome.qml</file> <file>qml/page/T_SegoeIcon.qml</file>
<file>qml/page/T_Badge.qml</file> <file>qml/page/T_Badge.qml</file>
<file>qml/page/T_BreadcrumbBar.qml</file> <file>qml/page/T_BreadcrumbBar.qml</file>
<file>qml/page/T_Buttons.qml</file> <file>qml/page/T_Buttons.qml</file>
@ -209,5 +209,6 @@
<file>qml/page/T_GroupBox.qml</file> <file>qml/page/T_GroupBox.qml</file>
<file>res/image/bg_scenic.jpg</file> <file>res/image/bg_scenic.jpg</file>
<file>qml/window/FluentInitializrWindow.qml</file> <file>qml/window/FluentInitializrWindow.qml</file>
<file>qml/page/T_FontAwesome.qml</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -425,96 +425,101 @@
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="367"/> <location filename="qml/global/ItemsOriginal.qml" line="367"/>
<source>Awesome</source> <source>SegoeIcon</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="375"/> <location filename="qml/global/ItemsOriginal.qml" line="373"/>
<source>FontAwesome</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="381"/>
<source>Chart</source> <source>Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="378"/> <location filename="qml/global/ItemsOriginal.qml" line="384"/>
<source>Bar Chart</source> <source>Bar Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="384"/> <location filename="qml/global/ItemsOriginal.qml" line="390"/>
<source>Line Chart</source> <source>Line Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="390"/> <location filename="qml/global/ItemsOriginal.qml" line="396"/>
<source>Pie Chart</source> <source>Pie Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="396"/> <location filename="qml/global/ItemsOriginal.qml" line="402"/>
<source>Polar Area Chart</source> <source>Polar Area Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="402"/> <location filename="qml/global/ItemsOriginal.qml" line="408"/>
<source>Bubble Chart</source> <source>Bubble Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="408"/> <location filename="qml/global/ItemsOriginal.qml" line="414"/>
<source>Scatter Chart</source> <source>Scatter Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="414"/> <location filename="qml/global/ItemsOriginal.qml" line="420"/>
<source>Radar Chart</source> <source>Radar Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="427"/> <location filename="qml/global/ItemsOriginal.qml" line="433"/>
<source>Other</source> <source>Other</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="430"/> <location filename="qml/global/ItemsOriginal.qml" line="436"/>
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="436"/> <location filename="qml/global/ItemsOriginal.qml" line="442"/>
<source>Tour</source> <source>Tour</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="442"/> <location filename="qml/global/ItemsOriginal.qml" line="448"/>
<source>Timeline</source> <source>Timeline</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="448"/> <location filename="qml/global/ItemsOriginal.qml" line="454"/>
<source>Captcha</source> <source>Captcha</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="454"/> <location filename="qml/global/ItemsOriginal.qml" line="460"/>
<source>Network</source> <source>Network</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="461"/> <location filename="qml/global/ItemsOriginal.qml" line="467"/>
<source>Remote Loader</source> <source>Remote Loader</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="475"/> <location filename="qml/global/ItemsOriginal.qml" line="481"/>
<source>Hot Loader</source> <source>Hot Loader</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="481"/> <location filename="qml/global/ItemsOriginal.qml" line="487"/>
<source>3D</source> <source>3D</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="487"/> <location filename="qml/global/ItemsOriginal.qml" line="493"/>
<source>Test Crash</source> <source>Test Crash</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -769,29 +774,6 @@ Updated content:
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>T_Awesome</name>
<message>
<location filename="qml/page/T_Awesome.qml" line="9"/>
<source>Awesome</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Awesome.qml" line="13"/>
<source>Please enter a keyword</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Awesome.qml" line="20"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Awesome.qml" line="55"/>
<source>You Copied </source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>T_Badge</name> <name>T_Badge</name>
<message> <message>
@ -1322,6 +1304,41 @@ My only desire is to be permitted to drive out the traitors and restore the Han.
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>T_FontAwesome</name>
<message>
<location filename="qml/page/T_FontAwesome.qml" line="9"/>
<source>FontAwesome</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_FontAwesome.qml" line="13"/>
<source>Please enter a keyword</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_FontAwesome.qml" line="20"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_FontAwesome.qml" line="56"/>
<source>You Copied </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_FontAwesome.qml" line="74"/>
<source>Usage Tip</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_FontAwesome.qml" line="74"/>
<source>You must set the attribute:
`isFontAwesome` to `true`
in order to use FontAwesome icons.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>T_GroupBox</name> <name>T_GroupBox</name>
<message> <message>
@ -1780,6 +1797,29 @@ My only desire is to be permitted to drive out the traitors and restore the Han.
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>T_SegoeIcon</name>
<message>
<location filename="qml/page/T_SegoeIcon.qml" line="9"/>
<source>SegoeIcon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_SegoeIcon.qml" line="13"/>
<source>Please enter a keyword</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_SegoeIcon.qml" line="20"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_SegoeIcon.qml" line="55"/>
<source>You Copied </source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>T_Settings</name> <name>T_Settings</name>
<message> <message>

View File

@ -425,96 +425,101 @@
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="367"/> <location filename="qml/global/ItemsOriginal.qml" line="367"/>
<source>Awesome</source> <source>SegoeIcon</source>
<translation type="unfinished"></translation> <translation type="unfinished">Segoe图</translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="375"/> <location filename="qml/global/ItemsOriginal.qml" line="373"/>
<source>FontAwesome</source>
<translation type="unfinished">FontAwesome图标</translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="381"/>
<source>Chart</source> <source>Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="378"/> <location filename="qml/global/ItemsOriginal.qml" line="384"/>
<source>Bar Chart</source> <source>Bar Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="384"/> <location filename="qml/global/ItemsOriginal.qml" line="390"/>
<source>Line Chart</source> <source>Line Chart</source>
<translation type="unfinished">线</translation> <translation type="unfinished">线</translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="390"/> <location filename="qml/global/ItemsOriginal.qml" line="396"/>
<source>Pie Chart</source> <source>Pie Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="396"/> <location filename="qml/global/ItemsOriginal.qml" line="402"/>
<source>Polar Area Chart</source> <source>Polar Area Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="402"/> <location filename="qml/global/ItemsOriginal.qml" line="408"/>
<source>Bubble Chart</source> <source>Bubble Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="408"/> <location filename="qml/global/ItemsOriginal.qml" line="414"/>
<source>Scatter Chart</source> <source>Scatter Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="414"/> <location filename="qml/global/ItemsOriginal.qml" line="420"/>
<source>Radar Chart</source> <source>Radar Chart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="427"/> <location filename="qml/global/ItemsOriginal.qml" line="433"/>
<source>Other</source> <source>Other</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="430"/> <location filename="qml/global/ItemsOriginal.qml" line="436"/>
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="436"/> <location filename="qml/global/ItemsOriginal.qml" line="442"/>
<source>Tour</source> <source>Tour</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="442"/> <location filename="qml/global/ItemsOriginal.qml" line="448"/>
<source>Timeline</source> <source>Timeline</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="448"/> <location filename="qml/global/ItemsOriginal.qml" line="454"/>
<source>Captcha</source> <source>Captcha</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="454"/> <location filename="qml/global/ItemsOriginal.qml" line="460"/>
<source>Network</source> <source>Network</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="461"/> <location filename="qml/global/ItemsOriginal.qml" line="467"/>
<source>Remote Loader</source> <source>Remote Loader</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="475"/> <location filename="qml/global/ItemsOriginal.qml" line="481"/>
<source>Hot Loader</source> <source>Hot Loader</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="481"/> <location filename="qml/global/ItemsOriginal.qml" line="487"/>
<source>3D</source> <source>3D</source>
<translation type="unfinished">3D</translation> <translation type="unfinished">3D</translation>
</message> </message>
<message> <message>
<location filename="qml/global/ItemsOriginal.qml" line="487"/> <location filename="qml/global/ItemsOriginal.qml" line="493"/>
<source>Test Crash</source> <source>Test Crash</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -773,29 +778,6 @@ Updated content:
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>T_Awesome</name>
<message>
<location filename="qml/page/T_Awesome.qml" line="9"/>
<source>Awesome</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Awesome.qml" line="13"/>
<source>Please enter a keyword</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Awesome.qml" line="20"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Awesome.qml" line="55"/>
<source>You Copied </source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>T_Badge</name> <name>T_Badge</name>
<message> <message>
@ -1353,6 +1335,43 @@ My only desire is to be permitted to drive out the traitors and restore the Han.
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>T_FontAwesome</name>
<message>
<location filename="qml/page/T_FontAwesome.qml" line="9"/>
<source>FontAwesome</source>
<translation type="unfinished">FontAwesome图标</translation>
</message>
<message>
<location filename="qml/page/T_FontAwesome.qml" line="13"/>
<source>Please enter a keyword</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_FontAwesome.qml" line="20"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_FontAwesome.qml" line="56"/>
<source>You Copied </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_FontAwesome.qml" line="74"/>
<source>Usage Tip</source>
<translation type="unfinished">使</translation>
</message>
<message>
<location filename="qml/page/T_FontAwesome.qml" line="74"/>
<source>You must set the attribute:
`isFontAwesome` to `true`
in order to use FontAwesome icons.</source>
<translation type="unfinished">
`isFontAwesome` `true`
使 FontAwesome </translation>
</message>
</context>
<context> <context>
<name>T_GroupBox</name> <name>T_GroupBox</name>
<message> <message>
@ -1829,6 +1848,29 @@ My only desire is to be permitted to drive out the traitors and restore the Han.
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>T_SegoeIcon</name>
<message>
<location filename="qml/page/T_SegoeIcon.qml" line="9"/>
<source>SegoeIcon</source>
<translation type="unfinished">Segoe图标</translation>
</message>
<message>
<location filename="qml/page/T_SegoeIcon.qml" line="13"/>
<source>Please enter a keyword</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_SegoeIcon.qml" line="20"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_SegoeIcon.qml" line="55"/>
<source>You Copied </source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>T_Settings</name> <name>T_Settings</name>
<message> <message>

View File

@ -1,4 +1,4 @@
pragma Singleton pragma Singleton
import QtQuick 2.15 import QtQuick 2.15
import FluentUI 1.0 import FluentUI 1.0
@ -364,9 +364,15 @@ FluObject{
onTap: { navigationView.push(url) } onTap: { navigationView.push(url) }
} }
FluPaneItem{ FluPaneItem{
title: qsTr("Awesome") title: qsTr("SegoeIcon")
menuDelegate: paneItemMenu menuDelegate: paneItemMenu
url: "qrc:/example/qml/page/T_Awesome.qml" url: "qrc:/example/qml/page/T_SegoeIcon.qml"
onTap: { navigationView.push(url) }
}
FluPaneItem{
title: qsTr("FontAwesome")
menuDelegate: paneItemMenu
url: "qrc:/example/qml/page/T_FontAwesome.qml"
onTap: { navigationView.push(url) } onTap: { navigationView.push(url) }
} }
} }

View File

@ -0,0 +1,77 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import QtQuick.Window 2.15
import FluentUI 1.0
FluContentPage {
title: qsTr("FontAwesome")
FluTextBox{
id:text_box
placeholderText: qsTr("Please enter a keyword")
anchors{
top:parent.top
}
}
FluFilledButton{
text: qsTr("Search")
anchors{
left: text_box.right
verticalCenter: text_box.verticalCenter
leftMargin: 14
}
onClicked: {
grid_view.model = FluTheme.fontAwesomeList(text_box.text)
}
}
GridView{
id:grid_view
cellWidth: 80
cellHeight: 80
clip: true
boundsBehavior: GridView.StopAtBounds
model:FluTheme.fontAwesomeList()
ScrollBar.vertical: FluScrollBar {}
anchors{
topMargin: 10
top:text_box.bottom
left: parent.left
right: parent.right
bottom: parent.bottom
}
delegate: Item {
width: 68
height: 80
FluIconButton{
id:item_icon
isFontAwesome: true
iconSource:modelData.icon
anchors.horizontalCenter: parent.horizontalCenter
onClicked: {
var text ="FluentFAIcons."+modelData.name;
FluTools.clipText(text)
showSuccess(qsTr("You Copied ")+text)
}
}
FluText {
id:item_name
font.pixelSize: 10
font.family: FluTextStyle.family
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: item_icon.bottom
width:parent.width
wrapMode: Text.WrapAnywhere
text: modelData.name
horizontalAlignment: Text.AlignHCenter
}
}
}
Component.onCompleted: {
showInfo(qsTr("Usage Tip"),0,qsTr("You must set the attribute: \n`isFontAwesome` to `true`\n in order to use FontAwesome icons."));
}
}

View File

@ -1,4 +1,4 @@
import QtQuick 2.15 import QtQuick 2.15
import QtQuick.Controls 2.15 import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15 import QtQuick.Layouts 1.15
import QtQuick.Window 2.15 import QtQuick.Window 2.15
@ -6,7 +6,7 @@ import FluentUI 1.0
FluContentPage { FluContentPage {
title: qsTr("Awesome") title: qsTr("SegoeIcon")
FluTextBox{ FluTextBox{
id:text_box id:text_box
@ -24,7 +24,7 @@ FluContentPage {
leftMargin: 14 leftMargin: 14
} }
onClicked: { onClicked: {
grid_view.model = FluTheme.awesomeList(text_box.text) grid_view.model = FluTheme.segoeIconList(text_box.text)
} }
} }
GridView{ GridView{
@ -33,7 +33,7 @@ FluContentPage {
cellHeight: 80 cellHeight: 80
clip: true clip: true
boundsBehavior: GridView.StopAtBounds boundsBehavior: GridView.StopAtBounds
model:FluTheme.awesomeList() model:FluTheme.segoeIconList()
ScrollBar.vertical: FluScrollBar {} ScrollBar.vertical: FluScrollBar {}
anchors{ anchors{
topMargin: 10 topMargin: 10

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.20) cmake_minimum_required(VERSION 3.20)
if (FLUENTUI_BUILD_STATIC_LIB AND (QT_VERSION VERSION_GREATER_EQUAL "6.2")) if (FLUENTUI_BUILD_STATIC_LIB AND (QT_VERSION VERSION_GREATER_EQUAL "6.2"))
project(fluentui VERSION 1.0) project(fluentui VERSION 1.0)
@ -144,7 +144,8 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
) )
else() else()
#qrc #qrc
set(QRC_FILE Qt5/imports/fluentui.qrc) set(QRC
RESOURCES Qt6/imports/FluentUI/Font/Font-Awesome-6-Free-Solid.ttf_FILE Qt5/imports/fluentui.qrc)
qt_add_big_resources(QRC_RESOURCES ${QRC_FILE}) qt_add_big_resources(QRC_RESOURCES ${QRC_FILE})
list(APPEND QRC_RESOURCES ${QRC_FILE}) list(APPEND QRC_RESOURCES ${QRC_FILE})
set_property(SOURCE ${QRC_FILE} PROPERTY SKIP_AUTORCC ON) set_property(SOURCE ${QRC_FILE} PROPERTY SKIP_AUTORCC ON)

1968
src/Def.h

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
#include "FluTheme.h" #include "FluTheme.h"
#include <QGuiApplication> #include <QGuiApplication>
#include <QPalette> #include <QPalette>
@ -37,8 +37,7 @@ void FluTheme::refreshColors(){
bool FluTheme::eventFilter(QObject* obj, QEvent* event) { bool FluTheme::eventFilter(QObject* obj, QEvent* event) {
Q_UNUSED(obj); Q_UNUSED(obj);
if (event->type() == QEvent::ApplicationPaletteChange || event->type() == QEvent::ThemeChange) if(event->type() == QEvent::ApplicationPaletteChange || event->type() == QEvent::ThemeChange) {
{
_systemDark = systemDark(); _systemDark = systemDark();
Q_EMIT darkChanged(); Q_EMIT darkChanged();
event->accept(); event->accept();
@ -47,9 +46,25 @@ bool FluTheme::eventFilter(QObject *obj, QEvent *event){
return false; return false;
} }
QJsonArray FluTheme::awesomeList(const QString& keyword){ QJsonArray FluTheme::segoeIconList(const QString& keyword) {
QJsonArray arr; QJsonArray arr;
QMetaEnum enumType = Fluent_Awesome::staticMetaObject.enumerator(Fluent_Awesome::staticMetaObject.indexOfEnumerator("Fluent_AwesomeType")); QMetaEnum enumType = Fluent_SegoeIcon::staticMetaObject.enumerator(Fluent_SegoeIcon::staticMetaObject.indexOfEnumerator("Fluent_SegoeIconType"));
for(int i = 0; i < enumType.keyCount(); ++i) {
QString name = enumType.key(i);
int icon = enumType.value(i);
if(keyword.isEmpty() || name.contains(keyword)) {
QJsonObject obj;
obj.insert("name", name);
obj.insert("icon", icon);
arr.append(obj);
}
}
return arr;
}
QJsonArray FluTheme::fontAwesomeList(const QString& keyword) {
QJsonArray arr;
QMetaEnum enumType = Fluent_FontAwesome::staticMetaObject.enumerator(Fluent_FontAwesome::staticMetaObject.indexOfEnumerator("Fluent_FontAwesomeType"));
for(int i = 0; i < enumType.keyCount(); ++i) { for(int i = 0; i < enumType.keyCount(); ++i) {
QString name = enumType.key(i); QString name = enumType.key(i);
int icon = enumType.value(i); int icon = enumType.value(i);

View File

@ -1,4 +1,4 @@
#ifndef FLUTHEME_H #ifndef FLUTHEME_H
#define FLUTHEME_H #define FLUTHEME_H
#include <QObject> #include <QObject>
@ -13,8 +13,7 @@
/** /**
* @brief The FluTheme class * @brief The FluTheme class
*/ */
class FluTheme : public QObject class FluTheme : public QObject {
{
Q_OBJECT Q_OBJECT
Q_PROPERTY(bool dark READ dark NOTIFY darkChanged) Q_PROPERTY(bool dark READ dark NOTIFY darkChanged)
Q_PROPERTY_AUTO(FluAccentColor*, accentColor); Q_PROPERTY_AUTO(FluAccentColor*, accentColor);
@ -42,9 +41,12 @@ private:
void refreshColors(); void refreshColors();
public: public:
SINGLETON(FluTheme) SINGLETON(FluTheme)
Q_INVOKABLE QJsonArray awesomeList(const QString& keyword = ""); Q_INVOKABLE QJsonArray segoeIconList(const QString& keyword = "");
Q_INVOKABLE QJsonArray fontAwesomeList(const QString& keyword = "");
Q_SIGNAL void darkChanged(); Q_SIGNAL void darkChanged();
static FluTheme *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine){return getInstance();} static FluTheme* create(QQmlEngine* qmlEngine, QJSEngine* jsEngine) {
return getInstance();
}
bool dark(); bool dark();
private: private:
bool _systemDark; bool _systemDark;

View File

@ -1,4 +1,4 @@
#include "FluentUI.h" #include "FluentUI.h"
#include <QGuiApplication> #include <QGuiApplication>
#include "Def.h" #include "Def.h"
@ -130,7 +130,8 @@ void FluentUI::registerTypes(const char *uri){
qmlRegisterSingletonType(QUrl("qrc:/qt/qml/FluentUI/Controls/FluRouter.qml"), uri, major, minor, "FluRouter"); qmlRegisterSingletonType(QUrl("qrc:/qt/qml/FluentUI/Controls/FluRouter.qml"), uri, major, minor, "FluRouter");
qmlRegisterSingletonType(QUrl("qrc:/qt/qml/FluentUI/Controls/FluEventBus.qml"), uri, major, minor, "FluEventBus"); qmlRegisterSingletonType(QUrl("qrc:/qt/qml/FluentUI/Controls/FluEventBus.qml"), uri, major, minor, "FluEventBus");
qmlRegisterUncreatableMetaObject(Fluent_Awesome::staticMetaObject, uri,major,minor,"FluentIcons", "Access to enums & flags only"); qmlRegisterUncreatableMetaObject(Fluent_SegoeIcon::staticMetaObject, uri, major, minor, "FluentIcons", "Access to enums & flags only");
qmlRegisterUncreatableMetaObject(Fluent_FontAwesome::staticMetaObject, uri, major, minor, "FluentFAIcons", "Access to enums & flags only");
qmlRegisterUncreatableMetaObject(FluThemeType::staticMetaObject, uri, major, minor, "FluThemeType", "Access to enums & flags only"); qmlRegisterUncreatableMetaObject(FluThemeType::staticMetaObject, uri, major, minor, "FluThemeType", "Access to enums & flags only");
qmlRegisterUncreatableMetaObject(FluPageType::staticMetaObject, uri, major, minor, "FluPageType", "Access to enums & flags only"); qmlRegisterUncreatableMetaObject(FluPageType::staticMetaObject, uri, major, minor, "FluPageType", "Access to enums & flags only");
qmlRegisterUncreatableMetaObject(FluWindowType::staticMetaObject, uri, major, minor, "FluWindowType", "Access to enums & flags only"); qmlRegisterUncreatableMetaObject(FluWindowType::staticMetaObject, uri, major, minor, "FluWindowType", "Access to enums & flags only");

View File

@ -1,19 +1,33 @@
import QtQuick 2.15 import QtQuick 2.15
import QtQuick.Controls 2.15 import QtQuick.Controls 2.15
import FluentUI 1.0 import FluentUI 1.0
Text { Text {
property bool isFontAwesome: false
property int iconSource property int iconSource
property int iconSize: 20 property int iconSize: 20
property color iconColor: FluTheme.dark ? "#FFFFFF" : "#000000" property color iconColor: FluTheme.dark ? "#FFFFFF" : "#000000"
id:control id:control
font.family: "Segoe Fluent Icons" font {
font.pixelSize: iconSize family: {
if (isFontAwesome) {
return fontFontAwesome.name;
} else {
return fontSegoeIcons.name;
}
}
pixelSize: iconSize
}
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
color: iconColor color: iconColor
text: (String.fromCharCode(iconSource).toString(16)) text: (String.fromCharCode(iconSource).toString(16))
FontLoader{ FontLoader{
id: fontFontAwesome
source: "../Font/Font-Awesome-6-Free-Solid.ttf"
}
FontLoader{
id: fontSegoeIcons
source: "../Font/Segoe_Fluent_Icons.ttf" source: "../Font/Segoe_Fluent_Icons.ttf"
} }
} }

View File

@ -1,4 +1,4 @@
import QtQuick 2.15 import QtQuick 2.15
import QtQuick.Controls 2.15 import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15 import QtQuick.Layouts 1.15
import FluentUI 1.0 import FluentUI 1.0
@ -38,6 +38,7 @@ Button {
} }
} }
property color textColor: FluTheme.fontPrimaryColor property color textColor: FluTheme.fontPrimaryColor
property bool isFontAwesome: false
Accessible.role: Accessible.Button Accessible.role: Accessible.Button
Accessible.name: control.text Accessible.name: control.text
Accessible.description: contentDescription Accessible.description: contentDescription
@ -62,6 +63,7 @@ Button {
id:com_icon id:com_icon
FluIcon { FluIcon {
id:text_icon id:text_icon
isFontAwesome: control.isFontAwesome
font.pixelSize: iconSize font.pixelSize: iconSize
iconSize: control.iconSize iconSize: control.iconSize
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter

View File

@ -110,5 +110,6 @@
<file>FluentUI/Controls/FluSheet.qml</file> <file>FluentUI/Controls/FluSheet.qml</file>
<file>FluentUI/Controls/FluGroupBox.qml</file> <file>FluentUI/Controls/FluGroupBox.qml</file>
<file>FluentUI/Controls/FluControlBackground.qml</file> <file>FluentUI/Controls/FluControlBackground.qml</file>
<file>FluentUI/Font/Font-Awesome-6-Free-Solid.ttf</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -1,19 +1,33 @@
import QtQuick import QtQuick
import QtQuick.Controls import QtQuick.Controls
import FluentUI import FluentUI
Text { Text {
property bool isFontAwesome: false
property int iconSource property int iconSource
property int iconSize: 20 property int iconSize: 20
property color iconColor: FluTheme.dark ? "#FFFFFF" : "#000000" property color iconColor: FluTheme.dark ? "#FFFFFF" : "#000000"
id:control id:control
font.family: "Segoe Fluent Icons" font {
font.pixelSize: iconSize family: {
if (isFontAwesome) {
return fontFontAwesome.name;
} else {
return fontSegoeIcons.name;
}
}
pixelSize: iconSize
}
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
color: iconColor color: iconColor
text: (String.fromCharCode(iconSource).toString(16)) text: (String.fromCharCode(iconSource).toString(16))
FontLoader{ FontLoader{
id: fontFontAwesome
source: "../Font/Font-Awesome-6-Free-Solid.ttf"
}
FontLoader{
id: fontSegoeIcons
source: "../Font/Segoe_Fluent_Icons.ttf" source: "../Font/Segoe_Fluent_Icons.ttf"
} }
} }

View File

@ -1,4 +1,4 @@
import QtQuick import QtQuick
import QtQuick.Controls import QtQuick.Controls
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls.Basic import QtQuick.Controls.Basic
@ -39,6 +39,7 @@ Button {
} }
} }
property color textColor: FluTheme.fontPrimaryColor property color textColor: FluTheme.fontPrimaryColor
property bool isFontAwesome: false
Accessible.role: Accessible.Button Accessible.role: Accessible.Button
Accessible.name: control.text Accessible.name: control.text
Accessible.description: contentDescription Accessible.description: contentDescription
@ -63,6 +64,7 @@ Button {
id:com_icon id:com_icon
FluIcon { FluIcon {
id:text_icon id:text_icon
isFontAwesome: control.isFontAwesome
font.pixelSize: iconSize font.pixelSize: iconSize
iconSize: control.iconSize iconSize: control.iconSize
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter

View File

@ -212,31 +212,37 @@
<name>FluTimePicker</name> <name>FluTimePicker</name>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="11"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="11"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="11"/>
<source>AM</source> <source>AM</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="12"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="12"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="12"/>
<source>PM</source> <source>PM</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="13"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="13"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="13"/>
<source>Hour</source> <source>Hour</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="14"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="14"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="14"/>
<source>Minute</source> <source>Minute</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="15"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="15"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="15"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="16"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="16"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="16"/>
<source>OK</source> <source>OK</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -265,8 +271,8 @@
<context> <context>
<name>FluWindow</name> <name>FluWindow</name>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluWindow.qml" line="285"/> <location filename="Qt5/imports/FluentUI/Controls/FluWindow.qml" line="288"/>
<location filename="Qt6/imports/FluentUI/Controls/FluWindow.qml" line="284"/> <location filename="Qt6/imports/FluentUI/Controls/FluWindow.qml" line="287"/>
<source>Loading...</source> <source>Loading...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -212,31 +212,37 @@
<name>FluTimePicker</name> <name>FluTimePicker</name>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="11"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="11"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="11"/>
<source>AM</source> <source>AM</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="12"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="12"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="12"/>
<source>PM</source> <source>PM</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="13"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="13"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="13"/>
<source>Hour</source> <source>Hour</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="14"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="14"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="14"/>
<source>Minute</source> <source>Minute</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="15"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="15"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="15"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="16"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="16"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="16"/>
<source>OK</source> <source>OK</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -265,8 +271,8 @@
<context> <context>
<name>FluWindow</name> <name>FluWindow</name>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluWindow.qml" line="285"/> <location filename="Qt5/imports/FluentUI/Controls/FluWindow.qml" line="288"/>
<location filename="Qt6/imports/FluentUI/Controls/FluWindow.qml" line="284"/> <location filename="Qt6/imports/FluentUI/Controls/FluWindow.qml" line="287"/>
<source>Loading...</source> <source>Loading...</source>
<translation type="unfinished">...</translation> <translation type="unfinished">...</translation>
</message> </message>