/* * Copyright (c) 2020, Emanuel Sprung * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Browser { class BookmarksBarWidget final : public GUI::Widget , private GUI::ModelClient { C_OBJECT(BookmarksBarWidget); public: static BookmarksBarWidget& the(); virtual ~BookmarksBarWidget() override; void set_model(RefPtr); GUI::Model* model() { return m_model.ptr(); } const GUI::Model* model() const { return m_model.ptr(); } Function on_bookmark_click; Function on_bookmark_hover; bool contains_bookmark(const String& url); bool remove_bookmark(const String& url); bool add_bookmark(const String& url, const String& title); bool edit_bookmark(const String& url); private: BookmarksBarWidget(const String&, bool enabled); // ^GUI::ModelClient virtual void model_did_update(unsigned) override; // ^GUI::Widget virtual void resize_event(GUI::ResizeEvent&) override; void update_content_size(); RefPtr m_model; RefPtr m_additional; RefPtr m_separator; RefPtr m_additional_menu; RefPtr m_context_menu; RefPtr m_context_menu_default_action; String m_context_menu_url; NonnullRefPtrVector m_bookmarks; int m_last_visible_index { -1 }; }; }