[X2Go-Commits] [mteleplayer] 01/01: Add audio volume scaler to GUI and volume control support functions.

git-admin at x2go.org git-admin at x2go.org
Tue Jun 17 20:49:14 CEST 2014


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository mteleplayer.

commit 4abe5fee409097d3d66ad4ff3cb51d54ac2be484
Author: gznget <opensource at gznianguan.com>
Date:   Tue Jun 17 20:41:15 2014 +0200

    Add audio volume scaler to GUI and volume control support functions.
---
 .../mteleplayer/bin/mteleplayer_clientside         |   10 +-
 serverside/bin/mteleplayer                         |  103 ++++++++++++++++++--
 2 files changed, 101 insertions(+), 12 deletions(-)

diff --git a/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside b/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside
index bdf7cd6..b651400 100755
--- a/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside
+++ b/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside
@@ -108,7 +108,7 @@ $sstatusi{'runState'} = "R";
 # The Main Gtk2 event loop 
 my %mpState;$mpState{'MediaERROR'} = 0;$mpState{'FakeFS'} = 0;$mpState{'mediaPos'} = 0; $mpState{'mediaLength'} = 3;$mpState{'paused'} = 0;
 $mpState{'mute'} = 0;
-$mpState{'volume'} = 75;# Change this to get from server side!
+$mpState{'volume'} = 0;# Change this to get from server side!
 $mpState{'osd'} = 0; 
 $mpState{'LASTINPUT'} = "";$mpState{'prevSecond'} = 0;
 ###########################33
@@ -243,7 +243,13 @@ sub handleTheLocalSocket {
           } elsif ($1 =~ /^TERMINATE/) {
 	     doSelfTerminate();
           }
