Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(111)

Side by Side Diff: chrome/browser/ui/views/select_file_dialog.cc

Issue 7850026: Aura under Linux (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: First version that links (and crashes) Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/shell_dialogs.h" 5 #include "chrome/browser/ui/shell_dialogs.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/json/json_reader.h" 9 #include "base/json/json_reader.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 15 matching lines...) Expand all
26 #include "views/window/non_client_view.h" 26 #include "views/window/non_client_view.h"
27 27
28 namespace { 28 namespace {
29 29
30 const char kKeyNamePath[] = "path"; 30 const char kKeyNamePath[] = "path";
31 const int kSaveCompletePageIndex = 2; 31 const int kSaveCompletePageIndex = 2;
32 32
33 } // namespace 33 } // namespace
34 34
35 // Implementation of SelectFileDialog that shows an UI for choosing a file 35 // Implementation of SelectFileDialog that shows an UI for choosing a file
36 // or folder using FileBrowseUI. 36 // or folder.
37 class SelectFileDialogImpl : public SelectFileDialog { 37 class SelectFileDialogImpl : public SelectFileDialog {
38 public: 38 public:
39 explicit SelectFileDialogImpl(Listener* listener); 39 explicit SelectFileDialogImpl(Listener* listener);
40 40
41 // BaseShellDialog implementation. 41 // BaseShellDialog implementation.
42 virtual bool IsRunning(gfx::NativeWindow parent_window) const; 42 virtual bool IsRunning(gfx::NativeWindow parent_window) const;
43 virtual void ListenerDestroyed(); 43 virtual void ListenerDestroyed();
44 44
45 protected: 45 protected:
46 // SelectFileDialog implementation. 46 // SelectFileDialog implementation.
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 318
319 bool SelectFileDialogImpl::FileBrowseDelegate::IsDialogModal() const { 319 bool SelectFileDialogImpl::FileBrowseDelegate::IsDialogModal() const {
320 return true; 320 return true;
321 } 321 }
322 322
323 string16 SelectFileDialogImpl::FileBrowseDelegate::GetDialogTitle() const { 323 string16 SelectFileDialogImpl::FileBrowseDelegate::GetDialogTitle() const {
324 return title_; 324 return title_;
325 } 325 }
326 326
327 GURL SelectFileDialogImpl::FileBrowseDelegate::GetDialogContentURL() const { 327 GURL SelectFileDialogImpl::FileBrowseDelegate::GetDialogContentURL() const {
328 #if defined(USE_AURA)
329 // TODO(saintlou): The current SelectFileDialogImpl assumes chromeos==1
330 std::string url_string;
331 #else
328 std::string url_string(chrome::kChromeUIFileBrowseURL); 332 std::string url_string(chrome::kChromeUIFileBrowseURL);
329 333 #endif
330 return GURL(url_string); 334 return GURL(url_string);
331 } 335 }
332 336
333 void SelectFileDialogImpl::FileBrowseDelegate::GetWebUIMessageHandlers( 337 void SelectFileDialogImpl::FileBrowseDelegate::GetWebUIMessageHandlers(
334 std::vector<WebUIMessageHandler*>* handlers) const { 338 std::vector<WebUIMessageHandler*>* handlers) const {
335 handlers->push_back(new FileBrowseDelegateHandler( 339 handlers->push_back(new FileBrowseDelegateHandler(
336 const_cast<FileBrowseDelegate*>(this))); 340 const_cast<FileBrowseDelegate*>(this)));
337 return; 341 return;
338 } 342 }
339 343
340 void SelectFileDialogImpl::FileBrowseDelegate::GetDialogSize( 344 void SelectFileDialogImpl::FileBrowseDelegate::GetDialogSize(
341 gfx::Size* size) const { 345 gfx::Size* size) const {
342 size->SetSize(320, 240); 346 size->SetSize(320, 240);
343 } 347 }
344 348
345 std::string SelectFileDialogImpl::FileBrowseDelegate::GetDialogArgs() const { 349 std::string SelectFileDialogImpl::FileBrowseDelegate::GetDialogArgs() const {
350 #if defined(USE_AURA)
351 // TODO(saintlou): The current SelectFileDialogImpl does not seem to work
352 // when chromeos==0.
353 return std::string();
354 #else
346 // SelectFile inputs as json. 355 // SelectFile inputs as json.
347 // { 356 // {
348 // "type" : "open", // (or "open_multiple", "save", "folder" 357 // "type" : "open", // (or "open_multiple", "save", "folder"
349 // "all_files" : true, 358 // "all_files" : true,
350 // "file_types" : { 359 // "file_types" : {
351 // "exts" : [ ["htm", "html"], ["txt"] ], 360 // "exts" : [ ["htm", "html"], ["txt"] ],
352 // "desc" : [ "HTML files", "Text files" ], 361 // "desc" : [ "HTML files", "Text files" ],
353 // }, 362 // },
354 // "file_type_index" : 1, // 1-based file type index. 363 // "file_type_index" : 1, // 1-based file type index.
355 // } 364 // }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 "\"current_file\":\"%s\"," 426 "\"current_file\":\"%s\","
418 "\"file_types\":{\"exts\":[%s],\"desc\":[%s]}," 427 "\"file_types\":{\"exts\":[%s],\"desc\":[%s]},"
419 "\"file_type_index\":%d" 428 "\"file_type_index\":%d"
420 "}", 429 "}",
421 type_string.c_str(), 430 type_string.c_str(),
422 file_types_.include_all_files ? "true" : "false", 431 file_types_.include_all_files ? "true" : "false",
423 filename.c_str(), 432 filename.c_str(),
424 exts_list.c_str(), 433 exts_list.c_str(),
425 desc_list.c_str(), 434 desc_list.c_str(),
426 file_type_index_); 435 file_type_index_);
436 #endif
427 } 437 }
428 438
429 void SelectFileDialogImpl::FileBrowseDelegate::OnDialogClosed( 439 void SelectFileDialogImpl::FileBrowseDelegate::OnDialogClosed(
430 const std::string& json_retval) { 440 const std::string& json_retval) {
431 owner_->OnDialogClosed(this, json_retval); 441 owner_->OnDialogClosed(this, json_retval);
432 delete this; 442 delete this;
433 return; 443 return;
434 } 444 }
435 445
436 SelectFileDialogImpl::FileBrowseDelegateHandler::FileBrowseDelegateHandler( 446 SelectFileDialogImpl::FileBrowseDelegateHandler::FileBrowseDelegateHandler(
437 FileBrowseDelegate* delegate) 447 FileBrowseDelegate* delegate)
438 : delegate_(delegate) { 448 : delegate_(delegate) {
439 } 449 }
440 450
441 void SelectFileDialogImpl::FileBrowseDelegateHandler::RegisterMessages() { 451 void SelectFileDialogImpl::FileBrowseDelegateHandler::RegisterMessages() {
442 web_ui_->RegisterMessageCallback("setDialogTitle", 452 web_ui_->RegisterMessageCallback("setDialogTitle",
443 NewCallback(this, &FileBrowseDelegateHandler::HandleSetDialogTitle)); 453 NewCallback(this, &FileBrowseDelegateHandler::HandleSetDialogTitle));
444 } 454 }
445 455
446 void SelectFileDialogImpl::FileBrowseDelegateHandler::HandleSetDialogTitle( 456 void SelectFileDialogImpl::FileBrowseDelegateHandler::HandleSetDialogTitle(
447 const ListValue* args) { 457 const ListValue* args) {
458 #if !defined(USE_AURA)
459 // TODO(saintlou): The current SelectFileDialogImpl does not seem to work
460 // when chromeos==0.
448 std::wstring new_title = UTF16ToWideHack(ExtractStringValue(args)); 461 std::wstring new_title = UTF16ToWideHack(ExtractStringValue(args));
449 if (new_title != delegate_->title_) { 462 if (new_title != delegate_->title_) {
450 delegate_->title_ = new_title; 463 delegate_->title_ = new_title;
451 464
452 // Notify the containing view about the title change. 465 // Notify the containing view about the title change.
453 // The current HtmlDialogUIDelegate and HtmlDialogView does not support 466 // The current HtmlDialogUIDelegate and HtmlDialogView does not support
454 // dynamic title change. We hijacked the mechanism between HTMLDialogUI 467 // dynamic title change. We hijacked the mechanism between HTMLDialogUI
455 // and HtmlDialogView to get the HtmlDialogView and forced it to update 468 // and HtmlDialogView to get the HtmlDialogView and forced it to update
456 // its title. 469 // its title.
457 // TODO(xiyuan): Change this when the infrastructure is improved. 470 // TODO(xiyuan): Change this when the infrastructure is improved.
458 HtmlDialogUIDelegate** delegate = HtmlDialogUI::GetPropertyAccessor(). 471 HtmlDialogUIDelegate** delegate = HtmlDialogUI::GetPropertyAccessor().
459 GetProperty(web_ui_->tab_contents()->property_bag()); 472 GetProperty(web_ui_->tab_contents()->property_bag());
460 HtmlDialogView* containing_view = static_cast<HtmlDialogView*>(*delegate); 473 HtmlDialogView* containing_view = static_cast<HtmlDialogView*>(*delegate);
461 DCHECK(containing_view); 474 DCHECK(containing_view);
462 475
463 containing_view->GetWindow()->UpdateWindowTitle(); 476 containing_view->GetWindow()->UpdateWindowTitle();
464 containing_view->GetWindow()->non_client_view()->SchedulePaint(); 477 containing_view->GetWindow()->non_client_view()->SchedulePaint();
465 } 478 }
479 #endif
466 } 480 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698