Skip to content

Commit 24cf905

Browse files
author
Jim Hamill
committed
Browse updates (remove now works)
1 parent 2461e9c commit 24cf905

File tree

4 files changed

+96
-10
lines changed

4 files changed

+96
-10
lines changed

BrowseWidget.cpp

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
#include "BrowseWidget.h"
22
#include "ui_BrowseWidget.h"
33

4+
#include <QDebug>
5+
46
#include <QSqlTableModel>
7+
#include <QSqlRecord>
8+
#include <QSqlField>
9+
#include <QSqlError>
10+
11+
#include "InsertRowDialog.h"
512

613
BrowseWidget::BrowseWidget(QWidget *parent) :
714
QWidget(parent),
@@ -33,6 +40,11 @@ void BrowseWidget::setDatabase(QSqlDatabase *database)
3340

3441
bool BrowseWidget::setTable(QString table)
3542
{
43+
// Call commit changes to save our new row if we have one
44+
if (m_model->isDirty()) {
45+
commitChanges();
46+
}
47+
3648
// Create model
3749
m_model->setTable(table);
3850
m_model->setEditStrategy(QSqlTableModel::OnFieldChange);
@@ -47,10 +59,59 @@ bool BrowseWidget::setTable(QString table)
4759
ui->filterEdit->setEnabled(true);
4860
ui->filterButton->setEnabled(true);
4961

62+
// Make sure we save changes when moving to a new row (this is necessary so "Add" works)
63+
connect(ui->tableView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(commitChanges()));
64+
5065
return true;
5166
}
5267

5368
void BrowseWidget::on_filterButton_clicked()
5469
{
5570
m_model->setFilter(ui->filterEdit->text());
5671
}
72+
73+
void BrowseWidget::on_removeButton_clicked()
74+
{
75+
// Get list of selected indexes
76+
QModelIndexList indexes = ui->tableView->selectionModel()->selectedIndexes();
77+
78+
// Delete each index
79+
Q_FOREACH(QModelIndex index, indexes) {
80+
m_model->removeRow(index.row());
81+
}
82+
83+
// Refresh browse widget
84+
m_model->select();
85+
}
86+
87+
void BrowseWidget::on_addButton_clicked()
88+
{
89+
// Set the edit model to not save
90+
m_model->setEditStrategy(QSqlTableModel::OnManualSubmit);
91+
92+
// Create a new record
93+
QSqlRecord newRecord;
94+
95+
// Insert the row
96+
m_model->insertRecord(-1, newRecord);
97+
}
98+
99+
void BrowseWidget::on_clearButton_clicked()
100+
{
101+
// Remove all rows
102+
m_model->removeRows(1, m_model->rowCount()-1);
103+
104+
// Refresh browse widget
105+
m_model->select();
106+
}
107+
108+
void BrowseWidget::commitChanges()
109+
{
110+
// Submit all previous changes
111+
if (m_model->isDirty()) {
112+
m_model->submitAll();
113+
}
114+
115+
// Revert back to OnFieldChange
116+
//m_model->setEditStrategy(QSqlTableModel::OnFieldChange);
117+
}

BrowseWidget.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ class BrowseWidget : public QWidget
2424
private slots:
2525
void on_filterButton_clicked();
2626

27+
void on_removeButton_clicked();
28+
29+
void on_addButton_clicked();
30+
31+
void on_clearButton_clicked();
32+
33+
void commitChanges();
34+
2735
private:
2836
Ui::BrowseWidget *ui;
2937

BrowseWidget.ui

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<string>Form</string>
1515
</property>
1616
<layout class="QGridLayout" name="gridLayout">
17-
<item row="0" column="0" colspan="3">
17+
<item row="0" column="0" colspan="4">
1818
<layout class="QHBoxLayout" name="horizontalLayout">
1919
<item>
2020
<widget class="QLabel" name="label">
@@ -57,20 +57,32 @@
5757
<string>Go!</string>
5858
</property>
5959
<property name="icon">
60-
<iconset theme="dialog-ok-apply"/>
60+
<iconset theme="dialog-ok-apply">
61+
<normaloff/>
62+
</iconset>
6163
</property>
6264
</widget>
6365
</item>
6466
</layout>
6567
</item>
66-
<item row="1" column="0" colspan="3">
68+
<item row="1" column="0" colspan="4">
6769
<widget class="QTableView" name="tableView">
6870
<property name="enabled">
6971
<bool>false</bool>
7072
</property>
7173
</widget>
7274
</item>
7375
<item row="2" column="0">
76+
<widget class="QPushButton" name="clearButton">
77+
<property name="text">
78+
<string>Clear</string>
79+
</property>
80+
<property name="icon">
81+
<iconset theme="edit-clear"/>
82+
</property>
83+
</widget>
84+
</item>
85+
<item row="2" column="1">
7486
<spacer name="horizontalSpacer">
7587
<property name="orientation">
7688
<enum>Qt::Horizontal</enum>
@@ -83,8 +95,8 @@
8395
</property>
8496
</spacer>
8597
</item>
86-
<item row="2" column="1">
87-
<widget class="QPushButton" name="pushButton">
98+
<item row="2" column="2">
99+
<widget class="QPushButton" name="addButton">
88100
<property name="text">
89101
<string>Add</string>
90102
</property>
@@ -95,8 +107,8 @@
95107
</property>
96108
</widget>
97109
</item>
98-
<item row="2" column="2">
99-
<widget class="QPushButton" name="pushButton_2">
110+
<item row="2" column="3">
111+
<widget class="QPushButton" name="removeButton">
100112
<property name="text">
101113
<string>Remove</string>
102114
</property>

DatabaseConnectionWidget.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,14 @@ bool DatabaseConnectionWidget::createSshTunnel(QString hostname, int remotePort,
5454
arguments << "-fNg" << "-L" << QString(QString::number(localPort) + ":" + "127.0.0.1" + ":" + QString::number(remotePort)) << QString(hostname);
5555

5656
// Execute SSH Command
57-
m_sshTunnel.start("ssh", arguments);
57+
//m_sshTunnel.start("ssh", arguments);
58+
QProcess::startDetached("ssh", arguments);
5859

59-
// Wait until finished
60+
for (int i = 0; i < 500000; i++) {
61+
qDebug() << i;
62+
}
63+
64+
/*// Wait until finished
6065
if (!m_sshTunnel.waitForStarted(5000)) {
6166
return false;
6267
}
@@ -69,7 +74,7 @@ bool DatabaseConnectionWidget::createSshTunnel(QString hostname, int remotePort,
6974
7075
// Print useful information
7176
qDebug() << m_sshTunnel.exitCode() << m_sshTunnel.readAllStandardError();
72-
qDebug() << QString("SSH tunnel binded to 127.0.0.1:" + QString::number(localPort));
77+
qDebug() << QString("SSH tunnel binded to 127.0.0.1:" + QString::number(localPort));*/
7378

7479
return true;
7580
}

0 commit comments

Comments
 (0)