Messaging: Convert further parts to androidx

CursorLoader, LoaderManager, Preferences, Fragments, ...

Change-Id: I8787b2db365249839547c6d5c21ab7cd5ff42082
This commit is contained in:
Michael W
2024-12-26 14:55:13 +01:00
parent d430161ca0
commit 1914db5ea4
44 changed files with 341 additions and 266 deletions
@@ -18,15 +18,16 @@ package com.android.messaging.ui.conversationlist;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.messaging.R;
import com.android.messaging.datamodel.action.DeleteConversationAction;
import com.android.messaging.datamodel.action.UpdateConversationArchiveStatusAction;
@@ -48,30 +49,17 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.annotation.Nullable;
/**
* Base class for many Conversation List activities. This will handle the common actions of multi
* select and common launching of intents.
*/
public abstract class AbstractConversationListActivity extends BugleActionBarActivity
public abstract class AbstractConversationListActivity extends BugleActionBarActivity
implements ConversationListFragmentHost, MultiSelectActionModeCallback.Listener {
private static final int REQUEST_SET_DEFAULT_SMS_APP = 1;
protected ConversationListFragment mConversationListFragment;
@Override
public void onAttachFragment(final Fragment fragment) {
Trace.beginSection("AbstractConversationListActivity.onAttachFragment");
// Fragment could be debug dialog
if (fragment instanceof ConversationListFragment) {
mConversationListFragment = (ConversationListFragment) fragment;
mConversationListFragment.setHost(this);
}
Trace.endSection();
}
@Override
public void onBackPressed() {
// If action mode is active dismiss it
@@ -18,14 +18,18 @@ package com.android.messaging.ui.conversationlist;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import android.view.MenuItem;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentOnAttachListener;
import com.android.messaging.R;
public class ArchivedConversationListActivity extends AbstractConversationListActivity {
public class ArchivedConversationListActivity extends AbstractConversationListActivity
implements FragmentOnAttachListener {
@Override
protected void onCreate(final Bundle savedInstanceState) {
@@ -33,7 +37,8 @@ public class ArchivedConversationListActivity extends AbstractConversationListAc
final ConversationListFragment fragment =
ConversationListFragment.createArchivedConversationListFragment();
getFragmentManager().beginTransaction().add(android.R.id.content, fragment).commit();
getSupportFragmentManager().addFragmentOnAttachListener(this);
getSupportFragmentManager().beginTransaction().add(android.R.id.content, fragment).commit();
invalidateActionBar();
}
@@ -77,4 +82,13 @@ public class ArchivedConversationListActivity extends AbstractConversationListAc
public boolean isSwipeAnimatable() {
return false;
}
@Override
public void onAttachFragment(@NonNull FragmentManager fragmentManager,
@NonNull Fragment fragment) {
if (fragment instanceof ConversationListFragment) {
mConversationListFragment = (ConversationListFragment) fragment;
mConversationListFragment.setHost(this);
}
}
}
@@ -19,22 +19,26 @@ package com.android.messaging.ui.conversationlist;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import android.view.Menu;
import android.view.MenuItem;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentOnAttachListener;
import com.android.messaging.R;
import com.android.messaging.ui.UIIntents;
import com.android.messaging.util.Trace;
public class ConversationListActivity extends AbstractConversationListActivity {
public class ConversationListActivity extends AbstractConversationListActivity implements FragmentOnAttachListener {
@Override
protected void onCreate(final Bundle savedInstanceState) {
Trace.beginSection("ConversationListActivity.onCreate");
setTheme(R.style.BugleTheme_ConversationListActivity);
super.onCreate(savedInstanceState);
getSupportFragmentManager().addFragmentOnAttachListener(this);
setContentView(R.layout.conversation_list_activity);
Trace.endSection();
invalidateActionBar();
@@ -128,7 +132,7 @@ public class ConversationListActivity extends AbstractConversationListActivity {
public void onWindowFocusChanged(final boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
final ConversationListFragment conversationListFragment =
(ConversationListFragment) getFragmentManager().findFragmentById(
(ConversationListFragment) getSupportFragmentManager().findFragmentById(
R.id.conversation_list_fragment);
// When the screen is turned on, the last used activity gets resumed, but it gets
// window focus only after the lock screen is unlocked.
@@ -136,4 +140,13 @@ public class ConversationListActivity extends AbstractConversationListActivity {
conversationListFragment.setScrolledToNewestConversationIfNeeded();
}
}
@Override
public void onAttachFragment(@NonNull FragmentManager fragmentManager,
@NonNull Fragment fragment) {
if (fragment instanceof ConversationListFragment) {
mConversationListFragment = (ConversationListFragment) fragment;
mConversationListFragment.setHost(this);
}
}
}
@@ -17,19 +17,12 @@
package com.android.messaging.ui.conversationlist;
import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.core.view.ViewCompat;
import androidx.core.view.ViewGroupCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -42,6 +35,14 @@ import android.view.accessibility.AccessibilityManager;
import android.widget.AbsListView;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.core.view.ViewCompat;
import androidx.core.view.ViewGroupCompat;
import androidx.fragment.app.Fragment;
import androidx.loader.app.LoaderManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.android.messaging.R;
import com.android.messaging.annotation.VisibleForAnimation;
import com.android.messaging.datamodel.DataModel;
@@ -127,7 +128,7 @@ public class ConversationListFragment extends Fragment implements ConversationLi
@Override
public void onCreate(final Bundle bundle) {
super.onCreate(bundle);
mListBinding.getData().init(getLoaderManager(), mListBinding);
mListBinding.getData().init(LoaderManager.getInstance(this), mListBinding);
mAdapter = new ConversationListAdapter(getActivity(), null, this);
}
@@ -244,8 +245,8 @@ public class ConversationListFragment extends Fragment implements ConversationLi
}
@Override
public void onAttach(final Activity activity) {
super.onAttach(activity);
public void onAttach(@NonNull final Context context) {
super.onAttach(context);
if (VERBOSE) {
LogUtil.v(LogUtil.BUGLE_TAG, "Attaching List");
}
@@ -254,12 +255,12 @@ public class ConversationListFragment extends Fragment implements ConversationLi
mArchiveMode = arguments.getBoolean(BUNDLE_ARCHIVED_MODE, false);
mForwardMessageMode = arguments.getBoolean(BUNDLE_FORWARD_MESSAGE_MODE, false);
}
mListBinding.bind(DataModel.get().createConversationListData(activity, this, mArchiveMode));
mListBinding.bind(DataModel.get().createConversationListData(context, this, mArchiveMode));
}
@Override
public void onSaveInstanceState(final Bundle outState) {
public void onSaveInstanceState(@NonNull final Bundle outState) {
super.onSaveInstanceState(outState);
if (mListState != null) {
outState.putParcelable(SAVED_INSTANCE_STATE_LIST_VIEW_STATE_KEY, mListState);
@@ -305,7 +306,7 @@ public class ConversationListFragment extends Fragment implements ConversationLi
}
@Override
public void onPrepareOptionsMenu(final Menu menu) {
public void onPrepareOptionsMenu(@NonNull final Menu menu) {
super.onPrepareOptionsMenu(menu);
final MenuItem startNewConversationMenuItem =
menu.findItem(R.id.action_start_new_conversation);
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2015 The Android Open Source Project
* Copyright (C) 2024 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.
@@ -16,36 +17,41 @@
package com.android.messaging.ui.conversationlist;
import android.app.Fragment;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentOnAttachListener;
import com.android.messaging.datamodel.data.ConversationListData;
import com.android.messaging.datamodel.data.ConversationListItemData;
import com.android.messaging.datamodel.data.MessageData;
import com.android.messaging.ui.BaseBugleActivity;
import com.android.messaging.ui.UIIntents;
import com.android.messaging.ui.conversationlist.ConversationListFragment.ConversationListFragmentHost;
import com.android.messaging.util.Assert;
/**
* An activity that lets the user forward a SMS/MMS message by picking from a conversation in the
* conversation list.
*/
public class ForwardMessageActivity extends BaseBugleActivity
implements ConversationListFragmentHost {
implements ConversationListFragmentHost, FragmentOnAttachListener {
private MessageData mDraftMessage;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportFragmentManager().addFragmentOnAttachListener(this);
final ConversationListFragment fragment =
ConversationListFragment.createForwardMessageConversationListFragment();
getFragmentManager().beginTransaction().add(android.R.id.content, fragment).commit();
getSupportFragmentManager().beginTransaction().add(android.R.id.content, fragment).commit();
mDraftMessage = getIntent().getParcelableExtra(UIIntents.UI_INTENT_EXTRA_DRAFT_DATA);
}
@Override
public void onAttachFragment(final Fragment fragment) {
public void onAttachFragment(@NonNull FragmentManager fragmentManager,
@NonNull Fragment fragment) {
if (fragment instanceof ConversationListFragment) {
final ConversationListFragment clf = (ConversationListFragment) fragment;
clf.setHost(this);
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2015 The Android Open Source Project
* Copyright (C) 2024 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.
@@ -16,7 +17,6 @@
package com.android.messaging.ui.conversationlist;
import android.app.Fragment;
import android.content.ContentResolver;
import android.content.Intent;
import android.media.MediaMetadataRetriever;
@@ -24,7 +24,11 @@ import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.collection.ArrayMap;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentOnAttachListener;
import com.android.messaging.Factory;
import com.android.messaging.datamodel.data.ConversationListItemData;
@@ -48,7 +52,7 @@ import java.util.ArrayList;
import java.util.Map;
public class ShareIntentActivity extends BaseBugleActivity implements
ShareIntentFragment.HostInterface {
ShareIntentFragment.HostInterface, FragmentOnAttachListener {
private MessageData mDraftMessage;
@@ -74,11 +78,13 @@ public class ShareIntentActivity extends BaseBugleActivity implements
finish();
return;
}
new ShareIntentFragment().show(getFragmentManager(), "ShareIntentFragment");
getSupportFragmentManager().addFragmentOnAttachListener(this);
new ShareIntentFragment().show(getSupportFragmentManager(), "ShareIntentFragment");
}
@Override
public void onAttachFragment(final Fragment fragment) {
public void onAttachFragment(@NonNull FragmentManager fragmentManager,
@NonNull Fragment fragment) {
final Intent intent = getIntent();
final String action = intent.getAction();
@@ -20,10 +20,14 @@ import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import androidx.loader.app.LoaderManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
@@ -61,6 +65,7 @@ public class ShareIntentFragment extends DialogFragment implements ConversationL
/**
* {@inheritDoc} from Fragment
*/
@NonNull
@Override
public Dialog onCreateDialog(final Bundle bundle) {
final Activity activity = getActivity();
@@ -79,7 +84,7 @@ public class ShareIntentFragment extends DialogFragment implements ConversationL
ViewGroup.LayoutParams.WRAP_CONTENT);
}
};
mListBinding.getData().init(getLoaderManager(), mListBinding);
mListBinding.getData().init(LoaderManager.getInstance(this), mListBinding);
mAdapter = new ShareIntentAdapter(activity, null, this);
mRecyclerView = (RecyclerView) view.findViewById(android.R.id.list);
mRecyclerView.setLayoutManager(manager);
@@ -101,7 +106,7 @@ public class ShareIntentFragment extends DialogFragment implements ConversationL
}
@Override
public void onDismiss(DialogInterface dialog) {
public void onDismiss(@NonNull DialogInterface dialog) {
if (!mDismissed) {
final Activity activity = getActivity();
if (activity != null) {
@@ -120,12 +125,12 @@ public class ShareIntentFragment extends DialogFragment implements ConversationL
}
@Override
public void onAttach(final Activity activity) {
super.onAttach(activity);
if (activity instanceof HostInterface) {
mHost = (HostInterface) activity;
public void onAttach(@NonNull final Context context) {
super.onAttach(context);
if (context instanceof HostInterface) {
mHost = (HostInterface) context;
}
mListBinding.bind(DataModel.get().createConversationListData(activity, this, false));
mListBinding.bind(DataModel.get().createConversationListData(context, this, false));
}
@Override