diff options
author | Xavi Garcia Mena <xavi.garcia.mena@canonical.com> | 2016-03-16 15:00:47 +0100 |
---|---|---|
committer | Xavi Garcia Mena <xavi.garcia.mena@canonical.com> | 2016-03-16 15:00:47 +0100 |
commit | 2269139ef937dfd92c39cef15b5385b0070c7883 (patch) | |
tree | 7e13ff0824fca11512ce9c0df6914eafda23c7bd | |
parent | e24fb23ad146190a7ba873abb620e2a6def0ad21 (diff) | |
download | ayatana-indicator-sound-2269139ef937dfd92c39cef15b5385b0070c7883.tar.gz ayatana-indicator-sound-2269139ef937dfd92c39cef15b5385b0070c7883.tar.bz2 ayatana-indicator-sound-2269139ef937dfd92c39cef15b5385b0070c7883.zip |
Changed code to get root icon, tests added
-rw-r--r-- | src/service.vala | 50 | ||||
-rw-r--r-- | tests/integration/indicator-sound-test-base.cpp | 43 | ||||
-rw-r--r-- | tests/integration/indicator-sound-test-base.h | 2 | ||||
-rw-r--r-- | tests/integration/test-indicator.cpp | 40 |
4 files changed, 94 insertions, 41 deletions
diff --git a/src/service.vala b/src/service.vala index bdc4d40..651ec73 100644 --- a/src/service.vala +++ b/src/service.vala @@ -290,48 +290,16 @@ public class IndicatorSound.Service: Object { private bool block_info_notifications = false; - private static unowned string get_volume_root_icon_by_volume (double volume, VolumeControl.ActiveOutput active_output) { - switch (active_output) { - case VolumeControl.ActiveOutput.SPEAKERS: - case VolumeControl.ActiveOutput.HEADPHONES: - case VolumeControl.ActiveOutput.BLUETOOTH_HEADPHONES: - case VolumeControl.ActiveOutput.BLUETOOTH_SPEAKER: - case VolumeControl.ActiveOutput.USB_SPEAKER: - case VolumeControl.ActiveOutput.USB_HEADPHONES: - case VolumeControl.ActiveOutput.HDMI_SPEAKER: - case VolumeControl.ActiveOutput.HDMI_HEADPHONES: - if (volume <= 0.0) - return "audio-volume-muted-panel"; - if (volume <= 0.3) - return "audio-volume-low-panel"; - if (volume <= 0.7) - return "audio-volume-medium-panel"; - return "audio-volume-high-panel"; - - default: - return ""; - } - } - private unowned string get_volume_root_icon (double volume, bool mute, VolumeControl.ActiveOutput active_output) { - switch (active_output) { - case VolumeControl.ActiveOutput.SPEAKERS: - case VolumeControl.ActiveOutput.HEADPHONES: - case VolumeControl.ActiveOutput.BLUETOOTH_HEADPHONES: - case VolumeControl.ActiveOutput.BLUETOOTH_SPEAKER: - case VolumeControl.ActiveOutput.USB_SPEAKER: - case VolumeControl.ActiveOutput.USB_HEADPHONES: - case VolumeControl.ActiveOutput.HDMI_SPEAKER: - case VolumeControl.ActiveOutput.HDMI_HEADPHONES: - if (mute || volume <= 0.0) - return this.mute_blocks_sound ? "audio-volume-muted-blocking-panel" : "audio-volume-muted-panel"; - if (this.accounts_service != null && this.accounts_service.silentMode) - return "audio-volume-muted-panel"; - return get_volume_root_icon_by_volume (volume, active_output); - - default: - return ""; - } + if (mute || volume <= 0.0) + return this.mute_blocks_sound ? "audio-volume-muted-blocking-panel" : "audio-volume-muted-panel"; + if (this.accounts_service != null && this.accounts_service.silentMode) + return "audio-volume-muted-panel"; + if (volume <= 0.3) + return "audio-volume-low-panel"; + if (volume <= 0.7) + return "audio-volume-medium-panel"; + return "audio-volume-high-panel"; } private void update_notification () { diff --git a/tests/integration/indicator-sound-test-base.cpp b/tests/integration/indicator-sound-test-base.cpp index 9225c1d..b8608f6 100644 --- a/tests/integration/indicator-sound-test-base.cpp +++ b/tests/integration/indicator-sound-test-base.cpp @@ -989,6 +989,49 @@ QVariantList IndicatorSoundTestBase::getActionValue(QString const &action) return QVariantList(); } +QStringList IndicatorSoundTestBase::getRootIconValue(bool *isValid) +{ + QString result = 0; + + QVariantList varList = getActionValue("root"); + if (isValid != nullptr) + { + *isValid = false; + } + if (varList.at(0).canConvert<QDBusArgument>()) + { + const QDBusArgument dbusArg = qvariant_cast<QDBusArgument>(varList.at(0)); + if (dbusArg.currentType() == QDBusArgument::MapType) + { + QVariantMap map; + dbusArg >> map; + QVariantMap::const_iterator iter = map.find("icon"); + if (iter != map.end()) + { + const QDBusArgument iconArg = qvariant_cast<QDBusArgument>((*iter)); + if (iconArg.currentType() == QDBusArgument::StructureType) + { + QString name; + QVariant iconValue; + iconArg.beginStructure(); + iconArg >> name; + iconArg >> iconValue; + if (name == "themed" && iconValue.type() == QVariant::StringList) + { + if (isValid != nullptr) + { + *isValid = true; + } + } + iconArg.endStructure(); + return iconValue.toStringList(); + } + } + } + } + return QStringList(); +} + qlonglong IndicatorSoundTestBase::getVolumeSyncValue(bool *isValid) { qlonglong result = 0; diff --git a/tests/integration/indicator-sound-test-base.h b/tests/integration/indicator-sound-test-base.h index 5b3545a..7942bd5 100644 --- a/tests/integration/indicator-sound-test-base.h +++ b/tests/integration/indicator-sound-test-base.h @@ -148,6 +148,8 @@ protected: qlonglong getVolumeSyncValue(bool *isValid = nullptr); + QStringList getRootIconValue(bool *isValid = nullptr); + float getVolumeValue(bool *isValid = nullptr); static QVariant waitPropertyChanged(QSignalSpy * signalSpy, QString property); diff --git a/tests/integration/test-indicator.cpp b/tests/integration/test-indicator.cpp index eff1516..fb62d4e 100644 --- a/tests/integration/test-indicator.cpp +++ b/tests/integration/test-indicator.cpp @@ -32,6 +32,46 @@ class TestIndicator: public IndicatorSoundTestBase { }; +TEST_F(TestIndicator, PhoneCheckRootIcon) +{ + double INITIAL_VOLUME = 0.0; + + ASSERT_NO_THROW(startAccountsService()); + EXPECT_TRUE(clearGSettingsPlayers()); + ASSERT_NO_THROW(startPulsePhone()); + + // initialize volumes in pulseaudio + EXPECT_TRUE(setStreamRestoreVolume("alert", INITIAL_VOLUME)); + + // start now the indicator, so it picks the new volumes + ASSERT_NO_THROW(startIndicator()); + + QStringList mutedIcon = {"audio-volume-muted-panel", "audio-volume-muted", "audio-volume", "audio"}; + EXPECT_EQ(getRootIconValue(), mutedIcon); + + QStringList lowVolumeIcon = {"audio-volume-low-panel", "audio-volume-low", "audio-volume", "audio"}; + for( double volume = 0.1; volume <= 0.3; volume+=0.1) + { + EXPECT_TRUE(setStreamRestoreVolume("alert", volume)); + EXPECT_EQ(getRootIconValue(), lowVolumeIcon); + } + EXPECT_TRUE(setStreamRestoreVolume("alert", 0.4)); + + QStringList mediumVolumeIcon = {"audio-volume-medium-panel", "audio-volume-medium", "audio-volume", "audio"}; + for( double volume = 0.4; volume <= 0.7; volume+=0.1) + { + EXPECT_TRUE(setStreamRestoreVolume("alert", volume)); + EXPECT_EQ(getRootIconValue(), mediumVolumeIcon); + } + + QStringList highVolumeIcon = {"audio-volume-high-panel", "audio-volume-high", "audio-volume", "audio"}; + for( double volume = 0.8; volume <= 1.0; volume+=0.1) + { + EXPECT_TRUE(setStreamRestoreVolume("alert", volume)); + EXPECT_EQ(getRootIconValue(), highVolumeIcon); + } +} + TEST_F(TestIndicator, PhoneTestExternalMicInOut) { double INITIAL_VOLUME = 0.0; |