kwave  18.07.70
MemoryDialog.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  MemoryDialog.cpp - setup dialog of Kwave's memory management
3  -------------------
4  begin : Sun Aug 05 2001
5  copyright : (C) 2001 by Thomas Eschenbacher
6  email : Thomas.Eschenbacher@gmx.de
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #include "config.h"
19 
20 #include <limits.h>
21 #include <new>
22 #include <unistd.h>
23 
24 #include <QCheckBox>
25 #include <QFileDialog>
26 #include <QLabel>
27 #include <QObject>
28 #include <QPointer>
29 #include <QPushButton>
30 #include <QSlider>
31 #include <QLineEdit>
32 #include <QSpinBox>
33 #include <QString>
34 #include <QStringList>
35 
36 #include <KHelpClient>
37 #include <KLocalizedString>
38 
39 #include "libkwave/MemoryManager.h"
40 #include "libkwave/String.h"
41 #include "libkwave/Utils.h"
42 
43 #include "libgui/FileDialog.h"
44 
45 #include "MemoryDialog.h"
46 
47 //***************************************************************************
48 Kwave::MemoryDialog::MemoryDialog(QWidget* parent, bool physical_limited,
49  unsigned int physical_limit, bool virtual_enabled, bool virtual_limited,
50  unsigned int virtual_limit, const QString &virtual_dir,
51  unsigned int undo_limit)
52  :QDialog(parent), Ui::MemDlg()
53 {
54  setupUi(this);
55  setModal(true);
56 
58  int total_physical = Kwave::toInt(qMin(
59  mem.totalPhysical(), static_cast<quint64>(INT_MAX)));
60 
61  if (!isOK()) return;
62 
63  physical_limit = qMin(physical_limit, Kwave::toUint(total_physical));
64 
65  // connect the controls
66  connect(chkEnableVirtual, SIGNAL(toggled(bool)),
67  this, SLOT(virtualMemoryEnabled(bool)));
68  connect(btSearch, SIGNAL(clicked()),
69  this, SLOT(searchSwapDir()));
70  connect(buttonBox->button(QDialogButtonBox::Help), SIGNAL(clicked()),
71  this, SLOT(invokeHelp()));
72 
73  // initialize all controls
74  chkLimitPhysical->setChecked(physical_limited);
75  slPhysical->setMaximum(total_physical);
76  sbPhysical->setMaximum(total_physical);
77  slPhysical->setValue(physical_limit);
78  sbPhysical->setValue(physical_limit);
79  chkEnableVirtual->setChecked(virtual_enabled);
80  chkLimitVirtual->setChecked(virtual_limited);
81  sbVirtual->setValue(virtual_limit);
82  edDirectory->setText(virtual_dir);
83  slUndo->setMaximum(total_physical / 2);
84  sbUndo->setMaximum(slUndo->maximum());
85  sbUndo->setValue(undo_limit);
86 
87  virtualMemoryEnabled(virtual_enabled);
88 
89  // set fixed size
90  setFixedWidth(sizeHint().width());
91  setFixedHeight(sizeHint().height());
92 
93  // set the focus onto the "OK" button
94  buttonBox->button(QDialogButtonBox::Ok)->setFocus();
95 }
96 
97 //***************************************************************************
99 {
100 }
101 
102 //***************************************************************************
104 {
105  Q_ASSERT(chkEnableVirtual);
106  Q_ASSERT(chkLimitPhysical);
107  Q_ASSERT(chkLimitVirtual);
108  Q_ASSERT(edDirectory);
109  Q_ASSERT(sbPhysical);
110  Q_ASSERT(sbVirtual);
111  Q_ASSERT(slPhysical);
112  Q_ASSERT(slVirtual);
113 
114  return chkEnableVirtual && chkLimitPhysical && chkLimitVirtual &&
115  edDirectory && sbPhysical && sbVirtual && slPhysical &&
116  slVirtual;
117 }
118 
119 //***************************************************************************
120 void Kwave::MemoryDialog::params(QStringList &par)
121 {
122  par.clear();
123  par << QString::number(chkLimitPhysical->isChecked() ? 1 : 0);
124  par << QString::number(sbPhysical->value());
125  par << QString::number(chkEnableVirtual->isChecked() ? 1 : 0);
126  par << QString::number(chkLimitVirtual->isChecked() ? 1 : 0);
127  par << QString::number(sbVirtual->value());
128  par << edDirectory->text();
129  par << QString::number(sbUndo->value());
130 }
131 
132 //***************************************************************************
134 {
135  bool limit = enable && (chkLimitVirtual->isChecked());
136 
137  chkLimitVirtual->setEnabled(enable);
138  slVirtual->setEnabled(limit);
139  sbVirtual->setEnabled(limit);
140 
141  txtDirectory->setEnabled(enable);
142  edDirectory->setEnabled(enable);
143  btSearch->setEnabled(enable);
144 }
145 
146 //***************************************************************************
148 {
149  QPointer<Kwave::FileDialog> dlg = new (std::nothrow) Kwave::FileDialog(
150  edDirectory->text(), Kwave::FileDialog::SelectDir, QString(), this);
151  if (!dlg) return;
152  dlg->setWindowTitle(i18n("Select Swap File Directory"));
153  if (dlg->exec() == QDialog::Accepted) {
154  QString dir = dlg->selectedUrl().toLocalFile();
155  if (dir.length()) edDirectory->setText(dir);
156  }
157  delete dlg;
158 }
159 
160 //***************************************************************************
162 {
163  KHelpClient::invokeHelp(_("memory-setup"));
164 }
165 
166 //***************************************************************************
167 //***************************************************************************
quint64 totalPhysical() Q_DECL_EXPORT
QUrl selectedUrl() const
Definition: FileDialog.cpp:253
static MemoryManager & instance() Q_DECL_EXPORT
void params(QStringList &par)
bool connect(Kwave::StreamObject &source, const char *output, Kwave::StreamObject &sink, const char *input)
Definition: Connect.cpp:48
void virtualMemoryEnabled(bool enable)
int toInt(T x)
Definition: Utils.h:127
#define _(m)
Definition: memcpy.c:66
unsigned int toUint(T x)
Definition: Utils.h:109
MemoryDialog(QWidget *parent, bool physical_limited, unsigned int physical_limit, bool virtual_enabled, bool virtual_limited, unsigned int virtual_limit, const QString &virtual_dir, unsigned int undo_limit)