Skip to content

Commit b69c0d4

Browse files
committed
Implement keys glob-pattern setting.
1 parent 48eaa34 commit b69c0d4

File tree

4 files changed

+71
-57
lines changed

4 files changed

+71
-57
lines changed

src/app/dialogs/connect.cpp

Lines changed: 63 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ void ConnectionWindow::loadValuesFromConfig(const RedisClient::ConnectionConfig&
4747
ui.connectionTimeout->setValue(config.connectionTimeout());
4848
ui.executionTimeout->setValue(config.executeTimeout());
4949

50+
if (!config.keysPattern().isEmpty()) {
51+
ui.keysPattern->setText(config.keysPattern());
52+
}
53+
5054
if (config.useSshTunnel()) {
5155
ui.useSshTunnel->setCheckState(Qt::Checked);
5256
ui.sshHost->setText(config.param<QString>("ssh_host"));
@@ -68,6 +72,16 @@ void ConnectionWindow::loadValuesFromConfig(const RedisClient::ConnectionConfig&
6872
}
6973
}
7074

75+
void ConnectionWindow::markFieldInvalid(QWidget* w)
76+
{
77+
w->setStyleSheet("border: 1px solid red;");
78+
}
79+
80+
void ConnectionWindow::markFieldValid(QWidget* w)
81+
{
82+
w->setStyleSheet("");
83+
}
84+
7185
void ConnectionWindow::OnOkButtonClick()
7286
{
7387
ui.validationWarning->hide();
@@ -107,9 +121,8 @@ void ConnectionWindow::OnBrowseSshKeyClick()
107121
{
108122
QString fileName = QFileDialog::getOpenFileName(this, "Select private key file", "", tr("All Files (*.*)"));
109123

110-
if (fileName.isEmpty()) {
111-
return;
112-
}
124+
if (fileName.isEmpty())
125+
return;
113126

114127
ui.privateKeyPath->setText(fileName);
115128
}
@@ -148,92 +161,85 @@ bool ConnectionWindow::isFormDataValid()
148161

149162
bool ConnectionWindow::isConnectionSettingsValid()
150163
{
151-
ui.nameEdit->setStyleSheet("");
152-
ui.hostEdit->setStyleSheet("");
164+
markFieldValid(ui.nameEdit);
165+
markFieldValid(ui.hostEdit);
153166

154167
bool isValid = !ui.nameEdit->text().isEmpty()
155168
&& !ui.hostEdit->text().isEmpty()
156169
&& ui.portSpinBox->value() > 0;
157170

158-
if (isValid) {
159-
return true;
160-
}
171+
if (isValid)
172+
return true;
161173

162-
if (ui.nameEdit->text().isEmpty()) {
163-
ui.nameEdit->setStyleSheet("border: 1px solid red;");
164-
}
174+
if (ui.nameEdit->text().isEmpty())
175+
markFieldInvalid(ui.nameEdit);
165176

166-
if (ui.hostEdit->text().isEmpty()) {
167-
ui.hostEdit->setStyleSheet("border: 1px solid red;");
168-
}
177+
if (ui.hostEdit->text().isEmpty())
178+
markFieldInvalid(ui.hostEdit);
169179

170180
return false;
171181
}
172182

173183
bool ConnectionWindow::isAdvancedSettingsValid()
174184
{
175-
ui.namespaceSeparator->setStyleSheet("");
185+
markFieldValid(ui.namespaceSeparator);
176186

177-
bool isValid = !ui.namespaceSeparator->text().isEmpty();
187+
bool isValid = !ui.namespaceSeparator->text().isEmpty()
188+
|| !ui.keysPattern->text().isEmpty();
178189

179-
if (isValid) {
180-
return true;
181-
}
190+
if (isValid)
191+
return true;
182192

183-
if (ui.namespaceSeparator->text().isEmpty()) {
184-
ui.namespaceSeparator->setStyleSheet("border: 1px solid red;");
185-
}
193+
if (ui.namespaceSeparator->text().isEmpty())
194+
markFieldInvalid(ui.namespaceSeparator);
195+
196+
if (ui.keysPattern->text().isEmpty())
197+
markFieldInvalid(ui.keysPattern);
186198

187199
return false;
188200
}
189201

190202
bool ConnectionWindow::isSshSettingsValid()
191203
{
192-
ui.sshHost->setStyleSheet("");
193-
ui.sshUser->setStyleSheet("");
194-
ui.sshPass->setStyleSheet("");
195-
ui.privateKeyPath->setStyleSheet("");
204+
markFieldValid(ui.sshHost);
205+
markFieldValid(ui.sshUser);
206+
markFieldValid(ui.sshPass);
207+
markFieldValid(ui.privateKeyPath);
196208

197-
if (!isSshTunnelUsed()) {
198-
return true;
199-
}
209+
if (!isSshTunnelUsed())
210+
return true;
200211

201212
bool isValid = !ui.sshHost->text().isEmpty()
202213
&& !ui.sshUser->text().isEmpty()
203214
&& !(ui.sshPass->text().isEmpty() && ui.privateKeyPath->text().isEmpty())
204215
&& (
205216
(ui.sshPasswordGroup->isChecked() && !ui.sshPass->text().isEmpty())
206217
||
207-
(ui.sshKeysGroup->isChecked() && !ui.privateKeyPath->text().isEmpty() && QFile::exists(ui.privateKeyPath->text()))
218+
(ui.sshKeysGroup->isChecked() && !ui.privateKeyPath->text().isEmpty()
219+
&& QFile::exists(ui.privateKeyPath->text()))
208220
)
209221
&& ui.sshPort->value() > 0;
210222

211-
if (isValid) {
212-
return true;
213-
}
223+
if (isValid)
224+
return true;
214225

215-
if (ui.sshHost->text().isEmpty()) {
216-
ui.sshHost->setStyleSheet("border: 1px solid red;");
217-
}
226+
if (ui.sshHost->text().isEmpty())
227+
markFieldInvalid(ui.sshHost);
218228

219-
if (ui.sshUser->text().isEmpty()) {
220-
ui.sshUser->setStyleSheet("border: 1px solid red;");
221-
}
229+
if (ui.sshUser->text().isEmpty())
230+
markFieldInvalid(ui.sshUser);
222231

223-
if (ui.sshPasswordGroup->isChecked() && ui.sshPass->text().isEmpty()) {
224-
ui.sshPass->setStyleSheet("border: 1px solid red;");
225-
}
232+
if (ui.sshPasswordGroup->isChecked() && ui.sshPass->text().isEmpty())
233+
markFieldInvalid(ui.sshPass);
226234

227-
if (ui.sshKeysGroup->isChecked() && ui.privateKeyPath->text().isEmpty()) {
228-
ui.privateKeyPath->setStyleSheet("border: 1px solid red;");
229-
}
235+
if (ui.sshKeysGroup->isChecked() && ui.privateKeyPath->text().isEmpty())
236+
markFieldInvalid(ui.privateKeyPath);
230237

231238
if (!ui.sshPasswordGroup->isChecked() && !ui.sshKeysGroup->isChecked()) {
232-
ui.sshPass->setStyleSheet("border: 1px solid red;");
233-
ui.privateKeyPath->setStyleSheet("border: 1px solid red;");
239+
markFieldInvalid(ui.sshPass);
240+
markFieldInvalid(ui.privateKeyPath);
234241
}
235242

236-
237243
return false;
238244
}
239245

@@ -244,26 +250,28 @@ bool ConnectionWindow::isSshTunnelUsed()
244250

245251
RedisClient::ConnectionConfig ConnectionWindow::getConectionConfigFromFormData()
246252
{
247-
RedisClient::ConnectionConfig conf(ui.hostEdit->text().trimmed(),ui.nameEdit->text().trimmed(), ui.portSpinBox->value());
253+
RedisClient::ConnectionConfig conf(ui.hostEdit->text().trimmed(),
254+
ui.nameEdit->text().trimmed(),
255+
ui.portSpinBox->value());
248256

249257
conf.setParam("namespace_separator", ui.namespaceSeparator->text());
250258
conf.setParam("timeout_connect", ui.connectionTimeout->value() * 1000);
251259
conf.setParam("timeout_execute", ui.executionTimeout->value() * 1000);
252260

253-
if (!ui.authEdit->text().isEmpty()) {
254-
conf.setParam("auth", ui.authEdit->text());
255-
}
261+
if (!ui.authEdit->text().isEmpty())
262+
conf.setParam("auth", ui.authEdit->text());
263+
264+
if (!ui.keysPattern->text().isEmpty())
265+
conf.setParam("keys_pattern", ui.keysPattern->text());
256266

257267
if (isSshTunnelUsed()) {
258268
conf.setSshTunnelSettings(
259269
ui.sshHost->text().trimmed(),
260270
ui.sshUser->text().trimmed(),
261271
(ui.sshPasswordGroup->isChecked()? ui.sshPass->text().trimmed() : ""),
262272
ui.sshPort->value(),
263-
(ui.sshKeysGroup->isChecked() ? ui.privateKeyPath->text().trimmed() : "")
264-
);
273+
(ui.sshKeysGroup->isChecked() ? ui.privateKeyPath->text().trimmed() : ""));
265274
}
266275

267276
return conf;
268277
}
269-

src/app/dialogs/connect.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ class ConnectionWindow : public QDialog
2929
RedisClient::ConnectionConfig getConectionConfigFromFormData();
3030
void loadValuesFromConfig(const RedisClient::ConnectionConfig& config);
3131

32+
void markFieldInvalid(QWidget *w);
33+
void markFieldValid(QWidget *w);
34+
3235
private slots:
3336
void OnOkButtonClick();
3437
void OnShowPasswordCheckboxChanged(int);

src/modules/redisclient/connectionconfig.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ QString RedisClient::ConnectionConfig::getSshPrivateKey()
114114
return path;
115115
}
116116

