DisplayMagician/HeliosPlus/UIForms/MainForm.cs

244 lines
8.3 KiB
C#
Raw Normal View History

2017-02-26 19:23:31 +00:00
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
2017-02-26 19:23:31 +00:00
using System.Linq;
using System.Text;
2017-02-26 19:23:31 +00:00
using System.Threading.Tasks;
using System.Windows.Forms;
using HeliosPlus.GameLibraries;
using System.Threading;
using System.Reflection;
using HeliosPlus.Shared;
using System.Runtime.InteropServices;
2017-02-26 19:23:31 +00:00
namespace HeliosPlus.UIForms
2017-02-26 19:23:31 +00:00
{
public partial class MainForm : Form
2017-02-26 19:23:31 +00:00
{
private bool allowVisible; // ContextMenu's Show command used
private bool allowClose; // ContextMenu's Exit command used
2017-02-26 19:23:31 +00:00
public MainForm()
{
InitializeComponent();
btn_setup_display_profiles.Parent = splitContainer1.Panel1;
btn_setup_game_shortcuts.Parent = splitContainer1.Panel2;
lbl_version.Text = string.Format(lbl_version.Text, Assembly.GetExecutingAssembly().GetName().Version);
notifyIcon.Visible = true;
notifyIcon.ContextMenuStrip = mainContextMenuStrip;
RefreshNotifyIconMenus();
/*WaitingForm testform = new WaitingForm();
testform.Owner = this;
testform.Show();*/
if (Program.AppProgramSettings.MinimiseOnStart)
{
// Make the form minimised on start
allowVisible = false;
// Hide the application to notification area when the form is closed
allowClose = false;
cb_minimise_notification_area.Checked = true;
}
else
{
// Make the form show to the user on startup
allowVisible = true;
// Really close the application when the form is closed
allowClose = true;
cb_minimise_notification_area.Checked = false;
}
}
protected override void SetVisibleCore(bool value)
{
if (!allowVisible)
{
value = false;
if (!this.IsHandleCreated) CreateHandle();
}
base.SetVisibleCore(value);
}
protected override void OnFormClosing(FormClosingEventArgs e)
{
if (!allowClose)
{
this.Hide();
e.Cancel = true;
}
base.OnFormClosing(e);
2017-02-26 19:23:31 +00:00
}
private void btn_exit_Click(object sender, EventArgs e)
2017-02-26 19:23:31 +00:00
{
Application.Exit();
}
private void pb_display_profile_Click(object sender, EventArgs e)
{
var displayProfileForm = new DisplayProfileForm();
displayProfileForm.ShowDialog(this);
2017-02-26 19:23:31 +00:00
}
private void btn_setup_display_profiles_Click(object sender, EventArgs e)
2017-02-26 19:23:31 +00:00
{
var displayProfileForm = new DisplayProfileForm();
displayProfileForm.ShowDialog(this);
2017-02-26 19:23:31 +00:00
}
private void pb_game_shortcut_Click(object sender, EventArgs e)
2017-02-26 19:23:31 +00:00
{
var shortcutLibraryForm = new ShortcutLibraryForm();
shortcutLibraryForm.ShowDialog(this);
2017-02-26 19:23:31 +00:00
}
private void btn_setup_game_shortcuts_Click(object sender, EventArgs e)
2017-02-26 19:23:31 +00:00
{
var shortcutLibraryForm = new ShortcutLibraryForm();
shortcutLibraryForm.ShowDialog(this);
2017-02-26 19:23:31 +00:00
}
private void MainForm_Load(object sender, EventArgs e)
{
// Start loading the Steam Games just after the Main form opens
//SteamGame.GetAllInstalledGames();
}
private void RefreshNotifyIconMenus()
{
// Clear all the profiles
profileToolStripMenuItem.DropDownItems.Clear();
// Prepare the heading shortcuts
ToolStripMenuItem heading = new ToolStripMenuItem();
heading.Text = "Display Profiles";
Font headingFont = new Font(heading.Font, FontStyle.Italic);
heading.Font = headingFont;
heading.Enabled = false;
profileToolStripMenuItem.DropDownItems.Add(heading);
ToolStripSeparator separator = new ToolStripSeparator();
profileToolStripMenuItem.DropDownItems.Add(separator);
// Add the current slist of profiles into the NotifyIcon context menu
foreach (ProfileItem profile in ProfileRepository.AllProfiles)
{
profileToolStripMenuItem.DropDownItems.Add(profile.Name,profile.ProfileBitmap, runProfileToolStripMenuItem_Click);
}
// Clear all the shortcuts
shortcutToolStripMenuItem.DropDownItems.Clear();
// Prepare the heading shortcuts
heading = new ToolStripMenuItem();
heading.Text = "Game Shortcuts";
heading.Font = headingFont;
heading.Enabled = false;
shortcutToolStripMenuItem.DropDownItems.Add(heading);
separator = new ToolStripSeparator();
shortcutToolStripMenuItem.DropDownItems.Add(separator);
// Add the current list of profiles into the NotifyIcon context menu
foreach (ShortcutItem shortcut in ShortcutRepository.AllShortcuts)
{
shortcutToolStripMenuItem.DropDownItems.Add(shortcut.Name,shortcut.ShortcutBitmap, runShortcutToolStripMenuItem_Click);
}
}
private void runProfileToolStripMenuItem_Click(object sender, EventArgs e)
{
var menuItem = sender as ToolStripMenuItem;
ProfileItem profileToRun = null;
if (menuItem != null)
{
foreach (ProfileItem profile in ProfileRepository.AllProfiles)
{
if (profile.Name.Equals(menuItem.Text))
{
profileToRun = profile;
break;
}
}
// Run the shortcut if it's still there
if (profileToRun != null)
Program.ApplyProfile(profileToRun);
}
}
private void runShortcutToolStripMenuItem_Click(object sender, EventArgs e)
{
var menuItem = sender as ToolStripMenuItem;
ShortcutItem shortcutToRun = null;
if (menuItem != null)
{
foreach (ShortcutItem shortcut in ShortcutRepository.AllShortcuts)
{
if (shortcut.Name.Equals(menuItem.Text))
{
shortcutToRun = shortcut;
break;
}
}
// Run the shortcut if it's still there
if (shortcutToRun != null)
ShortcutRepository.RunShortcut(shortcutToRun, notifyIcon);
}
}
private void openApplicationWindowToolStripMenuItem_Click(object sender, EventArgs e)
{
allowVisible = true;
Restore();
Show();
BringToFront();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
allowClose = true;
Application.Exit();
}
private void cb_minimise_notification_area_CheckedChanged(object sender, EventArgs e)
{
if (cb_minimise_notification_area.Checked)
{
// Make the form minimised on start
allowVisible = false;
// Hide the application to notification area when the form is closed
allowClose = false;
// Enable the MinimiseOnStart setting
Program.AppProgramSettings.MinimiseOnStart = true;
}
else
{
// Make the form show to the user on startup
allowVisible = true;
// Really close the application when the form is closed
allowClose = true;
// Disable the MinimiseOnStart setting
Program.AppProgramSettings.MinimiseOnStart = false;
}
}
[DllImport("user32.dll")]
private static extern int ShowWindow(IntPtr hWnd, uint Msg);
private const uint SW_RESTORE = 0x09;
public void Restore()
{
if (WindowState == FormWindowState.Minimized)
{
ShowWindow(Handle, SW_RESTORE);
}
}
2017-02-26 19:23:31 +00:00
}
}