Add changes file

Add persistant storage of server lists


git-svn-id: https://mumble.svn.sourceforge.net/svnroot/mumble/trunk@85 05730e5d-ab1b-0410-a4ac-84af385074fa
This commit is contained in:
Thorvald Natvig 2005-09-07 17:25:24 +00:00
parent 9a73682d3a
commit 3475fc3857
7 changed files with 153 additions and 19 deletions

6
CHANGES Normal file
View File

@ -0,0 +1,6 @@
0.2.2cvs
========
- Store list of servers in connect dialog
- Added persistant database
- Added CHANGES file

View File

@ -37,8 +37,14 @@
#include <QGridLayout>
#include <QIntValidator>
#include <QSettings>
#include <QSqlQuery>
#include <QSqlError>
#include <QItemSelectionModel>
#include <QSqlRecord>
#include <QMessageBox>
ConnectDialog::ConnectDialog(QWidget *parent) : QDialog(parent) {
QSqlQuery query;
QGridLayout *l=new QGridLayout;
QVBoxLayout *vbl = new QVBoxLayout;
QHBoxLayout *vbh = new QHBoxLayout();
@ -48,47 +54,106 @@ ConnectDialog::ConnectDialog(QWidget *parent) : QDialog(parent) {
setLayout(vbl);
QLabel *lab;
bDirty = false;
/* query.exec("DELETE FROM servers");
query.exec("INSERT INTO servers (name, hostname) VALUES('Hei1','Mixern1')");
query.exec("INSERT INTO servers (name, hostname) VALUES('Hei3','Mixern3')");
query.exec("INSERT INTO servers (name, hostname) VALUES('Hei2','Mixern2')");
*/
qstmServers = new QSqlTableModel(this);
qstmServers->setTable("servers");
qstmServers->setSort(1, Qt::AscendingOrder);
if (! qstmServers->select()) {
query.exec("DROP TABLE servers");
if (! query.exec("CREATE TABLE servers (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, hostname TEXT, port INTEGER DEFAULT 64738, username TEXT, password TEXT)"))
qWarning("ConnectDialog: Failed to create table");
// delete qstmServers;
// qstmServers = new QSqlTableModel(this);
qstmServers->setTable("servers");
if (! qstmServers->select())
qWarning("ConnectDialog: Failed to reselect table");
qWarning("%s", qstmServers->lastError().databaseText().toLatin1().constData());
}
qstmServers->setEditStrategy(QSqlTableModel::OnManualSubmit);
QSettings qs;
qlwServers=new QListView(this);
l->addWidget(qlwServers,0,0,4,1);
qlwServers->setModel(qstmServers);
qlwServers->setModelColumn(1);
qlwServers->setEditTriggers(QAbstractItemView::NoEditTriggers);
qlwServers->setObjectName("List");
QItemSelectionModel *selectionModel = qlwServers->selectionModel();
connect(selectionModel, SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(onSelection_Changed(const QModelIndex &, const QModelIndex &)));
qleName=new QLineEdit(qs.value("ServerName", "").toString(), this);
lab=new QLabel("&Name", this);
lab->setBuddy(qleName);
l->addWidget(lab, 0, 1);
l->addWidget(qleName, 0, 2);
qleServer=new QLineEdit(qs.value("ServerAddress", "").toString(), this);
lab=new QLabel("&Address", this);
lab=new QLabel("A&ddress", this);
lab->setBuddy(qleServer);
l->addWidget(lab, 0, 0);
l->addWidget(qleServer, 0, 1);
l->addWidget(lab, 1, 1);
l->addWidget(qleServer, 1, 2);
qlePort=new QLineEdit(qs.value("ServerPort", "64738").toString(), this);
qlePort->setValidator(new QIntValidator(1, 65535, qlePort));
lab=new QLabel("&Port", this);
lab->setBuddy(qlePort);
l->addWidget(lab, 1, 0);
l->addWidget(qlePort, 1, 1);
l->addWidget(lab, 2, 1);
l->addWidget(qlePort, 2, 2);
qleUsername=new QLineEdit(qs.value("ServerUsername", "").toString(), this);
lab=new QLabel("&Username", this);
lab->setBuddy(qleUsername);
l->addWidget(lab, 3, 1);
l->addWidget(qleUsername, 3, 2);
qlePassword=new QLineEdit(qs.value("ServerPassword", "").toString(), this);
qlePassword->setEchoMode(QLineEdit::Password);
lab=new QLabel("&Password", this);
lab->setBuddy(qlePassword);
l->addWidget(lab, 2, 0);
l->addWidget(qlePassword, 2,1);
l->addWidget(lab, 4, 1);
l->addWidget(qlePassword, 4,2);
qleUsername=new QLineEdit(qs.value("ServerUsername", "").toString(), this);
lab=new QLabel("&Username", this);
lab->setBuddy(qleUsername);
l->addWidget(lab, 3, 0);
l->addWidget(qleUsername, 3, 1);
QPushButton *okButton = new QPushButton("&OK");
QPushButton *okButton = new QPushButton("&Connect");
okButton->setDefault(true);
connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
QPushButton *cancelButton = new QPushButton("&Cancel");
QPushButton *cancelButton = new QPushButton("Cancel");
connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
QPushButton *addButton = new QPushButton("&Add");
addButton->setObjectName("Add");
QPushButton *removeButton = new QPushButton("&Remove");
removeButton->setObjectName("Remove");
vbh->addWidget(okButton);
vbh->addWidget(cancelButton);
vbh->addWidget(addButton);
vbh->addWidget(removeButton);
connect(qleName, SIGNAL(textEdited(const QString &)), this, SLOT(onDirty(const QString &)));
connect(qleServer, SIGNAL(textEdited(const QString &)), this, SLOT(onDirty(const QString &)));
connect(qleUsername, SIGNAL(textEdited(const QString &)), this, SLOT(onDirty(const QString &)));
connect(qlePassword, SIGNAL(textEdited(const QString &)), this, SLOT(onDirty(const QString &)));
connect(qlePort, SIGNAL(textEdited(const QString &)), this, SLOT(onDirty(const QString &)));
connect(qlwServers, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(accept()));
QMetaObject::connectSlotsByName(this);
}
void ConnectDialog::accept() {
@ -105,3 +170,52 @@ void ConnectDialog::accept() {
QDialog::accept();
}
QSqlRecord ConnectDialog::toRecord() const
{
QSqlRecord r = qstmServers->record();
r.setValue("name", qleName->text());
r.setValue("hostname", qleServer->text());
r.setValue("username", qleUsername->text());
r.setValue("password", qlePassword->text());
r.setValue("port", qlePort->text().toInt());
return r;
}
void ConnectDialog::onSelection_Changed(const QModelIndex &index, const QModelIndex &previndex)
{
QSqlRecord r;
if (bDirty) {
r = toRecord();
qstmServers->setRecord(previndex.row(), r);
qstmServers->submitAll();
}
r = qstmServers->record(index.row());
qleName->setText(r.value("name").toString());
qleServer->setText(r.value("hostname").toString());
qleUsername->setText(r.value("username").toString());
qlePassword->setText(r.value("password").toString());
qlePort->setText(r.value("port").toString());
bDirty = false;
}
void ConnectDialog::on_Add_clicked()
{
QSqlRecord r = toRecord();
qstmServers->insertRecord(-1, r);
qstmServers->submitAll();
bDirty = false;
}
void ConnectDialog::on_Remove_clicked()
{
int row=qlwServers->currentIndex().row();
qstmServers->removeRows(qlwServers->currentIndex().row(), 1, QModelIndex());
qstmServers->submitAll();
qWarning("Dumped %d", row);
}
void ConnectDialog::onDirty(const QString &) {
bDirty = true;
}

View File

@ -33,13 +33,25 @@
#include <QDialog>
#include <QLineEdit>
#include <QListView>
#include <QSqlTableModel>
#include <QAbstractItemView>
class ConnectDialog : public QDialog {
Q_OBJECT;
protected:
QLineEdit *qleServer, *qlePort, *qleUsername, *qlePassword;
QSqlTableModel *qstmServers;
QListView *qlwServers;
QLineEdit *qleName, *qleServer, *qlePort, *qleUsername, *qlePassword;
QModelIndex qmiDirty;
QSqlRecord toRecord() const;
bool bDirty;
public slots:
void accept();
void on_Add_clicked();
void on_Remove_clicked();
void onSelection_Changed(const QModelIndex &n, const QModelIndex &p);
void onDirty(const QString &);
public:
QString qsServer, qsUsername, qsPassword;
int iPort;

View File

@ -35,6 +35,7 @@
#include "MainWindow.h"
#include "AudioInput.h"
#include "Settings.h"
#include "ConnectDialog.h"
MainWindow *g_mwMainWindow;

View File

@ -40,7 +40,6 @@
#include "Connection.h"
#include "ServerHandler.h"
#include "About.h"
#include "ConnectDialog.h"
#include "GlobalShortcut.h"
#include "TextToSpeech.h"

View File

@ -67,6 +67,7 @@ Section "Mumble & Murmur" SecMumble
File /oname=license.txt "..\LICENSE"
File /oname=Readme.txt "..\README"
File /oname=Changes.txt "..\CHANGES"
File "speex.txt"
File "qt.txt"
File "..\release\mumble.exe"
@ -116,6 +117,7 @@ Section "Uninstall"
Delete "$INSTDIR\QtSql4.dll"
Delete "$INSTDIR\libspeex.dll"
Delete "$INSTDIR\mingwm10.dll"
Delete "$INSTDIR\Changes.txt"
Delete "$INSTDIR\qt.txt"
Delete "$INSTDIR\speex.txt"
Delete "$INSTDIR\Readme.txt"

View File

@ -1,5 +1,5 @@
VERSION = 0.2.1
DIST = LICENSE INSTALL README mumble.pro murmur.pro mumble.pri mumble.ico
DIST = LICENSE INSTALL README CHANGES mumble.pro murmur.pro mumble.pri mumble.ico
CONFIG += qt thread debug_and_release
CONFIG(debug, debug|release) {