blob: 5269ca10a1317692e62a3be7ea4514bb230c0f3d [file] [log] [blame]
// Copyright 2014 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 "ui/app_list/views/all_apps_tile_item_view.h"
#include "base/metrics/histogram_macros.h"
#include "ui/app_list/app_list_constants.h"
#include "ui/app_list/views/contents_view.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/canvas.h"
#include "ui/gfx/image/canvas_image_source.h"
#include "ui/resources/grit/ui_resources.h"
#include "ui/strings/grit/ui_strings.h"
namespace app_list {
namespace {
class AllAppsImageSource : public gfx::CanvasImageSource {
public:
AllAppsImageSource(const gfx::ImageSkia& icon, const gfx::Size& size)
: gfx::CanvasImageSource(size, false), icon_(icon) {}
~AllAppsImageSource() override {}
private:
// gfx::CanvasImageSource override:
void Draw(gfx::Canvas* canvas) override {
canvas->DrawImageInt(icon_, (size().width() - icon_.size().width()) / 2,
(size().height() - icon_.size().height()) / 2);
}
gfx::ImageSkia icon_;
DISALLOW_COPY_AND_ASSIGN(AllAppsImageSource);
};
} // namespace
AllAppsTileItemView::AllAppsTileItemView(ContentsView* contents_view)
: contents_view_(contents_view) {
SetTitle(l10n_util::GetStringUTF16(IDS_APP_LIST_ALL_APPS));
SetHoverStyle(TileItemView::HOVER_STYLE_ANIMATE_SHADOW);
UpdateIcon();
}
AllAppsTileItemView::~AllAppsTileItemView() {
}
void AllAppsTileItemView::UpdateIcon() {
ResourceBundle& rb = ResourceBundle::GetSharedInstance();
gfx::Size canvas_size = gfx::Size(kTileIconSize, kTileIconSize);
AllAppsImageSource* source = new AllAppsImageSource(
*rb.GetImageNamed(IDR_ALL_APPS_DROP_DOWN).ToImageSkia(), canvas_size);
gfx::ImageSkia image(source, canvas_size);
SetIcon(image);
}
void AllAppsTileItemView::ButtonPressed(views::Button* sender,
const ui::Event& event) {
UMA_HISTOGRAM_ENUMERATION(kPageOpenedHistogram, AppListModel::STATE_APPS,
AppListModel::STATE_LAST);
contents_view_->SetActiveState(AppListModel::STATE_APPS);
}
} // namespace app_list