// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ash/clipboard/views/clipboard_history_label.h"

#include "ash/clipboard/clipboard_history_util.h"
#include "ash/clipboard/views/clipboard_history_view_constants.h"
#include "ash/style/typography.h"
#include "ui/base/metadata/metadata_impl_macros.h"
#include "ui/chromeos/styles/cros_tokens_color_mappings.h"
#include "ui/views/style/typography.h"
#include "ui/views/style/typography_provider.h"

namespace ash {

ClipboardHistoryLabel::ClipboardHistoryLabel(const std::u16string& text,
                                             gfx::ElideBehavior elide_behavior,
                                             size_t max_lines)
    : views::Label(text) {
  SetAutoColorReadabilityEnabled(false);
  SetElideBehavior(elide_behavior);
  SetEnabledColor(cros_tokens::kTextColorPrimary);
  SetHorizontalAlignment(gfx::ALIGN_LEFT);
  SetMaxLines(max_lines);

  // Available horizontal space for text item contents.
  const int contents_width =
      clipboard_history_util::GetPreferredItemViewWidth() -
      ClipboardHistoryViews::kContentsInsets.width();
  TypographyProvider::Get()->StyleLabel(TypographyToken::kCrosButton2, *this);

  // Reduce width to accommodate an icon when the refresh is enabled.
  const int label_width = contents_width -
                          ClipboardHistoryViews::kIconSize.width() -
                          ClipboardHistoryViews::kIconMargins.width();

  if (max_lines != 1u) {
    SetMultiLine(true);
    SizeToFit(label_width);
  } else {
    SetPreferredSize(
        gfx::Size(label_width, ClipboardHistoryViews::kLabelPreferredHeight));
  }
}

BEGIN_METADATA(ClipboardHistoryLabel)
END_METADATA

}  // namespace ash
