diff options
Diffstat (limited to 'chrome/browser/extensions/theme_installed_infobar_delegate.cc')
-rw-r--r-- | chrome/browser/extensions/theme_installed_infobar_delegate.cc | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/chrome/browser/extensions/theme_installed_infobar_delegate.cc b/chrome/browser/extensions/theme_installed_infobar_delegate.cc new file mode 100644 index 0000000..2084548 --- /dev/null +++ b/chrome/browser/extensions/theme_installed_infobar_delegate.cc @@ -0,0 +1,76 @@ +// Copyright (c) 2009 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/extensions/theme_installed_infobar_delegate.h" + +#include "app/l10n_util.h" +#include "app/resource_bundle.h" +#include "base/string_util.h" +#include "chrome/browser/extensions/extensions_service.h" +#include "chrome/browser/profile.h" +#include "chrome/browser/tab_contents/tab_contents.h" +#include "chrome/common/extensions/extension.h" +#include "grit/generated_resources.h" +#include "grit/theme_resources.h" + +ThemeInstalledInfoBarDelegate::ThemeInstalledInfoBarDelegate( + TabContents* tab_contents, const std::string& name, + const std::string& previous_theme_id) + : ConfirmInfoBarDelegate(tab_contents), + profile_(tab_contents->profile()), + name_(name), + previous_theme_id_(previous_theme_id) { +} + +void ThemeInstalledInfoBarDelegate::InfoBarClosed() { + delete this; +} + +std::wstring ThemeInstalledInfoBarDelegate::GetMessageText() const { + return l10n_util::GetStringF(IDS_THEME_INSTALL_INFOBAR_LABEL, + UTF8ToWide(name_)); +} + +SkBitmap* ThemeInstalledInfoBarDelegate::GetIcon() const { + // TODO(aa): Reply with the theme's icon, but this requires reading it + // asynchronously from disk. + return ResourceBundle::GetSharedInstance().GetBitmapNamed( + IDR_INFOBAR_THEME); +} + +ThemeInstalledInfoBarDelegate* + ThemeInstalledInfoBarDelegate::AsThemePreviewInfobarDelegate() { + return this; +} + +int ThemeInstalledInfoBarDelegate::GetButtons() const { + return BUTTON_CANCEL; +} + +std::wstring ThemeInstalledInfoBarDelegate::GetButtonLabel( + ConfirmInfoBarDelegate::InfoBarButton button) const { + switch (button) { + case BUTTON_CANCEL: { + return l10n_util::GetString(IDS_THEME_INSTALL_INFOBAR_UNDO_BUTTON); + } + default: + return L""; + } +} + +bool ThemeInstalledInfoBarDelegate::Cancel() { + if (!previous_theme_id_.empty()) { + ExtensionsService* service = profile_->GetExtensionsService(); + if (service) { + Extension* previous_theme = service->GetExtensionById(previous_theme_id_); + if (previous_theme) { + profile_->SetTheme(previous_theme); + return true; + } + } + } + + profile_->ClearTheme(); + return true; +} |