Exemplo n.º 1
0
 void DeviceManager_CameraConnected(ICameraDevice cameraDevice)
 {
     Dispatcher.BeginInvoke(new Action(() =>
     {
         if (!ServiceProvider.Settings.HideTrayNotifications)
         {
             MyNotifyIcon.HideBalloonTip();
             MyNotifyIcon.ShowBalloonTip("Camera connected", cameraDevice.LoadProperties().DeviceName,
                                         BalloonIcon.Info);
         }
         SortCameras();
     }));
 }
Exemplo n.º 2
0
 private void Window_StateChanged(object sender, EventArgs e)
 {
     if (WindowState == WindowState.Minimized && ServiceProvider.Settings.MinimizeToTrayIcon &&
         !ServiceProvider.Settings.HideTrayNotifications)
     {
         this.Hide();
         Dispatcher.BeginInvoke(new Action(() =>
         {
             MyNotifyIcon.HideBalloonTip();
             MyNotifyIcon.ShowBalloonTip("digiCamControl", "Application was minimized \n Double click to restore",
                                         BalloonIcon.Info);
         }));
     }
 }
Exemplo n.º 3
0
        private decimal calcExchangeRate(string to, string from)
        {
            decimal sellLeft, buyRight;

            var buyList  = searchCurr(to);
            var sellList = searchCurr(from);

            if (sellList.Count > 0)
            {
                {
                    sellLeft = sellList.Max().Buy;
                    sellBankNameLabel.Content = String.Concat("1 ", ComboBoxFrom.Text, "  ", sellList.Max().BankName.ToUpper(), " árfolyamán: ", sellLeft.ToString(), " Ft.");
                    if ((bool)shouldAlert.IsChecked)
                    {
                        if (sellLeft > dudAlert.Value && from == ComboBoxAlert.SelectedValue.ToString())
                        {
                            FancyBalloon balloon = new FancyBalloon();
                            balloon.BalloonText       = "Árfolyamértesítés";
                            balloon.balloonName.Text  = from;
                            balloon.balloonValue.Text = dudAlert.Value.ToString();

                            MyNotifyIcon.ShowCustomBalloon(balloon, PopupAnimation.Slide, 4000);
                        }
                    }
                }
            }
            else
            {
                return(1);

                throw new Exception("No exchange found");
            }

            if (buyList.Count > 0)
            {
                {
                    buyRight = buyList.Min().Sell;
                    buyBankNameLabel.Content = String.Concat("1 ", ComboBoxTo.Text, "  ", buyList.Min().BankName.ToUpper(), " árfolyamán: ", buyRight.ToString(), " Ft.");
                }
                return(sellLeft / buyRight);
            }
            else
            {
                return(1);

                throw new Exception("No exchange found");
            }
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
            Config = new Config();

            using (NotifyIcon = new MyNotifyIcon())
                using (LowLevelKeyboard = new LowLevelKeyboard())
                {
                    NotifyIcon.PropertyChanged += NotifyIcon_PropertyChanged;
                    LowLevelKeyboard.KeyDown   += LowLevelKeyboard_KeyDown;
                    LowLevelKeyboard.KeyUp     += LowLevelKeyboard_KeyUp;

                    NotifyIcon.Active = true;
                    Application.Run();
                }
        }
Exemplo n.º 5
0
 void LockScreen(object sender, ElapsedEventArgs e)
 {
     if (!CheckWindowsFullscreen.IsForegroundFullScreen())
     {
         MyNotifyIcon.Visible        = true;
         MyNotifyIcon.BalloonTipText = CurrentUsername.Split('\\')[1] + " ơi đứng dạy vận động nào, ngồi nhiều không tốt đâu ^^\"!";
         MyNotifyIcon.ShowBalloonTip(3000);
         Thread.Sleep(10000);
         this.BeginInvoke(new MethodInvoker(delegate
         {
             WindowsHelper.MonitorOff(this.Handle);
         }));
         WindowsHelper.LockWorkStation();
         TimeSpan time = new TimeSpan(0, 0, 5);
         WindowsHelper.BlockInput(time);
     }
 }
