commit cfc7804e38832f3ad688e85deb0dfd316fde43a5
Author: tianzhendong <1203886034@qq.com>
Date: Tue Dec 26 16:38:19 2023 +0800
v1.0.0
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b438dbd
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,48 @@
+/*release*/
+/*debug/
+/.idea/
+/windeploy/
+users*
+*Debug
+*Release
+Makefile*
+# *.rc
+ui_*.h
+moc_*.cpp
+*.o
+moc*
+qrc*
+test_data/
+build/
+
+logs/
+
+
+.qtc_clangd
+
+*.autosave
+/.qmake.cache
+/.qmake.stash
+
+*d.dll
+*.exe
+*.html
+*.cmake
+*.cbp
+*.user
+CMakeCache.txt
+CMakeFiles/
+*autogen/
+*.ini
+
+deploy/
+
+# qtcreator generated files
+*.pro.user*
+
+
+# MinGW generated files
+*.Debug
+*.Release
+Build/
+Deploy/
diff --git a/Resources/140xfd.ico b/Resources/140xfd.ico
new file mode 100644
index 0000000..e4f26c7
Binary files /dev/null and b/Resources/140xfd.ico differ
diff --git a/Resources/140xfd.png b/Resources/140xfd.png
new file mode 100644
index 0000000..010e80c
Binary files /dev/null and b/Resources/140xfd.png differ
diff --git a/Resources/dark/darkstyle.qrc b/Resources/dark/darkstyle.qrc
new file mode 100644
index 0000000..ce0d85b
--- /dev/null
+++ b/Resources/dark/darkstyle.qrc
@@ -0,0 +1,216 @@
+
+
+
+ rc/arrow_down.png
+ rc/arrow_down@2x.png
+ rc/arrow_down_disabled.png
+ rc/arrow_down_disabled@2x.png
+ rc/arrow_down_focus.png
+ rc/arrow_down_focus@2x.png
+ rc/arrow_down_pressed.png
+ rc/arrow_down_pressed@2x.png
+ rc/arrow_left.png
+ rc/arrow_left@2x.png
+ rc/arrow_left_disabled.png
+ rc/arrow_left_disabled@2x.png
+ rc/arrow_left_focus.png
+ rc/arrow_left_focus@2x.png
+ rc/arrow_left_pressed.png
+ rc/arrow_left_pressed@2x.png
+ rc/arrow_right.png
+ rc/arrow_right@2x.png
+ rc/arrow_right_disabled.png
+ rc/arrow_right_disabled@2x.png
+ rc/arrow_right_focus.png
+ rc/arrow_right_focus@2x.png
+ rc/arrow_right_pressed.png
+ rc/arrow_right_pressed@2x.png
+ rc/arrow_up.png
+ rc/arrow_up@2x.png
+ rc/arrow_up_disabled.png
+ rc/arrow_up_disabled@2x.png
+ rc/arrow_up_focus.png
+ rc/arrow_up_focus@2x.png
+ rc/arrow_up_pressed.png
+ rc/arrow_up_pressed@2x.png
+ rc/base_icon.png
+ rc/base_icon@2x.png
+ rc/base_icon_disabled.png
+ rc/base_icon_disabled@2x.png
+ rc/base_icon_focus.png
+ rc/base_icon_focus@2x.png
+ rc/base_icon_pressed.png
+ rc/base_icon_pressed@2x.png
+ rc/branch_closed.png
+ rc/branch_closed@2x.png
+ rc/branch_closed_disabled.png
+ rc/branch_closed_disabled@2x.png
+ rc/branch_closed_focus.png
+ rc/branch_closed_focus@2x.png
+ rc/branch_closed_pressed.png
+ rc/branch_closed_pressed@2x.png
+ rc/branch_end.png
+ rc/branch_end@2x.png
+ rc/branch_end_disabled.png
+ rc/branch_end_disabled@2x.png
+ rc/branch_end_focus.png
+ rc/branch_end_focus@2x.png
+ rc/branch_end_pressed.png
+ rc/branch_end_pressed@2x.png
+ rc/branch_line.png
+ rc/branch_line@2x.png
+ rc/branch_line_disabled.png
+ rc/branch_line_disabled@2x.png
+ rc/branch_line_focus.png
+ rc/branch_line_focus@2x.png
+ rc/branch_line_pressed.png
+ rc/branch_line_pressed@2x.png
+ rc/branch_more.png
+ rc/branch_more@2x.png
+ rc/branch_more_disabled.png
+ rc/branch_more_disabled@2x.png
+ rc/branch_more_focus.png
+ rc/branch_more_focus@2x.png
+ rc/branch_more_pressed.png
+ rc/branch_more_pressed@2x.png
+ rc/branch_open.png
+ rc/branch_open@2x.png
+ rc/branch_open_disabled.png
+ rc/branch_open_disabled@2x.png
+ rc/branch_open_focus.png
+ rc/branch_open_focus@2x.png
+ rc/branch_open_pressed.png
+ rc/branch_open_pressed@2x.png
+ rc/checkbox_checked.png
+ rc/checkbox_checked@2x.png
+ rc/checkbox_checked_disabled.png
+ rc/checkbox_checked_disabled@2x.png
+ rc/checkbox_checked_focus.png
+ rc/checkbox_checked_focus@2x.png
+ rc/checkbox_checked_pressed.png
+ rc/checkbox_checked_pressed@2x.png
+ rc/checkbox_indeterminate.png
+ rc/checkbox_indeterminate@2x.png
+ rc/checkbox_indeterminate_disabled.png
+ rc/checkbox_indeterminate_disabled@2x.png
+ rc/checkbox_indeterminate_focus.png
+ rc/checkbox_indeterminate_focus@2x.png
+ rc/checkbox_indeterminate_pressed.png
+ rc/checkbox_indeterminate_pressed@2x.png
+ rc/checkbox_unchecked.png
+ rc/checkbox_unchecked@2x.png
+ rc/checkbox_unchecked_disabled.png
+ rc/checkbox_unchecked_disabled@2x.png
+ rc/checkbox_unchecked_focus.png
+ rc/checkbox_unchecked_focus@2x.png
+ rc/checkbox_unchecked_pressed.png
+ rc/checkbox_unchecked_pressed@2x.png
+ rc/line_horizontal.png
+ rc/line_horizontal@2x.png
+ rc/line_horizontal_disabled.png
+ rc/line_horizontal_disabled@2x.png
+ rc/line_horizontal_focus.png
+ rc/line_horizontal_focus@2x.png
+ rc/line_horizontal_pressed.png
+ rc/line_horizontal_pressed@2x.png
+ rc/line_vertical.png
+ rc/line_vertical@2x.png
+ rc/line_vertical_disabled.png
+ rc/line_vertical_disabled@2x.png
+ rc/line_vertical_focus.png
+ rc/line_vertical_focus@2x.png
+ rc/line_vertical_pressed.png
+ rc/line_vertical_pressed@2x.png
+ rc/radio_checked.png
+ rc/radio_checked@2x.png
+ rc/radio_checked_disabled.png
+ rc/radio_checked_disabled@2x.png
+ rc/radio_checked_focus.png
+ rc/radio_checked_focus@2x.png
+ rc/radio_checked_pressed.png
+ rc/radio_checked_pressed@2x.png
+ rc/radio_unchecked.png
+ rc/radio_unchecked@2x.png
+ rc/radio_unchecked_disabled.png
+ rc/radio_unchecked_disabled@2x.png
+ rc/radio_unchecked_focus.png
+ rc/radio_unchecked_focus@2x.png
+ rc/radio_unchecked_pressed.png
+ rc/radio_unchecked_pressed@2x.png
+ rc/toolbar_move_horizontal.png
+ rc/toolbar_move_horizontal@2x.png
+ rc/toolbar_move_horizontal_disabled.png
+ rc/toolbar_move_horizontal_disabled@2x.png
+ rc/toolbar_move_horizontal_focus.png
+ rc/toolbar_move_horizontal_focus@2x.png
+ rc/toolbar_move_horizontal_pressed.png
+ rc/toolbar_move_horizontal_pressed@2x.png
+ rc/toolbar_move_vertical.png
+ rc/toolbar_move_vertical@2x.png
+ rc/toolbar_move_vertical_disabled.png
+ rc/toolbar_move_vertical_disabled@2x.png
+ rc/toolbar_move_vertical_focus.png
+ rc/toolbar_move_vertical_focus@2x.png
+ rc/toolbar_move_vertical_pressed.png
+ rc/toolbar_move_vertical_pressed@2x.png
+ rc/toolbar_separator_horizontal.png
+ rc/toolbar_separator_horizontal@2x.png
+ rc/toolbar_separator_horizontal_disabled.png
+ rc/toolbar_separator_horizontal_disabled@2x.png
+ rc/toolbar_separator_horizontal_focus.png
+ rc/toolbar_separator_horizontal_focus@2x.png
+ rc/toolbar_separator_horizontal_pressed.png
+ rc/toolbar_separator_horizontal_pressed@2x.png
+ rc/toolbar_separator_vertical.png
+ rc/toolbar_separator_vertical@2x.png
+ rc/toolbar_separator_vertical_disabled.png
+ rc/toolbar_separator_vertical_disabled@2x.png
+ rc/toolbar_separator_vertical_focus.png
+ rc/toolbar_separator_vertical_focus@2x.png
+ rc/toolbar_separator_vertical_pressed.png
+ rc/toolbar_separator_vertical_pressed@2x.png
+ rc/transparent.png
+ rc/transparent@2x.png
+ rc/transparent_disabled.png
+ rc/transparent_disabled@2x.png
+ rc/transparent_focus.png
+ rc/transparent_focus@2x.png
+ rc/transparent_pressed.png
+ rc/transparent_pressed@2x.png
+ rc/window_close.png
+ rc/window_close@2x.png
+ rc/window_close_disabled.png
+ rc/window_close_disabled@2x.png
+ rc/window_close_focus.png
+ rc/window_close_focus@2x.png
+ rc/window_close_pressed.png
+ rc/window_close_pressed@2x.png
+ rc/window_grip.png
+ rc/window_grip@2x.png
+ rc/window_grip_disabled.png
+ rc/window_grip_disabled@2x.png
+ rc/window_grip_focus.png
+ rc/window_grip_focus@2x.png
+ rc/window_grip_pressed.png
+ rc/window_grip_pressed@2x.png
+ rc/window_minimize.png
+ rc/window_minimize@2x.png
+ rc/window_minimize_disabled.png
+ rc/window_minimize_disabled@2x.png
+ rc/window_minimize_focus.png
+ rc/window_minimize_focus@2x.png
+ rc/window_minimize_pressed.png
+ rc/window_minimize_pressed@2x.png
+ rc/window_undock.png
+ rc/window_undock@2x.png
+ rc/window_undock_disabled.png
+ rc/window_undock_disabled@2x.png
+ rc/window_undock_focus.png
+ rc/window_undock_focus@2x.png
+ rc/window_undock_pressed.png
+ rc/window_undock_pressed@2x.png
+
+
+ darkstyle.qss
+
+
diff --git a/Resources/dark/darkstyle.qss b/Resources/dark/darkstyle.qss
new file mode 100644
index 0000000..f40a488
--- /dev/null
+++ b/Resources/dark/darkstyle.qss
@@ -0,0 +1,89 @@
+#MainWindow
+{
+ background-color:#161929;
+ color: white;
+}
+
+QWidget{
+ background-color:#161929;
+ color: white;
+}
+
+QComboBox{
+ border-width: 1px;
+ border-color: #1677ff;
+ border-style: solid;
+ color: white;
+}
+
+QComboBox:disabled{
+ /* background-color: #9a9a9a; */
+ border-width: 1px;
+ border-color: #9a9a9a;
+ border-style: solid;
+ color: white;
+}
+
+QLineEdit{
+ border-width: 1px;
+ border-color: #1677ff;
+ border-style: solid;
+ color: white;
+}
+
+QLineEdit:disabled{
+ /* background-color: #9a9a9a; */
+ border-width: 1px;
+ border-color: #9a9a9a;
+ border-style: solid;
+ color: white;
+}
+
+QLabel {
+ background-color: transparent;
+ color: white;
+}
+
+QPushButton{
+ background-color: #1677ff;
+ border-radius: 5px;
+ /* outline: none; */
+ min-height: 30px;
+ min-width: 100px;
+ border: none;
+ color: white;
+}
+
+QPushButton:hover{
+ background-color: #045dd8;
+ /* border-radius: 5px; */
+ /* outline: none; */
+ min-height: 30px;
+ min-width: 100px;
+ border: none;
+ color: white;
+}
+
+QPushButton:pressed{
+ background-color: #01347b;
+ /* border-radius: 10px; */
+ /* outline: none; */
+ min-height: 30px;
+ min-width: 100px;
+ border: none;
+ color: white;
+}
+
+QPushButton:disabled{
+ background-color: #8a8f92;
+ /* border-radius: 10px; */
+ /* outline: none; */
+ min-height: 30px;
+ min-width: 100px;
+ border: none;
+ color: E0E1E3;
+}
+
+QPlainTextEdit{
+transparent;
+}
diff --git a/Resources/dark/rc/.keep b/Resources/dark/rc/.keep
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/Resources/dark/rc/.keep
@@ -0,0 +1 @@
+
diff --git a/Resources/dark/rc/arrow_down.png b/Resources/dark/rc/arrow_down.png
new file mode 100644
index 0000000..aa9938a
Binary files /dev/null and b/Resources/dark/rc/arrow_down.png differ
diff --git a/Resources/dark/rc/arrow_down@2x.png b/Resources/dark/rc/arrow_down@2x.png
new file mode 100644
index 0000000..c1f3346
Binary files /dev/null and b/Resources/dark/rc/arrow_down@2x.png differ
diff --git a/Resources/dark/rc/arrow_down_disabled.png b/Resources/dark/rc/arrow_down_disabled.png
new file mode 100644
index 0000000..972df9c
Binary files /dev/null and b/Resources/dark/rc/arrow_down_disabled.png differ
diff --git a/Resources/dark/rc/arrow_down_disabled@2x.png b/Resources/dark/rc/arrow_down_disabled@2x.png
new file mode 100644
index 0000000..b0fb4ad
Binary files /dev/null and b/Resources/dark/rc/arrow_down_disabled@2x.png differ
diff --git a/Resources/dark/rc/arrow_down_focus.png b/Resources/dark/rc/arrow_down_focus.png
new file mode 100644
index 0000000..22df2c5
Binary files /dev/null and b/Resources/dark/rc/arrow_down_focus.png differ
diff --git a/Resources/dark/rc/arrow_down_focus@2x.png b/Resources/dark/rc/arrow_down_focus@2x.png
new file mode 100644
index 0000000..06b80be
Binary files /dev/null and b/Resources/dark/rc/arrow_down_focus@2x.png differ
diff --git a/Resources/dark/rc/arrow_down_pressed.png b/Resources/dark/rc/arrow_down_pressed.png
new file mode 100644
index 0000000..50f41cc
Binary files /dev/null and b/Resources/dark/rc/arrow_down_pressed.png differ
diff --git a/Resources/dark/rc/arrow_down_pressed@2x.png b/Resources/dark/rc/arrow_down_pressed@2x.png
new file mode 100644
index 0000000..ef20f2c
Binary files /dev/null and b/Resources/dark/rc/arrow_down_pressed@2x.png differ
diff --git a/Resources/dark/rc/arrow_left.png b/Resources/dark/rc/arrow_left.png
new file mode 100644
index 0000000..c898136
Binary files /dev/null and b/Resources/dark/rc/arrow_left.png differ
diff --git a/Resources/dark/rc/arrow_left@2x.png b/Resources/dark/rc/arrow_left@2x.png
new file mode 100644
index 0000000..129d2e1
Binary files /dev/null and b/Resources/dark/rc/arrow_left@2x.png differ
diff --git a/Resources/dark/rc/arrow_left_disabled.png b/Resources/dark/rc/arrow_left_disabled.png
new file mode 100644
index 0000000..79b1f05
Binary files /dev/null and b/Resources/dark/rc/arrow_left_disabled.png differ
diff --git a/Resources/dark/rc/arrow_left_disabled@2x.png b/Resources/dark/rc/arrow_left_disabled@2x.png
new file mode 100644
index 0000000..144fdb5
Binary files /dev/null and b/Resources/dark/rc/arrow_left_disabled@2x.png differ
diff --git a/Resources/dark/rc/arrow_left_focus.png b/Resources/dark/rc/arrow_left_focus.png
new file mode 100644
index 0000000..ef02849
Binary files /dev/null and b/Resources/dark/rc/arrow_left_focus.png differ
diff --git a/Resources/dark/rc/arrow_left_focus@2x.png b/Resources/dark/rc/arrow_left_focus@2x.png
new file mode 100644
index 0000000..ca821dc
Binary files /dev/null and b/Resources/dark/rc/arrow_left_focus@2x.png differ
diff --git a/Resources/dark/rc/arrow_left_pressed.png b/Resources/dark/rc/arrow_left_pressed.png
new file mode 100644
index 0000000..c723d3b
Binary files /dev/null and b/Resources/dark/rc/arrow_left_pressed.png differ
diff --git a/Resources/dark/rc/arrow_left_pressed@2x.png b/Resources/dark/rc/arrow_left_pressed@2x.png
new file mode 100644
index 0000000..f0bcb52
Binary files /dev/null and b/Resources/dark/rc/arrow_left_pressed@2x.png differ
diff --git a/Resources/dark/rc/arrow_right.png b/Resources/dark/rc/arrow_right.png
new file mode 100644
index 0000000..86bc42a
Binary files /dev/null and b/Resources/dark/rc/arrow_right.png differ
diff --git a/Resources/dark/rc/arrow_right@2x.png b/Resources/dark/rc/arrow_right@2x.png
new file mode 100644
index 0000000..4526704
Binary files /dev/null and b/Resources/dark/rc/arrow_right@2x.png differ
diff --git a/Resources/dark/rc/arrow_right_disabled.png b/Resources/dark/rc/arrow_right_disabled.png
new file mode 100644
index 0000000..88da1f9
Binary files /dev/null and b/Resources/dark/rc/arrow_right_disabled.png differ
diff --git a/Resources/dark/rc/arrow_right_disabled@2x.png b/Resources/dark/rc/arrow_right_disabled@2x.png
new file mode 100644
index 0000000..5351587
Binary files /dev/null and b/Resources/dark/rc/arrow_right_disabled@2x.png differ
diff --git a/Resources/dark/rc/arrow_right_focus.png b/Resources/dark/rc/arrow_right_focus.png
new file mode 100644
index 0000000..92271a8
Binary files /dev/null and b/Resources/dark/rc/arrow_right_focus.png differ
diff --git a/Resources/dark/rc/arrow_right_focus@2x.png b/Resources/dark/rc/arrow_right_focus@2x.png
new file mode 100644
index 0000000..d6c31bd
Binary files /dev/null and b/Resources/dark/rc/arrow_right_focus@2x.png differ
diff --git a/Resources/dark/rc/arrow_right_pressed.png b/Resources/dark/rc/arrow_right_pressed.png
new file mode 100644
index 0000000..22902cf
Binary files /dev/null and b/Resources/dark/rc/arrow_right_pressed.png differ
diff --git a/Resources/dark/rc/arrow_right_pressed@2x.png b/Resources/dark/rc/arrow_right_pressed@2x.png
new file mode 100644
index 0000000..f6181eb
Binary files /dev/null and b/Resources/dark/rc/arrow_right_pressed@2x.png differ
diff --git a/Resources/dark/rc/arrow_up.png b/Resources/dark/rc/arrow_up.png
new file mode 100644
index 0000000..5ade740
Binary files /dev/null and b/Resources/dark/rc/arrow_up.png differ
diff --git a/Resources/dark/rc/arrow_up@2x.png b/Resources/dark/rc/arrow_up@2x.png
new file mode 100644
index 0000000..65276ab
Binary files /dev/null and b/Resources/dark/rc/arrow_up@2x.png differ
diff --git a/Resources/dark/rc/arrow_up_disabled.png b/Resources/dark/rc/arrow_up_disabled.png
new file mode 100644
index 0000000..48054a8
Binary files /dev/null and b/Resources/dark/rc/arrow_up_disabled.png differ
diff --git a/Resources/dark/rc/arrow_up_disabled@2x.png b/Resources/dark/rc/arrow_up_disabled@2x.png
new file mode 100644
index 0000000..e999605
Binary files /dev/null and b/Resources/dark/rc/arrow_up_disabled@2x.png differ
diff --git a/Resources/dark/rc/arrow_up_focus.png b/Resources/dark/rc/arrow_up_focus.png
new file mode 100644
index 0000000..567ec8b
Binary files /dev/null and b/Resources/dark/rc/arrow_up_focus.png differ
diff --git a/Resources/dark/rc/arrow_up_focus@2x.png b/Resources/dark/rc/arrow_up_focus@2x.png
new file mode 100644
index 0000000..f699810
Binary files /dev/null and b/Resources/dark/rc/arrow_up_focus@2x.png differ
diff --git a/Resources/dark/rc/arrow_up_pressed.png b/Resources/dark/rc/arrow_up_pressed.png
new file mode 100644
index 0000000..2233201
Binary files /dev/null and b/Resources/dark/rc/arrow_up_pressed.png differ
diff --git a/Resources/dark/rc/arrow_up_pressed@2x.png b/Resources/dark/rc/arrow_up_pressed@2x.png
new file mode 100644
index 0000000..9954cf5
Binary files /dev/null and b/Resources/dark/rc/arrow_up_pressed@2x.png differ
diff --git a/Resources/dark/rc/base_icon.png b/Resources/dark/rc/base_icon.png
new file mode 100644
index 0000000..bb00857
Binary files /dev/null and b/Resources/dark/rc/base_icon.png differ
diff --git a/Resources/dark/rc/base_icon@2x.png b/Resources/dark/rc/base_icon@2x.png
new file mode 100644
index 0000000..bc4ab78
Binary files /dev/null and b/Resources/dark/rc/base_icon@2x.png differ
diff --git a/Resources/dark/rc/base_icon_disabled.png b/Resources/dark/rc/base_icon_disabled.png
new file mode 100644
index 0000000..bb00857
Binary files /dev/null and b/Resources/dark/rc/base_icon_disabled.png differ
diff --git a/Resources/dark/rc/base_icon_disabled@2x.png b/Resources/dark/rc/base_icon_disabled@2x.png
new file mode 100644
index 0000000..bc4ab78
Binary files /dev/null and b/Resources/dark/rc/base_icon_disabled@2x.png differ
diff --git a/Resources/dark/rc/base_icon_focus.png b/Resources/dark/rc/base_icon_focus.png
new file mode 100644
index 0000000..bb00857
Binary files /dev/null and b/Resources/dark/rc/base_icon_focus.png differ
diff --git a/Resources/dark/rc/base_icon_focus@2x.png b/Resources/dark/rc/base_icon_focus@2x.png
new file mode 100644
index 0000000..bc4ab78
Binary files /dev/null and b/Resources/dark/rc/base_icon_focus@2x.png differ
diff --git a/Resources/dark/rc/base_icon_pressed.png b/Resources/dark/rc/base_icon_pressed.png
new file mode 100644
index 0000000..bb00857
Binary files /dev/null and b/Resources/dark/rc/base_icon_pressed.png differ
diff --git a/Resources/dark/rc/base_icon_pressed@2x.png b/Resources/dark/rc/base_icon_pressed@2x.png
new file mode 100644
index 0000000..bc4ab78
Binary files /dev/null and b/Resources/dark/rc/base_icon_pressed@2x.png differ
diff --git a/Resources/dark/rc/branch_closed.png b/Resources/dark/rc/branch_closed.png
new file mode 100644
index 0000000..2ef5957
Binary files /dev/null and b/Resources/dark/rc/branch_closed.png differ
diff --git a/Resources/dark/rc/branch_closed@2x.png b/Resources/dark/rc/branch_closed@2x.png
new file mode 100644
index 0000000..564ba0e
Binary files /dev/null and b/Resources/dark/rc/branch_closed@2x.png differ
diff --git a/Resources/dark/rc/branch_closed_disabled.png b/Resources/dark/rc/branch_closed_disabled.png
new file mode 100644
index 0000000..165fae2
Binary files /dev/null and b/Resources/dark/rc/branch_closed_disabled.png differ
diff --git a/Resources/dark/rc/branch_closed_disabled@2x.png b/Resources/dark/rc/branch_closed_disabled@2x.png
new file mode 100644
index 0000000..421e8e0
Binary files /dev/null and b/Resources/dark/rc/branch_closed_disabled@2x.png differ
diff --git a/Resources/dark/rc/branch_closed_focus.png b/Resources/dark/rc/branch_closed_focus.png
new file mode 100644
index 0000000..ccc249a
Binary files /dev/null and b/Resources/dark/rc/branch_closed_focus.png differ
diff --git a/Resources/dark/rc/branch_closed_focus@2x.png b/Resources/dark/rc/branch_closed_focus@2x.png
new file mode 100644
index 0000000..88dd0a6
Binary files /dev/null and b/Resources/dark/rc/branch_closed_focus@2x.png differ
diff --git a/Resources/dark/rc/branch_closed_pressed.png b/Resources/dark/rc/branch_closed_pressed.png
new file mode 100644
index 0000000..2aae68a
Binary files /dev/null and b/Resources/dark/rc/branch_closed_pressed.png differ
diff --git a/Resources/dark/rc/branch_closed_pressed@2x.png b/Resources/dark/rc/branch_closed_pressed@2x.png
new file mode 100644
index 0000000..3849a7f
Binary files /dev/null and b/Resources/dark/rc/branch_closed_pressed@2x.png differ
diff --git a/Resources/dark/rc/branch_end.png b/Resources/dark/rc/branch_end.png
new file mode 100644
index 0000000..85de228
Binary files /dev/null and b/Resources/dark/rc/branch_end.png differ
diff --git a/Resources/dark/rc/branch_end@2x.png b/Resources/dark/rc/branch_end@2x.png
new file mode 100644
index 0000000..9f99c24
Binary files /dev/null and b/Resources/dark/rc/branch_end@2x.png differ
diff --git a/Resources/dark/rc/branch_end_disabled.png b/Resources/dark/rc/branch_end_disabled.png
new file mode 100644
index 0000000..bb4344c
Binary files /dev/null and b/Resources/dark/rc/branch_end_disabled.png differ
diff --git a/Resources/dark/rc/branch_end_disabled@2x.png b/Resources/dark/rc/branch_end_disabled@2x.png
new file mode 100644
index 0000000..8feb46d
Binary files /dev/null and b/Resources/dark/rc/branch_end_disabled@2x.png differ
diff --git a/Resources/dark/rc/branch_end_focus.png b/Resources/dark/rc/branch_end_focus.png
new file mode 100644
index 0000000..ff713cf
Binary files /dev/null and b/Resources/dark/rc/branch_end_focus.png differ
diff --git a/Resources/dark/rc/branch_end_focus@2x.png b/Resources/dark/rc/branch_end_focus@2x.png
new file mode 100644
index 0000000..0bd0e4b
Binary files /dev/null and b/Resources/dark/rc/branch_end_focus@2x.png differ
diff --git a/Resources/dark/rc/branch_end_pressed.png b/Resources/dark/rc/branch_end_pressed.png
new file mode 100644
index 0000000..2020162
Binary files /dev/null and b/Resources/dark/rc/branch_end_pressed.png differ
diff --git a/Resources/dark/rc/branch_end_pressed@2x.png b/Resources/dark/rc/branch_end_pressed@2x.png
new file mode 100644
index 0000000..2a5c4fa
Binary files /dev/null and b/Resources/dark/rc/branch_end_pressed@2x.png differ
diff --git a/Resources/dark/rc/branch_line.png b/Resources/dark/rc/branch_line.png
new file mode 100644
index 0000000..803e6a4
Binary files /dev/null and b/Resources/dark/rc/branch_line.png differ
diff --git a/Resources/dark/rc/branch_line@2x.png b/Resources/dark/rc/branch_line@2x.png
new file mode 100644
index 0000000..4236fe5
Binary files /dev/null and b/Resources/dark/rc/branch_line@2x.png differ
diff --git a/Resources/dark/rc/branch_line_disabled.png b/Resources/dark/rc/branch_line_disabled.png
new file mode 100644
index 0000000..9c8c47b
Binary files /dev/null and b/Resources/dark/rc/branch_line_disabled.png differ
diff --git a/Resources/dark/rc/branch_line_disabled@2x.png b/Resources/dark/rc/branch_line_disabled@2x.png
new file mode 100644
index 0000000..9b868f2
Binary files /dev/null and b/Resources/dark/rc/branch_line_disabled@2x.png differ
diff --git a/Resources/dark/rc/branch_line_focus.png b/Resources/dark/rc/branch_line_focus.png
new file mode 100644
index 0000000..c2ab3e1
Binary files /dev/null and b/Resources/dark/rc/branch_line_focus.png differ
diff --git a/Resources/dark/rc/branch_line_focus@2x.png b/Resources/dark/rc/branch_line_focus@2x.png
new file mode 100644
index 0000000..512ee13
Binary files /dev/null and b/Resources/dark/rc/branch_line_focus@2x.png differ
diff --git a/Resources/dark/rc/branch_line_pressed.png b/Resources/dark/rc/branch_line_pressed.png
new file mode 100644
index 0000000..3ca15c5
Binary files /dev/null and b/Resources/dark/rc/branch_line_pressed.png differ
diff --git a/Resources/dark/rc/branch_line_pressed@2x.png b/Resources/dark/rc/branch_line_pressed@2x.png
new file mode 100644
index 0000000..3685531
Binary files /dev/null and b/Resources/dark/rc/branch_line_pressed@2x.png differ
diff --git a/Resources/dark/rc/branch_more.png b/Resources/dark/rc/branch_more.png
new file mode 100644
index 0000000..a664c2a
Binary files /dev/null and b/Resources/dark/rc/branch_more.png differ
diff --git a/Resources/dark/rc/branch_more@2x.png b/Resources/dark/rc/branch_more@2x.png
new file mode 100644
index 0000000..1e7b08a
Binary files /dev/null and b/Resources/dark/rc/branch_more@2x.png differ
diff --git a/Resources/dark/rc/branch_more_disabled.png b/Resources/dark/rc/branch_more_disabled.png
new file mode 100644
index 0000000..29d99a6
Binary files /dev/null and b/Resources/dark/rc/branch_more_disabled.png differ
diff --git a/Resources/dark/rc/branch_more_disabled@2x.png b/Resources/dark/rc/branch_more_disabled@2x.png
new file mode 100644
index 0000000..aba8303
Binary files /dev/null and b/Resources/dark/rc/branch_more_disabled@2x.png differ
diff --git a/Resources/dark/rc/branch_more_focus.png b/Resources/dark/rc/branch_more_focus.png
new file mode 100644
index 0000000..20a6f27
Binary files /dev/null and b/Resources/dark/rc/branch_more_focus.png differ
diff --git a/Resources/dark/rc/branch_more_focus@2x.png b/Resources/dark/rc/branch_more_focus@2x.png
new file mode 100644
index 0000000..6f42eea
Binary files /dev/null and b/Resources/dark/rc/branch_more_focus@2x.png differ
diff --git a/Resources/dark/rc/branch_more_pressed.png b/Resources/dark/rc/branch_more_pressed.png
new file mode 100644
index 0000000..4f4d9fb
Binary files /dev/null and b/Resources/dark/rc/branch_more_pressed.png differ
diff --git a/Resources/dark/rc/branch_more_pressed@2x.png b/Resources/dark/rc/branch_more_pressed@2x.png
new file mode 100644
index 0000000..5f18f83
Binary files /dev/null and b/Resources/dark/rc/branch_more_pressed@2x.png differ
diff --git a/Resources/dark/rc/branch_open.png b/Resources/dark/rc/branch_open.png
new file mode 100644
index 0000000..1ff7b48
Binary files /dev/null and b/Resources/dark/rc/branch_open.png differ
diff --git a/Resources/dark/rc/branch_open@2x.png b/Resources/dark/rc/branch_open@2x.png
new file mode 100644
index 0000000..aad66f8
Binary files /dev/null and b/Resources/dark/rc/branch_open@2x.png differ
diff --git a/Resources/dark/rc/branch_open_disabled.png b/Resources/dark/rc/branch_open_disabled.png
new file mode 100644
index 0000000..8328e84
Binary files /dev/null and b/Resources/dark/rc/branch_open_disabled.png differ
diff --git a/Resources/dark/rc/branch_open_disabled@2x.png b/Resources/dark/rc/branch_open_disabled@2x.png
new file mode 100644
index 0000000..d8d0fae
Binary files /dev/null and b/Resources/dark/rc/branch_open_disabled@2x.png differ
diff --git a/Resources/dark/rc/branch_open_focus.png b/Resources/dark/rc/branch_open_focus.png
new file mode 100644
index 0000000..711ce09
Binary files /dev/null and b/Resources/dark/rc/branch_open_focus.png differ
diff --git a/Resources/dark/rc/branch_open_focus@2x.png b/Resources/dark/rc/branch_open_focus@2x.png
new file mode 100644
index 0000000..b38e17a
Binary files /dev/null and b/Resources/dark/rc/branch_open_focus@2x.png differ
diff --git a/Resources/dark/rc/branch_open_pressed.png b/Resources/dark/rc/branch_open_pressed.png
new file mode 100644
index 0000000..441c273
Binary files /dev/null and b/Resources/dark/rc/branch_open_pressed.png differ
diff --git a/Resources/dark/rc/branch_open_pressed@2x.png b/Resources/dark/rc/branch_open_pressed@2x.png
new file mode 100644
index 0000000..0e43e8b
Binary files /dev/null and b/Resources/dark/rc/branch_open_pressed@2x.png differ
diff --git a/Resources/dark/rc/checkbox_checked.png b/Resources/dark/rc/checkbox_checked.png
new file mode 100644
index 0000000..f860ca7
Binary files /dev/null and b/Resources/dark/rc/checkbox_checked.png differ
diff --git a/Resources/dark/rc/checkbox_checked@2x.png b/Resources/dark/rc/checkbox_checked@2x.png
new file mode 100644
index 0000000..48773d7
Binary files /dev/null and b/Resources/dark/rc/checkbox_checked@2x.png differ
diff --git a/Resources/dark/rc/checkbox_checked_disabled.png b/Resources/dark/rc/checkbox_checked_disabled.png
new file mode 100644
index 0000000..e3cb2f1
Binary files /dev/null and b/Resources/dark/rc/checkbox_checked_disabled.png differ
diff --git a/Resources/dark/rc/checkbox_checked_disabled@2x.png b/Resources/dark/rc/checkbox_checked_disabled@2x.png
new file mode 100644
index 0000000..0c8c28a
Binary files /dev/null and b/Resources/dark/rc/checkbox_checked_disabled@2x.png differ
diff --git a/Resources/dark/rc/checkbox_checked_focus.png b/Resources/dark/rc/checkbox_checked_focus.png
new file mode 100644
index 0000000..58982ce
Binary files /dev/null and b/Resources/dark/rc/checkbox_checked_focus.png differ
diff --git a/Resources/dark/rc/checkbox_checked_focus@2x.png b/Resources/dark/rc/checkbox_checked_focus@2x.png
new file mode 100644
index 0000000..ba33ba4
Binary files /dev/null and b/Resources/dark/rc/checkbox_checked_focus@2x.png differ
diff --git a/Resources/dark/rc/checkbox_checked_pressed.png b/Resources/dark/rc/checkbox_checked_pressed.png
new file mode 100644
index 0000000..f104bb2
Binary files /dev/null and b/Resources/dark/rc/checkbox_checked_pressed.png differ
diff --git a/Resources/dark/rc/checkbox_checked_pressed@2x.png b/Resources/dark/rc/checkbox_checked_pressed@2x.png
new file mode 100644
index 0000000..bb972d6
Binary files /dev/null and b/Resources/dark/rc/checkbox_checked_pressed@2x.png differ
diff --git a/Resources/dark/rc/checkbox_indeterminate.png b/Resources/dark/rc/checkbox_indeterminate.png
new file mode 100644
index 0000000..85672bf
Binary files /dev/null and b/Resources/dark/rc/checkbox_indeterminate.png differ
diff --git a/Resources/dark/rc/checkbox_indeterminate@2x.png b/Resources/dark/rc/checkbox_indeterminate@2x.png
new file mode 100644
index 0000000..2bb2452
Binary files /dev/null and b/Resources/dark/rc/checkbox_indeterminate@2x.png differ
diff --git a/Resources/dark/rc/checkbox_indeterminate_disabled.png b/Resources/dark/rc/checkbox_indeterminate_disabled.png
new file mode 100644
index 0000000..181625a
Binary files /dev/null and b/Resources/dark/rc/checkbox_indeterminate_disabled.png differ
diff --git a/Resources/dark/rc/checkbox_indeterminate_disabled@2x.png b/Resources/dark/rc/checkbox_indeterminate_disabled@2x.png
new file mode 100644
index 0000000..0d32c78
Binary files /dev/null and b/Resources/dark/rc/checkbox_indeterminate_disabled@2x.png differ
diff --git a/Resources/dark/rc/checkbox_indeterminate_focus.png b/Resources/dark/rc/checkbox_indeterminate_focus.png
new file mode 100644
index 0000000..d7b19f6
Binary files /dev/null and b/Resources/dark/rc/checkbox_indeterminate_focus.png differ
diff --git a/Resources/dark/rc/checkbox_indeterminate_focus@2x.png b/Resources/dark/rc/checkbox_indeterminate_focus@2x.png
new file mode 100644
index 0000000..d6403ca
Binary files /dev/null and b/Resources/dark/rc/checkbox_indeterminate_focus@2x.png differ
diff --git a/Resources/dark/rc/checkbox_indeterminate_pressed.png b/Resources/dark/rc/checkbox_indeterminate_pressed.png
new file mode 100644
index 0000000..37f46ca
Binary files /dev/null and b/Resources/dark/rc/checkbox_indeterminate_pressed.png differ
diff --git a/Resources/dark/rc/checkbox_indeterminate_pressed@2x.png b/Resources/dark/rc/checkbox_indeterminate_pressed@2x.png
new file mode 100644
index 0000000..aa7493e
Binary files /dev/null and b/Resources/dark/rc/checkbox_indeterminate_pressed@2x.png differ
diff --git a/Resources/dark/rc/checkbox_unchecked.png b/Resources/dark/rc/checkbox_unchecked.png
new file mode 100644
index 0000000..172b90a
Binary files /dev/null and b/Resources/dark/rc/checkbox_unchecked.png differ
diff --git a/Resources/dark/rc/checkbox_unchecked@2x.png b/Resources/dark/rc/checkbox_unchecked@2x.png
new file mode 100644
index 0000000..f54b080
Binary files /dev/null and b/Resources/dark/rc/checkbox_unchecked@2x.png differ
diff --git a/Resources/dark/rc/checkbox_unchecked_disabled.png b/Resources/dark/rc/checkbox_unchecked_disabled.png
new file mode 100644
index 0000000..066185e
Binary files /dev/null and b/Resources/dark/rc/checkbox_unchecked_disabled.png differ
diff --git a/Resources/dark/rc/checkbox_unchecked_disabled@2x.png b/Resources/dark/rc/checkbox_unchecked_disabled@2x.png
new file mode 100644
index 0000000..9c80ad7
Binary files /dev/null and b/Resources/dark/rc/checkbox_unchecked_disabled@2x.png differ
diff --git a/Resources/dark/rc/checkbox_unchecked_focus.png b/Resources/dark/rc/checkbox_unchecked_focus.png
new file mode 100644
index 0000000..366b868
Binary files /dev/null and b/Resources/dark/rc/checkbox_unchecked_focus.png differ
diff --git a/Resources/dark/rc/checkbox_unchecked_focus@2x.png b/Resources/dark/rc/checkbox_unchecked_focus@2x.png
new file mode 100644
index 0000000..4ab2173
Binary files /dev/null and b/Resources/dark/rc/checkbox_unchecked_focus@2x.png differ
diff --git a/Resources/dark/rc/checkbox_unchecked_pressed.png b/Resources/dark/rc/checkbox_unchecked_pressed.png
new file mode 100644
index 0000000..d9a0bf7
Binary files /dev/null and b/Resources/dark/rc/checkbox_unchecked_pressed.png differ
diff --git a/Resources/dark/rc/checkbox_unchecked_pressed@2x.png b/Resources/dark/rc/checkbox_unchecked_pressed@2x.png
new file mode 100644
index 0000000..9e2b051
Binary files /dev/null and b/Resources/dark/rc/checkbox_unchecked_pressed@2x.png differ
diff --git a/Resources/dark/rc/line_horizontal.png b/Resources/dark/rc/line_horizontal.png
new file mode 100644
index 0000000..8774e3d
Binary files /dev/null and b/Resources/dark/rc/line_horizontal.png differ
diff --git a/Resources/dark/rc/line_horizontal@2x.png b/Resources/dark/rc/line_horizontal@2x.png
new file mode 100644
index 0000000..cb11d1d
Binary files /dev/null and b/Resources/dark/rc/line_horizontal@2x.png differ
diff --git a/Resources/dark/rc/line_horizontal_disabled.png b/Resources/dark/rc/line_horizontal_disabled.png
new file mode 100644
index 0000000..941f14a
Binary files /dev/null and b/Resources/dark/rc/line_horizontal_disabled.png differ
diff --git a/Resources/dark/rc/line_horizontal_disabled@2x.png b/Resources/dark/rc/line_horizontal_disabled@2x.png
new file mode 100644
index 0000000..972fa08
Binary files /dev/null and b/Resources/dark/rc/line_horizontal_disabled@2x.png differ
diff --git a/Resources/dark/rc/line_horizontal_focus.png b/Resources/dark/rc/line_horizontal_focus.png
new file mode 100644
index 0000000..221fd46
Binary files /dev/null and b/Resources/dark/rc/line_horizontal_focus.png differ
diff --git a/Resources/dark/rc/line_horizontal_focus@2x.png b/Resources/dark/rc/line_horizontal_focus@2x.png
new file mode 100644
index 0000000..7e6505c
Binary files /dev/null and b/Resources/dark/rc/line_horizontal_focus@2x.png differ
diff --git a/Resources/dark/rc/line_horizontal_pressed.png b/Resources/dark/rc/line_horizontal_pressed.png
new file mode 100644
index 0000000..9f91133
Binary files /dev/null and b/Resources/dark/rc/line_horizontal_pressed.png differ
diff --git a/Resources/dark/rc/line_horizontal_pressed@2x.png b/Resources/dark/rc/line_horizontal_pressed@2x.png
new file mode 100644
index 0000000..465680c
Binary files /dev/null and b/Resources/dark/rc/line_horizontal_pressed@2x.png differ
diff --git a/Resources/dark/rc/line_vertical.png b/Resources/dark/rc/line_vertical.png
new file mode 100644
index 0000000..5529f41
Binary files /dev/null and b/Resources/dark/rc/line_vertical.png differ
diff --git a/Resources/dark/rc/line_vertical@2x.png b/Resources/dark/rc/line_vertical@2x.png
new file mode 100644
index 0000000..6a334e7
Binary files /dev/null and b/Resources/dark/rc/line_vertical@2x.png differ
diff --git a/Resources/dark/rc/line_vertical_disabled.png b/Resources/dark/rc/line_vertical_disabled.png
new file mode 100644
index 0000000..c7c4c89
Binary files /dev/null and b/Resources/dark/rc/line_vertical_disabled.png differ
diff --git a/Resources/dark/rc/line_vertical_disabled@2x.png b/Resources/dark/rc/line_vertical_disabled@2x.png
new file mode 100644
index 0000000..b052de5
Binary files /dev/null and b/Resources/dark/rc/line_vertical_disabled@2x.png differ
diff --git a/Resources/dark/rc/line_vertical_focus.png b/Resources/dark/rc/line_vertical_focus.png
new file mode 100644
index 0000000..36baa09
Binary files /dev/null and b/Resources/dark/rc/line_vertical_focus.png differ
diff --git a/Resources/dark/rc/line_vertical_focus@2x.png b/Resources/dark/rc/line_vertical_focus@2x.png
new file mode 100644
index 0000000..24a2b77
Binary files /dev/null and b/Resources/dark/rc/line_vertical_focus@2x.png differ
diff --git a/Resources/dark/rc/line_vertical_pressed.png b/Resources/dark/rc/line_vertical_pressed.png
new file mode 100644
index 0000000..60e3574
Binary files /dev/null and b/Resources/dark/rc/line_vertical_pressed.png differ
diff --git a/Resources/dark/rc/line_vertical_pressed@2x.png b/Resources/dark/rc/line_vertical_pressed@2x.png
new file mode 100644
index 0000000..c949405
Binary files /dev/null and b/Resources/dark/rc/line_vertical_pressed@2x.png differ
diff --git a/Resources/dark/rc/radio_checked.png b/Resources/dark/rc/radio_checked.png
new file mode 100644
index 0000000..274afe1
Binary files /dev/null and b/Resources/dark/rc/radio_checked.png differ
diff --git a/Resources/dark/rc/radio_checked@2x.png b/Resources/dark/rc/radio_checked@2x.png
new file mode 100644
index 0000000..8c16b38
Binary files /dev/null and b/Resources/dark/rc/radio_checked@2x.png differ
diff --git a/Resources/dark/rc/radio_checked_disabled.png b/Resources/dark/rc/radio_checked_disabled.png
new file mode 100644
index 0000000..49df439
Binary files /dev/null and b/Resources/dark/rc/radio_checked_disabled.png differ
diff --git a/Resources/dark/rc/radio_checked_disabled@2x.png b/Resources/dark/rc/radio_checked_disabled@2x.png
new file mode 100644
index 0000000..a9ffd40
Binary files /dev/null and b/Resources/dark/rc/radio_checked_disabled@2x.png differ
diff --git a/Resources/dark/rc/radio_checked_focus.png b/Resources/dark/rc/radio_checked_focus.png
new file mode 100644
index 0000000..4bd472e
Binary files /dev/null and b/Resources/dark/rc/radio_checked_focus.png differ
diff --git a/Resources/dark/rc/radio_checked_focus@2x.png b/Resources/dark/rc/radio_checked_focus@2x.png
new file mode 100644
index 0000000..aed5e0c
Binary files /dev/null and b/Resources/dark/rc/radio_checked_focus@2x.png differ
diff --git a/Resources/dark/rc/radio_checked_pressed.png b/Resources/dark/rc/radio_checked_pressed.png
new file mode 100644
index 0000000..ebb323b
Binary files /dev/null and b/Resources/dark/rc/radio_checked_pressed.png differ
diff --git a/Resources/dark/rc/radio_checked_pressed@2x.png b/Resources/dark/rc/radio_checked_pressed@2x.png
new file mode 100644
index 0000000..ffe0fd8
Binary files /dev/null and b/Resources/dark/rc/radio_checked_pressed@2x.png differ
diff --git a/Resources/dark/rc/radio_unchecked.png b/Resources/dark/rc/radio_unchecked.png
new file mode 100644
index 0000000..93365a8
Binary files /dev/null and b/Resources/dark/rc/radio_unchecked.png differ
diff --git a/Resources/dark/rc/radio_unchecked@2x.png b/Resources/dark/rc/radio_unchecked@2x.png
new file mode 100644
index 0000000..8237e40
Binary files /dev/null and b/Resources/dark/rc/radio_unchecked@2x.png differ
diff --git a/Resources/dark/rc/radio_unchecked_disabled.png b/Resources/dark/rc/radio_unchecked_disabled.png
new file mode 100644
index 0000000..7ddff64
Binary files /dev/null and b/Resources/dark/rc/radio_unchecked_disabled.png differ
diff --git a/Resources/dark/rc/radio_unchecked_disabled@2x.png b/Resources/dark/rc/radio_unchecked_disabled@2x.png
new file mode 100644
index 0000000..4de5d0d
Binary files /dev/null and b/Resources/dark/rc/radio_unchecked_disabled@2x.png differ
diff --git a/Resources/dark/rc/radio_unchecked_focus.png b/Resources/dark/rc/radio_unchecked_focus.png
new file mode 100644
index 0000000..e62b996
Binary files /dev/null and b/Resources/dark/rc/radio_unchecked_focus.png differ
diff --git a/Resources/dark/rc/radio_unchecked_focus@2x.png b/Resources/dark/rc/radio_unchecked_focus@2x.png
new file mode 100644
index 0000000..eaf7bc2
Binary files /dev/null and b/Resources/dark/rc/radio_unchecked_focus@2x.png differ
diff --git a/Resources/dark/rc/radio_unchecked_pressed.png b/Resources/dark/rc/radio_unchecked_pressed.png
new file mode 100644
index 0000000..8aaa343
Binary files /dev/null and b/Resources/dark/rc/radio_unchecked_pressed.png differ
diff --git a/Resources/dark/rc/radio_unchecked_pressed@2x.png b/Resources/dark/rc/radio_unchecked_pressed@2x.png
new file mode 100644
index 0000000..ba4f83b
Binary files /dev/null and b/Resources/dark/rc/radio_unchecked_pressed@2x.png differ
diff --git a/Resources/dark/rc/toolbar_move_horizontal.png b/Resources/dark/rc/toolbar_move_horizontal.png
new file mode 100644
index 0000000..5499331
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_horizontal.png differ
diff --git a/Resources/dark/rc/toolbar_move_horizontal@2x.png b/Resources/dark/rc/toolbar_move_horizontal@2x.png
new file mode 100644
index 0000000..143b62e
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_horizontal@2x.png differ
diff --git a/Resources/dark/rc/toolbar_move_horizontal_disabled.png b/Resources/dark/rc/toolbar_move_horizontal_disabled.png
new file mode 100644
index 0000000..568b0fb
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_horizontal_disabled.png differ
diff --git a/Resources/dark/rc/toolbar_move_horizontal_disabled@2x.png b/Resources/dark/rc/toolbar_move_horizontal_disabled@2x.png
new file mode 100644
index 0000000..4d15f14
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_horizontal_disabled@2x.png differ
diff --git a/Resources/dark/rc/toolbar_move_horizontal_focus.png b/Resources/dark/rc/toolbar_move_horizontal_focus.png
new file mode 100644
index 0000000..cdb96bf
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_horizontal_focus.png differ
diff --git a/Resources/dark/rc/toolbar_move_horizontal_focus@2x.png b/Resources/dark/rc/toolbar_move_horizontal_focus@2x.png
new file mode 100644
index 0000000..23e06a0
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_horizontal_focus@2x.png differ
diff --git a/Resources/dark/rc/toolbar_move_horizontal_pressed.png b/Resources/dark/rc/toolbar_move_horizontal_pressed.png
new file mode 100644
index 0000000..9ce6f8d
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_horizontal_pressed.png differ
diff --git a/Resources/dark/rc/toolbar_move_horizontal_pressed@2x.png b/Resources/dark/rc/toolbar_move_horizontal_pressed@2x.png
new file mode 100644
index 0000000..4d8e53e
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_horizontal_pressed@2x.png differ
diff --git a/Resources/dark/rc/toolbar_move_vertical.png b/Resources/dark/rc/toolbar_move_vertical.png
new file mode 100644
index 0000000..ade2a20
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_vertical.png differ
diff --git a/Resources/dark/rc/toolbar_move_vertical@2x.png b/Resources/dark/rc/toolbar_move_vertical@2x.png
new file mode 100644
index 0000000..453d7b7
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_vertical@2x.png differ
diff --git a/Resources/dark/rc/toolbar_move_vertical_disabled.png b/Resources/dark/rc/toolbar_move_vertical_disabled.png
new file mode 100644
index 0000000..37453ac
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_vertical_disabled.png differ
diff --git a/Resources/dark/rc/toolbar_move_vertical_disabled@2x.png b/Resources/dark/rc/toolbar_move_vertical_disabled@2x.png
new file mode 100644
index 0000000..cca8f6d
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_vertical_disabled@2x.png differ
diff --git a/Resources/dark/rc/toolbar_move_vertical_focus.png b/Resources/dark/rc/toolbar_move_vertical_focus.png
new file mode 100644
index 0000000..b548771
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_vertical_focus.png differ
diff --git a/Resources/dark/rc/toolbar_move_vertical_focus@2x.png b/Resources/dark/rc/toolbar_move_vertical_focus@2x.png
new file mode 100644
index 0000000..d4dd49d
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_vertical_focus@2x.png differ
diff --git a/Resources/dark/rc/toolbar_move_vertical_pressed.png b/Resources/dark/rc/toolbar_move_vertical_pressed.png
new file mode 100644
index 0000000..768ebaf
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_vertical_pressed.png differ
diff --git a/Resources/dark/rc/toolbar_move_vertical_pressed@2x.png b/Resources/dark/rc/toolbar_move_vertical_pressed@2x.png
new file mode 100644
index 0000000..2f170ff
Binary files /dev/null and b/Resources/dark/rc/toolbar_move_vertical_pressed@2x.png differ
diff --git a/Resources/dark/rc/toolbar_separator_horizontal.png b/Resources/dark/rc/toolbar_separator_horizontal.png
new file mode 100644
index 0000000..ecf2ab7
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_horizontal.png differ
diff --git a/Resources/dark/rc/toolbar_separator_horizontal@2x.png b/Resources/dark/rc/toolbar_separator_horizontal@2x.png
new file mode 100644
index 0000000..ac2b343
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_horizontal@2x.png differ
diff --git a/Resources/dark/rc/toolbar_separator_horizontal_disabled.png b/Resources/dark/rc/toolbar_separator_horizontal_disabled.png
new file mode 100644
index 0000000..f8796f9
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_horizontal_disabled.png differ
diff --git a/Resources/dark/rc/toolbar_separator_horizontal_disabled@2x.png b/Resources/dark/rc/toolbar_separator_horizontal_disabled@2x.png
new file mode 100644
index 0000000..1d9f204
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_horizontal_disabled@2x.png differ
diff --git a/Resources/dark/rc/toolbar_separator_horizontal_focus.png b/Resources/dark/rc/toolbar_separator_horizontal_focus.png
new file mode 100644
index 0000000..b592e61
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_horizontal_focus.png differ
diff --git a/Resources/dark/rc/toolbar_separator_horizontal_focus@2x.png b/Resources/dark/rc/toolbar_separator_horizontal_focus@2x.png
new file mode 100644
index 0000000..a593a7e
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_horizontal_focus@2x.png differ
diff --git a/Resources/dark/rc/toolbar_separator_horizontal_pressed.png b/Resources/dark/rc/toolbar_separator_horizontal_pressed.png
new file mode 100644
index 0000000..a806257
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_horizontal_pressed.png differ
diff --git a/Resources/dark/rc/toolbar_separator_horizontal_pressed@2x.png b/Resources/dark/rc/toolbar_separator_horizontal_pressed@2x.png
new file mode 100644
index 0000000..e1e8e3c
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_horizontal_pressed@2x.png differ
diff --git a/Resources/dark/rc/toolbar_separator_vertical.png b/Resources/dark/rc/toolbar_separator_vertical.png
new file mode 100644
index 0000000..a894304
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_vertical.png differ
diff --git a/Resources/dark/rc/toolbar_separator_vertical@2x.png b/Resources/dark/rc/toolbar_separator_vertical@2x.png
new file mode 100644
index 0000000..2f66e93
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_vertical@2x.png differ
diff --git a/Resources/dark/rc/toolbar_separator_vertical_disabled.png b/Resources/dark/rc/toolbar_separator_vertical_disabled.png
new file mode 100644
index 0000000..48b2657
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_vertical_disabled.png differ
diff --git a/Resources/dark/rc/toolbar_separator_vertical_disabled@2x.png b/Resources/dark/rc/toolbar_separator_vertical_disabled@2x.png
new file mode 100644
index 0000000..a2173c5
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_vertical_disabled@2x.png differ
diff --git a/Resources/dark/rc/toolbar_separator_vertical_focus.png b/Resources/dark/rc/toolbar_separator_vertical_focus.png
new file mode 100644
index 0000000..e31c694
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_vertical_focus.png differ
diff --git a/Resources/dark/rc/toolbar_separator_vertical_focus@2x.png b/Resources/dark/rc/toolbar_separator_vertical_focus@2x.png
new file mode 100644
index 0000000..ce743cc
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_vertical_focus@2x.png differ
diff --git a/Resources/dark/rc/toolbar_separator_vertical_pressed.png b/Resources/dark/rc/toolbar_separator_vertical_pressed.png
new file mode 100644
index 0000000..4ee7aaa
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_vertical_pressed.png differ
diff --git a/Resources/dark/rc/toolbar_separator_vertical_pressed@2x.png b/Resources/dark/rc/toolbar_separator_vertical_pressed@2x.png
new file mode 100644
index 0000000..d8bf93b
Binary files /dev/null and b/Resources/dark/rc/toolbar_separator_vertical_pressed@2x.png differ
diff --git a/Resources/dark/rc/transparent.png b/Resources/dark/rc/transparent.png
new file mode 100644
index 0000000..6775361
Binary files /dev/null and b/Resources/dark/rc/transparent.png differ
diff --git a/Resources/dark/rc/transparent@2x.png b/Resources/dark/rc/transparent@2x.png
new file mode 100644
index 0000000..4012944
Binary files /dev/null and b/Resources/dark/rc/transparent@2x.png differ
diff --git a/Resources/dark/rc/transparent_disabled.png b/Resources/dark/rc/transparent_disabled.png
new file mode 100644
index 0000000..6775361
Binary files /dev/null and b/Resources/dark/rc/transparent_disabled.png differ
diff --git a/Resources/dark/rc/transparent_disabled@2x.png b/Resources/dark/rc/transparent_disabled@2x.png
new file mode 100644
index 0000000..4012944
Binary files /dev/null and b/Resources/dark/rc/transparent_disabled@2x.png differ
diff --git a/Resources/dark/rc/transparent_focus.png b/Resources/dark/rc/transparent_focus.png
new file mode 100644
index 0000000..6775361
Binary files /dev/null and b/Resources/dark/rc/transparent_focus.png differ
diff --git a/Resources/dark/rc/transparent_focus@2x.png b/Resources/dark/rc/transparent_focus@2x.png
new file mode 100644
index 0000000..4012944
Binary files /dev/null and b/Resources/dark/rc/transparent_focus@2x.png differ
diff --git a/Resources/dark/rc/transparent_pressed.png b/Resources/dark/rc/transparent_pressed.png
new file mode 100644
index 0000000..6775361
Binary files /dev/null and b/Resources/dark/rc/transparent_pressed.png differ
diff --git a/Resources/dark/rc/transparent_pressed@2x.png b/Resources/dark/rc/transparent_pressed@2x.png
new file mode 100644
index 0000000..4012944
Binary files /dev/null and b/Resources/dark/rc/transparent_pressed@2x.png differ
diff --git a/Resources/dark/rc/window_close.png b/Resources/dark/rc/window_close.png
new file mode 100644
index 0000000..2b36479
Binary files /dev/null and b/Resources/dark/rc/window_close.png differ
diff --git a/Resources/dark/rc/window_close@2x.png b/Resources/dark/rc/window_close@2x.png
new file mode 100644
index 0000000..c6bec55
Binary files /dev/null and b/Resources/dark/rc/window_close@2x.png differ
diff --git a/Resources/dark/rc/window_close_disabled.png b/Resources/dark/rc/window_close_disabled.png
new file mode 100644
index 0000000..46de804
Binary files /dev/null and b/Resources/dark/rc/window_close_disabled.png differ
diff --git a/Resources/dark/rc/window_close_disabled@2x.png b/Resources/dark/rc/window_close_disabled@2x.png
new file mode 100644
index 0000000..8e4cd15
Binary files /dev/null and b/Resources/dark/rc/window_close_disabled@2x.png differ
diff --git a/Resources/dark/rc/window_close_focus.png b/Resources/dark/rc/window_close_focus.png
new file mode 100644
index 0000000..bb7d8c5
Binary files /dev/null and b/Resources/dark/rc/window_close_focus.png differ
diff --git a/Resources/dark/rc/window_close_focus@2x.png b/Resources/dark/rc/window_close_focus@2x.png
new file mode 100644
index 0000000..692ce24
Binary files /dev/null and b/Resources/dark/rc/window_close_focus@2x.png differ
diff --git a/Resources/dark/rc/window_close_pressed.png b/Resources/dark/rc/window_close_pressed.png
new file mode 100644
index 0000000..53ae7f3
Binary files /dev/null and b/Resources/dark/rc/window_close_pressed.png differ
diff --git a/Resources/dark/rc/window_close_pressed@2x.png b/Resources/dark/rc/window_close_pressed@2x.png
new file mode 100644
index 0000000..e02b122
Binary files /dev/null and b/Resources/dark/rc/window_close_pressed@2x.png differ
diff --git a/Resources/dark/rc/window_grip.png b/Resources/dark/rc/window_grip.png
new file mode 100644
index 0000000..fc2f6df
Binary files /dev/null and b/Resources/dark/rc/window_grip.png differ
diff --git a/Resources/dark/rc/window_grip@2x.png b/Resources/dark/rc/window_grip@2x.png
new file mode 100644
index 0000000..6a8e86c
Binary files /dev/null and b/Resources/dark/rc/window_grip@2x.png differ
diff --git a/Resources/dark/rc/window_grip_disabled.png b/Resources/dark/rc/window_grip_disabled.png
new file mode 100644
index 0000000..97c0e0f
Binary files /dev/null and b/Resources/dark/rc/window_grip_disabled.png differ
diff --git a/Resources/dark/rc/window_grip_disabled@2x.png b/Resources/dark/rc/window_grip_disabled@2x.png
new file mode 100644
index 0000000..7a3d8de
Binary files /dev/null and b/Resources/dark/rc/window_grip_disabled@2x.png differ
diff --git a/Resources/dark/rc/window_grip_focus.png b/Resources/dark/rc/window_grip_focus.png
new file mode 100644
index 0000000..99b27c9
Binary files /dev/null and b/Resources/dark/rc/window_grip_focus.png differ
diff --git a/Resources/dark/rc/window_grip_focus@2x.png b/Resources/dark/rc/window_grip_focus@2x.png
new file mode 100644
index 0000000..833cb90
Binary files /dev/null and b/Resources/dark/rc/window_grip_focus@2x.png differ
diff --git a/Resources/dark/rc/window_grip_pressed.png b/Resources/dark/rc/window_grip_pressed.png
new file mode 100644
index 0000000..afea974
Binary files /dev/null and b/Resources/dark/rc/window_grip_pressed.png differ
diff --git a/Resources/dark/rc/window_grip_pressed@2x.png b/Resources/dark/rc/window_grip_pressed@2x.png
new file mode 100644
index 0000000..c1c1a0e
Binary files /dev/null and b/Resources/dark/rc/window_grip_pressed@2x.png differ
diff --git a/Resources/dark/rc/window_minimize.png b/Resources/dark/rc/window_minimize.png
new file mode 100644
index 0000000..6440430
Binary files /dev/null and b/Resources/dark/rc/window_minimize.png differ
diff --git a/Resources/dark/rc/window_minimize@2x.png b/Resources/dark/rc/window_minimize@2x.png
new file mode 100644
index 0000000..0e25540
Binary files /dev/null and b/Resources/dark/rc/window_minimize@2x.png differ
diff --git a/Resources/dark/rc/window_minimize_disabled.png b/Resources/dark/rc/window_minimize_disabled.png
new file mode 100644
index 0000000..cc51ed0
Binary files /dev/null and b/Resources/dark/rc/window_minimize_disabled.png differ
diff --git a/Resources/dark/rc/window_minimize_disabled@2x.png b/Resources/dark/rc/window_minimize_disabled@2x.png
new file mode 100644
index 0000000..c167646
Binary files /dev/null and b/Resources/dark/rc/window_minimize_disabled@2x.png differ
diff --git a/Resources/dark/rc/window_minimize_focus.png b/Resources/dark/rc/window_minimize_focus.png
new file mode 100644
index 0000000..1dcd083
Binary files /dev/null and b/Resources/dark/rc/window_minimize_focus.png differ
diff --git a/Resources/dark/rc/window_minimize_focus@2x.png b/Resources/dark/rc/window_minimize_focus@2x.png
new file mode 100644
index 0000000..2a4c868
Binary files /dev/null and b/Resources/dark/rc/window_minimize_focus@2x.png differ
diff --git a/Resources/dark/rc/window_minimize_pressed.png b/Resources/dark/rc/window_minimize_pressed.png
new file mode 100644
index 0000000..0bb5321
Binary files /dev/null and b/Resources/dark/rc/window_minimize_pressed.png differ
diff --git a/Resources/dark/rc/window_minimize_pressed@2x.png b/Resources/dark/rc/window_minimize_pressed@2x.png
new file mode 100644
index 0000000..5a515c8
Binary files /dev/null and b/Resources/dark/rc/window_minimize_pressed@2x.png differ
diff --git a/Resources/dark/rc/window_undock.png b/Resources/dark/rc/window_undock.png
new file mode 100644
index 0000000..3bd2863
Binary files /dev/null and b/Resources/dark/rc/window_undock.png differ
diff --git a/Resources/dark/rc/window_undock@2x.png b/Resources/dark/rc/window_undock@2x.png
new file mode 100644
index 0000000..44c147f
Binary files /dev/null and b/Resources/dark/rc/window_undock@2x.png differ
diff --git a/Resources/dark/rc/window_undock_disabled.png b/Resources/dark/rc/window_undock_disabled.png
new file mode 100644
index 0000000..6a60949
Binary files /dev/null and b/Resources/dark/rc/window_undock_disabled.png differ
diff --git a/Resources/dark/rc/window_undock_disabled@2x.png b/Resources/dark/rc/window_undock_disabled@2x.png
new file mode 100644
index 0000000..c2e1b8f
Binary files /dev/null and b/Resources/dark/rc/window_undock_disabled@2x.png differ
diff --git a/Resources/dark/rc/window_undock_focus.png b/Resources/dark/rc/window_undock_focus.png
new file mode 100644
index 0000000..d6eebbd
Binary files /dev/null and b/Resources/dark/rc/window_undock_focus.png differ
diff --git a/Resources/dark/rc/window_undock_focus@2x.png b/Resources/dark/rc/window_undock_focus@2x.png
new file mode 100644
index 0000000..1aef060
Binary files /dev/null and b/Resources/dark/rc/window_undock_focus@2x.png differ
diff --git a/Resources/dark/rc/window_undock_pressed.png b/Resources/dark/rc/window_undock_pressed.png
new file mode 100644
index 0000000..8b6beb1
Binary files /dev/null and b/Resources/dark/rc/window_undock_pressed.png differ
diff --git a/Resources/dark/rc/window_undock_pressed@2x.png b/Resources/dark/rc/window_undock_pressed@2x.png
new file mode 100644
index 0000000..677ded4
Binary files /dev/null and b/Resources/dark/rc/window_undock_pressed@2x.png differ
diff --git a/Resources/res.qrc b/Resources/res.qrc
new file mode 100644
index 0000000..56adcd8
--- /dev/null
+++ b/Resources/res.qrc
@@ -0,0 +1,6 @@
+
+
+ 140xfd.png
+ 140xfd.ico
+
+
diff --git a/Src/downloader.cpp b/Src/downloader.cpp
new file mode 100644
index 0000000..b7d490d
--- /dev/null
+++ b/Src/downloader.cpp
@@ -0,0 +1,126 @@
+#include "downloader.h"
+#include
+#include
+#include
+#include
+
+Downloader::Downloader(QObject *parent)
+ : QObject{parent}
+{
+ m_pNetWorkAccessManager = new QNetworkAccessManager(this);
+ dir.setPath(QCoreApplication::applicationDirPath());
+}
+
+void Downloader::setUrl(const QString &_url)
+{
+ m_pUrl = QUrl(_url);
+}
+
+void Downloader::startDownload(const QString &_url)
+{
+ if(m_bIsDownloading)
+ return;
+ m_bIsDownloading = true;
+ if(!_url.isEmpty())
+ m_pUrl.setUrl(_url);
+
+ if(!dir.exists())
+ {
+ dir.mkpath(".");
+ }
+ /* Rename old downloads */
+ QString _path = dir.path() + "/" + m_fileName;
+ if(QFile::exists(_path))
+ {
+ QFile _file(_path);
+ _file.rename(_path + "_" + QDateTime::currentDateTime().toString("yyyy-MM-dd"));
+ }
+
+ QFile::remove(dir.filePath(m_fileName));
+ QFile::remove(dir.filePath(m_fileName + ".part"));
+
+ QNetworkRequest request;
+ request.setUrl(m_pUrl);
+ m_pReply = m_pNetWorkAccessManager->get(request);
+
+ connect(m_pReply, &QNetworkReply::downloadProgress, this, [&](qint64 received, qint64 total)
+ {
+ emit doProgress(received, total);
+ if (total > 0)
+ {
+ if(file.fileName() != (dir.filePath(m_fileName + ".part")))
+ file.setFileName(dir.filePath(m_fileName + ".part"));
+ if(!file.isOpen())
+ {
+ file.open(QIODevice::WriteOnly | QIODevice::Append);
+ }
+ file.write(m_pReply->readAll());
+ }
+ });
+ connect(m_pReply, &QNetworkReply::metaDataChanged, this, [&]()
+ {
+ QString filename = "";
+ QVariant variant = m_pReply->header( QNetworkRequest::ContentDispositionHeader );
+ if ( variant.isValid() )
+ {
+ QString contentDisposition = QByteArray::fromPercentEncoding( variant.toByteArray() ).constData();
+ QRegularExpression regExp( "(.*)filename=\"(?.*)\"" );
+ QRegularExpressionMatch match = regExp.match( contentDisposition );
+ if ( match.hasMatch() )
+ {
+ filename = match.captured( "filename" );
+ }
+ m_fileName = filename;
+ auto localApplicationFilePath = QCoreApplication::applicationDirPath();
+ file.setFileName(localApplicationFilePath + "/" + m_fileName);
+ };
+ });
+// connect(m_pReply, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
+ connect(m_pReply, &QNetworkReply::finished, this, [&]()
+ {
+ if(file.isOpen())
+ file.close();
+ if(!file.exists())
+ {
+ emit doShowInfo("not exits");
+ }
+ if(file.isOpen())
+ {
+ emit doShowInfo("not close");
+ }
+ if(!file.rename(dir.path() + "/" + m_fileName))
+ {
+ emit doShowInfo("rename file failed");
+ }
+ file.setFileName(dir.filePath(m_fileName));
+ m_bIsDownloading = false;
+ emit doFinished();
+ });
+ connect(m_pReply, SIGNAL(errorOccurred(QNetworkReply::NetworkError)), this, SIGNAL(onError(QNetworkReply::NetworkError)));
+}
+
+void Downloader::checkVersion()
+{
+ QNetworkRequest request(CHECK_URL);
+ m_pNetWorkAccessManager->get(request);
+}
+
+const QFile &Downloader::getFile() const
+{
+ return file;
+}
+
+const QDir &Downloader::getDir() const
+{
+ return dir;
+}
+
+const QString &Downloader::fileName() const
+{
+ return m_fileName;
+}
+
+void Downloader::setFileName(const QString &newFileName)
+{
+ m_fileName = newFileName;
+}
diff --git a/Src/downloader.h b/Src/downloader.h
new file mode 100644
index 0000000..e0570d3
--- /dev/null
+++ b/Src/downloader.h
@@ -0,0 +1,59 @@
+#ifndef DOWNLOADER_H
+#define DOWNLOADER_H
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+extern QString CHECK_URL;
+
+class Downloader : public QObject
+{
+ Q_OBJECT
+public:
+ explicit Downloader(QObject *parent = nullptr);
+
+ void setUrl(const QString &);
+
+ void startDownload(const QString &_url = NULL);
+
+ void checkVersion();
+
+ const QFile &getFile() const;
+
+ const QDir &getDir() const;
+
+ const QString &fileName() const;
+
+ void setFileName(const QString &newFileName);
+
+public slots:
+
+signals:
+ void doProgress(qint64, qint64);
+ void onError(QNetworkReply::NetworkError);
+ void doFinished();
+
+ void doShowInfo(const QString&);
+
+private:
+ QNetworkAccessManager *m_pNetWorkAccessManager{nullptr};
+ QNetworkReply *m_pReply{nullptr};
+
+ bool m_bIsDownloading = false; //正在下载标识
+
+ QUrl m_pUrl{};
+
+ QString m_fileName = "";
+
+ QFile file;
+
+ QDir dir;
+
+};
+
+#endif // DOWNLOADER_H
diff --git a/Src/main.cpp b/Src/main.cpp
new file mode 100644
index 0000000..9c2655a
--- /dev/null
+++ b/Src/main.cpp
@@ -0,0 +1,43 @@
+#include
+#include "updaterdialog.h"
+
+void loadQss()
+{
+ QFile f(":qdarkstyle/dark/darkstyle.qss");
+// QFile f(":qdarkstyle/light/lightstyle.qss");
+ if (!f.exists())
+ {
+ printf("Unable to set stylesheet, file not found\n");
+ }
+ else
+ {
+ f.open(QFile::ReadOnly | QFile::Text);
+ QTextStream ts(&f);
+ qApp->setStyleSheet(ts.readAll());
+ }
+}
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+
+ loadQss();
+
+ if(argc > 1)
+ {
+ APPNAME = argv[1];
+ APPVERSION = argv[2];
+ APPDATE = argv[3];
+ MODIFYCNT = argv[4];
+ }
+ else
+ {
+ APPNAME = "LaunchControl";
+ APPVERSION = "0";
+ }
+ CHECK_URL = CHECK_URL + APPNAME + "/updates.json";
+
+ UpdaterDialog w;
+ w.show();
+ return a.exec();
+}
diff --git a/Src/updaterdialog.cpp b/Src/updaterdialog.cpp
new file mode 100644
index 0000000..9b66233
--- /dev/null
+++ b/Src/updaterdialog.cpp
@@ -0,0 +1,378 @@
+#include "updaterdialog.h"
+#include "ui_updaterdialog.h"
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+QString CHECK_URL = "http://www.tianzd.cn:1995/TianZD/deploy/raw/branch/master/";
+QString PLATFORM = "windows";
+
+QString APPVERSION = "";
+QString APPNAME = "";
+
+QString APPDATE = "0";
+QString MODIFYCNT = "0";
+
+UpdaterDialog::UpdaterDialog(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::UpdaterDialog)
+{
+ ui->setupUi(this);
+ this->setWindowTitle("Updater");
+ ui->btn_update->setEnabled(0);
+
+ m_startTime = 0;
+
+ m_version = APPVERSION;
+ ui->versionInput->setText(m_version);
+
+ ui->show->setEnabled(0);
+ ui->label_2->setText("");
+ ui->label_3->setText("");
+ ui->label_4->setText(APPNAME);
+// ui->versionInput->setEnabled(false);
+}
+
+UpdaterDialog::~UpdaterDialog()
+{
+ delete ui;
+}
+
+void UpdaterDialog::showStatus(const QString &s)
+{
+// ui->show->clear();
+ ui->show->appendPlainText(s);
+}
+
+void UpdaterDialog::on_btn_check_clicked()
+{
+ ui->show->clear();
+ ui->btn_update->setEnabled(0);
+ //version
+ m_version = ui->versionInput->text();
+
+ if(!m_pManager)
+ {
+ m_pManager = new QNetworkAccessManager(this);
+ connect(m_pManager, SIGNAL(finished(QNetworkReply *)), this, SLOT(onCheckReply(QNetworkReply *)));
+ }
+ QNetworkRequest request(CHECK_URL);
+
+ m_pManager->get(request);
+}
+
+bool UpdaterDialog::checkVersion(const QString &_localVersion, const QString &_remoteVersion)
+{
+ //版本号分割,1.1.2分为1 1 2
+ QStringList _list_curr = _localVersion.split(".");
+ QStringList _list_lastest = _remoteVersion.split(".");
+
+ //检查是否需要更新
+ bool _isNotLatest = false;
+ //版本号为空
+ if(_list_curr.count() == 0)
+ {
+ m_bDownloadFullExe = true;
+ return true;
+ }
+ if(_list_curr.count() != _list_lastest.count())
+ _isNotLatest = true;
+
+ for(int i = 0; i < _list_curr.count(); ++i)
+ {
+ if(_list_curr[i].toUInt() < _list_lastest[i].toUInt())
+ {
+ _isNotLatest = true;
+ }
+ }
+
+ //版本号一致,检查日期
+ if(!_isNotLatest)
+ {
+ if(m_lastChangeTime.toUInt() > APPDATE.toUInt())
+ {
+ _isNotLatest = true;
+ }
+
+ //检查修改次数
+ if(m_modifyCnt != "" && m_modifyCnt != " " && MODIFYCNT != "" && MODIFYCNT != " ")
+ {
+ if(m_modifyCnt.toUInt() > MODIFYCNT.toUInt())
+ {
+ _isNotLatest = true;
+ }
+ }
+ }
+
+ return _isNotLatest;
+}
+
+void UpdaterDialog::onCheckReply(QNetworkReply *reply)
+{
+ /* There was a network error */
+ if (reply->error() != QNetworkReply::NoError)
+ {
+ showStatus("check error");
+ return;
+ }
+
+ /* Try to create a JSON document from downloaded data */
+ QJsonDocument document = QJsonDocument::fromJson(reply->readAll());
+
+ /* JSON is invalid */
+ if (document.isNull())
+ {
+ showStatus("reply doc is null");
+ return;
+ }
+
+ /* Get the platform information */
+ QJsonObject updates = document.object().value("updates").toObject();
+ QJsonObject platform = updates.value(PLATFORM).toObject();
+
+ /* Get update information */
+ m_changelog = platform.value("changelog").toString();
+ m_patchVersion = platform.value("patch-version").toString();
+ m_fullVersion = platform.value("full-version").toString();
+ m_lastChangeTime = platform.value("modify-time").toString();
+ m_modifyCnt = platform.value("modifyCnt").toString();
+ m_bDownloadFullExe = platform.value("download-full").toBool();
+ if(m_version == "" || m_version == "0") //当前版本号为空
+ {
+ m_bDownloadFullExe = true;
+ }
+ m_fileName = APPNAME + "-patch-v" + m_patchVersion + ".zip";
+ m_patchUrl = platform.value("patch-url").toString() + APPNAME + "/" + APPNAME + "-patch-v" + m_patchVersion + ".zip";
+ m_fullUrl = platform.value("full-url").toString() + APPNAME + "/" + APPNAME + "-full-v" + m_fullVersion + ".exe";
+
+ QString _remoteVersion = m_bDownloadFullExe ? m_fullVersion : m_patchVersion;
+ bool _isNotLatest = checkVersion(m_version, _remoteVersion);
+
+ if(_isNotLatest)
+ {
+ showStatus("======================================"
+ + tr("\ncurrent version: v") + m_version
+ + tr("\nmodify time: ") + APPDATE
+ + tr("\nmodify cnt: ") + MODIFYCNT
+ + "\n ------------------------------"
+ + tr("\nlatest version: v") + _remoteVersion
+ + tr("\nmodify time: ") + m_lastChangeTime
+ + tr("\nmodify cnt: ") + m_modifyCnt
+ + tr("\nchange log: ") + m_changelog
+ + "\n======================================"
+ );
+ if(m_bDownloadFullExe)
+ {
+ showStatus("need download full exe");
+ m_fileName = APPNAME + "-full-v" + m_patchVersion + ".exe";
+ }
+ showStatus(tr("click update button to update"));
+ }
+ else
+ {
+ showStatus("======================================"
+ + tr("\ncurrent software is up-to-date")
+ + tr("\nversion : v") + _remoteVersion
+ + tr("\nmodify time: ") + m_lastChangeTime
+ + tr("\nmodify cnt: ") + m_modifyCnt
+ + "\n======================================"
+ + tr("\nno need to update")
+ + tr("\nclick cancel button to quit"));
+ }
+ ui->btn_update->setEnabled(1);
+}
+
+void UpdaterDialog::calculateSizes(qint64 received, qint64 total)
+{
+ QString totalSize;
+ QString receivedSize;
+
+ if (total < 1024)
+ totalSize = tr("%1 bytes").arg(total);
+
+ else if (total < 1048576)
+ totalSize = tr("%1 KB").arg(round(total / 1024));
+
+ else
+ totalSize = tr("%1 MB").arg((total / 1048576.0));
+
+ if (received < 1024)
+ receivedSize = tr("%1 bytes").arg(received);
+
+ else if (received < 1048576)
+ receivedSize = tr("%1 KB").arg(received / 1024);
+
+ else
+ receivedSize = tr("%1 MB").arg(received / 1048576.0);
+
+ ui->label_2->setText(tr("Downloading updates") + " (" + receivedSize + " " + tr("of") + " " + totalSize
+ + ")");
+}
+
+/**
+ * Uses two time samples (from the current time and a previous sample) to
+ * calculate how many bytes have been downloaded.
+ *
+ * Then, this function proceeds to calculate the appropiate units of time
+ * (hours, minutes or seconds) and constructs a user-friendly string, which
+ * is displayed in the dialog.
+ */
+void UpdaterDialog::calculateTimeRemaining(qint64 received, qint64 total)
+{
+ static quint64 lastRec = 0;
+ static uint lastTime = 0;
+ uint _time = QDateTime::currentDateTime().toMSecsSinceEpoch();
+ double _speed = (received - lastRec) / 1024.0 / (_time - lastTime) * 1000.0;
+ lastTime = _time;
+ lastRec = received;
+ uint difference = QDateTime::currentDateTime().toSecsSinceEpoch() - m_startTime;
+
+ if (difference > 0)
+ {
+ QString timeString;
+ qreal timeRemaining = (total - received) / (received / difference);
+
+ if (timeRemaining > 7200)
+ {
+ timeRemaining /= 3600;
+ int hours = int(timeRemaining + 0.5);
+
+ if (hours > 1)
+ timeString = tr("about %1 hours").arg(hours);
+ else
+ timeString = tr("about one hour");
+ }
+
+ else if (timeRemaining > 60)
+ {
+ timeRemaining /= 60;
+ int minutes = int(timeRemaining + 0.5);
+
+ if (minutes > 1)
+ timeString = tr("%1 minutes").arg(minutes);
+ else
+ timeString = tr("1 minute");
+ }
+
+ else if (timeRemaining <= 60)
+ {
+ int seconds = int(timeRemaining + 0.5);
+
+ if (seconds > 1)
+ timeString = tr("%1 seconds").arg(seconds);
+ else
+ timeString = tr("1 second");
+ }
+
+ ui->label_3->setText(tr("speed: %1 kb/s ").arg(_speed) + tr("Time remaining") + ": " + timeString);
+ }
+}
+
+void UpdaterDialog::on_btn_update_clicked()
+{
+ if(!m_pDownloader)
+ {
+ m_pDownloader = new Downloader(this);
+
+ connect(m_pDownloader, &Downloader::doShowInfo, this, [&](const QString & s)
+ {
+ showStatus(s);
+ });
+
+ connect(m_pDownloader, &Downloader::onError, this, [&](QNetworkReply::NetworkError e)
+ {
+ QMetaEnum metaEnum = QMetaEnum::fromType();
+ QString str = QString(metaEnum.valueToKey(e));
+ ui->show->appendPlainText(str);
+ });
+
+ connect(m_pDownloader, &Downloader::doFinished, this, [&]()
+ {
+ uint _end_time = QDateTime::currentSecsSinceEpoch();
+ uint _total_time = _end_time - m_startTime;
+ ui->label_3->setText("total time: " + QString::number(_total_time, 'g', 3) +
+ "s average speed: " + QString::number((m_totalSize / 1024.0 / _total_time), 'g', 3) + "kb/s");
+ ui->show->appendPlainText("download finished");
+ onDownloadFinished();
+ });
+
+ connect(m_pDownloader, &Downloader::doProgress, this, [&](quint64 received, quint64 total)
+ {
+ m_totalSize = total;
+ if (total > 0)
+ {
+ ui->progressBar->setMinimum(0);
+ ui->progressBar->setMaximum(100);
+ ui->progressBar->setValue((received * 100) / total);
+ calculateSizes(received, total);
+ calculateTimeRemaining(received, total);
+ }
+ else
+ {
+ ui->progressBar->setMinimum(0);
+ ui->progressBar->setMaximum(0);
+ ui->progressBar->setValue(-1);
+ ui->show->appendPlainText(tr("Downloading Updates") + "...");
+ }
+ });
+ }
+
+ m_pDownloader->setFileName(m_fileName);
+ m_startTime = QDateTime::currentDateTime().toSecsSinceEpoch();
+
+ QString _url = m_bDownloadFullExe ? m_fullUrl : m_patchUrl;
+ m_pDownloader->startDownload(_url);
+}
+
+void UpdaterDialog::on_btn_cancel_clicked()
+{
+ if(!m_UpdateProc)
+ {
+ m_UpdateProc = new QProcess;
+ }
+#if defined Q_OS_WIN
+ m_UpdateProc->setProgram(APPNAME + ".exe");
+#elif defined Q_OS_LINUX
+ m_UpdateProc->setProgram("./" + APPNAME);
+#endif
+ m_UpdateProc->start();
+ m_UpdateProc->waitForStarted();
+ QApplication::quit();
+}
+
+void UpdaterDialog::onDownloadFinished()
+{
+// ui->show->appendPlainText(m_pDownloader->fileName());
+// ui->show->appendPlainText("m_bDownloadFullExe");
+ auto localInformation = QMessageBox::question(this, "update", "download finished\nstart update?");
+ if(localInformation == QMessageBox::Yes)
+ {
+ QString _appName;
+ if(!m_bDownloadFullExe)
+ {
+ //解压文件
+ QFileInfo f(m_pDownloader->getFile());
+ QString _path = f.fileName();
+ QZipReader * zipReader = new QZipReader(_path);
+ zipReader->extractAll(f.path());
+ _appName = APPNAME + ".exe";
+ }
+ else
+ {
+ _appName = m_pDownloader->fileName();
+ }
+
+ QFileInfo f2(QCoreApplication::applicationDirPath() + "/" + _appName);
+ if(f2.exists())
+ {
+ QDesktopServices::openUrl(f2.absoluteFilePath());
+ }
+ QApplication::quit();
+ }
+}
diff --git a/Src/updaterdialog.h b/Src/updaterdialog.h
new file mode 100644
index 0000000..ed1426b
--- /dev/null
+++ b/Src/updaterdialog.h
@@ -0,0 +1,75 @@
+#ifndef UPDATERDIALOG_H
+#define UPDATERDIALOG_H
+
+#include
+#include
+#include "downloader.h"
+
+extern QString APPVERSION;
+extern QString APPNAME;
+extern QString CHECK_URL;
+extern QString APPDATE;
+extern QString MODIFYCNT;
+
+namespace Ui
+{
+class UpdaterDialog;
+}
+
+class UpdaterDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit UpdaterDialog(QWidget *parent = nullptr);
+ ~UpdaterDialog();
+
+ void showStatus(const QString &);
+
+ void calculateSizes(qint64 received, qint64 total);
+
+ void calculateTimeRemaining(qint64 received, qint64 total);
+ bool checkVersion(const QString & _localVersion, const QString & _remoteVersion);
+
+private slots:
+ void on_btn_check_clicked();
+ void onCheckReply(QNetworkReply *);
+
+ void on_btn_update_clicked();
+
+ void on_btn_cancel_clicked();
+
+ void onDownloadFinished();
+
+private:
+ Ui::UpdaterDialog *ui;
+
+ Downloader * m_pDownloader = nullptr;
+
+ QString m_version;
+
+ QNetworkAccessManager *m_pManager{nullptr};
+
+ QString m_platform;
+ QString m_changelog;
+ QString m_moduleName;
+ QString m_patchUrl;
+ QString m_patchVersion;
+ QString m_moduleVersion;
+ QString m_fullUrl;
+ QString m_fullVersion;
+ QString m_lastChangeTime;
+ QString m_modifyCnt;
+
+ QString m_fileName = "";
+
+ bool m_bDownloadFullExe = false;
+
+ uint m_startTime;
+
+ quint64 m_totalSize;
+
+ QProcess *m_UpdateProc{nullptr};
+};
+
+#endif // UPDATERDIALOG_H
diff --git a/Src/updaterdialog.ui b/Src/updaterdialog.ui
new file mode 100644
index 0000000..4d0be41
--- /dev/null
+++ b/Src/updaterdialog.ui
@@ -0,0 +1,264 @@
+
+
+ UpdaterDialog
+
+
+
+ 0
+ 0
+ 578
+ 606
+
+
+
+ Dialog
+
+
+
+ 20
+
+
+ 10
+
+
+ 20
+
+
+ 10
+
+ -
+
+
+ 0
+
+
+ 0
+
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 48
+ 48
+
+
+
+
+ 48
+ 48
+
+
+
+
+ 14
+
+
+
+ border-image: url(:/140xfd.png);
+
+
+
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ Times New Roman
+ 12
+ true
+
+
+
+ updater
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Preferred
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
-
+
+
+
+ Times New Roman
+ 12
+ true
+
+
+
+ Version:
+
+
+
+ -
+
+
+
+ Times New Roman
+ 12
+ true
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ Times New Roman
+ 12
+ true
+
+
+
+ check
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+ Times New Roman
+ 12
+ true
+
+
+
+ TextLabel
+
+
+
+ -
+
+
+
+ Times New Roman
+ 12
+ true
+
+
+
+ 0
+
+
+
+ -
+
+
+
+ Times New Roman
+ 12
+ true
+
+
+
+ TextLabel
+
+
+
+ -
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ Times New Roman
+ 12
+ true
+
+
+
+ cancel
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ Times New Roman
+ 12
+ true
+
+
+
+ update
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/updater.pro b/updater.pro
new file mode 100644
index 0000000..5415a9d
--- /dev/null
+++ b/updater.pro
@@ -0,0 +1,42 @@
+QT += network core gui gui-private
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport
+
+CONFIG += c++17
+
+TEMPLATE = app
+
+#CONFIG+= console
+
+#生成目录
+unix {
+DESTDIR = $$PWD/../../Build/bin
+}
+win32 {
+DESTDIR = $$PWD/../../Build/release
+}
+
+MOC_DIR = $$PWD/Build/moc
+OBJECTS_DIR = $$PWD/Build/objs
+RCC_DIR = $$PWD/Build/resources
+UI_DIR = $$PWD/Build/ui
+
+FORMS += \
+ $$PWD/Src/updaterdialog.ui
+
+HEADERS += \
+ $$PWD/Src/downloader.h \
+ $$PWD/Src/updaterdialog.h
+
+SOURCES += \
+ $$PWD/Src/downloader.cpp \
+ $$PWD/Src/updaterdialog.cpp \
+ $$PWD/Src/main.cpp
+
+RESOURCES += \
+ Resources/dark/darkstyle.qrc \
+ Resources/res.qrc
+
+win32 {
+ RC_ICONS += $$PWD/Resources/140xfd.ico
+}