Skip to content

Commit b263086

Browse files
committed
Fix behaviour of project settings window
For #168
1 parent 69030b8 commit b263086

File tree

4 files changed

+27
-13
lines changed

4 files changed

+27
-13
lines changed

src/db/tables/settings_table.cpp

+5-6
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,8 @@ void SettingsTable::setSetting(QWidget* parent, const GenericProjectSetting* set
102102
// Add setting
103103
QList<ColumnDataPair> columnDataPairs = QList<ColumnDataPair>();
104104
columnDataPairs.append({settingKeyColumn, setting->key});
105-
columnDataPairs.append({settingValueColumn, setting->defaultValue});
106-
BufferRowIndex newBufferIndex = addRow(parent, columnDataPairs);
107-
id = primaryKeyColumn->getValueAt(newBufferIndex);
105+
columnDataPairs.append({settingValueColumn, value});
106+
addRow(parent, columnDataPairs);
108107
}
109108
}
110109

@@ -134,11 +133,11 @@ ItemID SettingsTable::findSettingID(const GenericProjectSetting* setting, QWidge
134133
{
135134
QList<BufferRowIndex> bufferRowIndices = getMatchingBufferRowIndices(settingKeyColumn, setting->key);
136135

137-
if (bufferRowIndices.size() == 1) {
138-
return VALID_ITEM_ID();
136+
if (bufferRowIndices.size() == 0) {
137+
return ItemID();
139138
}
140-
141139
BufferRowIndex settingIndex = bufferRowIndices.last();
140+
142141
if (bufferRowIndices.size() > 1) {
143142
QString error = "WARNING: Found " + QString::number(bufferRowIndices.size()) + " entries for project setting " + setting->key + ".";
144143
if (parent) {

src/settings/project_settings_window.cpp

+18-5
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ ProjectSettingsWindow::ProjectSettingsWindow(QWidget* parent, Database* db, bool
6161
restoreDialogGeometry(this, parent, &Settings::projectSettingsWindow_geometry);
6262

6363

64-
populateItemCombo(db->hikersTable, db->hikersTable->nameColumn, true, defaultHikerCombo, selectableHikerIDs);
64+
repopulateHikerCombo();
6565

6666

6767
connect(newHikerButton, &QPushButton::clicked, this, &ProjectSettingsWindow::handle_newHiker);
@@ -86,6 +86,11 @@ ProjectSettingsWindow::ProjectSettingsWindow(QWidget* parent, Database* db, bool
8686
}
8787
}
8888

89+
void ProjectSettingsWindow::repopulateHikerCombo()
90+
{
91+
populateItemCombo(db->hikersTable, db->hikersTable->nameColumn, true, defaultHikerCombo, selectableHikerIDs);
92+
}
93+
8994

9095

9196
/**
@@ -106,13 +111,19 @@ void ProjectSettingsWindow::loadSettings()
106111
*/
107112
void ProjectSettingsWindow::saveSettings()
108113
{
109-
if (firstOpen && !newDefaultHikerLineEdit->text().isEmpty()) {
114+
if (firstOpen) {
115+
if (newDefaultHikerLineEdit->text().isEmpty()) return;
116+
110117
QString newDefaultHikerName = newDefaultHikerLineEdit->text();
111118
Hiker* newDefaultHiker = new Hiker(ItemID(), newDefaultHikerName);
112-
BufferRowIndex newHikerIndex = db->hikersTable->addRow(this, newDefaultHiker);
113-
defaultHikerCombo->setCurrentIndex(newHikerIndex.get() + 1); // 0 is None
119+
db->hikersTable->addRow(this, newDefaultHiker);
120+
121+
db->projectSettings->defaultHiker.set(this, newDefaultHiker->hikerID.asQVariant());
122+
delete newDefaultHiker;
123+
}
124+
else {
125+
db->projectSettings->defaultHiker.set(this, parseItemCombo(defaultHikerCombo, selectableHikerIDs).asQVariant());
114126
}
115-
db->projectSettings->defaultHiker.set(this, parseItemCombo(defaultHikerCombo, selectableHikerIDs).asQVariant());
116127
}
117128

118129

@@ -126,6 +137,8 @@ void ProjectSettingsWindow::handle_newHiker()
126137
{
127138
BufferRowIndex newHikerIndex = openNewHikerDialogAndStore(this, db);
128139
if (newHikerIndex.isInvalid()) return;
140+
141+
repopulateHikerCombo();
129142
ValidItemID hikerID = db->hikersTable->getPrimaryKeyAt(newHikerIndex);
130143
defaultHikerCombo->setCurrentIndex(selectableHikerIDs.indexOf(hikerID) + 1); // 0 is None
131144
}

src/settings/project_settings_window.h

+2
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ class ProjectSettingsWindow : public QDialog, public Ui_ProjectSettingsWindow
5454

5555
public:
5656
ProjectSettingsWindow(QWidget* parent, Database* db, bool firstOpen = false);
57+
private:
58+
void repopulateHikerCombo();
5759

5860
private:
5961
void loadSettings();

src/ui/project_settings_window.ui

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<x>0</x>
88
<y>0</y>
99
<width>350</width>
10-
<height>210</height>
10+
<height>205</height>
1111
</rect>
1212
</property>
1313
<property name="sizePolicy">
@@ -33,7 +33,7 @@
3333
<number>10</number>
3434
</property>
3535
<property name="topMargin">
36-
<number>10</number>
36+
<number>5</number>
3737
</property>
3838
<property name="rightMargin">
3939
<number>10</number>

0 commit comments

Comments
 (0)