-
+          if ($1 =~ /^SET\|AUDIOVOLUME\|(\d{1,3})\|.*/) {
+            my $newVol = $1;
+            if (($newVol >= 0) and ($newVol <= 100)) {
+              $mpState{'volume'}  = $newVol;
+              mpCMD("volume $mpState{'volume'} 1");
+            }
+          }
           if ($1 =~ /^XPOSTAT\|(\d*)\|(\d*)\|(\d*)\|(\d*)\|(\d)\|/) {
             $sstatusi{'xposX'} = $1;
             $sstatusi{'xposY'} = $2;
diff --git a/serverside/bin/mteleplayer b/serverside/bin/mteleplayer
index d95cf5b..f39406e 100755
--- a/serverside/bin/mteleplayer
+++ b/serverside/bin/mteleplayer
@@ -70,6 +70,7 @@ push @openMedia, $tmpOnlyOneFile;
 my $selfSID = sanitizer("tekiappsid","uno");# At some point change this to where we can have multiple instances running or just the UNO. (see roadmap notes)			
 our %GTKS;
 our %TnW;
+our %PRESISTENT;$PRESISTENT{'AudioVolume'} = 50;
 our %sstatusi;$sstatusi{'sockState'} = 0;$sstatusi{'sockRetryCnt'} = 0;$sstatusi{'runState'} = "I";$sstatusi{'X2GoResized'} = 0;
 
 $sstatusi{'lastCOMtime'} = (time()+2);$sstatusi{'remoteInitCnt'} = 0;
@@ -231,7 +232,7 @@ sub initMainWindow {
   $GTKS{'CTRLS'}{'BtnPlayPauseEBOX'}{'PauseGFX'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file ("$theSHAREDIR/gfx/default/pause_btn_32.png"));
   $GTKS{'CTRLS'}{'BtnPlayPauseEBOX'}{'PauseGFX'}->set_size_request(32,32); 
   $GTKS{'CTRLS'}{'BtnPlayPauseEBOX'}->signal_connect('button-release-event' => \&eventBtnClickPlayPause);
-#  $GTKS{'CTRLS'}{'BtnPlayPauseEBOX'}->add($GTKS{'CTRLS'}{'BtnPlayPauseEBOX'}{'PlayGFX'});
+  $GTKS{'CTRLS'}{'BtnPlayPauseEBOX'}->add($GTKS{'CTRLS'}{'BtnPlayPauseEBOX'}{'PlayGFX'});
   stateChangePAUSED(0);# Use this to initiate the play/pause button gfx...
 
   $GTKS{'CTRLS'}{'BtnPreviousEBOX'} = Gtk2::EventBox->new;$GTKS{'CTRLS'}{'BtnPreviousEBOX'}->set_size_request(32,32); 
@@ -242,17 +243,45 @@ sub initMainWindow {
   $GTKS{'CTRLS'}{'BtnNextEBOX'}{'GFX'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file ("$theSHAREDIR/gfx/default/nexttr_btn_32.png"));
   $GTKS{'CTRLS'}{'BtnNextEBOX'}{'GFX'}->set_size_request(32,32); 
   $GTKS{'CTRLS'}{'BtnNextEBOX'}->add($GTKS{'CTRLS'}{'BtnNextEBOX'}{'GFX'});
-
-  my $MediaAreaButtonsHBox = Gtk2::HBox->new(FALSE, 0);
-  $MediaAreaButtonsHBox->pack_start($GTKS{'CTRLS'}->{'BtnPreviousEBOX'}  ,FALSE, FALSE, 3);
-  $MediaAreaButtonsHBox->pack_start($GTKS{'CTRLS'}->{'BtnPlayPauseEBOX'}  ,FALSE, FALSE, 3);
-  $MediaAreaButtonsHBox->pack_start($GTKS{'CTRLS'}->{'BtnNextEBOX'}  ,FALSE, FALSE, 3);
-#  $MediaAreaButtonsHBox->show_all;
+  #############################################################################
+  # Volume Slider stuff...
+    my $theVolAdj = Gtk2::Adjustment->new(0, 0, 101, 1.0, 1.0, 1.0);
+    $theVolAdj->signal_connect(value_changed => \&changeAudioVolume, $theVolAdj);
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'EBOX'} = Gtk2::EventBox->new;
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'EBOX'}->set_size_request(128,32);
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'} = Gtk2::HScale->new($theVolAdj);
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'}->set_update_policy('continuous');
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'}->set_digits(0);
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'}->set_draw_value(FALSE);
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'}->set_value($PRESISTENT{'AudioVolume'});  
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'EBOX'}->add($GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'});
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'EBOX'}->show;
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'EBOX'} = Gtk2::EventBox->new;
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'EBOX'}->set_size_request(32,32); 
+    setVolumeICON($PRESISTENT{'AudioVolume'},"initGFX");
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'MainHBOX'} = Gtk2::HBox->new(FALSE, 0);
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'MainHBOX'}->pack_start($GTKS{'CTRLS'}{'VolumeScaler'}{'EBOX'}, FALSE, FALSE, 3);
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'MainHBOX'}->pack_start($GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'EBOX'}, FALSE, FALSE, 3);
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'MainHBOX'}->show_all;
+  # Volume Slider stuff.
+  #############################################################################
+  $GTKS{'CTRLS'}{'MediaButtons'}{'MainHBOX'} = Gtk2::HBox->new(FALSE, 0);
+  $GTKS{'CTRLS'}{'MediaButtons'}{'MainHBOX'}->pack_start($GTKS{'CTRLS'}->{'BtnPreviousEBOX'}  ,FALSE, FALSE, 3);
+  $GTKS{'CTRLS'}{'MediaButtons'}{'MainHBOX'}->pack_start($GTKS{'CTRLS'}->{'BtnPlayPauseEBOX'}  ,FALSE, FALSE, 3);
+  $GTKS{'CTRLS'}{'MediaButtons'}{'MainHBOX'}->pack_start($GTKS{'CTRLS'}->{'BtnNextEBOX'}  ,FALSE, FALSE, 3);
+
+
+
+
+  $GTKS{'CTRLS'}{'CONTROLSTRIP'}{'MainHBOX'} = Gtk2::HBox->new(FALSE, 0);
+  $GTKS{'CTRLS'}{'CONTROLSTRIP'}{'MainHBOX'}->pack_start($GTKS{'CTRLS'}{'MediaButtons'}{'MainHBOX'}  ,FALSE, FALSE, 3);
+  $GTKS{'CTRLS'}{'CONTROLSTRIP'}{'MainHBOX'}->pack_end($GTKS{'CTRLS'}{'VolumeScaler'}{'MainHBOX'} ,FALSE, FALSE, 3);
+#  $GTKS{'CTRLS'}{'CONTROLSTRIP'}{'MainHBOX'}->show_all;
 
   $GTKS{'MainVBox'}->pack_start($mTPMainMediaEBOX,TRUE, TRUE, 0);
   $GTKS{'MainVBox'}->pack_start($GTKS{'CTRLS'}{'MAIN'}, FALSE, FALSE, 0);
   $GTKS{'CTRLS'}{'MainVBox'}->pack_start($MTime_HBox, FALSE, FALSE, 0);
-  $GTKS{'CTRLS'}{'MainVBox'}->pack_start($MediaAreaButtonsHBox,FALSE, FALSE, 2);
+  $GTKS{'CTRLS'}{'MainVBox'}->pack_start($GTKS{'CTRLS'}{'CONTROLSTRIP'}{'MainHBOX'},FALSE, FALSE, 2);
 
 
   $GTKS{'MainAppWindow'}->add($GTKS{'MainVBox'});
