#include "MainWindow.hpp"
#include "tmp/ui_MainWindow.h"
#include <QTime>
#include <QDebug>
MainWindow::MainWindow( QWidget *parent) :
QMainWindow( parent, Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint),
_ui( new Ui::MainWindow)
{
_ui->setupUi( this);
_connectCount = 0;
doUpdateView();
_timer1s.start(1000);
connect( &_timer1s, SIGNAL(timeout()), this, SLOT(doTimeUpdate()));
_server->start(0);
_discoverRemote->setService("Demo Chat Server");
_discoverRemote->addGroup("arndemo/chat");
_discoverRemote->addCustomProperty("ChatProtoVer", "1.0");
_discoverRemote->startUseServer( _server);
_arnTime.open("//Chat/Time/value");
_commonSapi = new ChatSapi( this);
_commonSapi->open("//Chat/Pipes/pipeCommon", SMode::Provider | SMode::UseDefaultCall);
_commonSapi->batchConnectTo( this, "sapi");
connect( arnPipes, SIGNAL(arnItemCreated(QString)), this, SLOT(doNewSession(QString)));
}
MainWindow::~MainWindow()
{
delete _ui;
}
void MainWindow::doNewSession( QString path)
{
ChatSapi* soleSapi = new ChatSapi( this);
soleSapi->open( path, SMode::Provider | SMode::UseDefaultCall);
soleSapi->batchConnectTo( this, "sapi");
connect( soleSapi, SIGNAL(pipeClosed()), soleSapi, SLOT(deleteLater()));
connect( soleSapi, SIGNAL(pipeClosed()), this, SLOT(doSessionClosed()));
++_connectCount;
doUpdateView();
}
void MainWindow::doSessionClosed()
{
--_connectCount;
doUpdateView();
}
void MainWindow::doUpdateView()
{
_ui->connectCount->setText( QString::number( _connectCount));
}
void MainWindow::on_shutDownButton_clicked()
{
qWarning() << "About to shut down.";
delete _discoverRemote;
_discoverRemote = 0;
QApplication::quit();
}
void MainWindow::doTimeUpdate()
{
_arnTime = QTime::currentTime().toString();
}
void MainWindow::sapiList()
{
ChatSapi* sapi = qobject_cast<ChatSapi*>( sender());
Q_ASSERT(sapi);
for (int i = 0; i < _chatNameList.size(); ++i) {
sapi->rq_updateMsg( i, _chatNameList.at(i), _chatMsgList.at(i));
}
}
void MainWindow::sapiNewMsg( QString name, QString msg)
{
_chatNameList += name;
_chatMsgList += msg;
int seq = _chatNameList.size() - 1;
_commonSapi->rq_updateMsg( seq, name, msg);
}
void MainWindow::sapiInfoQ()
{
ChatSapi* sapi = qobject_cast<ChatSapi*>( sender());
Q_ASSERT(sapi);
sapi->rq_info("Arn Chat Demo", "1.2");
}
void MainWindow::sapiDefault( const QByteArray& data)
{
ChatSapi* sapi = qobject_cast<ChatSapi*>( sender());
Q_ASSERT(sapi);
qDebug() << "chatDefault:" << data;
sapi->sendText("Chat Sapi: Can't find method, use $help.");
}