Loading res/layout/fragment_setup_actions.xml +3 −12 Original line number Diff line number Diff line Loading @@ -12,17 +12,8 @@ See the License for the specific language governing permissions and limitations under the License. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView <androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="0dp" /> <View style="@style/settingSeparator" /> </LinearLayout> android:layout_height="match_parent" android:orientation="vertical" /> res/layout/fragment_setup_triggers.xml +0 −2 Original line number Diff line number Diff line Loading @@ -41,6 +41,4 @@ android:paddingEnd="@dimen/pager_tabs_padding"/> </androidx.viewpager.widget.ViewPager> <View style="@style/settingSeparator" /> </LinearLayout> res/values/styles.xml +0 −8 Original line number Diff line number Diff line Loading @@ -133,14 +133,6 @@ <item name="android:widgetLayout">@layout/preference_profiles_widget</item> </style> <style name="settingSeparator"> <item name="android:paddingTop">2dp</item> <item name="android:paddingBottom">2dp</item> <item name="android:background">@android:drawable/divider_horizontal_dark</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">1dp</item> </style> <style name="OnBoardingStyle" parent="Theme.AppCompat.DayNight"> <item name="colorAccent">#167c80</item> <item name="windowActionBar">false</item> Loading src/org/lineageos/lineageparts/profiles/SetupActionsFragment.java +45 −42 Original line number Diff line number Diff line /* * Copyright (C) 2014 The CyanogenMod Project * 2017 The LineageOS Project * 2017-2020 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading Loading @@ -37,6 +37,8 @@ import android.os.AsyncTask; import android.os.Bundle; import android.preference.SeekBarVolumizer; import android.provider.Settings; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; Loading @@ -50,11 +52,9 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.ListView; import android.widget.SeekBar; import android.widget.TextView; Loading Loading @@ -100,7 +100,7 @@ import static lineageos.profiles.ConnectionSettings.PROFILE_CONNECTION_WIFI; import static lineageos.profiles.ConnectionSettings.PROFILE_CONNECTION_WIFIAP; public class SetupActionsFragment extends SettingsPreferenceFragment implements AdapterView.OnItemClickListener { implements ItemListAdapter.OnItemClickListener { private static final int RINGTONE_REQUEST_CODE = 1000; private static final int NEW_TRIGGER_REQUEST_CODE = 1001; Loading Loading @@ -132,7 +132,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment Profile mProfile; ItemListAdapter mAdapter; ProfileManager mProfileManager; ListView mListView; RecyclerView mRecyclerView; boolean mNewProfileMode; Loading Loading @@ -179,7 +179,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment } mProfileManager = ProfileManager.getInstance(getActivity()); mAdapter = new ItemListAdapter(getActivity(), mItems); mAdapter = new ItemListAdapter(getActivity(), mItems, this); rebuildItemList(); setHasOptionsMenu(true); Loading @@ -189,31 +189,37 @@ public class SetupActionsFragment extends SettingsPreferenceFragment } else if (savedInstanceState != null) { mLastSelectedPosition = savedInstanceState.getInt("last_selected_position", -1); if (mLastSelectedPosition != -1) { mSelectedItem = mAdapter.getItem(mLastSelectedPosition); mSelectedItem = mItems.get(mLastSelectedPosition); } } } private void rebuildItemList() { final Context context = getActivity(); if (context == null) { return; } mItems.clear(); // general prefs mItems.add(new Header(getString(R.string.profile_name_title))); mItems.add(new Header(R.string.profile_name_title)); mItems.add(new ProfileNameItem(mProfile)); if (!mNewProfileMode) { // triggers mItems.add(new Header(getString(R.string.profile_triggers_header))); mItems.add(new Header(R.string.profile_triggers_header)); mItems.add(generateTriggerItem(TriggerItem.WIFI)); if (DeviceUtils.deviceSupportsBluetooth()) { mItems.add(generateTriggerItem(TriggerItem.BLUETOOTH)); } if (DeviceUtils.deviceSupportsNfc(getActivity())) { if (DeviceUtils.deviceSupportsNfc(context)) { mItems.add(generateTriggerItem(TriggerItem.NFC)); } } // connection overrides mItems.add(new Header(getString(R.string.wireless_networks_settings_title))); mItems.add(new Header(R.string.wireless_networks_settings_title)); if (DeviceUtils.deviceSupportsBluetooth()) { mItems.add(new ConnectionOverrideItem(PROFILE_CONNECTION_BLUETOOTH, mProfile.getSettingsForConnection(PROFILE_CONNECTION_BLUETOOTH))); Loading @@ -233,14 +239,14 @@ public class SetupActionsFragment extends SettingsPreferenceFragment } // add volume streams mItems.add(new Header(getString(R.string.profile_volumeoverrides_title))); mItems.add(new Header(R.string.profile_volumeoverrides_title)); mItems.add(generateVolumeStreamItem(AudioManager.STREAM_ALARM)); mItems.add(generateVolumeStreamItem(AudioManager.STREAM_MUSIC)); mItems.add(generateVolumeStreamItem(AudioManager.STREAM_RING)); mItems.add(generateVolumeStreamItem(AudioManager.STREAM_NOTIFICATION)); // system settings mItems.add(new Header(getString(R.string.profile_system_settings_title))); mItems.add(new Header(R.string.profile_system_settings_title)); mItems.add(new RingModeItem(mProfile.getRingMode())); mItems.add(new AirplaneModeItem(mProfile.getAirplaneMode())); DevicePolicyManager dpm = (DevicePolicyManager) getSystemService( Loading @@ -253,8 +259,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment } mItems.add(new BrightnessItem(mProfile.getBrightness())); final Activity activity = getActivity(); if (DeviceUtils.isDozeAvailable(activity)) { if (DeviceUtils.isDozeAvailable(context)) { mItems.add(new DozeModeItem(mProfile)); } Loading @@ -264,7 +269,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment } // app groups mItems.add(new Header(getString(R.string.profile_app_group_category_title))); mItems.add(new Header(R.string.profile_app_group_category_title)); int groupsAdded = 0; ProfileGroup[] profileGroups = mProfile.getProfileGroups(); Loading @@ -276,8 +281,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment && !mProfile.getDefaultGroup().getUuid().equals( profileGroup.getUuid())) { mItems.add(new AppGroupItem(mProfile, profileGroup, mProfileManager.getNotificationGroup( profileGroup.getUuid()))); mProfileManager.getNotificationGroup(profileGroup.getUuid()))); groupsAdded++; } } Loading Loading @@ -357,6 +361,10 @@ public class SetupActionsFragment extends SettingsPreferenceFragment public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mRecyclerView = view.findViewById(android.R.id.list); mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); mRecyclerView.setAdapter(mAdapter); if (mNewProfileMode) { TextView desc = new TextView(getActivity()); int descPadding = getResources().getDimensionPixelSize( Loading @@ -374,7 +382,6 @@ public class SetupActionsFragment extends SettingsPreferenceFragment @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mListView.setAdapter(mAdapter); final ActionBar actionBar = getActivity().getActionBar(); if (actionBar != null) { if (mNewProfileMode) { Loading Loading @@ -808,7 +815,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment } } builder.setTitle(ConnectionOverrideItem.getConnectionTitle(getContext(), setting)); builder.setTitle(ConnectionOverrideItem.getConnectionTitleResId(setting)); builder.setSingleChoiceItems(connectionNames, defaultIndex, new DialogInterface.OnClickListener() { @Override Loading Loading @@ -1014,8 +1021,6 @@ public class SetupActionsFragment extends SettingsPreferenceFragment Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_setup_actions, container, false); mListView = (ListView) view.findViewById(android.R.id.list); mListView.setOnItemClickListener(this); if (mNewProfileMode) { showButtonBar(true); Loading @@ -1039,38 +1044,36 @@ public class SetupActionsFragment extends SettingsPreferenceFragment } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { final Item itemAtPosition = (Item) parent.getItemAtPosition(position); mSelectedItem = itemAtPosition; mLastSelectedPosition = mAdapter.getPosition(itemAtPosition); public void onItemClick(Item item, int position) { mSelectedItem = item; mLastSelectedPosition = position; if (itemAtPosition instanceof AirplaneModeItem) { if (item instanceof AirplaneModeItem) { showDialog(DIALOG_AIRPLANE_MODE); } else if (itemAtPosition instanceof BrightnessItem) { } else if (item instanceof BrightnessItem) { showDialog(DIALOG_BRIGHTNESS); } else if (itemAtPosition instanceof LockModeItem) { } else if (item instanceof LockModeItem) { showDialog(DIALOG_LOCK_MODE); } else if (itemAtPosition instanceof DozeModeItem) { } else if (item instanceof DozeModeItem) { showDialog(DIALOG_DOZE_MODE); } else if (itemAtPosition instanceof NotificationLightModeItem) { } else if (item instanceof NotificationLightModeItem) { showDialog(DIALOG_NOTIFICATION_LIGHT_MODE); } else if (itemAtPosition instanceof RingModeItem) { } else if (item instanceof RingModeItem) { showDialog(DIALOG_RING_MODE); } else if (itemAtPosition instanceof ConnectionOverrideItem) { } else if (item instanceof ConnectionOverrideItem) { showDialog(DIALOG_CONNECTION_OVERRIDE); } else if (itemAtPosition instanceof VolumeStreamItem) { } else if (item instanceof VolumeStreamItem) { showDialog(DIALOG_VOLUME_STREAM); } else if (itemAtPosition instanceof ProfileNameItem) { } else if (item instanceof ProfileNameItem) { showDialog(DIALOG_PROFILE_NAME); } else if (itemAtPosition instanceof TriggerItem) { TriggerItem item = (TriggerItem) itemAtPosition; openTriggersFragment(item.getTriggerType()); } else if (itemAtPosition instanceof AppGroupItem) { AppGroupItem item = (AppGroupItem) itemAtPosition; if (item.getGroupUuid() == null) { } else if (item instanceof TriggerItem) { openTriggersFragment(((TriggerItem) item).getTriggerType()); } else if (item instanceof AppGroupItem) { AppGroupItem agi = (AppGroupItem) item; if (agi.getGroupUuid() == null) { requestActiveAppGroupsDialog(); } else { startProfileGroupActivity(item); startProfileGroupActivity(agi); } } } Loading src/org/lineageos/lineageparts/profiles/actions/ItemListAdapter.java +83 −28 Original line number Diff line number Diff line /* * Copyright (C) 2014 The CyanogenMod Project * 2020 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading @@ -16,62 +17,116 @@ package org.lineageos.lineageparts.profiles.actions; import android.content.Context; import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import org.lineageos.lineageparts.R; import org.lineageos.lineageparts.profiles.actions.item.Item; import java.util.List; public class ItemListAdapter extends ArrayAdapter<Item> { public class ItemListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener { private LayoutInflater mInflater; private List<Item> mItems; private OnItemClickListener mItemClickListener; public enum RowType { HEADER_ITEM, DISABLED_ITEM, CONNECTION_ITEM, VOLUME_STREAM_ITEM, NAME_ITEM, RINGMODE_ITEM, AIRPLANEMODE_ITEM, LOCKSCREENMODE_ITEM, TRIGGER_ITEM, APP_GROUP_ITEM, BRIGHTNESS_ITEM, DOZEMODE_ITEM, NOTIFICATIONLIGHTMODE_ITEM } public ItemListAdapter(Context context, List<Item> items) { super(context, 0, items); public interface OnItemClickListener { void onItemClick(Item item, int position); } private static final int VIEW_TYPE_HEADER = 0; private static final int VIEW_TYPE_ITEM = 1; public ItemListAdapter(Context context, List<Item> items, OnItemClickListener clickListener) { super(); mInflater = LayoutInflater.from(context); mItems = items; mItemClickListener = clickListener; } @Override public int getViewTypeCount() { return RowType.values().length; public int getItemCount() { return mItems.size(); } @Override public int getItemViewType(int position) { return getItem(position).getRowType().ordinal(); return mItems.get(position).isHeader() ? VIEW_TYPE_HEADER : VIEW_TYPE_ITEM; } @Override public View getView(int position, View convertView, ViewGroup parent) { return getItem(position).getView(mInflater, convertView, parent); public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { final RecyclerView.ViewHolder holder; if (viewType == VIEW_TYPE_HEADER) { holder = new HeaderViewHolder( mInflater.inflate(R.layout.profiles_header, parent, false)); } else { final View view = mInflater.inflate( androidx.preference.R.layout.preference_material, parent, false); holder = new ItemViewHolder(view); } holder.itemView.setOnClickListener(this); return holder; } @Override public boolean areAllItemsEnabled() { return false; public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { final Item item = mItems.get(position); if (holder instanceof HeaderViewHolder) { ((HeaderViewHolder) holder).bind(item); } else { ((ItemViewHolder) holder).bind(item); } holder.itemView.setTag(holder); } @Override public boolean isEnabled(int position) { return getItem(position).isEnabled(); public void onClick(View view) { RecyclerView.ViewHolder holder = (RecyclerView.ViewHolder) view.getTag(); int position = holder.getAdapterPosition(); if (position != RecyclerView.NO_POSITION) { mItemClickListener.onItemClick(mItems.get(position), position); } } private static class HeaderViewHolder extends RecyclerView.ViewHolder { private final TextView mTitleView; private HeaderViewHolder(View view) { super(view); mTitleView = view.findViewById(android.R.id.title); } private void bind(Item item) { mTitleView.setText(item.getTitle(itemView.getContext())); } } public static class ItemViewHolder extends RecyclerView.ViewHolder { private TextView mTitleView; private TextView mSummaryView; private ItemViewHolder(View view) { super(view); mTitleView = view.findViewById(android.R.id.title); mSummaryView = view.findViewById(android.R.id.summary); } private void bind(Item item) { String title = item.getTitle(itemView.getContext()); String summary = item.getSummary(itemView.getContext()); boolean enabled = item.isEnabled(itemView.getContext()); mTitleView.setText(title); mTitleView.setVisibility(title != null ? View.VISIBLE : View.GONE); mTitleView.setEnabled(enabled); mSummaryView.setText(summary); mSummaryView.setVisibility(summary != null ? View.VISIBLE : View.GONE); mSummaryView.setEnabled(enabled); } } } Loading
res/layout/fragment_setup_actions.xml +3 −12 Original line number Diff line number Diff line Loading @@ -12,17 +12,8 @@ See the License for the specific language governing permissions and limitations under the License. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView <androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="0dp" /> <View style="@style/settingSeparator" /> </LinearLayout> android:layout_height="match_parent" android:orientation="vertical" />
res/layout/fragment_setup_triggers.xml +0 −2 Original line number Diff line number Diff line Loading @@ -41,6 +41,4 @@ android:paddingEnd="@dimen/pager_tabs_padding"/> </androidx.viewpager.widget.ViewPager> <View style="@style/settingSeparator" /> </LinearLayout>
res/values/styles.xml +0 −8 Original line number Diff line number Diff line Loading @@ -133,14 +133,6 @@ <item name="android:widgetLayout">@layout/preference_profiles_widget</item> </style> <style name="settingSeparator"> <item name="android:paddingTop">2dp</item> <item name="android:paddingBottom">2dp</item> <item name="android:background">@android:drawable/divider_horizontal_dark</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">1dp</item> </style> <style name="OnBoardingStyle" parent="Theme.AppCompat.DayNight"> <item name="colorAccent">#167c80</item> <item name="windowActionBar">false</item> Loading
src/org/lineageos/lineageparts/profiles/SetupActionsFragment.java +45 −42 Original line number Diff line number Diff line /* * Copyright (C) 2014 The CyanogenMod Project * 2017 The LineageOS Project * 2017-2020 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading Loading @@ -37,6 +37,8 @@ import android.os.AsyncTask; import android.os.Bundle; import android.preference.SeekBarVolumizer; import android.provider.Settings; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; Loading @@ -50,11 +52,9 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.ListView; import android.widget.SeekBar; import android.widget.TextView; Loading Loading @@ -100,7 +100,7 @@ import static lineageos.profiles.ConnectionSettings.PROFILE_CONNECTION_WIFI; import static lineageos.profiles.ConnectionSettings.PROFILE_CONNECTION_WIFIAP; public class SetupActionsFragment extends SettingsPreferenceFragment implements AdapterView.OnItemClickListener { implements ItemListAdapter.OnItemClickListener { private static final int RINGTONE_REQUEST_CODE = 1000; private static final int NEW_TRIGGER_REQUEST_CODE = 1001; Loading Loading @@ -132,7 +132,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment Profile mProfile; ItemListAdapter mAdapter; ProfileManager mProfileManager; ListView mListView; RecyclerView mRecyclerView; boolean mNewProfileMode; Loading Loading @@ -179,7 +179,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment } mProfileManager = ProfileManager.getInstance(getActivity()); mAdapter = new ItemListAdapter(getActivity(), mItems); mAdapter = new ItemListAdapter(getActivity(), mItems, this); rebuildItemList(); setHasOptionsMenu(true); Loading @@ -189,31 +189,37 @@ public class SetupActionsFragment extends SettingsPreferenceFragment } else if (savedInstanceState != null) { mLastSelectedPosition = savedInstanceState.getInt("last_selected_position", -1); if (mLastSelectedPosition != -1) { mSelectedItem = mAdapter.getItem(mLastSelectedPosition); mSelectedItem = mItems.get(mLastSelectedPosition); } } } private void rebuildItemList() { final Context context = getActivity(); if (context == null) { return; } mItems.clear(); // general prefs mItems.add(new Header(getString(R.string.profile_name_title))); mItems.add(new Header(R.string.profile_name_title)); mItems.add(new ProfileNameItem(mProfile)); if (!mNewProfileMode) { // triggers mItems.add(new Header(getString(R.string.profile_triggers_header))); mItems.add(new Header(R.string.profile_triggers_header)); mItems.add(generateTriggerItem(TriggerItem.WIFI)); if (DeviceUtils.deviceSupportsBluetooth()) { mItems.add(generateTriggerItem(TriggerItem.BLUETOOTH)); } if (DeviceUtils.deviceSupportsNfc(getActivity())) { if (DeviceUtils.deviceSupportsNfc(context)) { mItems.add(generateTriggerItem(TriggerItem.NFC)); } } // connection overrides mItems.add(new Header(getString(R.string.wireless_networks_settings_title))); mItems.add(new Header(R.string.wireless_networks_settings_title)); if (DeviceUtils.deviceSupportsBluetooth()) { mItems.add(new ConnectionOverrideItem(PROFILE_CONNECTION_BLUETOOTH, mProfile.getSettingsForConnection(PROFILE_CONNECTION_BLUETOOTH))); Loading @@ -233,14 +239,14 @@ public class SetupActionsFragment extends SettingsPreferenceFragment } // add volume streams mItems.add(new Header(getString(R.string.profile_volumeoverrides_title))); mItems.add(new Header(R.string.profile_volumeoverrides_title)); mItems.add(generateVolumeStreamItem(AudioManager.STREAM_ALARM)); mItems.add(generateVolumeStreamItem(AudioManager.STREAM_MUSIC)); mItems.add(generateVolumeStreamItem(AudioManager.STREAM_RING)); mItems.add(generateVolumeStreamItem(AudioManager.STREAM_NOTIFICATION)); // system settings mItems.add(new Header(getString(R.string.profile_system_settings_title))); mItems.add(new Header(R.string.profile_system_settings_title)); mItems.add(new RingModeItem(mProfile.getRingMode())); mItems.add(new AirplaneModeItem(mProfile.getAirplaneMode())); DevicePolicyManager dpm = (DevicePolicyManager) getSystemService( Loading @@ -253,8 +259,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment } mItems.add(new BrightnessItem(mProfile.getBrightness())); final Activity activity = getActivity(); if (DeviceUtils.isDozeAvailable(activity)) { if (DeviceUtils.isDozeAvailable(context)) { mItems.add(new DozeModeItem(mProfile)); } Loading @@ -264,7 +269,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment } // app groups mItems.add(new Header(getString(R.string.profile_app_group_category_title))); mItems.add(new Header(R.string.profile_app_group_category_title)); int groupsAdded = 0; ProfileGroup[] profileGroups = mProfile.getProfileGroups(); Loading @@ -276,8 +281,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment && !mProfile.getDefaultGroup().getUuid().equals( profileGroup.getUuid())) { mItems.add(new AppGroupItem(mProfile, profileGroup, mProfileManager.getNotificationGroup( profileGroup.getUuid()))); mProfileManager.getNotificationGroup(profileGroup.getUuid()))); groupsAdded++; } } Loading Loading @@ -357,6 +361,10 @@ public class SetupActionsFragment extends SettingsPreferenceFragment public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mRecyclerView = view.findViewById(android.R.id.list); mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); mRecyclerView.setAdapter(mAdapter); if (mNewProfileMode) { TextView desc = new TextView(getActivity()); int descPadding = getResources().getDimensionPixelSize( Loading @@ -374,7 +382,6 @@ public class SetupActionsFragment extends SettingsPreferenceFragment @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mListView.setAdapter(mAdapter); final ActionBar actionBar = getActivity().getActionBar(); if (actionBar != null) { if (mNewProfileMode) { Loading Loading @@ -808,7 +815,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment } } builder.setTitle(ConnectionOverrideItem.getConnectionTitle(getContext(), setting)); builder.setTitle(ConnectionOverrideItem.getConnectionTitleResId(setting)); builder.setSingleChoiceItems(connectionNames, defaultIndex, new DialogInterface.OnClickListener() { @Override Loading Loading @@ -1014,8 +1021,6 @@ public class SetupActionsFragment extends SettingsPreferenceFragment Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_setup_actions, container, false); mListView = (ListView) view.findViewById(android.R.id.list); mListView.setOnItemClickListener(this); if (mNewProfileMode) { showButtonBar(true); Loading @@ -1039,38 +1044,36 @@ public class SetupActionsFragment extends SettingsPreferenceFragment } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { final Item itemAtPosition = (Item) parent.getItemAtPosition(position); mSelectedItem = itemAtPosition; mLastSelectedPosition = mAdapter.getPosition(itemAtPosition); public void onItemClick(Item item, int position) { mSelectedItem = item; mLastSelectedPosition = position; if (itemAtPosition instanceof AirplaneModeItem) { if (item instanceof AirplaneModeItem) { showDialog(DIALOG_AIRPLANE_MODE); } else if (itemAtPosition instanceof BrightnessItem) { } else if (item instanceof BrightnessItem) { showDialog(DIALOG_BRIGHTNESS); } else if (itemAtPosition instanceof LockModeItem) { } else if (item instanceof LockModeItem) { showDialog(DIALOG_LOCK_MODE); } else if (itemAtPosition instanceof DozeModeItem) { } else if (item instanceof DozeModeItem) { showDialog(DIALOG_DOZE_MODE); } else if (itemAtPosition instanceof NotificationLightModeItem) { } else if (item instanceof NotificationLightModeItem) { showDialog(DIALOG_NOTIFICATION_LIGHT_MODE); } else if (itemAtPosition instanceof RingModeItem) { } else if (item instanceof RingModeItem) { showDialog(DIALOG_RING_MODE); } else if (itemAtPosition instanceof ConnectionOverrideItem) { } else if (item instanceof ConnectionOverrideItem) { showDialog(DIALOG_CONNECTION_OVERRIDE); } else if (itemAtPosition instanceof VolumeStreamItem) { } else if (item instanceof VolumeStreamItem) { showDialog(DIALOG_VOLUME_STREAM); } else if (itemAtPosition instanceof ProfileNameItem) { } else if (item instanceof ProfileNameItem) { showDialog(DIALOG_PROFILE_NAME); } else if (itemAtPosition instanceof TriggerItem) { TriggerItem item = (TriggerItem) itemAtPosition; openTriggersFragment(item.getTriggerType()); } else if (itemAtPosition instanceof AppGroupItem) { AppGroupItem item = (AppGroupItem) itemAtPosition; if (item.getGroupUuid() == null) { } else if (item instanceof TriggerItem) { openTriggersFragment(((TriggerItem) item).getTriggerType()); } else if (item instanceof AppGroupItem) { AppGroupItem agi = (AppGroupItem) item; if (agi.getGroupUuid() == null) { requestActiveAppGroupsDialog(); } else { startProfileGroupActivity(item); startProfileGroupActivity(agi); } } } Loading
src/org/lineageos/lineageparts/profiles/actions/ItemListAdapter.java +83 −28 Original line number Diff line number Diff line /* * Copyright (C) 2014 The CyanogenMod Project * 2020 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading @@ -16,62 +17,116 @@ package org.lineageos.lineageparts.profiles.actions; import android.content.Context; import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import org.lineageos.lineageparts.R; import org.lineageos.lineageparts.profiles.actions.item.Item; import java.util.List; public class ItemListAdapter extends ArrayAdapter<Item> { public class ItemListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener { private LayoutInflater mInflater; private List<Item> mItems; private OnItemClickListener mItemClickListener; public enum RowType { HEADER_ITEM, DISABLED_ITEM, CONNECTION_ITEM, VOLUME_STREAM_ITEM, NAME_ITEM, RINGMODE_ITEM, AIRPLANEMODE_ITEM, LOCKSCREENMODE_ITEM, TRIGGER_ITEM, APP_GROUP_ITEM, BRIGHTNESS_ITEM, DOZEMODE_ITEM, NOTIFICATIONLIGHTMODE_ITEM } public ItemListAdapter(Context context, List<Item> items) { super(context, 0, items); public interface OnItemClickListener { void onItemClick(Item item, int position); } private static final int VIEW_TYPE_HEADER = 0; private static final int VIEW_TYPE_ITEM = 1; public ItemListAdapter(Context context, List<Item> items, OnItemClickListener clickListener) { super(); mInflater = LayoutInflater.from(context); mItems = items; mItemClickListener = clickListener; } @Override public int getViewTypeCount() { return RowType.values().length; public int getItemCount() { return mItems.size(); } @Override public int getItemViewType(int position) { return getItem(position).getRowType().ordinal(); return mItems.get(position).isHeader() ? VIEW_TYPE_HEADER : VIEW_TYPE_ITEM; } @Override public View getView(int position, View convertView, ViewGroup parent) { return getItem(position).getView(mInflater, convertView, parent); public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { final RecyclerView.ViewHolder holder; if (viewType == VIEW_TYPE_HEADER) { holder = new HeaderViewHolder( mInflater.inflate(R.layout.profiles_header, parent, false)); } else { final View view = mInflater.inflate( androidx.preference.R.layout.preference_material, parent, false); holder = new ItemViewHolder(view); } holder.itemView.setOnClickListener(this); return holder; } @Override public boolean areAllItemsEnabled() { return false; public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { final Item item = mItems.get(position); if (holder instanceof HeaderViewHolder) { ((HeaderViewHolder) holder).bind(item); } else { ((ItemViewHolder) holder).bind(item); } holder.itemView.setTag(holder); } @Override public boolean isEnabled(int position) { return getItem(position).isEnabled(); public void onClick(View view) { RecyclerView.ViewHolder holder = (RecyclerView.ViewHolder) view.getTag(); int position = holder.getAdapterPosition(); if (position != RecyclerView.NO_POSITION) { mItemClickListener.onItemClick(mItems.get(position), position); } } private static class HeaderViewHolder extends RecyclerView.ViewHolder { private final TextView mTitleView; private HeaderViewHolder(View view) { super(view); mTitleView = view.findViewById(android.R.id.title); } private void bind(Item item) { mTitleView.setText(item.getTitle(itemView.getContext())); } } public static class ItemViewHolder extends RecyclerView.ViewHolder { private TextView mTitleView; private TextView mSummaryView; private ItemViewHolder(View view) { super(view); mTitleView = view.findViewById(android.R.id.title); mSummaryView = view.findViewById(android.R.id.summary); } private void bind(Item item) { String title = item.getTitle(itemView.getContext()); String summary = item.getSummary(itemView.getContext()); boolean enabled = item.isEnabled(itemView.getContext()); mTitleView.setText(title); mTitleView.setVisibility(title != null ? View.VISIBLE : View.GONE); mTitleView.setEnabled(enabled); mSummaryView.setText(summary); mSummaryView.setVisibility(summary != null ? View.VISIBLE : View.GONE); mSummaryView.setEnabled(enabled); } } }