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 +}