Exemplo n.º 6
0
 private void frmMainForm_Resize(object sender, EventArgs e)
 {
     if (this.WindowState == FormWindowState.Minimized)
     {
         MyNotifyIcon.Visible = true;
         if (_isFirstTime)
         {
             if (!_isClickSaveButton)
             {
                 btnSave_Click(null, null);
             }
             MyNotifyIcon.ShowBalloonTip(3000);
             _isFirstTime = false;
         }
         this.ShowInTaskbar = false;
         this.Hide();
     }
 }
Exemplo n.º 7
0
        protected override void OnClosing(CancelEventArgs e)
        {
            if (_isClose)
            {
                //clean up notifyicon (would otherwise stay open until application finishes)
                MyNotifyIcon.Dispose();

                _dispatcherTimer.Stop();
                _dispatcherTimer = null;

                base.OnClosing(e);
            }
            else
            {
                ShowInTaskbar = false;
                Visibility    = Visibility.Hidden;
                e.Cancel      = true;
            }
        }
Exemplo n.º 8
0
 /// <summary>
 /// Dispose clipboard monitor, notify icon and other things
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void DisposeSomethings(object sender, RoutedEventArgs e)
 {
     try
     {
         // unset clipboard text changed event handler
         _clipboardMonitor.ClipboardTextChanged -= ClipboardEnviroment.ClipboardTextChanged;
         // unset clipboard image changed event handler
         _clipboardMonitor.ClipboardImageChanged -= ClipboardEnviroment.ClipboardImageChanged;
         // diposing monitor
         _clipboardMonitor.Dispose();
     }
     catch (Exception exp)
     {
         MessageBox.Show(exp.ToString(), "Klavye - Fare Dinleyici Hata", MessageBoxButton.OK, MessageBoxImage.Error);
     }
     finally
     {
         MyNotifyIcon.Dispose();
     }
 }
Exemplo n.º 9
0
        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            LogIn log = new LogIn();

            log.ShowDialog();

            bool?result = log.DialogResult;

            if (result == true)
            {
                ConfigWindow config = new ConfigWindow();
                config.ShowDialog();

                FancyBalloon balloon = new FancyBalloon();
                balloon.BalloonText  = "Preferencias";
                balloon.TxtInfo.Text = "Los cambios se guardaron satisfactoriamente";
                //show balloon and close it after 4 seconds
                MyNotifyIcon.ShowCustomBalloon(balloon, PopupAnimation.Slide, 4000);
            }
        }
Exemplo n.º 10
0
        private void ComboBoxAlert_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (formFullyLoaded)
            {
                string  from     = ComboBoxAlert.SelectedValue.ToString() ?? "EUR";
                var     sellList = searchCurr(from);
                decimal sellLeft = sellList.Max().Buy;
                if ((bool)shouldAlert.IsChecked)
                {
                    if (sellLeft > dudAlert.Value && from == ComboBoxAlert.SelectedValue.ToString())
                    {
                        FancyBalloon balloon = new FancyBalloon();
                        balloon.balloonName.Text  = from;
                        balloon.balloonValue.Text = dudAlert.Value.ToString();
                        balloon.BalloonText       = "Árfolyamértesítés";

                        MyNotifyIcon.ShowCustomBalloon(balloon, PopupAnimation.Slide, 4000);
                    }
                }
            }
        }
Exemplo n.º 11
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            this.Hide();

            try
            {
                bool isInstalationComplete = StartUpCheck.IsInstalationComplete();


                if (isInstalationComplete == false)
                {
                    InitCredentialSetting settings = new InitCredentialSetting();
                    settings.ShowDialog();

                    if (settings.DialogResult == true)
                    {
                        FancyBalloon balloon = new FancyBalloon();
                        balloon.BalloonText  = "Configuración";
                        balloon.TxtInfo.Text = "La aplicación esta lista para utilizarse";
                        //show balloon and close it after 4 seconds
                        MyNotifyIcon.ShowCustomBalloon(balloon, PopupAnimation.Slide, 4000);
                    }
                    else
                    {
                        Application.Current.Shutdown();
                    }
                }

                new StartUpCheck().ReviewLastProcessStatus();


                DoBackgroundWork();
            }
            catch (SecurityException)
            {
                MessageBox.Show("Ejecute el programa como administrador");
                Application.Current.Shutdown();
            }
        }
