예제 #1
0
HWNewNet::HWNewNet() :
    isChief(false),
    m_game_connected(false),
    netClientState(Disconnected)
{
    m_private_game = false;
    m_nick_registered = false;

    m_roomsListModel = new RoomsListModel(this);

    m_playersModel = new PlayersListModel(this);

    m_lobbyPlayersModel = new QSortFilterProxyModel(this);
    m_lobbyPlayersModel->setSourceModel(m_playersModel);
    m_lobbyPlayersModel->setSortRole(PlayersListModel::SortRole);
    m_lobbyPlayersModel->setDynamicSortFilter(true);
    m_lobbyPlayersModel->sort(0);

    m_roomPlayersModel = new QSortFilterProxyModel(this);
    m_roomPlayersModel->setSourceModel(m_playersModel);
    m_roomPlayersModel->setSortRole(PlayersListModel::SortRole);
    m_roomPlayersModel->setDynamicSortFilter(true);
    m_roomPlayersModel->sort(0);
    m_roomPlayersModel->setFilterRole(PlayersListModel::RoomFilterRole);
    m_roomPlayersModel->setFilterFixedString("true");

    // socket stuff
    connect(&NetSocket, SIGNAL(readyRead()), this, SLOT(ClientRead()));
    connect(&NetSocket, SIGNAL(connected()), this, SLOT(OnConnect()));
    connect(&NetSocket, SIGNAL(disconnected()), this, SLOT(OnDisconnect()));
    connect(&NetSocket, SIGNAL(error(QAbstractSocket::SocketError)), this,
            SLOT(displayError(QAbstractSocket::SocketError)));

    connect(this, SIGNAL(messageProcessed()), this, SLOT(ClientRead()), Qt::QueuedConnection);
}
예제 #2
0
 char * Message::getMessage() {
     if (!messageProcessed()) {
         size_t size = BUF_SIZE;
         bool verbose = _name == NULL;
         const char * fstr = verbose ? 
             "%-5s [%02i:%02i:%02i] Function %s (File %s : Line %03d): %s\n" :
             "%-5s %s : %s\n";
         do {
             _buffer = new char[size];
             const char * msg = makeMessage();
             int res; 
             if (verbose) { 
                 time_t t = time(NULL);
                 tm * time_info = localtime(&t);
                 res = snprintf(_buffer, size, fstr, _lvl, 
                     time_info->tm_hour, time_info->tm_min, time_info->tm_sec,
                     _function, _file, _line, msg);
             } else {
                 res = snprintf(_buffer, size, fstr, _lvl, _name, msg);
             }
             if (res < 0) {
                 size *= 2;
                 delete[] _buffer;
             } else if (static_cast<size_t>(res) > size) {
                 size = res + 1;
                 delete[] _buffer;
             } else {
                 return _buffer;
             }
         } while (true);
     } else {
         return _buffer;
     }
 }
예제 #3
0
void HWNewNet::ClientRead()
{
    while (NetSocket.canReadLine())
    {
        QString s = QString::fromUtf8(NetSocket.readLine());
        if (s.endsWith('\n')) s.chop(1);

        if (s.size() == 0)
        {
            ParseCmd(cmdbuf);
            cmdbuf.clear();
            emit messageProcessed();
            return ;
        }
        else
            cmdbuf << s;
    }
}
예제 #4
0
void SmsClient::finished( const QString& id, QTelephony::Result result )
{
    QMap<QString, RawSms>::iterator it = sentMessages.find(id);
    if (it != sentMessages.end()) {
        // Report this message back as 'processed', whether transmission succeeded or not
        emit messageProcessed(it->msgId);

        sentMessages.erase(it);
    } else {
        qWarning() << "SMS: Cannot process unknown message:" << id;
    }

    if ( result != QTelephony::OK )
        success = false;

    ++count;
    if ( count >= total ) {
        if ( success )
            emit mailSent( count );
        else
            emit transmissionCompleted();
    }
}