Skip to content
This repository was archived by the owner on Jun 3, 2024. It is now read-only.

Commit c0da2a9

Browse files
committed
Remotes Module: reimplement RemotesDlg based on ExpandableDlg
1 parent 4b19af0 commit c0da2a9

File tree

6 files changed

+316
-307
lines changed

6 files changed

+316
-307
lines changed

Modules/Remotes/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ SET( HDR_FILES
2222

2323
SET( UI_FILES
2424

25-
RemotesDlg.ui
25+
RemotesOptionsWdgt.ui
26+
RemotesWdgt.ui
2627
)
2728

2829
SET( HID_FILES

Modules/Remotes/RemotesDlg.cpp

Lines changed: 61 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,31 @@
2121

2222
#include <QMessageBox>
2323

24+
RemotesOptionsWdgt::RemotesOptionsWdgt()
25+
{
26+
setupUi(this);
27+
}
2428

25-
RemotesDlg::RemotesDlg(RM::Repo* repo)
29+
30+
RemotesWdgt::RemotesWdgt()
2631
{
2732
setupUi(this);
28-
init();
33+
}
34+
35+
36+
RemotesDlg::RemotesDlg(RM::Repo* repo)
37+
{
38+
setDialogWidgets(mRemotesWdgt, mRemotesOptsWdgt);
39+
40+
connect(mRemotesWdgt->btnAddRemote, &QAbstractButton::clicked,
41+
this, &RemotesDlg::onAddRemote);
42+
connect(mRemotesWdgt->btnDeleteRemote, &QAbstractButton::clicked,
43+
this, &RemotesDlg::onDeleteRemote);
44+
connect(mRemotesWdgt->txtUrl, &QLineEdit::textChanged,
45+
this, &RemotesDlg::onUrlChanged);
46+
47+
connect( mRemotesOptsWdgt->txtPushUrl, &QLineEdit::textChanged,
48+
this, &RemotesDlg::checkValid );
2949

3050
if (!repo) {
3151
// TODO: this should never happen and we should assert out here.
@@ -36,13 +56,7 @@ RemotesDlg::RemotesDlg(RM::Repo* repo)
3656

3757
setWindowTitle( tr("Manage the Remotes in \"%1\"").arg(repo->displayName()) );
3858

39-
txtRemotes->installEventFilter(this);
40-
}
41-
42-
void RemotesDlg::init()
43-
{
44-
connect( txtPushUrl, &QLineEdit::textChanged,
45-
this, &RemotesDlg::checkValid );
59+
mRemotesWdgt->txtRemotes->installEventFilter(this);
4660
}
4761

4862
void RemotesDlg::updateValues(const QString& remoteAlias)
@@ -60,16 +74,17 @@ void RemotesDlg::updateValues(const QString& remoteAlias)
6074
*/
6175
void RemotesDlg::clear()
6276
{
63-
txtEditRefSpec->clear();
64-
txtUrl->clear();
65-
txtPushUrl->clear();
66-
treeRefSpecs->setModel(nullptr);
77+
mRemotesWdgt->txtUrl->clear();
78+
79+
mRemotesOptsWdgt->txtEditRefSpec->clear();
80+
mRemotesOptsWdgt->txtPushUrl->clear();
81+
mRemotesOptsWdgt->treeRefSpecs->setModel(nullptr);
6782
}
6883

6984
bool RemotesDlg::modeCanEnter(RemotesDlg::EditMode mode) const
7085
{
7186
if (mode == EditMode::Rename) {
72-
return txtRemotes->currentIndex() > -1;
87+
return mRemotesWdgt->txtRemotes->currentIndex() > -1;
7388
}
7489

7590
return true;
@@ -84,23 +99,23 @@ void RemotesDlg::modeEnter(EditMode mode)
8499

85100
mMode = mode;
86101

87-
btnAddRemote->setEnabled(false);
88-
btnDeleteRemote->setEnabled(false);
89-
txtRemotes->setEditable(true);
102+
mRemotesWdgt->btnAddRemote->setEnabled(false);
103+
mRemotesWdgt->btnDeleteRemote->setEnabled(false);
104+
mRemotesWdgt->txtRemotes->setEditable(true);
90105

91106
switch (mMode) {
92107
case EditMode::Create:
93108

94-
txtRemotes->lineEdit()->setPlaceholderText(tr("Enter a name ..."));
109+
mRemotesWdgt->txtRemotes->lineEdit()->setPlaceholderText(tr("Enter a name ..."));
95110
//txtRemotes->lineEdit()->clear();
96-
txtUrl->setPlaceholderText(tr("Enter a URL for the new Remote ..."));
111+
mRemotesWdgt->txtUrl->setPlaceholderText(tr("Enter a URL for the new Remote ..."));
97112
clear();
98113

99114
break;
100115

101116
case EditMode::Rename:
102-
txtRemotes->lineEdit()->setText(txtRemotes->currentText());
103-
txtRemotes->lineEdit()->selectAll();
117+
mRemotesWdgt->txtRemotes->lineEdit()->setText(mRemotesWdgt->txtRemotes->currentText());
118+
mRemotesWdgt->txtRemotes->lineEdit()->selectAll();
104119

105120
break;
106121

@@ -109,7 +124,7 @@ void RemotesDlg::modeEnter(EditMode mode)
109124
break;
110125
}
111126

112-
txtRemotes->setFocus();
127+
mRemotesWdgt->txtRemotes->setFocus();
113128
}
114129

115130
void RemotesDlg::modeLeave(bool accept)
@@ -118,16 +133,16 @@ void RemotesDlg::modeLeave(bool accept)
118133
switch (mMode) {
119134
case EditMode::Create:
120135
{
121-
QString remoteAlias = txtRemotes->lineEdit()->text();
136+
QString remoteAlias = mRemotesWdgt->txtRemotes->lineEdit()->text();
122137
// TODO: implementation to create an RM::Remote
123138
qCritical("Not implemented yet: Create a Remote via RepoMan.");
124139
break;
125140
}
126141

127142
case EditMode::Rename:
128143
{
129-
QString oldRemoteAlias = txtRemotes->currentText();
130-
QString newRemoteAlias = txtRemotes->lineEdit()->text();
144+
QString oldRemoteAlias = mRemotesWdgt->txtRemotes->currentText();
145+
QString newRemoteAlias = mRemotesWdgt->txtRemotes->lineEdit()->text();
131146
// TODO: implementation to rename an RM::Remote
132147
qCritical("Not implemented yet: Rename a Remote via RepoMan.");
133148
break;
@@ -139,22 +154,22 @@ void RemotesDlg::modeLeave(bool accept)
139154
}
140155
}
141156

142-
txtUrl->setPlaceholderText(QString());
143-
btnAddRemote->setEnabled(true);
144-
btnDeleteRemote->setEnabled(true);
145-
txtRemotes->setEditable(false);
146-
txtRemotes->update();
157+
mRemotesWdgt->txtUrl->setPlaceholderText(QString());
158+
mRemotesWdgt->btnAddRemote->setEnabled(true);
159+
mRemotesWdgt->btnDeleteRemote->setEnabled(true);
160+
mRemotesWdgt->txtRemotes->setEditable(false);
161+
mRemotesWdgt->txtRemotes->update();
147162

148163
// switch to default mode
149164
mMode = EditMode::Edit;
150165
}
151166

152167
void RemotesDlg::checkValid()
153168
{
154-
bool okay = !txtRemotes->currentText().isEmpty();
155-
okay &= !txtUrl->text().isEmpty();
169+
bool okay = !mRemotesWdgt->txtRemotes->currentText().isEmpty();
170+
okay &= !mRemotesWdgt->txtUrl->text().isEmpty();
156171

157-
buttonBox->button( QDialogButtonBox::Ok )->setEnabled( okay );
172+
setAcceptable(okay);
158173
}
159174

160175
void RemotesDlg::accept()
@@ -167,31 +182,33 @@ void RemotesDlg::accept()
167182
}
168183
}
169184

