From e0bf57d81faefb5b95e70167510b74e75751b773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=BCseyin=20ASLIT=C3=9CRK?= Date: Sun, 12 Apr 2020 16:24:31 +0300 Subject: [PATCH] QuickShow: Add Fullscreen, Zoom options to View menu --- Applications/QuickShow/QSWidget.cpp | 17 +++++++++++++++-- Applications/QuickShow/QSWidget.h | 2 ++ Applications/QuickShow/main.cpp | 27 +++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/Applications/QuickShow/QSWidget.cpp b/Applications/QuickShow/QSWidget.cpp index bc97da115dc906..abf6c52b9b3804 100644 --- a/Applications/QuickShow/QSWidget.cpp +++ b/Applications/QuickShow/QSWidget.cpp @@ -109,6 +109,18 @@ void QSWidget::navigate(Directions direction) this->load_from_file(m_files_in_same_dir.at(index)); } +void QSWidget::set_scale(int scale) +{ + + if (scale < 10) + scale = 10; + if (scale > 1000) + scale = 1000; + + m_scale = scale; + relayout(); +} + void QSWidget::relayout() { if (m_bitmap.is_null()) @@ -210,12 +222,13 @@ void QSWidget::load_from_file(const String& path) return; } - window()->resize(bitmap->size()); - m_path = path; m_bitmap = bitmap; m_scale = 100; m_pan_origin = { 0, 0 }; + + resize_window(); + if (on_scale_change) on_scale_change(m_scale); relayout(); diff --git a/Applications/QuickShow/QSWidget.h b/Applications/QuickShow/QSWidget.h index 87cbe12146015e..65d6917b7d95aa 100644 --- a/Applications/QuickShow/QSWidget.h +++ b/Applications/QuickShow/QSWidget.h @@ -46,6 +46,8 @@ class QSWidget final : public GUI::Frame { const Gfx::Bitmap* bitmap() const { return m_bitmap.ptr(); } const String& path() const { return m_path; } + void set_scale(int); + int scale() { return m_scale; } void flip(Gfx::Orientation); void rotate(Gfx::RotationDirection); diff --git a/Applications/QuickShow/main.cpp b/Applications/QuickShow/main.cpp index b384f685e5840c..3e41e396007c8c 100644 --- a/Applications/QuickShow/main.cpp +++ b/Applications/QuickShow/main.cpp @@ -143,6 +143,26 @@ int main(int argc, char** argv) widget.navigate(QSWidget::Directions::Last); }); + auto full_sceen_action = GUI::CommonActions::make_fullscreen_action( + [&](auto&) { + window->set_fullscreen(!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"), + [&](auto&) { + widget.set_scale(widget.scale() + 10); + }); + + auto zoom_reset_action = GUI::Action::create("Zoom 100%", { Mod_None, Key_0 }, + [&](auto&) { + widget.set_scale(100); + }); + + auto zoom_out_action = GUI::Action::create("Zoom Out", { Mod_None, Key_Minus }, Gfx::Bitmap::load_from_file("/res/icons/16x16/zoom-out.png"), + [&](auto&) { + widget.set_scale(widget.scale() - 10); + }); + auto menubar = make(); auto& app_menu = menubar->add_menu("QuickShow"); @@ -169,6 +189,13 @@ int main(int argc, char** argv) navigate_menu.add_action(go_forward_action); navigate_menu.add_action(go_last_action); + auto& view_menu = menubar->add_menu("View"); + view_menu.add_action(full_sceen_action); + view_menu.add_separator(); + view_menu.add_action(zoom_in_action); + view_menu.add_action(zoom_reset_action); + view_menu.add_action(zoom_out_action); + auto& help_menu = menubar->add_menu("Help"); help_menu.add_action(GUI::Action::create("About", [&](auto&) { GUI::AboutDialog::show("QuickShow", Gfx::Bitmap::load_from_file("/res/icons/32x32/filetype-image.png"), window);