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_size_widget.hpp" 0008 #include "ui_font_size_widget.h" 0009 0010 #include <QEvent> 0011 #include <QStandardItemModel> 0012 #include <QSignalBlocker> 0013 #include <QFontDatabase> 0014 0015 class glaxnimate::gui::font::FontSizeWidget::Private 0016 { 0017 public: 0018 Ui_FontSizeWidget ui; 0019 QStandardItemModel sizes_model; 0020 QList<int> standard_sizes; 0021 }; 0022 0023 glaxnimate::gui::font::FontSizeWidget::FontSizeWidget(QWidget* parent) 0024 : QWidget(parent), d(std::make_unique<Private>()) 0025 { 0026 d->ui.setupUi(this); 0027 0028 d->standard_sizes = QFontDatabase::standardSizes(); 0029 for ( int s : d->standard_sizes ) 0030 d->sizes_model.appendRow(new QStandardItem(QString::number(s))); 0031 d->ui.view_size->setModel(&d->sizes_model); 0032 0033 connect(d->ui.view_size->selectionModel(), &QItemSelectionModel::currentChanged, this, &FontSizeWidget::size_selected); 0034 connect(d->ui.spin_size, qOverload<double>(&QDoubleSpinBox::valueChanged), this, &FontSizeWidget::size_edited); 0035 } 0036 0037 glaxnimate::gui::font::FontSizeWidget::~FontSizeWidget() = default; 0038 0039 void glaxnimate::gui::font::FontSizeWidget::changeEvent ( QEvent* e ) 0040 { 0041 QWidget::changeEvent(e); 0042 0043 if ( e->type() == QEvent::LanguageChange) 0044 { 0045 d->ui.retranslateUi(this); 0046 } 0047 } 0048 0049 void glaxnimate::gui::font::FontSizeWidget::set_font_size(qreal size) 0050 { 0051 d->ui.spin_size->setValue(size); 0052 size_edited(size); 0053 } 0054 0055 0056 void glaxnimate::gui::font::FontSizeWidget::size_edited(double size) 0057 { 0058 QSignalBlocker blocker(d->ui.view_size); 0059 0060 for ( int i = 0; i < d->standard_sizes.size(); i++ ) 0061 if ( d->standard_sizes[i] == size ) 0062 d->ui.view_size->setCurrentIndex(d->sizes_model.index(i, 0)); 0063 0064 Q_EMIT font_size_changed(size); 0065 } 0066 0067 0068 void glaxnimate::gui::font::FontSizeWidget::size_selected(const QModelIndex& index) 0069 { 0070 QSignalBlocker blocker(d->ui.spin_size); 0071 0072 qreal size = index.data().toInt(); 0073 d->ui.spin_size->setValue(size);; 0074 0075 Q_EMIT font_size_changed(size); 0076 }