| Index: chrome/browser/translate/translate_infobar_delegate2.h
|
| diff --git a/chrome/browser/translate/translate_infobar_delegate2.h b/chrome/browser/translate/translate_infobar_delegate2.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2129776d28b9122433848e354e78a900cc9f32c3
|
| --- /dev/null
|
| +++ b/chrome/browser/translate/translate_infobar_delegate2.h
|
| @@ -0,0 +1,178 @@
|
| +// Copyright (c) 2010 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.
|
| +
|
| +#ifndef CHROME_BROWSER_TRANSLATE_TRANSLATE_INFOBAR_DELEGATE2_H
|
| +#define CHROME_BROWSER_TRANSLATE_TRANSLATE_INFOBAR_DELEGATE2_H
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "chrome/browser/tab_contents/infobar_delegate.h"
|
| +#include "chrome/browser/translate/translate_prefs.h"
|
| +#include "chrome/common/translate_errors.h"
|
| +
|
| +class SkBitmap;
|
| +class TranslateInfoBarView;
|
| +
|
| +class TranslateInfoBarDelegate2 : public InfoBarDelegate {
|
| + public:
|
| + // The different types of infobars that can be shown for translation.
|
| + enum Type {
|
| + BEFORE_TRANSLATE,
|
| + TRANSLATING,
|
| + AFTER_TRANSLATE,
|
| + TRANSLATION_ERROR
|
| + };
|
| +
|
| + // The types of background color animations.
|
| + enum BackgroundAnimationType {
|
| + NONE,
|
| + NORMAL_TO_ERROR,
|
| + ERROR_TO_NORMAL
|
| + };
|
| +
|
| + // Factory method.
|
| + // The original and target language specified are the ASCII language codes
|
| + // (ex: en, fr...).
|
| + // Returns NULL if it failed, typically if |original_language| or
|
| + // |target_language| is not a supported language.
|
| + // |error| should be set to NONE if |infobar_type| is not TRANSLATION_ERROR.
|
| + static TranslateInfoBarDelegate2* CreateInstance(
|
| + Type infobar_type,
|
| + TranslateErrors::Type error,
|
| + TabContents* tab_contents,
|
| + const std::string& original_language,
|
| + const std::string& target_language);
|
| +
|
| + // Returns the number of languages supported.
|
| + int GetLanguageCount() const;
|
| +
|
| + // Returns the ISO code for the language at |index|.
|
| + const std::string& GetLanguageCodeAt(int index) const;
|
| +
|
| + // Returns the displayable name for the language at |index|.
|
| + const string16& GetLanguageDisplayableNameAt(int index) const;
|
| +
|
| + TabContents* tab_contents() const { return tab_contents_; }
|
| +
|
| + Type type() const { return type_; }
|
| +
|
| + int original_language_index() const { return original_language_index_; }
|
| + int target_language_index() const { return target_language_index_; }
|
| +
|
| + // Convenience methods.
|
| + const std::string& GetOriginalLanguageCode() const;
|
| + const std::string& GetTargetLanguageCode() const;
|
| +
|
| + // Called by the InfoBar to notify that the original/target language has
|
| + // changed and is now the language at |language_index|.
|
| + virtual void SetOriginalLanguage(int language_index);
|
| + virtual void SetTargetLanguage(int language_index);
|
| +
|
| + // Returns true if the current infobar indicates an error (in which case it
|
| + // should get a yellow background instead of a blue one).
|
| + bool IsError();
|
| +
|
| + // Returns what kind of background fading effect the infobar should use when
|
| + // its is shown.
|
| + BackgroundAnimationType background_animation_type() const {
|
| + return background_animation_;
|
| + }
|
| +
|
| + virtual void Translate();
|
| + virtual void RevertTranslation();
|
| +
|
| + // Called when the user declines to translate a page, by either closing the
|
| + // infobar or pressing the "Don't translate" button.
|
| + void TranslationDeclined();
|
| +
|
| + // InfoBarDelegate implementation:
|
| + virtual InfoBar* CreateInfoBar();
|
| + void InfoBarDismissed();
|
| + virtual SkBitmap* GetIcon() const;
|
| + virtual InfoBarDelegate::Type GetInfoBarType();
|
| + virtual TranslateInfoBarDelegate2* AsTranslateInfoBarDelegate2() {
|
| + return this;
|
| + }
|
| +
|
| + // Methods called by the Options menu delegate.
|
| + virtual bool IsLanguageBlacklisted();
|
| + virtual void ToggleLanguageBlacklist();
|
| + virtual bool IsSiteBlacklisted();
|
| + virtual void ToggleSiteBlacklist();
|
| + virtual bool ShouldAlwaysTranslate();
|
| + virtual void ToggleAlwaysTranslate();
|
| +
|
| + // The following methods are called by the infobar that displays the status
|
| + // while translating and also the one displaying the error message.
|
| + string16 GetMessageInfoBarText();
|
| + string16 GetMessageInfoBarButtonText();
|
| + void MessageInfoBarButtonPressed();
|
| +
|
| + // Sets this infobar background animation based on the previous infobar shown.
|
| + // A fading background effect is used when transitioning from a normal state
|
| + // to an error state (and vice-versa).
|
| + void UpdateBackgroundAnimation(TranslateInfoBarDelegate2* previous_infobar);
|
| +
|
| + // Convenience method that returns the displayable language name for
|
| + // |language_code| in the current application locale.
|
| + static string16 GetLanguageDisplayableName(const std::string& language_code);
|
| +
|
| + // Adds the strings that should be displayed in the after translate infobar to
|
| + // |strings|. The text in that infobar is:
|
| + // "The page has been translated from <lang1> to <lang2>."
|
| + // Because <lang1> and <lang2> are displayed in menu buttons, the text is
|
| + // split in 3 chunks. |swap_languages| is set to true if <lang1> and <lang2>
|
| + // should be inverted (some languages express the sentense as "The page has
|
| + // been translate to <lang2> from <lang1>.").
|
| + static void GetAfterTranslateStrings(std::vector<string16>* strings,
|
| + bool* swap_languages);
|
| +
|
| + private:
|
| + typedef std::pair<std::string, string16> LanguageNamePair;
|
| +
|
| + // Gets the host of the page being translated, or an empty string if no URL is
|
| + // associated with the current page.
|
| + std::string GetPageHost();
|
| +
|
| + TranslateInfoBarDelegate2(Type infobar_type,
|
| + TranslateErrors::Type error,
|
| + TabContents* tab_contents,
|
| + const std::string& original_language,
|
| + const std::string& target_language);
|
| +
|
| + Type type_;
|
| +
|
| + // The type of fading animation if any that should be used when showing this
|
| + // infobar.
|
| + BackgroundAnimationType background_animation_;
|
| +
|
| + TabContents* tab_contents_;
|
| +
|
| + // The list supported languages for translation.
|
| + // The pair first string is the language ISO code (ex: en, fr...), the second
|
| + // string is the displayable name on the current locale.
|
| + // The languages are sorted alphabetically based on the displayable name.
|
| + std::vector<LanguageNamePair> languages_;
|
| +
|
| + // The index for language the page is originally in.
|
| + int original_language_index_;
|
| +
|
| + // The index for language the page should be translated to.
|
| + int target_language_index_;
|
| +
|
| + // The error that occurred when trying to translate (NONE if no error).
|
| + TranslateErrors::Type error_;
|
| +
|
| + // The current infobar view.
|
| + TranslateInfoBarView* infobar_view_;
|
| +
|
| + // The translation related preferences.
|
| + TranslatePrefs prefs_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TranslateInfoBarDelegate2);
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_TRANSLATE_TRANSLATE_INFOBAR_DELEGATE2_H
|
| +
|
|
|