170-
void RemotesDlg::on_btnAddRemote_clicked()
185+
void RemotesDlg::onAddRemote()
171186
{
172187
modeEnter(EditMode::Create);
173188
}
174189

175-
void RemotesDlg::on_btnDeleteRemote_clicked()
190+
void RemotesDlg::onDeleteRemote()
176191
{
177192
int r = QMessageBox::question(this, tr("Delete selected Remote?"),
178-
tr("Delete the Remote \"%1\" from the repository \"%2\"?")
179-
.arg(txtRemotes->currentText()).arg(mRepoContext->displayName()));
193+
tr("Delete the Remote \"%1\" from the "
194+
"repository \"%2\"?")
195+
.arg(mRemotesWdgt->txtRemotes->currentText())
196+
.arg(mRepoContext->displayName()));
180197
if (r == QMessageBox::Yes) {
181198
// TODO: implement deletion of selected Remote
182199
}
183200
}
184201

185-
void RemotesDlg::on_txtRemotes_currentIndexChanged(const QString &remoteAlias)
202+
void RemotesDlg::onCurrentRemoteChanged(const QString &alias)
186203
{
187-
btnDeleteRemote->setEnabled( txtRemotes->currentIndex() > -1 );
188-
updateValues(remoteAlias);
204+
mRemotesWdgt->btnDeleteRemote->setEnabled(mRemotesWdgt->txtRemotes->currentIndex() > -1);
205+
updateValues(alias);
189206
}
190207

