void MumbleClient::processServerSync(quint8 *message, quint64 size) { MumbleProto::ServerSync sync; sync.ParseFromArray(message,size); _session_id = sync.session(); _max_bandwidth = sync.max_bandwidth(); std::string welcome = sync.welcome_text(); _synchronized = true; qDebug() << QString::fromStdString(welcome) << " max bandwidth: " << _max_bandwidth << " session: " << QString::number(_session_id); #ifndef NO_CRYPT createChannel(); #endif MumbleProto::UserState us; us.set_session(_session_id); us.set_actor(_session_id); us.set_self_deaf(true); us.set_self_mute(true); us.set_comment(_settings->_callsign.toStdString().c_str()); int msize = us.ByteSize(); quint8 data[msize]; us.SerializeToArray(data,msize); this->sendMessage(data,9,msize); }
void MainWindow::msgServerSync(const MumbleProto::ServerSync &msg) { g.sh->sendPing(); // Send initial ping to establish UDP connection g.uiSession = msg.session(); g.pPermissions = ChanACL::Permissions(static_cast<unsigned int>(msg.permissions())); g.l->clearIgnore(); if (msg.has_welcome_text()) { QString str = u8(msg.welcome_text()); if (!str.isEmpty()) { g.l->log(Log::Information, tr("Welcome message: %1").arg(str)); } } pmModel->ensureSelfVisible(); pmModel->recheckLinks(); qmTargetUse.clear(); qmTargets.clear(); for (int i=1;i<6;++i) { qmTargetUse.insert(i, i); } iTargetCounter = 100; AudioInput::setMaxBandwidth(msg.max_bandwidth()); findDesiredChannel(); QString host, uname, pw; unsigned short port; g.sh->getConnectionInfo(host, port, uname, pw); QList<Shortcut> sc = Database::getShortcuts(g.sh->qbaDigest); if (! sc.isEmpty()) { for (int i=0;i<sc.count(); ++i) { Shortcut &s = sc[i]; s.iIndex = g.mw->gsWhisper->idx; } g.s.qlShortcuts << sc; GlobalShortcutEngine::engine->bNeedRemap = true; } const ClientUser *user = ClientUser::get(g.uiSession); connect(user, SIGNAL(talkingStateChanged()), this, SLOT(userStateChanged())); connect(user, SIGNAL(muteDeafStateChanged()), this, SLOT(userStateChanged())); connect(user, SIGNAL(prioritySpeakerStateChanged()), this, SLOT(userStateChanged())); connect(user, SIGNAL(recordingStateChanged()), this, SLOT(userStateChanged())); qstiIcon->setToolTip(tr("Mumble: %1").arg(Qt::escape(Channel::get(0)->qsName))); // Update QActions and menues on_qmServer_aboutToShow(); on_qmSelf_aboutToShow(); qmChannel_aboutToShow(); qmUser_aboutToShow(); on_qmConfig_aboutToShow(); updateTrayIcon(); }