discord-jadx/app/src/main/java/androidx/cursoradapter/widget/CursorAdapter.java

279 lines
9.3 KiB
Java

package androidx.cursoradapter.widget;
import android.content.Context;
import android.database.ContentObserver;
import android.database.Cursor;
import android.database.DataSetObserver;
import android.os.Handler;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.FilterQueryProvider;
import android.widget.Filterable;
import androidx.annotation.RestrictTo;
import androidx.cursoradapter.widget.CursorFilter;
import c.d.b.a.a;
public abstract class CursorAdapter extends BaseAdapter implements Filterable, CursorFilter.CursorFilterClient {
@Deprecated
public static final int FLAG_AUTO_REQUERY = 1;
public static final int FLAG_REGISTER_CONTENT_OBSERVER = 2;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public boolean mAutoRequery;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public ChangeObserver mChangeObserver;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public Context mContext;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public Cursor mCursor;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public CursorFilter mCursorFilter;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public DataSetObserver mDataSetObserver;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public boolean mDataValid;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public FilterQueryProvider mFilterQueryProvider;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public int mRowIDColumn;
public class ChangeObserver extends ContentObserver {
public ChangeObserver() {
super(new Handler());
}
@Override // android.database.ContentObserver
public boolean deliverSelfNotifications() {
return true;
}
@Override // android.database.ContentObserver
public void onChange(boolean z2) {
CursorAdapter.this.onContentChanged();
}
}
public class MyDataSetObserver extends DataSetObserver {
public MyDataSetObserver() {
}
@Override // android.database.DataSetObserver
public void onChanged() {
CursorAdapter cursorAdapter = CursorAdapter.this;
cursorAdapter.mDataValid = true;
cursorAdapter.notifyDataSetChanged();
}
@Override // android.database.DataSetObserver
public void onInvalidated() {
CursorAdapter cursorAdapter = CursorAdapter.this;
cursorAdapter.mDataValid = false;
cursorAdapter.notifyDataSetInvalidated();
}
}
@Deprecated
public CursorAdapter(Context context, Cursor cursor) {
init(context, cursor, 1);
}
public CursorAdapter(Context context, Cursor cursor, int i) {
init(context, cursor, i);
}
public CursorAdapter(Context context, Cursor cursor, boolean z2) {
init(context, cursor, z2 ? 1 : 2);
}
public abstract void bindView(View view, Context context, Cursor cursor);
@Override // androidx.cursoradapter.widget.CursorFilter.CursorFilterClient
public void changeCursor(Cursor cursor) {
Cursor swapCursor = swapCursor(cursor);
if (swapCursor != null) {
swapCursor.close();
}
}
@Override // androidx.cursoradapter.widget.CursorFilter.CursorFilterClient
public CharSequence convertToString(Cursor cursor) {
return cursor == null ? "" : cursor.toString();
}
@Override // android.widget.Adapter
public int getCount() {
Cursor cursor;
if (!this.mDataValid || (cursor = this.mCursor) == null) {
return 0;
}
return cursor.getCount();
}
@Override // androidx.cursoradapter.widget.CursorFilter.CursorFilterClient
public Cursor getCursor() {
return this.mCursor;
}
@Override // android.widget.BaseAdapter, android.widget.SpinnerAdapter
public View getDropDownView(int i, View view, ViewGroup viewGroup) {
if (!this.mDataValid) {
return null;
}
this.mCursor.moveToPosition(i);
if (view == null) {
view = newDropDownView(this.mContext, this.mCursor, viewGroup);
}
bindView(view, this.mContext, this.mCursor);
return view;
}
@Override // android.widget.Filterable
public Filter getFilter() {
if (this.mCursorFilter == null) {
this.mCursorFilter = new CursorFilter(this);
}
return this.mCursorFilter;
}
public FilterQueryProvider getFilterQueryProvider() {
return this.mFilterQueryProvider;
}
@Override // android.widget.Adapter
public Object getItem(int i) {
Cursor cursor;
if (!this.mDataValid || (cursor = this.mCursor) == null) {
return null;
}
cursor.moveToPosition(i);
return this.mCursor;
}
@Override // android.widget.Adapter
public long getItemId(int i) {
Cursor cursor;
if (!this.mDataValid || (cursor = this.mCursor) == null || !cursor.moveToPosition(i)) {
return 0;
}
return this.mCursor.getLong(this.mRowIDColumn);
}
@Override // android.widget.Adapter
public View getView(int i, View view, ViewGroup viewGroup) {
if (!this.mDataValid) {
throw new IllegalStateException("this should only be called when the cursor is valid");
} else if (this.mCursor.moveToPosition(i)) {
if (view == null) {
view = newView(this.mContext, this.mCursor, viewGroup);
}
bindView(view, this.mContext, this.mCursor);
return view;
} else {
throw new IllegalStateException(a.k("couldn't move cursor to position ", i));
}
}
@Override // android.widget.BaseAdapter, android.widget.Adapter
public boolean hasStableIds() {
return true;
}
public void init(Context context, Cursor cursor, int i) {
boolean z2 = false;
if ((i & 1) == 1) {
i |= 2;
this.mAutoRequery = true;
} else {
this.mAutoRequery = false;
}
if (cursor != null) {
z2 = true;
}
this.mCursor = cursor;
this.mDataValid = z2;
this.mContext = context;
this.mRowIDColumn = z2 ? cursor.getColumnIndexOrThrow("_id") : -1;
if ((i & 2) == 2) {
this.mChangeObserver = new ChangeObserver();
this.mDataSetObserver = new MyDataSetObserver();
} else {
this.mChangeObserver = null;
this.mDataSetObserver = null;
}
if (z2) {
ChangeObserver changeObserver = this.mChangeObserver;
if (changeObserver != null) {
cursor.registerContentObserver(changeObserver);
}
DataSetObserver dataSetObserver = this.mDataSetObserver;
if (dataSetObserver != null) {
cursor.registerDataSetObserver(dataSetObserver);
}
}
}
@Deprecated
public void init(Context context, Cursor cursor, boolean z2) {
init(context, cursor, z2 ? 1 : 2);
}
public View newDropDownView(Context context, Cursor cursor, ViewGroup viewGroup) {
return newView(context, cursor, viewGroup);
}
public abstract View newView(Context context, Cursor cursor, ViewGroup viewGroup);
public void onContentChanged() {
Cursor cursor;
if (this.mAutoRequery && (cursor = this.mCursor) != null && !cursor.isClosed()) {
this.mDataValid = this.mCursor.requery();
}
}
@Override // androidx.cursoradapter.widget.CursorFilter.CursorFilterClient
public Cursor runQueryOnBackgroundThread(CharSequence charSequence) {
FilterQueryProvider filterQueryProvider = this.mFilterQueryProvider;
return filterQueryProvider != null ? filterQueryProvider.runQuery(charSequence) : this.mCursor;
}
public void setFilterQueryProvider(FilterQueryProvider filterQueryProvider) {
this.mFilterQueryProvider = filterQueryProvider;
}
public Cursor swapCursor(Cursor cursor) {
Cursor cursor2 = this.mCursor;
if (cursor == cursor2) {
return null;
}
if (cursor2 != null) {
ChangeObserver changeObserver = this.mChangeObserver;
if (changeObserver != null) {
cursor2.unregisterContentObserver(changeObserver);
}
DataSetObserver dataSetObserver = this.mDataSetObserver;
if (dataSetObserver != null) {
cursor2.unregisterDataSetObserver(dataSetObserver);
}
}
this.mCursor = cursor;
if (cursor != null) {
ChangeObserver changeObserver2 = this.mChangeObserver;
if (changeObserver2 != null) {
cursor.registerContentObserver(changeObserver2);
}
DataSetObserver dataSetObserver2 = this.mDataSetObserver;
if (dataSetObserver2 != null) {
cursor.registerDataSetObserver(dataSetObserver2);
}
this.mRowIDColumn = cursor.getColumnIndexOrThrow("_id");
this.mDataValid = true;
notifyDataSetChanged();
} else {
this.mRowIDColumn = -1;
this.mDataValid = false;
notifyDataSetInvalidated();
}
return cursor2;
}
}