Compare commits

...

2 Commits

Author SHA1 Message Date
朱子楚\zhuzi
d222cb640c update 2024-03-31 11:17:05 +08:00
朱子楚\zhuzi
0ab7f811e3 update 2024-03-31 10:59:15 +08:00
29 changed files with 1126 additions and 235 deletions

View File

@ -207,5 +207,7 @@
<file>res/template/src/zh_CN.ts.in</file>
<file>res/template/src/README.md.in</file>
<file>qml/global/GlobalModel.qml</file>
<file>qml/page/T_Sheet.qml</file>
<file>qml/page/T_GroupBox.qml</file>
</qresource>
</RCC>

View File

@ -188,322 +188,332 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="108"/>
<location filename="qml/global/ItemsOriginal.qml" line="114"/>
<source>PaneItem Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="115"/>
<location filename="qml/global/ItemsOriginal.qml" line="108"/>
<source>GroupBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="121"/>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="118"/>
<location filename="qml/global/ItemsOriginal.qml" line="124"/>
<source>TextBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="124"/>
<location filename="qml/global/ItemsOriginal.qml" line="130"/>
<source>TimePicker</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="130"/>
<location filename="qml/global/ItemsOriginal.qml" line="136"/>
<source>DatePicker</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="136"/>
<location filename="qml/global/ItemsOriginal.qml" line="142"/>
<source>CalendarPicker</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="142"/>
<location filename="qml/global/ItemsOriginal.qml" line="148"/>
<source>ColorPicker</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="148"/>
<location filename="qml/global/ItemsOriginal.qml" line="154"/>
<source>ShortcutPicker</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="156"/>
<location filename="qml/global/ItemsOriginal.qml" line="162"/>
<source>Surface</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="159"/>
<location filename="qml/global/ItemsOriginal.qml" line="165"/>
<source>InfoBar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="161"/>
<location filename="qml/global/ItemsOriginal.qml" line="167"/>
<source>An inline message to display app-wide statuschange information.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="166"/>
<location filename="qml/global/ItemsOriginal.qml" line="172"/>
<source>Progress</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="172"/>
<location filename="qml/global/ItemsOriginal.qml" line="178"/>
<source>RatingControl</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="178"/>
<location filename="qml/global/ItemsOriginal.qml" line="184"/>
<source>Badge</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="184"/>
<location filename="qml/global/ItemsOriginal.qml" line="190"/>
<source>Rectangle</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="190"/>
<location filename="qml/global/ItemsOriginal.qml" line="196"/>
<source>Clip</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="196"/>
<location filename="qml/global/ItemsOriginal.qml" line="202"/>
<source>Carousel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="202"/>
<location filename="qml/global/ItemsOriginal.qml" line="208"/>
<source>Expander</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="208"/>
<location filename="qml/global/ItemsOriginal.qml" line="214"/>
<source>Watermark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="216"/>
<location filename="qml/global/ItemsOriginal.qml" line="222"/>
<source>Layout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="219"/>
<location filename="qml/global/ItemsOriginal.qml" line="225"/>
<source>StaggeredLayout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="225"/>
<location filename="qml/global/ItemsOriginal.qml" line="231"/>
<source>SplitLayout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="231"/>
<location filename="qml/global/ItemsOriginal.qml" line="237"/>
<source>StatusLayout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="239"/>
<location filename="qml/global/ItemsOriginal.qml" line="245"/>
<source>Popus</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="242"/>
<location filename="qml/global/ItemsOriginal.qml" line="248"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="249"/>
<location filename="qml/global/ItemsOriginal.qml" line="255"/>
<source>ComboBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="263"/>
<location filename="qml/global/ItemsOriginal.qml" line="269"/>
<source>Tooltip</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="269"/>
<location filename="qml/global/ItemsOriginal.qml" line="275"/>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="277"/>
<location filename="qml/global/ItemsOriginal.qml" line="281"/>
<source>Sheet</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="289"/>
<source>Navigation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="280"/>
<location filename="qml/global/ItemsOriginal.qml" line="292"/>
<source>Pivot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="282"/>
<location filename="qml/global/ItemsOriginal.qml" line="294"/>
<source>Presents information from different sources in a tabbed view.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="287"/>
<location filename="qml/global/ItemsOriginal.qml" line="299"/>
<source>BreadcrumbBar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="293"/>
<location filename="qml/global/ItemsOriginal.qml" line="305"/>
<source>TabView</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="295"/>
<location filename="qml/global/ItemsOriginal.qml" line="307"/>
<source>A control that displays a collection of tabs thatcan be used to display several documents.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="300"/>
<location filename="qml/global/ItemsOriginal.qml" line="312"/>
<source>TreeView</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="306"/>
<location filename="qml/global/ItemsOriginal.qml" line="318"/>
<source>TableView</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="308"/>
<location filename="qml/global/ItemsOriginal.qml" line="320"/>
<source>The TableView control provides a flexible way to display a collection of data in rows and columns</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="313"/>
<location filename="qml/global/ItemsOriginal.qml" line="325"/>
<source>Pagination</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="319"/>
<location filename="qml/global/ItemsOriginal.qml" line="331"/>
<source>MultiWindow</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="325"/>
<location filename="qml/global/ItemsOriginal.qml" line="337"/>
<source>FlipView</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="327"/>
<location filename="qml/global/ItemsOriginal.qml" line="339"/>
<source>Presents a collection of items that the user canflip through, one item at a time.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="334"/>
<location filename="qml/global/ItemsOriginal.qml" line="346"/>
<source>Theming</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="337"/>
<location filename="qml/global/ItemsOriginal.qml" line="349"/>
<source>Acrylic</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="343"/>
<location filename="qml/global/ItemsOriginal.qml" line="355"/>
<source>Theme</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="349"/>
<location filename="qml/global/ItemsOriginal.qml" line="361"/>
<source>Typography</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="355"/>
<location filename="qml/global/ItemsOriginal.qml" line="367"/>
<source>Awesome</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="363"/>
<location filename="qml/global/ItemsOriginal.qml" line="375"/>
<source>Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="366"/>
<location filename="qml/global/ItemsOriginal.qml" line="378"/>
<source>Bar Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="372"/>
<location filename="qml/global/ItemsOriginal.qml" line="384"/>
<source>Line Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="378"/>
<location filename="qml/global/ItemsOriginal.qml" line="390"/>
<source>Pie Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="384"/>
<location filename="qml/global/ItemsOriginal.qml" line="396"/>
<source>Polar Area Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="390"/>
<location filename="qml/global/ItemsOriginal.qml" line="402"/>
<source>Bubble Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="396"/>
<location filename="qml/global/ItemsOriginal.qml" line="408"/>
<source>Scatter Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="402"/>
<location filename="qml/global/ItemsOriginal.qml" line="414"/>
<source>Radar Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="415"/>
<location filename="qml/global/ItemsOriginal.qml" line="427"/>
<source>Other</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="418"/>
<location filename="qml/global/ItemsOriginal.qml" line="430"/>
<source>QRCode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="424"/>
<location filename="qml/global/ItemsOriginal.qml" line="436"/>
<source>Tour</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="430"/>
<location filename="qml/global/ItemsOriginal.qml" line="442"/>
<source>Timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="436"/>
<location filename="qml/global/ItemsOriginal.qml" line="448"/>
<source>Captcha</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="442"/>
<location filename="qml/global/ItemsOriginal.qml" line="454"/>
<source>Network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="449"/>
<location filename="qml/global/ItemsOriginal.qml" line="461"/>
<source>Remote Loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="463"/>
<location filename="qml/global/ItemsOriginal.qml" line="475"/>
<source>Hot Loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="469"/>
<location filename="qml/global/ItemsOriginal.qml" line="481"/>
<source>3D</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="475"/>
<location filename="qml/global/ItemsOriginal.qml" line="487"/>
<source>Test Crash</source>
<translation type="unfinished"></translation>
</message>
@ -1311,6 +1321,42 @@ My only desire is to be permitted to drive out the traitors and restore the Han.
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>T_GroupBox</name>
<message>
<location filename="qml/page/T_GroupBox.qml" line="10"/>
<source>GroupBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_GroupBox.qml" line="13"/>
<source>CheckBox Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_GroupBox.qml" line="17"/>
<location filename="qml/page/T_GroupBox.qml" line="27"/>
<source>E-mail</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_GroupBox.qml" line="18"/>
<location filename="qml/page/T_GroupBox.qml" line="28"/>
<source>Calendar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_GroupBox.qml" line="19"/>
<location filename="qml/page/T_GroupBox.qml" line="29"/>
<source>Contacts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_GroupBox.qml" line="24"/>
<source>RadioButton Group</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>T_Home</name>
<message>
@ -1831,6 +1877,46 @@ My only desire is to be permitted to drive out the traitors and restore the Han.
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>T_Sheet</name>
<message>
<location filename="qml/page/T_Sheet.qml" line="10"/>
<source>Sheet</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Sheet.qml" line="14"/>
<source>Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Sheet.qml" line="16"/>
<source>Some contents...
Some contents...
Some contents...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Sheet.qml" line="36"/>
<source>top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Sheet.qml" line="44"/>
<source>right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Sheet.qml" line="55"/>
<source>bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Sheet.qml" line="63"/>
<source>left</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>T_ShortcutPicker</name>
<message>

