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 |