aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSalanto <62221668+Salanto@users.noreply.github.com>2022-07-30 18:42:55 +0200
committerGitHub <noreply@github.com>2022-07-30 18:42:55 +0200
commit4fa86c0174961be22e1996a472e908b36656083d (patch)
tree98f5adbfeb7a318482c69776527575284d3ef1b3
parent7b88d4be954b415e069ee0d612e4df3793c61756 (diff)
Add option to disable music streaming. (#829)
* Add option to disable streamintg This one gets a unique message to prevent people forgetting they disable it and the wondering why streaming broke. * Fix code order * Fixes the music channel still playing audio when a new stream was blocked. * Update tooltip * Update tooltip to reflect the current way the feature works.
-rw-r--r--include/aoapplication.h3
-rw-r--r--include/aooptionsdialog.h2
-rw-r--r--src/aomusicplayer.cpp6
-rw-r--r--src/aooptionsdialog.cpp12
-rw-r--r--src/text_file_functions.cpp5
5 files changed, 28 insertions, 0 deletions
diff --git a/include/aoapplication.h b/include/aoapplication.h
index 21c04b82..f1ba9d7f 100644
--- a/include/aoapplication.h
+++ b/include/aoapplication.h
@@ -194,6 +194,9 @@ public:
// Returns true if stop music on objection is enabled in the config.ini
bool objection_stop_music();
+ // Returns true if streaming is enabled in the config.ini
+ bool is_streaming_disabled();
+
// Returns the value of default_music in config.ini
int get_default_music();
diff --git a/include/aooptionsdialog.h b/include/aooptionsdialog.h
index d78f8e9a..daf1b354 100644
--- a/include/aooptionsdialog.h
+++ b/include/aooptionsdialog.h
@@ -145,6 +145,8 @@ private:
QCheckBox *ui_loopsfx_cb;
QLabel *ui_objectmusic_lbl;
QCheckBox *ui_objectmusic_cb;
+ QLabel *ui_disablestreams_lbl;
+ QCheckBox *ui_disablestreams_cb;
QDialogButtonBox *ui_settings_buttons;
QWidget *ui_casing_tab;
diff --git a/src/aomusicplayer.cpp b/src/aomusicplayer.cpp
index 2cac91dd..564d9d6a 100644
--- a/src/aomusicplayer.cpp
+++ b/src/aomusicplayer.cpp
@@ -29,6 +29,12 @@ QString AOMusicPlayer::play(QString p_song, int channel, bool loop,
QString f_path = p_song;
DWORD newstream;
if (f_path.startsWith("http")) {
+
+ if (ao_app->is_streaming_disabled()) {
+ BASS_ChannelStop(m_stream_list[channel]);
+ return QObject::tr("[MISSING] Streaming disabled.");
+ }
+
if (f_path.endsWith(".opus"))
newstream = BASS_OPUS_StreamCreateURL(f_path.toStdString().c_str(), 0, streaming_flags, nullptr, 0);
else if (f_path.endsWith(".mid"))
diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp
index a17a5e8d..679a674d 100644
--- a/src/aooptionsdialog.cpp
+++ b/src/aooptionsdialog.cpp
@@ -697,6 +697,16 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app)
ui_audio_layout->setWidget(row, QFormLayout::FieldRole, ui_objectmusic_cb);
+ row += 1;
+ ui_disablestreams_lbl = new QLabel(ui_audio_widget);
+ ui_disablestreams_lbl->setText(tr("Disable Music Streaming:"));
+ ui_disablestreams_lbl->setToolTip(
+ tr("If true, AO2 will not play any streamed audio and show that streaming is disabled."));
+ ui_audio_layout->setWidget(row, QFormLayout::LabelRole, ui_disablestreams_lbl);
+
+ ui_disablestreams_cb = new QCheckBox(ui_audio_widget);
+ ui_audio_layout->setWidget(row, QFormLayout::FieldRole, ui_disablestreams_cb);
+
// The casing tab!
ui_casing_tab = new QWidget(this);
ui_settings_tabs->addTab(ui_casing_tab, tr("Casing"));
@@ -1217,6 +1227,7 @@ void AOOptionsDialog::update_values() {
ui_blank_blips_cb->setChecked(ao_app->get_blank_blip());
ui_loopsfx_cb->setChecked(ao_app->get_looping_sfx());
ui_objectmusic_cb->setChecked(ao_app->objection_stop_music());
+ ui_disablestreams_cb->setChecked(ao_app->is_streaming_disabled());
ui_casing_enabled_cb->setChecked(ao_app->get_casing_enabled());
ui_casing_def_cb->setChecked(ao_app->get_casing_defence_enabled());
ui_casing_pro_cb->setChecked(ao_app->get_casing_prosecution_enabled());
@@ -1323,6 +1334,7 @@ void AOOptionsDialog::save_pressed()
configini->setValue("blank_blip", ui_blank_blips_cb->isChecked());
configini->setValue("looping_sfx", ui_loopsfx_cb->isChecked());
configini->setValue("objection_stop_music", ui_objectmusic_cb->isChecked());
+ configini->setValue("streaming_disabled", ui_disablestreams_cb->isChecked());
configini->setValue("casing_enabled", ui_casing_enabled_cb->isChecked());
configini->setValue("casing_defence_enabled", ui_casing_def_cb->isChecked());
diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp
index 74a8ab46..c7cf8d0c 100644
--- a/src/text_file_functions.cpp
+++ b/src/text_file_functions.cpp
@@ -1037,6 +1037,11 @@ bool AOApplication::objection_stop_music()
return result.startsWith("true");
}
+bool AOApplication::is_streaming_disabled()
+{
+ return configini->value("streaming_disabled", false).toBool();
+}
+
bool AOApplication::is_instant_objection_enabled()
{
QString result = configini->value("instant_objection", "true").value<QString>();