blob: 3283efd3cf63edf57af9937c95afd710e9d1b1ac [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_bridge.h"
#include "base/bind.h"
#include "base/prefs/pref_service.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h"
#include "chrome/common/pref_names.h"
BookmarkBarBridge::BookmarkBarBridge(Profile* profile,
BookmarkBarController* controller,
BookmarkModel* model)
: controller_(controller),
model_(model),
batch_mode_(false) {
model_->AddObserver(this);
// Bookmark loading is async; it may may not have happened yet.
// We will be notified when that happens with the AddObserver() call.
if (model->loaded())
Loaded(model, false);
profile_pref_registrar_.Init(profile->GetPrefs());
profile_pref_registrar_.Add(
prefs::kShowAppsShortcutInBookmarkBar,
base::Bind(&BookmarkBarBridge::OnAppsPageShortcutVisibilityPrefChanged,
base::Unretained(this)));
[controller_ updateAppsPageShortcutButtonVisibility];
}
BookmarkBarBridge::~BookmarkBarBridge() {
model_->RemoveObserver(this);
}
void BookmarkBarBridge::Loaded(BookmarkModel* model, bool ids_reassigned) {
[controller_ loaded:model];
}
void BookmarkBarBridge::BookmarkModelBeingDeleted(BookmarkModel* model) {
[controller_ beingDeleted:model];
}
void BookmarkBarBridge::BookmarkNodeMoved(BookmarkModel* model,
const BookmarkNode* old_parent,
int old_index,
const BookmarkNode* new_parent,
int new_index) {
if (!batch_mode_) {
[controller_ nodeMoved:model
oldParent:old_parent oldIndex:old_index
newParent:new_parent newIndex:new_index];
}
}
void BookmarkBarBridge::BookmarkNodeAdded(BookmarkModel* model,
const BookmarkNode* parent,
int index) {
if (!batch_mode_)
[controller_ nodeAdded:model parent:parent index:index];
}
void BookmarkBarBridge::BookmarkNodeRemoved(BookmarkModel* model,
const BookmarkNode* parent,
int old_index,
const BookmarkNode* node) {
if (!batch_mode_)
[controller_ nodeRemoved:model parent:parent index:old_index];
}
void BookmarkBarBridge::BookmarkAllNodesRemoved(BookmarkModel* model) {
[controller_ loaded:model];
}
void BookmarkBarBridge::BookmarkNodeChanged(BookmarkModel* model,
const BookmarkNode* node) {
if (!batch_mode_)
[controller_ nodeChanged:model node:node];
}
void BookmarkBarBridge::BookmarkNodeFaviconChanged(BookmarkModel* model,
const BookmarkNode* node) {
if (!batch_mode_)
[controller_ nodeFaviconLoaded:model node:node];
}
void BookmarkBarBridge::BookmarkNodeChildrenReordered(
BookmarkModel* model, const BookmarkNode* node) {
if (!batch_mode_)
[controller_ nodeChildrenReordered:model node:node];
}
void BookmarkBarBridge::ExtensiveBookmarkChangesBeginning(
BookmarkModel* model) {
batch_mode_ = true;
}
void BookmarkBarBridge::ExtensiveBookmarkChangesEnded(BookmarkModel* model) {
batch_mode_ = false;
[controller_ loaded:model];
}
void BookmarkBarBridge::OnAppsPageShortcutVisibilityPrefChanged() {
[controller_ updateAppsPageShortcutButtonVisibility];
}