PageRenderTime 186ms CodeModel.GetById 25ms RepoModel.GetById 39ms app.codeStats 0ms

/MyPicture/MyPictureUploader.cs

https://bitbucket.org/ugaya40/instant-image-uploader
C# | 109 lines | 84 code | 18 blank | 7 comment | 4 complexity | 9e66c0216c16df614d06dbb7e6714014 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using InstantImageUploader.Models;
  6. using System.IO;
  7. using System.ComponentModel.Composition;
  8. namespace ImageUploader.Extensions.MyPicture
  9. {
  10. [Export(typeof(IImageUploader))]
  11. public class MyPictureUploader : IImageUploader
  12. {
  13. public MyPictureUploader()
  14. {
  15. SaveFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + "\\ImageUploader";
  16. }
  17. public string SaveFolder
  18. {
  19. get;
  20. private set;
  21. }
  22. public string ImageUploaderName
  23. {
  24. get { return "My Picture"; }
  25. }
  26. public string Description
  27. {
  28. get { return "My Pictureに画像を保存します。"; }
  29. }
  30. public string Author
  31. {
  32. get { return "Masanori Onoue (ugaya40)"; }
  33. }
  34. public string Url
  35. {
  36. get { return "http://ugaya40.net"; }
  37. }
  38. //設定があるならこのメソッドでロードする。
  39. public void Initialize()
  40. {
  41. }
  42. //tempファイルのパスがわたってくるのでアップロード処理をする。
  43. public void Upload(string imageFilePath)
  44. {
  45. try
  46. {
  47. var files = Directory.GetFiles(SaveFolder);
  48. var fileNumbers = files.Where(file => Path.GetFileNameWithoutExtension(file).StartsWith("IMG"))
  49. .Select(file => Int32.Parse(Path.GetFileNameWithoutExtension(file).Remove(0, 3)));
  50. int lastNumber = fileNumbers.Any() ? fileNumbers.Max() : 0;
  51. File.Copy(imageFilePath, SaveFolder + "\\IMG" + (lastNumber + 1).ToString("00000") + ".png");
  52. OnSuccessImageUpload(null);
  53. }
  54. catch
  55. {
  56. OnFailedImageUpload("ファイルの保存に失敗しました");
  57. }
  58. }
  59. //設定ウィンドウを表示するかどうかプロパティ。
  60. //起動時にこのフラグがfalseを返すようなら設定ウィンドウが表示される。
  61. public bool IsNeedSetting
  62. {
  63. get { return false; }
  64. }
  65. //アップロード成功時にメッセージを表示したい場合のイベント。
  66. public event EventHandler<SuccessImageUploadEventArgs> SuccessImageUpload;
  67. private void OnSuccessImageUpload(string messageForUser)
  68. {
  69. var handler = SuccessImageUpload;
  70. if (handler != null)
  71. {
  72. handler(this, new SuccessImageUploadEventArgs(messageForUser));
  73. }
  74. }
  75. //アップロード失敗時にメッセージを表示したい場合のイベント。
  76. public event EventHandler<FailedImageUploadEventArgs> FailedImageUpload;
  77. private void OnFailedImageUpload(string messageForUser)
  78. {
  79. var handler = FailedImageUpload;
  80. if (handler != null)
  81. {
  82. handler(this, new FailedImageUploadEventArgs(messageForUser));
  83. }
  84. }
  85. //設定ウィンドウの方を返す。これがnullなら設定できない。
  86. public Type SettingWindowType
  87. {
  88. get { return null; }
  89. }
  90. }
  91. }