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::IContextVoice *m_contextVoice;
BlackCore::IContextSettings *m_contextSettings; BlackCore::IContextSettings *m_contextSettings;
BlackMisc::Aviation::CAircraft m_ownAircraft; /*!< own aircraft's state */ 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_timerUpdateAtcStationsOnline; /*!< timer for update of stations */
QTimer *m_timerUpdateAircraftsInRange; /*!< timer for update of aircrafts */ QTimer *m_timerUpdateAircraftsInRange; /*!< timer for update of aircrafts */
QTimer *m_timerUpdateUsers; /*!< timer dor update of users */ QTimer *m_timerUpdateUsers; /*!< timer dor update of users */
@@ -450,9 +448,10 @@ private slots:
void resetTransponderMode(); 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 * \brief Audio volume handling and mute

View File

@@ -32,32 +32,17 @@ bool MainWindow::reloadOwnAircraft()
{ {
if (!this->isContextNetworkAvailableCheck()) return false; if (!this->isContextNetworkAvailableCheck()) return false;
if (this->isCockpitUpdatePending()) return false; if (this->isCockpitUpdatePending()) return false;
// check for changed aircraft
bool changed = false;
CAircraft loadedAircraft = this->m_contextNetwork->getOwnAircraft(); CAircraft loadedAircraft = this->m_contextNetwork->getOwnAircraft();
if (loadedAircraft != this->m_ownAircraft)
// changed aircraft
if (loadedAircraft == this->m_ownAircraft) return false;
this->m_ownAircraft = loadedAircraft;
// update voice rooms
if (this->m_contextVoiceAvailable)
{ {
CVoiceRoomList selectedRooms = this->m_contextNetwork->getSelectedVoiceRooms(); this->m_ownAircraft = loadedAircraft;
if (selectedRooms.size() == 2) this->updateCockpitFromContext();
{ changed = true;
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];
}
} }
return changed;
//
this->updateCockpitFromContext();
// something has changed
return true;
} }
/* /*

View File

@@ -34,6 +34,15 @@ void MainWindow::reloadAtcStationsOnline()
this->m_atcListOnline->update(this->m_contextNetwork->getAtcStationsOnline()); this->m_atcListOnline->update(this->m_contextNetwork->getAtcStationsOnline());
this->ui->tv_AtcStationsOnline->resizeColumnsToContents(); this->ui->tv_AtcStationsOnline->resizeColumnsToContents();
this->ui->tv_AtcStationsOnline->resizeRowsToContents(); 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) if (this->m_contextVoiceAvailable)
{ {
bool com1Connected = this->m_voiceRoomCom1.isConnected(); // get all rooms, it is important to get the rooms from voice context here
bool com2Connected = this->m_voiceRoomCom2.isConnected(); // 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_usersVoiceCom1);
Q_ASSERT(this->m_usersVoiceCom2); 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->m_usersVoiceCom1->update(this->m_contextVoice->getCom1RoomUsers());
this->ui->tv_CockpitVoiceRoom1->resizeColumnsToContents(); this->ui->tv_CockpitVoiceRoom1->resizeColumnsToContents();
this->ui->tv_CockpitVoiceRoom1->resizeRowsToContents(); this->ui->tv_CockpitVoiceRoom1->resizeRowsToContents();
this->m_usersVoiceCom2->update(this->m_contextVoice->getCom2RoomUsers()); this->m_usersVoiceCom2->update(this->m_contextVoice->getCom2RoomUsers());
this->ui->tv_CockpitVoiceRoom2->resizeColumnsToContents(); this->ui->tv_CockpitVoiceRoom2->resizeColumnsToContents();
this->ui->tv_CockpitVoiceRoom2->resizeRowsToContents(); this->ui->tv_CockpitVoiceRoom2->resizeRowsToContents();
@@ -129,7 +133,7 @@ void MainWindow::updateCockpitFromContext()
{ {
// no override // no override
QString s = com1Connected ? QString s = com1Connected ?
QString("*%1").arg(this->m_voiceRoomCom1.getVoiceRoomUrl()) : QString("*%1").arg(rooms[0].getVoiceRoomUrl()) :
""; "";
this->ui->le_CockpitVoiceRoomCom1->setText(s); this->ui->le_CockpitVoiceRoomCom1->setText(s);
} }
@@ -139,7 +143,7 @@ void MainWindow::updateCockpitFromContext()
{ {
// no overrride // no overrride
QString s = com2Connected ? QString s = com2Connected ?
QString("*%1").arg(this->m_voiceRoomCom2.getVoiceRoomUrl()) : QString("*%1").arg(rooms[0].getVoiceRoomUrl()) :
""; "";
this->ui->le_CockpitVoiceRoomCom2->setText(s); this->ui->le_CockpitVoiceRoomCom2->setText(s);
} }
@@ -256,28 +260,44 @@ void MainWindow::sendCockpitUpdates()
// Now with the new voice room data, really set the // Now with the new voice room data, really set the
// voice rooms in the context // voice rooms in the context
// //
if (changedCockpit && this->m_contextVoiceAvailable) if (changedCockpit) this->setAudioVoiceRooms();
{
// set voice rooms here, this allows to use local/remote
// voice context
this->m_contextVoice->setComVoiceRooms(this->m_voiceRoomCom1, this->m_voiceRoomCom2);
}
} }
/* /*
* Voice room override * 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_CockpitVoiceRoomCom1->setReadOnly(!this->ui->cb_CockpitVoiceRoom1Override->isChecked());
this->ui->le_CockpitVoiceRoomCom2->setReadOnly(!this->ui->cb_CockpitVoiceRoom2Override->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()) 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()) 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_CockpitCom2Standby, &QDoubleSpinBox::editingFinished, this, &MainWindow::cockpitValuesChanged);
this->connect(this->ui->ds_CockpitTransponder, &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_CockpitVoiceRoom1Override, &QCheckBox::clicked, this, &MainWindow::setAudioVoiceRooms);
this->connect(this->ui->cb_CockpitVoiceRoom2Override, &QCheckBox::clicked, this, &MainWindow::voiceRoomOverride); this->connect(this->ui->cb_CockpitVoiceRoom2Override, &QCheckBox::clicked, this, &MainWindow::setAudioVoiceRooms);
this->connect(this->ui->le_CockpitVoiceRoomCom1, &QLineEdit::returnPressed, this, &MainWindow::voiceRoomOverride); this->connect(this->ui->le_CockpitVoiceRoomCom1, &QLineEdit::returnPressed, this, &MainWindow::setAudioVoiceRooms);
this->connect(this->ui->le_CockpitVoiceRoomCom2, &QLineEdit::returnPressed, this, &MainWindow::voiceRoomOverride); 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_CockpitToggleCom1, &QPushButton::clicked, this, &MainWindow::cockpitValuesChanged);
this->connect(this->ui->pb_CockpitToggleCom2, &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); 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 // update own aircraft, also set volume/mute in voice
this->m_ownAircraft.setCom1System(com1); this->m_ownAircraft.setCom1System(com1);
this->m_ownAircraft.setCom1System(com2); this->m_ownAircraft.setCom2System(com2);
this->m_contextVoice->setVolumes(this->m_ownAircraft.getCom1System(), this->m_ownAircraft.getCom1System()); this->m_contextVoice->setVolumes(this->m_ownAircraft.getCom1System(), this->m_ownAircraft.getCom2System());
} }