mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Preferences: switch language preference to be a dropdown
The list widget takes too much space and isn't really any better. The dropdown plus fliter is actually rather neat. Also added back the connections so the dropdown and filter get disabled when system default is selected (just as it was in the old preferences dialog). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
8dad3457ef
commit
9eed778c68
2 changed files with 60 additions and 19 deletions
|
@ -16,7 +16,7 @@ PreferencesLanguage::PreferencesLanguage() : AbstractPreferencesWidget(tr("Langu
|
||||||
QSortFilterProxyModel *filterModel = new QSortFilterProxyModel();
|
QSortFilterProxyModel *filterModel = new QSortFilterProxyModel();
|
||||||
filterModel->setSourceModel(LanguageModel::instance());
|
filterModel->setSourceModel(LanguageModel::instance());
|
||||||
filterModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
|
filterModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
|
||||||
ui->languageView->setModel(filterModel);
|
ui->languageDropdown->setModel(filterModel);
|
||||||
filterModel->sort(0);
|
filterModel->sort(0);
|
||||||
connect(ui->languageFilter, &QLineEdit::textChanged,
|
connect(ui->languageFilter, &QLineEdit::textChanged,
|
||||||
filterModel, &QSortFilterProxyModel::setFilterFixedString);
|
filterModel, &QSortFilterProxyModel::setFilterFixedString);
|
||||||
|
@ -32,10 +32,10 @@ void PreferencesLanguage::refreshSettings()
|
||||||
QSettings s;
|
QSettings s;
|
||||||
s.beginGroup("Language");
|
s.beginGroup("Language");
|
||||||
ui->languageSystemDefault->setChecked(s.value("UseSystemLanguage", true).toBool());
|
ui->languageSystemDefault->setChecked(s.value("UseSystemLanguage", true).toBool());
|
||||||
QAbstractItemModel *m = ui->languageView->model();
|
QAbstractItemModel *m = ui->languageDropdown->model();
|
||||||
QModelIndexList languages = m->match(m->index(0, 0), Qt::UserRole, s.value("UiLanguage").toString());
|
QModelIndexList languages = m->match(m->index(0, 0), Qt::UserRole, s.value("UiLanguage").toString());
|
||||||
if (languages.count())
|
if (languages.count())
|
||||||
ui->languageView->setCurrentIndex(languages.first());
|
ui->languageDropdown->setCurrentIndex(languages.first().row());
|
||||||
s.endGroup();
|
s.endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,12 +44,14 @@ void PreferencesLanguage::syncSettings()
|
||||||
QSettings s;
|
QSettings s;
|
||||||
s.beginGroup("Language");
|
s.beginGroup("Language");
|
||||||
bool useSystemLang = s.value("UseSystemLanguage", true).toBool();
|
bool useSystemLang = s.value("UseSystemLanguage", true).toBool();
|
||||||
|
QAbstractItemModel *m = ui->languageDropdown->model();
|
||||||
|
QString currentText = m->data(m->index(ui->languageDropdown->currentIndex(),0), Qt::UserRole).toString();
|
||||||
if (useSystemLang != ui->languageSystemDefault->isChecked() ||
|
if (useSystemLang != ui->languageSystemDefault->isChecked() ||
|
||||||
(!useSystemLang && s.value("UiLanguage").toString() != ui->languageView->currentIndex().data(Qt::UserRole))) {
|
(!useSystemLang && s.value("UiLanguage").toString() != currentText)) {
|
||||||
QMessageBox::warning(this, tr("Restart required"),
|
QMessageBox::warning(this, tr("Restart required"),
|
||||||
tr("To correctly load a new language you must restart Subsurface."));
|
tr("To correctly load a new language you must restart Subsurface."));
|
||||||
}
|
}
|
||||||
s.setValue("UseSystemLanguage", ui->languageSystemDefault->isChecked());
|
s.setValue("UseSystemLanguage", ui->languageSystemDefault->isChecked());
|
||||||
s.setValue("UiLanguage", ui->languageView->currentIndex().data(Qt::UserRole));
|
s.setValue("UiLanguage", currentText);
|
||||||
s.endGroup();
|
s.endGroup();
|
||||||
}
|
}
|
|
@ -6,7 +6,7 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>576</width>
|
<width>621</width>
|
||||||
<height>523</height>
|
<height>523</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="language_group">
|
<widget class="QGroupBox" name="language_group">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
|
@ -33,6 +33,9 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="languageDropdown"/>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer">
|
<spacer name="horizontalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
@ -60,17 +63,53 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QListView" name="languageView">
|
<spacer name="verticalSpacer">
|
||||||
<property name="sizePolicy">
|
<property name="orientation">
|
||||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
<enum>Qt::Vertical</enum>
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>languageSystemDefault</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>languageDropdown</receiver>
|
||||||
|
<slot>setDisabled(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>73</x>
|
||||||
|
<y>273</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>179</x>
|
||||||
|
<y>273</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>languageSystemDefault</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>languageFilter</receiver>
|
||||||
|
<slot>setDisabled(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>73</x>
|
||||||
|
<y>273</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>539</x>
|
||||||
|
<y>273</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
</ui>
|
</ui>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue