OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #import "chrome/browser/cocoa/bookmark_bubble_controller.h" | 5 #import "chrome/browser/cocoa/bookmark_bubble_controller.h" |
6 | 6 |
7 #include "app/l10n_util_mac.h" | 7 #include "app/l10n_util_mac.h" |
8 #include "base/mac_util.h" | 8 #include "base/mac_util.h" |
9 #include "base/sys_string_conversions.h" | 9 #include "base/sys_string_conversions.h" |
10 #include "base/utf_string_conversions.h" // TODO(viettrungluu): remove | 10 #include "base/utf_string_conversions.h" // TODO(viettrungluu): remove |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 // |-remove:| calls |-close| so don't do it. | 271 // |-remove:| calls |-close| so don't do it. |
272 [self remove:sender]; | 272 [self remove:sender]; |
273 } else { | 273 } else { |
274 [self ok:sender]; | 274 [self ok:sender]; |
275 } | 275 } |
276 } | 276 } |
277 | 277 |
278 - (IBAction)remove:(id)sender { | 278 - (IBAction)remove:(id)sender { |
279 [self stopPulsingBookmarkButton]; | 279 [self stopPulsingBookmarkButton]; |
280 // TODO(viettrungluu): get rid of conversion and utf_string_conversions.h. | 280 // TODO(viettrungluu): get rid of conversion and utf_string_conversions.h. |
281 model_->SetURLStarred(node_->GetURL(), WideToUTF16Hack(node_->GetTitle()), | 281 model_->SetURLStarred(node_->GetURL(), node_->GetTitleAsString16(), false); |
282 false); | |
283 UserMetrics::RecordAction(UserMetricsAction("BookmarkBubble_Unstar"), | 282 UserMetrics::RecordAction(UserMetricsAction("BookmarkBubble_Unstar"), |
284 model_->profile()); | 283 model_->profile()); |
285 node_ = NULL; // no longer valid | 284 node_ = NULL; // no longer valid |
286 [self ok:sender]; | 285 [self ok:sender]; |
287 } | 286 } |
288 | 287 |
289 // The controller is the target of the pop up button box action so it can | 288 // The controller is the target of the pop up button box action so it can |
290 // handle when "choose another folder" was picked. | 289 // handle when "choose another folder" was picked. |
291 - (IBAction)folderChanged:(id)sender { | 290 - (IBAction)folderChanged:(id)sender { |
292 DCHECK([sender isEqual:folderPopUpButton_]); | 291 DCHECK([sender isEqual:folderPopUpButton_]); |
(...skipping 24 matching lines...) Expand all Loading... |
317 [self ok:self]; | 316 [self ok:self]; |
318 } | 317 } |
319 } | 318 } |
320 | 319 |
321 // Look at the dialog; if the user has changed anything, update the | 320 // Look at the dialog; if the user has changed anything, update the |
322 // bookmark node to reflect this. | 321 // bookmark node to reflect this. |
323 - (void)updateBookmarkNode { | 322 - (void)updateBookmarkNode { |
324 if (!node_) return; | 323 if (!node_) return; |
325 | 324 |
326 // First the title... | 325 // First the title... |
327 NSString* oldTitle = base::SysWideToNSString(node_->GetTitle()); | 326 NSString* oldTitle = base::SysUTF16ToNSString(node_->GetTitleAsString16()); |
328 NSString* newTitle = [nameTextField_ stringValue]; | 327 NSString* newTitle = [nameTextField_ stringValue]; |
329 if (![oldTitle isEqual:newTitle]) { | 328 if (![oldTitle isEqual:newTitle]) { |
330 model_->SetTitle(node_, base::SysNSStringToUTF16(newTitle)); | 329 model_->SetTitle(node_, base::SysNSStringToUTF16(newTitle)); |
331 UserMetrics::RecordAction( | 330 UserMetrics::RecordAction( |
332 UserMetricsAction("BookmarkBubble_ChangeTitleInBubble"), | 331 UserMetricsAction("BookmarkBubble_ChangeTitleInBubble"), |
333 model_->profile()); | 332 model_->profile()); |
334 } | 333 } |
335 // Then the parent folder. | 334 // Then the parent folder. |
336 const BookmarkNode* oldParent = node_->GetParent(); | 335 const BookmarkNode* oldParent = node_->GetParent(); |
337 NSMenuItem* selectedItem = [folderPopUpButton_ selectedItem]; | 336 NSMenuItem* selectedItem = [folderPopUpButton_ selectedItem]; |
338 id representedObject = [selectedItem representedObject]; | 337 id representedObject = [selectedItem representedObject]; |
339 if ([representedObject isEqual:[[self class] chooseAnotherFolderObject]]) { | 338 if ([representedObject isEqual:[[self class] chooseAnotherFolderObject]]) { |
340 // "Choose another folder..." | 339 // "Choose another folder..." |
341 return; | 340 return; |
342 } | 341 } |
343 const BookmarkNode* newParent = | 342 const BookmarkNode* newParent = |
344 static_cast<const BookmarkNode*>([representedObject pointerValue]); | 343 static_cast<const BookmarkNode*>([representedObject pointerValue]); |
345 DCHECK(newParent); | 344 DCHECK(newParent); |
346 if (oldParent != newParent) { | 345 if (oldParent != newParent) { |
347 int index = newParent->GetChildCount(); | 346 int index = newParent->GetChildCount(); |
348 model_->Move(node_, newParent, index); | 347 model_->Move(node_, newParent, index); |
349 UserMetrics::RecordAction(UserMetricsAction("BookmarkBubble_ChangeParent"), | 348 UserMetrics::RecordAction(UserMetricsAction("BookmarkBubble_ChangeParent"), |
350 model_->profile()); | 349 model_->profile()); |
351 } | 350 } |
352 } | 351 } |
353 | 352 |
354 // Fill in all information related to the folder pop up button. | 353 // Fill in all information related to the folder pop up button. |
355 - (void)fillInFolderList { | 354 - (void)fillInFolderList { |
356 [nameTextField_ setStringValue:base::SysWideToNSString(node_->GetTitle())]; | 355 [nameTextField_ |
| 356 setStringValue:base::SysUTF16ToNSString(node_->GetTitleAsString16())]; |
357 DCHECK([folderPopUpButton_ numberOfItems] == 0); | 357 DCHECK([folderPopUpButton_ numberOfItems] == 0); |
358 [self addFolderNodes:model_->root_node() | 358 [self addFolderNodes:model_->root_node() |
359 toPopUpButton:folderPopUpButton_ | 359 toPopUpButton:folderPopUpButton_ |
360 indentation:0]; | 360 indentation:0]; |
361 NSMenu* menu = [folderPopUpButton_ menu]; | 361 NSMenu* menu = [folderPopUpButton_ menu]; |
362 NSString* title = [[self class] chooseAnotherFolderString]; | 362 NSString* title = [[self class] chooseAnotherFolderString]; |
363 NSMenuItem *item = [menu addItemWithTitle:title | 363 NSMenuItem *item = [menu addItemWithTitle:title |
364 action:NULL | 364 action:NULL |
365 keyEquivalent:@""]; | 365 keyEquivalent:@""]; |
366 ChooseAnotherFolder* obj = [[self class] chooseAnotherFolderObject]; | 366 ChooseAnotherFolder* obj = [[self class] chooseAnotherFolderObject]; |
(...skipping 13 matching lines...) Expand all Loading... |
380 return l10n_util::GetNSStringWithFixup( | 380 return l10n_util::GetNSStringWithFixup( |
381 IDS_BOOMARK_BUBBLE_CHOOSER_ANOTHER_FOLDER); | 381 IDS_BOOMARK_BUBBLE_CHOOSER_ANOTHER_FOLDER); |
382 } | 382 } |
383 | 383 |
384 // For the given folder node, walk the tree and add folder names to | 384 // For the given folder node, walk the tree and add folder names to |
385 // the given pop up button. | 385 // the given pop up button. |
386 - (void)addFolderNodes:(const BookmarkNode*)parent | 386 - (void)addFolderNodes:(const BookmarkNode*)parent |
387 toPopUpButton:(NSPopUpButton*)button | 387 toPopUpButton:(NSPopUpButton*)button |
388 indentation:(int)indentation { | 388 indentation:(int)indentation { |
389 if (!model_->is_root(parent)) { | 389 if (!model_->is_root(parent)) { |
390 NSString* title = base::SysWideToNSString(parent->GetTitle()); | 390 NSString* title = base::SysUTF16ToNSString(parent->GetTitleAsString16()); |
391 NSMenu* menu = [button menu]; | 391 NSMenu* menu = [button menu]; |
392 NSMenuItem* item = [menu addItemWithTitle:title | 392 NSMenuItem* item = [menu addItemWithTitle:title |
393 action:NULL | 393 action:NULL |
394 keyEquivalent:@""]; | 394 keyEquivalent:@""]; |
395 [item setRepresentedObject:[NSValue valueWithPointer:parent]]; | 395 [item setRepresentedObject:[NSValue valueWithPointer:parent]]; |
396 [item setIndentationLevel:indentation]; | 396 [item setIndentationLevel:indentation]; |
397 ++indentation; | 397 ++indentation; |
398 } | 398 } |
399 for (int i = 0; i < parent->GetChildCount(); i++) { | 399 for (int i = 0; i < parent->GetChildCount(); i++) { |
400 const BookmarkNode* child = parent->GetChild(i); | 400 const BookmarkNode* child = parent->GetChild(i); |
(...skipping 19 matching lines...) Expand all Loading... |
420 NSInteger idx = [menu indexOfItemWithRepresentedObject:parentValue]; | 420 NSInteger idx = [menu indexOfItemWithRepresentedObject:parentValue]; |
421 DCHECK(idx != -1); | 421 DCHECK(idx != -1); |
422 [folderPopUpButton_ selectItemAtIndex:idx]; | 422 [folderPopUpButton_ selectItemAtIndex:idx]; |
423 } | 423 } |
424 | 424 |
425 - (NSPopUpButton*)folderPopUpButton { | 425 - (NSPopUpButton*)folderPopUpButton { |
426 return folderPopUpButton_; | 426 return folderPopUpButton_; |
427 } | 427 } |
428 | 428 |
429 @end // implementation BookmarkBubbleController(ExposedForUnitTesting) | 429 @end // implementation BookmarkBubbleController(ExposedForUnitTesting) |
OLD | NEW |