Exemplo n.º 12
0
        static void Main()
        {
            AppDomain.CurrentDomain.UnhandledException +=
                CurrentDomain_UnhandledException; // Receive unhandled exceptions
            Logger.Subscribe(new SqualrLogger()); // Receive logs from the Squalr
            Trace.Listeners.Add(new ConsoleTraceListener());

            AppConfig.Load();
            AppConfig.Save();

            DiscordAssets.Load();
            AssetManager.Sync();

            using (MyNotifyIcon = new MyNotifyIcon())
                using (var tidalListener = new TidalListener())
                    using (var discordRpc = new DiscordRpc(tidalListener))
                    {
                        MyNotifyIcon.PropertyChanged += (sender, e) =>
                        {
                            if (e.PropertyName == nameof(MyNotifyIcon.Active))
                            {
                                if (MyNotifyIcon.Active)
                                {
                                    tidalListener.Start();
                                }
                                else
                                {
                                    tidalListener.Stop();
                                }
                            }
                        };

                        MyNotifyIcon.Active = true;
                        Application.Run();
                    }
        }
Exemplo n.º 13
0
 public void Handle(BalloonMessageModel model)
 {
     MyNotifyIcon.ShowBalloonTip(model.Title, model.Message, BalloonIcon.Info);
 }
