OSDN Git Service

ファイルD&D時のサイズチェックをしないようにした
authorspx <spx268@gmail.com>
Sun, 20 Jul 2014 10:30:58 +0000 (19:30 +0900)
committerspx <spx268@gmail.com>
Sun, 20 Jul 2014 10:30:58 +0000 (19:30 +0900)
ドロップ不能にせず、ドロップ後にエラーダイアログを表示するように変更

OpenTween/MediaSelector.cs
OpenTween/Tween.cs

index 47ee93c..7858f17 100644 (file)
@@ -165,31 +165,47 @@ namespace OpenTween
         /// <summary>
         /// 指定されたファイルの投稿に対応した投稿先があるかどうかを示す値を取得する。
         /// </summary>
-        public bool HasUploadableService(string fileName)
+        public bool HasUploadableService(string fileName, bool ignoreSize)
         {
             FileInfo fl = new FileInfo(fileName);
             string ext = fl.Extension;
+            long? size = ignoreSize ? (long?)null : fl.Length;
 
-            var serviceName = this.ServiceName;
-            if (!string.IsNullOrEmpty(serviceName) &&
-                this.pictureService[serviceName].CheckFileSize(ext, fl.Length))
-            {
+            if (IsUploadable(this.ServiceName, ext, size))
                 return true;
-            }
 
             foreach (string svc in ImageServiceCombo.Items)
             {
-                if (!string.IsNullOrEmpty(svc) &&
-                    this.pictureService[svc].CheckFileSize(ext, fl.Length))
-                {
+                if (IsUploadable(svc, ext, size))
                     return true;
-                }
             }
 
             return false;
         }
 
         /// <summary>
+        /// 指定された投稿先に投稿可能かどうかを示す値を取得する。
+        /// ファイルサイズの指定がなければ拡張子だけで判定する。
+        /// </summary>
+        private bool IsUploadable(string serviceName, string ext, long? size)
+        {
+            if (!string.IsNullOrEmpty(serviceName))
+            {
+                if (size.HasValue)
+                {
+                    if (this.pictureService[serviceName].CheckFileSize(ext, size.Value))
+                        return true;
+                }
+                else
+                {
+                    if (this.pictureService[serviceName].CheckFileExtension(ext))
+                        return true;
+                }
+            }
+            return false;
+        }
+
+        /// <summary>
         /// 投稿するファイルとその投稿先を選択するためのコントロールを表示する。
         /// D&Dをサポートする場合は引数にドロップされたファイル名を指定して呼ぶこと。
         /// </summary>
index 4cfccaa..d72135c 100644 (file)
@@ -12371,7 +12371,7 @@ namespace OpenTween
 
         private void SelectMedia_DragEnter(DragEventArgs e)
         {
-            if (ImageSelector.HasUploadableService(((string[])e.Data.GetData(DataFormats.FileDrop, false))[0]))
+            if (ImageSelector.HasUploadableService(((string[])e.Data.GetData(DataFormats.FileDrop, false))[0], true))
             {
                 e.Effect = DragDropEffects.Copy;
                 return;