13
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
15
GNU General Public License for more details.
16
You should have received a copy of the GNU General Public License
17
along with this program; if not, write to the Free Software
18
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
You should have received a copy of the GNU General Public License along
18
with this program; if not, write to the Free Software Foundation, Inc.,
19
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20
21
*****************************************************************************/
23
#include "qsamplerAbout.h"
22
24
#include "qsamplerOptions.h"
23
#include "qsamplerAbout.h"
25
#include <qcombobox.h>
26
#include <QTextStream>
27
29
#include <lscp/client.h>
31
31
#ifdef CONFIG_LIBGIG
36
38
//-------------------------------------------------------------------------
37
// qsamplerOptions - Prototype settings structure.
39
// QSampler::Options - Prototype settings structure.
41
qsamplerOptions::qsamplerOptions (void)
43
Options::Options (void)
44
: m_settings(QSAMPLER_DOMAIN, QSAMPLER_TITLE)
43
// Begin master key group.
44
m_settings.beginGroup("/qsampler");
46
// And go into general options group.
47
m_settings.beginGroup("/Options");
49
// Load server options...
50
m_settings.beginGroup("/Server");
51
sServerHost = m_settings.readEntry("/ServerHost", "localhost");
52
iServerPort = m_settings.readNumEntry("/ServerPort", 8888);
53
iServerTimeout = m_settings.readNumEntry("/ServerTimeout", 1000);
54
bServerStart = m_settings.readBoolEntry("/ServerStart", true);
55
sServerCmdLine = m_settings.readEntry("/ServerCmdLine", "linuxsampler");
56
iStartDelay = m_settings.readNumEntry("/StartDelay", 3);
57
m_settings.endGroup();
59
// Load display options...
60
m_settings.beginGroup("/Display");
61
sDisplayFont = m_settings.readEntry("/DisplayFont", QString::null);
62
bDisplayEffect = m_settings.readBoolEntry("/DisplayEffect", true);
63
bAutoRefresh = m_settings.readBoolEntry("/AutoRefresh", true);
64
iAutoRefreshTime = m_settings.readNumEntry("/AutoRefreshTime", 1000);
65
iMaxVolume = m_settings.readNumEntry("/MaxVolume", 100);
66
sMessagesFont = m_settings.readEntry("/MessagesFont", QString::null);
67
bMessagesLimit = m_settings.readBoolEntry("/MessagesLimit", true);
68
iMessagesLimitLines = m_settings.readNumEntry("/MessagesLimitLines", 1000);
69
bConfirmRemove = m_settings.readBoolEntry("/ConfirmRemove", true);
70
bKeepOnTop = m_settings.readBoolEntry("/KeepOnTop", true);
71
bStdoutCapture = m_settings.readBoolEntry("/StdoutCapture", true);
72
bCompletePath = m_settings.readBoolEntry("/CompletePath", true);
73
iMaxRecentFiles = m_settings.readNumEntry("/MaxRecentFiles", 5);
74
bInstrumentNames = m_settings.readBoolEntry("/InstrumentNames", false);
75
m_settings.endGroup();
77
// And go into view options group.
78
m_settings.beginGroup("/View");
79
bMenubar = m_settings.readBoolEntry("/Menubar", true);
80
bToolbar = m_settings.readBoolEntry("/Toolbar", true);
81
bStatusbar = m_settings.readBoolEntry("/Statusbar", true);
82
bAutoArrange = m_settings.readBoolEntry("/AutoArrange", true);
83
m_settings.endGroup();
85
m_settings.endGroup(); // Options group.
88
m_settings.beginGroup("/RecentFiles");
90
for (int i = 0; i < iMaxRecentFiles; i++) {
91
QString sFilename = m_settings.readEntry("/File" + QString::number(i + 1), QString::null);
92
if (!sFilename.isEmpty())
93
recentFiles.append(sFilename);
95
m_settings.endGroup();
97
// Last but not least, get the default directories.
98
m_settings.beginGroup("/Default");
99
sSessionDir = m_settings.readEntry("/SessionDir", QString::null);
100
sInstrumentDir = m_settings.readEntry("/InstrumentDir", QString::null);
101
sEngineName = m_settings.readEntry("/EngineName", QString::null);
102
sAudioDriver = m_settings.readEntry("/AudioDriver", QString::null);
103
sMidiDriver = m_settings.readEntry("/MidiDriver", QString::null);
104
m_settings.endGroup();
46
// Begin into general options group.
47
m_settings.beginGroup("/Options");
49
// Load server options...
50
m_settings.beginGroup("/Server");
51
sServerHost = m_settings.value("/ServerHost", "localhost").toString();
52
iServerPort = m_settings.value("/ServerPort", 8888).toInt();
53
iServerTimeout = m_settings.value("/ServerTimeout", 1000).toInt();
54
bServerStart = m_settings.value("/ServerStart", true).toBool();
55
sServerCmdLine = m_settings.value("/ServerCmdLine", "linuxsampler").toString();
56
iStartDelay = m_settings.value("/StartDelay", 3).toInt();
57
m_settings.endGroup();
59
// Load display options...
60
m_settings.beginGroup("/Display");
61
sDisplayFont = m_settings.value("/DisplayFont").toString();
62
bDisplayEffect = m_settings.value("/DisplayEffect", true).toBool();
63
bAutoRefresh = m_settings.value("/AutoRefresh", true).toBool();
64
iAutoRefreshTime = m_settings.value("/AutoRefreshTime", 1000).toInt();
65
iMaxVolume = m_settings.value("/MaxVolume", 100).toInt();
66
sMessagesFont = m_settings.value("/MessagesFont").toString();
67
bMessagesLimit = m_settings.value("/MessagesLimit", true).toBool();
68
iMessagesLimitLines = m_settings.value("/MessagesLimitLines", 1000).toInt();
69
bConfirmRemove = m_settings.value("/ConfirmRemove", true).toBool();
70
bKeepOnTop = m_settings.value("/KeepOnTop", true).toBool();
71
bStdoutCapture = m_settings.value("/StdoutCapture", true).toBool();
72
bCompletePath = m_settings.value("/CompletePath", true).toBool();
73
iMaxRecentFiles = m_settings.value("/MaxRecentFiles", 5).toInt();
74
// if libgig provides a fast way to retrieve instrument names even for large
75
// .gig files, then we enable this feature by default
76
#if HAVE_LIBGIG_SETAUTOLOAD
77
bInstrumentNames = m_settings.value("/InstrumentNames", true).toBool();
79
bInstrumentNames = m_settings.value("/InstrumentNames", false).toBool();
81
m_settings.endGroup();
83
// And go into view options group.
84
m_settings.beginGroup("/View");
85
bMenubar = m_settings.value("/Menubar", true).toBool();
86
bToolbar = m_settings.value("/Toolbar", true).toBool();
87
bStatusbar = m_settings.value("/Statusbar", true).toBool();
88
bAutoArrange = m_settings.value("/AutoArrange", true).toBool();
89
m_settings.endGroup();
91
m_settings.endGroup(); // Options group.
95
m_settings.beginGroup("/RecentFiles");
96
for (int iFile = 0; iFile < iMaxRecentFiles; iFile++) {
97
QString sFilename = m_settings.value(
98
"/File" + QString::number(iFile + 1)).toString();
99
if (!sFilename.isEmpty())
100
recentFiles.append(sFilename);
102
m_settings.endGroup();
104
// Last but not least, get the default directories.
105
m_settings.beginGroup("/Default");
106
sSessionDir = m_settings.value("/SessionDir").toString();
107
sInstrumentDir = m_settings.value("/InstrumentDir").toString();
108
sEngineName = m_settings.value("/EngineName").toString();
109
sAudioDriver = m_settings.value("/AudioDriver").toString();
110
sMidiDriver = m_settings.value("/MidiDriver").toString();
111
iMidiMap = m_settings.value("/MidiMap", 0).toInt();
112
iMidiBank = m_settings.value("/MidiBank", 0).toInt();
113
iMidiProg = m_settings.value("/MidiProg", 0).toInt();
114
iVolume = m_settings.value("/Volume", 100).toInt();
115
iLoadMode = m_settings.value("/Loadmode", 0).toInt();
116
m_settings.endGroup();
108
120
// Default Destructor.
109
qsamplerOptions::~qsamplerOptions (void)
121
Options::~Options (void)
111
// Make program version available in the future.
112
m_settings.beginGroup("/Program");
113
m_settings.writeEntry("/Version", QSAMPLER_VERSION);
114
m_settings.endGroup();
116
// And go into general options group.
117
m_settings.beginGroup("/Options");
119
// Save server options.
120
m_settings.beginGroup("/Server");
121
m_settings.writeEntry("/ServerHost", sServerHost);
122
m_settings.writeEntry("/ServerPort", iServerPort);
123
m_settings.writeEntry("/ServerTimeout", iServerTimeout);
124
m_settings.writeEntry("/ServerStart", bServerStart);
125
m_settings.writeEntry("/ServerCmdLine", sServerCmdLine);
126
m_settings.writeEntry("/StartDelay", iStartDelay);
127
m_settings.endGroup();
129
// Save display options.
130
m_settings.beginGroup("/Display");
131
m_settings.writeEntry("/DisplayFont", sDisplayFont);
132
m_settings.writeEntry("/DisplayEffect", bDisplayEffect);
133
m_settings.writeEntry("/AutoRefresh", bAutoRefresh);
134
m_settings.writeEntry("/AutoRefreshTime", iAutoRefreshTime);
135
m_settings.writeEntry("/MaxVolume", iMaxVolume);
136
m_settings.writeEntry("/MessagesFont", sMessagesFont);
137
m_settings.writeEntry("/MessagesLimit", bMessagesLimit);
138
m_settings.writeEntry("/MessagesLimitLines", iMessagesLimitLines);
139
m_settings.writeEntry("/ConfirmRemove", bConfirmRemove);
140
m_settings.writeEntry("/KeepOnTop", bKeepOnTop);
141
m_settings.writeEntry("/StdoutCapture", bStdoutCapture);
142
m_settings.writeEntry("/CompletePath", bCompletePath);
143
m_settings.writeEntry("/MaxRecentFiles", iMaxRecentFiles);
144
m_settings.writeEntry("/InstrumentNames", bInstrumentNames);
145
m_settings.endGroup();
147
// View options group.
148
m_settings.beginGroup("/View");
149
m_settings.writeEntry("/Menubar", bMenubar);
150
m_settings.writeEntry("/Toolbar", bToolbar);
151
m_settings.writeEntry("/Statusbar", bStatusbar);
152
m_settings.writeEntry("/AutoArrange", bAutoArrange);
153
m_settings.endGroup();
155
m_settings.endGroup(); // Options group.
158
m_settings.beginGroup("/RecentFiles");
159
for (int i = 0; i < (int) recentFiles.count(); i++)
160
m_settings.writeEntry("/File" + QString::number(i + 1), recentFiles[i]);
161
m_settings.endGroup();
163
// Default directories.
164
m_settings.beginGroup("/Default");
165
m_settings.writeEntry("/SessionDir", sSessionDir);
166
m_settings.writeEntry("/InstrumentDir", sInstrumentDir);
167
m_settings.writeEntry("/EngineName", sEngineName);
168
m_settings.writeEntry("/AudioDriver", sAudioDriver);
169
m_settings.writeEntry("/MidiDriver", sMidiDriver);
170
m_settings.endGroup();
172
m_settings.endGroup();
123
// Make program version available in the future.
124
m_settings.beginGroup("/Program");
125
m_settings.setValue("/Version", QSAMPLER_VERSION);
126
m_settings.endGroup();
128
// And go into general options group.
129
m_settings.beginGroup("/Options");
131
// Save server options.
132
m_settings.beginGroup("/Server");
133
m_settings.setValue("/ServerHost", sServerHost);
134
m_settings.setValue("/ServerPort", iServerPort);
135
m_settings.setValue("/ServerTimeout", iServerTimeout);
136
m_settings.setValue("/ServerStart", bServerStart);
137
m_settings.setValue("/ServerCmdLine", sServerCmdLine);
138
m_settings.setValue("/StartDelay", iStartDelay);
139
m_settings.endGroup();
141
// Save display options.
142
m_settings.beginGroup("/Display");
143
m_settings.setValue("/DisplayFont", sDisplayFont);
144
m_settings.setValue("/DisplayEffect", bDisplayEffect);
145
m_settings.setValue("/AutoRefresh", bAutoRefresh);
146
m_settings.setValue("/AutoRefreshTime", iAutoRefreshTime);
147
m_settings.setValue("/MaxVolume", iMaxVolume);
148
m_settings.setValue("/MessagesFont", sMessagesFont);
149
m_settings.setValue("/MessagesLimit", bMessagesLimit);
150
m_settings.setValue("/MessagesLimitLines", iMessagesLimitLines);
151
m_settings.setValue("/ConfirmRemove", bConfirmRemove);
152
m_settings.setValue("/KeepOnTop", bKeepOnTop);
153
m_settings.setValue("/StdoutCapture", bStdoutCapture);
154
m_settings.setValue("/CompletePath", bCompletePath);
155
m_settings.setValue("/MaxRecentFiles", iMaxRecentFiles);
156
m_settings.setValue("/InstrumentNames", bInstrumentNames);
157
m_settings.endGroup();
159
// View options group.
160
m_settings.beginGroup("/View");
161
m_settings.setValue("/Menubar", bMenubar);
162
m_settings.setValue("/Toolbar", bToolbar);
163
m_settings.setValue("/Statusbar", bStatusbar);
164
m_settings.setValue("/AutoArrange", bAutoArrange);
165
m_settings.endGroup();
167
m_settings.endGroup(); // Options group.
171
m_settings.beginGroup("/RecentFiles");
172
QStringListIterator iter(recentFiles);
173
while (iter.hasNext())
174
m_settings.setValue("/File" + QString::number(++iFile), iter.next());
175
m_settings.endGroup();
177
// Default directories.
178
m_settings.beginGroup("/Default");
179
m_settings.setValue("/SessionDir", sSessionDir);
180
m_settings.setValue("/InstrumentDir", sInstrumentDir);
181
m_settings.setValue("/EngineName", sEngineName);
182
m_settings.setValue("/AudioDriver", sAudioDriver);
183
m_settings.setValue("/MidiDriver", sMidiDriver);
184
m_settings.setValue("/MidiMap", iMidiMap);
185
m_settings.setValue("/MidiBank", iMidiBank);
186
m_settings.setValue("/MidiProg", iMidiProg);
187
m_settings.setValue("/Volume", iVolume);
188
m_settings.setValue("/Loadmode", iLoadMode);
189
m_settings.endGroup();
175
192
//-------------------------------------------------------------------------
176
193
// Settings accessor.
179
QSettings& qsamplerOptions::settings (void)
196
QSettings& Options::settings (void)
189
206
// Help about command line options.
190
void qsamplerOptions::print_usage ( const char *arg0 )
207
void Options::print_usage ( const char *arg0 )
192
const QString sEot = "\n\t";
193
const QString sEol = "\n\n";
195
fprintf(stderr, QObject::tr("Usage") + ": %s [" + QObject::tr("options") + "] [" +
196
QObject::tr("session-file") + "]" + sEol, arg0);
197
fprintf(stderr, QSAMPLER_TITLE " - " + QObject::tr(QSAMPLER_SUBTITLE) + sEol);
198
fprintf(stderr, QObject::tr("Options") + ":" + sEol);
199
fprintf(stderr, " -s, --start" + sEot +
200
QObject::tr("Start linuxsampler server locally") + sEol);
201
fprintf(stderr, " -h, --hostname" + sEot +
202
QObject::tr("Specify linuxsampler server hostname") + sEol);
203
fprintf(stderr, " -p, --port" + sEot +
204
QObject::tr("Specify linuxsampler server port number") + sEol);
205
fprintf(stderr, " -?, --help" + sEot +
206
QObject::tr("Show help about command line options") + sEol);
207
fprintf(stderr, " -v, --version" + sEot +
208
QObject::tr("Show version information") + sEol);
209
QTextStream out(stderr);
210
out << QObject::tr("Usage: %1 [options] [session-file]\n\n"
211
QSAMPLER_TITLE " - " QSAMPLER_SUBTITLE "\n\n"
213
" -s, --start\n\tStart linuxsampler server locally\n\n"
214
" -h, --hostname\n\tSpecify linuxsampler server hostname\n\n"
215
" -p, --port\n\tSpecify linuxsampler server port number\n\n"
216
" -?, --help\n\tShow help about command line options\n\n"
217
" -v, --version\n\tShow version information\n\n")
212
222
// Parse command line arguments into m_settings.
213
bool qsamplerOptions::parse_args ( int argc, char **argv )
223
bool Options::parse_args ( int argc, char **argv )
215
const QString sEol = "\n\n";
218
for (int i = 1; i < argc; i++) {
222
sSessionFile += argv[i];
227
QString sArg = argv[i];
228
QString sVal = QString::null;
229
int iEqual = sArg.find("=");
231
sVal = sArg.right(sArg.length() - iEqual - 1);
232
sArg = sArg.left(iEqual);
237
if (sArg == "-s" || sArg == "--start") {
240
else if (sArg == "-h" || sArg == "--hostname") {
242
fprintf(stderr, QObject::tr("Option -h requires an argument (hostname).") + sEol);
249
else if (sArg == "-p" || sArg == "--port") {
251
fprintf(stderr, QObject::tr("Option -p requires an argument (port).") + sEol);
254
iServerPort = sVal.toInt();
258
else if (sArg == "-?" || sArg == "--help") {
259
print_usage(argv[0]);
262
else if (sArg == "-v" || sArg == "--version") {
263
fprintf(stderr, "Qt: %s\n", qVersion());
225
QTextStream out(stderr);
226
const QString sEol = "\n\n";
229
for (int i = 1; i < argc; i++) {
233
sSessionFile += argv[i];
238
QString sArg = argv[i];
239
QString sVal = QString::null;
240
int iEqual = sArg.indexOf("=");
242
sVal = sArg.right(sArg.length() - iEqual - 1);
243
sArg = sArg.left(iEqual);
248
if (sArg == "-s" || sArg == "--start") {
251
else if (sArg == "-h" || sArg == "--hostname") {
253
out << QObject::tr("Option -h requires an argument (hostname).") + sEol;
260
else if (sArg == "-p" || sArg == "--port") {
262
out << QObject::tr("Option -p requires an argument (port).") + sEol;
265
iServerPort = sVal.toInt();
269
else if (sArg == "-?" || sArg == "--help") {
270
print_usage(argv[0]);
273
else if (sArg == "-v" || sArg == "--version") {
274
out << QObject::tr("Qt: %1\n").arg(qVersion());
264
275
#ifdef CONFIG_LIBGIG
265
fprintf(stderr, "%s: %s\n", gig::libraryName().c_str(), gig::libraryVersion().c_str());
267
fprintf(stderr, "%s: %s\n", ::lscp_client_package(), ::lscp_client_version());
268
fprintf(stderr, "qsampler: %s\n", QSAMPLER_VERSION);
272
// If we don't have one by now,
273
// this will be the startup sesion file...
274
sSessionFile += sArg;
276
out << QString("%1: %2\n")
277
.arg(gig::libraryName().c_str())
278
.arg(gig::libraryVersion().c_str());
280
out << QString("%1: %2\n")
281
.arg(::lscp_client_package())
282
.arg(::lscp_client_version());
283
out << QObject::tr(QSAMPLER_TITLE ": %1\n").arg(QSAMPLER_VERSION);
287
// If we don't have one by now,
288
// this will be the startup sesion file...
289
sSessionFile += sArg;
279
// Alright with argument parsing.
294
// Alright with argument parsing.
284
299
//---------------------------------------------------------------------------
285
300
// Widget geometry persistence helper methods.
287
void qsamplerOptions::loadWidgetGeometry ( QWidget *pWidget )
302
void Options::loadWidgetGeometry ( QWidget *pWidget )
289
// Try to restore old form window positioning.
294
m_settings.beginGroup("/Geometry/" + QString(pWidget->name()));
295
fpos.setX(m_settings.readNumEntry("/x", -1));
296
fpos.setY(m_settings.readNumEntry("/y", -1));
297
fsize.setWidth(m_settings.readNumEntry("/width", -1));
298
fsize.setHeight(m_settings.readNumEntry("/height", -1));
299
bVisible = m_settings.readBoolEntry("/visible", false);
300
m_settings.endGroup();
301
if (fpos.x() > 0 && fpos.y() > 0)
303
if (fsize.width() > 0 && fsize.height() > 0)
304
pWidget->resize(fsize);
306
pWidget->adjustSize();
304
// Try to restore old form window positioning.
309
m_settings.beginGroup("/Geometry/" + pWidget->objectName());
310
fpos.setX(m_settings.value("/x", -1).toInt());
311
fpos.setY(m_settings.value("/y", -1).toInt());
312
fsize.setWidth(m_settings.value("/width", -1).toInt());
313
fsize.setHeight(m_settings.value("/height", -1).toInt());
314
bVisible = m_settings.value("/visible", false).toBool();
315
m_settings.endGroup();
316
if (fpos.x() > 0 && fpos.y() > 0)
318
if (fsize.width() > 0 && fsize.height() > 0)
319
pWidget->resize(fsize);
321
pWidget->adjustSize();
315
void qsamplerOptions::saveWidgetGeometry ( QWidget *pWidget )
330
void Options::saveWidgetGeometry ( QWidget *pWidget )
317
// Try to save form window position...
318
// (due to X11 window managers ideossincrasies, we better
319
// only save the form geometry while its up and visible)
321
m_settings.beginGroup("/Geometry/" + QString(pWidget->name()));
322
bool bVisible = pWidget->isVisible();
324
QPoint fpos = pWidget->pos();
325
QSize fsize = pWidget->size();
326
m_settings.writeEntry("/x", fpos.x());
327
m_settings.writeEntry("/y", fpos.y());
328
m_settings.writeEntry("/width", fsize.width());
329
m_settings.writeEntry("/height", fsize.height());
331
m_settings.writeEntry("/visible", bVisible);
332
m_settings.endGroup();
332
// Try to save form window position...
333
// (due to X11 window managers ideossincrasies, we better
334
// only save the form geometry while its up and visible)
336
m_settings.beginGroup("/Geometry/" + pWidget->objectName());
337
bool bVisible = pWidget->isVisible();
338
const QPoint& fpos = pWidget->pos();
339
const QSize& fsize = pWidget->size();
340
m_settings.setValue("/x", fpos.x());
341
m_settings.setValue("/y", fpos.y());
342
m_settings.setValue("/width", fsize.width());
343
m_settings.setValue("/height", fsize.height());
344
m_settings.setValue("/visible", bVisible);
345
m_settings.endGroup();
337
350
//---------------------------------------------------------------------------
338
351
// Combo box history persistence helper implementation.
340
void qsamplerOptions::add2ComboBoxHistory ( QComboBox *pComboBox, const QString& sNewText, int iLimit, int iIndex )
342
int iCount = pComboBox->count();
343
for (int i = 0; i < iCount; i++) {
344
QString sText = pComboBox->text(i);
345
if (sText == sNewText) {
346
pComboBox->removeItem(i);
351
while (iCount >= iLimit)
352
pComboBox->removeItem(--iCount);
353
pComboBox->insertItem(sNewText, iIndex);
357
void qsamplerOptions::loadComboBoxHistory ( QComboBox *pComboBox, int iLimit )
359
pComboBox->setUpdatesEnabled(false);
360
pComboBox->setDuplicatesEnabled(false);
362
m_settings.beginGroup("/History/" + QString(pComboBox->name()));
363
for (int i = 0; i < iLimit; i++) {
364
QString sText = m_settings.readEntry("/Item" + QString::number(i + 1), QString::null);
367
add2ComboBoxHistory(pComboBox, sText, iLimit);
369
m_settings.endGroup();
371
pComboBox->setUpdatesEnabled(true);
375
void qsamplerOptions::saveComboBoxHistory ( QComboBox *pComboBox, int iLimit )
377
add2ComboBoxHistory(pComboBox, pComboBox->currentText(), iLimit, 0);
379
m_settings.beginGroup("/History/" + QString(pComboBox->name()));
380
for (int i = 0; i < iLimit && i < pComboBox->count(); i++) {
381
QString sText = pComboBox->text(i);
384
m_settings.writeEntry("/Item" + QString::number(i + 1), sText);
386
m_settings.endGroup();
353
void Options::loadComboBoxHistory ( QComboBox *pComboBox, int iLimit )
355
// Load combobox list from configuration settings file...
356
m_settings.beginGroup("/History/" + pComboBox->objectName());
358
if (m_settings.childKeys().count() > 0) {
359
pComboBox->setUpdatesEnabled(false);
360
pComboBox->setDuplicatesEnabled(false);
362
for (int i = 0; i < iLimit; i++) {
363
const QString& sText = m_settings.value(
364
"/Item" + QString::number(i + 1)).toString();
367
pComboBox->addItem(sText);
369
pComboBox->setUpdatesEnabled(true);
372
m_settings.endGroup();
376
void Options::saveComboBoxHistory ( QComboBox *pComboBox, int iLimit )
378
// Add current text as latest item...
379
const QString& sCurrentText = pComboBox->currentText();
380
int iCount = pComboBox->count();
381
for (int i = 0; i < iCount; i++) {
382
const QString& sText = pComboBox->itemText(i);
383
if (sText == sCurrentText) {
384
pComboBox->removeItem(i);
389
while (iCount >= iLimit)
390
pComboBox->removeItem(--iCount);
391
pComboBox->insertItem(0, sCurrentText);
394
// Save combobox list to configuration settings file...
395
m_settings.beginGroup("/History/" + pComboBox->objectName());
396
for (int i = 0; i < iCount; i++) {
397
const QString& sText = pComboBox->itemText(i);
400
m_settings.setValue("/Item" + QString::number(i + 1), sText);
402
m_settings.endGroup();
405
} // namespace QSampler
390
408
// end of qsamplerOptions.cpp