Compare commits

..

89 Commits
1.1.2 ... 1.1.6

Author SHA1 Message Date
2008e0f524 update 2023-03-30 22:59:25 +08:00
4e53936bb7 update 2023-03-30 22:27:30 +08:00
eb758f7765 update 2023-03-30 22:18:42 +08:00
1ab69e401a update 2023-03-30 22:10:05 +08:00
e014aa774d update 2023-03-30 22:02:10 +08:00
0595e2e640 update 2023-03-30 21:59:32 +08:00
b5894158d2 update 2023-03-30 21:52:55 +08:00
4829ce58fd update 2023-03-30 19:58:57 +08:00
b5f44f4f7d update 2023-03-30 18:34:03 +08:00
cbd4c229aa update 2023-03-30 18:23:33 +08:00
7720208d17 update 2023-03-30 17:16:57 +08:00
9790ae12eb update 2023-03-30 11:49:35 +08:00
37ae17d92d update 2023-03-30 11:43:35 +08:00
036450f0a3 update 2023-03-29 22:42:08 +08:00
5a1b10fef8 update 2023-03-29 21:43:01 +08:00
a33a63abc9 update 2023-03-29 21:40:28 +08:00
ff4ec71379 update 2023-03-29 18:10:34 +08:00
76ed63eaf0 Merge branch 'main' of https://github.com/zhuzichu520/FluentUI 2023-03-29 15:44:39 +08:00
825a6f4461 update 2023-03-29 15:44:36 +08:00
98f4d970c6 update 2023-03-29 15:43:23 +08:00
38f4ae92db update 2023-03-28 22:41:43 +08:00
2e31ab902d update 2023-03-28 21:56:36 +08:00
850a1ba8d8 update 2023-03-28 21:53:55 +08:00
a298f43388 update 2023-03-28 21:37:10 +08:00
b70a982586 update 2023-03-28 18:14:14 +08:00
6a2a93561a update 2023-03-28 17:53:46 +08:00
96ad06c2e4 update 2023-03-28 13:10:30 +08:00
e7f6ad8b26 update 2023-03-28 13:01:28 +08:00
6174cbc2a4 update 2023-03-28 12:52:35 +08:00
e5bdd36e27 update 2023-03-28 12:37:03 +08:00
038cc37c12 update 2023-03-28 11:53:25 +08:00
f0f58ca2dd update 2023-03-27 22:58:33 +08:00
3a32d66d6a update 2023-03-27 18:24:35 +08:00
a2c23231f2 update 2023-03-25 23:28:48 +08:00
dae49a5bfc update 2023-03-25 22:46:15 +08:00
5e61af99ba update 2023-03-25 20:45:33 +08:00
e2d72d4510 update 2023-03-25 19:38:36 +08:00
fcdb05b7d1 update 2023-03-25 14:23:16 +08:00
a59010ec72 update 2023-03-25 13:35:21 +08:00
36d7c714a5 update 2023-03-25 12:41:56 +08:00
2f95bdf649 update 2023-03-25 12:21:00 +08:00
faa6c625cb update 2023-03-25 12:14:45 +08:00
0176f14469 update 2023-03-25 12:04:10 +08:00
128869f46e update 2023-03-25 11:54:07 +08:00
14ceb3a4c6 update 2023-03-25 11:49:12 +08:00
a1d8581768 update 2023-03-25 11:34:26 +08:00
e7146bf2ca update 2023-03-25 11:15:29 +08:00
432023aee3 update 2023-03-25 10:49:31 +08:00
a1959641c2 update 2023-03-25 10:47:42 +08:00
0f7c5f4ff5 update 2023-03-25 10:31:12 +08:00
b6befc4416 update 2023-03-25 01:14:23 +08:00
901c83e499 update 2023-03-25 00:56:30 +08:00
7e60bfd37f update 2023-03-25 00:52:37 +08:00
d2e1a6fef9 update 2023-03-25 00:46:07 +08:00
ffd7d3bce5 update 2023-03-25 00:41:40 +08:00
424a6137c5 update 2023-03-25 00:36:31 +08:00
57d453d574 update 2023-03-25 00:33:36 +08:00
697c379ee1 update 2023-03-25 00:31:23 +08:00
f5adefb0f1 update 2023-03-25 00:28:39 +08:00
00f08eaf99 update 2023-03-25 00:25:12 +08:00
795fc26777 update 2023-03-25 00:21:07 +08:00
603bab5d93 update 2023-03-25 00:15:20 +08:00
d570acf5a7 update 2023-03-25 00:11:48 +08:00
758f8ccb9c update 2023-03-25 00:03:11 +08:00
dfd8ef875c update 2023-03-25 00:00:50 +08:00
8b156699fb update 2023-03-24 23:56:45 +08:00
183f105776 update 2023-03-24 23:52:51 +08:00
162c4851ea update 2023-03-24 23:49:27 +08:00
6f38bb9985 update 2023-03-24 23:44:38 +08:00
30b8c19f52 update 2023-03-24 23:37:04 +08:00
64d636d391 update 2023-03-24 23:31:54 +08:00
4ba19a5bf2 update 2023-03-24 23:21:42 +08:00
3c978f1655 update 2023-03-24 23:18:33 +08:00
592abd3cab update 2023-03-24 22:22:31 +08:00
8b0a0c7c98 update 2023-03-24 22:13:41 +08:00
09bf3cf0ab update 2023-03-24 21:52:37 +08:00
753d1cdd30 update 2023-03-24 21:40:31 +08:00
11cd46ba18 update 2023-03-24 21:34:07 +08:00
587b422275 update 2023-03-24 21:19:15 +08:00
fb68455ded update 2023-03-24 20:52:59 +08:00
d2d2e97d28 update 2023-03-24 20:44:38 +08:00
6d809efd4b update 2023-03-24 18:25:13 +08:00
d8d95399cd update 2023-03-24 15:21:47 +08:00
1f1e8b0ed0 update 2023-03-24 14:16:35 +08:00
a3fb672cc7 update 2023-03-24 14:15:06 +08:00
f20dc1edcb update 2023-03-23 18:05:42 +08:00
bfaffd3dab update 2023-03-23 17:52:08 +08:00
2c63eb21f0 update 2023-03-23 17:46:53 +08:00
f4e5316987 update 2023-03-23 17:40:10 +08:00
221 changed files with 3739 additions and 1562 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -16,8 +16,8 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
matrix: matrix:
os: [macos-10.15,macos-11.0] os: [macos-11.0]
qt_ver: [5.15.2] qt_ver: [6.4.3]
qt_arch: [clang_64] qt_arch: [clang_64]
env: env:
targetName: example targetName: example
@ -30,10 +30,12 @@ jobs:
sudo xcode-select --print-path sudo xcode-select --print-path
sudo xcode-select --switch /Library/Developer/CommandLineTools sudo xcode-select --switch /Library/Developer/CommandLineTools
- name: Install Qt - name: Install Qt
uses: jurplel/install-qt-action@v2 uses: jurplel/install-qt-action@v3
with: with:
version: ${{ matrix.qt_ver }} version: ${{ matrix.qt_ver }}
cached: 'false' cached: 'false'
arch: ${{ matrix.qt_arch }}
modules: 'qt5compat qtmultimedia qtshadertools'
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with: with:
fetch-depth: 1 fetch-depth: 1

View File

@ -18,17 +18,19 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
matrix: matrix:
os: [ubuntu-18.04,ubuntu-20.04] os: [ubuntu-20.04]
qt_ver: [5.15.2] qt_ver: [6.4.3]
qt_arch: [gcc_64] qt_arch: [gcc_64]
env: env:
targetName: example targetName: example
steps: steps:
- name: Install Qt - name: Install Qt
uses: jurplel/install-qt-action@v2 uses: jurplel/install-qt-action@v3
with: with:
version: ${{ matrix.qt_ver }} version: ${{ matrix.qt_ver }}
cached: 'false' cached: 'false'
arch: ${{ matrix.qt_arch }}
modules: 'qt5compat qtmultimedia qtshadertools'
- name: ubuntu install GL library - name: ubuntu install GL library
run: sudo apt-get install -y libglew-dev libglfw3-dev qml-module-qtquick-controls qml-module-qtquick-controls2 run: sudo apt-get install -y libglew-dev libglfw3-dev qml-module-qtquick-controls qml-module-qtquick-controls2
- uses: actions/checkout@v2 - uses: actions/checkout@v2

