Beginning screensaver work
This commit is contained in:
parent
8d8fc4931d
commit
bb4a380162
4 changed files with 136 additions and 1 deletions
|
@ -1,4 +1,19 @@
|
|||
[
|
||||
// SCREENSAVER
|
||||
{
|
||||
Name: "Screensavers",
|
||||
Cost: 750,
|
||||
Description: "Like to leave your PC idle for long periods of time? Save some energy and keep your screen from being tired by hiding the desktop behind a black screen with an image on it.",
|
||||
Dependencies: "desktop"
|
||||
},
|
||||
{
|
||||
Name: "Shift Screensavers",
|
||||
Cost: 100,
|
||||
Description: "This Shifter upgrade will allow you to customize the screensaver.",
|
||||
Dependencies: "screensavers;shifter"
|
||||
},
|
||||
|
||||
|
||||
// CALCULATOR UPGRADES
|
||||
{
|
||||
Name: "Calculator",
|
||||
|
|
24
ShiftOS.WinForms/WinformsDesktop.Designer.cs
generated
24
ShiftOS.WinForms/WinformsDesktop.Designer.cs
generated
|
@ -59,9 +59,12 @@ namespace ShiftOS.WinForms
|
|||
this.sysmenuholder = new System.Windows.Forms.Panel();
|
||||
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
|
||||
this.apps = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.pnlscreensaver = new System.Windows.Forms.Panel();
|
||||
this.pnlssicon = new System.Windows.Forms.Panel();
|
||||
this.desktoppanel.SuspendLayout();
|
||||
this.sysmenuholder.SuspendLayout();
|
||||
this.menuStrip1.SuspendLayout();
|
||||
this.pnlscreensaver.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// desktoppanel
|
||||
|
@ -144,12 +147,30 @@ namespace ShiftOS.WinForms
|
|||
this.apps.Tag = "applauncherbutton";
|
||||
this.apps.Text = "ShiftOS";
|
||||
//
|
||||
// pnlscreensaver
|
||||
//
|
||||
this.pnlscreensaver.Controls.Add(this.pnlssicon);
|
||||
this.pnlscreensaver.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlscreensaver.Location = new System.Drawing.Point(0, 24);
|
||||
this.pnlscreensaver.Name = "pnlscreensaver";
|
||||
this.pnlscreensaver.Size = new System.Drawing.Size(1296, 714);
|
||||
this.pnlscreensaver.TabIndex = 1;
|
||||
this.pnlscreensaver.Visible = false;
|
||||
//
|
||||
// pnlssicon
|
||||
//
|
||||
this.pnlssicon.Location = new System.Drawing.Point(303, 495);
|
||||
this.pnlssicon.Name = "pnlssicon";
|
||||
this.pnlssicon.Size = new System.Drawing.Size(200, 100);
|
||||
this.pnlssicon.TabIndex = 0;
|
||||
//
|
||||
// WinformsDesktop
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.Black;
|
||||
this.ClientSize = new System.Drawing.Size(1296, 738);
|
||||
this.Controls.Add(this.pnlscreensaver);
|
||||
this.Controls.Add(this.desktoppanel);
|
||||
this.Font = new System.Drawing.Font("Consolas", 9F);
|
||||
this.ForeColor = System.Drawing.Color.LightGreen;
|
||||
|
@ -163,6 +184,7 @@ namespace ShiftOS.WinForms
|
|||
this.sysmenuholder.PerformLayout();
|
||||
this.menuStrip1.ResumeLayout(false);
|
||||
this.menuStrip1.PerformLayout();
|
||||
this.pnlscreensaver.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
@ -176,6 +198,8 @@ namespace ShiftOS.WinForms
|
|||
private System.Windows.Forms.ToolStripMenuItem apps;
|
||||
private System.Windows.Forms.FlowLayoutPanel panelbuttonholder;
|
||||
private System.Windows.Forms.Button btnnotifications;
|
||||
private System.Windows.Forms.Panel pnlscreensaver;
|
||||
private System.Windows.Forms.Panel pnlssicon;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -37,6 +37,7 @@ using ShiftOS.WinForms.Tools;
|
|||
using ShiftOS.WinForms.Applications;
|
||||
using Newtonsoft.Json;
|
||||
using ShiftOS.Engine.Scripting;
|
||||
using System.Threading;
|
||||
|
||||
/// <summary>
|
||||
/// Winforms desktop.
|
||||
|
@ -48,6 +49,9 @@ namespace ShiftOS.WinForms
|
|||
/// </summary>
|
||||
public partial class WinformsDesktop : Form, IDesktop
|
||||
{
|
||||
private bool InScreensaver = false;
|
||||
private int millisecondsUntilScreensaver = 300000;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ShiftOS.WinForms.WinformsDesktop"/> class.
|
||||
/// </summary>
|
||||
|
@ -100,7 +104,7 @@ namespace ShiftOS.WinForms
|
|||
if (this.Visible == true)
|
||||
this.Invoke(new Action(() => SetupDesktop()));
|
||||
};
|
||||
var time = new Timer();
|
||||
var time = new System.Windows.Forms.Timer();
|
||||
time.Interval = 100;
|
||||
this.KeyDown += (o, a) =>
|
||||
{
|
||||
|
@ -139,9 +143,86 @@ namespace ShiftOS.WinForms
|
|||
};
|
||||
time.Start();
|
||||
|
||||
var ssThread = new Thread(() =>
|
||||
{
|
||||
while(this.Visible == true)
|
||||
{
|
||||
var mousePos = Cursor.Position;
|
||||
while(Cursor.Position == mousePos)
|
||||
{
|
||||
if(millisecondsUntilScreensaver <= 0)
|
||||
{
|
||||
ShowScreensaver();
|
||||
InScreensaver = true;
|
||||
}
|
||||
millisecondsUntilScreensaver--;
|
||||
Thread.Sleep(1);
|
||||
}
|
||||
millisecondsUntilScreensaver = 300000;
|
||||
InScreensaver = false;
|
||||
HideScreensaver();
|
||||
}
|
||||
});
|
||||
ssThread.IsBackground = true;
|
||||
ssThread.Start();
|
||||
|
||||
this.DoubleBuffered = true;
|
||||
}
|
||||
|
||||
public void HideScreensaver()
|
||||
{
|
||||
this.Invoke(new Action(() =>
|
||||
{
|
||||
this.TopMost = false;
|
||||
pnlscreensaver.Hide();
|
||||
Cursor.Show();
|
||||
SetupDesktop();
|
||||
}));
|
||||
}
|
||||
|
||||
private void ShowScreensaver()
|
||||
{
|
||||
if (Shiftorium.UpgradeInstalled("screensavers"))
|
||||
{
|
||||
this.Invoke(new Action(() =>
|
||||
{
|
||||
pnlscreensaver.Show();
|
||||
this.TopMost = true;
|
||||
pnlssicon.Show();
|
||||
pnlssicon.BackColor = Color.Green;
|
||||
pnlssicon.BackgroundImage = GetImage("screensaver");
|
||||
pnlssicon.BackgroundImageLayout = GetImageLayout("screensaver");
|
||||
|
||||
if (pnlssicon.BackgroundImage != null)
|
||||
{
|
||||
pnlssicon.Size = pnlssicon.BackgroundImage.Size;
|
||||
}
|
||||
|
||||
Cursor.Hide();
|
||||
|
||||
var t = new Thread(() =>
|
||||
{
|
||||
var rnd = new Random();
|
||||
while (InScreensaver == true)
|
||||
{
|
||||
int x = rnd.Next(0, this.Width);
|
||||
int y = rnd.Next(0, this.Height);
|
||||
|
||||
this.Invoke(new Action(() =>
|
||||
{
|
||||
pnlssicon.Location = new Point(x, y);
|
||||
}));
|
||||
|
||||
Thread.Sleep(5000);
|
||||
}
|
||||
});
|
||||
t.IsBackground = true;
|
||||
t.Start();
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Populates the panel buttons.
|
||||
/// </summary>
|
||||
|
|
|
@ -246,6 +246,21 @@ namespace ShiftOS.Engine {
|
|||
[ShifterHidden]
|
||||
public Dictionary<string, byte[]> AppIcons = new Dictionary<string, byte[]>();
|
||||
|
||||
[RequiresUpgrade("shift_screensaver")]
|
||||
[ShifterMeta("System")]
|
||||
[ShifterCategory("Screen saver")]
|
||||
[ShifterName("Screen saver wait (milliseconds)")]
|
||||
[ShifterDescription("How long do you have to stay idle before the screensaver activates?")]
|
||||
public int ScreensaverWait = 300000;
|
||||
|
||||
[RequiresUpgrade("skinning;shift_screensaver")]
|
||||
[ShifterMeta("System")]
|
||||
[ShifterCategory("Screen saver")]
|
||||
[ShifterName("Screen saver image")]
|
||||
[ShifterDescription("What image should appear on the screen saver?")]
|
||||
public byte[] ScreensaverImage = null;
|
||||
|
||||
|
||||
|
||||
[ShifterMeta("Windows")]
|
||||
[ShifterCategory("Titlebar")]
|
||||
|
|
Reference in a new issue