@@ -61,7 +61,7 @@ ProjectSettingsWindow::ProjectSettingsWindow(QWidget* parent, Database* db, bool
61
61
restoreDialogGeometry (this , parent, &Settings::projectSettingsWindow_geometry);
62
62
63
63
64
- populateItemCombo (db-> hikersTable , db-> hikersTable -> nameColumn , true , defaultHikerCombo, selectableHikerIDs );
64
+ repopulateHikerCombo ( );
65
65
66
66
67
67
connect (newHikerButton, &QPushButton::clicked, this , &ProjectSettingsWindow::handle_newHiker);
@@ -86,6 +86,11 @@ ProjectSettingsWindow::ProjectSettingsWindow(QWidget* parent, Database* db, bool
86
86
}
87
87
}
88
88
89
+ void ProjectSettingsWindow::repopulateHikerCombo ()
90
+ {
91
+ populateItemCombo (db->hikersTable , db->hikersTable ->nameColumn , true , defaultHikerCombo, selectableHikerIDs);
92
+ }
93
+
89
94
90
95
91
96
/* *
@@ -106,13 +111,19 @@ void ProjectSettingsWindow::loadSettings()
106
111
*/
107
112
void ProjectSettingsWindow::saveSettings ()
108
113
{
109
- if (firstOpen && !newDefaultHikerLineEdit->text ().isEmpty ()) {
114
+ if (firstOpen) {
115
+ if (newDefaultHikerLineEdit->text ().isEmpty ()) return ;
116
+
110
117
QString newDefaultHikerName = newDefaultHikerLineEdit->text ();
111
118
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 ());
114
126
}
115
- db->projectSettings ->defaultHiker .set (this , parseItemCombo (defaultHikerCombo, selectableHikerIDs).asQVariant ());
116
127
}
117
128
118
129
@@ -126,6 +137,8 @@ void ProjectSettingsWindow::handle_newHiker()
126
137
{
127
138
BufferRowIndex newHikerIndex = openNewHikerDialogAndStore (this , db);
128
139
if (newHikerIndex.isInvalid ()) return ;
140
+
141
+ repopulateHikerCombo ();
129
142
ValidItemID hikerID = db->hikersTable ->getPrimaryKeyAt (newHikerIndex);
130
143
defaultHikerCombo->setCurrentIndex (selectableHikerIDs.indexOf (hikerID) + 1 ); // 0 is None
131
144
}
0 commit comments