View File

@ -188,322 +188,332 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="108"/>
<location filename="qml/global/ItemsOriginal.qml" line="114"/>
<source>PaneItem Disabled</source>
<translation type="unfinished">PaneItem </translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="115"/>
<location filename="qml/global/ItemsOriginal.qml" line="108"/>
<source>GroupBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="121"/>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="118"/>
<location filename="qml/global/ItemsOriginal.qml" line="124"/>
<source>TextBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="124"/>
<location filename="qml/global/ItemsOriginal.qml" line="130"/>
<source>TimePicker</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="130"/>
<location filename="qml/global/ItemsOriginal.qml" line="136"/>
<source>DatePicker</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="136"/>
<location filename="qml/global/ItemsOriginal.qml" line="142"/>
<source>CalendarPicker</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="142"/>
<location filename="qml/global/ItemsOriginal.qml" line="148"/>
<source>ColorPicker</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="148"/>
<location filename="qml/global/ItemsOriginal.qml" line="154"/>
<source>ShortcutPicker</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="156"/>
<location filename="qml/global/ItemsOriginal.qml" line="162"/>
<source>Surface</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="159"/>
<location filename="qml/global/ItemsOriginal.qml" line="165"/>
<source>InfoBar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="161"/>
<location filename="qml/global/ItemsOriginal.qml" line="167"/>
<source>An inline message to display app-wide statuschange information.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="166"/>
<location filename="qml/global/ItemsOriginal.qml" line="172"/>
<source>Progress</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="172"/>
<location filename="qml/global/ItemsOriginal.qml" line="178"/>
<source>RatingControl</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="178"/>
<location filename="qml/global/ItemsOriginal.qml" line="184"/>
<source>Badge</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="184"/>
<location filename="qml/global/ItemsOriginal.qml" line="190"/>
<source>Rectangle</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="190"/>
<location filename="qml/global/ItemsOriginal.qml" line="196"/>
<source>Clip</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="196"/>
<location filename="qml/global/ItemsOriginal.qml" line="202"/>
<source>Carousel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="202"/>
<location filename="qml/global/ItemsOriginal.qml" line="208"/>
<source>Expander</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="208"/>
<location filename="qml/global/ItemsOriginal.qml" line="214"/>
<source>Watermark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="216"/>
<location filename="qml/global/ItemsOriginal.qml" line="222"/>
<source>Layout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="219"/>
<location filename="qml/global/ItemsOriginal.qml" line="225"/>
<source>StaggeredLayout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="225"/>
<location filename="qml/global/ItemsOriginal.qml" line="231"/>
<source>SplitLayout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="231"/>
<location filename="qml/global/ItemsOriginal.qml" line="237"/>
<source>StatusLayout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="239"/>
<location filename="qml/global/ItemsOriginal.qml" line="245"/>
<source>Popus</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="242"/>
<location filename="qml/global/ItemsOriginal.qml" line="248"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="249"/>
<location filename="qml/global/ItemsOriginal.qml" line="255"/>
<source>ComboBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="263"/>
<location filename="qml/global/ItemsOriginal.qml" line="269"/>
<source>Tooltip</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="269"/>
<location filename="qml/global/ItemsOriginal.qml" line="275"/>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="277"/>
<location filename="qml/global/ItemsOriginal.qml" line="281"/>
<source>Sheet</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="289"/>
<source>Navigation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="280"/>
<location filename="qml/global/ItemsOriginal.qml" line="292"/>
<source>Pivot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="282"/>
<location filename="qml/global/ItemsOriginal.qml" line="294"/>
<source>Presents information from different sources in a tabbed view.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="287"/>
<location filename="qml/global/ItemsOriginal.qml" line="299"/>
<source>BreadcrumbBar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="293"/>
<location filename="qml/global/ItemsOriginal.qml" line="305"/>
<source>TabView</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="295"/>
<location filename="qml/global/ItemsOriginal.qml" line="307"/>
<source>A control that displays a collection of tabs thatcan be used to display several documents.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="300"/>
<location filename="qml/global/ItemsOriginal.qml" line="312"/>
<source>TreeView</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="306"/>
<location filename="qml/global/ItemsOriginal.qml" line="318"/>
<source>TableView</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="308"/>
<location filename="qml/global/ItemsOriginal.qml" line="320"/>
<source>The TableView control provides a flexible way to display a collection of data in rows and columns</source>
<translation type="unfinished">TableView </translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="313"/>
<location filename="qml/global/ItemsOriginal.qml" line="325"/>
<source>Pagination</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="319"/>
<location filename="qml/global/ItemsOriginal.qml" line="331"/>
<source>MultiWindow</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="325"/>
<location filename="qml/global/ItemsOriginal.qml" line="337"/>
<source>FlipView</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="327"/>
<location filename="qml/global/ItemsOriginal.qml" line="339"/>
<source>Presents a collection of items that the user canflip through, one item at a time.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="334"/>
<location filename="qml/global/ItemsOriginal.qml" line="346"/>
<source>Theming</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="337"/>
<location filename="qml/global/ItemsOriginal.qml" line="349"/>
<source>Acrylic</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="343"/>
<location filename="qml/global/ItemsOriginal.qml" line="355"/>
<source>Theme</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="349"/>
<location filename="qml/global/ItemsOriginal.qml" line="361"/>
<source>Typography</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="355"/>
<location filename="qml/global/ItemsOriginal.qml" line="367"/>
<source>Awesome</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="363"/>
<location filename="qml/global/ItemsOriginal.qml" line="375"/>
<source>Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="366"/>
<location filename="qml/global/ItemsOriginal.qml" line="378"/>
<source>Bar Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="372"/>
<location filename="qml/global/ItemsOriginal.qml" line="384"/>
<source>Line Chart</source>
<translation type="unfinished">线</translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="378"/>
<location filename="qml/global/ItemsOriginal.qml" line="390"/>
<source>Pie Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="384"/>
<location filename="qml/global/ItemsOriginal.qml" line="396"/>
<source>Polar Area Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="390"/>
<location filename="qml/global/ItemsOriginal.qml" line="402"/>
<source>Bubble Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="396"/>
<location filename="qml/global/ItemsOriginal.qml" line="408"/>
<source>Scatter Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="402"/>
<location filename="qml/global/ItemsOriginal.qml" line="414"/>
<source>Radar Chart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="415"/>
<location filename="qml/global/ItemsOriginal.qml" line="427"/>
<source>Other</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="418"/>
<location filename="qml/global/ItemsOriginal.qml" line="430"/>
<source>QRCode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="424"/>
<location filename="qml/global/ItemsOriginal.qml" line="436"/>
<source>Tour</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="430"/>
<location filename="qml/global/ItemsOriginal.qml" line="442"/>
<source>Timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="436"/>
<location filename="qml/global/ItemsOriginal.qml" line="448"/>
<source>Captcha</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="442"/>
<location filename="qml/global/ItemsOriginal.qml" line="454"/>
<source>Network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="449"/>
<location filename="qml/global/ItemsOriginal.qml" line="461"/>
<source>Remote Loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="463"/>
<location filename="qml/global/ItemsOriginal.qml" line="475"/>
<source>Hot Loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="469"/>
<location filename="qml/global/ItemsOriginal.qml" line="481"/>
<source>3D</source>
<translation type="unfinished">3D</translation>
</message>
<message>
<location filename="qml/global/ItemsOriginal.qml" line="475"/>
<location filename="qml/global/ItemsOriginal.qml" line="487"/>
<source>Test Crash</source>
<translation type="unfinished"></translation>
</message>
@ -1342,6 +1352,42 @@ My only desire is to be permitted to drive out the traitors and restore the Han.
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>T_GroupBox</name>
<message>
<location filename="qml/page/T_GroupBox.qml" line="10"/>
<source>GroupBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_GroupBox.qml" line="13"/>
<source>CheckBox Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_GroupBox.qml" line="17"/>
<location filename="qml/page/T_GroupBox.qml" line="27"/>
<source>E-mail</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_GroupBox.qml" line="18"/>
<location filename="qml/page/T_GroupBox.qml" line="28"/>
<source>Calendar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_GroupBox.qml" line="19"/>
<location filename="qml/page/T_GroupBox.qml" line="29"/>
<source>Contacts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_GroupBox.qml" line="24"/>
<source>RadioButton Group</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>T_Home</name>
<message>
@ -1880,6 +1926,48 @@ My only desire is to be permitted to drive out the traitors and restore the Han.
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>T_Sheet</name>
<message>
<location filename="qml/page/T_Sheet.qml" line="10"/>
<source>Sheet</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Sheet.qml" line="14"/>
<source>Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Sheet.qml" line="16"/>
<source>Some contents...
Some contents...
Some contents...</source>
<translation type="unfinished">...
...
...</translation>
</message>
<message>
<location filename="qml/page/T_Sheet.qml" line="36"/>
<source>top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Sheet.qml" line="44"/>
<source>right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Sheet.qml" line="55"/>
<source>bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_Sheet.qml" line="63"/>
<source>left</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>T_ShortcutPicker</name>
<message>

