/* * Copyright (c) 2024, Andrew Kaster * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include #include #include #include #include #include namespace Ladybird { Application::Application(Badge, Main::Arguments& arguments) : QApplication(arguments.argc, arguments.argv) { } void Application::create_platform_options(WebView::ChromeOptions&, WebView::WebContentOptions& web_content_options) { web_content_options.config_path = Settings::the()->directory(); } Application::~Application() { close_task_manager_window(); } bool Application::event(QEvent* event) { switch (event->type()) { case QEvent::FileOpen: { if (!on_open_file) break; auto const& open_event = *static_cast(event); auto file = ak_string_from_qstring(open_event.file()); if (auto file_url = WebView::sanitize_url(file); file_url.has_value()) on_open_file(file_url.release_value()); break; } default: break; } return QApplication::event(event); } void Application::show_task_manager_window() { if (!m_task_manager_window) { m_task_manager_window = new TaskManagerWindow(nullptr); } m_task_manager_window->show(); m_task_manager_window->activateWindow(); m_task_manager_window->raise(); } void Application::close_task_manager_window() { if (m_task_manager_window) { m_task_manager_window->close(); delete m_task_manager_window; m_task_manager_window = nullptr; } } BrowserWindow& Application::new_window(Vector const& initial_urls, BrowserWindow::IsPopupWindow is_popup_window, Tab* parent_tab, Optional page_index) { auto* window = new BrowserWindow(initial_urls, is_popup_window, parent_tab, move(page_index)); set_active_window(*window); window->show(); if (initial_urls.is_empty()) { auto* tab = window->current_tab(); if (tab) { tab->set_url_is_hidden(true); tab->focus_location_editor(); } } window->activateWindow(); window->raise(); return *window; } Optional Application::ask_user_for_download_folder() const { auto path = QFileDialog::getExistingDirectory(nullptr, "Select download directory", QDir::homePath()); if (path.isNull()) return {}; return ak_byte_string_from_qstring(path); } }