Exemplo n.º 14
0
        /// <summary>
        /// Photoes the captured.
        /// </summary>
        /// <param name="o">The o.</param>
        private void PhotoCaptured(object o)
        {
            PhotoCapturedEventArgs eventArgs = o as PhotoCapturedEventArgs;

            if (eventArgs == null)
            {
                return;
            }
            try
            {
                Log.Debug("Photo transfer begin.");
                eventArgs.CameraDevice.IsBusy = true;
                CameraProperty property = eventArgs.CameraDevice.LoadProperties();
                PhotoSession   session  = (PhotoSession)eventArgs.CameraDevice.AttachedPhotoSession ??
                                          ServiceProvider.Settings.DefaultSession;
                StaticHelper.Instance.SystemMessage = "";

                var extension = Path.GetExtension(eventArgs.FileName);

                if (!eventArgs.CameraDevice.CaptureInSdRam || (extension != null && extension.ToLower() == ".mov"))
                {
                    if (property.NoDownload)
                    {
                        eventArgs.CameraDevice.IsBusy = false;
                        return;
                    }
                    if (extension != null && (session.DownloadOnlyJpg && extension.ToLower() != ".jpg"))
                    {
                        eventArgs.CameraDevice.IsBusy = false;
                        return;
                    }
                }

                StaticHelper.Instance.SystemMessage = TranslationStrings.MsgPhotoTransferBegin;

                string tempFile = Path.GetTempFileName();

                if (File.Exists(tempFile))
                {
                    File.Delete(tempFile);
                }

                if (!eventArgs.CameraDevice.CaptureInSdRam && session.DownloadThumbOnly)
                {
                    eventArgs.CameraDevice.TransferFileThumb(eventArgs.Handle, tempFile);
                }
                else
                {
                    eventArgs.CameraDevice.TransferFile(eventArgs.Handle, tempFile);
                }

                string fileName = "";
                if (!session.UseOriginalFilename || eventArgs.CameraDevice.CaptureInSdRam)
                {
                    fileName =
                        session.GetNextFileName(eventArgs.FileName, eventArgs.CameraDevice, tempFile);
                }
                else
                {
                    fileName = Path.Combine(session.Folder, eventArgs.FileName);
                    if (File.Exists(fileName) && !session.AllowOverWrite)
                    {
                        fileName =
                            StaticHelper.GetUniqueFilename(
                                Path.GetDirectoryName(fileName) + "\\" + Path.GetFileNameWithoutExtension(fileName) +
                                "_", 0,
                                Path.GetExtension(fileName));
                    }
                }

                if (session.AllowOverWrite && File.Exists(fileName))
                {
                    PhotoUtils.WaitForFile(fileName);
                    File.Delete(fileName);
                }

                // make lower case extension
                if (session.LowerCaseExtension && !string.IsNullOrEmpty(Path.GetExtension(fileName)))
                {
                    fileName = Path.Combine(Path.GetDirectoryName(fileName),
                                            Path.GetFileNameWithoutExtension(fileName) + Path.GetExtension(fileName).ToLower());
                }


                if (session.AskSavePath)
                {
                    SaveFileDialog dialog = new SaveFileDialog();
                    dialog.Filter           = "All files|*.*";
                    dialog.Title            = "Save captured photo";
                    dialog.FileName         = fileName;
                    dialog.InitialDirectory = Path.GetDirectoryName(fileName);
                    if (dialog.ShowDialog() == true)
                    {
                        fileName = dialog.FileName;
                    }
                    else
                    {
                        eventArgs.CameraDevice.IsBusy = false;
                        if (File.Exists(tempFile))
                        {
                            File.Delete(tempFile);
                        }
                        return;
                    }
                }

                if (!Directory.Exists(Path.GetDirectoryName(fileName)))
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(fileName));
                }

                File.Copy(tempFile, fileName);

                string backupfile = null;
                if (session.BackUp)
                {
                    backupfile = session.CopyBackUp(tempFile, fileName);
                    if (string.IsNullOrEmpty(backupfile))
                    {
                        StaticHelper.Instance.SystemMessage = "Unable to save the backup";
                    }
                }

                if (!eventArgs.CameraDevice.CaptureInSdRam && session.DeleteFileAfterTransfer)
                {
                    eventArgs.CameraDevice.DeleteObject(new DeviceObject()
                    {
                        Handle = eventArgs.Handle
                    });
                }


                if (File.Exists(tempFile))
                {
                    File.Delete(tempFile);
                }

                if (session.WriteComment)
                {
                    if (!string.IsNullOrEmpty(session.Comment))
                    {
                        Exiv2Helper.SaveComment(fileName, session.Comment);
                    }
                    if (session.SelectedTag1 != null && !string.IsNullOrEmpty(session.SelectedTag1.Value))
                    {
                        Exiv2Helper.AddKeyword(fileName, session.SelectedTag1.Value);
                    }
                    if (session.SelectedTag2 != null && !string.IsNullOrEmpty(session.SelectedTag2.Value))
                    {
                        Exiv2Helper.AddKeyword(fileName, session.SelectedTag2.Value);
                    }
                    if (session.SelectedTag3 != null && !string.IsNullOrEmpty(session.SelectedTag3.Value))
                    {
                        Exiv2Helper.AddKeyword(fileName, session.SelectedTag3.Value);
                    }
                    if (session.SelectedTag4 != null && !string.IsNullOrEmpty(session.SelectedTag4.Value))
                    {
                        Exiv2Helper.AddKeyword(fileName, session.SelectedTag4.Value);
                    }
                }

                if (session.ExternalData != null)
                {
                    session.ExternalData.FileName = fileName;
                }

                // prevent crash og GUI when item count updated
                Dispatcher.Invoke(new Action(delegate
                {
                    try
                    {
                        _selectedItem = session.GetNewFileItem(fileName);
                        _selectedItem.BackupFileName = backupfile;
                        _selectedItem.Series         = session.Series;
                        _selectedItem.AddTemplates(eventArgs.CameraDevice, session);
                        ServiceProvider.Database.Add(new DbFile(_selectedItem, eventArgs.CameraDevice.SerialNumber, eventArgs.CameraDevice.DisplayName, session.Name));
                    }
                    catch (Exception ex)
                    {
                    }
                }));

                foreach (AutoExportPluginConfig plugin in ServiceProvider.Settings.DefaultSession.AutoExportPluginConfigs)
                {
                    if (!plugin.IsEnabled)
                    {
                        continue;
                    }
                    var pl = ServiceProvider.PluginManager.GetAutoExportPlugin(plugin.Type);
                    try
                    {
                        pl.Execute(_selectedItem, plugin);
                        ServiceProvider.Analytics.PluginExecute(plugin.Type);
                        Log.Debug("AutoexportPlugin executed " + plugin.Type);
                    }
                    catch (Exception ex)
                    {
                        plugin.IsError = true;
                        plugin.Error   = ex.Message;
                        plugin.IsRedy  = true;
                        Log.Error("Error to apply plugin", ex);
                    }
                }

                Dispatcher.Invoke(() =>
                {
                    _selectedItem.RemoveThumbs();
                    session.Add(_selectedItem);
                    ServiceProvider.OnFileTransfered(_selectedItem);
                });

                if (ServiceProvider.Settings.MinimizeToTrayIcon && !IsVisible && !ServiceProvider.Settings.HideTrayNotifications)
                {
                    MyNotifyIcon.HideBalloonTip();
                    MyNotifyIcon.ShowBalloonTip("Photo transfered", fileName, BalloonIcon.Info);
                }

                ServiceProvider.DeviceManager.LastCapturedImage[eventArgs.CameraDevice] = fileName;

                //select the new file only when the multiple camera support isn't used to prevent high CPU usage on raw files
                if (ServiceProvider.Settings.AutoPreview &&
                    !ServiceProvider.WindowsManager.Get(typeof(MultipleCameraWnd)).IsVisible&&
                    !ServiceProvider.Settings.UseExternalViewer)
                {
                    if ((Path.GetExtension(fileName).ToLower() == ".jpg" && ServiceProvider.Settings.AutoPreviewJpgOnly) ||
                        !ServiceProvider.Settings.AutoPreviewJpgOnly)
                    {
                        if ((DateTime.Now - _lastLoadTime).TotalSeconds < 4)
                        {
                            _selectiontimer.Stop();
                            _selectiontimer.Start();
                        }
                        else
                        {
                            ServiceProvider.WindowsManager.ExecuteCommand(WindowsCmdConsts.Select_Image, _selectedItem);
                        }
                    }
                }
                _lastLoadTime = DateTime.Now;
                //ServiceProvider.Settings.Save(session);
                StaticHelper.Instance.SystemMessage = TranslationStrings.MsgPhotoTransferDone;
                eventArgs.CameraDevice.IsBusy       = false;
                //show fullscreen only when the multiple camera support isn't used
                if (ServiceProvider.Settings.Preview &&
                    !ServiceProvider.WindowsManager.Get(typeof(MultipleCameraWnd)).IsVisible&&
                    !ServiceProvider.Settings.UseExternalViewer)
                {
                    ServiceProvider.WindowsManager.ExecuteCommand(WindowsCmdConsts.FullScreenWnd_ShowTimed);
                }
                if (ServiceProvider.Settings.UseExternalViewer &&
                    File.Exists(ServiceProvider.Settings.ExternalViewerPath))
                {
                    string arg = ServiceProvider.Settings.ExternalViewerArgs;
                    arg = arg.Contains("%1") ? arg.Replace("%1", fileName) : arg + " " + fileName;
                    PhotoUtils.Run(ServiceProvider.Settings.ExternalViewerPath, arg, ProcessWindowStyle.Normal);
                }
                if (ServiceProvider.Settings.PlaySound)
                {
                    PhotoUtils.PlayCaptureSound();
                }
                Log.Debug("Photo transfer done.");
            }
            catch (Exception ex)
            {
                eventArgs.CameraDevice.IsBusy       = false;
                StaticHelper.Instance.SystemMessage = TranslationStrings.MsgPhotoTransferError + " " + ex.Message;
                Log.Error("Transfer error !", ex);
            }
            // not indicated to be used
            GC.Collect();
            //GC.WaitForPendingFinalizers();
        }
