1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
// Copyright 2013 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.
#import "chrome/browser/ui/cocoa/autofill/autofill_header.h"
#import "chrome/browser/ui/cocoa/autofill/autofill_account_chooser.h"
#include "base/strings/sys_string_conversions.h"
#include "chrome/browser/ui/autofill/autofill_dialog_view_delegate.h"
#include "chrome/browser/ui/chrome_style.h"
#include "chrome/browser/ui/cocoa/autofill/autofill_dialog_constants.h"
namespace {
// Height of the account chooser.
const CGFloat kAccountChooserHeight = 20.0;
} // namespace
@implementation AutofillHeader
- (id)initWithDelegate:(autofill::AutofillDialogViewDelegate*)delegate {
if (self = [super initWithNibName:nil bundle:nil]) {
delegate_ = delegate;
accountChooser_.reset(
[[AutofillAccountChooser alloc] initWithFrame:NSZeroRect
delegate:delegate]);
// Set dialog title.
title_.reset([[NSTextField alloc] initWithFrame:NSZeroRect]);
[title_ setEditable:NO];
[title_ setBordered:NO];
[title_ setDrawsBackground:NO];
[title_ setFont:[NSFont systemFontOfSize:15.0]];
[title_ setStringValue:base::SysUTF16ToNSString(delegate_->DialogTitle())];
[title_ sizeToFit];
base::scoped_nsobject<NSView> view(
[[NSView alloc] initWithFrame:NSZeroRect]);
[view setSubviews:@[accountChooser_, title_]];
[self setView:view];
}
return self;
}
- (NSView*)anchorView {
return [[accountChooser_ subviews] objectAtIndex:1];
}
- (void)update {
[accountChooser_ update];
[title_ setStringValue:base::SysUTF16ToNSString(delegate_->DialogTitle())];
[title_ sizeToFit];
}
- (NSSize)preferredSize {
CGFloat height =
chrome_style::kTitleTopPadding +
kAccountChooserHeight +
autofill::kDetailVerticalPadding;
// The returned width is unused, and there's no simple way to compute the
// account chooser's width, so just return 0 for the width.
return NSMakeSize(0, height);
}
- (void)performLayout {
NSRect bounds = [[self view] bounds];
[title_ setFrameOrigin:NSMakePoint(chrome_style::kHorizontalPadding,
autofill::kDetailVerticalPadding)];
CGFloat accountChooserLeftX =
NSMaxX([title_ frame]) + chrome_style::kHorizontalPadding;
CGFloat accountChooserWidth =
NSMaxX(bounds) - chrome_style::kHorizontalPadding - accountChooserLeftX;
NSRect accountChooserFrame =
NSMakeRect(accountChooserLeftX, autofill::kDetailVerticalPadding,
accountChooserWidth, kAccountChooserHeight);
[accountChooser_ setFrame:accountChooserFrame];
[accountChooser_ performLayout];
}
@end
|