package Ġcom . g vk orea . g vs 1 0 0 0 _ dsp . fragment . volume . presenter Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġandroid . widget . Seek Bar Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . g vk orea . g vs 1 0 0 0 _ dsp . MainActivity . Companion . mute Arrays Ċ import Ġcom . g vk orea . g vs 1 0 0 0 _ dsp . MainActivity . Companion . sp k List Ċ import Ġcom . g vk orea . g vs 1 0 0 0 _ dsp . MainActivity . Companion . volume Arrays Ċ import Ġcom . g vk orea . g vs 1 0 0 0 _ dsp . R Ċ import Ġcom . g vk orea . g vs 1 0 0 0 _ dsp . fragment . volume . Volume Fragment Ċ import Ġcom . g vk orea . g vs 1 0 0 0 _ dsp . util . DSP Message Ċ import Ġcom . g vk orea . g vs 1 0 0 0 _ dsp . util . GV Packet Ċ import Ġcom . g vk orea . g vs 1 0 0 0 _ dsp . util . Speaker Info Ċ import Ġcom . h 6 ah 4 i . android . widget . vert ic alse ek bar . Vertical Seek Bar Ċ import Ġcom . man o jb had ane . Q Button Ċ import Ġkotlinx . android . synt hetic . main . fragment _ volume .* Ċ import Ġjava . lang . Exception Ċ import Ġjava . net . Socket Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠVolume Presenter ( val Ġview : ĠVolume Fragment , Ġval Ġhandler : ĠHandler ) Ġ{ ĊĊĠĠĠ Ġval Ġpacket Ġ= ĠG V Packet ( view ) ĊĠĠĠ Ġvar Ġis Mute Array Ġ= ĠBoolean Array ( sp k List . size ) ĊĠĠĠ Ġval ĠSW ITCH _ ON Ġ= Ġ 1 ĊĠĠĠ Ġval ĠSW ITCH _ OFF Ġ= Ġ 0 ĊĠĠĠ Ġval ĠKEY _ INPUT _ GAIN Ġ= Ġ" input _ gain " ĊĠĠĠ Ġval ĠKEY _ INPUT _ M UTE Ġ= Ġ" input _ mute " ĊĠĠĠ Ġvar Ġis All Mute Ġ= Ġtrue ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠArrays . fill ( is Mute Array , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvolume Control ( ĊĠĠĠĠĠĠĠ Ġspeaker Info : ĠS peaker Info , ĊĠĠĠĠĠĠĠ Ġprogress : ĠInt , ĊĠĠĠĠĠĠĠ ĠtextView : ĠTextView ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġchange Volume Value ( progress , ĠtextView ) ĊĠĠĠĠĠĠĠ Ġsend Volume Control ( speaker Info . socket , Ġspeaker Info . channel , Ġprogress ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvolume Up Control ( speaker Info : ĠS peaker Info , Ġseek Bar : ĠVertical Seek Bar , ĠtextView : ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcur Volume Ġ= Ġseek Bar . progress ĊĠĠĠĠĠĠĠ Ġif Ġ( cur Volume Ġ< Ġ 5 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcur Volume Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseek Bar . progress Ġ= Ġcur Volume ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Volume Value ( cur Volume , ĠtextView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Volume Control ( speaker Info . socket , Ġspeaker Info . channel , Ġcur Volume ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvolume Down Control ( speaker Info : ĠS peaker Info , Ġseek Bar : ĠVertical Seek Bar , ĠtextView : ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcur Volume Ġ= Ġseek Bar . progress ĊĠĠĠĠĠĠĠ Ġif Ġ( cur Volume Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcur Volume Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseek Bar . progress Ġ= Ġcur Volume ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Volume Value ( cur Volume , ĠtextView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Volume Control ( speaker Info . socket , Ġspeaker Info . channel , Ġcur Volume ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Volume Control ( ĊĠĠĠĠĠĠĠ Ġsocket : ĠSocket ?, ĊĠĠĠĠĠĠĠ Ġchannel : ĠChar , ĊĠĠĠĠĠĠĠ Ġprogress : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgain Ġ= Ġ( progress Ġ- Ġ 4 0 ). toFloat () ĊĠĠĠĠĠĠĠ Ġpacket . Send Packet _ Input Gain ( socket , Ġchannel , Ġgain ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmain Button Disable () Ġ{ ĊĠĠĠĠĠĠĠ Ġmsg ( view . context !!. getString ( R . string . waiting )) ĊĠĠĠĠĠĠĠ Ġval Ġm Ġ= ĠMessage () ĊĠĠĠĠĠĠĠ Ġm . what Ġ= ĠD SP Message . MSG _ UI _ UN TO UCH . value ĊĠĠĠĠĠĠĠ Ġhandler . sendMessage ( m ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmsg ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( view . context , Ġmsg , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmain Button Enable () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Ġ= ĠMessage () ĊĠĠĠĠĠĠĠ Ġm . what Ġ= ĠD SP Message . MSG _ UI _ TO UCH . value ĊĠĠĠĠĠĠĠ Ġhandler . sendMessage ( m ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Volume Value ( progress : ĠInt , ĠtextView : ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ"${ progress Ġ- Ġ 4 0 } ĠdB " ĊĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmute ( index : ĠInt , Ġspeaker Info : ĠS peaker Info , Ġq Button : ĠQ Button ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif (! is Mute Array [ index ]){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Button ( true , Ġq Button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Mute Array [ index ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . Send Packet _ Input Mute ( speaker Info . socket , Ġspeaker Info . channel , ĠSW ITCH _ ON ) ĊĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Button ( false , Ġq Button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Mute Array [ index ] Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . Send Packet _ Input Mute ( speaker Info . socket , Ġspeaker Info . channel , ĠSW ITCH _ OFF ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Button ( isSelected : ĠBoolean , Ġq Button : ĠQ Button ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq Button ?. set BackgroundColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . context !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . color . holo _ red _ light ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq Button ?. set BackgroundColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . context !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . color . dark er _ gray ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġfun Ġload Volume () Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( sp k List . size Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Button Disable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvolume Arrays Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmute Arrays Ġ= ĠArrayList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 Ġuntil Ġsp k List . size ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . Send Packet _ Status Request _ general ( packet . protocol . CMD _ INPUT _ GAIN , Ġsp k List [ i ]. socket , Ġsp k List [ i ]. channel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . Send Packet _ Status Request _ general ( packet . protocol . CMD _ INPUT _ M UTE , Ġsp k List [ i ]. socket , Ġsp k List [ i ]. channel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠException ){} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Volume UI ( volume Arrays ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Mute UI ( mute Arrays ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Button Enable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 1 0 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Volume UI ( volume Arrays : ĠArrayList < Float > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠFIRST _ ID Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval ĠLAST _ ID Ġ= Ġvolume Arrays ?. size !! ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin ĠFIRST _ ID .. LAST _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseek Bar Ġ= Ġview . activity ?. findViewById < Seek Bar >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . activity ?. resources ?. getIdentifier ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sb _ sp k $ i ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . activity ?. packageName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseek Bar ?. progress Ġ= Ġchange Gain To Progress ( volume Arrays [ i - 1 ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Mute UI ( mute Array : ĠArrayList < Boolean > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠFIRST _ ID Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval ĠLAST _ ID Ġ= Ġmute Array ?. size !! ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin ĠFIRST _ ID .. LAST _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbutton Ġ= Ġview . activity ?. findViewById < Q Button >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . activity ?. resources ?. getIdentifier ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" btn _ sp k ${ i }_ mute ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . activity ?. packageName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Mute Button ( i - 1 , Ġmute Array [ i - 1 ], Ġbutton ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Mute Button ( no : ĠInt , Ġis Mute : ĠBoolean , Ġbutton : ĠQ Button ? ){ ĊĠĠĠĠĠĠĠ Ġchange Button ( is Mute , Ġbutton ) ĊĠĠĠĠĠĠĠ Ġis Mute Array [ no ] Ġ= Ġis Mute ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġchange Gain To Progress ( gain : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( gain Ġ+ Ġ 4 0 ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvolume Reset () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠFIRST _ ID Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval ĠLAST _ ID Ġ= Ġsp k List . size ĊĠĠĠĠĠĠĠ Ġval ĠRESET _ VOLUME Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin ĠFIRST _ ID .. LAST _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseek Bar Ġ= Ġview . activity ?. findViewById < Seek Bar >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . activity ?. resources ?. getIdentifier ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sb _ sp k $ i ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . activity ?. packageName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseek Bar ?. progress Ġ= Ġchange Gain To Progress ( RESET _ VOLUME ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmute All () Ġ{ ĊĠĠĠĠĠĠĠ Ġmute All Button Control () ĊĠĠĠĠĠĠĠ Ġval ĠFIRST _ ID Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval ĠLAST _ ID Ġ= Ġsp k List . size ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin ĠFIRST _ ID .. LAST _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbutton Ġ= Ġview . activity ?. findViewById < Q Button >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . activity ?. resources ?. getIdentifier ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" btn _ sp k ${ i }_ mute ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . activity ?. packageName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmute ( i - 1 , Ġsp k List [ i - 1 ], Ġbutton !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmute All Button Control () Ġ{ ĊĠĠĠĠĠĠĠ Ġif (! is All Mute ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Mute All Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis All Mute Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Mute All Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis All Mute Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Mute All Button () Ġ{ ĊĠĠĠĠĠĠĠ ĠArrays . fill ( is Mute Array , Ġ! is All Mute ) ĊĠĠĠĠĠĠĠ Ġchange Button ( is All Mute , Ġview . btn _ all Mute ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Preset () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Id FromName ( sp k No : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ: ĠInt ĊĠĠĠĠĠĠĠ Ġif ( sp k No . contains (" Main ")){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġsp k No . substring ( 4 , 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġsp k No . substring ( 3 , 4 ). toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġid ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Preset () Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠ Ġ} ĊĊ Ċ }