Removed m_voiceRoomCom1/2 members and directly updating voice context

with voice rooms
This commit is contained in:
Klaus Basan
2014-01-25 02:14:29 +01:00
parent 6d5ad3ca75
commit 38d07286e1
6 changed files with 60 additions and 47 deletions

View File

@@ -118,8 +118,6 @@ private:
BlackCore::IContextVoice *m_contextVoice;
BlackCore::IContextSettings *m_contextSettings;
BlackMisc::Aviation::CAircraft m_ownAircraft; /*!< own aircraft's state */
BlackMisc::Voice::CVoiceRoom m_voiceRoomCom1;
BlackMisc::Voice::CVoiceRoom m_voiceRoomCom2;
QTimer *m_timerUpdateAtcStationsOnline; /*!< timer for update of stations */
QTimer *m_timerUpdateAircraftsInRange; /*!< timer for update of aircrafts */
QTimer *m_timerUpdateUsers; /*!< timer dor update of users */
@@ -450,9 +448,10 @@ private slots:
void resetTransponderMode();
/*!
* \brief Override voice room (allows to set an arbitrary voice room for testing purposes)
* Set voice rooms, also
* allows to set an arbitrary voice room for testing purposes
*/
void voiceRoomOverride();
void setAudioVoiceRooms();
/*!
* \brief Audio volume handling and mute

View File

@@ -32,32 +32,17 @@ bool MainWindow::reloadOwnAircraft()
{
if (!this->isContextNetworkAvailableCheck()) return false;
if (this->isCockpitUpdatePending()) return false;
// check for changed aircraft
bool changed = false;
CAircraft loadedAircraft = this->m_contextNetwork->getOwnAircraft();
// changed aircraft
if (loadedAircraft == this->m_ownAircraft) return false;
this->m_ownAircraft = loadedAircraft;
// update voice rooms
if (this->m_contextVoiceAvailable)
if (loadedAircraft != this->m_ownAircraft)
{
CVoiceRoomList selectedRooms = this->m_contextNetwork->getSelectedVoiceRooms();
if (selectedRooms.size() == 2)
{
this->m_voiceRoomCom1 = this->ui->cb_CockpitVoiceRoom1Override->isChecked() ?
CVoiceRoom(this->ui->le_CockpitVoiceRoomCom1->text().trimmed()) :
selectedRooms[0];
this->m_voiceRoomCom2 = this->ui->cb_CockpitVoiceRoom2Override->isChecked() ?
CVoiceRoom(this->ui->le_CockpitVoiceRoomCom2->text().trimmed()) :
selectedRooms[1];
}
this->m_ownAircraft = loadedAircraft;
this->updateCockpitFromContext();
changed = true;
}
//
this->updateCockpitFromContext();
// something has changed
return true;
return changed;
}
/*

View File

@@ -34,6 +34,15 @@ void MainWindow::reloadAtcStationsOnline()
this->m_atcListOnline->update(this->m_contextNetwork->getAtcStationsOnline());
this->ui->tv_AtcStationsOnline->resizeColumnsToContents();
this->ui->tv_AtcStationsOnline->resizeRowsToContents();
if (!this->m_contextNetwork->isConnected())
{
// clear metar/ATIS
this->ui->te_AtcStationsOnlineInfo->clear();
}
// after reloading, update cockpit based on better information
this->updateCockpitFromContext();
}
/*

View File

@@ -111,15 +111,19 @@ void MainWindow::updateCockpitFromContext()
//
if (this->m_contextVoiceAvailable)
{
bool com1Connected = this->m_voiceRoomCom1.isConnected();
bool com2Connected = this->m_voiceRoomCom2.isConnected();
// get all rooms, it is important to get the rooms from voice context here
// these are the ones featuring the real audio status
CVoiceRoomList rooms = this->m_contextVoice->getComVoiceRoomsWithAudioStatus();
Q_ASSERT(rooms.size() == 2);
Q_ASSERT(this->m_usersVoiceCom1);
Q_ASSERT(this->m_usersVoiceCom2);
bool com1Connected = rooms[0].isConnected();
bool com2Connected = rooms[1].isConnected();
// update views
this->m_usersVoiceCom1->update(this->m_contextVoice->getCom1RoomUsers());
this->ui->tv_CockpitVoiceRoom1->resizeColumnsToContents();
this->ui->tv_CockpitVoiceRoom1->resizeRowsToContents();
this->m_usersVoiceCom2->update(this->m_contextVoice->getCom2RoomUsers());
this->ui->tv_CockpitVoiceRoom2->resizeColumnsToContents();
this->ui->tv_CockpitVoiceRoom2->resizeRowsToContents();
@@ -129,7 +133,7 @@ void MainWindow::updateCockpitFromContext()
{
// no override
QString s = com1Connected ?
QString("*%1").arg(this->m_voiceRoomCom1.getVoiceRoomUrl()) :
QString("*%1").arg(rooms[0].getVoiceRoomUrl()) :
"";
this->ui->le_CockpitVoiceRoomCom1->setText(s);
}
@@ -139,7 +143,7 @@ void MainWindow::updateCockpitFromContext()
{
// no overrride
QString s = com2Connected ?
QString("*%1").arg(this->m_voiceRoomCom2.getVoiceRoomUrl()) :
QString("*%1").arg(rooms[0].getVoiceRoomUrl()) :
"";
this->ui->le_CockpitVoiceRoomCom2->setText(s);
}
@@ -256,28 +260,44 @@ void MainWindow::sendCockpitUpdates()
// Now with the new voice room data, really set the
// voice rooms in the context
//
if (changedCockpit && this->m_contextVoiceAvailable)
{
// set voice rooms here, this allows to use local/remote
// voice context
this->m_contextVoice->setComVoiceRooms(this->m_voiceRoomCom1, this->m_voiceRoomCom2);
}
if (changedCockpit) this->setAudioVoiceRooms();
}
/*
* Voice room override
*/
void MainWindow::voiceRoomOverride()
void MainWindow::setAudioVoiceRooms()
{
if (!this->m_contextVoiceAvailable) return;
if (!this->m_contextNetworkAvailable) return;
// make fields readonly if not overriding
this->ui->le_CockpitVoiceRoomCom1->setReadOnly(!this->ui->cb_CockpitVoiceRoom1Override->isChecked());
this->ui->le_CockpitVoiceRoomCom2->setReadOnly(!this->ui->cb_CockpitVoiceRoom2Override->isChecked());
CVoiceRoom room1;
CVoiceRoom room2;
CVoiceRoomList selectedVoiceRooms = this->m_contextNetwork->getSelectedVoiceRooms();
Q_ASSERT(selectedVoiceRooms.size() == 2);
if (this->ui->cb_CockpitVoiceRoom1Override->isChecked())
room1 = CVoiceRoom(this->ui->le_CockpitVoiceRoomCom1->text().trimmed());
else
{
this->m_voiceRoomCom1 = CVoiceRoom(this->ui->cb_CockpitVoiceRoom1Override->text().trimmed());
room1 = selectedVoiceRooms[0];
room1.setAudioPlaying(true);
this->ui->le_CockpitVoiceRoomCom1->setText(room1.getVoiceRoomUrl());
}
if (this->ui->cb_CockpitVoiceRoom2Override->isChecked())
room2 = CVoiceRoom(this->ui->le_CockpitVoiceRoomCom1->text().trimmed());
else
{
this->m_voiceRoomCom2 = CVoiceRoom(this->ui->cb_CockpitVoiceRoom2Override->text().trimmed());
room2 = selectedVoiceRooms[1];
room2.setAudioPlaying(true);
this->ui->le_CockpitVoiceRoomCom2->setText(room2.getVoiceRoomUrl());
}
// set the real voice rooms for audio output
this->m_contextVoice->setComVoiceRooms(room1, room2);
}

