controlapp/ControlApp/WatchForMe.cs
2025-02-28 11:29:02 -08:00

256 lines
5.9 KiB
C#

using System;
using System.ComponentModel;
using System.Configuration;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Vlc.DotNet.Core;
using Vlc.DotNet.Forms;
namespace ControlApp;
public class WatchForMe : Form
{
private string senderstr;
private string pub_Url;
private Utils u;
private int timewatched;
private int timecensored;
private bool isdeactive;
private int losefocus;
private bool censored;
private IContainer components;
private Timer WatchTime;
private Timer CensorTime;
private VlcControl vlcControl1;
private static bool IsWebPage(string input)
{
if (Uri.TryCreate(input, UriKind.Absolute, out Uri uriResult))
{
if (!(uriResult.Scheme == Uri.UriSchemeHttp))
{
return uriResult.Scheme == Uri.UriSchemeHttps;
}
return true;
}
return false;
}
public WatchForMe(string Url, string senderid)
{
u = new Utils();
senderstr = senderid;
InitializeComponent();
switch (Path.GetExtension(Url))
{
case ".mp4":
case ".webm":
case ".webp":
case ".gif":
{
pub_Url = Url;
string[] mediaOptions = new string[1] { "input-repeat=50" };
if (IsWebPage(Url))
{
if (u.Get_File(Url) != "FAILED")
{
FileInfo fileInfo = new FileInfo(Url);
vlcControl1.SetMedia(fileInfo, mediaOptions);
}
else
{
vlcControl1.SetMedia(new Uri(Url), mediaOptions);
}
}
else
{
FileInfo fileInfo2 = new FileInfo(Url);
vlcControl1.SetMedia(fileInfo2, mediaOptions);
}
vlcControl1.Play();
break;
}
case ".png":
case ".jpg":
case ".jepg":
{
string file = "";
file = u.Get_File(Url);
if (file == "FAILED")
{
Close();
break;
}
Image i = Image.FromFile(file);
Screen my = Screen.AllScreens[0];
if (i.Width > my.Bounds.Width)
{
base.Width = my.Bounds.Width;
}
else
{
base.Width = i.Width;
}
if (i.Height > my.Bounds.Height)
{
base.Height = my.Bounds.Height;
}
else
{
base.Height = i.Height;
}
vlcControl1.Visible = false;
PictureBox pictureBox = new PictureBox
{
Dock = DockStyle.Fill,
Image = i
};
base.Controls.Add(pictureBox);
break;
}
default:
{
vlcControl1.Visible = false;
WebBrowser wb = new WebBrowser();
wb.Navigate(Url);
wb.Dock = DockStyle.Fill;
wb.ScriptErrorsSuppressed = true;
base.Controls.Add(wb);
break;
}
}
AutoSize = true;
timewatched = 0;
timecensored = 0;
losefocus = 0;
WatchTime.Interval = 1000;
WatchTime.Tick += Timer1_Tick;
WatchTime.Start();
CensorTime.Interval = 1000;
CensorTime.Tick += Censored_Tick;
isdeactive = false;
base.Deactivate += Form1_Deactivate;
base.Activated += Form1_Reactivate;
base.FormClosing += Form1_FormClosing;
}
private void WatchForMe_Load(object sender, EventArgs e)
{
censored = false;
}
private void Censored_Tick(object sender, EventArgs e)
{
timecensored++;
}
private void Timer1_Tick(object sender, EventArgs e)
{
if (!isdeactive)
{
timewatched++;
Text = "Watch for me Time=" + timewatched + ": Censored for=" + timecensored + ": Lost focus=" + losefocus;
}
}
private void Form1_Deactivate(object sender, EventArgs e)
{
losefocus++;
isdeactive = true;
}
private void Form1_Reactivate(object sender, EventArgs e)
{
if (isdeactive)
{
isdeactive = false;
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
string usrnm = ConfigurationManager.AppSettings["UserName"].ToString();
Utils utils = new Utils();
utils.sendcmd(senderstr, utils.Ecrypt("M=User : " + usrnm + " Watched for : " + timewatched + " seconds. Censored for : " + timecensored + ". Form lost focus :" + losefocus + " times"), all: false);
}
}
private void WFM_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
if (censored)
{
base.Opacity = 1.0;
censored = false;
CensorTime.Stop();
}
else
{
base.Opacity = 0.0;
censored = true;
CensorTime.Start();
}
}
}
private void Replay(object sender, VlcMediaPlayerEndReachedEventArgs e)
{
vlcControl1.Position = 0f;
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.WatchTime = new System.Windows.Forms.Timer(this.components);
this.CensorTime = new System.Windows.Forms.Timer(this.components);
this.vlcControl1 = new Vlc.DotNet.Forms.VlcControl();
((System.ComponentModel.ISupportInitialize)this.vlcControl1).BeginInit();
base.SuspendLayout();
this.vlcControl1.BackColor = System.Drawing.Color.Black;
this.vlcControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.vlcControl1.Location = new System.Drawing.Point(0, 0);
this.vlcControl1.Name = "vlcControl1";
this.vlcControl1.Size = new System.Drawing.Size(1044, 647);
this.vlcControl1.Spu = -1;
this.vlcControl1.TabIndex = 0;
this.vlcControl1.Visible = true;
this.vlcControl1.Text = "vlcControl1";
this.vlcControl1.VlcLibDirectory = new System.IO.DirectoryInfo("C:\\Program Files\\VideoLAN\\VLC");
this.vlcControl1.EndReached += new System.EventHandler<Vlc.DotNet.Core.VlcMediaPlayerEndReachedEventArgs>(Replay);
this.vlcControl1.KeyDown += new System.Windows.Forms.KeyEventHandler(WFM_KeyDown);
((System.ComponentModel.ISupportInitialize)this.vlcControl1).EndInit();
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 15f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
base.ClientSize = new System.Drawing.Size(1044, 647);
base.Controls.Add(this.vlcControl1);
base.Name = "WatchForMe";
this.Text = "WatchForMe";
base.Load += new System.EventHandler(WatchForMe_Load);
base.KeyDown += new System.Windows.Forms.KeyEventHandler(WFM_KeyDown);
base.ResumeLayout(false);
}
}