137 lines
4.0 KiB
C#
137 lines
4.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Outlook2013TodoAddIn
|
|
{
|
|
public partial class NewMailAlert : Form
|
|
{
|
|
private Timer timer;
|
|
private bool mouseIsOver = false;
|
|
|
|
public Microsoft.Office.Interop.Outlook.MailItem Email { get; set; }
|
|
|
|
public NewMailAlert(string sender, string subject, string body, int interval)
|
|
{
|
|
InitializeComponent();
|
|
this.lnkSender.Text = sender;
|
|
this.lnkSubject.Text = subject;
|
|
this.txtBody.Text = body;
|
|
this.Left = Screen.PrimaryScreen.WorkingArea.Width - this.Width - 10;
|
|
this.Top = Screen.PrimaryScreen.WorkingArea.Height - this.Height - 10;
|
|
this.timer = new Timer();
|
|
timer.Interval = interval;
|
|
timer.Tick += timer_Tick;
|
|
timer.Start();
|
|
}
|
|
|
|
[DllImport("user32.dll")]
|
|
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
|
|
|
|
[DllImport("user32.dll")]
|
|
private static extern bool AnimateWindow(IntPtr hWnd, uint dwTime, uint dwFlags);
|
|
|
|
private const int SW_SHOW = 5;
|
|
private const uint AW_BLEND = 0x00080000;
|
|
|
|
public bool ShowPopup()
|
|
{
|
|
bool result = ShowWindow(this.Handle, SW_SHOW);
|
|
//bool result = AnimateWindow(this.Handle, 200, AW_BLEND);
|
|
this.BringToFront();
|
|
return result;
|
|
}
|
|
|
|
protected override bool ShowWithoutActivation
|
|
{
|
|
get { return true; }
|
|
}
|
|
|
|
private void btnDelete_Click(object sender, EventArgs e)
|
|
{
|
|
this.Email.Delete();
|
|
this.Close();
|
|
}
|
|
|
|
private void btnFlag_Click(object sender, EventArgs e)
|
|
{
|
|
//Microsoft.Office.Interop.Outlook.OlFlagIcon.olYellowFlagIcon
|
|
this.Email.FlagRequest = "Follow up";
|
|
this.Email.Save();
|
|
this.Close();
|
|
}
|
|
|
|
private void btnEnvelope_Click(object sender, EventArgs e)
|
|
{
|
|
this.ShowEmail();
|
|
}
|
|
|
|
private void btnClose_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
private void ShowEmail()
|
|
{
|
|
this.Email.Display();
|
|
this.Close();
|
|
}
|
|
|
|
private void lnkSender_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
this.ShowEmail();
|
|
}
|
|
|
|
private void lnkSubject_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
this.ShowEmail();
|
|
}
|
|
|
|
protected override void OnLoad(EventArgs e)
|
|
{
|
|
base.OnLoad(e);
|
|
if (this.WindowState == FormWindowState.Minimized)
|
|
{
|
|
this.WindowState = FormWindowState.Normal;
|
|
}
|
|
this.Focus();
|
|
this.BringToFront();
|
|
}
|
|
|
|
private void timer_Tick(object sender, EventArgs e)
|
|
{
|
|
if (!mouseIsOver)
|
|
{
|
|
timer.Stop();
|
|
this.Close();
|
|
}
|
|
}
|
|
|
|
//protected override void OnMouseEnter(EventArgs ea)
|
|
//{
|
|
// base.OnMouseEnter(ea);
|
|
// Point clientPos = PointToClient(Cursor.Position);
|
|
// if (!ClientRectangle.Contains(clientPos))
|
|
// {
|
|
// mouseIsOver = true;
|
|
// }
|
|
//}
|
|
|
|
//protected override void OnMouseLeave(EventArgs ea)
|
|
//{
|
|
// base.OnMouseLeave(ea);
|
|
// Point clientPos = PointToClient(Cursor.Position);
|
|
// if (!ClientRectangle.Contains(clientPos))
|
|
// {
|
|
// mouseIsOver = false;
|
|
// }
|
|
//}
|
|
}
|
|
} |