Exemple #1
0
        /// <summary>
        /// Creates a tray application instance.
        /// </summary>
        /// <param name="title">Tray application title.</param>
        /// <param name="syncService">
        /// Synchronization service instance. The tray application will enable/disable this application and show its status.
        /// </param>
        public WindowsTrayInterface(string title, IVirtualDrive virtualDrive)
        {
            Title      = title;
            notifyIcon = new NotifyIcon();

            notifyIcon.Visible = true;
            notifyIcon.Icon    = new System.Drawing.Icon("Images\\Drive.ico");
            notifyIcon.Text    = title;

            ContextMenuStrip contextMenu = new ContextMenuStrip();

            contextMenu.Items.Add(Localization.Resources.StopSync, null, (s, e) => { StartStopSync(virtualDrive); });
#if !DEBUG
            // Hide console on app start.
            Visible = false;
            ConsoleManager.SetConsoleWindowVisibility(false);
            contextMenu.Items.Add(Localization.Resources.ShowLog, null, (s, e) => {
#else
            contextMenu.Items.Add(Localization.Resources.HideLog, null, (s, e) => {
#endif
                Visible = !Visible;
                ConsoleManager.SetConsoleWindowVisibility(Visible);
                contextMenu.Items[1].Text = (Visible)? Localization.Resources.HideLog : Localization.Resources.ShowLog;
            });

            contextMenu.Items.Add($"{Localization.Resources.Exit} {title}", null, (s, e) => { Application.Exit(); });

                                  notifyIcon.ContextMenuStrip = contextMenu;
        }
Exemple #2
0
        /// <summary>
        /// Create new tray icon.
        /// </summary>s
        /// <param name="productName">Product name.</param>
        /// <param name="virtualDrive">VirtualDriveBase, need to get syncService and fileSystemMonitor.</param>
        /// <param name="exitEvent">ManualResetEvent, used to stop application.</param>
        /// <returns></returns>
        public static Thread CreateTrayInterface(string productName, IVirtualDrive virtualDrive, ConsoleManager.ConsoleExitEvent exitEvent)
        {
            // Start tray application.
            Thread thread = new Thread(() => {
                WindowsTrayInterface windowsTrayInterface = new WindowsTrayInterface($"{productName}", virtualDrive);
                Application.Run();
                exitEvent.Set();
            });

            thread.SetApartmentState(ApartmentState.STA);
            thread.Start();
            thread.IsBackground = true;
            return(thread);
        }
Exemple #3
0
        /// <summary>
        /// This method handles StartStop Sycn button in tray menu.
        /// </summary>
        private async void StartStopSync(IVirtualDrive virtualDrive)
        {
            if (!sycnStopped)
            {
                await virtualDrive.SetEnabledAsync(false);

                sycnStopped = true;
                StatusToSyncStopped();
            }
            else
            {
                await virtualDrive.SetEnabledAsync(true);

                sycnStopped = false;
                StatusToIdle();
            }
        }
Exemple #4
0
 /// <summary>
 /// Creates instance of this class.
 /// </summary>
 /// <param name="remoteStorageRootPath">Remote storage path. Folder that contains source files to monitor changes.</param>
 /// <param name="virtualDrive">Virtual drive to send notifications about changes in the remote storage.</param>
 /// <param name="log">Logger.</param>
 internal RemoteStorageMonitor(string remoteStorageRootPath, IVirtualDrive virtualDrive, ILog log) : base("Remote Storage Monitor", log)
 {
     this.remoteStorageRootPath = remoteStorageRootPath;
     this.virtualDrive          = virtualDrive;
 }