Exemplo n.º 15
0
 protected override void OnClosing(CancelEventArgs e)
 {
     MyNotifyIcon.Dispose();
     base.OnClosing(e);
 }
Exemplo n.º 16
0
 void DeviceManager_CameraConnected(ICameraDevice cameraDevice)
 {
     MyNotifyIcon.HideBalloonTip();
     MyNotifyIcon.ShowBalloonTip("Camera connected", cameraDevice.LoadProperties().DeviceName, BalloonIcon.Info);
     SortCameras();
 }
Exemplo n.º 17
0
        protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            MyNotifyIcon.Dispose();

            base.OnClosing(e);
        }
 private void btnHideStandardBalloon_Click(object sender, RoutedEventArgs e)
 {
     MyNotifyIcon.HideBalloonTip();
 }
 private void btnCloseCustomBalloon_Click(object sender, RoutedEventArgs e)
 {
     MyNotifyIcon.CloseBalloon();
 }
Exemplo n.º 20
0
 private void MetroWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
 {
     MyNotifyIcon.Dispose();
     SaveSettings();
     Save();
 }
Exemplo n.º 21
0
        /// <summary>
        /// Photoes the captured.
        /// </summary>
        /// <param name="o">The o.</param>
        private void PhotoCaptured(object o)
        {
            PhotoCapturedEventArgs eventArgs = o as PhotoCapturedEventArgs;

            if (eventArgs == null)
            {
                return;
            }
            try
            {
                Log.Debug("Photo transfer begin.");
                eventArgs.CameraDevice.IsBusy = true;
                var extension = Path.GetExtension(eventArgs.FileName);

                // the capture is for live view preview
                if (LiveViewManager.PreviewRequest.ContainsKey(eventArgs.CameraDevice) &&
                    LiveViewManager.PreviewRequest[eventArgs.CameraDevice])
                {
                    LiveViewManager.PreviewRequest[eventArgs.CameraDevice] = false;
                    var file = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName() + extension);
                    eventArgs.CameraDevice.TransferFile(eventArgs.Handle, file);
                    eventArgs.CameraDevice.IsBusy           = false;
                    eventArgs.CameraDevice.TransferProgress = 0;
                    eventArgs.CameraDevice.ReleaseResurce(eventArgs.Handle);
                    LiveViewManager.Preview[eventArgs.CameraDevice] = file;
                    LiveViewManager.OnPreviewCaptured(eventArgs.CameraDevice, file);
                    return;
                }

                CameraProperty property = eventArgs.CameraDevice.LoadProperties();
                PhotoSession   session  = (PhotoSession)eventArgs.CameraDevice.AttachedPhotoSession ??
                                          ServiceProvider.Settings.DefaultSession;
                StaticHelper.Instance.SystemMessage = "";


                if (!eventArgs.CameraDevice.CaptureInSdRam || PhotoUtils.IsMovie(eventArgs.FileName))
                {
                    if (property.NoDownload)
                    {
                        eventArgs.CameraDevice.IsBusy = false;
                        eventArgs.CameraDevice.ReleaseResurce(eventArgs.Handle);
                        return;
                    }
                    if (extension != null && (session.DownloadOnlyJpg && extension.ToLower() != ".jpg"))
                    {
                        eventArgs.CameraDevice.IsBusy = false;
                        eventArgs.CameraDevice.ReleaseResurce(eventArgs.Handle);
                        return;
                    }
                }

                StaticHelper.Instance.SystemMessage = TranslationStrings.MsgPhotoTransferBegin;

                string tempFile = Path.GetTempFileName();

                if (File.Exists(tempFile))
                {
                    File.Delete(tempFile);
                }

                Stopwatch stopWatch = new Stopwatch();
                // transfer file from camera to temporary folder
                // in this way if the session folder is used as hot folder will prevent write errors
                stopWatch.Start();
                if (!eventArgs.CameraDevice.CaptureInSdRam && session.DownloadThumbOnly)
                {
                    eventArgs.CameraDevice.TransferFileThumb(eventArgs.Handle, tempFile);
                }
                else
                {
                    eventArgs.CameraDevice.TransferFile(eventArgs.Handle, tempFile);
                }
                eventArgs.CameraDevice.TransferProgress = 0;
                eventArgs.CameraDevice.IsBusy           = false;
                stopWatch.Stop();
                string strTransfer = "Transfer time : " + stopWatch.Elapsed.TotalSeconds.ToString("##.###") + " Speed :" +
                                     Math.Round(
                    new System.IO.FileInfo(tempFile).Length / 1024.0 / 1024 /
                    stopWatch.Elapsed.TotalSeconds, 2) + " Mb/s";
                Log.Debug(strTransfer);

                string fileName = "";
                if (!session.UseOriginalFilename || eventArgs.CameraDevice.CaptureInSdRam)
                {
                    fileName =
                        session.GetNextFileName(eventArgs.FileName, eventArgs.CameraDevice, tempFile);
                }
                else
                {
                    fileName = Path.Combine(session.Folder, eventArgs.FileName);
                    if (File.Exists(fileName) && !session.AllowOverWrite)
                    {
                        fileName =
                            StaticHelper.GetUniqueFilename(
                                Path.GetDirectoryName(fileName) + "\\" + Path.GetFileNameWithoutExtension(fileName) +
                                "_", 0,
                                Path.GetExtension(fileName));
                    }
                }

                if (session.AllowOverWrite && File.Exists(fileName))
                {
                    PhotoUtils.WaitForFile(fileName);
                    File.Delete(fileName);
                }

                // make lower case extension
                if (session.LowerCaseExtension && !string.IsNullOrEmpty(Path.GetExtension(fileName)))
                {
                    fileName = Path.Combine(Path.GetDirectoryName(fileName),
                                            Path.GetFileNameWithoutExtension(fileName) + Path.GetExtension(fileName).ToLower());
                }


                if (session.AskSavePath)
                {
                    SaveFileDialog dialog = new SaveFileDialog();
                    dialog.Filter           = "All files|*.*";
                    dialog.Title            = "Save captured photo";
                    dialog.FileName         = fileName;
                    dialog.InitialDirectory = Path.GetDirectoryName(fileName);
                    if (dialog.ShowDialog() == true)
                    {
                        fileName = dialog.FileName;
                    }
                    else
                    {
                        eventArgs.CameraDevice.IsBusy = false;
                        if (File.Exists(tempFile))
                        {
                            File.Delete(tempFile);
                        }
                        return;
                    }
                }

                if (!Directory.Exists(Path.GetDirectoryName(fileName)))
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(fileName));
                }


                string backupfile = null;
                if (session.BackUp)
                {
                    backupfile = session.CopyBackUp(tempFile, fileName);
                    if (string.IsNullOrEmpty(backupfile))
                    {
                        StaticHelper.Instance.SystemMessage = "Unable to save the backup";
                    }
                }

                // execute plugins which are executed before transfer
                if (ServiceProvider.Settings.DefaultSession.AutoExportPluginConfigs.Count((x) => !x.RunAfterTransfer) > 0)
                {
                    FileItem tempitem = new FileItem(tempFile);
                    tempitem.Name           = Path.GetFileName(fileName);
                    tempitem.BackupFileName = backupfile;
                    tempitem.Series         = session.Series;
                    tempitem.AddTemplates(eventArgs.CameraDevice, session);
                    ExecuteAutoexportPlugins(eventArgs.CameraDevice, tempitem, false);
                }


                if ((!eventArgs.CameraDevice.CaptureInSdRam || PhotoUtils.IsMovie(fileName)) && session.DeleteFileAfterTransfer)
                {
                    eventArgs.CameraDevice.DeleteObject(new DeviceObject()
                    {
                        Handle = eventArgs.Handle
                    });
                }

                File.Copy(tempFile, fileName);

                if (File.Exists(tempFile))
                {
                    PhotoUtils.WaitForFile(tempFile);
                    File.Delete(tempFile);
                }

                if (session.WriteComment)
                {
                    if (!string.IsNullOrEmpty(session.Comment))
                    {
                        Exiv2Helper.SaveComment(fileName, session.Comment);
                    }
                    if (session.SelectedTag1 != null && !string.IsNullOrEmpty(session.SelectedTag1.Value))
                    {
                        Exiv2Helper.AddKeyword(fileName, session.SelectedTag1.Value);
                    }
                    if (session.SelectedTag2 != null && !string.IsNullOrEmpty(session.SelectedTag2.Value))
                    {
                        Exiv2Helper.AddKeyword(fileName, session.SelectedTag2.Value);
                    }
                    if (session.SelectedTag3 != null && !string.IsNullOrEmpty(session.SelectedTag3.Value))
                    {
                        Exiv2Helper.AddKeyword(fileName, session.SelectedTag3.Value);
                    }
                    if (session.SelectedTag4 != null && !string.IsNullOrEmpty(session.SelectedTag4.Value))
                    {
                        Exiv2Helper.AddKeyword(fileName, session.SelectedTag4.Value);
                    }
                }

                if (session.ExternalData != null)
                {
                    session.ExternalData.FileName = fileName;
                }

                // prevent crash og GUI when item count updated
                Dispatcher.Invoke(new Action(delegate
                {
                    try
                    {
                        _selectedItem = session.GetNewFileItem(fileName);
                        _selectedItem.BackupFileName = backupfile;
                        _selectedItem.Series         = session.Series;
                        // _selectedItem.Transformed = tempitem.Transformed;
                        _selectedItem.AddTemplates(eventArgs.CameraDevice, session);
                        ServiceProvider.Database.Add(new DbFile(_selectedItem, eventArgs.CameraDevice.SerialNumber, eventArgs.CameraDevice.DisplayName, session.Name));
                    }
                    catch (Exception ex)
                    {
                    }
                }));

                // execute plugins which are executed after transfer
                ExecuteAutoexportPlugins(eventArgs.CameraDevice, _selectedItem, true);

                Dispatcher.Invoke(() =>
                {
                    _selectedItem.RemoveThumbs();
                    session.Add(_selectedItem);
                    ServiceProvider.OnFileTransfered(_selectedItem);
                });


                if (ServiceProvider.Settings.MinimizeToTrayIcon && !IsVisible && !ServiceProvider.Settings.HideTrayNotifications)
                {
                    MyNotifyIcon.HideBalloonTip();
                    MyNotifyIcon.ShowBalloonTip("Photo transfered", fileName, BalloonIcon.Info);
                }

                ServiceProvider.DeviceManager.LastCapturedImage[eventArgs.CameraDevice] = fileName;

                //select the new file only when the multiple camera support isn't used to prevent high CPU usage on raw files
                if (ServiceProvider.Settings.AutoPreview &&
                    !ServiceProvider.WindowsManager.Get(typeof(MultipleCameraWnd)).IsVisible&&
                    !ServiceProvider.Settings.UseExternalViewer)
                {
                    if ((Path.GetExtension(fileName).ToLower() == ".jpg" && ServiceProvider.Settings.AutoPreviewJpgOnly) ||
                        !ServiceProvider.Settings.AutoPreviewJpgOnly)
                    {
                        if ((DateTime.Now - _lastLoadTime).TotalSeconds < 4)
                        {
                            _selectiontimer.Stop();
                            _selectiontimer.Start();
                        }
                        else
                        {
                            ServiceProvider.WindowsManager.ExecuteCommand(WindowsCmdConsts.Select_Image, _selectedItem);
                        }
                    }
                }
                _lastLoadTime = DateTime.Now;
                //ServiceProvider.Settings.Save(session);
                StaticHelper.Instance.SystemMessage = TranslationStrings.MsgPhotoTransferDone + " " + strTransfer;

                if (ServiceProvider.Settings.UseExternalViewer &&
                    File.Exists(ServiceProvider.Settings.ExternalViewerPath))
                {
                    string arg = ServiceProvider.Settings.ExternalViewerArgs;
                    arg = arg.Contains("%1") ? arg.Replace("%1", fileName) : arg + " " + fileName;
                    PhotoUtils.Run(ServiceProvider.Settings.ExternalViewerPath, arg, ProcessWindowStyle.Normal);
                }
                if (ServiceProvider.Settings.PlaySound)
                {
                    PhotoUtils.PlayCaptureSound();
                }
                eventArgs.CameraDevice.ReleaseResurce(eventArgs.Handle);

                //show fullscreen only when the multiple camera support isn't used
                if (ServiceProvider.Settings.Preview &&
                    !ServiceProvider.WindowsManager.Get(typeof(MultipleCameraWnd)).IsVisible&&
                    !ServiceProvider.Settings.UseExternalViewer)
                {
                    ServiceProvider.WindowsManager.ExecuteCommand(WindowsCmdConsts.FullScreenWnd_ShowTimed);
                }

                Log.Debug("Photo transfer done.");
            }
            catch (Exception ex)
            {
                eventArgs.CameraDevice.IsBusy       = false;
                StaticHelper.Instance.SystemMessage = TranslationStrings.MsgPhotoTransferError + " " + ex.Message;
                Log.Error("Transfer error !", ex);
            }
            // not indicated to be used
            GC.Collect();
            //GC.WaitForPendingFinalizers();
        }
Exemplo n.º 22
0
        public void ShowBalloon()
        {
            Balloon balloon = new Balloon();

            MyNotifyIcon.ShowCustomBalloon(balloon, PopupAnimation.Slide, Properties.Settings.Default.Duration);
        }