117-
QString RedisClient::ConnectionConfig::keysPattern()
117+
QString RedisClient::ConnectionConfig::keysPattern() const
118118
{
119119
return param<QString>("keys_pattern");
120120
}
@@ -134,6 +134,7 @@ RedisClient::ConnectionConfig RedisClient::ConnectionConfig::fromXml(QDomNode &
134134
valueMapping.insert("host", "");
135135
valueMapping.insert("port", "");
136136
valueMapping.insert("auth", "");
137+
valueMapping.insert("keys_pattern", "");
137138
valueMapping.insert("sshHost", "ssh_host");
138139
valueMapping.insert("sshUser", "ssh_user");
139140
valueMapping.insert("sshPassword", "ssh_password");
@@ -184,6 +185,8 @@ QDomElement RedisClient::ConnectionConfig::toXml()
184185
saveXmlAttribute(dom, xml, "host", param<QString>("host"));
185186
saveXmlAttribute(dom, xml, "port", QString::number(param<int>("port")));
186187

188+
saveXmlAttribute(dom, xml, "keys_pattern", param<QString>("keys_pattern"));
189+
187190
if (useAuth()) {
188191
saveXmlAttribute(dom, xml, "auth", param<QString>("auth"));
189192
}

src/modules/redisclient/connectionconfig.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class ConnectionConfig
4545

4646
QWeakPointer<Connection> getOwner() const;
4747
QString getSshPrivateKey();
48-
QString keysPattern();
48+
QString keysPattern() const;
4949

5050
void setOwner(QWeakPointer<Connection>);
5151
void setSshTunnelSettings(QString host, QString user, QString pass,

0 commit comments

Comments
 (0)