@@ -430,7 +459,7 @@ sub handleTheLocalSocket {
           appDBugLog("INITAL MEDIA:$PlayerStatus{'initialMediaID'} $PlayerStatus{'initialMediaType'}");
           if ($PlayerStatus{'currentMediaType'} eq "FILE") {
             appCOM("HELLO|$PlayerStatus{'currentMediaID'}|FILE|");
-            appCOM("SET|AUDIOVOLUME|75|");
+            appCOM("SET|AUDIOVOLUME|$PRESISTENT{'AudioVolume'}|");
 
             appDBugLog("MPCMD|PLAYMEDIA|$PlayerStatus{'currentMediaID'}|FILE|$PlayerStatus{'currentMediaSeek'}|$StartPaused|");
            
@@ -438,7 +467,7 @@ sub handleTheLocalSocket {
 
           } else {
             appCOM("HELLO|");
-            appCOM("SET|AUDIOVOLUME|75|");
+            appCOM("SET|AUDIOVOLUME|$PRESISTENT{'AudioVolume'}|");
           }
 
         
@@ -739,6 +768,45 @@ sub doLocalQuickie {
 
 #################################################################################################################################
 # various GUI event stuff.... 
+sub setVolumeICON {
+  my $volume = sanitizer("anumazlc",$_[0]);
+  my $icon;
+  if ($_[1] =~ /initGFX/) {
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFXM'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file("$theSHAREDIR/gfx/default/audio_vol_m_32.png"));$GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFXM'}->set_size_request(32,32); 
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX20'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file("$theSHAREDIR/gfx/default/audio_vol_20_32.png"));$GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX20'}->set_size_request(32,32); 
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX40'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file("$theSHAREDIR/gfx/default/audio_vol_40_32.png"));$GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX40'}->set_size_request(32,32); 
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX60'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file("$theSHAREDIR/gfx/default/audio_vol_60_32.png"));$GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX60'}->set_size_request(32,32); 
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX80'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file("$theSHAREDIR/gfx/default/audio_vol_80_32.png"));$GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX80'}->set_size_request(32,32); 
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX100'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file("$theSHAREDIR/gfx/default/audio_vol_100_32.png"));$GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX100'}->set_size_request(32,32); 
+  }
+  if (($volume eq 0) or ($volume eq "m")) {$icon = "GFXM";}
+  elsif ($volume <= 20) {$icon = "GFX20";}
+  elsif ($volume <= 40) {$icon = "GFX40";}
+  elsif ($volume <= 60) {$icon = "GFX60";}
+  elsif ($volume <= 80) {$icon = "GFX80";}
+  elsif ($volume eq 100) {$icon = "GFX100";}
+  else {appDBugLog("Something is wrong with the '$volume' value in setVolumeICON!");}
+  if ($icon =~ /GFX/) {
+    if ($GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'CURRENT'} =~ /GFX/) {
+      $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'EBOX'}->remove($GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{$GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'CURRENT'}});
+    }
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'CURRENT'} = $icon;
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'EBOX'}->add($GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{$icon});
+    $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'EBOX'}->show_all;
+  }
+}
+
+sub changeAudioVolume {
+  if ($GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'}) {
+    my $ValueFromScaler = sprintf("%d",$GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'}->get_value);
+    if (($ValueFromScaler >= 0) and ($ValueFromScaler <= 100)) {
+      $PRESISTENT{'AudioVolume'} = $ValueFromScaler;
+      appDBugLog("MANUAL VOLUME CHANGE ($PRESISTENT{'AudioVolume'})");
+      setVolumeICON($PRESISTENT{'AudioVolume'},0);
+      appCOM("SET|AUDIOVOLUME|$PRESISTENT{'AudioVolume'}|");
+    }
+  } 
+}
 
 sub eventBtnClickPlayPause {
   appDBugLog("Clicked: Play/Pause");  
@@ -795,6 +863,21 @@ sub keyPressHandler {
   } elsif (($keyVal eq 70) or ($keyVal eq 102)) {# Fullscreen toggler
     &toggleFullScreen;
   } 
+#elsif ($keyVal eq 65455) {# Audio Volume DOWN
+#    my $changeVolume = ($PRESISTENT{'AudioVolume'} - 5);
+#    if ($changeVolume < 0) {$changeVolume = 0;}
+#    if ($changeVolume ne $PRESISTENT{'AudioVolume'}) {
+#      $PRESISTENT{'AudioVolume'} = $changeVolume;
+#      &changeAudioVolume;
+#    }
+#  } elsif ($keyVal eq 65450) {# Audio Volume UP
+#    my $changeVolume = ($PRESISTENT{'AudioVolume'} + 5);
+#    if ($changeVolume > 100) {$changeVolume = 100;}
+#    if ($changeVolume ne $PRESISTENT{'AudioVolume'}) {
+#      $PRESISTENT{'AudioVolume'} = $changeVolume;
+#      &changeAudioVolume;
+#    }
+#  }
   return FALSE; 
 }
 

--
Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/mteleplayer.git


More information about the x2go-commits mailing list