diff --git a/ntfysh_client/MainForm.cs b/ntfysh_client/MainForm.cs
index cc2cdfa..465c960 100644
--- a/ntfysh_client/MainForm.cs
+++ b/ntfysh_client/MainForm.cs
@@ -16,6 +16,7 @@ namespace ntfysh_client
private readonly NotificationListener _notificationListener;
private bool _startInTray;
private bool _trueExit;
+ private NotificationDialog notificationDialog;
public MainForm(NotificationListener notificationListener, bool startInTray = false)
{
@@ -32,6 +33,8 @@ namespace ntfysh_client
{
LoadSettings();
LoadTopics();
+
+ this.notificationDialog = new NotificationDialog();
}
protected override void SetVisibleCore(bool value)
@@ -70,7 +73,9 @@ namespace ntfysh_client
string finalTitle = string.IsNullOrWhiteSpace(e.Title) ? $"{e.Sender.TopicId}@{e.Sender.ServerUrl}" : e.Title;
- notifyIcon.ShowBalloonTip((int)TimeSpan.FromSeconds((double)Program.Settings.Timeout).TotalMilliseconds, finalTitle, e.Message, priorityIcon);
+ //notifyIcon.ShowBalloonTip((int)TimeSpan.FromSeconds((double)Program.Settings.Timeout).TotalMilliseconds, finalTitle, e.Message, priorityIcon);
+ //this.notificationDialog.IsVisible = true;
+ this.notificationDialog.ShowNotification(finalTitle, e.Message);
}
private void OnConnectionMultiAttemptFailure(NotificationListener sender, SubscribedTopic topic)
diff --git a/ntfysh_client/NotificationDialog.Designer.cs b/ntfysh_client/NotificationDialog.Designer.cs
new file mode 100644
index 0000000..8025dd2
--- /dev/null
+++ b/ntfysh_client/NotificationDialog.Designer.cs
@@ -0,0 +1,85 @@
+namespace ntfysh_client
+{
+ partial class NotificationDialog
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ tbTitle = new System.Windows.Forms.TextBox();
+ button1 = new System.Windows.Forms.Button();
+ tbMessage = new System.Windows.Forms.TextBox();
+ SuspendLayout();
+ //
+ // tbTitle
+ //
+ tbTitle.Location = new System.Drawing.Point(12, 58);
+ tbTitle.Name = "tbTitle";
+ tbTitle.ReadOnly = true;
+ tbTitle.Size = new System.Drawing.Size(725, 23);
+ tbTitle.TabIndex = 0;
+ //
+ // button1
+ //
+ button1.Location = new System.Drawing.Point(759, 7);
+ button1.Name = "button1";
+ button1.Size = new System.Drawing.Size(29, 38);
+ button1.TabIndex = 1;
+ button1.Text = "x";
+ button1.UseVisualStyleBackColor = true;
+ button1.Click += btnClose_Click;
+ //
+ // tbMessage
+ //
+ tbMessage.Location = new System.Drawing.Point(12, 97);
+ tbMessage.Multiline = true;
+ tbMessage.Name = "tbMessage";
+ tbMessage.ReadOnly = true;
+ tbMessage.Size = new System.Drawing.Size(725, 253);
+ tbMessage.TabIndex = 2;
+ //
+ // NotificationDialog
+ //
+ AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+ AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ BackColor = System.Drawing.SystemColors.ControlDark;
+ ClientSize = new System.Drawing.Size(800, 450);
+ Controls.Add(tbMessage);
+ Controls.Add(button1);
+ Controls.Add(tbTitle);
+ FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ Name = "NotificationDialog";
+ Text = "NotificationDialog";
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox tbTitle;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.TextBox tbMessage;
+ }
+}
\ No newline at end of file
diff --git a/ntfysh_client/NotificationDialog.cs b/ntfysh_client/NotificationDialog.cs
new file mode 100644
index 0000000..81767e2
--- /dev/null
+++ b/ntfysh_client/NotificationDialog.cs
@@ -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;
+ }
+ }
+}
diff --git a/ntfysh_client/NotificationDialog.resx b/ntfysh_client/NotificationDialog.resx
new file mode 100644
index 0000000..8b2ff64
--- /dev/null
+++ b/ntfysh_client/NotificationDialog.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file