Skip to content

Commit c56170a

Browse files
committed
Refactorization: Avoid copying Application instances.
1 parent 0fe2dea commit c56170a

6 files changed

Lines changed: 31 additions & 43 deletions

File tree

gui/applicationdialog.cpp

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@
2626

2727

2828
ApplicationDialog::ApplicationDialog(const QString &title,
29-
const Application &app,
29+
Application &app,
3030
QWidget *parent) :
31-
QDialog(parent)
31+
QDialog(parent),
32+
mApplication(app)
3233
{
3334
mUI.setupUi(this);
3435

@@ -67,15 +68,6 @@ void ApplicationDialog::Browse()
6768
}
6869
}
6970

70-
Application ApplicationDialog::GetApplication() const
71-
{
72-
Application app;
73-
app.setName(mUI.mName->text());
74-
app.setPath(mUI.mPath->text());
75-
app.setParameters(mUI.mParameters->text());
76-
return app;
77-
}
78-
7971
void ApplicationDialog::Ok()
8072
{
8173
if (mUI.mName->text().isEmpty() || mUI.mPath->text().isEmpty() ||
@@ -90,7 +82,9 @@ void ApplicationDialog::Ok()
9082

9183
} else {
9284
// Convert possible native (Windows) path to internal presentation format
93-
mUI.mPath->setText(QDir::fromNativeSeparators(mUI.mPath->text()));
85+
mApplication.setName(mUI.mName->text());
86+
mApplication.setPath(QDir::fromNativeSeparators(mUI.mPath->text()));
87+
mApplication.setParameters(mUI.mParameters->text());
9488
accept();
9589
}
9690
}