View File

@ -137,7 +137,9 @@ FluExpander{
"FluNetwork",
"FluShortcutPicker",
"FluWindowResultLauncher",
"FluRouter"
"FluRouter",
"FluGroupBox",
"FluSheet",
];
code = code.replace(/\n/g, "<br>");
code = code.replace(/ /g, "&nbsp;");

View File

@ -104,6 +104,12 @@ FluObject{
url: "qrc:/example/qml/page/T_ToggleSwitch.qml"
onTap: { navigationView.push(url) }
}
FluPaneItem{
title: qsTr("GroupBox")
menuDelegate: paneItemMenu
url: "qrc:/example/qml/page/T_GroupBox.qml"
onTap: { navigationView.push(url) }
}
FluPaneItem{
title: qsTr("PaneItem Disabled")
disabled: true
@ -271,6 +277,12 @@ FluObject{
url: "qrc:/example/qml/page/T_Menu.qml"
onTap: { navigationView.push(url) }
}
FluPaneItem{
title: qsTr("Sheet")
menuDelegate: paneItemMenu
url: "qrc:/example/qml/page/T_Sheet.qml"
onTap: { navigationView.push(url) }
}
}
FluPaneItemExpander{

View File

@ -0,0 +1,48 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import QtQuick.Window 2.15
import FluentUI 1.0
import "../component"
FluScrollablePage{
title: qsTr("GroupBox")
FluGroupBox {
title: qsTr("CheckBox Group")
ColumnLayout {
spacing: 10
anchors.fill: parent
FluCheckBox { text: qsTr("E-mail") }
FluCheckBox { text: qsTr("Calendar") }
FluCheckBox { text: qsTr("Contacts") }
}
}
FluGroupBox {
title: qsTr("RadioButton Group")
FluRadioButtons {
spacing: 10
FluRadioButton { text: qsTr("E-mail") }
FluRadioButton { text: qsTr("Calendar") }
FluRadioButton { text: qsTr("Contacts") }
}
}
CodeExpander{
Layout.fillWidth: true
Layout.topMargin: 4
code:'FluGroupBox {
title: qsTr("CheckBox Group")
ColumnLayout {
spacing: 10
anchors.fill: parent
FluCheckBox { text: qsTr("E-mail") }
FluCheckBox { text: qsTr("Calendar") }
FluCheckBox { text: qsTr("Contacts") }
}
}'
}
}

View File

