diff --git a/Applications/QuickShow/QSWidget.cpp b/Applications/QuickShow/QSWidget.cpp index a58c2f4568..6dd215f925 100644 --- a/Applications/QuickShow/QSWidget.cpp +++ b/Applications/QuickShow/QSWidget.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include QSWidget::QSWidget() @@ -147,6 +148,9 @@ void QSWidget::relayout() new_location.set_y((height() / 2) - (new_size.height() / 2) - (m_pan_origin.y() * scale_factor)); m_bitmap_rect.set_location(new_location); + if (on_scale_change) + on_scale_change(m_scale); + update(); } @@ -215,11 +219,8 @@ void QSWidget::mousewheel_event(GUI::MouseEvent& event) focus_point.x() - new_scale_factor / old_scale_factor * (focus_point.x() - m_pan_origin.x()), focus_point.y() - new_scale_factor / old_scale_factor * (focus_point.y() - m_pan_origin.y())); - relayout(); - if (old_scale != m_scale) { - if (on_scale_change) - on_scale_change(m_scale); + relayout(); } } @@ -265,6 +266,6 @@ void QSWidget::resize_window() if (new_size.height() < 200) new_size.set_height(200); - new_size.set_height(new_size.height()); + new_size.set_height(new_size.height() + m_toolbar_height); window()->resize(new_size); } diff --git a/Applications/QuickShow/QSWidget.h b/Applications/QuickShow/QSWidget.h index 0253d9a8e6..b77ade01d9 100644 --- a/Applications/QuickShow/QSWidget.h +++ b/Applications/QuickShow/QSWidget.h @@ -48,6 +48,7 @@ public: const String& path() const { return m_path; } void set_scale(int); int scale() { return m_scale; } + void set_toolbar_height(int height) { m_toolbar_height = height; } void clear(); void flip(Gfx::Orientation); @@ -73,6 +74,7 @@ private: String m_path; RefPtr m_bitmap; + int m_toolbar_height { 28 }; Gfx::Rect m_bitmap_rect; int m_scale { 100 }; diff --git a/Applications/QuickShow/main.cpp b/Applications/QuickShow/main.cpp index 5bb4fe0c59..e0498634f2 100644 --- a/Applications/QuickShow/main.cpp +++ b/Applications/QuickShow/main.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include @@ -66,8 +67,13 @@ int main(int argc, char** argv) window->set_rect(200, 200, 300, 200); window->set_icon(Gfx::Bitmap::load_from_file("/res/icons/16x16/filetype-image.png")); - auto& widget = window->set_main_widget(); + auto& root_widget = window->set_main_widget(); + root_widget.set_layout(); + root_widget.layout()->set_spacing(0); + auto& main_toolbar = root_widget.add(); + + auto& widget = root_widget.add(); auto update_window_title = [&](int scale) { if (widget.bitmap()) window->set_title(String::format("%s %s %d%% - QuickShow", widget.path().characters(), widget.bitmap()->size().to_string().characters(), scale)); @@ -113,7 +119,7 @@ int main(int argc, char** argv) auto delete_action = GUI::CommonActions::make_delete_action( [&](auto&) { auto path = widget.path(); - if(path.is_empty()) + if (path.is_empty()) return; auto msgbox_result = GUI::MessageBox::show(String::format("Really delete %s?", path.characters()), @@ -190,6 +196,7 @@ int main(int argc, char** argv) auto full_sceen_action = GUI::CommonActions::make_fullscreen_action( [&](auto&) { window->set_fullscreen(!window->is_fullscreen()); + main_toolbar.set_visible(!window->is_fullscreen()); }); auto zoom_in_action = GUI::Action::create("Zoom In", { Mod_None, Key_Plus }, Gfx::Bitmap::load_from_file("/res/icons/16x16/zoom-in.png"), @@ -206,6 +213,27 @@ int main(int argc, char** argv) [&](auto&) { widget.set_scale(widget.scale() - 10); }); + auto hide_show_toolbar_action = GUI::Action::create("Hide/Show Toolbar", { Mod_Ctrl, Key_T }, + [&](auto&) { + main_toolbar.set_visible(!main_toolbar.is_visible()); + + if (main_toolbar.is_visible()) { + widget.set_toolbar_height(main_toolbar.height()); + } else { + widget.set_toolbar_height(0); + } + }); + + main_toolbar.add_action(open_action); + main_toolbar.add_action(delete_action); + main_toolbar.add_separator(); + main_toolbar.add_action(go_first_action); + main_toolbar.add_action(go_back_action); + main_toolbar.add_action(go_forward_action); + main_toolbar.add_action(go_last_action); + main_toolbar.add_separator(); + main_toolbar.add_action(zoom_in_action); + main_toolbar.add_action(zoom_out_action); auto menubar = make(); @@ -233,6 +261,8 @@ int main(int argc, char** argv) view_menu.add_action(zoom_in_action); view_menu.add_action(zoom_reset_action); view_menu.add_action(zoom_out_action); + view_menu.add_separator(); + view_menu.add_action(hide_show_toolbar_action); auto& help_menu = menubar->add_menu("Help"); help_menu.add_action(GUI::Action::create("About", [&](auto&) {