blob: fc627eb78c664b6e2031c30a88cb7dccb1732e9a [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/infobars/after_translate_infobar_controller.h"
#include "base/strings/sys_string_conversions.h"
#import "chrome/browser/ui/cocoa/infobars/infobar_utilities.h"
using InfoBarUtilities::MoveControl;
using InfoBarUtilities::VerifyControlOrderAndSpacing;
@implementation AfterTranslateInfobarController
- (void)loadLabelText {
autodeterminedSourceLanguage_ = ([self delegate]->original_language_index() ==
TranslateInfoBarDelegate::kNoIndex);
std::vector<base::string16> strings;
TranslateInfoBarDelegate::GetAfterTranslateStrings(
&strings, &swappedLanugageButtons_, autodeterminedSourceLanguage_);
DCHECK_EQ(autodeterminedSourceLanguage_ ? 2U : 3U, strings.size());
[label1_ setStringValue:base::SysUTF16ToNSString(strings[0])];
[label2_ setStringValue:base::SysUTF16ToNSString(strings[1])];
if (strings.size() == 3U)
[label3_ setStringValue:base::SysUTF16ToNSString(strings[2])];
}
- (void)layout {
[self removeOkCancelButtons];
[optionsPopUp_ setHidden:NO];
NSView* firstPopup = fromLanguagePopUp_;
NSView* lastPopup = toLanguagePopUp_;
if (swappedLanugageButtons_ || autodeterminedSourceLanguage_) {
firstPopup = toLanguagePopUp_;
lastPopup = fromLanguagePopUp_;
}
NSView* lastControl = lastPopup;
MoveControl(label1_, firstPopup, spaceBetweenControls_ / 2, true);
if (autodeterminedSourceLanguage_) {
MoveControl(firstPopup, label2_, 0, true);
lastControl = label2_;
} else {
MoveControl(firstPopup, label2_, spaceBetweenControls_ / 2, true);
MoveControl(label2_, lastPopup, spaceBetweenControls_ / 2, true);
MoveControl(lastPopup, label3_, 0, true);
lastControl = label3_;
}
MoveControl(lastControl, showOriginalButton_, spaceBetweenControls_ * 2,
true);
}
- (NSArray*)visibleControls {
if (autodeterminedSourceLanguage_) {
return [NSArray arrayWithObjects:label1_.get(), toLanguagePopUp_.get(),
label2_.get(), showOriginalButton_.get(), nil];
}
return [NSArray arrayWithObjects:label1_.get(), fromLanguagePopUp_.get(),
label2_.get(), toLanguagePopUp_.get(), label3_.get(),
showOriginalButton_.get(), nil];
}
- (bool)verifyLayout {
if ([optionsPopUp_ isHidden])
return false;
return [super verifyLayout];
}
@end