mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:27:43 +00:00
ImageViewer: Rename QSWidget => ImageViewer::ViewWidget
This commit is contained in:
parent
58d73ea36c
commit
3168a4afe8
5 changed files with 44 additions and 34 deletions
|
@ -1,6 +1,6 @@
|
|||
set(SOURCES
|
||||
main.cpp
|
||||
QSWidget.cpp
|
||||
ViewWidget.cpp
|
||||
)
|
||||
|
||||
serenity_app(ImageViewer ICON filetype-image)
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "QSWidget.h"
|
||||
#include "ViewWidget.h"
|
||||
#include <AK/MappedFile.h>
|
||||
#include <AK/StringBuilder.h>
|
||||
#include <LibCore/DirIterator.h>
|
||||
|
@ -16,17 +16,19 @@
|
|||
#include <LibGfx/Orientation.h>
|
||||
#include <LibGfx/Palette.h>
|
||||
|
||||
QSWidget::QSWidget()
|
||||
namespace ImageViewer {
|
||||
|
||||
ViewWidget::ViewWidget()
|
||||
: m_timer(Core::Timer::construct())
|
||||
{
|
||||
set_fill_with_background_color(false);
|
||||
}
|
||||
|
||||
QSWidget::~QSWidget()
|
||||
ViewWidget::~ViewWidget()
|
||||
{
|
||||
}
|
||||
|
||||
void QSWidget::clear()
|
||||
void ViewWidget::clear()
|
||||
{
|
||||
m_bitmap = nullptr;
|
||||
m_path = {};
|
||||
|
@ -35,7 +37,7 @@ void QSWidget::clear()
|
|||
update();
|
||||
}
|
||||
|
||||
void QSWidget::flip(Gfx::Orientation orientation)
|
||||
void ViewWidget::flip(Gfx::Orientation orientation)
|
||||
{
|
||||
m_bitmap = m_bitmap->flipped(orientation);
|
||||
set_scale(m_scale);
|
||||
|
@ -43,7 +45,7 @@ void QSWidget::flip(Gfx::Orientation orientation)
|
|||
resize_window();
|
||||
}
|
||||
|
||||
void QSWidget::rotate(Gfx::RotationDirection rotation_direction)
|
||||
void ViewWidget::rotate(Gfx::RotationDirection rotation_direction)
|
||||
{
|
||||
m_bitmap = m_bitmap->rotated(rotation_direction);
|
||||
set_scale(m_scale);
|
||||
|
@ -51,7 +53,7 @@ void QSWidget::rotate(Gfx::RotationDirection rotation_direction)
|
|||
resize_window();
|
||||
}
|
||||
|
||||
void QSWidget::navigate(Directions direction)
|
||||
void ViewWidget::navigate(Directions direction)
|
||||
{
|
||||
if (m_path == nullptr)
|
||||
return;
|
||||
|
@ -102,7 +104,7 @@ void QSWidget::navigate(Directions direction)
|
|||
this->load_from_file(m_files_in_same_dir.at(index));
|
||||
}
|
||||
|
||||
void QSWidget::set_scale(int scale)
|
||||
void ViewWidget::set_scale(int scale)
|
||||
{
|
||||
if (m_bitmap.is_null())
|
||||
return;
|
||||
|
@ -131,7 +133,7 @@ void QSWidget::set_scale(int scale)
|
|||
relayout();
|
||||
}
|
||||
|
||||
void QSWidget::relayout()
|
||||
void ViewWidget::relayout()
|
||||
{
|
||||
if (m_bitmap.is_null())
|
||||
return;
|
||||
|
@ -146,18 +148,18 @@ void QSWidget::relayout()
|
|||
update();
|
||||
}
|
||||
|
||||
void QSWidget::resize_event(GUI::ResizeEvent& event)
|
||||
void ViewWidget::resize_event(GUI::ResizeEvent& event)
|
||||
{
|
||||
relayout();
|
||||
GUI::Widget::resize_event(event);
|
||||
}
|
||||
|
||||
void QSWidget::doubleclick_event(GUI::MouseEvent&)
|
||||
void ViewWidget::doubleclick_event(GUI::MouseEvent&)
|
||||
{
|
||||
on_doubleclick();
|
||||
}
|
||||
|
||||
void QSWidget::paint_event(GUI::PaintEvent& event)
|
||||
void ViewWidget::paint_event(GUI::PaintEvent& event)
|
||||
{
|
||||
Frame::paint_event(event);
|
||||
|
||||
|
@ -171,7 +173,7 @@ void QSWidget::paint_event(GUI::PaintEvent& event)
|
|||
painter.draw_scaled_bitmap(m_bitmap_rect, *m_bitmap, m_bitmap->rect());
|
||||
}
|
||||
|
||||
void QSWidget::mousedown_event(GUI::MouseEvent& event)
|
||||
void ViewWidget::mousedown_event(GUI::MouseEvent& event)
|
||||
{
|
||||
if (event.button() != GUI::MouseButton::Left)
|
||||
return;
|
||||
|
@ -179,9 +181,9 @@ void QSWidget::mousedown_event(GUI::MouseEvent& event)
|
|||
m_saved_pan_origin = m_pan_origin;
|
||||
}
|
||||
|
||||
void QSWidget::mouseup_event([[maybe_unused]] GUI::MouseEvent& event) { }
|
||||
void ViewWidget::mouseup_event([[maybe_unused]] GUI::MouseEvent& event) { }
|
||||
|
||||
void QSWidget::mousemove_event(GUI::MouseEvent& event)
|
||||
void ViewWidget::mousemove_event(GUI::MouseEvent& event)
|
||||
{
|
||||
if (!(event.buttons() & GUI::MouseButton::Left))
|
||||
return;
|
||||
|
@ -194,7 +196,7 @@ void QSWidget::mousemove_event(GUI::MouseEvent& event)
|
|||
relayout();
|
||||
}
|
||||
|
||||
void QSWidget::mousewheel_event(GUI::MouseEvent& event)
|
||||
void ViewWidget::mousewheel_event(GUI::MouseEvent& event)
|
||||
{
|
||||
int new_scale = m_scale - event.wheel_delta() * 10;
|
||||
if (new_scale < 10)
|
||||
|
@ -226,7 +228,7 @@ void QSWidget::mousewheel_event(GUI::MouseEvent& event)
|
|||
set_scale(new_scale);
|
||||
}
|
||||
|
||||
void QSWidget::load_from_file(const String& path)
|
||||
void ViewWidget::load_from_file(const String& path)
|
||||
{
|
||||
auto show_error = [&] {
|
||||
GUI::MessageBox::show(window(), String::formatted("Failed to open {}", path), "Cannot open image", GUI::MessageBox::Type::Error);
|
||||
|
@ -259,14 +261,14 @@ void QSWidget::load_from_file(const String& path)
|
|||
reset_view();
|
||||
}
|
||||
|
||||
void QSWidget::drop_event(GUI::DropEvent& event)
|
||||
void ViewWidget::drop_event(GUI::DropEvent& event)
|
||||
{
|
||||
event.accept();
|
||||
if (on_drop)
|
||||
on_drop(event);
|
||||
}
|
||||
|
||||
void QSWidget::resize_window()
|
||||
void ViewWidget::resize_window()
|
||||
{
|
||||
if (window()->is_fullscreen())
|
||||
return;
|
||||
|
@ -285,13 +287,13 @@ void QSWidget::resize_window()
|
|||
window()->resize(new_size);
|
||||
}
|
||||
|
||||
void QSWidget::reset_view()
|
||||
void ViewWidget::reset_view()
|
||||
{
|
||||
m_pan_origin = { 0, 0 };
|
||||
set_scale(100);
|
||||
}
|
||||
|
||||
void QSWidget::set_bitmap(const Gfx::Bitmap* bitmap)
|
||||
void ViewWidget::set_bitmap(const Gfx::Bitmap* bitmap)
|
||||
{
|
||||
if (m_bitmap == bitmap)
|
||||
return;
|
||||
|
@ -300,7 +302,7 @@ void QSWidget::set_bitmap(const Gfx::Bitmap* bitmap)
|
|||
}
|
||||
|
||||
// Same as ImageWidget::animate(), you probably want to keep any changes in sync
|
||||
void QSWidget::animate()
|
||||
void ViewWidget::animate()
|
||||
{
|
||||
m_current_frame_index = (m_current_frame_index + 1) % m_image_decoder->frame_count();
|
||||
|
||||
|
@ -318,3 +320,5 @@ void QSWidget::animate()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -13,8 +13,10 @@
|
|||
#include <LibGfx/ImageDecoder.h>
|
||||
#include <LibGfx/Point.h>
|
||||
|
||||
class QSWidget final : public GUI::Frame {
|
||||
C_OBJECT(QSWidget)
|
||||
namespace ImageViewer {
|
||||
|
||||
class ViewWidget final : public GUI::Frame {
|
||||
C_OBJECT(ViewWidget)
|
||||
public:
|
||||
enum Directions {
|
||||
First,
|
||||
|
@ -23,7 +25,7 @@ public:
|
|||
Last
|
||||
};
|
||||
|
||||
virtual ~QSWidget() override;
|
||||
virtual ~ViewWidget() override;
|
||||
|
||||
const Gfx::Bitmap* bitmap() const { return m_bitmap.ptr(); }
|
||||
const String& path() const { return m_path; }
|
||||
|
@ -43,7 +45,7 @@ public:
|
|||
Function<void(const GUI::DropEvent&)> on_drop;
|
||||
|
||||
private:
|
||||
QSWidget();
|
||||
ViewWidget();
|
||||
virtual void doubleclick_event(GUI::MouseEvent&) override;
|
||||
virtual void paint_event(GUI::PaintEvent&) override;
|
||||
virtual void resize_event(GUI::ResizeEvent&) override;
|
||||
|
@ -76,3 +78,5 @@ private:
|
|||
Gfx::FloatPoint m_saved_pan_origin;
|
||||
Vector<String> m_files_in_same_dir;
|
||||
};
|
||||
|
||||
}
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "QSWidget.h"
|
||||
#include "ViewWidget.h"
|
||||
#include <AK/URL.h>
|
||||
#include <LibCore/ArgsParser.h>
|
||||
#include <LibCore/MimeData.h>
|
||||
|
@ -29,6 +29,8 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
using namespace ImageViewer;
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
if (pledge("stdio recvfd sendfd rpath wpath cpath unix thread", nullptr) < 0) {
|
||||
|
@ -75,7 +77,7 @@ int main(int argc, char** argv)
|
|||
auto& toolbar_container = root_widget.add<GUI::ToolbarContainer>();
|
||||
auto& main_toolbar = toolbar_container.add<GUI::Toolbar>();
|
||||
|
||||
auto& widget = root_widget.add<QSWidget>();
|
||||
auto& widget = root_widget.add<ViewWidget>();
|
||||
widget.on_scale_change = [&](int scale, Gfx::IntRect rect) {
|
||||
if (!widget.bitmap()) {
|
||||
window->set_title("Image Viewer");
|
||||
|
@ -185,22 +187,22 @@ int main(int argc, char** argv)
|
|||
|
||||
auto go_first_action = GUI::Action::create("Go to &First", { Mod_None, Key_Home }, Gfx::Bitmap::load_from_file("/res/icons/16x16/go-first.png"),
|
||||
[&](auto&) {
|
||||
widget.navigate(QSWidget::Directions::First);
|
||||
widget.navigate(ViewWidget::Directions::First);
|
||||
});
|
||||
|
||||
auto go_back_action = GUI::Action::create("Go &Back", { Mod_None, Key_Left }, Gfx::Bitmap::load_from_file("/res/icons/16x16/go-back.png"),
|
||||
[&](auto&) {
|
||||
widget.navigate(QSWidget::Directions::Back);
|
||||
widget.navigate(ViewWidget::Directions::Back);
|
||||
});
|
||||
|
||||
auto go_forward_action = GUI::Action::create("Go &Forward", { Mod_None, Key_Right }, Gfx::Bitmap::load_from_file("/res/icons/16x16/go-forward.png"),
|
||||
[&](auto&) {
|
||||
widget.navigate(QSWidget::Directions::Forward);
|
||||
widget.navigate(ViewWidget::Directions::Forward);
|
||||
});
|
||||
|
||||
auto go_last_action = GUI::Action::create("Go to &Last", { Mod_None, Key_End }, Gfx::Bitmap::load_from_file("/res/icons/16x16/go-last.png"),
|
||||
[&](auto&) {
|
||||
widget.navigate(QSWidget::Directions::Last);
|
||||
widget.navigate(ViewWidget::Directions::Last);
|
||||
});
|
||||
|
||||
auto full_sceen_action = GUI::CommonActions::make_fullscreen_action(
|
||||
|
|
|
@ -51,7 +51,7 @@ void ImageWidget::set_auto_resize(bool value)
|
|||
set_fixed_size(m_bitmap->size());
|
||||
}
|
||||
|
||||
// Same as QSWidget::animate(), you probably want to keep any changes in sync
|
||||
// Same as ImageViewer::ViewWidget::animate(), you probably want to keep any changes in sync
|
||||
void ImageWidget::animate()
|
||||
{
|
||||
m_current_frame_index = (m_current_frame_index + 1) % m_image_decoder->frame_count();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue