blob: d3e476d5eaf12d9da88e01d3de081bfb9360f4a0 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.recent_tabs.ui;
import static org.chromium.chrome.browser.recent_tabs.ui.ForeignSessionItemProperties.IS_SELECTED;
import static org.chromium.chrome.browser.recent_tabs.ui.ForeignSessionItemProperties.ON_CLICK_LISTENER;
import static org.chromium.chrome.browser.recent_tabs.ui.ForeignSessionItemProperties.SESSION_PROFILE;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import org.chromium.chrome.browser.recent_tabs.ForeignSessionHelper.ForeignSession;
import org.chromium.chrome.browser.recent_tabs.ForeignSessionHelper.ForeignSessionWindow;
import org.chromium.chrome.browser.recent_tabs.R;
import org.chromium.components.sync_device_info.FormFactor;
import org.chromium.ui.modelutil.PropertyKey;
import org.chromium.ui.modelutil.PropertyModel;
/** A binder class for device items on the detail sheet. */
public class ForeignSessionItemViewBinder {
static View create(ViewGroup parent) {
return LayoutInflater.from(parent.getContext())
.inflate(R.layout.restore_tabs_foreign_session_item, parent, false);
}
static void bind(PropertyModel model, View view, PropertyKey propertyKey) {
if (propertyKey == SESSION_PROFILE) {
ForeignSession session = model.get(SESSION_PROFILE);
TextView sessionNameView =
view.findViewById(R.id.restore_tabs_detail_sheet_device_name);
sessionNameView.setText(session.name);
ImageView deviceIconView =
view.findViewById(R.id.restore_tabs_device_sheet_device_icon);
if (session.formFactor == FormFactor.PHONE) {
deviceIconView.setImageResource(R.drawable.restore_tabs_phone_icon);
} else if (session.formFactor == FormFactor.TABLET) {
deviceIconView.setImageResource(R.drawable.restore_tabs_tablet_icon);
}
assert (session.formFactor == FormFactor.PHONE
|| session.formFactor == FormFactor.TABLET)
: "Unsupported form factor device retrieved.";
int tabCount = 0;
for (ForeignSessionWindow window : session.windows) {
tabCount += window.tabs.size();
}
CharSequence lastModifiedTimeString = DateUtils.getRelativeTimeSpanString(
session.modifiedTime, System.currentTimeMillis(), 0);
String sessionInfo = view.getContext().getResources().getQuantityString(
R.plurals.restore_tabs_promo_sheet_device_info, tabCount,
Integer.toString(tabCount), lastModifiedTimeString);
TextView sessionInfoView =
view.findViewById(R.id.restore_tabs_detail_sheet_session_info);
sessionInfoView.setText(sessionInfo);
} else if (propertyKey == ON_CLICK_LISTENER) {
view.setOnClickListener((v) -> model.get(ON_CLICK_LISTENER).run());
} else if (propertyKey == IS_SELECTED) {
view.findViewById(R.id.restore_tabs_detail_sheet_device_item_selected_icon)
.setVisibility(model.get(IS_SELECTED) ? View.VISIBLE : View.GONE);
}
}
}