File indexing completed on 2025-02-02 04:11:28
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #include "font_style_dialog.hpp" 0008 #include "ui_font_style_dialog.h" 0009 0010 #include <QEvent> 0011 #include "app/widgets/no_close_on_enter.hpp" 0012 0013 class glaxnimate::gui::font::FontStyleDialog::Private 0014 { 0015 public: 0016 Ui::FontStyleDialog ui; 0017 app::widgets::NoCloseOnEnter ncoe; 0018 0019 void set_preview_font() 0020 { 0021 QFont font; 0022 0023 if ( ui.tab_widget->currentWidget() == ui.tab_google ) 0024 font = ui.google_fonts_widget->selected_font(); 0025 else if ( ui.tab_widget->currentWidget() == ui.tab_custom ) 0026 font = ui.custom_font_widget->selected_font(); 0027 else 0028 font = ui.widget_system->selected_font(); 0029 0030 ui.preview->set_font(font); 0031 } 0032 }; 0033 0034 0035 glaxnimate::gui::font::FontStyleDialog::FontStyleDialog(QWidget* parent) 0036 : QDialog(parent), d(std::make_unique<Private>()) 0037 { 0038 d->ui.setupUi(this); 0039 installEventFilter(&d->ncoe); 0040 connect(d->ui.tab_widget, &QTabWidget::currentChanged, this, [this]{ 0041 d->set_preview_font(); 0042 }); 0043 } 0044 0045 glaxnimate::gui::font::FontStyleDialog::~FontStyleDialog() = default; 0046 0047 void glaxnimate::gui::font::FontStyleDialog::changeEvent ( QEvent* e ) 0048 { 0049 QDialog::changeEvent(e); 0050 0051 if ( e->type() == QEvent::LanguageChange) 0052 { 0053 d->ui.retranslateUi(this); 0054 } 0055 } 0056 0057 QFont glaxnimate::gui::font::FontStyleDialog::selected_font() const 0058 { 0059 return d->ui.preview->selected_font(); 0060 } 0061 0062 void glaxnimate::gui::font::FontStyleDialog::set_font(const QFont& font) 0063 { 0064 d->ui.widget_system->set_font(font); 0065 d->ui.google_fonts_widget->set_font_size(font.pointSizeF()); 0066 d->ui.custom_font_widget->set_font_size(font.pointSizeF()); 0067 } 0068 0069 void glaxnimate::gui::font::FontStyleDialog::set_preview_text(const QString& text) 0070 { 0071 d->ui.preview->set_text(text); 0072 } 0073 0074 QStringList glaxnimate::gui::font::FontStyleDialog::favourites() const 0075 { 0076 return d->ui.widget_system->model().favourites(); 0077 } 0078 0079 void glaxnimate::gui::font::FontStyleDialog::set_favourites(const QStringList& fav) 0080 { 0081 d->ui.widget_system->model().set_favourites(fav); 0082 } 0083 0084 void glaxnimate::gui::font::FontStyleDialog::showEvent(QShowEvent* e) 0085 { 0086 QDialog::showEvent(e); 0087 bool google_enabled = d->ui.google_fonts_widget->model().has_token(); 0088 d->ui.tab_google->setEnabled(google_enabled); 0089 if ( !google_enabled && d->ui.tab_widget->currentWidget() == d->ui.tab_google ) 0090 d->ui.tab_widget->setCurrentIndex(0); 0091 d->set_preview_font(); 0092 } 0093 0094 glaxnimate::model::CustomFont glaxnimate::gui::font::FontStyleDialog::custom_font() const 0095 { 0096 if ( d->ui.tab_widget->currentWidget() == d->ui.tab_google ) 0097 return d->ui.google_fonts_widget->custom_font(); 0098 else if ( d->ui.tab_widget->currentWidget() == d->ui.tab_custom ) 0099 return d->ui.custom_font_widget->custom_font(); 0100 0101 return {}; 0102 }