File indexing completed on 2024-06-02 04:20:57

0001 /*
0002  * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #ifndef MAIN_WINDOW_HPP
0008 #define MAIN_WINDOW_HPP
0009 
0010 #include <QMainWindow>
0011 #include <memory>
0012 
0013 #include "widgets/dialogs/selection_manager.hpp"
0014 #include "item_models/document_node_model.hpp"
0015 
0016 namespace glaxnimate::android {
0017 
0018 class MainWindow : public QMainWindow, public glaxnimate::gui::SelectionManager
0019 {
0020     Q_OBJECT
0021 
0022 public:
0023     explicit MainWindow(QWidget *parent = nullptr);
0024     ~MainWindow();
0025 
0026     model::Document* document() const override;
0027     QColor current_color() const override;
0028     void set_current_color(const QColor& c) override;
0029     QColor secondary_color() const override;
0030     void set_secondary_color(const QColor& c) override;
0031     QPen current_pen_style() const override;
0032     qreal current_zoom() const override;
0033     model::BrushStyle* linked_brush_style(bool secondary) const override;
0034 
0035     model::Composition* current_composition() const override;
0036     void set_current_composition(model::Composition* comp) override;
0037 
0038     model::VisualNode* current_document_node() const override;
0039     void set_current_document_node(model::VisualNode* node) override;
0040 
0041     void switch_tool(gui::tools::Tool* tool) override;
0042 
0043     QWidget* as_widget() override { return this; }
0044 
0045     std::vector<model::VisualNode*> cleaned_selection() const override;
0046 
0047     std::vector<io::mime::MimeSerializer*> supported_mimes() const override;
0048     void set_selection(const std::vector<model::VisualNode*>& selected) override;
0049     void update_selection(const std::vector<model::VisualNode*>& selected, const std::vector<model::VisualNode*>& deselected) override;
0050 
0051     glaxnimate::gui::item_models::DocumentNodeModel* model() const override;
0052 
0053 public Q_SLOTS:
0054     void open_intent(const QUrl& uri);
0055 
0056 protected:
0057     void changeEvent(QEvent *e) override;
0058     void resizeEvent(QResizeEvent* e) override;
0059     void showEvent(QShowEvent* e) override;
0060 
0061 private Q_SLOTS:
0062     void tool_triggered(bool checked);
0063 
0064 private:
0065     class Private;
0066     std::unique_ptr<Private> d;
0067 };
0068 
0069 } // namespace glaxnimate::android
0070 #endif // MAIN_WINDOW_HPP