/InstantImageUploader/Models/ImageUploaderApplication.cs
C# | 133 lines | 112 code | 21 blank | 0 comment | 15 complexity | 42e4543ce80e0c90ff2fc8a41ec846c8 MD5 | raw file
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
-
- using Livet;
- using System.ComponentModel.Composition;
- using System.IO;
- using System.Xml.Serialization;
- using InstantImageUploader.Properties;
- using InstantImageUploader.Views;
- using System.Diagnostics;
-
- namespace InstantImageUploader.Models
- {
- public class ImageUploaderApplication
- {
- private static ImageUploaderApplication _current;
-
- public static ImageUploaderApplication Current
- {
- get
- {
- if (_current == null)
- {
- _current = new ImageUploaderApplication();
- }
-
- return _current;
- }
- }
-
- [ImportMany]
- public IEnumerable<IImageUploader> ImageUploaders
- {
- get;
- set;
- }
-
- public void Initialize(bool isSetting)
- {
- Settings.Default.Reload();
-
- ActiveUploader = ImageUploaders.Where(iu => iu.ImageUploaderName == Settings.Default.ActiveImageUploaderName).FirstOrDefault();
-
- if (!isSetting)
- {
- var arg = ImageUploaders.Where(iu =>
- "u:" + iu.ImageUploaderName == Environment.GetCommandLineArgs()
- .FirstOrDefault(n => n.StartsWith("u:"))).FirstOrDefault();
-
- if (arg != null)
- {
- ActiveUploader = arg;
- }
-
- if (ActiveUploader == null)
- {
- OnRequestShowingSettingWindow();
- Environment.Exit(0);
- }
-
- ActiveUploader.FailedImageUpload += (sender, e) =>
- {
- OnFailedImageUpload(e);
- Environment.Exit(1);
- };
- ActiveUploader.SuccessImageUpload += (sender, e) =>
- {
- OnSuccessImageUpload(e);
- Environment.Exit(0);
- };
-
- ActiveUploader.Initialize();
- }
- }
-
- public IImageUploader ActiveUploader
- {
- get;
- private set;
- }
-
- public void Upload(string filePath)
- {
- ActiveUploader.Upload(filePath);
- }
-
- public void Exit()
- {
- Environment.Exit(0);
- }
-
- #region FailedImageUploadイベント
- public event EventHandler<FailedImageUploadEventArgs> FailedImageUpload;
-
- protected virtual void OnFailedImageUpload(FailedImageUploadEventArgs e)
- {
- var threadSafeHandler = System.Threading.Interlocked.CompareExchange(ref FailedImageUpload, null, null);
- if (threadSafeHandler != null)
- {
- threadSafeHandler(this, e);
- }
- }
- #endregion
-
- #region SuccessImageUploadイベント
- public event EventHandler<SuccessImageUploadEventArgs> SuccessImageUpload;
-
- protected virtual void OnSuccessImageUpload(SuccessImageUploadEventArgs e)
- {
- var threadSafeHandler = System.Threading.Interlocked.CompareExchange(ref SuccessImageUpload, null, null);
- if (threadSafeHandler != null)
- {
- threadSafeHandler(this, e);
- }
- }
- #endregion
-
- #region RequestShowingSettingWindowイベント
- public event EventHandler RequestShowingSettingWindow;
-
- private void OnRequestShowingSettingWindow()
- {
- var handler = RequestShowingSettingWindow;
- if (handler != null)
- {
- handler(this, EventArgs.Empty);
- }
- }
- #endregion
- }
- }