Home | History | Annotate | Download | only in bookmarks
      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
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/bookmarks/bookmark_folder_editor_controller.h"
      6 
      7 #include "base/string16.h"
      8 #include "base/utf_string_conversions.h"
      9 #include "chrome/browser/bookmarks/bookmark_model.h"
     10 #include "chrome/browser/profiles/profile.h"
     11 #include "grit/generated_resources.h"
     12 #include "ui/base/l10n/l10n_util.h"
     13 
     14 BookmarkFolderEditorController::~BookmarkFolderEditorController() {
     15   if (model_)
     16     model_->RemoveObserver(this);
     17 }
     18 
     19 // static
     20 void BookmarkFolderEditorController::Show(Profile* profile,
     21                                           gfx::NativeWindow wnd,
     22                                           const BookmarkNode* node,
     23                                           int index,
     24                                           Type type) {
     25   // BookmarkFolderEditorController deletes itself when done.
     26   new BookmarkFolderEditorController(profile, wnd, node, index, type);
     27 }
     28 
     29 BookmarkFolderEditorController::BookmarkFolderEditorController(
     30     Profile* profile,
     31     gfx::NativeWindow wnd,
     32     const BookmarkNode* node,
     33     int index,
     34     Type type)
     35     : profile_(profile),
     36       model_(profile->GetBookmarkModel()),
     37       node_(node),
     38       index_(index),
     39       is_new_(type == NEW_BOOKMARK) {
     40   DCHECK(is_new_ || node);
     41 
     42   string16 title = is_new_ ?
     43       l10n_util::GetStringUTF16(IDS_BOOMARK_FOLDER_EDITOR_WINDOW_TITLE_NEW) :
     44       l10n_util::GetStringUTF16(IDS_BOOMARK_FOLDER_EDITOR_WINDOW_TITLE);
     45   string16 label =
     46       l10n_util::GetStringUTF16(IDS_BOOMARK_BAR_EDIT_FOLDER_LABEL);
     47   string16 contents = is_new_ ?
     48       l10n_util::GetStringUTF16(IDS_BOOMARK_EDITOR_NEW_FOLDER_NAME) :
     49       node_->GetTitle();
     50 
     51   dialog_ = InputWindowDialog::Create(wnd,
     52                                       UTF16ToWideHack(title),
     53                                       UTF16ToWideHack(label),
     54                                       UTF16ToWideHack(contents),
     55                                       this);
     56   model_->AddObserver(this);
     57 
     58   dialog_->Show();
     59 }
     60 
     61 bool BookmarkFolderEditorController::IsValid(const std::wstring& text) {
     62   return !text.empty();
     63 }
     64 
     65 void BookmarkFolderEditorController::InputAccepted(const std::wstring& text) {
     66   if (is_new_)
     67     model_->AddFolder(node_, index_, WideToUTF16Hack(text));
     68   else
     69     model_->SetTitle(node_, WideToUTF16Hack(text));
     70 }
     71 
     72 void BookmarkFolderEditorController::InputCanceled() {
     73 }
     74 
     75 void BookmarkFolderEditorController::BookmarkModelChanged() {
     76   dialog_->Close();
     77 }
     78 
     79 void BookmarkFolderEditorController::BookmarkModelBeingDeleted(
     80     BookmarkModel* model) {
     81   model_->RemoveObserver(this);
     82   model_ = NULL;
     83   BookmarkModelChanged();
     84 }
     85