From 995ff2c30ac9e062c698844ddfa7fc06a941197e Mon Sep 17 00:00:00 2001 From: Mike Skec Date: Fri, 19 Feb 2021 21:08:00 +1100 Subject: List item symbol prefernece --- src/about/help.gemini | 2 ++ src/dialogs/settingsdialog.cpp | 20 ++++++++++++++++++++ src/dialogs/settingsdialog.hpp | 2 ++ src/dialogs/settingsdialog.ui | 14 +++++++++++++- src/documentstyle.cpp | 5 ++++- src/documentstyle.hpp | 2 ++ src/renderers/textstyleinstance.cpp | 2 +- 7 files changed, 44 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/about/help.gemini b/src/about/help.gemini index 95f7303..52493cb 100644 --- a/src/about/help.gemini +++ b/src/about/help.gemini @@ -206,6 +206,8 @@ Most items in the *Style* category have either a [Font], [Color] or both buttons * [Quo] controls indent size of blockquotes (default: 1) * [Lst] controls indent size of unordered lists (default: 2) +[List item marker] simply lets you set what symbol is used in list items. By default this is set to Filled Circle. + [Presets] is a cool feature to save, restore and share your color themes. The dropdown contains a list of all previously created colors schemes. With the [+] button you can create a scheme with a unique name. The floppy disk button will override the currently selected preset with all the settings displayed above. The folder button will restore a previously saved preset. The last two buttons allow you to import/export presets to disk and share them with your friends! Share all your beautiful color schemes with the world! The lone text with with the [host.name] text in it can be used to preview some auto-generated themes. It only refreshes the preview and seeds the auto generator with a new host name. diff --git a/src/dialogs/settingsdialog.cpp b/src/dialogs/settingsdialog.cpp index f441824..5283d47 100644 --- a/src/dialogs/settingsdialog.cpp +++ b/src/dialogs/settingsdialog.cpp @@ -43,6 +43,11 @@ SettingsDialog::SettingsDialog(QWidget *parent) : this->ui->ui_density->addItem(tr("Compact"), QVariant::fromValue(int(UIDensity::compact))); this->ui->ui_density->addItem(tr("Classic"), QVariant::fromValue(int(UIDensity::classic))); + this->ui->list_symbol->clear(); + this->ui->list_symbol->addItem("Filled circle", QVariant::fromValue(int(QTextListFormat::Style::ListDisc))); + this->ui->list_symbol->addItem("Circle", QVariant::fromValue(int(QTextListFormat::Style::ListCircle))); + this->ui->list_symbol->addItem("Square", QVariant::fromValue(int(QTextListFormat::Style::ListSquare))); + setGeminiStyle(DocumentStyle { }); this->predefined_styles.clear(); @@ -132,6 +137,14 @@ void SettingsDialog::setGeminiStyle(DocumentStyle const &style) this->ui->indent_h->setValue(this->current_style.indent_h); this->ui->indent_l->setValue(this->current_style.indent_l); + this->ui->list_symbol->setCurrentIndex(0); + for(int i = 0; i < this->ui->list_symbol->count(); ++i) { + if(this->ui->list_symbol->itemData(i).toInt() == int(this->current_style.list_symbol)) { + this->ui->list_symbol->setCurrentIndex(i); + break; + } + } + auto setFontAndColor = [this](QLabel * label, const QFont &font, QColor color) { label->setText(formatFont(font)); @@ -539,6 +552,13 @@ void SettingsDialog::on_indent_l_valueChanged(int value) this->reloadStylePreview(); } +void SettingsDialog::on_list_symbol_currentIndexChanged(int index) +{ + if(index >= 0) { + current_style.list_symbol = QTextListFormat::Style(this->ui->list_symbol->itemData(index).toInt()); + reloadStylePreview(); + } +} void SettingsDialog::on_presets_currentIndexChanged(int index) { diff --git a/src/dialogs/settingsdialog.hpp b/src/dialogs/settingsdialog.hpp index 67612c8..8dab4ce 100644 --- a/src/dialogs/settingsdialog.hpp +++ b/src/dialogs/settingsdialog.hpp @@ -98,6 +98,8 @@ private slots: void on_indent_h_valueChanged(int value); void on_indent_l_valueChanged(int value); + void on_list_symbol_currentIndexChanged(int index); + void on_presets_currentIndexChanged(int index); void on_preset_new_clicked(); diff --git a/src/dialogs/settingsdialog.ui b/src/dialogs/settingsdialog.ui index ace370d..497ac01 100644 --- a/src/dialogs/settingsdialog.ui +++ b/src/dialogs/settingsdialog.ui @@ -1238,13 +1238,24 @@ + + + List item marker + + + + + + + + Presets - + @@ -1488,6 +1499,7 @@ indent_h indent_bq indent_l + list_symbol presets preset_new preset_save diff --git a/src/documentstyle.cpp b/src/documentstyle.cpp index a1a0f29..3316f9c 100644 --- a/src/documentstyle.cpp +++ b/src/documentstyle.cpp @@ -147,7 +147,8 @@ DocumentStyle::DocumentStyle(bool do_init) : theme(Fixed), text_width_enabled(true), line_height_p(5.0), line_height_h(0.0), - indent_bq(1), indent_p(1), indent_h(0), indent_l(2) + indent_bq(1), indent_p(1), indent_h(0), indent_l(2), + list_symbol(QTextListFormat::ListDisc) { if (do_init) this->initialiseDefaultFonts(); } @@ -298,6 +299,7 @@ bool DocumentStyle::save(QSettings &settings) const settings.setValue("indent_p", indent_p); settings.setValue("indent_h", indent_h); settings.setValue("indent_l", indent_l); + settings.setValue("list_symbol", (int)list_symbol); settings.endGroup(); } @@ -414,6 +416,7 @@ bool DocumentStyle::load(QSettings &settings) indent_p = settings.value("indent_p", indent_p).toInt(); indent_h = settings.value("indent_h", indent_h).toInt(); indent_l = settings.value("indent_l", indent_l).toInt(); + list_symbol = (QTextListFormat::Style)settings.value("list_symbol", list_symbol).toInt(); settings.endGroup(); } diff --git a/src/documentstyle.hpp b/src/documentstyle.hpp index c3ac368..1204595 100644 --- a/src/documentstyle.hpp +++ b/src/documentstyle.hpp @@ -5,6 +5,7 @@ #include #include #include +#include struct DocumentStyle { @@ -61,6 +62,7 @@ struct DocumentStyle double line_height_p; double line_height_h; int indent_bq, indent_p, indent_h, indent_l; + QTextListFormat::Style list_symbol; bool save(QSettings & settings) const; bool load(QSettings & settings); diff --git a/src/renderers/textstyleinstance.cpp b/src/renderers/textstyleinstance.cpp index cce6313..6190907 100644 --- a/src/renderers/textstyleinstance.cpp +++ b/src/renderers/textstyleinstance.cpp @@ -53,7 +53,7 @@ TextStyleInstance::TextStyleInstance(DocumentStyle const & themed_style) blockquote_tableformat.setLeftMargin(20.0 * themed_style.indent_bq); blockquote_tableformat.setBottomMargin(20.0); - list_format.setStyle(QTextListFormat::ListDisc); + list_format.setStyle(themed_style.list_symbol); list_format.setIndent(themed_style.indent_l); preformatted_format.setIndent(themed_style.indent_p); -- cgit v1.2.3