From 2e5fbe80528b7c1dc5526ffa5f27b105f2d1a109 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Mon, 19 Jun 2023 07:15:13 -0400 Subject: [PATCH] Ladybird: Add context menu items to directly open audio files After commit 7ec7015, we can open audio documents directly. This adds content menu items to do so, similar to images and videos. --- Ladybird/Tab.cpp | 15 +++++++++++++++ Userland/Applications/Browser/IconBag.cpp | 1 + Userland/Applications/Browser/IconBag.h | 1 + Userland/Applications/Browser/Tab.cpp | 7 +++++++ 4 files changed, 24 insertions(+) diff --git a/Ladybird/Tab.cpp b/Ladybird/Tab.cpp index 7a16f0f25fb..3cecf233734 100644 --- a/Ladybird/Tab.cpp +++ b/Ladybird/Tab.cpp @@ -403,6 +403,18 @@ Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path, WebView:: view().toggle_media_loop_state(); }); + auto* open_audio_action = new QAction("&Open Audio", this); + open_audio_action->setIcon(QIcon(QString("%1/res/icons/16x16/filetype-sound.png").arg(s_serenity_resource_root.characters()))); + QObject::connect(open_audio_action, &QAction::triggered, this, [this]() { + open_link(m_media_context_menu_url); + }); + + auto* open_audio_in_new_tab_action = new QAction("Open Audio in New &Tab", this); + open_audio_in_new_tab_action->setIcon(QIcon(QString("%1/res/icons/16x16/new-tab.png").arg(s_serenity_resource_root.characters()))); + QObject::connect(open_audio_in_new_tab_action, &QAction::triggered, this, [this]() { + open_link_in_new_tab(m_media_context_menu_url); + }); + auto* copy_audio_url_action = new QAction("Copy Audio &URL", this); copy_audio_url_action->setIcon(QIcon(QString("%1/res/icons/16x16/edit-copy.png").arg(s_serenity_resource_root.characters()))); QObject::connect(copy_audio_url_action, &QAction::triggered, this, [this]() { @@ -415,6 +427,9 @@ Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path, WebView:: m_audio_context_menu->addAction(m_media_context_menu_controls_action); m_audio_context_menu->addAction(m_media_context_menu_loop_action); m_audio_context_menu->addSeparator(); + m_audio_context_menu->addAction(open_audio_action); + m_audio_context_menu->addAction(open_audio_in_new_tab_action); + m_audio_context_menu->addSeparator(); m_audio_context_menu->addAction(copy_audio_url_action); m_audio_context_menu->addSeparator(); m_audio_context_menu->addAction(&m_window->inspect_dom_node_action()); diff --git a/Userland/Applications/Browser/IconBag.cpp b/Userland/Applications/Browser/IconBag.cpp index 1b35be30847..3e6fab1c86b 100644 --- a/Userland/Applications/Browser/IconBag.cpp +++ b/Userland/Applications/Browser/IconBag.cpp @@ -14,6 +14,7 @@ ErrorOr IconBag::try_create() icon_bag.filetype_html = TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/filetype-html.png"sv)); icon_bag.filetype_text = TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/filetype-text.png"sv)); icon_bag.filetype_javascript = TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/filetype-javascript.png"sv)); + icon_bag.filetype_audio = TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/filetype-sound.png"sv)); icon_bag.filetype_image = TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/filetype-image.png"sv)); icon_bag.filetype_video = TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/filetype-video.png"sv)); icon_bag.bookmark_contour = TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/bookmark-contour.png"sv)); diff --git a/Userland/Applications/Browser/IconBag.h b/Userland/Applications/Browser/IconBag.h index c00d9499e9a..1868671030a 100644 --- a/Userland/Applications/Browser/IconBag.h +++ b/Userland/Applications/Browser/IconBag.h @@ -16,6 +16,7 @@ struct IconBag final { RefPtr filetype_html { nullptr }; RefPtr filetype_text { nullptr }; RefPtr filetype_javascript { nullptr }; + RefPtr filetype_audio { nullptr }; RefPtr filetype_image { nullptr }; RefPtr filetype_video { nullptr }; RefPtr bookmark_contour { nullptr }; diff --git a/Userland/Applications/Browser/Tab.cpp b/Userland/Applications/Browser/Tab.cpp index 9d714da91b4..e4b2a98be83 100644 --- a/Userland/Applications/Browser/Tab.cpp +++ b/Userland/Applications/Browser/Tab.cpp @@ -393,6 +393,13 @@ Tab::Tab(BrowserWindow& window) m_audio_context_menu->add_action(*m_media_context_menu_controls_action); m_audio_context_menu->add_action(*m_media_context_menu_loop_action); m_audio_context_menu->add_separator(); + m_audio_context_menu->add_action(GUI::Action::create("&Open Audio", g_icon_bag.filetype_audio, [this](auto&) { + view().on_link_click(m_media_context_menu_url, "", 0); + })); + m_audio_context_menu->add_action(GUI::Action::create("Open Audio in New &Tab", g_icon_bag.new_tab, [this](auto&) { + view().on_link_click(m_media_context_menu_url, "_blank", 0); + })); + m_audio_context_menu->add_separator(); m_audio_context_menu->add_action(GUI::Action::create("Copy Audio &URL", g_icon_bag.copy, [this](auto&) { GUI::Clipboard::the().set_plain_text(m_media_context_menu_url.to_deprecated_string()); }));