View File

@ -1,87 +0,0 @@
name: Windows MinGW
on:
push:
paths:
- '*.pro'
- 'src/**'
- '.github/workflows/windows-mingw.yml'
pull_request:
paths:
- '*.pro'
- 'src/**'
- '.github/workflows/windows-mingw.yml'
jobs:
build:
name: Build
runs-on: windows-2019
strategy:
matrix:
include:
- qt_arch: win32_mingw81
qt_ver: 5.15.2
qt_tools: "tools_mingw,8.1.0-1-202004170606,qt.tools.win32_mingw810"
qt_tools_mingw_install: mingw810_32
- qt_arch: win64_mingw81
qt_ver: 5.15.2
qt_tools: "tools_mingw,8.1.0-1-202004170606,qt.tools.win64_mingw810"
qt_tools_mingw_install: mingw810_64
env:
targetName: example.exe
fileName: example
steps:
- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
version: ${{ matrix.qt_ver }}
aqtversion: '==2.0.5'
arch: ${{ matrix.qt_arch }}
tools: ${{ matrix.qt_tools }}
cached: 'false'
- uses: actions/checkout@v2
with:
fetch-depth: 1
- name: Qt 5 environment configuration
if: ${{ startsWith( matrix.qt_ver, 5 ) }}
shell: pwsh
run: |
Write-Output "${{ env.Qt5_DIR }}/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
Write-Output "${{ env.Qt5_DIR }}/../../Tools/${{ matrix.qt_tools_mingw_install }}/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Qt 6 environment configuration
if: ${{ startsWith( matrix.qt_ver, 6 ) }}
shell: pwsh
run: |
Write-Output "${{ env.Qt6_DIR }}/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
Write-Output "${{ env.Qt6_DIR }}/../../Tools/${{ matrix.qt_tools_mingw_install }}/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: where is qmake & where is mingw32-make
shell: pwsh
run: |
Get-Command -Name 'qmake' | Format-List
Get-Command -Name 'mingw32-make' | Format-List
- name: mingw-build
id: build
shell: cmd
run: |
qmake
mingw32-make
- name: package
id: package
env:
archiveName: ${{ env.fileName }}-${{ matrix.qt_ver }}-${{ matrix.qt_arch }}
shell: pwsh
run: |
& scripts\windows-mingw-publish.ps1 ${env:archiveName} ${env:targetName}
$name = ${env:archiveName}
echo "::set-output name=packageName::$name"
- uses: actions/upload-artifact@v2
with:
name: ${{ steps.package.outputs.packageName }}
path: ${{ steps.package.outputs.packageName }}
- name: uploadRelease
if: startsWith(github.event.ref, 'refs/tags/')
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ steps.package.outputs.packageName }}.zip
asset_name: ${{ steps.package.outputs.packageName }}.zip
tag: ${{ github.ref }}
overwrite: true

View File

@ -21,12 +21,7 @@ jobs:
# 矩阵配置 # 矩阵配置
matrix: matrix:
include: include:
# 5.15.2 参考 https://mirrors.cloud.tencent.com/qt/online/qtsdkrepository/windows_x86/desktop/qt5_5152/ - qt_ver: 6.4.3
- qt_ver: 5.15.2
qt_arch: win32_msvc2019
msvc_arch: x86
qt_arch_install: msvc2019
- qt_ver: 5.15.2
qt_arch: win64_msvc2019_64 qt_arch: win64_msvc2019_64
msvc_arch: x64 msvc_arch: x64
qt_arch_install: msvc2019_64 qt_arch_install: msvc2019_64
@ -38,15 +33,12 @@ jobs:
# 安装Qt # 安装Qt
- name: Install Qt - name: Install Qt
# 使用外部action。这个action专门用来安装Qt # 使用外部action。这个action专门用来安装Qt
uses: jurplel/install-qt-action@v2 uses: jurplel/install-qt-action@v3
with: with:
# Version of Qt to install
version: ${{ matrix.qt_ver }} version: ${{ matrix.qt_ver }}
# Target platform for build
# target: ${{ matrix.qt_target }}
arch: ${{ matrix.qt_arch }} arch: ${{ matrix.qt_arch }}
cached: 'false' cached: 'false'
aqtversion: '==2.0.5' modules: 'qt5compat qtmultimedia qtshadertools'
# 拉取代码 # 拉取代码
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with: with:
@ -67,7 +59,7 @@ jobs:
- name: package - name: package
id: package id: package
env: env:
archiveName: ${{ env.fileName }}-${{ matrix.qt_ver }}-${{ matrix.qt_arch }} archiveName: ${{ env.fileName }}-${{ matrix.qt_arch }}-${{ matrix.qt_ver }}
msvcArch: ${{ matrix.msvc_arch }} msvcArch: ${{ matrix.msvc_arch }}
shell: pwsh shell: pwsh
run: | run: |

View File

