Change format of dyamic groups document to allow spaces in names

This commit is contained in:
Melanie
2016-11-24 23:37:53 +00:00
parent 8aa7a57b49
commit d38effa318
4 changed files with 102 additions and 48 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.1.0, 2016-11-20T12:27:02. -->
<!-- Written by QtCreator 4.1.0, 2016-11-24T21:28:33. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
+2 -2
View File
@@ -151,12 +151,12 @@
<rect>
<x>10</x>
<y>140</y>
<width>59</width>
<width>101</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
<string>Password</string>
</property>
</widget>
<widget class="QLineEdit" name="pass">
+96 -45
View File
@@ -298,10 +298,8 @@ void MainWindow::on_action_Edit_triggered()
g->User = dlg.User->text();
g->Pass = dlg.Pass->text();
while (item->childCount())
delete item->child(0);
loadGroup(item);
if (reload)
reloadGroup(item);
}
WriteSettings();
@@ -521,50 +519,68 @@ void MainWindow::ConnContext(const QPoint &pos)
item->setSelected(true);
QMenu ctx("Connection actions", this);
if (item != 0)
if (!item)
{
if (item->type() == GroupItem)
connect (ctx.addAction("Add ..."), SIGNAL(triggered()), this, SLOT(addRootConnection()));
connect (ctx.addAction("Add Group..."), SIGNAL(triggered()), ui->actionNew_group, SLOT(trigger()));
}
else
{
QUuid uuid = item->data(0, Qt::UserRole).toUuid();
if (uuid.isNull())
return;
// Connection items
if (item->type() == ConnectionItem)
{
if (item->childCount() > 0)
ConnectionData *conn = 0;
if (connections.contains(uuid))
conn = connections[uuid];
if (conn != 0)
{
connect (ctx.addAction("Connect"), SIGNAL(triggered()), ui->action_Connect, SLOT(trigger()));
ctx.addSeparator();
// Existing in the database and not dynamic
if (!conn->Dynamic)
connect (ctx.addAction("Edit ..."), SIGNAL(triggered()), ui->action_Edit, SLOT(trigger()));
}
// Orphan -> we can only delete, else normal connection
if (conn == 0 || (!conn->Dynamic))
connect (ctx.addAction("Delete"), SIGNAL(triggered()), ui->actionDelete, SLOT(trigger()));
}
else if(item->type() == GroupItem)
{
GroupData *grp = 0;
if (groups.contains(uuid))
grp = groups[uuid];
if (grp && item->childCount() > 0)
{
connect (ctx.addAction("Connect Group"), SIGNAL(triggered()), ui->action_Connect, SLOT(trigger()));
ctx.addSeparator();
}
}
else
{
connect (ctx.addAction("Connect"), SIGNAL(triggered()), ui->action_Connect, SLOT(trigger()));
ctx.addSeparator();
}
connect (ctx.addAction("Add ..."), SIGNAL(triggered()), ui->action_New, SLOT(trigger()));
}
else
{
connect (ctx.addAction("Add ..."), SIGNAL(triggered()), this, SLOT(addRootConnection()));
}
ConnectionData *conn = 0;
if (item)
{
QUuid uuid = item->data(0, Qt::UserRole).toUuid();
if (!uuid.isNull() && connections.contains(uuid))
conn = connections[uuid];
}
if (item != 0 && (conn == 0 || conn->Dynamic == false))
{
connect (ctx.addAction("Edit ..."), SIGNAL(triggered()), ui->action_Edit, SLOT(trigger()));
if (grp)
{
if (!grp->Dynamic)
connect (ctx.addAction("Add ..."), SIGNAL(triggered()), ui->action_New, SLOT(trigger()));
connect(ctx.addAction("Edit ..."), SIGNAL(triggered()), ui->action_Edit, SLOT(trigger()));
if (grp->Dynamic)
{
ctx.addSeparator();
connect (ctx.addAction("Refresh"), SIGNAL(triggered()), this, SLOT(onRefreshDynamicItem()));
}
}
if (item->childCount() == 0 || (grp && grp->Dynamic))
connect (ctx.addAction("Delete"), SIGNAL(triggered()), ui->actionDelete_group, SLOT(trigger()));
}
ctx.addSeparator();
connect (ctx.addAction("Add Group..."), SIGNAL(triggered()), ui->actionNew_group, SLOT(trigger()));
}
if (item != 0 && item->type() != GroupItem)
{
if (conn == 0 || (!conn->Dynamic))
connect (ctx.addAction("Delete"), SIGNAL(triggered()), ui->actionDelete, SLOT(trigger()));
}
else if (item != 0 && item->childCount() == 0)
{
connect (ctx.addAction("Delete"), SIGNAL(triggered()), ui->actionDelete_group, SLOT(trigger()));
}
ctx.addSeparator();
connect (ctx.addAction("Add Group..."), SIGNAL(triggered()), ui->actionNew_group, SLOT(trigger()));
ctx.exec(ui->connList->mapToGlobal(pos));
}
@@ -650,8 +666,10 @@ GroupData *MainWindow::createGroup()
{
GroupData *grp = new GroupData();
grp->Uuid = QUuid::createUuid();
grp->Name = "New group";
grp->Dynamic = false;
groups[grp->Uuid] = grp;
@@ -909,11 +927,7 @@ void MainWindow::groupLoaded()
QList<QString> pieces = line.split(" ");
if (pieces.count() < 2)
continue;
QString name = pieces[0];
if (name.trimmed() == "")
continue;
QString host = pieces[1];
QString host = pieces[0];
int port = 9000;
QList<QString> addrparts = host.split(":");
@@ -923,6 +937,13 @@ void MainWindow::groupLoaded()
port = addrparts[1].toInt();
}
pieces.removeFirst();
QString name = pieces.join(" ");
if (name.trimmed() == "")
continue;
name[0] = name[0].toUpper();
ConnectionData *c = new ConnectionData();
c->Name = name;
c->Uuid = QUuid::createUuid();
@@ -954,3 +975,33 @@ void MainWindow::on_action_About_triggered()
dlg.exec();
}
void MainWindow::onRefreshDynamicItem()
{
QTreeWidgetItem *item = selectedItem();
if (item == 0 || item->type() != GroupItem)
return;
reloadGroup(item);
}
void MainWindow::clearGroup(QTreeWidgetItem *item)
{
while (item->childCount())
delete item->child(0);
QUuid id = item->data(0, Qt::UserRole).toUuid();
for (QMap<QUuid, ConnectionData *>::Iterator it = connections.begin() ; it != connections.end() ; ++it)
{
if ((*it)->Group == id)
connections.remove(it.key());
}
}
void MainWindow::reloadGroup(QTreeWidgetItem *item)
{
clearGroup(item);
loadGroup(item);
}
+3
View File
@@ -81,11 +81,14 @@ protected:
void loadGroup(QTreeWidgetItem *item);
void showEvent(QShowEvent *event);
void reloadGroup(QTreeWidgetItem *item);
void clearGroup(QTreeWidgetItem *item);
protected slots:
void addRootConnection();
void addChildConnection();
void treeWidgetItemChanged(QTreeWidgetItem *item, int column);
void groupLoaded();
void onRefreshDynamicItem();
private:
QTreeWidgetItem *findOrAddGroup(QString groupName);
Ui::MainWindow *ui;