Page MenuHomePhabricator (Chris)

No OneTemporary

Size
16 KB
Referenced Files
None
Subscribers
None
diff --git a/src/RepositoryPropertyDialog.cpp b/src/RepositoryPropertyDialog.cpp
index a6aafef..f73bd87 100644
--- a/src/RepositoryPropertyDialog.cpp
+++ b/src/RepositoryPropertyDialog.cpp
@@ -1,203 +1,222 @@
#include "RepositoryPropertyDialog.h"
#include "ui_RepositoryPropertyDialog.h"
#include "MainWindow.h"
+#include "BasicRepositoryDialog.h"
#include "common/misc.h"
#include <QClipboard>
#include <QMenu>
#include <QMessageBox>
RepositoryPropertyDialog::RepositoryPropertyDialog(MainWindow *parent, Git::Context const *gcx, GitPtr const &g, RepositoryItem const &item, bool open_repository_menu)
: BasicRepositoryDialog(parent, g)
, ui(new Ui::RepositoryPropertyDialog)
, gcx(gcx)
{
ui->setupUi(this);
Qt::WindowFlags flags = windowFlags();
flags &= ~Qt::WindowContextHelpButtonHint;
setWindowFlags(flags);
repository = item;
ui->groupBox_remote->setVisible(open_repository_menu);
ui->label_editable_name->setText(repository.name);
ui->label_editable_name->setVisible(true);
ui->lineEdit_name->setText(repository.name);
ui->lineEdit_name->setVisible(false);
ui->lineEdit_local_dir->setText(misc::normalizePathSeparator(repository.local_dir));
+ ui->pushButton_close->setFocus();
+
updateRemotesTable();
}
RepositoryPropertyDialog::~RepositoryPropertyDialog()
{
delete ui;
}
void RepositoryPropertyDialog::updateRemotesTable()
{
BasicRepositoryDialog::updateRemotesTable(ui->tableWidget);
}
void RepositoryPropertyDialog::toggleRemoteMenuActivity()
{
ui->groupBox_remote->setVisible(!ui->groupBox_remote->isVisible());
}
void MainWindow::changeSshKey(QString const &localdir, QString const &sshkey)
{
bool changed = false;
QList<RepositoryItem> *repos = getReposPtr();
for (int i = 0; i < repos->size(); i++) {
RepositoryItem *item = &(*repos)[i];
if (item->local_dir == localdir) {
item->ssh_key = sshkey;
changed = true;
}
}
if (changed) {
saveRepositoryBookmarks();
}
}
bool RepositoryPropertyDialog::execEditRemoteDialog(Git::Remote *remote, EditRemoteDialog::Operation op)
{
auto const *list = remotes();
if (op == EditRemoteDialog::RemoteSet) {
int row = ui->tableWidget->currentRow();
if (row >= 0 && row < list->size()) {
*remote = list->at(row);
}
} else {
*remote = Git::Remote();
}
if (remote->name.isEmpty() && list->isEmpty()) {
op = EditRemoteDialog::RemoteAdd;
remote->name = "origin";
}
EditRemoteDialog dlg(mainwindow(), op, gcx);
dlg.setName(remote->name);
dlg.setUrl(remote->url);
dlg.setSshKey(remote->ssh_key);
if (dlg.exec() == QDialog::Accepted) {
remote->name = dlg.name();
remote->url = dlg.url();
remote->ssh_key = dlg.sshKey();
GitPtr g = git();
if (op == EditRemoteDialog::RemoteAdd) {
bool ok = true;
for (Git::Remote const &r : *list) {
if (r.name == remote->name) {
qDebug() << "remote add: Already exists" << remote->name;
ok = false;
break;
}
}
if (ok) {
g->addRemoteURL(*remote);
}
} else if (op == EditRemoteDialog::RemoteSet) {
g->setRemoteURL(*remote);
}
// wip
QString localdir = ui->lineEdit_local_dir->text();
mainwindow()->changeSshKey(localdir, remote->ssh_key);
setSshKey_(remote->ssh_key);
getRemotes_();
updateRemotesTable();
return true;
}
return false;
}
Git::Remote RepositoryPropertyDialog::selectedRemote() const
{
Git::Remote remote;
auto const *list = remotes();
int row = ui->tableWidget->currentRow();
if (row >= 0 && row < list->size()) {
remote = list->at(row);
}
return remote;
}
bool RepositoryPropertyDialog::isRemoteChanged() const
{
return remote_changed;
}
bool RepositoryPropertyDialog::isNameChanged() const
{
return name_changed;
}
QString RepositoryPropertyDialog::getName()
{
return repository.name;
}
void RepositoryPropertyDialog::on_pushButton_remote_add_clicked()
{
Git::Remote r;
if (execEditRemoteDialog(&r, EditRemoteDialog::RemoteAdd)) {
remote_changed = true;
}
}
void RepositoryPropertyDialog::on_pushButton_remote_edit_clicked()
{
int row = ui->tableWidget->currentRow();
if (row < 0) {
ui->tableWidget->setCurrentCell(0, 0);
}
Git::Remote remote = selectedRemote();
if (execEditRemoteDialog(&remote, EditRemoteDialog::RemoteSet)) {
remote_changed = true;
}
}
void RepositoryPropertyDialog::on_pushButton_remote_remove_clicked()
{
Git::Remote remote = selectedRemote();
if (!remote.name.isEmpty()) {
int r = QMessageBox::warning(this, tr("Confirm Remove"), tr("Are you sure you want to remove the remote '%1' from the repository '%2' ?").arg(remote.name).arg(repository.name), QMessageBox::Ok, QMessageBox::Cancel);
if (r == QMessageBox::Ok) {
GitPtr g = git();
g->removeRemote(remote.name);
updateRemotesTable();
remote_changed = true;
}
}
}
void RepositoryPropertyDialog::on_pushButton_remote_menu_clicked()
{
toggleRemoteMenuActivity();
}
+
+void RepositoryPropertyDialog::setNameEditMode(bool f)
+{
+ ui->lineEdit_name->setVisible(f);
+ ui->label_editable_name->setVisible(!f);
+ ui->pushButton_edit_name->setText(f ? tr("Save") : tr("Edit Name"));
+ if (f) {
+ ui->lineEdit_name->setText(repository.name);
+ ui->lineEdit_name->setFocus();
+ } else {
+ if (!ui->lineEdit_name->text().isEmpty()) {
+ repository.name = ui->lineEdit_name->text();
+ ui->label_editable_name->setText(repository.name);
+ name_changed = true;
+ }
+ ui->pushButton_close->setFocus();
+ }
+}
+
+bool RepositoryPropertyDialog::isNameEditMode() const
+{
+ return ui->lineEdit_name->isVisible();
+}
+
void RepositoryPropertyDialog::on_pushButton_edit_name_clicked()
{
- if (ui->pushButton_edit_name->text() == "Edit Name")
- {
- ui->pushButton_edit_name->setText("Save");
- ui->label_editable_name->setVisible(false);
- ui->lineEdit_name->setVisible(true);
- }
- else
- {
- if (!ui->lineEdit_name->text().isEmpty())
- {
- name_changed = true;
- repository.name = ui->lineEdit_name->text();
- ui->label_editable_name->setText(ui->lineEdit_name->text());
- ui->pushButton_edit_name->setText("Edit Name");
- ui->label_editable_name->setVisible(true);
- ui->lineEdit_name->setVisible(false);
- }
- }
+ setNameEditMode(!isNameEditMode());
+}
+
+void RepositoryPropertyDialog::reject()
+{
+ if (isNameEditMode()) {
+ setNameEditMode(false);
+ } else {
+ BasicRepositoryDialog::reject();
+ }
}
diff --git a/src/RepositoryPropertyDialog.h b/src/RepositoryPropertyDialog.h
index 6865527..4ce3b12 100644
--- a/src/RepositoryPropertyDialog.h
+++ b/src/RepositoryPropertyDialog.h
@@ -1,43 +1,49 @@
#ifndef REPOSITORYPROPERTYDIALOG_H
#define REPOSITORYPROPERTYDIALOG_H
#include "RepositoryData.h"
#include "BasicRepositoryDialog.h"
#include "EditRemoteDialog.h"
#include <QDialog>
#include "Git.h"
class MainWindow;
namespace Ui {
class RepositoryPropertyDialog;
}
class RepositoryPropertyDialog : public BasicRepositoryDialog {
Q_OBJECT
private:
Ui::RepositoryPropertyDialog *ui;
RepositoryItem repository;
bool remote_changed = false;
bool name_changed = false;
Git::Context const *gcx;
void updateRemotesTable();
bool execEditRemoteDialog(Git::Remote *remote, EditRemoteDialog::Operation op);
Git::Remote selectedRemote() const;
void toggleRemoteMenuActivity();
+ bool isNameEditMode() const;
+ void setNameEditMode(bool f);
public:
explicit RepositoryPropertyDialog(MainWindow *parent, const Git::Context *gcx, const GitPtr &g, RepositoryItem const &item, bool open_repository_menu = false);
~RepositoryPropertyDialog() override;
bool isRemoteChanged() const;
bool isNameChanged() const;
- QString getName();
+ QString getName();
private slots:
void on_pushButton_remote_add_clicked();
void on_pushButton_remote_edit_clicked();
void on_pushButton_remote_remove_clicked();
void on_pushButton_remote_menu_clicked();
void on_pushButton_edit_name_clicked();
+
+ // QDialog interface
+public slots:
+ void reject();
};
#endif // REPOSITORYPROPERTYDIALOG_H
diff --git a/src/RepositoryPropertyDialog.ui b/src/RepositoryPropertyDialog.ui
index aef4b65..93958ac 100644
--- a/src/RepositoryPropertyDialog.ui
+++ b/src/RepositoryPropertyDialog.ui
@@ -1,284 +1,295 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>RepositoryPropertyDialog</class>
<widget class="QDialog" name="RepositoryPropertyDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>700</width>
- <height>375</height>
+ <height>502</height>
</rect>
</property>
<property name="windowTitle">
<string>Repository Property</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="DialogHeaderFrame" name="frame">
<property name="styleSheet">
<string notr="true">QFrame {
background: #ffffff;
}</string>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="topMargin">
<number>16</number>
</property>
<property name="bottomMargin">
<number>16</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_name">
<property name="font">
<font>
<pointsize>15</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QLabel {
background: transparent;
}
</string>
</property>
<property name="text">
<string>Name: </string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_editable_name">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>15</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_name">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_edit_name">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Edit Name</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="frame_2">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QFormLayout" name="formLayout">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::ExpandingFieldsGrow</enum>
</property>
<property name="labelAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="formAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Local dir :</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="ReadOnlyLineEdit" name="lineEdit_local_dir">
<property name="frame">
<bool>false</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Remote URLs</string>
</property>
</widget>
</item>
<item>
<widget class="RemoteRepositoriesTableWidget" name="tableWidget"/>
</item>
<item>
<widget class="QGroupBox" name="groupBox_remote">
<property name="title">
<string>Remote</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="pushButton_remote_add">
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_remote_edit">
<property name="text">
<string>Edit</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>118</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton_remote_remove">
<property name="text">
<string>Remove</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPushButton" name="pushButton_remote_menu">
<property name="text">
<string>&amp;Remote menu</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton_close">
<property name="text">
<string>Close</string>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>ReadOnlyLineEdit</class>
<extends>QLineEdit</extends>
<header>ReadOnlyLineEdit.h</header>
</customwidget>
<customwidget>
<class>RemoteRepositoriesTableWidget</class>
<extends>QTableWidget</extends>
<header>RemoteRepositoriesTableWidget.h</header>
</customwidget>
<customwidget>
<class>DialogHeaderFrame</class>
<extends>QFrame</extends>
<header>DialogHeaderFrame.h</header>
<container>1</container>
</customwidget>
</customwidgets>
+ <tabstops>
+ <tabstop>lineEdit_name</tabstop>
+ <tabstop>pushButton_edit_name</tabstop>
+ <tabstop>lineEdit_local_dir</tabstop>
+ <tabstop>tableWidget</tabstop>
+ <tabstop>pushButton_remote_add</tabstop>
+ <tabstop>pushButton_remote_edit</tabstop>
+ <tabstop>pushButton_remote_remove</tabstop>
+ <tabstop>pushButton_remote_menu</tabstop>
+ <tabstop>pushButton_close</tabstop>
+ </tabstops>
<resources/>
<connections>
<connection>
<sender>pushButton_close</sender>
<signal>clicked()</signal>
<receiver>RepositoryPropertyDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>456</x>
<y>343</y>
</hint>
<hint type="destinationlabel">
<x>226</x>
<y>354</y>
</hint>
</hints>
</connection>
</connections>
</ui>

File Metadata

Mime Type
text/x-diff
Expires
Sat, Feb 7, 7:32 AM (1 d, 1 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
55892
Default Alt Text
(16 KB)

Event Timeline