Skip to content

Commit 04b23b5

Browse files
committed
User can now undo changes to application list by clicking cancel.
1 parent 9bb0cff commit 04b23b5

File tree

4 files changed

+63
-10
lines changed

4 files changed

+63
-10
lines changed

gui/applicationlist.cpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ ApplicationList::ApplicationList()
2727

2828
ApplicationList::~ApplicationList()
2929
{
30-
//dtor
30+
Clear();
3131
}
3232

3333
void ApplicationList::LoadSettings(QSettings &programSettings)
@@ -125,3 +125,18 @@ void ApplicationList::MoveFirst(const int index)
125125
}
126126
}
127127

128+
129+
void ApplicationList::Copy(ApplicationList &list)
130+
{
131+
Clear();
132+
for (int i=0;i<list.GetApplicationCount();i++)
133+
{
134+
AddApplicationType(list.GetApplicationName(i),list.GetApplicationPath(i));
135+
}
136+
}
137+
138+
void ApplicationList::Clear()
139+
{
140+
mApplications.clear();
141+
}
142+

gui/applicationlist.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,20 @@ class ApplicationList : public QObject
138138
* @param index Index of the application to make the default one
139139
*/
140140
void MoveFirst(const int index);
141+
142+
/**
143+
* @brief Remove all applications from this list and copy all applications from
144+
* list given as a parameter.
145+
* @param list Copying source
146+
*/
147+
void Copy(ApplicationList &list);
141148
protected:
142149

150+
/**
151+
* @brief Clear the list
152+
*
153+
*/
154+
void Clear();
143155
/**
144156
* @brief List of applications
145157
*

gui/settingsdialog.cpp

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ SettingsDialog::SettingsDialog(QSettings &programSettings, ApplicationList &list
2828
mSettings(programSettings),
2929
mApplications(list)
3030
{
31+
mTempApplications.Copy(list);
3132
//Create a layout for the settings dialog
3233
QVBoxLayout *dialoglayout = new QVBoxLayout();
3334

@@ -49,7 +50,7 @@ SettingsDialog::SettingsDialog(QSettings &programSettings, ApplicationList &list
4950

5051
//Connect OK buttons
5152
connect(ok, SIGNAL(clicked()),
52-
this, SLOT(accept()));
53+
this, SLOT(Ok()));
5354
connect(cancel, SIGNAL(clicked()),
5455
this, SLOT(reject()));
5556

@@ -194,7 +195,7 @@ void SettingsDialog::AddApplication()
194195

195196
if (dialog.exec() == QDialog::Accepted)
196197
{
197-
mApplications.AddApplicationType(dialog.GetName(), dialog.GetPath());
198+
mTempApplications.AddApplicationType(dialog.GetName(), dialog.GetPath());
198199
mListWidget->addItem(dialog.GetName());
199200
}
200201
}
@@ -207,7 +208,7 @@ void SettingsDialog::DeleteApplication()
207208

208209
foreach(item, selected)
209210
{
210-
mApplications.RemoveApplication(mListWidget->row(item));
211+
mTempApplications.RemoveApplication(mListWidget->row(item));
211212
mListWidget->clear();
212213
PopulateListWidget();
213214
}
@@ -221,13 +222,13 @@ void SettingsDialog::ModifyApplication()
221222
{
222223
int row = mListWidget->row(item);
223224

224-
ApplicationDialog dialog(mApplications.GetApplicationName(row),
225-
mApplications.GetApplicationPath(row),
225+
ApplicationDialog dialog(mTempApplications.GetApplicationName(row),
226+
mTempApplications.GetApplicationPath(row),
226227
tr("Modify an application"));
227228

228229
if (dialog.exec() == QDialog::Accepted)
229230
{
230-
mApplications.SetApplicationType(row, dialog.GetName(), dialog.GetPath());
231+
mTempApplications.SetApplicationType(row, dialog.GetName(), dialog.GetPath());
231232
item->setText(dialog.GetName());
232233
}
233234
}
@@ -239,17 +240,24 @@ void SettingsDialog::DefaultApplication()
239240
if (selected.size() > 0)
240241
{
241242
int index = mListWidget->row(selected[0]);
242-
mApplications.MoveFirst(index);
243+
mTempApplications.MoveFirst(index);
243244
mListWidget->clear();
244245
PopulateListWidget();
245246
}
246247
}
247248

248249
void SettingsDialog::PopulateListWidget()
249250
{
250-
for (int i = 0;i < mApplications.GetApplicationCount();i++)
251+
for (int i = 0;i < mTempApplications.GetApplicationCount();i++)
251252
{
252-
mListWidget->addItem(mApplications.GetApplicationName(i));
253+
mListWidget->addItem(mTempApplications.GetApplicationName(i));
253254
}
254255
}
255256

257+
void SettingsDialog::Ok()
258+
{
259+
mApplications.Copy(mTempApplications);
260+
accept();
261+
}
262+
263+

gui/settingsdialog.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ class SettingsDialog : public QDialog
5252
void SaveCheckboxValues();
5353

5454
protected slots:
55+
/**
56+
* @brief Slot for clicking OK.
57+
*
58+
*/
59+
void Ok();
5560

5661
/**
5762
* @brief Slot for adding a new application to the list
@@ -77,7 +82,13 @@ protected slots:
7782
*/
7883
void DefaultApplication();
7984
protected:
85+
86+
/**
87+
* @brief Clear all applications from the list and re insert them from mTempApplications
88+
*
89+
*/
8090
void PopulateListWidget();
91+
8192
/**
8293
* @brief Load saved values
8394
* Loads dialog size and column widths.
@@ -160,6 +171,13 @@ protected slots:
160171
*
161172
*/
162173
ApplicationList &mApplications;
174+
175+
/**
176+
* @brief Temporary list of applications
177+
* This will be copied to actual list of applications (mApplications)
178+
* when user clicks ok.
179+
*/
180+
ApplicationList mTempApplications;
163181
private:
164182
};
165183

0 commit comments

Comments
 (0)