@ -65,9 +65,9 @@
# 部分效果预览 # 部分效果预览
## 一个聊天Demo调用了ChatGPT的接口 ## 首页
![](doc/preview/chatgpt.png) ![](doc/preview/home.png)
## 各种Button按钮 ## 各种Button按钮
@ -91,4 +91,7 @@
## 多窗口路由跳转 ## 多窗口路由跳转
![](doc/preview/multiwindow.png) ![](doc/preview/multiwindow.png)
### ⚡ Visitor count
![](https://profile-counter.glitch.me/zhuzichu520-FluentUI/count.svg)

BIN
doc/preview/home.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

View File

@ -1,16 +1,16 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtGraphicalEffects 1.15 import FluentUI
import FluentUI 1.0
Window { Window {
id:app id:app
color: "#00000000" color: "#00000000"
Component.onCompleted: { Component.onCompleted: {
FluApp.init(app,properties) FluApp.init(app,properties)
FluTheme.isDark = false FluTheme.frameless = ("windows" === Qt.platform.os)
FluTheme.dark = false
FluApp.routes = { FluApp.routes = {
"/":"qrc:/page/MainPage.qml", "/":"qrc:/page/MainPage.qml",
"/about":"qrc:/page/AboutPage.qml", "/about":"qrc:/page/AboutPage.qml",

29
example/Info.plist Normal file
View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>CFBundleExecutable</key>
<string>example</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.zhuzichu.example</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>LSMinimumSystemVersion</key>
<string>10.13</string>
<key>NOTE</key>
<string>This file was generated by Qt/QMake.</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
</dict>
</plist>

View File

@ -1,13 +1,17 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import FluentUI 1.0 import FluentUI
FluContentPage { FluContentPage {
title:"Awesome" title:"Awesome"
leftPadding:10
rightPadding:10
bottomPadding:20
FluTextBox{ FluTextBox{
id:text_box id:text_box
placeholderText: "请输入关键字" placeholderText: "请输入关键字"

View File

@ -1,14 +1,16 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtGraphicalEffects 1.15 import FluentUI
import FluentUI 1.0
FluScrollablePage{ FluScrollablePage{
title:"Badge" title:"Badge"
leftPadding:10
rightPadding:10
bottomPadding:20
FluArea{ FluArea{
width: parent.width width: parent.width

View File

@ -1,14 +1,18 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Controls 2.15 import QtQuick.Controls
import FluentUI 1.0 import FluentUI
FluScrollablePage{ FluScrollablePage{
title:"Buttons" title:"Buttons"
spacing: 20 spacing: 20
leftPadding:10
rightPadding:10
bottomPadding:20
FluText{ FluText{
Layout.topMargin: 20 Layout.topMargin: 20
text:"支持Tab键切换焦点空格键执行点击事件" text:"支持Tab键切换焦点空格键执行点击事件"

View File

@ -1,27 +0,0 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import QtQuick.Window 2.15
import QtGraphicalEffects 1.15
import FluentUI 1.0
FluScrollablePage{
title:"Calendar"
FluArea{
width: parent.width
Layout.topMargin: 20
height: 350
paddings: 10
FluCalendarView{
}
}
}

View File

@ -1,33 +1,38 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import FluentUI 1.0 import FluentUI
FluScrollablePage{ FluScrollablePage{
title:"CalendarPicker" title:"CalendarPicker"
leftPadding:10
rightPadding:10
bottomPadding:20
FluArea{
width: parent.width
Layout.topMargin: 20
height: 350
paddings: 10
FluCalendarView{
}
}
FluArea{ FluArea{
width: parent.width width: parent.width
Layout.topMargin: 20 Layout.topMargin: 20
height: 80 height: 80
paddings: 10 paddings: 10
ColumnLayout{ ColumnLayout{
anchors{ anchors{
verticalCenter: parent.verticalCenter verticalCenter: parent.verticalCenter
left: parent.left left: parent.left
} }
FluCalendarPicker{ FluCalendarPicker{
} }
} }
} }
} }

View File

@ -1,13 +1,15 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtGraphicalEffects 1.15 import FluentUI
import FluentUI 1.0
FluScrollablePage{ FluScrollablePage{
title:"Carousel" title:"Carousel"
leftPadding:10
rightPadding:10
bottomPadding:20
FluArea{ FluArea{
width: parent.width width: parent.width

23
example/T_CheckBox.qml Normal file
View File

@ -0,0 +1,23 @@
import QtQuick
import QtQuick.Layouts
import QtQuick.Window
import QtQuick.Controls
import FluentUI
FluScrollablePage{
title:"CheckBox"
leftPadding:10
rightPadding:10
bottomPadding:20
FluCheckBox{
Layout.topMargin: 20
}
FluCheckBox{
Layout.topMargin: 20
text:"Text"
}
}

59
example/T_ColorPicker.qml Normal file
View File

@ -0,0 +1,59 @@
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Window
import FluentUI
FluScrollablePage{
title:"ColorPicker"
leftPadding:10
rightPadding:10
bottomPadding:20
FluArea{
width: parent.width
height: 280
Layout.topMargin: 20
paddings: 10
ColumnLayout{
anchors{
verticalCenter: parent.verticalCenter
left:parent.left
}
FluText{
text:"此颜色组件是Github上的开源项目"
}
FluTextButton{
leftPadding: 0
rightPadding: 0
text:"https://github.com/rshest/qml-colorpicker"
onClicked: {
Qt.openUrlExternally(text)
}
}
FluColorView{
}
}
}
FluArea{
width: parent.width
Layout.topMargin: 20
height: 60
paddings: 10
RowLayout{
FluText{
text:"点击选择颜色->"
Layout.alignment: Qt.AlignVCenter
}
FluColorPicker{
}
}
}
}

View File

@ -1,13 +1,15 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import FluentUI 1.0 import FluentUI
FluScrollablePage{ FluScrollablePage{
title:"TimePicker" title:"TimePicker"
leftPadding:10
rightPadding:10
bottomPadding:20
FluArea{ FluArea{
width: parent.width width: parent.width

View File

@ -1,12 +1,15 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtGraphicalEffects 1.15 import FluentUI
import FluentUI 1.0
FluScrollablePage{ FluScrollablePage{
title:"Dialog" title:"Dialog"
leftPadding:10
rightPadding:10
bottomPadding:20
FluContentDialog{ FluContentDialog{
id:dialog id:dialog

View File

@ -1,12 +1,15 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtGraphicalEffects 1.15 import FluentUI
import FluentUI 1.0
FluScrollablePage{ FluScrollablePage{
title:"Expander" title:"Expander"
leftPadding:10
rightPadding:10
bottomPadding:20
FluExpander{ FluExpander{
headerText:"打开一个单选框" headerText:"打开一个单选框"
@ -42,13 +45,15 @@ FluScrollablePage{
headerText:"打开一个滑动文本框" headerText:"打开一个滑动文本框"
Item{ Item{
anchors.fill: parent anchors.fill: parent
ScrollView{ Flickable{
id:scrollview id:scrollview
width: parent.width width: parent.width
height: parent.height height: parent.height
contentWidth: parent.width contentWidth: width
contentHeight: text_info.height
ScrollBar.vertical: FluScrollBar {}
FluText{ FluText{
id:test id:text_info
width: scrollview.width width: scrollview.width
wrapMode: Text.WrapAnywhere wrapMode: Text.WrapAnywhere
padding: 14 padding: 14

285
example/T_Home.qml Normal file
View File

@ -0,0 +1,285 @@
import QtQuick
import QtQuick.Layouts
import QtQuick.Window
import QtQuick.Controls
import "qrc:///global/"
import FluentUI
FluScrollablePage{
leftPadding:10
rightPadding:0
bottomPadding:20
ListModel{
id:model_header
ListElement{
icon:"qrc:/res/image/ic_home_github.png"
title:"FluentUI GitHub"
desc:"The latest FluentUI controls and styles for your applications."
url:"https://github.com/zhuzichu520/FluentUI"
}
}
Item{
Layout.fillWidth: true
height: 320
Image {
fillMode:Image.PreserveAspectCrop
anchors.fill: parent
verticalAlignment: Qt.AlignTop
source: "qrc:/res/image/bg_home_header.png"
}
Rectangle{
anchors.fill: parent
gradient: Gradient{
GradientStop { position: 0.8; color: FluTheme.dark ? Qt.rgba(0,0,0,0) : Qt.rgba(1,1,1,0) }
GradientStop { position: 1.0; color: FluTheme.dark ? Qt.rgba(0,0,0,1) : Qt.rgba(1,1,1,1) }
}
}
FluText{
text:"FluentUI Gallery"
fontStyle: FluText.TitleLarge
anchors{
top: parent.top
left: parent.left
topMargin: 20
leftMargin: 20
}
}
ListView{
anchors{
left: parent.left
right: parent.right
bottom: parent.bottom
}
orientation: ListView.Horizontal
height: 240
model: model_header
header: Item{height: 10;width: 10}
footer: Item{height: 10;width: 10}
ScrollBar.horizontal: FluScrollBar{
id: scrollbar_header
}
clip: false
delegate:Item{
width: 220
height: 240
FluArea{
radius: 8
width: 200
height: 220
anchors.centerIn: parent
Rectangle{
anchors.fill: parent
radius: 8
color:{
if(FluTheme.dark){
if(item_mouse.containsMouse){
return Qt.rgba(1,1,1,0.03)
}
return Qt.rgba(0,0,0,0)
}else{
if(item_mouse.containsMouse){
return Qt.rgba(0,0,0,0.03)
}
return Qt.rgba(0,0,0,0)
}
}
}
ColumnLayout{
Image {
Layout.topMargin: 20
Layout.leftMargin: 20
Layout.preferredWidth: 50
Layout.preferredHeight: 50
source: model.icon
}
FluText{
text: model.title
fontStyle: FluText.Body
Layout.topMargin: 20
Layout.leftMargin: 20
}
FluText{
text: model.desc
Layout.topMargin: 5
Layout.preferredWidth: 160
Layout.leftMargin: 20
color: FluColors.Grey120
font.pixelSize: 12
wrapMode: Text.WrapAnywhere
}
}
FluIcon{
iconSource: FluentIcons.OpenInNewWindow
iconSize: 15
anchors{
bottom: parent.bottom
right: parent.right
rightMargin: 10
bottomMargin: 10
}
}
MouseArea{
id:item_mouse
anchors.fill: parent
hoverEnabled: true
onWheel: {
if (wheel.angleDelta.y > 0) scrollbar_header.decrease()
else scrollbar_header.increase()
}
onClicked: {
Qt.openUrlExternally(model.url)
}
}
}
}
}
}
ListModel{
id:model_added
Component.onCompleted: {
append(ItemsOriginal.getRecentlyAddedData())
}
}
ListModel{
id:model_update
Component.onCompleted: {
append(ItemsOriginal.getRecentlyUpdatedData())
}
}
Component{
id:com_item
Item{
width: 320
height: 120
FluArea{
radius: 8
width: 300
height: 100
anchors.centerIn: parent
Rectangle{
anchors.fill: parent
radius: 8
color:{
if(FluTheme.dark){
if(item_mouse.containsMouse){
return Qt.rgba(1,1,1,0.03)
}
return Qt.rgba(0,0,0,0)
}else{
if(item_mouse.containsMouse){
return Qt.rgba(0,0,0,0.03)
}
return Qt.rgba(0,0,0,0)
}
}
}
Image{
id:item_icon
height: 40
width: 40
source: model.image
anchors{
left: parent.left
leftMargin: 20
verticalCenter: parent.verticalCenter
}
}
FluText{
id:item_title
text:model.title
fontStyle: FluText.BodyStrong
anchors{
left: item_icon.right
leftMargin: 20
top: item_icon.top
}
}
FluText{
id:item_desc
text:model.desc
color:FluColors.Grey120
wrapMode: Text.WrapAnywhere
elide: Text.ElideRight
fontStyle: FluText.Caption
maximumLineCount: 2
anchors{
left: item_title.left
right: parent.right
rightMargin: 20
top: item_title.bottom
topMargin: 5
}
}
Rectangle{
height: 12
width: 12
radius: 6
color: FluTheme.primaryColor.dark
anchors{
right: parent.right
top: parent.top
rightMargin: 14
topMargin: 14
}
}
MouseArea{
id:item_mouse
anchors.fill: parent
hoverEnabled: true
onClicked: {
ItemsOriginal.startPageByItem(model)
}
}
}
}
}
FluText{
text: "Recently added samples"
fontStyle: FluText.Title
Layout.topMargin: 20
Layout.leftMargin: 20
}
GridView{
Layout.fillWidth: true
implicitHeight: contentHeight
cellHeight: 120
cellWidth: 320
model:model_added
interactive: false
delegate: com_item
}
FluText{
text: "Recently updated samples"
fontStyle: FluText.Title
Layout.topMargin: 20
Layout.leftMargin: 20
}
GridView{
Layout.fillWidth: true
implicitHeight: contentHeight
cellHeight: 120
cellWidth: 320
interactive: false
model: model_update
delegate: com_item
}
}

View File

@ -1,12 +1,15 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtGraphicalEffects 1.15 import FluentUI
import FluentUI 1.0
FluScrollablePage{ FluScrollablePage{
title:"InfoBar" title:"InfoBar"
leftPadding:10
rightPadding:10
bottomPadding:20
FluButton{ FluButton{
text:"Info" text:"Info"

41
example/T_MediaPlayer.qml Normal file
View File

@ -0,0 +1,41 @@
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Window
import FluentUI
FluScrollablePage{
title:"MediaPlayer"
leftPadding:10
rightPadding:10
bottomPadding:20
onVisibleChanged: {
if(visible){
player.play()
}else{
player.pause()
}
}
FluArea{
width: parent.width
height: 320
Layout.topMargin: 20
paddings: 10
ColumnLayout{
anchors{
verticalCenter: parent.verticalCenter
left:parent.left
}
FluMediaPlayer{
id:player
// source:"http://mirror.aarnet.edu.au/pub/TED-talks/911Mothers_2010W-480p.mp4"
source:"http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"
// source:"http://video.chinanews.com/flv/2019/04/23/400/111773_web.mp4"
}
}
}
}

View File

@ -1,18 +1,19 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtGraphicalEffects 1.15 import FluentUI
import FluentUI 1.0
FluScrollablePage{ FluScrollablePage{
title:"Menu" title:"Menu"
leftPadding:10
rightPadding:10
bottomPadding:20
FluButton{ FluButton{
text:"左击菜单" text:"左击菜单"
Layout.topMargin: 20 Layout.topMargin: 20
Layout.leftMargin: 15
onClicked:{ onClicked:{
menu.popup() menu.popup()
} }
@ -22,7 +23,6 @@ FluScrollablePage{
FluButton{ FluButton{
text:"右击菜单" text:"右击菜单"
Layout.topMargin: 20 Layout.topMargin: 20
Layout.leftMargin: 15
onClicked: { onClicked: {
showSuccess("请按鼠标右击") showSuccess("请按鼠标右击")
} }

View File

@ -1,12 +1,15 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Controls 2.15 import QtQuick.Controls
import FluentUI 1.0 import FluentUI
FluScrollablePage{ FluScrollablePage{
title:"MultiWindow" title:"MultiWindow"
leftPadding:10
rightPadding:10
bottomPadding:20
property string password: "" property string password: ""

View File

@ -1,12 +1,15 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtGraphicalEffects 1.15 import FluentUI
import FluentUI 1.0
FluScrollablePage{ FluScrollablePage{
title:"Progress" title:"Progress"
leftPadding:10
rightPadding:10
bottomPadding:20
FluProgressBar{ FluProgressBar{
Layout.topMargin: 20 Layout.topMargin: 20

View File

@ -1,12 +1,15 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Window 2.15 import QtQuick.Window
import QtGraphicalEffects 1.15 import FluentUI
import FluentUI 1.0
FluScrollablePage{ FluScrollablePage{
title:"Rectangle" title:"Rectangle"
leftPadding:10
rightPadding:10
bottomPadding:20
RowLayout{ RowLayout{
Layout.topMargin: 20 Layout.topMargin: 20
@ -49,7 +52,7 @@ FluScrollablePage{
} }
FluText{ FluText{
text:"配合图片使用" text:"配合图片使用"
fontStyle: FluText.Subtitle fontStyle: FluText.SubTitle
Layout.topMargin: 20 Layout.topMargin: 20
} }
RowLayout{ RowLayout{

View File

@ -1,23 +1,26 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtGraphicalEffects 1.15 import FluentUI
import FluentUI 1.0
FluScrollablePage{ FluScrollablePage{
title:"Slider" title:"Slider"
leftPadding:10
rightPadding:10
bottomPadding:20
FluSlider{ FluSlider{
Layout.topMargin: 20 Layout.topMargin: 20
Layout.leftMargin: 15
value: 50 value: 50
Layout.leftMargin: 10
} }
FluSlider{ FluSlider{
orientation:FluSlider.Vertical vertical:true
Layout.topMargin: 20 Layout.topMargin: 20
Layout.leftMargin: 15 Layout.leftMargin: 10
Layout.bottomMargin: 20
value: 50 value: 50
} }
} }

113
example/T_TabView.qml Normal file
View File

@ -0,0 +1,113 @@
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Window
import FluentUI
FluScrollablePage{
title:"TabView"
leftPadding:10
rightPadding:10
bottomPadding:20
property var colors : [FluColors.Yellow,FluColors.Orange,FluColors.Red,FluColors.Magenta,FluColors.Purple,FluColors.Blue,FluColors.Teal,FluColors.Green]
Component{
id:com_page
Rectangle{
anchors.fill: parent
color: argument
}
}
function newTab(){
tab_view.appendTab("qrc:/res/image/favicon.ico","Document "+tab_view.count(),com_page,colors[Math.floor(Math.random() * 8)].dark)
}
Component.onCompleted: {
newTab()
newTab()
newTab()
}
FluArea{
width: parent.width
Layout.topMargin: 20
height: 50
paddings: 10
RowLayout{
spacing: 14
FluDropDownButton{
id:btn_tab_width_behavior
Layout.preferredWidth: 140
text:"Equal"
items:[
FluMenuItem{
text:"Equal"
onClicked: {
btn_tab_width_behavior.text = text
tab_view.tabWidthBehavior = FluTabView.Equal
}
},
FluMenuItem{
text:"SizeToContent"
onClicked: {
btn_tab_width_behavior.text = text
tab_view.tabWidthBehavior = FluTabView.SizeToContent
}
},
FluMenuItem{
text:"Compact"
onClicked: {
btn_tab_width_behavior.text = text
tab_view.tabWidthBehavior = FluTabView.Compact
}
}
]
}
FluDropDownButton{
id:btn_close_button_visibility
text:"Always"
Layout.preferredWidth: 120
items:[
FluMenuItem{
text:"Nerver"
onClicked: {
btn_close_button_visibility.text = text
tab_view.closeButtonVisibility = FluTabView.Nerver
}
},
FluMenuItem{
text:"Always"
onClicked: {
btn_close_button_visibility.text = text
tab_view.closeButtonVisibility = FluTabView.Always
}
},
FluMenuItem{
text:"OnHover"
onClicked: {
btn_close_button_visibility.text = text
tab_view.closeButtonVisibility = FluTabView.OnHover
}
}
]
}
}
}
FluArea{
width: parent.width
Layout.topMargin: 5
height: 400
paddings: 10
FluTabView{
id:tab_view
onNewPressed:{
newTab()
}
}
}
}

View File

@ -1,13 +1,15 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtGraphicalEffects 1.15 import FluentUI
import FluentUI 1.0
FluScrollablePage{ FluScrollablePage{
title:"TextBox" title:"TextBox"
leftPadding:10
rightPadding:10
bottomPadding:20
FluTextBox{ FluTextBox{
Layout.topMargin: 20 Layout.topMargin: 20
@ -23,7 +25,7 @@ FluScrollablePage{
} }
FluAutoSuggestBox{ FluAutoSuggestBox{
Layout.topMargin: 20 Layout.topMargin: 20
values:generateRandomNames(100) items:generateRandomNames(100)
placeholderText: "AutoSuggestBox" placeholderText: "AutoSuggestBox"
Layout.preferredWidth: 300 Layout.preferredWidth: 300
disabled:toggle_switch.selected disabled:toggle_switch.selected
@ -49,7 +51,7 @@ FluScrollablePage{
} }
for (let i = 0; i < numNames; i++) { for (let i = 0; i < numNames; i++) {
const name = generateRandomName(); const name = generateRandomName();
names.push(name); names.push({title:name});
} }
return names; return names;
} }

View File

@ -1,29 +1,31 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtGraphicalEffects 1.15 import FluentUI
import FluentUI 1.0
FluScrollablePage{ FluScrollablePage{
title:"Theme" title:"Theme"
leftPadding:10
rightPadding:10
bottomPadding:20
RowLayout{ RowLayout{
Layout.topMargin: 20 Layout.topMargin: 20
Repeater{ Repeater{
model: [FluColors.Yellow,FluColors.Orange,FluColors.Red,FluColors.Magenta,FluColors.Purple,FluColors.Blue,FluColors.Teal,FluColors.Green] model: [FluColors.Yellow,FluColors.Orange,FluColors.Red,FluColors.Magenta,FluColors.Purple,FluColors.Blue,FluColors.Teal,FluColors.Green]
delegate: Rectangle{ delegate: FluRectangle{
width: 42 width: 42
height: 42 height: 42
radius: 4 radius: [4,4,4,4]
color: mouse_item.containsMouse ? Qt.lighter(modelData.normal,1.1) : modelData.normal color: mouse_item.containsMouse ? Qt.lighter(modelData.normal,1.1) : modelData.normal
FluIcon { FluIcon {
anchors.centerIn: parent anchors.centerIn: parent
iconSource: FluentIcons.AcceptMedium iconSource: FluentIcons.AcceptMedium
iconSize: 15 iconSize: 15
visible: modelData === FluTheme.primaryColor visible: modelData === FluTheme.primaryColor
color: FluTheme.isDark ? Qt.rgba(0,0,0,1) : Qt.rgba(1,1,1,1) color: FluTheme.dark ? Qt.rgba(0,0,0,1) : Qt.rgba(1,1,1,1)
} }
MouseArea{ MouseArea{
id:mouse_item id:mouse_item
@ -41,19 +43,9 @@ FluScrollablePage{
Layout.topMargin: 20 Layout.topMargin: 20
} }
FluToggleSwitch{ FluToggleSwitch{
selected: FluTheme.isDark selected: FluTheme.dark
clickFunc:function(){ clickFunc:function(){
FluTheme.isDark = !FluTheme.isDark FluTheme.dark = !FluTheme.dark
}
}
FluText{
text:"无边框"
Layout.topMargin: 20
}
FluToggleSwitch{
selected: FluTheme.isFrameless
clickFunc:function(){
FluTheme.isFrameless = !FluTheme.isFrameless
} }
} }
FluText{ FluText{
@ -61,9 +53,9 @@ FluScrollablePage{
Layout.topMargin: 20 Layout.topMargin: 20
} }
FluToggleSwitch{ FluToggleSwitch{
selected: FluTheme.isNativeText selected: FluTheme.nativeText
clickFunc:function(){ clickFunc:function(){
FluTheme.isNativeText = !FluTheme.isNativeText FluTheme.nativeText = !FluTheme.nativeText
} }
} }
} }

View File

@ -1,13 +1,15 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import FluentUI 1.0 import FluentUI
FluScrollablePage{ FluScrollablePage{
title:"TimePicker" title:"TimePicker"
leftPadding:10
rightPadding:10
bottomPadding:20
FluArea{ FluArea{
width: parent.width width: parent.width

View File

@ -1,19 +1,21 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtGraphicalEffects 1.15 import FluentUI
import FluentUI 1.0
FluScrollablePage{ FluScrollablePage{
title:"ToggleSwitch" title:"ToggleSwitch"
leftPadding:10
rightPadding:10
bottomPadding:20
FluToggleSwitch{ FluToggleSwitch{
Layout.topMargin: 20 Layout.topMargin: 20
} }
FluToggleSwitch{ FluToggleSwitch{
Layout.topMargin: 20 Layout.topMargin: 20
text:"Disabled" text:"Text"
} }
} }

View File

@ -1,13 +1,15 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtGraphicalEffects 1.15 import FluentUI
import FluentUI 1.0
FluScrollablePage{ FluScrollablePage{
title:"Tooltip" title:"Tooltip"
leftPadding:10
rightPadding:10
bottomPadding:20
FluText{ FluText{
Layout.topMargin: 20 Layout.topMargin: 20

View File

@ -1,12 +1,15 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Controls 2.15 import QtQuick.Controls
import FluentUI 1.0 import FluentUI
FluContentPage { FluContentPage {
title:"TreeView" title:"TreeView"
leftPadding:10
rightPadding:10
bottomPadding:20
function randomName() { function randomName() {
var names = ["张三", "李四", "王五", "赵六", "钱七", "孙八", "周九", "吴十"] var names = ["张三", "李四", "王五", "赵六", "钱七", "孙八", "周九", "吴十"]

View File

@ -1,12 +1,19 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Controls 2.15 import QtQuick.Controls
import FluentUI 1.0 import FluentUI
FluContentPage { FluContentPage {
title: "Typography" title: "Typography"
property int textSize: 13 property int textSize: FluTheme.textSize
leftPadding:10
rightPadding:10
bottomPadding:20
Component.onCompleted: {
slider.seek(0)
}
ScrollView{ ScrollView{
clip: true clip: true
@ -37,13 +44,7 @@ FluContentPage {
text:"Subtitle" text:"Subtitle"
padding: 0 padding: 0
pixelSize: textSize pixelSize: textSize
fontStyle: FluText.Subtitle fontStyle: FluText.SubTitle
}
FluText{
text:"Body Large"
padding: 0
pixelSize: textSize
fontStyle: FluText.BodyLarge
} }
FluText{ FluText{
text:"Body Strong" text:"Body Strong"
@ -68,17 +69,17 @@ FluContentPage {
FluSlider{ FluSlider{
orientation:FluSlider.Vertical id:slider
vertical:true
anchors{ anchors{
right: parent.right right: parent.right
rightMargin: 30 rightMargin: 45
top: parent.top top: parent.top
topMargin: 30 topMargin: 30
} }
onValueChanged:{ onValueChanged:{
textSize = value/100*16+8 textSize = value/100*6+FluTheme.textSize
} }
value: 31
} }
} }

View File

@ -1,8 +1,10 @@
QT += quick concurrent network QT += quick quickcontrols2 concurrent network multimedia
CONFIG += c++11 CONFIG += c++11
DEFINES += QT_DEPRECATED_WARNINGS QT_NO_WARNING_OUTPUT DEFINES += QT_DEPRECATED_WARNINGS QT_NO_WARNING_OUTPUT
HEADERS += \
ChatController.h
SOURCES += \ SOURCES += \
ChatController.cpp \ ChatController.cpp \
main.cpp main.cpp
@ -11,15 +13,9 @@ RESOURCES += qml.qrc
RC_ICONS = favicon.ico RC_ICONS = favicon.ico
#qnx: target.path = /tmp/$${TARGET}/bin
#else: unix:!android: target.path = /opt/$${TARGET}/bin
#!isEmpty(target.path): INSTALLS += target
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH = QML_IMPORT_PATH =
# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH = QML_DESIGNER_IMPORT_PATH =
CONFIG(debug,debug|release) { CONFIG(debug,debug|release) {
DESTDIR = $$absolute_path($${_PRO_FILE_PWD_}/../bin/debug) DESTDIR = $$absolute_path($${_PRO_FILE_PWD_}/../bin/debug)
} else { } else {
@ -27,7 +23,6 @@ CONFIG(debug,debug|release) {
} }
win32 { win32 {
contains(QT_ARCH, i386) { contains(QT_ARCH, i386) {
COPYDLL = $$absolute_path($${_PRO_FILE_PWD_}/../third/Win_x86/*.dll) $$DESTDIR COPYDLL = $$absolute_path($${_PRO_FILE_PWD_}/../third/Win_x86/*.dll) $$DESTDIR
contains(QMAKE_CC, cl) { contains(QMAKE_CC, cl) {
@ -43,9 +38,12 @@ contains(QT_ARCH, i386) {
QMAKE_PRE_LINK += $$QMAKE_COPY $$COPYDLL QMAKE_PRE_LINK += $$QMAKE_COPY $$COPYDLL
} }
} }
} }
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
HEADERS += \ mac: {
ChatController.h QMAKE_INFO_PLIST = Info.plist
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 KiB

After

Width:  |  Height:  |  Size: 116 KiB

View File

@ -0,0 +1,21 @@
pragma Singleton
import QtQuick
import FluentUI
FluObject{
id:footer_items
FluPaneItemSeparator{}
FluPaneItem{
title:"意见反馈"
onTap:{
Qt.openUrlExternally("https://github.com/zhuzichu520/FluentUI/issues/new")
}
}
FluPaneItem{
title:"关于"
onTap:{
FluApp.navigate("/about")
}
}
}

View File

@ -0,0 +1,286 @@
pragma Singleton
import QtQuick
import FluentUI
FluObject{
property var navigationView
FluPaneItem{
title:"Home"
icon:FluentIcons.Home
onTap:{
navigationView.push("qrc:/T_Home.qml")
}
}
FluPaneItemHeader{
title:"Inputs"
}
FluPaneItem{
title:"Buttons"
image:"qrc:/res/image/control/Button.png"
recentlyUpdated:true
desc:"A control that responds to user input and raisesa Click event."
onTap:{
navigationView.push("qrc:/T_Buttons.qml")
}
}
FluPaneItem{
title:"Slider"
image:"qrc:/res/image/control/Slider.png"
recentlyUpdated:true
desc:"A control that lets the user select from a rangeof values by moving a Thumb control along atrack."
onTap:{
navigationView.push("qrc:/T_Slider.qml")
}
}
FluPaneItem{
title:"CheckBox"
image:"qrc:/res/image/control/Checkbox.png"
recentlyUpdated:true
desc:"A control that a user can select or clear."
onTap:{
navigationView.push("qrc:/T_CheckBox.qml")
}
}
FluPaneItem{
title:"ToggleSwitch"
onTap:{
navigationView.push("qrc:/T_ToggleSwitch.qml")
}
}
FluPaneItemHeader{
title:"Form"
}
FluPaneItem{
title:"TextBox"
onTap:{
navigationView.push("qrc:/T_TextBox.qml")
}
}
FluPaneItem{
title:"TimePicker"
onTap:{
navigationView.push("qrc:/T_TimePicker.qml")
}
}
FluPaneItem{
title:"DatePicker"
onTap:{
navigationView.push("qrc:/T_DatePicker.qml")
}
}
FluPaneItem{
title:"CalendarPicker"
onTap:{
navigationView.push("qrc:/T_CalendarPicker.qml")
}
}
FluPaneItem{
title:"ColorPicker"
onTap:{
navigationView.push("qrc:/T_ColorPicker.qml")
}
}
FluPaneItemHeader{
title:"Surface"
}
FluPaneItem{
title:"InfoBar"
image:"qrc:/res/image/control/InfoBar.png"
recentlyUpdated:true
desc:"An inline message to display app-wide statuschange information."
onTap:{
navigationView.push("qrc:/T_InfoBar.qml")
}
}
FluPaneItem{
title:"Progress"
onTap:{
navigationView.push("qrc:/T_Progress.qml")
}
}
FluPaneItem{
title:"Badge"
onTap:{
navigationView.push("qrc:/T_Badge.qml")
}
}
FluPaneItem{
title:"Rectangle"
onTap:{
navigationView.push("qrc:/T_Rectangle.qml")
}
}
FluPaneItem{
title:"Carousel"
onTap:{
navigationView.push("qrc:/T_Carousel.qml")
}
}
FluPaneItem{
title:"Expander"
onTap:{
navigationView.push("qrc:/T_Expander.qml")
}
}
FluPaneItemHeader{
title:"Popus"
}
FluPaneItem{
title:"Dialog"
onTap:{
navigationView.push("qrc:/T_Dialog.qml")
}
}
FluPaneItem{
title:"Tooltip"
onTap:{
navigationView.push("qrc:/T_Tooltip.qml")
}
}
FluPaneItem{
title:"Menu"
onTap:{
navigationView.push("qrc:/T_Menu.qml")
}
}
FluPaneItemHeader{
title:"Navigation"
}
FluPaneItem{
title:"TabView"
image:"qrc:/res/image/control/TabView.png"
recentlyAdded:true
desc:"A control that displays a collection of tabs thatcan be used to display several documents."
onTap:{
navigationView.push("qrc:/T_TabView.qml")
}
}
FluPaneItem{
title:"TreeView"
onTap:{
navigationView.push("qrc:/T_TreeView.qml")
}
}
FluPaneItem{
title:"MultiWindow"
onTap:{
navigationView.push("qrc:/T_MultiWindow.qml")
}
}
FluPaneItemHeader{
title:"Theming"
}
FluPaneItem{
title:"Theme"
onTap:{
navigationView.push("qrc:/T_Theme.qml")
}
}
FluPaneItem{
title:"Awesome"
onTap:{
navigationView.push("qrc:/T_Awesome.qml")
}
}
FluPaneItem{
title:"Typography"
onTap:{
navigationView.push("qrc:/T_Typography.qml")
}
}
FluPaneItemHeader{
title:"Media"
}
FluPaneItem{
title:"MediaPlayer"
image:"qrc:/res/image/control/MediaPlayerElement.png"
recentlyAdded:true
desc:"A control to display video and image content."
onTap:{
navigationView.push("qrc:/T_MediaPlayer.qml")
}
}
function getRecentlyAddedData(){
var arr = []
for(var i=0;i<children.length;i++){
var item = children[i]
if(item instanceof FluPaneItem && item.recentlyAdded){
arr.push(item)
}
}
return arr
}
function getRecentlyUpdatedData(){
var arr = []
for(var i=0;i<children.length;i++){
var item = children[i]
if(item instanceof FluPaneItem && item.recentlyUpdated){
arr.push(item)
}
}
return arr
}
function getSearchData(){
var arr = []
for(var i=0;i<children.length;i++){
var item = children[i]
if(item instanceof FluPaneItem){
arr.push({title:item.title,key:item.key})
}
}
return arr
}
function startPageByItem(item){
for(var i=0;i<children.length;i++){
if(children[i].key === item.key){
if(navigationView.getCurrentIndex() === i){
return
}
children[i].tap()
navigationView.setCurrentIndex(i)
return
}
}
}
}

2
example/global/qmldir Normal file
View File

@ -0,0 +1,2 @@
singleton ItemsOriginal 1.0 ItemsOriginal.qml
singleton ItemsFooter 1.0 ItemsFooter.qml

View File

@ -3,12 +3,13 @@
#include <QQmlContext> #include <QQmlContext>
#include <QDir> #include <QDir>
#include <QQuickWindow> #include <QQuickWindow>
#include <QQuickStyle>
#include <QProcess> #include <QProcess>
#include "ChatController.h" #include "ChatController.h"
QMap<QString, QVariant> properties(){ QMap<QString, QVariant> properties(){
QMap<QString, QVariant> map; QMap<QString, QVariant> map;
// map["installHelper"] = QVariant::fromValue(QVariant::fromValue(InstallHelper::getInstance())); // map["installHelper"] = QVariant::fromValue(QVariant::fromValue(InstallHelper::getInstance()));
return map; return map;
} }
@ -17,8 +18,8 @@ int main(int argc, char *argv[])
QCoreApplication::setOrganizationName("ZhuZiChu"); QCoreApplication::setOrganizationName("ZhuZiChu");
QCoreApplication::setOrganizationDomain("https://zhuzichu520.github.io"); QCoreApplication::setOrganizationDomain("https://zhuzichu520.github.io");
QCoreApplication::setApplicationName("FluentUI"); QCoreApplication::setApplicationName("FluentUI");
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); // QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software);
// QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software); QQuickStyle::setStyle("Basic");
QGuiApplication app(argc, argv); QGuiApplication app(argc, argv);
QQmlApplicationEngine engine; QQmlApplicationEngine engine;

View File

@ -1,7 +1,7 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import FluentUI 1.0 import FluentUI
FluWindow { FluWindow {
@ -17,6 +17,7 @@ FluWindow {
FluAppBar{ FluAppBar{
id:appbar id:appbar
title:"关于" title:"关于"
width:parent.width
} }
ColumnLayout{ ColumnLayout{
@ -35,7 +36,7 @@ FluWindow {
fontStyle: FluText.Title fontStyle: FluText.Title
} }
FluText{ FluText{
text:"v1.1.2" text:"v1.1.6"
fontStyle: FluText.Body fontStyle: FluText.Body
Layout.alignment: Qt.AlignBottom Layout.alignment: Qt.AlignBottom
} }

View File

@ -1,9 +1,9 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Controls 2.15 import QtQuick.Controls
import FluentUI 1.0 import FluentUI
import Controller 1.0 import Controller
import QtQuick.Dialogs 1.3 import QtQuick.Dialogs
FluWindow { FluWindow {
@ -43,6 +43,7 @@ FluWindow {
FluAppBar{ FluAppBar{
id:appbar id:appbar
title:"ChatGPT" title:"ChatGPT"
width:parent.width
} }
Component{ Component{
@ -57,7 +58,7 @@ FluWindow {
selectedTextColor: Qt.rgba(51,153,255,1) selectedTextColor: Qt.rgba(51,153,255,1)
color:FluColors.Black color:FluColors.Black
selectionColor: { selectionColor: {
if(FluTheme.isDark){ if(FluTheme.dark){
return FluTheme.primaryColor.lighter return FluTheme.primaryColor.lighter
}else{ }else{
return FluTheme.primaryColor.dark return FluTheme.primaryColor.dark
@ -82,7 +83,7 @@ FluWindow {
bottom: layout_bottom.top bottom: layout_bottom.top
margins: 10 margins: 10
} }
color: FluTheme.isDark ? Qt.rgba(39/255,39/255,39/255,1) : Qt.rgba(245/255,245/255,245/255,1) color: FluTheme.dark ? Qt.rgba(39/255,39/255,39/255,1) : Qt.rgba(245/255,245/255,245/255,1)
ListView{ ListView{
id:list_message id:list_message
anchors.fill: parent anchors.fill: parent

View File

@ -1,6 +1,6 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import FluentUI 1.0 import FluentUI
FluWindow { FluWindow {
@ -17,13 +17,14 @@ FluWindow {
onInitArgument: onInitArgument:
(argument)=>{ (argument)=>{
textbox_uesrname.text = argument.username textbox_uesrname.updateText(argument.username)
textbox_password.focus = true textbox_password.focus = true
} }
FluAppBar{ FluAppBar{
id:appbar id:appbar
title:"登录" title:"登录"
width:parent.width
} }
ColumnLayout{ ColumnLayout{
@ -33,10 +34,9 @@ FluWindow {
verticalCenter: parent.verticalCenter verticalCenter: parent.verticalCenter
} }
FluAutoSuggestBox{ FluAutoSuggestBox{
id:textbox_uesrname id:textbox_uesrname
values:["Admin","User"] items:[{title:"Admin"},{title:"User"}]
placeholderText: "请输入账号" placeholderText: "请输入账号"
Layout.preferredWidth: 260 Layout.preferredWidth: 260
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter

View File

@ -1,272 +1,50 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtGraphicalEffects 1.15 import "qrc:///global/"
import FluentUI
import FluentUI 1.0
FluWindow { FluWindow {
id:rootwindow id:rootwindow
width: 860 width: 1000
height: 600 height: 640
title: "FluentUI" title: "FluentUI"
minimumWidth: 500 minimumWidth: 520
minimumHeight: 400 minimumHeight: 460
FluAppBar{ FluAppBar{
id:appbar id:appbar
title: "FluentUI" z:10
} showDark: true
width:parent.width
FluObject{
id:original_items
FluPaneItemHeader{
title:"Inputs"
}
FluPaneItem{
title:"Buttons"
onTap:{
nav_view.push("qrc:/T_Buttons.qml")
}
}
FluPaneItem{
title:"Slider"
onTap:{
nav_view.push("qrc:/T_Slider.qml")
}
}
FluPaneItem{
title:"ToggleSwitch"
onTap:{
nav_view.push("qrc:/T_ToggleSwitch.qml")
}
}
FluPaneItemHeader{
title:"Form"
}
FluPaneItem{
title:"TextBox"
onTap:{
nav_view.push("qrc:/T_TextBox.qml")
}
}
FluPaneItem{
title:"TimePicker"
onTap:{
nav_view.push("qrc:/T_TimePicker.qml")
}
}
FluPaneItem{
title:"DatePicker"
onTap:{
nav_view.push("qrc:/T_DatePicker.qml")
}
}
FluPaneItem{
title:"CalendarPicker"
onTap:{
nav_view.push("qrc:/T_CalendarPicker.qml")
}
}
FluPaneItemHeader{
title:"Surface"
}
FluPaneItem{
title:"InfoBar"
onTap:{
nav_view.push("qrc:/T_InfoBar.qml")
}
}
FluPaneItem{
title:"Progress"
onTap:{
nav_view.push("qrc:/T_Progress.qml")
}
}
FluPaneItem{
title:"Calendar"
onTap:{
nav_view.push("qrc:/T_Calendar.qml")
}
}
FluPaneItem{
title:"Badge"
onTap:{
nav_view.push("qrc:/T_Badge.qml")
}
}
FluPaneItem{
title:"Rectangle"
onTap:{
nav_view.push("qrc:/T_Rectangle.qml")
}
}
FluPaneItem{
title:"Carousel"
onTap:{
nav_view.push("qrc:/T_Carousel.qml")
}
}
FluPaneItem{
title:"Expander"
onTap:{
nav_view.push("qrc:/T_Expander.qml")
}
}
FluPaneItemHeader{
title:"Popus"
}
FluPaneItem{
title:"Dialog"
onTap:{
nav_view.push("qrc:/T_Dialog.qml")
}
}
FluPaneItem{
title:"Tooltip"
onTap:{
nav_view.push("qrc:/T_Tooltip.qml")
}
}
FluPaneItem{
title:"Menu"
onTap:{
nav_view.push("qrc:/T_Menu.qml")
}
}
FluPaneItemHeader{
title:"Navigation"
}
FluPaneItem{
title:"TreeView"
onTap:{
nav_view.push("qrc:/T_TreeView.qml")
}
}
FluPaneItem{
title:"MultiWindow"
onTap:{
nav_view.push("qrc:/T_MultiWindow.qml")
}
}
FluPaneItemHeader{
title:"Theming"
}
FluPaneItem{
title:"Theme"
onTap:{
nav_view.push("qrc:/T_Theme.qml")
}
}
FluPaneItem{
title:"Awesome"
onTap:{
nav_view.push("qrc:/T_Awesome.qml")
}
}
FluPaneItem{
title:"Typography"
onTap:{
nav_view.push("qrc:/T_Typography.qml")
}
}
}
FluObject{
id:footer_items
FluPaneItemSeparator{}
FluPaneItem{
title:"意见反馈"
onTap:{
Qt.openUrlExternally("https://github.com/zhuzichu520/FluentUI/issues/new")
}
}
FluPaneItem{
title:"关于"
onTap:{
FluApp.navigate("/about")
}
}
} }
FluNavigationView{ FluNavigationView{
id:nav_view id:nav_view
anchors{ anchors.fill: parent
top: appbar.bottom items: ItemsOriginal
left: parent.left footerItems:ItemsFooter
right: parent.right logo: "qrc:/res/image/favicon.ico"
bottom: parent.bottom z: 11
title:"FluentUI"
autoSuggestBox:FluAutoSuggestBox{
width: 280
anchors.centerIn: parent
iconSource: FluentIcons.Zoom
items: ItemsOriginal.getSearchData()
placeholderText: "查找"
onItemClicked:
(data)=>{
ItemsOriginal.startPageByItem(data)
}
} }
items:original_items
footerItems:footer_items
actions:[
Image {
width: 30
height: 30
Layout.preferredWidth: 30
Layout.preferredHeight: 30
sourceSize: Qt.size(60,60)
source: "qrc:/res/image/logo_openai.png"
Layout.rightMargin: 5
MouseArea{
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: {
FluApp.navigate("/chat")
}
}
},
FluText{
text:"夜间模式"
fontStyle: FluText.Body
},
FluToggleSwitch{
selected: FluTheme.isDark
clickFunc:function(){
FluTheme.isDark = !FluTheme.isDark
}
}
]
Component.onCompleted: { Component.onCompleted: {
nav_view.setCurrentIndex(1) ItemsOriginal.navigationView = nav_view
nav_view.push("qrc:/T_Buttons.qml") nav_view.setCurrentIndex(0)
nav_view.push("qrc:/T_Home.qml")
} }
} }
} }

View File

@ -34,7 +34,6 @@
<file>T_DatePicker.qml</file> <file>T_DatePicker.qml</file>
<file>T_MultiWindow.qml</file> <file>T_MultiWindow.qml</file>
<file>T_Menu.qml</file> <file>T_Menu.qml</file>
<file>T_Carousel.qml</file>
<file>res/image/banner_1.jpg</file> <file>res/image/banner_1.jpg</file>
<file>res/image/banner_2.jpg</file> <file>res/image/banner_2.jpg</file>
<file>res/image/banner_3.jpg</file> <file>res/image/banner_3.jpg</file>
@ -42,7 +41,116 @@
<file>page/ChatPage.qml</file> <file>page/ChatPage.qml</file>
<file>T_Tooltip.qml</file> <file>T_Tooltip.qml</file>
<file>T_Badge.qml</file> <file>T_Badge.qml</file>
<file>T_Calendar.qml</file>
<file>T_CalendarPicker.qml</file> <file>T_CalendarPicker.qml</file>
<file>T_ColorPicker.qml</file>
<file>T_Carousel.qml</file>
<file>T_MediaPlayer.qml</file>
<file>T_TabView.qml</file>
<file>res/image/favicon.ico</file>
<file>T_Home.qml</file>
<file>res/image/bg_home_header.png</file>
<file>res/image/ic_home_github.png</file>
<file>res/image/control/Acrylic.png</file>
<file>res/image/control/AnimatedIcon.png</file>
<file>res/image/control/AnimatedVisualPlayer.png</file>
<file>res/image/control/AnimationInterop.png</file>
<file>res/image/control/AppBarButton.png</file>
<file>res/image/control/AppBarSeparator.png</file>
<file>res/image/control/AppBarToggleButton.png</file>
<file>res/image/control/AutomationProperties.png</file>
<file>res/image/control/AutoSuggestBox.png</file>
<file>res/image/control/Border.png</file>
<file>res/image/control/BreadcrumbBar.png</file>
<file>res/image/control/Button.png</file>
<file>res/image/control/CalendarDatePicker.png</file>
<file>res/image/control/CalendarView.png</file>
<file>res/image/control/Canvas.png</file>
<file>res/image/control/Checkbox.png</file>
<file>res/image/control/Clipboard.png</file>
<file>res/image/control/ColorPaletteResources.png</file>
<file>res/image/control/ColorPicker.png</file>
<file>res/image/control/ComboBox.png</file>
<file>res/image/control/CommandBar.png</file>
<file>res/image/control/CommandBarFlyout.png</file>
<file>res/image/control/CompactSizing.png</file>
<file>res/image/control/ConnectedAnimation.png</file>
<file>res/image/control/ContentDialog.png</file>
<file>res/image/control/CreateMultipleWindows.png</file>
<file>res/image/control/DataGrid.png</file>
<file>res/image/control/DatePicker.png</file>
<file>res/image/control/DropDownButton.png</file>
<file>res/image/control/EasingFunction.png</file>
<file>res/image/control/Expander.png</file>
<file>res/image/control/FilePicker.png</file>
<file>res/image/control/FlipView.png</file>
<file>res/image/control/Flyout.png</file>
<file>res/image/control/Grid.png</file>
<file>res/image/control/GridView.png</file>
<file>res/image/control/HyperlinkButton.png</file>
<file>res/image/control/IconElement.png</file>
<file>res/image/control/Image.png</file>
<file>res/image/control/ImplicitTransition.png</file>
<file>res/image/control/InfoBadge.png</file>
<file>res/image/control/InfoBar.png</file>
<file>res/image/control/InkCanvas.png</file>
<file>res/image/control/InkToolbar.png</file>
<file>res/image/control/InputValidation.png</file>
<file>res/image/control/ItemsRepeater.png</file>
<file>res/image/control/Line.png</file>
<file>res/image/control/ListBox.png</file>
<file>res/image/control/ListView.png</file>
<file>res/image/control/MediaPlayerElement.png</file>
<file>res/image/control/MenuBar.png</file>
<file>res/image/control/MenuFlyout.png</file>
<file>res/image/control/NavigationView.png</file>
<file>res/image/control/NumberBox.png</file>
<file>res/image/control/PageTransition.png</file>
<file>res/image/control/ParallaxView.png</file>
<file>res/image/control/PasswordBox.png</file>
<file>res/image/control/PersonPicture.png</file>
<file>res/image/control/PipsPager.png</file>
<file>res/image/control/Pivot.png</file>
<file>res/image/control/ProgressBar.png</file>
<file>res/image/control/ProgressRing.png</file>
<file>res/image/control/PullToRefresh.png</file>
<file>res/image/control/RadialGradientBrush.png</file>
<file>res/image/control/RadioButton.png</file>
<file>res/image/control/RadioButtons.png</file>
<file>res/image/control/RatingControl.png</file>
<file>res/image/control/RelativePanel.png</file>
<file>res/image/control/RepeatButton.png</file>
<file>res/image/control/RevealFocus.png</file>
<file>res/image/control/RichEditBox.png</file>
<file>res/image/control/RichTextBlock.png</file>
<file>res/image/control/ScrollViewer.png</file>
<file>res/image/control/SemanticZoom.png</file>
<file>res/image/control/Shape.png</file>
<file>res/image/control/Slider.png</file>
<file>res/image/control/Sound.png</file>
<file>res/image/control/SplitButton.png</file>
<file>res/image/control/SplitView.png</file>
<file>res/image/control/StackPanel.png</file>
<file>res/image/control/StandardUICommand.png</file>
<file>res/image/control/SwipeControl.png</file>
<file>res/image/control/TabView.png</file>
<file>res/image/control/TeachingTip.png</file>
<file>res/image/control/TextBlock.png</file>
<file>res/image/control/TextBox.png</file>
<file>res/image/control/ThemeTransition.png</file>
<file>res/image/control/TimePicker.png</file>
<file>res/image/control/TitleBar.png</file>
<file>res/image/control/ToggleButton.png</file>
<file>res/image/control/ToggleSplitButton.png</file>
<file>res/image/control/ToggleSwitch.png</file>
<file>res/image/control/ToolTip.png</file>
<file>res/image/control/TreeView.png</file>
<file>res/image/control/VariableSizedWrapGrid.png</file>
<file>res/image/control/Viewbox.png</file>
<file>res/image/control/WebView.png</file>
<file>res/image/control/XamlUICommand.png</file>
<file>T_CheckBox.qml</file>
<file>global/ItemsOriginal.qml</file>
<file>global/qmldir</file>
<file>global/ItemsFooter.qml</file>
</qresource> </qresource>
</RCC> </RCC>

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Some files were not shown because too many files have changed in this diff Show More