make tray pop up and make it work
This commit is contained in:
84
ntfysh_client/NotificationDialog.cs
Normal file
84
ntfysh_client/NotificationDialog.cs
Normal file
@@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
||||
|
||||
namespace ntfysh_client
|
||||
{
|
||||
public partial class NotificationDialog : Form
|
||||
{
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto)]
|
||||
private static extern bool AnimateWindow(IntPtr hWnd, int time, int flags);
|
||||
|
||||
private const int ScreenMargin = 20;
|
||||
|
||||
private void SetWindowPosition()
|
||||
{
|
||||
int workingtop = Screen.PrimaryScreen.WorkingArea.Height - this.Height;
|
||||
this.Top = workingtop - NotificationDialog.ScreenMargin;
|
||||
|
||||
int workingleft = Screen.PrimaryScreen.WorkingArea.Width - this.Width;
|
||||
this.Left = workingleft - NotificationDialog.ScreenMargin;
|
||||
}
|
||||
|
||||
protected override void SetVisibleCore(bool value)
|
||||
{
|
||||
//base.SetVisibleCore(false);
|
||||
this.SetWindowPosition();
|
||||
if (value)
|
||||
{
|
||||
this.BringToFront();
|
||||
AnimateWindow(this.Handle, 250, 0x00040000 | 0x00000008);
|
||||
}
|
||||
base.SetVisibleCore(value);
|
||||
}
|
||||
|
||||
public void ShowNotification(string title, string message)
|
||||
{
|
||||
this.tbTitle.Text = title;
|
||||
this.tbMessage.Text = message;
|
||||
this.Show();
|
||||
this.SetWindowPosition();
|
||||
}
|
||||
|
||||
public bool IsVisible
|
||||
{
|
||||
get { return this.Visible; }
|
||||
set { this.Visible = value; }
|
||||
}
|
||||
|
||||
protected override void OnShown(EventArgs e)
|
||||
{
|
||||
|
||||
base.OnShown(e);
|
||||
}
|
||||
|
||||
public NotificationDialog()
|
||||
{
|
||||
this.IsVisible = false;
|
||||
InitializeComponent();
|
||||
InitializeWindowHidden();
|
||||
}
|
||||
|
||||
private void InitializeWindowHidden()
|
||||
{
|
||||
this.Opacity = 0;
|
||||
this.ShowNotification("Title", "Message");
|
||||
this.IsVisible = false;
|
||||
this.Opacity = 1;
|
||||
}
|
||||
|
||||
private void btnClose_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.IsVisible = false;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user