testing connection
This commit is contained in:
parent
3d947a0748
commit
d4afdd7a5f
@ -56,7 +56,7 @@ void Core::Account::onClientConnected()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Account::onClientDisonnected()
|
void Core::Account::onClientDisconnected()
|
||||||
{
|
{
|
||||||
if (state != Shared::disconnected) {
|
if (state != Shared::disconnected) {
|
||||||
state = Shared::disconnected;
|
state = Shared::disconnected;
|
||||||
|
@ -35,7 +35,7 @@ private:
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onClientConnected();
|
void onClientConnected();
|
||||||
void onClientDisonnected();
|
void onClientDisconnected();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ void Core::Squawk::disconnectAccount(const QString& account)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
itr->second->connect();
|
itr->second->disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Squawk::onAccountConnectionStateChanged(int state)
|
void Core::Squawk::onAccountConnectionStateChanged(int state)
|
||||||
|
6
global.h
6
global.h
@ -1,6 +1,9 @@
|
|||||||
#ifndef GLOBAL_H
|
#ifndef GLOBAL_H
|
||||||
#define GLOBAL_H
|
#define GLOBAL_H
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
#include <deque>
|
||||||
|
|
||||||
namespace Shared {
|
namespace Shared {
|
||||||
|
|
||||||
enum ConnectionState {
|
enum ConnectionState {
|
||||||
@ -10,6 +13,9 @@ enum ConnectionState {
|
|||||||
error
|
error
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const std::deque<QString> ConnectionStateNames = {"Disconnected", "Connecting", "Connected", "Error"};
|
||||||
|
static const std::deque<QString> ConnectionStateThemeIcons = {"network-disconnect", "view-refresh", "network-connect", "state-error"};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GLOBAL_H
|
#endif // GLOBAL_H
|
||||||
|
@ -116,6 +116,12 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<tabstops>
|
||||||
|
<tabstop>name</tabstop>
|
||||||
|
<tabstop>login</tabstop>
|
||||||
|
<tabstop>server</tabstop>
|
||||||
|
<tabstop>password</tabstop>
|
||||||
|
</tabstops>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections>
|
<connections>
|
||||||
<connection>
|
<connection>
|
||||||
|
@ -41,3 +41,9 @@ void Accounts::addAccount(const QMap<QString, QVariant>& map)
|
|||||||
{
|
{
|
||||||
tableModel.addAccount(map);
|
tableModel.addAccount(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Accounts::updateAccount(const QString& account, const QString& field, const QVariant& value)
|
||||||
|
{
|
||||||
|
tableModel.updateAccount(account, field, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ public:
|
|||||||
~Accounts() override;
|
~Accounts() override;
|
||||||
|
|
||||||
void addAccount(const QMap<QString, QVariant>&);
|
void addAccount(const QMap<QString, QVariant>&);
|
||||||
|
void updateAccount(const QString& account, const QString& field, const QVariant& value);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void newAccount(const QMap<QString, QVariant>&);
|
void newAccount(const QMap<QString, QVariant>&);
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
#include "accounts.h"
|
#include "accounts.h"
|
||||||
|
#include "../../global.h"
|
||||||
|
|
||||||
|
#include <QIcon>
|
||||||
|
|
||||||
std::deque<QString> Models::Accounts::columns = {
|
std::deque<QString> Models::Accounts::columns = {
|
||||||
"name",
|
"name",
|
||||||
@ -32,11 +35,16 @@ QVariant Models::Accounts::data ( const QModelIndex& index, int role ) const
|
|||||||
answer = acc.server;
|
answer = acc.server;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
answer = acc.state;
|
answer = Shared::ConnectionStateNames[acc.state];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case Qt::DecorationRole:
|
||||||
|
if (index.column() == 2) {
|
||||||
|
answer = QIcon::fromTheme(Shared::ConnectionStateThemeIcons[accs[index.row()].state]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -75,3 +83,27 @@ void Models::Accounts::addAccount(const QMap<QString, QVariant>& map)
|
|||||||
});
|
});
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Models::Accounts::updateAccount(const QString& account, const QString& field, const QVariant& value)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < accs.size(); ++i) {
|
||||||
|
Account& acc = accs[i];
|
||||||
|
if (acc.name == account) {
|
||||||
|
if (field == "name") {
|
||||||
|
acc.name = value.toString();
|
||||||
|
emit dataChanged(createIndex(i, 0), createIndex(i, 0));
|
||||||
|
} else if (field == "server") {
|
||||||
|
acc.server = value.toString();
|
||||||
|
emit dataChanged(createIndex(i, 1), createIndex(i, 1));
|
||||||
|
} else if (field == "login") {
|
||||||
|
acc.login = value.toString();
|
||||||
|
} else if (field == "password") {
|
||||||
|
acc.password = value.toString();
|
||||||
|
} else if (field == "state") {
|
||||||
|
acc.state = value.toInt();
|
||||||
|
emit dataChanged(createIndex(i, 2), createIndex(i, 2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ public:
|
|||||||
~Accounts();
|
~Accounts();
|
||||||
|
|
||||||
void addAccount(const QMap<QString, QVariant>& map);
|
void addAccount(const QMap<QString, QVariant>& map);
|
||||||
|
void updateAccount(const QString& account, const QString& field, const QVariant& value);
|
||||||
|
|
||||||
QVariant data ( const QModelIndex& index, int role ) const override;
|
QVariant data ( const QModelIndex& index, int role ) const override;
|
||||||
int columnCount ( const QModelIndex& parent ) const override;
|
int columnCount ( const QModelIndex& parent ) const override;
|
||||||
|
@ -1,16 +1,19 @@
|
|||||||
#include "squawk.h"
|
#include "squawk.h"
|
||||||
#include "ui_squawk.h"
|
#include "ui_squawk.h"
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
Squawk::Squawk(QWidget *parent) :
|
Squawk::Squawk(QWidget *parent) :
|
||||||
QMainWindow(parent),
|
QMainWindow(parent),
|
||||||
m_ui(new Ui::Squawk),
|
m_ui(new Ui::Squawk),
|
||||||
accounts(0),
|
accounts(0),
|
||||||
accountsCache(),
|
accountsCache(),
|
||||||
|
accountsIndex(),
|
||||||
rosterModel()
|
rosterModel()
|
||||||
{
|
{
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
m_ui->roster->setModel(&rosterModel);
|
m_ui->roster->setModel(&rosterModel);
|
||||||
|
|
||||||
|
connect(m_ui->actionAccounts, SIGNAL(triggered()), this, SLOT(onAccounts()));
|
||||||
connect(m_ui->comboBox, SIGNAL(activated(int)), this, SLOT(onComboboxActivated(int)));
|
connect(m_ui->comboBox, SIGNAL(activated(int)), this, SLOT(onComboboxActivated(int)));
|
||||||
//m_ui->mainToolBar->addWidget(m_ui->comboBox);
|
//m_ui->mainToolBar->addWidget(m_ui->comboBox);
|
||||||
}
|
}
|
||||||
@ -60,6 +63,8 @@ void Squawk::onAccountsClosed(QObject* parent)
|
|||||||
void Squawk::newAccount(const QMap<QString, QVariant>& account)
|
void Squawk::newAccount(const QMap<QString, QVariant>& account)
|
||||||
{
|
{
|
||||||
accountsCache.push_back(account);
|
accountsCache.push_back(account);
|
||||||
|
QMap<QString, QVariant>* acc = &accountsCache.back();
|
||||||
|
accountsIndex.insert(std::make_pair(acc->value("name").toString(), acc));
|
||||||
rosterModel.addAccount(account);
|
rosterModel.addAccount(account);
|
||||||
if (accounts != 0) {
|
if (accounts != 0) {
|
||||||
accounts->addAccount(account);
|
accounts->addAccount(account);
|
||||||
@ -97,5 +102,17 @@ void Squawk::onComboboxActivated(int index)
|
|||||||
|
|
||||||
void Squawk::accountConnectionStateChanged(const QString& account, int state)
|
void Squawk::accountConnectionStateChanged(const QString& account, int state)
|
||||||
{
|
{
|
||||||
|
AI::iterator itr = accountsIndex.find(account);
|
||||||
|
if (itr != accountsIndex.end()) {
|
||||||
|
QMap<QString, QVariant>* acc = itr->second;
|
||||||
|
acc->insert("state", state);
|
||||||
|
|
||||||
|
if (accounts != 0) {
|
||||||
|
accounts->updateAccount(account, "state", state);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
QString msg("A notification about connection state change of an unknown account ");
|
||||||
|
msg += account + ", skipping";
|
||||||
|
qDebug("%s", msg.toStdString().c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include <QScopedPointer>
|
#include <QScopedPointer>
|
||||||
#include <QCloseEvent>
|
#include <QCloseEvent>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
#include "accounts.h"
|
#include "accounts.h"
|
||||||
#include "models/roster.h"
|
#include "models/roster.h"
|
||||||
@ -34,10 +35,12 @@ public slots:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
typedef std::deque<QMap<QString, QVariant>> AC;
|
typedef std::deque<QMap<QString, QVariant>> AC;
|
||||||
|
typedef std::map<QString, QMap<QString, QVariant>*> AI;
|
||||||
QScopedPointer<Ui::Squawk> m_ui;
|
QScopedPointer<Ui::Squawk> m_ui;
|
||||||
|
|
||||||
Accounts* accounts;
|
Accounts* accounts;
|
||||||
AC accountsCache;
|
AC accountsCache;
|
||||||
|
AI accountsIndex;
|
||||||
Models::Roster rosterModel;
|
Models::Roster rosterModel;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Loading…
Reference in New Issue
Block a user