@ -7,7 +7,6 @@ import "../component"
FluPage{
launchMode: FluPageType.SingleTop
header:Item{}
FluRemoteLoader{
anchors.fill: parent
source: "https://zhu-zichu.gitee.io/Qt_174_RemoteLoader.qml"

View File

@ -0,0 +1,90 @@
import QtQuick 2.15
import QtQuick.Layouts 1.15
import QtQuick.Controls 2.15
import QtQuick.Window 2.15
import FluentUI 1.0
import "../component"
FluScrollablePage{
title: qsTr("Sheet")
FluSheet{
id:sheet
title: qsTr("Title")
FluText{
text: qsTr("Some contents...\nSome contents...\nSome contents...")
anchors{
left: parent.left
leftMargin: 10
}
}
}
FluFrame{
Layout.fillWidth: true
Layout.preferredHeight: 280
padding: 10
Column{
anchors.centerIn: parent
spacing: 10
Row{
spacing: 10
FluButton{
width: 80
height: 30
text: qsTr("top")
onClicked: {
sheet.open(FluSheetType.Top)
}
}
FluButton{
width: 80
height: 30
text: qsTr("right")
onClicked: {
sheet.open(FluSheetType.Right)
}
}
}
Row{
spacing: 10
FluButton{
width: 80
height: 30
text: qsTr("bottom")
onClicked: {
sheet.open(FluSheetType.Bottom)
}
}
FluButton{
width: 80
height: 30
text: qsTr("left")
onClicked: {
sheet.open(FluSheetType.Left)
}
}
}
}
}
CodeExpander{
Layout.fillWidth: true
Layout.topMargin: -6
code:'FluSheet{
id:sheet
title: qsTr("Title")
FluText{
text: qsTr("Some contents...")
anchors{
left: parent.left
leftMargin: 10
}
}
}
sheet.open(FluSheetType.Bottom)
'
}
}

View File

@ -4,6 +4,17 @@
#include <QObject>
#include <QtQml/qqml.h>
namespace FluSheetType {
Q_NAMESPACE
enum Position {
Left = 0x0000,
Top = 0x0001,
Right = 0x0002,
Bottom = 0x0004,
};
Q_ENUM_NS(Position)
QML_NAMED_ELEMENT(FluSheetType)
}
namespace FluThemeType {
Q_NAMESPACE

View File

@ -142,6 +142,7 @@ bool FluFrameless::nativeEventFilter(const QByteArray &eventType, void *message,
}else{
offsetSize = 1;
}
_maximizeButton->setProperty("hover",false);
if(!isCompositionEnabled()){
offsetSize = 0;
}
@ -158,8 +159,11 @@ bool FluFrameless::nativeEventFilter(const QByteArray &eventType, void *message,
if (*result == HTNOWHERE) {
*result = HTZOOM;
}
_setMaximizeHoverd(true);
return true;
}
_setMaximizeHoverd(false);
_setMaximizePressed(false);
*result = 0;
POINT nativeGlobalPos{GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)};
POINT nativeLocalPos = nativeGlobalPos;
@ -205,12 +209,14 @@ bool FluFrameless::nativeEventFilter(const QByteArray &eventType, void *message,
if(_hitMaximizeButton()){
QMouseEvent event = QMouseEvent(QEvent::MouseButtonPress, QPoint(), QPoint(), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QGuiApplication::sendEvent(_maximizeButton,&event);
_setMaximizePressed(true);
return true;
}
}else if(uMsg == WM_NCLBUTTONUP || uMsg == WM_NCRBUTTONUP){
if(_hitMaximizeButton()){
QMouseEvent event = QMouseEvent(QEvent::MouseButtonRelease, QPoint(), QPoint(), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QGuiApplication::sendEvent(_maximizeButton,&event);
_setMaximizePressed(false);
return true;
}
}else if(uMsg == WM_NCPAINT){
@ -331,6 +337,14 @@ bool FluFrameless::_hitMaximizeButton(){
return false;
}
void FluFrameless::_setMaximizePressed(bool val){
_maximizeButton->setProperty("down",val);
}
void FluFrameless::_setMaximizeHoverd(bool val){
_maximizeButton->setProperty("hover",val);
}
void FluFrameless::_updateCursor(int edges){
switch (edges) {
case 0:
@ -377,7 +391,9 @@ void FluFrameless::showNormal(){
}
void FluFrameless::setHitTestVisible(QQuickItem* val){
_hitTestList.append(val);
if(!_hitTestList.contains(val)){
_hitTestList.append(val);
}
}

View File

@ -47,6 +47,8 @@ private:
bool _containsCursorToItem(QQuickItem* item);
bool _hitAppBar();
bool _hitMaximizeButton();
void _setMaximizePressed(bool val);
void _setMaximizeHoverd(bool val);
private:
qint64 _current;
int _edges = 0;

View File

@ -124,6 +124,8 @@ void FluentUI::registerTypes(const char *uri){
qmlRegisterType(QUrl("qrc:/qt/qml/FluentUI/Controls/FluWindowResultLauncher.qml"),uri,major,minor,"FluWindowResultLauncher");
qmlRegisterType(QUrl("qrc:/qt/qml/FluentUI/Controls/FluLauncher.qml"),uri,major,minor,"FluLauncher");
qmlRegisterType(QUrl("qrc:/qt/qml/FluentUI/Controls/FluEvent.qml"),uri,major,minor,"FluEvent");
qmlRegisterType(QUrl("qrc:/qt/qml/FluentUI/Controls/FluSheet.qml"),uri,major,minor,"FluSheet");
qmlRegisterType(QUrl("qrc:/qt/qml/FluentUI/Controls/FluGroupBox.qml"),uri,major,minor,"FluGroupBox");
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");
@ -139,6 +141,7 @@ void FluentUI::registerTypes(const char *uri){
qmlRegisterUncreatableMetaObject(FluTabViewType::staticMetaObject, uri,major,minor,"FluTabViewType", "Access to enums & flags only");
qmlRegisterUncreatableMetaObject(FluNavigationViewType::staticMetaObject, uri,major,minor,"FluNavigationViewType", "Access to enums & flags only");
qmlRegisterUncreatableMetaObject(FluTimelineType::staticMetaObject, uri,major,minor,"FluTimelineType", "Access to enums & flags only");
qmlRegisterUncreatableMetaObject(FluSheetType::staticMetaObject, uri,major,minor,"FluSheetType", "Access to enums & flags only");
qmlRegisterModule(uri,major,minor);
#endif

View File

@ -225,6 +225,7 @@ Rectangle{
}
FluIconButton{
id:btn_maximize
property bool hover: btn_maximize.hovered
Layout.preferredWidth: 40
Layout.preferredHeight: 30
padding: 0
@ -232,10 +233,10 @@ Rectangle{
horizontalPadding: 0
iconSource : d.isRestore ? FluentIcons.ChromeRestore : FluentIcons.ChromeMaximize
color: {
if(pressed){
if(down){
return maximizePressColor
}
return hovered ? maximizeHoverColor : maximizeNormalColor
return btn_maximize.hover ? maximizeHoverColor : maximizeNormalColor
}
Layout.alignment: Qt.AlignVCenter
visible: d.resizable && !isMac && showMaximize

View File

@ -41,6 +41,8 @@ Button {
visible: control.activeFocus
}
}
focusPolicy:Qt.TabFocus
font:FluTextStyle.Body
horizontalPadding:0
verticalPadding: 0
padding: 0
@ -48,7 +50,6 @@ Button {
Accessible.name: control.text
Accessible.description: contentDescription
Accessible.onPressAction: control.clicked()
focusPolicy:Qt.TabFocus
contentItem: RowLayout{
spacing: control.textSpacing
layoutDirection:control.textRight ? Qt.LeftToRight : Qt.RightToLeft
@ -133,6 +134,7 @@ Button {
text: control.text
Layout.alignment: Qt.AlignVCenter
visible: text !== ""
font: control.font
}
}
}

View File

@ -0,0 +1,39 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Window 2.15
import QtQuick.Controls.impl 2.15
import QtQuick.Templates 2.15 as T
import FluentUI 1.0
T.GroupBox {
id: control
property int borderWidth : 1
property color borderColor : FluTheme.dark ? Window.active ? Qt.rgba(55/255,55/255,55/255,1):Qt.rgba(45/255,45/255,45/255,1) : Qt.rgba(226/255,229/255,234/255,1)
property color color: FluTheme.dark ? Window.active ? Qt.rgba(38/255,44/255,54/255,1) : Qt.rgba(39/255,39/255,39/255,1) : Qt.rgba(251/255,251/255,253/255,1)
property int radius: 4
implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
contentWidth + leftPadding + rightPadding,
implicitLabelWidth + leftPadding + rightPadding)
implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
contentHeight + topPadding + bottomPadding)
spacing: 6
padding: 12
font: FluTextStyle.Body
topPadding: padding + (implicitLabelWidth > 0 ? implicitLabelHeight + spacing : 0)
label: FluText {
width: control.availableWidth
text: control.title
font: FluTextStyle.BodyStrong
elide: Text.ElideRight
verticalAlignment: Text.AlignVCenter
}
background: Rectangle {
y: control.topPadding - control.bottomPadding
width: parent.width
height: parent.height - control.topPadding + control.bottomPadding
radius: control.radius
border.color: control.borderColor
border.width: control.borderWidth
color: control.color
}
}

View File

@ -16,7 +16,7 @@ Page {
transform: Translate {
y: control.visible ? 0 : 80
Behavior on y{
enabled: control.animationEnabled
enabled: control.animationEnabled && FluTheme.animationEnabled
NumberAnimation{
duration: 167
easing.type: Easing.OutCubic
@ -24,21 +24,27 @@ Page {
}
}
Behavior on opacity {
enabled: control.animationEnabled
enabled: control.animationEnabled && FluTheme.animationEnabled
NumberAnimation{
duration: 83
}
}
background: Item{}
header: Item{
implicitHeight: 40
FluText{
id:text_title
text: control.title
font: FluTextStyle.Title
anchors{
left: parent.left
leftMargin: 5
header: FluLoader{
sourceComponent: control.title === "" ? undefined : com_header
}
Component{
id: com_header
Item{
implicitHeight: 40
FluText{
id:text_title
text: control.title
font: FluTextStyle.Title
anchors{
left: parent.left
leftMargin: 5
}
}
}
}

View File

@ -92,6 +92,7 @@ Button {
id:btn_text
text: control.text
Layout.alignment: Qt.AlignVCenter
visible: text !== ""
font: control.font
}
}

View File

@ -4,7 +4,7 @@ import FluentUI 1.0
Item {
//DropShadow
property color color: FluTheme.dark ? "#FFFFFF" : "#999999"
property color color: FluTheme.dark ? "#AAAAAA" : "#999999"
property int elevation: 6
property int radius: 4
id:control

View File

@ -0,0 +1,210 @@
import QtQuick 2.15
import QtQuick.Layouts 1.15
import QtQuick.Controls 2.15
import QtQuick.Window 2.15
import FluentUI 1.0
Popup {
id: control
default property alias content : container.contentData
property string title
property var header : Item{
implicitHeight: 40
FluIconButton{
id: btn_close
iconSource: FluentIcons.Clear
iconSize: 15
verticalPadding: 6
horizontalPadding: 6
width: 30
height: 30
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
leftMargin: 5
}
onClicked: {
control.visible = false
}
}
FluText{
id:text_title
text: control.title
font: FluTextStyle.Subtitle
anchors{
verticalCenter: parent.verticalCenter
left: btn_close.right
leftMargin: 5
right: parent.right
rightMargin: 5
}
}
}
property int size: 278
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside
padding: 0
modal:true
parent: Overlay.overlay
enter: {
if(d.position === FluSheetType.Top){
return enter_top
}else if(d.position === FluSheetType.Left){
return enter_left
}else if(d.position === FluSheetType.Right){
return enter_right
}else{
return enter_bottom
}
}
exit: {
if(d.position === FluSheetType.Top){
return exit_top
}else if(d.position === FluSheetType.Left){
return exit_left
}else if(d.position === FluSheetType.Right){
return exit_right
}else{
return exit_bottom
}
}
Item {
id: d
property var win: Window.window
onWinChanged: {
if(win instanceof FluWindow){
win.setHitTestVisible(container)
}
}
property int position: FluSheetType.Bottom
property int parentHeight: {
if(control.parent){
return control.parent.height
}
return control.height
}
property int parentWidth: {
if(control.parent){
return control.parent.width
}
return control.width
}
}
Transition {
id:enter_right
onRunningChanged: {
if(!running){
control.x = Qt.binding(function(){return d.parentWidth - control.width})
}
}
NumberAnimation{
property: "x"
duration: 167
from: d.parentWidth
to: d.parentWidth - control.width
easing.type: Easing.OutCubic
}
}
Transition {
id:exit_right
NumberAnimation{
property: "x"
duration: 167
from: d.parentWidth - control.width
to: d.parentWidth
easing.type: Easing.OutCubic
}
}
Transition {
id:enter_left
NumberAnimation{
property: "x"
duration: 167
from: -control.width
to: 0
easing.type: Easing.OutCubic
}
}
Transition {
id:exit_left
NumberAnimation{
property: "x"
duration: 167
from: 0
to: -control.width
easing.type: Easing.OutCubic
}
}
Transition {
id:enter_top
NumberAnimation{
property: "y"
duration: 167
from: -control.height
to: 0
easing.type: Easing.OutCubic
}
}
Transition {
id:exit_top
NumberAnimation{
property: "y"
duration: 167
from: 0
to: -control.height
easing.type: Easing.OutCubic
}
}
Transition {
id:enter_bottom
onRunningChanged: {
if(!running){
control.y = Qt.binding(function(){return d.parentHeight - control.height})
}
}
NumberAnimation{
property: "y"
duration: 167
from: d.parentHeight
to: d.parentHeight - control.height
easing.type: Easing.OutCubic
}
}
Transition {
id:exit_bottom
NumberAnimation{
property: "y"
duration: 167
from: d.parentHeight - control.height
to: d.parentHeight
easing.type: Easing.OutCubic
}
}
background: Rectangle {
FluShadow{
radius: 0
}
border.color: FluTheme.dark ? Window.active ? Qt.rgba(55/255,55/255,55/255,1):Qt.rgba(45/255,45/255,45/255,1) : Qt.rgba(226/255,229/255,234/255,1)
color: FluTheme.dark ? Window.active ? Qt.rgba(38/255,44/255,54/255,1) : Qt.rgba(39/255,39/255,39/255,1) : Qt.rgba(251/255,251/255,253/255,1)
}
Page{
id: container
anchors.fill: parent
header: control.header
background: Item{}
}
function open(position = FluSheetType.Bottom){
control.x = 0
control.y = 0
d.position = position
if(d.position === FluSheetType.Top || d.position === FluSheetType.Bottom){
control.width = Qt.binding(function(){return d.parentWidth})
control.height = size
}else{
control.width = size
control.height = Qt.binding(function(){return d.parentHeight})
}
control.visible = true
}
}

View File

@ -143,6 +143,21 @@ Module {
Property { name: "color"; type: "QColor" }
Property { name: "radius"; type: "QList<int>" }
}
Component {
name: "FluSheetType"
exports: ["FluentUI/FluSheetType 1.0"]
isCreatable: false
exportMetaObjectRevisions: [0]
Enum {
name: "Position"
values: {
"Left": 0,
"Top": 1,
"Right": 2,
"Bottom": 4
}
}
}
Component {
name: "FluStatusLayoutType"
exports: ["FluentUI/FluStatusLayoutType 1.0"]
@ -2196,31 +2211,31 @@ Module {
Property { name: "darkClickListener"; type: "QVariant" }
Property {
name: "buttonStayTop"
type: "FluIconButton_QMLTYPE_20"
type: "FluIconButton_QMLTYPE_19"
isReadonly: true
isPointer: true
}
Property {
name: "buttonMinimize"
type: "FluIconButton_QMLTYPE_20"
type: "FluIconButton_QMLTYPE_19"
isReadonly: true
isPointer: true
}
Property {
name: "buttonMaximize"
type: "FluIconButton_QMLTYPE_20"
type: "FluIconButton_QMLTYPE_19"
isReadonly: true
isPointer: true
}
Property {
name: "buttonClose"
type: "FluIconButton_QMLTYPE_20"
type: "FluIconButton_QMLTYPE_19"
isReadonly: true
isPointer: true
}
Property {
name: "buttonDark"
type: "FluIconButton_QMLTYPE_20"
type: "FluIconButton_QMLTYPE_19"
isReadonly: true
isPointer: true
}
@ -2237,20 +2252,6 @@ Module {
isPointer: true
}
}
Component {
prototype: "QQuickRectangle"
name: "FluentUI/FluArea 1.0"
exports: ["FluentUI/FluArea 1.0"]
exportMetaObjectRevisions: [0]
isComposite: true
defaultProperty: "contentData"
Property { name: "paddings"; type: "int" }
Property { name: "leftPadding"; type: "int" }
Property { name: "rightPadding"; type: "int" }
Property { name: "topPadding"; type: "int" }
Property { name: "bottomPadding"; type: "int" }
Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true }
}
Component {
prototype: "QQuickTextField"
name: "FluentUI/FluAutoSuggestBox 1.0"
@ -2420,7 +2421,7 @@ Module {
Property { name: "size"; type: "double" }
Property { name: "textRight"; type: "bool" }
Property { name: "textSpacing"; type: "double" }
Property { name: "enableAnimation"; type: "bool" }
Property { name: "animationEnabled"; type: "bool" }
Property { name: "clickListener"; type: "QVariant" }
Property { name: "indeterminate"; type: "bool" }
Property { name: "textColor"; type: "QColor" }
@ -2492,30 +2493,14 @@ Module {
Signal { name: "positiveClicked" }
}
Component {
prototype: "QQuickItem"
prototype: "QQuickPage"
name: "FluentUI/FluContentPage 1.0"
exports: ["FluentUI/FluContentPage 1.0"]
exportMetaObjectRevisions: [0]
isComposite: true
defaultProperty: "content"
Property { name: "leftPadding"; type: "int" }
Property { name: "topPadding"; type: "int" }
Property { name: "rightPadding"; type: "int" }
Property { name: "bottomPadding"; type: "int" }
Property { name: "title"; type: "string" }
Property { name: "content"; type: "QObject"; isList: true; isReadonly: true }
Property { name: "color"; type: "QColor" }
Property { name: "statusMode"; type: "int" }
Property { name: "loadingText"; type: "string" }
Property { name: "emptyText"; type: "string" }
Property { name: "errorText"; type: "string" }
Property { name: "errorButtonText"; type: "string" }
Property { name: "loadingItem"; type: "QQmlComponent"; isPointer: true }
Property { name: "emptyItem"; type: "QQmlComponent"; isPointer: true }
Property { name: "errorItem"; type: "QQmlComponent"; isPointer: true }
Signal { name: "errorClicked" }
defaultProperty: "contentData"
Property { name: "launchMode"; type: "int" }
Property { name: "animDisabled"; type: "bool" }
Property { name: "animationEnabled"; type: "bool" }
Property { name: "url"; type: "string" }
}
Component {
@ -2689,6 +2674,29 @@ Module {
defaultProperty: "data"
Property { name: "radius"; type: "int" }
}
Component {
prototype: "QQuickFrame"
name: "FluentUI/FluFrame 1.0"
exports: ["FluentUI/FluFrame 1.0"]
exportMetaObjectRevisions: [0]
isComposite: true
defaultProperty: "contentData"
Property { name: "border"; type: "QQuickPen"; isReadonly: true; isPointer: true }
Property { name: "color"; type: "QColor" }
Property { name: "radius"; type: "double" }
}
Component {
prototype: "QQuickGroupBox"
name: "FluentUI/FluGroupBox 1.0"
exports: ["FluentUI/FluGroupBox 1.0"]
exportMetaObjectRevisions: [0]
isComposite: true
defaultProperty: "contentData"
Property { name: "borderWidth"; type: "int" }
Property { name: "borderColor"; type: "QColor" }
Property { name: "color"; type: "QColor" }
Property { name: "radius"; type: "int" }
}
Component {
prototype: "QQuickText"
name: "FluentUI/FluIcon 1.0"
@ -2837,7 +2845,7 @@ Module {
exportMetaObjectRevisions: [0]
isComposite: true
defaultProperty: "contentData"
Property { name: "enableAnimation"; type: "bool" }
Property { name: "animationEnabled"; type: "bool" }
}
Component {
prototype: "QQuickMenuBar"
@ -2906,15 +2914,15 @@ Module {
defaultProperty: "data"
Property { name: "logo"; type: "QUrl" }
Property { name: "title"; type: "string" }
Property { name: "items"; type: "FluObject_QMLTYPE_168"; isPointer: true }
Property { name: "footerItems"; type: "FluObject_QMLTYPE_168"; isPointer: true }
Property { name: "items"; type: "FluObject_QMLTYPE_134"; isPointer: true }
Property { name: "footerItems"; type: "FluObject_QMLTYPE_134"; isPointer: true }
Property { name: "displayMode"; type: "int" }
Property { name: "autoSuggestBox"; type: "QQmlComponent"; isPointer: true }
Property { name: "actionItem"; type: "QQmlComponent"; isPointer: true }
Property { name: "topPadding"; type: "int" }
Property { name: "pageMode"; type: "int" }
Property { name: "navItemRightMenu"; type: "FluMenu_QMLTYPE_32"; isPointer: true }
Property { name: "navItemExpanderRightMenu"; type: "FluMenu_QMLTYPE_32"; isPointer: true }
Property { name: "navItemRightMenu"; type: "FluMenu_QMLTYPE_42"; isPointer: true }
Property { name: "navItemExpanderRightMenu"; type: "FluMenu_QMLTYPE_42"; isPointer: true }
Property { name: "navCompactWidth"; type: "int" }
Property { name: "navTopMargin"; type: "int" }
Property { name: "cellHeight"; type: "int" }
@ -2922,13 +2930,13 @@ Module {
Property { name: "hideNavAppBar"; type: "bool" }
Property {
name: "buttonMenu"
type: "FluIconButton_QMLTYPE_20"
type: "FluIconButton_QMLTYPE_19"
isReadonly: true
isPointer: true
}
Property {
name: "buttonBack"
type: "FluIconButton_QMLTYPE_20"
type: "FluIconButton_QMLTYPE_19"
isReadonly: true
isPointer: true
}
@ -2965,14 +2973,14 @@ Module {
Property { name: "children"; type: "QObject"; isList: true; isReadonly: true }
}
Component {
prototype: "QQuickItem"
prototype: "QQuickPage"
name: "FluentUI/FluPage 1.0"
exports: ["FluentUI/FluPage 1.0"]
exportMetaObjectRevisions: [0]
isComposite: true
defaultProperty: "data"
defaultProperty: "contentData"
Property { name: "launchMode"; type: "int" }
Property { name: "animDisabled"; type: "bool" }
Property { name: "animationEnabled"; type: "bool" }
Property { name: "url"; type: "string" }
}
Component {
@ -3007,7 +3015,7 @@ Module {
exports: ["FluentUI/FluPaneItem 1.0"]
exportMetaObjectRevisions: [0]
isComposite: true
Property { name: "key"; type: "string"; isReadonly: true }
Property { name: "key"; type: "string" }
Property { name: "_idx"; type: "int" }
Property { name: "_ext"; type: "QVariant" }
Property { name: "_parent"; type: "QVariant" }
@ -3033,7 +3041,7 @@ Module {
exports: ["FluentUI/FluPaneItemEmpty 1.0"]
exportMetaObjectRevisions: [0]
isComposite: true
Property { name: "key"; type: "string"; isReadonly: true }
Property { name: "key"; type: "string" }
Property { name: "_idx"; type: "int" }
Property { name: "_ext"; type: "QVariant" }
Property { name: "_parent"; type: "QVariant" }
@ -3046,7 +3054,7 @@ Module {
exportMetaObjectRevisions: [0]
isComposite: true
defaultProperty: "children"
Property { name: "key"; type: "string"; isReadonly: true }
Property { name: "key"; type: "string" }
Property { name: "_idx"; type: "int" }
Property { name: "visible"; type: "bool" }
Property { name: "title"; type: "string" }
@ -3066,7 +3074,7 @@ Module {
exports: ["FluentUI/FluPaneItemHeader 1.0"]
exportMetaObjectRevisions: [0]
isComposite: true
Property { name: "key"; type: "string"; isReadonly: true }
Property { name: "key"; type: "string" }
Property { name: "_idx"; type: "int" }
Property { name: "visible"; type: "bool" }
Property { name: "title"; type: "string" }
@ -3078,7 +3086,7 @@ Module {
exports: ["FluentUI/FluPaneItemSeparator 1.0"]
exportMetaObjectRevisions: [0]
isComposite: true
Property { name: "key"; type: "string"; isReadonly: true }
Property { name: "key"; type: "string" }
Property { name: "_idx"; type: "int" }
Property { name: "visible"; type: "bool" }
Property { name: "parent"; type: "QVariant" }
@ -3146,6 +3154,7 @@ Module {
exportMetaObjectRevisions: [0]
isComposite: true
defaultProperty: "data"
Property { name: "duration"; type: "int" }
Property { name: "strokeWidth"; type: "double" }
Property { name: "progressVisible"; type: "bool" }
Property { name: "color"; type: "QColor" }
@ -3323,31 +3332,15 @@ Module {
defaultProperty: "data"
}
Component {
prototype: "QQuickItem"
prototype: "QQuickPage"
name: "FluentUI/FluScrollablePage 1.0"
exports: ["FluentUI/FluScrollablePage 1.0"]
exportMetaObjectRevisions: [0]
isComposite: true
defaultProperty: "content"
Property { name: "spacing"; type: "int" }
Property { name: "leftPadding"; type: "int" }
Property { name: "topPadding"; type: "int" }
Property { name: "rightPadding"; type: "int" }
Property { name: "bottomPadding"; type: "int" }
Property { name: "title"; type: "string" }
Property { name: "content"; type: "QObject"; isList: true; isReadonly: true }
Property { name: "color"; type: "QColor" }
Property { name: "statusMode"; type: "int" }
Property { name: "loadingText"; type: "string" }
Property { name: "emptyText"; type: "string" }
Property { name: "errorText"; type: "string" }
Property { name: "errorButtonText"; type: "string" }
Property { name: "loadingItem"; type: "QQmlComponent"; isPointer: true }
Property { name: "emptyItem"; type: "QQmlComponent"; isPointer: true }
Property { name: "errorItem"; type: "QQmlComponent"; isPointer: true }
Signal { name: "errorClicked" }
Property { name: "launchMode"; type: "int" }
Property { name: "animDisabled"; type: "bool" }
Property { name: "animationEnabled"; type: "bool" }
Property { name: "url"; type: "string" }
}
Component {
@ -3361,6 +3354,23 @@ Module {
Property { name: "elevation"; type: "int" }
Property { name: "radius"; type: "int" }
}
Component {
prototype: "QQuickPopup"
name: "FluentUI/FluSheet 1.0"
exports: ["FluentUI/FluSheet 1.0"]
exportMetaObjectRevisions: [0]
isComposite: true
defaultProperty: "content"
Property { name: "title"; type: "string" }
Property { name: "header"; type: "QVariant" }
Property { name: "size"; type: "int" }
Property { name: "content"; type: "QObject"; isList: true; isReadonly: true }
Method {
name: "open"
type: "QVariant"
Parameter { name: "position"; type: "QVariant" }
}
}
Component {
prototype: "QQuickButton"
name: "FluentUI/FluShortcutPicker 1.0"
@ -3601,7 +3611,7 @@ Module {
Property { name: "pasteText"; type: "string" }
Property { name: "selectAllText"; type: "string" }
Property { name: "inputItem"; type: "QVariant" }
Property { name: "enableAnimation"; type: "bool" }
Property { name: "animationEnabled"; type: "bool" }
}
Component {
prototype: "QQuickButton"

View File

@ -5,7 +5,6 @@ typeinfo plugins.qmltypes
FluAcrylic 1.0 Controls/FluAcrylic.qml
FluAppBar 1.0 Controls/FluAppBar.qml
FluArea 1.0 Controls/FluArea.qml
FluAutoSuggestBox 1.0 Controls/FluAutoSuggestBox.qml
FluBadge 1.0 Controls/FluBadge.qml
FluBreadcrumbBar 1.0 Controls/FluBreadcrumbBar.qml
@ -30,6 +29,8 @@ FluExpander 1.0 Controls/FluExpander.qml
FluFilledButton 1.0 Controls/FluFilledButton.qml
FluFlipView 1.0 Controls/FluFlipView.qml
FluFocusRectangle 1.0 Controls/FluFocusRectangle.qml
FluFrame 1.0 Controls/FluFrame.qml
FluGroupBox 1.0 Controls/FluGroupBox.qml
FluIcon 1.0 Controls/FluIcon.qml
FluIconButton 1.0 Controls/FluIconButton.qml
FluImage 1.0 Controls/FluImage.qml
@ -72,6 +73,7 @@ FluScrollBar 1.0 Controls/FluScrollBar.qml
FluScrollIndicator 1.0 Controls/FluScrollIndicator.qml
FluScrollablePage 1.0 Controls/FluScrollablePage.qml
FluShadow 1.0 Controls/FluShadow.qml
FluSheet 1.0 Controls/FluSheet.qml
FluShortcutPicker 1.0 Controls/FluShortcutPicker.qml
FluSlider 1.0 Controls/FluSlider.qml
FluSpinBox 1.0 Controls/FluSpinBox.qml

View File

@ -107,5 +107,7 @@
<file>FluentUI/Controls/FluEvent.qml</file>
<file>FluentUI/Controls/FluEventBus.qml</file>
<file>FluentUI/Controls/FluFrame.qml</file>
<file>FluentUI/Controls/FluSheet.qml</file>
<file>FluentUI/Controls/FluGroupBox.qml</file>
</qresource>
</RCC>

View File

@ -225,6 +225,7 @@ Rectangle{
}
FluIconButton{
id:btn_maximize
property bool hover: btn_maximize.hovered
Layout.preferredWidth: 40
Layout.preferredHeight: 30
padding: 0
@ -232,10 +233,10 @@ Rectangle{
horizontalPadding: 0
iconSource : d.isRestore ? FluentIcons.ChromeRestore : FluentIcons.ChromeMaximize
color: {
if(pressed){
if(down){
return maximizePressColor
}
return hovered ? maximizeHoverColor : maximizeNormalColor
return btn_maximize.hover ? maximizeHoverColor : maximizeNormalColor
}
Layout.alignment: Qt.AlignVCenter
visible: d.resizable && !isMac && showMaximize

View File

@ -42,6 +42,8 @@ Button {
visible: control.activeFocus
}
}
focusPolicy:Qt.TabFocus
font:FluTextStyle.Body
horizontalPadding:0
verticalPadding: 0
padding: 0
@ -49,7 +51,6 @@ Button {
Accessible.name: control.text
Accessible.description: contentDescription
Accessible.onPressAction: control.clicked()
focusPolicy:Qt.TabFocus
contentItem: RowLayout{
spacing: control.textSpacing
layoutDirection:control.textRight ? Qt.LeftToRight : Qt.RightToLeft
@ -134,6 +135,7 @@ Button {
text: control.text
Layout.alignment: Qt.AlignVCenter
visible: text !== ""
font: control.font
}
}
}

View File

@ -0,0 +1,39 @@
import QtQuick
import QtQuick.Controls
import QtQuick.Window
import QtQuick.Controls.impl
import QtQuick.Templates as T
import FluentUI
T.GroupBox {
id: control
property int borderWidth : 1
property color borderColor : FluTheme.dark ? Window.active ? Qt.rgba(55/255,55/255,55/255,1):Qt.rgba(45/255,45/255,45/255,1) : Qt.rgba(226/255,229/255,234/255,1)
property color color: FluTheme.dark ? Window.active ? Qt.rgba(38/255,44/255,54/255,1) : Qt.rgba(39/255,39/255,39/255,1) : Qt.rgba(251/255,251/255,253/255,1)
property int radius: 4
implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
contentWidth + leftPadding + rightPadding,
implicitLabelWidth + leftPadding + rightPadding)
implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
contentHeight + topPadding + bottomPadding)
spacing: 6
padding: 12
font: FluTextStyle.Body
topPadding: padding + (implicitLabelWidth > 0 ? implicitLabelHeight + spacing : 0)
label: FluText {
width: control.availableWidth
text: control.title
font: FluTextStyle.BodyStrong
elide: Text.ElideRight
verticalAlignment: Text.AlignVCenter
}
background: Rectangle {
y: control.topPadding - control.bottomPadding
width: parent.width
height: parent.height - control.topPadding + control.bottomPadding
radius: control.radius
border.color: control.borderColor
border.width: control.borderWidth
color: control.color
}
}

View File

@ -16,7 +16,7 @@ Page {
transform: Translate {
y: control.visible ? 0 : 80
Behavior on y{
enabled: control.animationEnabled
enabled: control.animationEnabled && FluTheme.animationEnabled
NumberAnimation{
duration: 167
easing.type: Easing.OutCubic
@ -24,21 +24,27 @@ Page {
}
}
Behavior on opacity {
enabled: control.animationEnabled
enabled: control.animationEnabled && FluTheme.animationEnabled
NumberAnimation{
duration: 83
}
}
background: Item{}
header: Item{
implicitHeight: 40
FluText{
id:text_title
text: control.title
font: FluTextStyle.Title
anchors{
left: parent.left
leftMargin: 5
header: FluLoader{
sourceComponent: control.title === "" ? undefined : com_header
}
Component{
id: com_header
Item{
implicitHeight: 40
FluText{
id:text_title
text: control.title
font: FluTextStyle.Title
anchors{
left: parent.left
leftMargin: 5
}
}
}
}

View File

@ -89,6 +89,7 @@ Button {
text: control.text
Layout.alignment: Qt.AlignVCenter
font: control.font
visible: text !== ""
}
}
}

View File

@ -4,7 +4,7 @@ import FluentUI
Item {
//DropShadow
property color color: FluTheme.dark ? "#FFFFFF" : "#999999"
property color color: FluTheme.dark ? "#AAAAAA" : "#999999"
property int elevation: 6
property int radius: 4
id:control

View File

@ -0,0 +1,210 @@
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import QtQuick.Window
import FluentUI
Popup {
id: control
default property alias content : container.contentData
property string title
property var header : Item{
implicitHeight: 40
FluIconButton{
id: btn_close
iconSource: FluentIcons.Clear
iconSize: 15
verticalPadding: 6
horizontalPadding: 6
width: 30
height: 30
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
leftMargin: 5
}
onClicked: {
control.visible = false
}
}
FluText{
id:text_title
text: control.title
font: FluTextStyle.Subtitle
anchors{
verticalCenter: parent.verticalCenter
left: btn_close.right
leftMargin: 5
right: parent.right
rightMargin: 5
}
}
}
property int size: 278
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside
padding: 0
modal:true
parent: Overlay.overlay
enter: {
if(d.position === FluSheetType.Top){
return enter_top
}else if(d.position === FluSheetType.Left){
return enter_left
}else if(d.position === FluSheetType.Right){
return enter_right
}else{
return enter_bottom
}
}
exit: {
if(d.position === FluSheetType.Top){
return exit_top
}else if(d.position === FluSheetType.Left){
return exit_left
}else if(d.position === FluSheetType.Right){
return exit_right
}else{
return exit_bottom
}
}
Item {
id: d
property var win: Window.window
onWinChanged: {
if(win instanceof FluWindow){
win.setHitTestVisible(container)
}
}
property int position: FluSheetType.Bottom
property int parentHeight: {
if(control.parent){
return control.parent.height
}
return control.height
}
property int parentWidth: {
if(control.parent){
return control.parent.width
}
return control.width
}
}
Transition {
id:enter_right
onRunningChanged: {
if(!running){
control.x = Qt.binding(function(){return d.parentWidth - control.width})
}
}
NumberAnimation{
property: "x"
duration: 167
from: d.parentWidth
to: d.parentWidth - control.width
easing.type: Easing.OutCubic
}
}
Transition {
id:exit_right
NumberAnimation{
property: "x"
duration: 167
from: d.parentWidth - control.width
to: d.parentWidth
easing.type: Easing.OutCubic
}
}
Transition {
id:enter_left
NumberAnimation{
property: "x"
duration: 167
from: -control.width
to: 0
easing.type: Easing.OutCubic
}
}
Transition {
id:exit_left
NumberAnimation{
property: "x"
duration: 167
from: 0
to: -control.width
easing.type: Easing.OutCubic
}
}
Transition {
id:enter_top
NumberAnimation{
property: "y"
duration: 167
from: -control.height
to: 0
easing.type: Easing.OutCubic
}
}
Transition {
id:exit_top
NumberAnimation{
property: "y"
duration: 167
from: 0
to: -control.height
easing.type: Easing.OutCubic
}
}
Transition {
id:enter_bottom
onRunningChanged: {
if(!running){
control.y = Qt.binding(function(){return d.parentHeight - control.height})
}
}
NumberAnimation{
property: "y"
duration: 167
from: d.parentHeight
to: d.parentHeight - control.height
easing.type: Easing.OutCubic
}
}
Transition {
id:exit_bottom
NumberAnimation{
property: "y"
duration: 167
from: d.parentHeight - control.height
to: d.parentHeight
easing.type: Easing.OutCubic
}
}
background: Rectangle {
FluShadow{
radius: 0
}
border.color: FluTheme.dark ? Window.active ? Qt.rgba(55/255,55/255,55/255,1):Qt.rgba(45/255,45/255,45/255,1) : Qt.rgba(226/255,229/255,234/255,1)
color: FluTheme.dark ? Window.active ? Qt.rgba(38/255,44/255,54/255,1) : Qt.rgba(39/255,39/255,39/255,1) : Qt.rgba(251/255,251/255,253/255,1)
}
Page{
id: container
anchors.fill: parent
header: control.header
background: Item{}
}
function open(position = FluSheetType.Bottom){
control.x = 0
control.y = 0
d.position = position
if(d.position === FluSheetType.Top || d.position === FluSheetType.Bottom){
control.width = Qt.binding(function(){return d.parentWidth})
control.height = size
}else{
control.width = size
control.height = Qt.binding(function(){return d.parentHeight})
}
control.visible = true
}
}