gui/applicationdialog.h

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,10 @@ class ApplicationDialog : public QDialog {
4545
* @param app Application definition.
4646
* @param parent Parent widget.
4747
*/
48-
ApplicationDialog(const QString &title, const Application &app,
48+
ApplicationDialog(const QString &title, Application &app,
4949
QWidget *parent = 0);
5050
virtual ~ApplicationDialog();
5151

52-
/**
53-
* @brief Get modified application
54-
* @return Modified name
55-
*/
56-
Application GetApplication() const;
57-
5852
protected slots:
5953

6054
void Ok();
@@ -72,6 +66,13 @@ protected slots:
7266
*
7367
*/
7468
Ui::ApplicationDialog mUI;
69+
70+
private:
71+
72+
/**
73+
* @brief Underlying Application
74+
*/
75+
Application& mApplication;
7576
};
7677
/// @}
7778
#endif // APPLICATIONDIALOG_H

gui/applicationlist.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ void ApplicationList::SaveSettings()
105105
QStringList params;
106106

107107
for (int i = 0; i < GetApplicationCount(); i++) {
108-
Application app = GetApplication(i);
108+
const Application& app = GetApplication(i);
109109
names << app.getName();
110110
paths << app.getPath();
111111
params << app.getParameters();
@@ -115,28 +115,31 @@ void ApplicationList::SaveSettings()
115115
settings.setValue(SETTINGS_APPLICATION_PATHS, paths);
116116
settings.setValue(SETTINGS_APPLICATION_PARAMS, params);
117117
settings.setValue(SETTINGS_APPLICATION_DEFAULT, mDefaultApplicationIndex);
118-
119118
}
120119

121120
int ApplicationList::GetApplicationCount() const
122121
{
123122
return mApplications.size();
124123
}
125124

126-
Application ApplicationList::GetApplication(const int index) const
125+
Application& ApplicationList::GetApplication(const int index)
127126
{
128127
if (index >= 0 && index < mApplications.size()) {
129128
return mApplications[index];
130129
}
131130

132-
return Application(QString(), QString(), QString());
131+
static Application dummy; // TODO: Throw exception instead?
132+
return dummy;
133133
}
134134

135-
void ApplicationList::SetApplication(int index, const Application &app)
135+
const Application& ApplicationList::GetApplication(const int index) const
136136
{
137137
if (index >= 0 && index < mApplications.size()) {
138-
mApplications.replace(index, app);
138+
return mApplications[index];
139139
}
140+
141+
static const Application dummy; // TODO: Throw exception instead?
142+
return dummy;
140143
}
141144

142145
void ApplicationList::AddApplication(const Application &app)
@@ -167,7 +170,7 @@ void ApplicationList::Copy(const ApplicationList *list)
167170

168171
Clear();
169172
for (int i = 0; i < list->GetApplicationCount(); i++) {
170-
const Application app = list->GetApplication(i);
173+
const Application& app = list->GetApplication(i);
171174
AddApplication(app);
172175
}
173176
mDefaultApplicationIndex = list->GetDefaultApplication();

gui/applicationlist.h

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ class ApplicationList : public QObject {
6262
* @param index Index of the application whose name to get
6363
* @return Name of the application
6464
*/
65-
Application GetApplication(const int index) const;
65+
const Application& GetApplication(const int index) const;
66+
Application& GetApplication(const int index);
6667

6768
/**
6869
* @brief Return the default application.
@@ -72,14 +73,6 @@ class ApplicationList : public QObject {
7273
return mDefaultApplicationIndex;
7374
}
7475

75-
/**
76-
* @brief Modify an application
77-
*
78-
* @param index Index of the application to modify
79-
* @param app Application with new data.
80-
*/
81-
void SetApplication(int index, const Application &app);
82-
8376
/**
8477
* @brief Add a new application
8578
*

gui/resultstree.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,7 @@ void ResultsTree::contextMenuEvent(QContextMenuEvent * e)
503503
//Go through all applications and add them to the context menu
504504
for (int i = 0; i < mApplications->GetApplicationCount(); i++) {
505505
//Create an action for the application
506-
const Application app = mApplications->GetApplication(i);
506+
const Application& app = mApplications->GetApplication(i);
507507
QAction *start = new QAction(app.getName(), &menu);
508508
if (multipleSelection)
509509
start->setDisabled(true);
@@ -642,7 +642,7 @@ void ResultsTree::StartApplication(QStandardItem *target, int application)
642642
file.append("\"");
643643
}
644644

645-
const Application app = mApplications->GetApplication(application);
645+
const Application& app = mApplications->GetApplication(application);
646646
QString params = app.getParameters();
647647
params.replace("(file)", file, Qt::CaseInsensitive);
648648

gui/settingsdialog.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,6 @@ void SettingsDialog::AddApplication()
201201
ApplicationDialog dialog(tr("Add a new application"), app, this);
202202

203203
if (dialog.exec() == QDialog::Accepted) {
204-
const Application app = dialog.GetApplication();
205204
mTempApplications->AddApplication(app);
206205
mUI.mListWidget->addItem(app.getName());
207206
}
@@ -231,13 +230,11 @@ void SettingsDialog::EditApplication()
231230
QListWidgetItem *item = 0;
232231
foreach(item, selected) {
233232
int row = mUI.mListWidget->row(item);
234-
const Application app = mTempApplications->GetApplication(row);
233+
Application& app = mTempApplications->GetApplication(row);
235234
ApplicationDialog dialog(tr("Modify an application"), app, this);
236235

237236
if (dialog.exec() == QDialog::Accepted) {
238-
const Application app2 = dialog.GetApplication();
239-
mTempApplications->SetApplication(row, app2);
240-
item->setText(app2.getName());
237+
item->setText(app.getName());
241238
}
242239
}
243240
}
@@ -257,7 +254,7 @@ void SettingsDialog::PopulateApplicationList()
257254
{
258255
const int defapp = mTempApplications->GetDefaultApplication();
259256
for (int i = 0; i < mTempApplications->GetApplicationCount(); i++) {
260-
Application app = mTempApplications->GetApplication(i);
257+
const Application& app = mTempApplications->GetApplication(i);
261258
QString name = app.getName();
262259
if (i == defapp) {
263260
name += " ";

0 commit comments

Comments
 (0)