@@ -6,8 +6,8 @@ Global NewMap Config$()
66
77; Procedures
88Declare ReadPreference(Map PrefMap$())
9- Declare SoundDevice(Device$, Type = -1 , Wait = #False)
10- Declare WritePreference(Device$)
9+ Declare SoundDevice(Command$, Device$, Param$ = "" , Wait = #False)
10+ Declare WritePreference(Key$, Device$)
1111
1212; Config
1313ReadPreference(Config$())
@@ -16,88 +16,124 @@ ReadPreference(Config$())
1616XIncludeFile "bevelbutton.pb"
1717XIncludeFile "audioswitcher-window.pbf"
1818
19- ; Font
19+ ; Fonts
2020gadgetFont = LoadFont(#PB_Any, Config$("font"), Val(Config$("fontSize")), #PB_Font_HighQuality)
2121font = FontID(gadgetFont)
22+ gadgetFont = LoadFont(#PB_Any, Config$("font"), Val(Config$("fontSizeHeadline")), #PB_Font_HighQuality)
23+ fontHeadline = FontID(gadgetFont)
2224
2325; Window
2426OpenWindowMain()
27+ ; Set text
28+ SetGadgetFont(HeadlineDevices, fontHeadline)
29+ SetGadgetText(HeadlineDevices, Config$("devicesHeadline"))
2530BevelButton::SetText(ButtonDevices1, Config$("devices1Text"), font)
2631BevelButton::SetText(ButtonDevices2, Config$("devices2Text"), font)
32+ SetGadgetFont(HeadlineVolumes, fontHeadline)
33+ SetGadgetText(HeadlineVolumes, Config$("volumesHeadline"))
34+ BevelButton::SetText(ButtonVolumes1, Config$(Config$("lastDevice") + "volumes1Text"), font)
35+ BevelButton::SetText(ButtonVolumes2, Config$(Config$("lastDevice") + "volumes2Text"), font)
2736
2837; Set current state
29- Select Config$("last ")
38+ Select Config$("lastDevice ")
3039 Case "devices1"
3140 BevelButton::Enable(ButtonDevices1)
3241 BevelButton::Disable(ButtonDevices2)
3342 Case "devices2"
3443 BevelButton::Enable(ButtonDevices2)
3544 BevelButton::Disable(ButtonDevices1)
3645EndSelect
46+ Select Config$("lastVolume")
47+ Case "volumes1"
48+ BevelButton::Enable(ButtonVolumes1)
49+ BevelButton::Disable(ButtonVolumes2)
50+ Case "volumes2"
51+ BevelButton::Enable(ButtonVolumes2)
52+ BevelButton::Disable(ButtonVolumes1)
53+ EndSelect
3754
3855; ----------------------------------------------------------------------------------------------------------------------------------
3956
4057; Loop
58+ HideWindow(WindowMain, #False)
4159Repeat
4260 Event = WaitWindowEvent()
4361
4462 Select Event
4563 Case #PB_Event_Gadget
64+
65+ ; Toogle Buttons
66+ LockWindowUpdate_(WindowID(WindowMain))
4667 Select EventGadget()
4768 Case BevelButton::GetGadgetID(ButtonDevices1)
48-
49- ; Toggle Buttons
69+ Config$("lastDevice") = "devices1"
5070 BevelButton::Enable(ButtonDevices1)
5171 BevelButton::Disable(ButtonDevices2)
52-
53- ; Switch Audio
54- SoundDevice(Config$("devices1Mic"))
55- SoundDevice(Config$("devices1Speaker"))
56- SoundDevice(Config$("devices1Mic"), 2)
57- SoundDevice(Config$("devices1Speaker"), 2, True)
58-
59- Config$("last") = "devices1"
72+ ; Set Volume-Buttons
73+ BevelButton::SetText(ButtonVolumes1, Config$(Config$("lastDevice") + "volumes1Text"))
74+ BevelButton::SetText(ButtonVolumes2, Config$(Config$("lastDevice") + "volumes2Text"))
6075 Case BevelButton::GetGadgetID(ButtonDevices2)
61-
62- ; Toggle Buttons
76+ Config$("lastDevice") = "devices2"
6377 BevelButton::Enable(ButtonDevices2)
6478 BevelButton::Disable(ButtonDevices1)
65-
79+ ; Set Volume-Buttons
80+ BevelButton::SetText(ButtonVolumes1, Config$(Config$("lastDevice") + "volumes1Text"))
81+ BevelButton::SetText(ButtonVolumes2, Config$(Config$("lastDevice") + "volumes2Text"))
82+ Case BevelButton::GetGadgetID(ButtonVolumes1)
83+ Config$("lastVolume") = "volumes1"
84+ BevelButton::Enable(ButtonVolumes1)
85+ BevelButton::Disable(ButtonVolumes2)
86+ Case BevelButton::GetGadgetID(ButtonVolumes2)
87+ Config$("lastVolume") = "volumes2"
88+ BevelButton::Enable(ButtonVolumes2)
89+ BevelButton::Disable(ButtonVolumes1)
90+ EndSelect
91+ LockWindowUpdate_(0)
92+ UpdateWindow_(WindowID(WindowMain))
93+
94+ ; Set Device/Volume
95+ Select EventGadget()
96+ Case BevelButton::GetGadgetID(ButtonDevices1), BevelButton::GetGadgetID(ButtonDevices2)
6697 ; Switch Audio
67- SoundDevice(Config$("devices2Mic"))
68- SoundDevice(Config$("devices2Speaker"))
69- SoundDevice(Config$("devices2Mic"), 2)
70- SoundDevice(Config$("devices2Speaker"), 2, True)
71-
72- Config$("last") = "devices2"
98+ SoundDevice("SetDefault", Config$(Config$("lastDevice") + "Mic"))
99+ SoundDevice("SetDefault", Config$(Config$("lastDevice") + "Speaker"))
100+ SoundDevice("SetDefault", Config$(Config$("lastDevice") + "Mic"), "2")
101+ SoundDevice("SetDefault", Config$(Config$("lastDevice") + "Speaker"), "2")
102+
103+ ; Set Volume & wait
104+ SoundDevice("SetVolume", Config$(Config$("lastDevice") + "Speaker"), Config$(Config$("lastDevice") + Config$("lastVolume") + "Value"), True)
105+ Case BevelButton::GetGadgetID(ButtonVolumes1), BevelButton::GetGadgetID(ButtonVolumes2)
106+ ; Set Volume
107+ SoundDevice("SetVolume", Config$(Config$("lastDevice") + "Speaker"), Config$(Config$("lastDevice") + Config$("lastVolume") + "Value"), True)
73108 EndSelect
109+
74110 EndSelect
75111Until Event = #PB_Event_CloseWindow
112+ HideWindow(WindowMain, #True)
76113
77114; Write last state
78- WritePreference(Config$("last"))
115+ WritePreference("lastDevice", Config$("lastDevice"))
116+ WritePreference("lastVolume", Config$("lastVolume"))
79117
80118; Free Memory
81119BevelButton::Delete(ButtonDevices2)
82120BevelButton::Delete(ButtonDevices1)
121+ BevelButton::Delete(ButtonVolumes2)
122+ BevelButton::Delete(ButtonVolumes1)
83123
84124End
85125
86126; ----------------------------------------------------------------------------------------------------------------------------------
87127
88- Procedure SoundDevice(Device$, Type = -1, Wait = #False)
89- param$ = "/SetDefault " + Chr(34) + Device$ + Chr(34)
90- ; Add type if available
91- If Type <> -1
92- param$ = param$ + " " + Str(Type)
93- EndIf
128+ Procedure SoundDevice(Command$, Device$, Param$ = "", Wait = #False)
129+ allParams$ = "/" + Command$ + " " + Chr(34) + Device$ + Chr(34) + " " + Param$
94130 ; Flags
95131 Flags = 0
96132 If Wait = True
97133 Flags = #PB_Program_Wait
98134 EndIf
99135 ; Run SoundVolumeView
100- RunProgram("SoundVolumeView/SoundVolumeView", param $, "", Flags)
136+ RunProgram("SoundVolumeView/SoundVolumeView", allParams $, "", Flags)
101137EndProcedure
102138
103139Procedure ReadPreference(Map PrefMap$())
@@ -122,7 +158,7 @@ Procedure ReadPreference(Map PrefMap$())
122158 ClosePreferences()
123159EndProcedure
124160
125- Procedure WritePreference(Device$)
161+ Procedure WritePreference(Key$, Device$)
126162 ; Open Preferences
127163 FileIni.s = GetFilePart(ProgramFilename(),#PB_FileSystem_NoExtension) + ".ini"
128164 If (OpenPreferences(FileIni) = 0)
@@ -132,7 +168,7 @@ Procedure WritePreference(Device$)
132168
133169 ; Write
134170 PreferenceGroup("base")
135- WritePreferenceString("last" , Device$)
171+ WritePreferenceString(Key$ , Device$)
136172
137173 ; Close
138174 ClosePreferences()
0 commit comments