void OptionLayout::clear_options() { QMap<QString, GraphicalValue *>::const_iterator it = m_options.begin(); while(it != m_options.end()) { delete labelForField(it.value()); // delete the associated label delete it.value(); it++; } m_options.clear(); }
GeneralSettingsPage::GeneralSettingsPage(QWidget* parent) : SettingsPage(parent) , translation_file(getSetting(Settings::General_TranslationFile).toString()) { auto layout = new QFormLayout(this); layout->addRow(Util::Headline::create(tr("Appearance"))); auto language_widget = new QWidget(); auto language_layout = new QHBoxLayout(language_widget); language_layout->setContentsMargins({}); layout->addRow(tr("Language:"), language_widget); language_box = new QComboBox(this); language_layout->addWidget(language_box); QAbstractButton* language_file_button = new QToolButton(); language_file_button->setIcon(QIcon(QLatin1String(":/images/open.png"))); language_layout->addWidget(language_file_button); layout->addItem(Util::SpacerItem::create(this)); layout->addRow(Util::Headline::create(tr("Screen"))); auto ppi_widget = new QWidget(); auto ppi_layout = new QHBoxLayout(ppi_widget); ppi_layout->setContentsMargins({}); layout->addRow(tr("Pixels per inch:"), ppi_widget); ppi_edit = Util::SpinBox::create(2, 0.01, 9999); ppi_layout->addWidget(ppi_edit); QAbstractButton* ppi_calculate_button = new QToolButton(); ppi_calculate_button->setIcon(QIcon(QLatin1String(":/images/settings.png"))); ppi_layout->addWidget(ppi_calculate_button); layout->addItem(Util::SpacerItem::create(this)); layout->addRow(Util::Headline::create(tr("Program start"))); open_mru_check = new QCheckBox(AbstractHomeScreenWidget::tr("Open most recently used file")); layout->addRow(open_mru_check); tips_visible_check = new QCheckBox(AbstractHomeScreenWidget::tr("Show tip of the day")); layout->addRow(tips_visible_check); layout->addItem(Util::SpacerItem::create(this)); layout->addRow(Util::Headline::create(tr("Saving files"))); compatibility_check = new QCheckBox(tr("Retain compatibility with Mapper %1").arg(QLatin1String("0.5"))); layout->addRow(compatibility_check); // Possible point: limit size of undo/redo journal autosave_check = new QCheckBox(tr("Save information for automatic recovery")); layout->addRow(autosave_check); autosave_interval_edit = Util::SpinBox::create(1, 120, tr("min", "unit minutes"), 1); layout->addRow(tr("Recovery information saving interval:"), autosave_interval_edit); layout->addItem(Util::SpacerItem::create(this)); layout->addRow(Util::Headline::create(tr("File import and export"))); encoding_box = new QComboBox(); encoding_box->addItem(QLatin1String("System")); encoding_box->addItem(QLatin1String("Windows-1250")); encoding_box->addItem(QLatin1String("Windows-1252")); encoding_box->addItem(QLatin1String("ISO-8859-1")); encoding_box->addItem(QLatin1String("ISO-8859-15")); encoding_box->setEditable(true); QStringList availableCodecs; for (const QByteArray& item : QTextCodec::availableCodecs()) { availableCodecs.append(QString::fromUtf8(item)); } if (!availableCodecs.empty()) { availableCodecs.sort(Qt::CaseInsensitive); availableCodecs.removeDuplicates(); encoding_box->addItem(tr("More...")); } QCompleter* completer = new QCompleter(availableCodecs, this); completer->setCaseSensitivity(Qt::CaseInsensitive); encoding_box->setCompleter(completer); layout->addRow(tr("8-bit encoding:"), encoding_box); ocd_importer_check = new QCheckBox(tr("Use the new OCD importer also for version 8 files").replace("8", "6-8")); layout->addRow(ocd_importer_check); updateWidgets(); connect(language_file_button, &QAbstractButton::clicked, this, &GeneralSettingsPage::openTranslationFileDialog); connect(ppi_calculate_button, &QAbstractButton::clicked, this, &GeneralSettingsPage::openPPICalculationDialog); connect(encoding_box, &QComboBox::currentTextChanged, this, &GeneralSettingsPage::encodingChanged); connect(autosave_check, &QAbstractButton::toggled, autosave_interval_edit, &QWidget::setEnabled); connect(autosave_check, &QAbstractButton::toggled, layout->labelForField(autosave_interval_edit), &QWidget::setEnabled); }