summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
author Joshua Trask <joshtrask@google.com> 2023-12-19 20:56:49 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-12-19 20:56:49 +0000
commit474f4cca2a2c554895910173f1465f131e2b0f79 (patch)
treeb2411844a46d2f3ad4389783a71a67e974df3930 /java/src
parent9936ef030349956c84a796a5b1b12f5fcb08874c (diff)
parentc66c3b8e0d3c9ed894c3d69d84d52e0ecff98a37 (diff)
Merge "Move `setupProfileTabs()` to the pager adapter" into main
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/intentresolver/v2/ChooserActivity.java73
-rw-r--r--java/src/com/android/intentresolver/v2/MultiProfilePagerAdapter.java87
-rw-r--r--java/src/com/android/intentresolver/v2/ResolverActivity.java72
3 files changed, 119 insertions, 113 deletions
diff --git a/java/src/com/android/intentresolver/v2/ChooserActivity.java b/java/src/com/android/intentresolver/v2/ChooserActivity.java
index f05a8ab3..114cb5fb 100644
--- a/java/src/com/android/intentresolver/v2/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/v2/ChooserActivity.java
@@ -88,11 +88,9 @@ import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowInsets;
import android.view.WindowManager;
-import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TabHost;
-import android.widget.TabWidget;
import android.widget.TextView;
import android.widget.Toast;
@@ -1159,63 +1157,24 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
private void setupProfileTabs() {
TabHost tabHost = findViewById(com.android.internal.R.id.profile_tabhost);
- tabHost.setup();
ViewPager viewPager = findViewById(com.android.internal.R.id.profile_pager);
- viewPager.setSaveEnabled(false);
-
- Button personalButton = (Button) getLayoutInflater().inflate(
- R.layout.resolver_profile_tab_button, tabHost.getTabWidget(), false);
- personalButton.setText(mDevicePolicyResources.getPersonalTabLabel());
- personalButton.setContentDescription(
- mDevicePolicyResources.getPersonalTabAccessibilityLabel());
-
- TabHost.TabSpec tabSpec = tabHost.newTabSpec(TAB_TAG_PERSONAL)
- .setContent(com.android.internal.R.id.profile_pager)
- .setIndicator(personalButton);
- tabHost.addTab(tabSpec);
-
- Button workButton = (Button) getLayoutInflater().inflate(
- R.layout.resolver_profile_tab_button, tabHost.getTabWidget(), false);
- workButton.setText(mDevicePolicyResources.getWorkTabLabel());
- workButton.setContentDescription(mDevicePolicyResources.getWorkTabAccessibilityLabel());
-
- tabSpec = tabHost.newTabSpec(TAB_TAG_WORK)
- .setContent(com.android.internal.R.id.profile_pager)
- .setIndicator(workButton);
- tabHost.addTab(tabSpec);
-
- TabWidget tabWidget = tabHost.getTabWidget();
- tabWidget.setVisibility(View.VISIBLE);
-
- Runnable updateActiveTabStyle = () -> {
- int currentTab = tabHost.getCurrentTab();
- TextView selected = (TextView) tabHost.getTabWidget().getChildAt(currentTab);
- TextView unselected = (TextView) tabHost.getTabWidget().getChildAt(1 - currentTab);
- selected.setSelected(true);
- unselected.setSelected(false);
- };
-
- updateActiveTabStyle.run();
-
- tabHost.setOnTabChangedListener(tabId -> {
- updateActiveTabStyle.run();
- if (TAB_TAG_PERSONAL.equals(tabId)) {
- viewPager.setCurrentItem(0);
- } else {
- viewPager.setCurrentItem(1);
- }
- onProfileTabSelected(viewPager.getCurrentItem());
- });
- viewPager.setVisibility(View.VISIBLE);
- tabHost.setCurrentTab(mChooserMultiProfilePagerAdapter.getCurrentPage());
- mChooserMultiProfilePagerAdapter.setOnProfileSelectedListener(
+ mChooserMultiProfilePagerAdapter.setupProfileTabs(
+ getLayoutInflater(),
+ tabHost,
+ viewPager,
+ R.layout.resolver_profile_tab_button,
+ com.android.internal.R.id.profile_pager,
+ mDevicePolicyResources.getPersonalTabLabel(),
+ mDevicePolicyResources.getPersonalTabAccessibilityLabel(),
+ TAB_TAG_PERSONAL,
+ mDevicePolicyResources.getWorkTabLabel(),
+ mDevicePolicyResources.getWorkTabAccessibilityLabel(),
+ TAB_TAG_WORK,
+ () -> onProfileTabSelected(viewPager.getCurrentItem()),
new MultiProfilePagerAdapter.OnProfileSelectedListener() {
@Override
- public void onProfilePageSelected(@Profile int profileId, int pageNumber) {
- tabHost.setCurrentTab(pageNumber);
-
- }
+ public void onProfilePageSelected(@Profile int profileId, int pageNumber) {}
@Override
public void onProfilePageStateChanged(int state) {
@@ -1223,7 +1182,9 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
}
});
mOnSwitchOnWorkSelectedListener = () -> {
- final View workTab = tabHost.getTabWidget().getChildAt(1);
+ final View workTab =
+ tabHost.getTabWidget().getChildAt(
+ mChooserMultiProfilePagerAdapter.getPageNumberForProfile(PROFILE_WORK));
workTab.setFocusable(true);
workTab.setFocusableInTouchMode(true);
workTab.requestFocus();
diff --git a/java/src/com/android/intentresolver/v2/MultiProfilePagerAdapter.java b/java/src/com/android/intentresolver/v2/MultiProfilePagerAdapter.java
index dc821e88..3387a73f 100644
--- a/java/src/com/android/intentresolver/v2/MultiProfilePagerAdapter.java
+++ b/java/src/com/android/intentresolver/v2/MultiProfilePagerAdapter.java
@@ -19,8 +19,12 @@ import android.annotation.IntDef;
import android.annotation.Nullable;
import android.os.Trace;
import android.os.UserHandle;
+import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TabHost;
+import android.widget.TextView;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
@@ -170,7 +174,7 @@ class MultiProfilePagerAdapter<
return -1;
}
- private int getPageNumberForProfile(@Profile int profile) {
+ public int getPageNumberForProfile(@Profile int profile) {
for (int i = 0; i < mItems.size(); ++i) {
if (profile == mItems.get(i).mProfile) {
return i;
@@ -179,8 +183,85 @@ class MultiProfilePagerAdapter<
return -1;
}
- public void setOnProfileSelectedListener(OnProfileSelectedListener listener) {
- mOnProfileSelectedListener = listener;
+ private void updateActiveTabStyle(TabHost tabHost) {
+ int currentTab = tabHost.getCurrentTab();
+
+ for (int pageNumber = 0; pageNumber < getItemCount(); ++pageNumber) {
+ // TODO: can we avoid this downcast by pushing our knowledge of the intended view type
+ // somewhere else?
+ TextView tabText = (TextView) tabHost.getTabWidget().getChildAt(pageNumber);
+ tabText.setSelected(currentTab == pageNumber);
+ }
+ }
+
+ public void setupProfileTabs(
+ LayoutInflater layoutInflater,
+ TabHost tabHost,
+ ViewPager viewPager,
+ int tabButtonLayoutResId,
+ int tabPageContentViewId,
+ String personalTabLabel,
+ String personalTabAccessibilityLabel,
+ String personalTabTag,
+ String workTabLabel,
+ String workTabAccessibilityLabel,
+ String workTabTag,
+ Runnable onTabChangeListener,
+ MultiProfilePagerAdapter.OnProfileSelectedListener clientOnProfileSelectedListener) {
+ tabHost.setup();
+ viewPager.setSaveEnabled(false);
+
+ Button personalButton = (Button) layoutInflater.inflate(
+ tabButtonLayoutResId, tabHost.getTabWidget(), false);
+ personalButton.setText(personalTabLabel);
+ personalButton.setContentDescription(personalTabAccessibilityLabel);
+
+ TabHost.TabSpec personalTabSpec = tabHost.newTabSpec(personalTabTag)
+ .setContent(tabPageContentViewId)
+ .setIndicator(personalButton);
+ tabHost.addTab(personalTabSpec);
+
+ Button workButton = (Button) layoutInflater.inflate(
+ tabButtonLayoutResId, tabHost.getTabWidget(), false);
+ workButton.setText(workTabLabel);
+ workButton.setContentDescription(workTabAccessibilityLabel);
+
+ TabHost.TabSpec workTabSpec = tabHost.newTabSpec(workTabTag)
+ .setContent(tabPageContentViewId)
+ .setIndicator(workButton);
+ tabHost.addTab(workTabSpec);
+
+ tabHost.getTabWidget().setVisibility(View.VISIBLE);
+
+ updateActiveTabStyle(tabHost);
+
+ tabHost.setOnTabChangedListener(tabId -> {
+ updateActiveTabStyle(tabHost);
+ // TODO: update for 3+ tabs.
+ if (personalTabTag.equals(tabId)) {
+ viewPager.setCurrentItem(0);
+ } else {
+ viewPager.setCurrentItem(1);
+ }
+ onTabChangeListener.run();
+ });
+
+ viewPager.setVisibility(View.VISIBLE);
+ tabHost.setCurrentTab(getCurrentPage());
+ mOnProfileSelectedListener =
+ new MultiProfilePagerAdapter.OnProfileSelectedListener() {
+ @Override
+ public void onProfilePageSelected(@Profile int profileId, int pageNumber) {
+ tabHost.setCurrentTab(pageNumber);
+ clientOnProfileSelectedListener.onProfilePageSelected(
+ profileId, pageNumber);
+ }
+
+ @Override
+ public void onProfilePageStateChanged(int state) {
+ clientOnProfileSelectedListener.onProfilePageStateChanged(state);
+ }
+ };
}
/**
diff --git a/java/src/com/android/intentresolver/v2/ResolverActivity.java b/java/src/com/android/intentresolver/v2/ResolverActivity.java
index 9905cc2c..b25a6e8a 100644
--- a/java/src/com/android/intentresolver/v2/ResolverActivity.java
+++ b/java/src/com/android/intentresolver/v2/ResolverActivity.java
@@ -81,7 +81,6 @@ import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Space;
import android.widget.TabHost;
-import android.widget.TabWidget;
import android.widget.TextView;
import android.widget.Toast;
@@ -1893,72 +1892,37 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
private void setupProfileTabs() {
maybeHideDivider();
+
TabHost tabHost = findViewById(com.android.internal.R.id.profile_tabhost);
- tabHost.setup();
ViewPager viewPager = findViewById(com.android.internal.R.id.profile_pager);
- viewPager.setSaveEnabled(false);
-
- Button personalButton = (Button) getLayoutInflater().inflate(
- R.layout.resolver_profile_tab_button, tabHost.getTabWidget(), false);
- personalButton.setText(mDevicePolicyResources.getPersonalTabLabel());
- personalButton.setContentDescription(
- mDevicePolicyResources.getPersonalTabAccessibilityLabel());
-
- TabHost.TabSpec tabSpec = tabHost.newTabSpec(TAB_TAG_PERSONAL)
- .setContent(com.android.internal.R.id.profile_pager)
- .setIndicator(personalButton);
- tabHost.addTab(tabSpec);
-
- Button workButton = (Button) getLayoutInflater().inflate(
- R.layout.resolver_profile_tab_button, tabHost.getTabWidget(), false);
- workButton.setText(mDevicePolicyResources.getWorkTabLabel());
- workButton.setContentDescription(mDevicePolicyResources.getWorkTabAccessibilityLabel());
-
- tabSpec = tabHost.newTabSpec(TAB_TAG_WORK)
- .setContent(com.android.internal.R.id.profile_pager)
- .setIndicator(workButton);
- tabHost.addTab(tabSpec);
-
- TabWidget tabWidget = tabHost.getTabWidget();
- tabWidget.setVisibility(View.VISIBLE);
-
- Runnable updateActiveTabStyle = () -> {
- int currentTab = tabHost.getCurrentTab();
- TextView selected = (TextView) tabHost.getTabWidget().getChildAt(currentTab);
- TextView unselected = (TextView) tabHost.getTabWidget().getChildAt(1 - currentTab);
- selected.setSelected(true);
- unselected.setSelected(false);
- };
-
- updateActiveTabStyle.run();
-
- tabHost.setOnTabChangedListener(tabId -> {
- updateActiveTabStyle.run();
- if (TAB_TAG_PERSONAL.equals(tabId)) {
- viewPager.setCurrentItem(0);
- } else {
- viewPager.setCurrentItem(1);
- }
- onProfileTabSelected(viewPager.getCurrentItem());
- });
- viewPager.setVisibility(View.VISIBLE);
- tabHost.setCurrentTab(mMultiProfilePagerAdapter.getCurrentPage());
- mMultiProfilePagerAdapter.setOnProfileSelectedListener(
+ mMultiProfilePagerAdapter.setupProfileTabs(
+ getLayoutInflater(),
+ tabHost,
+ viewPager,
+ R.layout.resolver_profile_tab_button,
+ com.android.internal.R.id.profile_pager,
+ mDevicePolicyResources.getPersonalTabLabel(),
+ mDevicePolicyResources.getPersonalTabAccessibilityLabel(),
+ TAB_TAG_PERSONAL,
+ mDevicePolicyResources.getWorkTabLabel(),
+ mDevicePolicyResources.getWorkTabAccessibilityLabel(),
+ TAB_TAG_WORK,
+ () -> onProfileTabSelected(viewPager.getCurrentItem()),
new MultiProfilePagerAdapter.OnProfileSelectedListener() {
@Override
public void onProfilePageSelected(@Profile int profileId, int pageNumber) {
- tabHost.setCurrentTab(pageNumber);
resetButtonBar();
resetCheckedItem();
}
@Override
- public void onProfilePageStateChanged(int state) {
- }
+ public void onProfilePageStateChanged(int state) {}
});
mOnSwitchOnWorkSelectedListener = () -> {
- final View workTab = tabHost.getTabWidget().getChildAt(1);
+ final View workTab =
+ tabHost.getTabWidget().getChildAt(
+ mMultiProfilePagerAdapter.getPageNumberForProfile(PROFILE_WORK));
workTab.setFocusable(true);
workTab.setFocusableInTouchMode(true);
workTab.requestFocus();