View File

@@ -255,10 +255,10 @@ void MainWindow::initGuiSignals()
this->connect(this->ui->ds_CockpitCom2Standby, &QDoubleSpinBox::editingFinished, this, &MainWindow::cockpitValuesChanged);
this->connect(this->ui->ds_CockpitTransponder, &QDoubleSpinBox::editingFinished, this, &MainWindow::cockpitValuesChanged);
this->connect(this->ui->cb_CockpitVoiceRoom1Override, &QCheckBox::clicked, this, &MainWindow::voiceRoomOverride);
this->connect(this->ui->cb_CockpitVoiceRoom2Override, &QCheckBox::clicked, this, &MainWindow::voiceRoomOverride);
this->connect(this->ui->le_CockpitVoiceRoomCom1, &QLineEdit::returnPressed, this, &MainWindow::voiceRoomOverride);
this->connect(this->ui->le_CockpitVoiceRoomCom2, &QLineEdit::returnPressed, this, &MainWindow::voiceRoomOverride);
this->connect(this->ui->cb_CockpitVoiceRoom1Override, &QCheckBox::clicked, this, &MainWindow::setAudioVoiceRooms);
this->connect(this->ui->cb_CockpitVoiceRoom2Override, &QCheckBox::clicked, this, &MainWindow::setAudioVoiceRooms);
this->connect(this->ui->le_CockpitVoiceRoomCom1, &QLineEdit::returnPressed, this, &MainWindow::setAudioVoiceRooms);
this->connect(this->ui->le_CockpitVoiceRoomCom2, &QLineEdit::returnPressed, this, &MainWindow::setAudioVoiceRooms);
this->connect(this->ui->pb_CockpitToggleCom1, &QPushButton::clicked, this, &MainWindow::cockpitValuesChanged);
this->connect(this->ui->pb_CockpitToggleCom2, &QPushButton::clicked, this, &MainWindow::cockpitValuesChanged);
this->connect(this->ui->pb_CockpitIdent, &QPushButton::clicked, this, &MainWindow::cockpitValuesChanged);

View File

@@ -142,6 +142,6 @@ void MainWindow::audioVolumes()
// update own aircraft, also set volume/mute in voice
this->m_ownAircraft.setCom1System(com1);
this->m_ownAircraft.setCom1System(com2);
this->m_contextVoice->setVolumes(this->m_ownAircraft.getCom1System(), this->m_ownAircraft.getCom1System());
this->m_ownAircraft.setCom2System(com2);
this->m_contextVoice->setVolumes(this->m_ownAircraft.getCom1System(), this->m_ownAircraft.getCom2System());
}