1
0
mirror of https://github.com/chylex/TweetDuck.git synced 2025-05-04 08:34:07 +02:00

Add a volume slider to video player

This commit is contained in:
chylex 2017-08-11 13:22:12 +02:00
parent 06d2a5f715
commit f93e275ddf
2 changed files with 45 additions and 5 deletions

View File

@ -26,7 +26,9 @@ private void InitializeComponent() {
this.components = new System.ComponentModel.Container();
this.player = new TweetDuck.Video.ControlWMP();
this.timer = new System.Windows.Forms.Timer(this.components);
this.trackBarVolume = new System.Windows.Forms.TrackBar();
((System.ComponentModel.ISupportInitialize)(this.player)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.trackBarVolume)).BeginInit();
this.SuspendLayout();
//
// player
@ -35,7 +37,7 @@ private void InitializeComponent() {
this.player.Enabled = true;
this.player.Location = new System.Drawing.Point(0, 0);
this.player.Name = "player";
this.player.Size = new System.Drawing.Size(120, 120);
this.player.Size = new System.Drawing.Size(236, 120);
this.player.TabIndex = 0;
//
// timer
@ -43,12 +45,30 @@ private void InitializeComponent() {
this.timer.Interval = 10;
this.timer.Tick += new System.EventHandler(this.timer_Tick);
//
// trackBarVolume
//
this.trackBarVolume.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.trackBarVolume.AutoSize = false;
this.trackBarVolume.BackColor = System.Drawing.SystemColors.Control;
this.trackBarVolume.Location = new System.Drawing.Point(72, 94);
this.trackBarVolume.Maximum = 100;
this.trackBarVolume.Name = "trackBarVolume";
this.trackBarVolume.Size = new System.Drawing.Size(164, 26);
this.trackBarVolume.SmallChange = 5;
this.trackBarVolume.TabIndex = 1;
this.trackBarVolume.TickFrequency = 10;
this.trackBarVolume.TickStyle = System.Windows.Forms.TickStyle.None;
this.trackBarVolume.Visible = false;
this.trackBarVolume.ValueChanged += new System.EventHandler(this.trackBarVolume_ValueChanged);
this.trackBarVolume.MouseUp += new System.Windows.Forms.MouseEventHandler(this.trackBarVolume_MouseUp);
//
// FormPlayer
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(120, 120);
this.ClientSize = new System.Drawing.Size(236, 120);
this.ControlBox = false;
this.Controls.Add(this.trackBarVolume);
this.Controls.Add(this.player);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Location = new System.Drawing.Point(-32000, -32000);
@ -61,6 +81,7 @@ private void InitializeComponent() {
this.Text = "TweetDuck Video";
this.Load += new System.EventHandler(this.FormPlayer_Load);
((System.ComponentModel.ISupportInitialize)(this.player)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.trackBarVolume)).EndInit();
this.ResumeLayout(false);
}
@ -69,6 +90,7 @@ private void InitializeComponent() {
private ControlWMP player;
private System.Windows.Forms.Timer timer;
private System.Windows.Forms.TrackBar trackBarVolume;
}
}

View File

@ -20,13 +20,17 @@ public FormPlayer(IntPtr handle, string url){
player.Ocx.enableContextMenu = false;
player.Ocx.uiMode = "none";
player.Ocx.settings.setMode("loop", true);
player.Ocx.MediaChange += player_MediaChange;
player.Ocx.MediaError += player_MediaError;
trackBarVolume.Value = 25; // changes player volume
Application.AddMessageFilter(new MessageFilter(this));
}
// Events
private void FormPlayer_Load(object sender, EventArgs e){
player.Ocx.URL = videoUrl;
}
@ -39,6 +43,8 @@ private void timer_Tick(object sender, EventArgs e){
ClientSize = new Size(Math.Min(media.imageSourceWidth, width*3/4), Math.Min(media.imageSourceHeight, height*3/4));
Location = new Point(rect.Left+(width-ClientSize.Width)/2, rect.Top+(height-ClientSize.Height+SystemInformation.CaptionHeight)/2);
trackBarVolume.Visible = ClientRectangle.Contains(PointToClient(Cursor.Position)) || trackBarVolume.Focused;
}
else{
Environment.Exit(Program.CODE_OWNER_GONE);
@ -57,6 +63,14 @@ private void player_MediaError(object pMediaObject){
Environment.Exit(Program.CODE_MEDIA_ERROR);
}
private void trackBarVolume_ValueChanged(object sender, EventArgs e){
player.Ocx.settings.volume = trackBarVolume.Value;
}
private void trackBarVolume_MouseUp(object sender, MouseEventArgs e){
player.Focus();
}
// Controls & messages
private void TogglePause(){
@ -79,8 +93,12 @@ public MessageFilter(FormPlayer form){
bool IMessageFilter.PreFilterMessage(ref Message m){
if (m.Msg == 0x0201){ // WM_LBUTTONDOWN
form.TogglePause();
return true;
Point cursor = form.PointToClient(Cursor.Position);
if (!(cursor.X >= form.trackBarVolume.Location.X && cursor.Y >= form.trackBarVolume.Location.Y)){
form.TogglePause();
return true;
}
}
else if (m.Msg == 0x0203 || (m.Msg == 0x0100 && m.WParam.ToInt32() == 0x20)){ // WM_LBUTTONDBLCLK, WM_KEYDOWN, VK_SPACE
form.TogglePause();