public TrayNotifier (ICalDavSynchronizerCommands calDavSynchronizerCommands)
{
if (calDavSynchronizerCommands == null)
throw new ArgumentNullException (nameof (calDavSynchronizerCommands));
_calDavSynchronizerCommands = calDavSynchronizerCommands;
var trayMenu = new ContextMenu();
trayMenu.MenuItems.Add ("Synchronize now", delegate { SynchronizeNow(); });
trayMenu.MenuItems.Add ("Reports", delegate { ShowReports(); });
trayMenu.MenuItems.Add ("Status", delegate { ShowProfileStatuses(); });
trayMenu.MenuItems.Add ("-");
trayMenu.MenuItems.Add ("Synchronization profiles", delegate { ShowOptions(); });
trayMenu.MenuItems.Add ("General options", delegate { ShowGeneralOptions(); });
trayMenu.MenuItems.Add ("-");
trayMenu.MenuItems.Add ("About", delegate { ShowAbout(); });
// Create a tray icon. In this example we use a
// standard system icon for simplicity, but you
// can of course use your own custom icon too.
_nofifyIcon = new NotifyIcon();
_nofifyIcon.Text = ComponentContainer.MessageBoxTitle;
_nofifyIcon.Icon = Resources.ApplicationIcon;
// Add menu to tray icon and show it.
_nofifyIcon.ContextMenu = trayMenu;
_nofifyIcon.Visible = true;
_nofifyIcon.MouseDoubleClick += _nofifyIcon_MouseDoubleClick;
}