File indexing completed on 2025-01-26 04:02:01

0001 /*
0002  * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #pragma once
0008 
0009 #include <memory>
0010 
0011 #include <QtGlobal>
0012 #include <QIcon>
0013 #include <QMimeData>
0014 
0015 #include "app/application.hpp"
0016 
0017 
0018 #ifdef MOBILE_UI
0019 
0020 namespace glaxnimate::gui {
0021 
0022 class GlaxnimateApp : public app::Application
0023 {
0024     Q_OBJECT
0025 
0026 public:
0027     using app::Application::Application;
0028 
0029     static GlaxnimateApp* instance()
0030     {
0031         return static_cast<GlaxnimateApp *>(QCoreApplication::instance());
0032     }
0033 #ifdef Q_OS_ANDROID
0034     QString data_file(const QString& name) const override;
0035 #endif
0036     static qreal handle_size_multiplier();
0037     static qreal handle_distance_multiplier();
0038 
0039     void set_clipboard_data(QMimeData* data);
0040     const QMimeData* get_clipboard_data();
0041 
0042 
0043     QString backup_path() const;
0044 
0045     static QString temp_path();
0046 
0047 private:
0048     std::unique_ptr<QMimeData> clipboard = std::make_unique<QMimeData>();
0049 };
0050 
0051 } // namespace glaxnimate::gui
0052 
0053 #else
0054 
0055 #include "app/log/listener_stderr.hpp"
0056 #include "app/log/listener_store.hpp"
0057 
0058 namespace app::settings { class ShortcutSettings; }
0059 
0060 namespace glaxnimate::gui {
0061 
0062 class GlaxnimateApp : public app::Application
0063 {
0064     Q_OBJECT
0065 
0066 public:
0067     using app::Application::Application;
0068 
0069     const std::vector<app::log::LogLine>& log_lines() const
0070     {
0071         return store_logger->lines();
0072     }
0073 
0074     static GlaxnimateApp* instance()
0075     {
0076         return static_cast<GlaxnimateApp *>(QCoreApplication::instance());
0077     }
0078 
0079     QString backup_path() const;
0080 
0081     app::settings::ShortcutSettings* shortcuts() const;
0082 
0083     static QString temp_path();
0084 
0085     static qreal handle_size_multiplier() { return 1; }
0086     static qreal handle_distance_multiplier() { return 1; }
0087 
0088 
0089     void set_clipboard_data(QMimeData* data);
0090     const QMimeData* get_clipboard_data();
0091 
0092 protected:
0093     void on_initialize() override;
0094     void on_initialize_settings() override;
0095     void on_initialize_translations() override;
0096     bool event(QEvent *event) override;
0097 
0098 private:
0099     app::log::ListenerStore* store_logger;
0100     app::settings::ShortcutSettings* shortcut_settings;
0101 
0102 };
0103 
0104 } // namespace glaxnimate::gui
0105 #endif