191-
void RemotesDlg::on_txtUrl_textChanged( const QString& newUrl )
208+
void RemotesDlg::onUrlChanged(const QString& newUrl)
192209
{
193-
if( !chkPushUrl->isChecked() ) {
194-
txtPushUrl->setText( newUrl );
210+
if( !mRemotesOptsWdgt->chkPushUrl->isChecked() ) {
211+
mRemotesOptsWdgt->txtPushUrl->setText( newUrl );
195212
}
196213
checkValid();
197214
}
@@ -219,7 +236,7 @@ void RemotesDlg::reject()
219236
*/
220237
bool RemotesDlg::eventFilter(QObject* o, QEvent* e)
221238
{
222-
if (Q_LIKELY(o == txtRemotes)) {
239+
if (Q_LIKELY(o == mRemotesWdgt->txtRemotes)) {
223240
if (e->type() == QEvent::MouseButtonDblClick) {
224241
modeEnter(EditMode::Rename);
225242
return true;

Modules/Remotes/RemotesDlg.h

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,39 @@
1616

1717
#pragma once
1818

19-
#include "libBlueSky/Dialog.hpp"
19+
#include "libMacGitverCore/Widgets/ExpandableDlg.hpp"
2020

21-
#include "ui_RemotesDlg.h"
21+
#include "ui_RemotesOptionsWdgt.h"
22+
#include "ui_RemotesWdgt.h"
23+
24+
#include <QPointer>
2225

2326
namespace RM
2427
{
2528
class Repo;
2629
}
2730

28-
class RemotesDlg : public BlueSky::Dialog, private Ui::RemotesDlg
31+
class RemotesOptionsWdgt : public QWidget, Ui::RemotesOptionsWdgt
32+
{
33+
Q_OBJECT
34+
35+
friend class RemotesDlg;
36+
37+
public:
38+
RemotesOptionsWdgt();
39+
};
40+
41+
class RemotesWdgt : public QWidget, Ui::RemotesWdgt
42+
{
43+
Q_OBJECT
44+
45+
friend class RemotesDlg;
46+
47+
public:
48+
RemotesWdgt();
49+
};
50+
51+
class RemotesDlg : public ExpandableDlg
2952
{
3053
Q_OBJECT
3154

@@ -61,12 +84,14 @@ class RemotesDlg : public BlueSky::Dialog, private Ui::RemotesDlg
6184
private slots:
6285
void checkValid();
6386

64-
private slots:
65-
// auto-connected ui slots
66-
void on_btnAddRemote_clicked();
67-
void on_btnDeleteRemote_clicked();
68-
void on_txtRemotes_currentIndexChanged(const QString &remoteAlias);
69-
void on_txtUrl_textChanged(const QString& newUrl);
87+
void onAddRemote();
88+
void onDeleteRemote();
89+
void onCurrentRemoteChanged(const QString& alias);
90+
void onUrlChanged(const QString& newUrl);
91+
92+
private:
93+
QPointer<RemotesOptionsWdgt> mRemotesOptsWdgt = new RemotesOptionsWdgt;
94+
QPointer<RemotesWdgt> mRemotesWdgt = new RemotesWdgt;
7095

7196
private:
7297
RM::Repo* mRepoContext = nullptr;

0 commit comments

Comments
 (0)