:lipstick: Pick duplicate code together.
authorCheng Zhao <zcbenz@gmail.com>
Mon, 23 Sep 2013 11:42:07 +0000 (19:42 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Mon, 23 Sep 2013 11:42:07 +0000 (19:42 +0800)
browser/ui/file_dialog_mac.mm

index 0770d0e..e4902e4 100644 (file)
@@ -38,6 +38,7 @@ void SetupDialog(NSSavePanel* dialog,
   if (default_filename)
     [dialog setNameFieldStringValue:default_filename];
 
+  [dialog setCanSelectHiddenExtension:YES];
   [dialog setAllowsOtherFileTypes:YES];
 }
 
@@ -51,6 +52,25 @@ void SetupDialogForProperties(NSOpenPanel* dialog, int properties) {
     [dialog setAllowsMultipleSelection:YES];
 }
 
+// Run modal dialog with parent window and return user's choice.
+int RunModalDialog(NSSavePanel* dialog, atom::NativeWindow* parent_window) {
+  __block int chosen = NSFileHandlingPanelCancelButton;
+  if (parent_window == NULL) {
+    chosen = [dialog runModal];
+  } else {
+    NSWindow* window = parent_window->GetNativeWindow();
+
+    [dialog beginSheetModalForWindow:window
+                   completionHandler:^(NSInteger c) {
+      chosen = c;
+      [NSApp stopModal];
+    }];
+    [NSApp runModalForWindow:window];
+  }
+
+  return chosen;
+}
+
 void ReadDialogPaths(NSOpenPanel* dialog, std::vector<base::FilePath>* paths) {
   NSArray* urls = [dialog URLs];
   for (NSURL* url in urls)
@@ -71,21 +91,7 @@ bool ShowOpenDialog(atom::NativeWindow* parent_window,
   SetupDialog(dialog, title, default_path);
   SetupDialogForProperties(dialog, properties);
 
-  __block int chosen = -1;
-
-  if (parent_window == NULL) {
-    chosen = [dialog runModal];
-  } else {
-    NSWindow* window = parent_window->GetNativeWindow();
-
-    [dialog beginSheetModalForWindow:window
-                   completionHandler:^(NSInteger c) {
-      chosen = c;
-      [NSApp stopModal];
-    }];
-    [NSApp runModalForWindow:window];
-  }
-
+  int chosen = RunModalDialog(dialog, parent_window);
   if (chosen == NSFileHandlingPanelCancelButton)
     return false;
 
@@ -129,23 +135,7 @@ bool ShowSaveDialog(atom::NativeWindow* parent_window,
 
   SetupDialog(dialog, title, default_path);
 
-  [dialog setCanSelectHiddenExtension:YES];
-
-  __block int chosen = -1;
-
-  if (parent_window == NULL) {
-    chosen = [dialog runModal];
-  } else {
-    NSWindow* window = parent_window->GetNativeWindow();
-
-    [dialog beginSheetModalForWindow:window
-                   completionHandler:^(NSInteger c) {
-      chosen = c;
-      [NSApp stopModal];
-    }];
-    [NSApp runModalForWindow:window];
-  }
-
+  int chosen = RunModalDialog(dialog, parent_window);
   if (chosen == NSFileHandlingPanelCancelButton || ![[dialog URL] isFileURL])
     return false;