| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/views/bookmark_manager_view.h" | 5 #include "chrome/browser/views/bookmark_manager_view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "app/gfx/canvas.h" | 9 #include "app/gfx/canvas.h" |
| 10 #include "app/gfx/color_utils.h" | 10 #include "app/gfx/color_utils.h" |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 void BookmarkManager::Show(Profile* profile) { | 158 void BookmarkManager::Show(Profile* profile) { |
| 159 BookmarkManagerView::Show(profile); | 159 BookmarkManagerView::Show(profile); |
| 160 } | 160 } |
| 161 | 161 |
| 162 // ----------------------------------------------------------------------------- | 162 // ----------------------------------------------------------------------------- |
| 163 | 163 |
| 164 BookmarkManagerView::BookmarkManagerView(Profile* profile) | 164 BookmarkManagerView::BookmarkManagerView(Profile* profile) |
| 165 : profile_(profile->GetOriginalProfile()), | 165 : profile_(profile->GetOriginalProfile()), |
| 166 table_view_(NULL), | 166 table_view_(NULL), |
| 167 tree_view_(NULL), | 167 tree_view_(NULL), |
| 168 #if defined(BROWSER_SYNC) | |
| 169 sync_status_button_(NULL), | 168 sync_status_button_(NULL), |
| 170 sync_service_(NULL), | 169 sync_service_(NULL), |
| 171 #endif | |
| 172 ALLOW_THIS_IN_INITIALIZER_LIST(search_factory_(this)) { | 170 ALLOW_THIS_IN_INITIALIZER_LIST(search_factory_(this)) { |
| 173 search_tf_ = new views::Textfield(); | 171 search_tf_ = new views::Textfield(); |
| 174 search_tf_->set_default_width_in_chars(30); | 172 search_tf_->set_default_width_in_chars(30); |
| 175 | 173 |
| 176 table_view_ = new BookmarkTableView(profile_, NULL); | 174 table_view_ = new BookmarkTableView(profile_, NULL); |
| 177 table_view_->SetObserver(this); | 175 table_view_->SetObserver(this); |
| 178 table_view_->SetContextMenuController(this); | 176 table_view_->SetContextMenuController(this); |
| 179 | 177 |
| 180 tree_view_ = new BookmarkFolderTreeView(profile_, NULL); | 178 tree_view_ = new BookmarkFolderTreeView(profile_, NULL); |
| 181 tree_view_->SetController(this); | 179 tree_view_->SetController(this); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 200 views::GridLayout* layout = new views::GridLayout(this); | 198 views::GridLayout* layout = new views::GridLayout(this); |
| 201 SetLayoutManager(layout); | 199 SetLayoutManager(layout); |
| 202 const int top_id = 1; | 200 const int top_id = 1; |
| 203 const int split_cs_id = 2; | 201 const int split_cs_id = 2; |
| 204 layout->SetInsets(2, 0, 0, 0); // 2px padding above content. | 202 layout->SetInsets(2, 0, 0, 0); // 2px padding above content. |
| 205 views::ColumnSet* column_set = layout->AddColumnSet(top_id); | 203 views::ColumnSet* column_set = layout->AddColumnSet(top_id); |
| 206 column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, | 204 column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, |
| 207 0, views::GridLayout::USE_PREF, 0, 0); | 205 0, views::GridLayout::USE_PREF, 0, 0); |
| 208 column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, | 206 column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, |
| 209 0, views::GridLayout::USE_PREF, 0, 0); | 207 0, views::GridLayout::USE_PREF, 0, 0); |
| 210 #if defined(BROWSER_SYNC) | |
| 211 column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, | 208 column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, |
| 212 0, views::GridLayout::USE_PREF, 0, 0); | 209 0, views::GridLayout::USE_PREF, 0, 0); |
| 213 #endif | |
| 214 column_set->AddPaddingColumn(1, kUnrelatedControlHorizontalSpacing); | 210 column_set->AddPaddingColumn(1, kUnrelatedControlHorizontalSpacing); |
| 215 column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, | 211 column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, |
| 216 0, views::GridLayout::USE_PREF, 0, 0); | 212 0, views::GridLayout::USE_PREF, 0, 0); |
| 217 column_set->AddPaddingColumn(0, kRelatedControlHorizontalSpacing); | 213 column_set->AddPaddingColumn(0, kRelatedControlHorizontalSpacing); |
| 218 column_set->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, | 214 column_set->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, |
| 219 0, views::GridLayout::USE_PREF, 0, 0); | 215 0, views::GridLayout::USE_PREF, 0, 0); |
| 220 column_set->AddPaddingColumn(0, 3); // 3px padding at end of row. | 216 column_set->AddPaddingColumn(0, 3); // 3px padding at end of row. |
| 221 | 217 |
| 222 column_set = layout->AddColumnSet(split_cs_id); | 218 column_set = layout->AddColumnSet(split_cs_id); |
| 223 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1, | 219 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1, |
| 224 views::GridLayout::USE_PREF, 0, 0); | 220 views::GridLayout::USE_PREF, 0, 0); |
| 225 | 221 |
| 226 layout->StartRow(0, top_id); | 222 layout->StartRow(0, top_id); |
| 227 layout->AddView(organize_menu_button); | 223 layout->AddView(organize_menu_button); |
| 228 layout->AddView(tools_menu_button); | 224 layout->AddView(tools_menu_button); |
| 229 #if defined(BROWSER_SYNC) | |
| 230 sync_status_button_ = new views::TextButton(this, std::wstring()); | 225 sync_status_button_ = new views::TextButton(this, std::wstring()); |
| 231 layout->AddView(sync_status_button_); | 226 layout->AddView(sync_status_button_); |
| 232 #endif | |
| 233 layout->AddView(new views::Label( | 227 layout->AddView(new views::Label( |
| 234 l10n_util::GetString(IDS_BOOKMARK_MANAGER_SEARCH_TITLE))); | 228 l10n_util::GetString(IDS_BOOKMARK_MANAGER_SEARCH_TITLE))); |
| 235 layout->AddView(search_tf_); | 229 layout->AddView(search_tf_); |
| 236 | 230 |
| 237 layout->AddPaddingRow(0, 3); // 3px padding between rows. | 231 layout->AddPaddingRow(0, 3); // 3px padding between rows. |
| 238 | 232 |
| 239 layout->StartRow(1, split_cs_id); | 233 layout->StartRow(1, split_cs_id); |
| 240 layout->AddView(split_view_); | 234 layout->AddView(split_view_); |
| 241 | 235 |
| 242 // Press Ctrl-W to close bookmark manager window. | 236 // Press Ctrl-W to close bookmark manager window. |
| 243 AddAccelerator(views::Accelerator(base::VKEY_W, false, true, false)); | 237 AddAccelerator(views::Accelerator(base::VKEY_W, false, true, false)); |
| 244 | 238 |
| 245 BookmarkModel* bookmark_model = profile_->GetBookmarkModel(); | 239 BookmarkModel* bookmark_model = profile_->GetBookmarkModel(); |
| 246 if (!bookmark_model->IsLoaded()) | 240 if (!bookmark_model->IsLoaded()) |
| 247 bookmark_model->AddObserver(this); | 241 bookmark_model->AddObserver(this); |
| 248 | 242 |
| 249 #if defined(BROWSER_SYNC) | |
| 250 if (profile->GetProfileSyncService()) { | 243 if (profile->GetProfileSyncService()) { |
| 251 sync_service_ = profile_->GetProfileSyncService(); | 244 sync_service_ = profile_->GetProfileSyncService(); |
| 252 sync_service_->AddObserver(this); | 245 sync_service_->AddObserver(this); |
| 253 UpdateSyncStatus(); | 246 UpdateSyncStatus(); |
| 254 } | 247 } |
| 255 #endif | |
| 256 } | 248 } |
| 257 | 249 |
| 258 BookmarkManagerView::~BookmarkManagerView() { | 250 BookmarkManagerView::~BookmarkManagerView() { |
| 259 if (select_file_dialog_.get()) | 251 if (select_file_dialog_.get()) |
| 260 select_file_dialog_->ListenerDestroyed(); | 252 select_file_dialog_->ListenerDestroyed(); |
| 261 | 253 |
| 262 if (!GetBookmarkModel()->IsLoaded()) { | 254 if (!GetBookmarkModel()->IsLoaded()) { |
| 263 GetBookmarkModel()->RemoveObserver(this); | 255 GetBookmarkModel()->RemoveObserver(this); |
| 264 } else { | 256 } else { |
| 265 // The models are deleted before the views. Make sure we set the models of | 257 // The models are deleted before the views. Make sure we set the models of |
| 266 // the views to NULL so that they aren't left holding a reference to a | 258 // the views to NULL so that they aren't left holding a reference to a |
| 267 // deleted model. | 259 // deleted model. |
| 268 table_view_->SetModel(NULL); | 260 table_view_->SetModel(NULL); |
| 269 tree_view_->SetModel(NULL); | 261 tree_view_->SetModel(NULL); |
| 270 } | 262 } |
| 271 manager = NULL; | 263 manager = NULL; |
| 272 open_window = NULL; | 264 open_window = NULL; |
| 273 | 265 |
| 274 #if defined(BROWSER_SYNC) | |
| 275 if (sync_service_) | 266 if (sync_service_) |
| 276 sync_service_->RemoveObserver(this); | 267 sync_service_->RemoveObserver(this); |
| 277 #endif | |
| 278 } | 268 } |
| 279 | 269 |
| 280 // static | 270 // static |
| 281 void BookmarkManagerView::Show(Profile* profile) { | 271 void BookmarkManagerView::Show(Profile* profile) { |
| 282 if (!profile->GetBookmarkModel()) | 272 if (!profile->GetBookmarkModel()) |
| 283 return; | 273 return; |
| 284 | 274 |
| 285 if (open_window != NULL) { | 275 if (open_window != NULL) { |
| 286 open_window->Activate(); | 276 open_window->Activate(); |
| 287 return; | 277 return; |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 | 366 |
| 377 std::wstring BookmarkManagerView::GetWindowName() const { | 367 std::wstring BookmarkManagerView::GetWindowName() const { |
| 378 return prefs::kBookmarkManagerPlacement; | 368 return prefs::kBookmarkManagerPlacement; |
| 379 } | 369 } |
| 380 | 370 |
| 381 void BookmarkManagerView::WindowClosing() { | 371 void BookmarkManagerView::WindowClosing() { |
| 382 g_browser_process->local_state()->SetInteger( | 372 g_browser_process->local_state()->SetInteger( |
| 383 prefs::kBookmarkManagerSplitLocation, split_view_->divider_offset()); | 373 prefs::kBookmarkManagerSplitLocation, split_view_->divider_offset()); |
| 384 } | 374 } |
| 385 | 375 |
| 386 #if defined(BROWSER_SYNC) | |
| 387 void BookmarkManagerView::OnStateChanged() { | 376 void BookmarkManagerView::OnStateChanged() { |
| 388 UpdateSyncStatus(); | 377 UpdateSyncStatus(); |
| 389 } | 378 } |
| 390 #endif | |
| 391 | 379 |
| 392 bool BookmarkManagerView::AcceleratorPressed( | 380 bool BookmarkManagerView::AcceleratorPressed( |
| 393 const views::Accelerator& accelerator) { | 381 const views::Accelerator& accelerator) { |
| 394 // Ctrl-W to close bookmark manager. | 382 // Ctrl-W to close bookmark manager. |
| 395 DCHECK(accelerator.GetKeyCode() == 'W' && accelerator.IsCtrlDown()); | 383 DCHECK(accelerator.GetKeyCode() == 'W' && accelerator.IsCtrlDown()); |
| 396 window()->Close(); | 384 window()->Close(); |
| 397 return true; | 385 return true; |
| 398 } | 386 } |
| 399 | 387 |
| 400 void BookmarkManagerView::OnDoubleClick() { | 388 void BookmarkManagerView::OnDoubleClick() { |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 GetBookmarkModel()->Remove(parent, parent->IndexOfChild(node)); | 502 GetBookmarkModel()->Remove(parent, parent->IndexOfChild(node)); |
| 515 break; | 503 break; |
| 516 } | 504 } |
| 517 | 505 |
| 518 default: | 506 default: |
| 519 OnCutCopyPaste(KeyCodeToCutCopyPaste(keycode), false); | 507 OnCutCopyPaste(KeyCodeToCutCopyPaste(keycode), false); |
| 520 break; | 508 break; |
| 521 } | 509 } |
| 522 } | 510 } |
| 523 | 511 |
| 524 #if defined(BROWSER_SYNC) | |
| 525 void BookmarkManagerView::ButtonPressed(views::Button* sender, | 512 void BookmarkManagerView::ButtonPressed(views::Button* sender, |
| 526 const views::Event& event) { | 513 const views::Event& event) { |
| 527 if (sender == sync_status_button_) { | 514 if (sender == sync_status_button_) { |
| 528 UserMetrics::RecordAction(L"BookmarkManager_Sync", profile_); | 515 UserMetrics::RecordAction(L"BookmarkManager_Sync", profile_); |
| 529 OpenSyncMyBookmarksDialog(); | 516 OpenSyncMyBookmarksDialog(); |
| 530 } | 517 } |
| 531 } | 518 } |
| 532 #endif | |
| 533 | 519 |
| 534 void BookmarkManagerView::Loaded(BookmarkModel* model) { | 520 void BookmarkManagerView::Loaded(BookmarkModel* model) { |
| 535 model->RemoveObserver(this); | 521 model->RemoveObserver(this); |
| 536 LoadedImpl(); | 522 LoadedImpl(); |
| 537 } | 523 } |
| 538 | 524 |
| 539 void BookmarkManagerView::ContentsChanged(views::Textfield* sender, | 525 void BookmarkManagerView::ContentsChanged(views::Textfield* sender, |
| 540 const std::wstring& new_contents) { | 526 const std::wstring& new_contents) { |
| 541 search_factory_.RevokeAll(); | 527 search_factory_.RevokeAll(); |
| 542 MessageLoop::current()->PostDelayedTask(FROM_HERE, | 528 MessageLoop::current()->PostDelayedTask(FROM_HERE, |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 825 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("html")); | 811 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("html")); |
| 826 file_type_info.include_all_files = true; | 812 file_type_info.include_all_files = true; |
| 827 select_file_dialog_ = SelectFileDialog::Create(this); | 813 select_file_dialog_ = SelectFileDialog::Create(this); |
| 828 select_file_dialog_->SelectFile( | 814 select_file_dialog_->SelectFile( |
| 829 SelectFileDialog::SELECT_SAVEAS_FILE, std::wstring(), | 815 SelectFileDialog::SELECT_SAVEAS_FILE, std::wstring(), |
| 830 FilePath(FILE_PATH_LITERAL("bookmarks.html")), &file_type_info, 0, | 816 FilePath(FILE_PATH_LITERAL("bookmarks.html")), &file_type_info, 0, |
| 831 L"html", GetWidget()->GetNativeView(), | 817 L"html", GetWidget()->GetNativeView(), |
| 832 reinterpret_cast<void*>(IDS_BOOKMARK_MANAGER_EXPORT_MENU)); | 818 reinterpret_cast<void*>(IDS_BOOKMARK_MANAGER_EXPORT_MENU)); |
| 833 } | 819 } |
| 834 | 820 |
| 835 #if defined(BROWSER_SYNC) | |
| 836 void BookmarkManagerView::UpdateSyncStatus() { | 821 void BookmarkManagerView::UpdateSyncStatus() { |
| 837 DCHECK(sync_service_); | 822 DCHECK(sync_service_); |
| 838 std::wstring status_label; | 823 std::wstring status_label; |
| 839 std::wstring link_label; | 824 std::wstring link_label; |
| 840 bool synced = SyncStatusUIHelper::GetLabels(sync_service_, | 825 bool synced = SyncStatusUIHelper::GetLabels(sync_service_, |
| 841 &status_label, &link_label) == SyncStatusUIHelper::SYNCED; | 826 &status_label, &link_label) == SyncStatusUIHelper::SYNCED; |
| 842 | 827 |
| 843 if (sync_service_->HasSyncSetupCompleted()) { | 828 if (sync_service_->HasSyncSetupCompleted()) { |
| 844 std::wstring username = UTF16ToWide( | 829 std::wstring username = UTF16ToWide( |
| 845 sync_service_->GetAuthenticatedUsername()); | 830 sync_service_->GetAuthenticatedUsername()); |
| 846 status_label = l10n_util::GetStringF(IDS_SYNC_NTP_SYNCED_TO, username); | 831 status_label = l10n_util::GetStringF(IDS_SYNC_NTP_SYNCED_TO, username); |
| 847 } else if (!sync_service_->SetupInProgress() && !synced) { | 832 } else if (!sync_service_->SetupInProgress() && !synced) { |
| 848 status_label = l10n_util::GetString(IDS_SYNC_START_SYNC_BUTTON_LABEL); | 833 status_label = l10n_util::GetString(IDS_SYNC_START_SYNC_BUTTON_LABEL); |
| 849 } | 834 } |
| 850 sync_status_button_->SetText(status_label); | 835 sync_status_button_->SetText(status_label); |
| 851 sync_status_button_->GetParent()->Layout(); | 836 sync_status_button_->GetParent()->Layout(); |
| 852 } | 837 } |
| 853 | 838 |
| 854 void BookmarkManagerView::OpenSyncMyBookmarksDialog() { | 839 void BookmarkManagerView::OpenSyncMyBookmarksDialog() { |
| 855 if (!sync_service_) | 840 if (!sync_service_) |
| 856 return; | 841 return; |
| 857 if (sync_service_->HasSyncSetupCompleted()) { | 842 if (sync_service_->HasSyncSetupCompleted()) { |
| 858 ShowOptionsWindow(OPTIONS_PAGE_CONTENT, OPTIONS_GROUP_NONE, profile_); | 843 ShowOptionsWindow(OPTIONS_PAGE_CONTENT, OPTIONS_GROUP_NONE, profile_); |
| 859 } else { | 844 } else { |
| 860 sync_service_->EnableForUser(); | 845 sync_service_->EnableForUser(); |
| 861 ProfileSyncService::SyncEvent( | 846 ProfileSyncService::SyncEvent( |
| 862 ProfileSyncService::START_FROM_BOOKMARK_MANAGER); | 847 ProfileSyncService::START_FROM_BOOKMARK_MANAGER); |
| 863 } | 848 } |
| 864 } | 849 } |
| 865 #endif // defined(BROWSER_SYNC) | |
| OLD | NEW |