ditch LoaderFragment

This commit is contained in:
Vincent Breitmoser
2018-06-24 01:17:39 +02:00
parent 5cfe0d140f
commit 8d584df44c
6 changed files with 29 additions and 140 deletions

View File

@@ -22,6 +22,8 @@ import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
@@ -34,13 +36,11 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException;
import org.sufficientlysecure.keychain.provider.KeyRepository;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.ui.base.LoaderFragment;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import timber.log.Timber;
public class CertifyFingerprintFragment extends LoaderFragment implements
LoaderManager.LoaderCallbacks<Cursor> {
public class CertifyFingerprintFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> {
static final int REQUEST_CERTIFY = 1;
@@ -69,9 +69,8 @@ public class CertifyFingerprintFragment extends LoaderFragment implements
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup superContainer, Bundle savedInstanceState) {
View root = super.onCreateView(inflater, superContainer, savedInstanceState);
View view = inflater.inflate(R.layout.certify_fingerprint_fragment, getContainer());
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup viewGroup, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.certify_fingerprint_fragment, viewGroup, false);
TextView actionNo = view.findViewById(R.id.certify_fingerprint_button_no);
mActionYes = view.findViewById(R.id.certify_fingerprint_button_yes);
@@ -93,7 +92,7 @@ public class CertifyFingerprintFragment extends LoaderFragment implements
}
});
return root;
return view;
}
@Override
@@ -127,7 +126,6 @@ public class CertifyFingerprintFragment extends LoaderFragment implements
static final int INDEX_UNIFIED_FINGERPRINT = 1;
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
setContentShown(false);
switch (id) {
case LOADER_ID_UNIFIED: {
Uri baseUri = KeyRings.buildUnifiedKeyRingUri(mDataUri);
@@ -161,7 +159,6 @@ public class CertifyFingerprintFragment extends LoaderFragment implements
}
}
setContentShown(true);
}
private void displayHexConfirm(byte[] fingerprintBlob) {

View File

@@ -41,6 +41,7 @@ import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v7.widget.CardView;
import android.view.LayoutInflater;
import android.view.View;
@@ -62,7 +63,6 @@ import org.sufficientlysecure.keychain.provider.KeyRepository;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.TemporaryFileProvider;
import org.sufficientlysecure.keychain.ui.ViewKeyAdvActivity.ViewKeyAdvViewModel;
import org.sufficientlysecure.keychain.ui.base.LoaderFragment;
import org.sufficientlysecure.keychain.ui.util.FormattingUtils;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.ui.util.Notify;
@@ -70,7 +70,7 @@ import org.sufficientlysecure.keychain.ui.util.Notify.Style;
import org.sufficientlysecure.keychain.ui.util.QrCodeUtils;
import timber.log.Timber;
public class ViewKeyAdvShareFragment extends LoaderFragment {
public class ViewKeyAdvShareFragment extends Fragment {
private ImageView mQrCode;
private CardView mQrCodeLayout;
private TextView mFingerprintView;
@@ -79,9 +79,8 @@ public class ViewKeyAdvShareFragment extends LoaderFragment {
private UnifiedKeyInfo unifiedKeyInfo;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup superContainer, Bundle savedInstanceState) {
View root = super.onCreateView(inflater, superContainer, savedInstanceState);
View view = inflater.inflate(R.layout.view_key_adv_share_fragment, getContainer());
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup viewGroup, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.view_key_adv_share_fragment, viewGroup, false);
mFingerprintView = view.findViewById(R.id.view_key_fingerprint);
mQrCode = view.findViewById(R.id.view_key_qr_code);
@@ -132,7 +131,7 @@ public class ViewKeyAdvShareFragment extends LoaderFragment {
vKeySshClipboardButton.setOnClickListener(v -> shareKey(true, true));
vKeyUploadButton.setOnClickListener(v -> uploadToKeyserver());
return root;
return view;
}
private void startSafeSlinger() {
@@ -316,8 +315,6 @@ public class ViewKeyAdvShareFragment extends LoaderFragment {
final String fingerprint = KeyFormattingUtils.convertFingerprintToHex(unifiedKeyInfo.fingerprint());
mFingerprintView.setText(KeyFormattingUtils.formatFingerprint(fingerprint));
setContentShown(true);
}
private void onLoadQrCode(Bitmap qrCode) {

View File

@@ -26,6 +26,8 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Messenger;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.ActionMode;
import android.view.LayoutInflater;
@@ -48,13 +50,12 @@ import org.sufficientlysecure.keychain.ui.ViewKeyAdvActivity.ViewKeyAdvViewModel
import org.sufficientlysecure.keychain.ui.adapter.SubkeysAdapter;
import org.sufficientlysecure.keychain.ui.adapter.SubkeysAddedAdapter;
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
import org.sufficientlysecure.keychain.ui.base.LoaderFragment;
import org.sufficientlysecure.keychain.ui.dialog.AddSubkeyDialogFragment;
import org.sufficientlysecure.keychain.ui.dialog.EditSubkeyDialogFragment;
import org.sufficientlysecure.keychain.ui.dialog.EditSubkeyExpiryDialogFragment;
public class ViewKeyAdvSubkeysFragment extends LoaderFragment {
public class ViewKeyAdvSubkeysFragment extends Fragment {
private ListView mSubkeysList;
private ListView mSubkeysAddedList;
private View mSubkeysAddedLayout;
@@ -69,9 +70,8 @@ public class ViewKeyAdvSubkeysFragment extends LoaderFragment {
private UnifiedKeyInfo unifiedKeyInfo;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup superContainer, Bundle savedInstanceState) {
View root = super.onCreateView(inflater, superContainer, savedInstanceState);
View view = inflater.inflate(R.layout.view_key_adv_subkeys_fragment, getContainer());
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup viewGroup, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.view_key_adv_subkeys_fragment, viewGroup, false);
mSubkeysList = view.findViewById(R.id.view_key_subkeys);
mSubkeysAddedList = view.findViewById(R.id.view_key_subkeys_added);
@@ -95,7 +95,7 @@ public class ViewKeyAdvSubkeysFragment extends LoaderFragment {
setHasOptionsMenu(true);
return root;
return view;
}
@Override
@@ -109,8 +109,6 @@ public class ViewKeyAdvSubkeysFragment extends LoaderFragment {
ViewKeyAdvViewModel viewModel = ViewModelProviders.of(requireActivity()).get(ViewKeyAdvViewModel.class);
viewModel.getUnifiedKeyInfoLiveData(requireContext()).observe(this, this::onLoadFinished);
viewModel.getSubkeyLiveData(requireContext()).observe(this, this::onLoadSubKeys);
setContentShown(false);
}
public void onLoadFinished(UnifiedKeyInfo unifiedKeyInfo) {
@@ -124,10 +122,8 @@ public class ViewKeyAdvSubkeysFragment extends LoaderFragment {
private void onLoadSubKeys(List<SubKey> subKeys) {
mSubkeysAdapter.setData(subKeys);
setContentShown(true);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (mEditKeyHelper != null) {

View File

@@ -26,6 +26,8 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Messenger;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.ActionMode;
import android.view.LayoutInflater;
@@ -47,14 +49,13 @@ import org.sufficientlysecure.keychain.ui.ViewKeyAdvActivity.ViewKeyAdvViewModel
import org.sufficientlysecure.keychain.ui.adapter.UserIdsAdapter;
import org.sufficientlysecure.keychain.ui.adapter.UserIdsAddedAdapter;
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
import org.sufficientlysecure.keychain.ui.base.LoaderFragment;
import org.sufficientlysecure.keychain.ui.dialog.AddUserIdDialogFragment;
import org.sufficientlysecure.keychain.ui.dialog.EditUserIdDialogFragment;
import org.sufficientlysecure.keychain.ui.dialog.SetPassphraseDialogFragment;
import org.sufficientlysecure.keychain.ui.dialog.UserIdInfoDialogFragment;
public class ViewKeyAdvUserIdsFragment extends LoaderFragment {
public class ViewKeyAdvUserIdsFragment extends Fragment {
private ListView mUserIds;
private ListView mUserIdsAddedList;
private View mUserIdsAddedLayout;
@@ -69,9 +70,8 @@ public class ViewKeyAdvUserIdsFragment extends LoaderFragment {
private UnifiedKeyInfo unifiedKeyInfo;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup superContainer, Bundle savedInstanceState) {
View root = super.onCreateView(inflater, superContainer, savedInstanceState);
View view = inflater.inflate(R.layout.view_key_adv_user_ids_fragment, getContainer());
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup viewGroup, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.view_key_adv_user_ids_fragment, viewGroup, false);
mUserIds = view.findViewById(R.id.view_key_user_ids);
mUserIdsAddedList = view.findViewById(R.id.view_key_user_ids_added);
@@ -95,7 +95,7 @@ public class ViewKeyAdvUserIdsFragment extends LoaderFragment {
setHasOptionsMenu(true);
return root;
return view;
}
private void showOrEditUserIdInfo(final int position) {
@@ -198,8 +198,6 @@ public class ViewKeyAdvUserIdsFragment extends LoaderFragment {
ViewKeyAdvViewModel viewModel = ViewModelProviders.of(requireActivity()).get(ViewKeyAdvViewModel.class);
viewModel.getUnifiedKeyInfoLiveData(requireContext()).observe(this, this::onLoadUnifiedKeyInfo);
viewModel.getUserIdLiveData(requireContext()).observe(this, this::onLoadUserIds);
setContentShown(false);
}
public void onLoadUnifiedKeyInfo(UnifiedKeyInfo unifiedKeyInfo) {
@@ -211,7 +209,6 @@ public class ViewKeyAdvUserIdsFragment extends LoaderFragment {
private void onLoadUserIds(List<UserId> userIds) {
mUserIdsAdapter.setData(userIds);
setContentShown(true);
}
@Override

View File

@@ -28,6 +28,8 @@ import android.graphics.Typeface;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
@@ -55,12 +57,11 @@ import org.sufficientlysecure.keychain.operations.results.KeybaseVerificationRes
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.service.KeybaseVerificationParcel;
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
import org.sufficientlysecure.keychain.ui.base.LoaderFragment;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.util.ParcelableProxy;
import org.sufficientlysecure.keychain.util.Preferences;
public class ViewKeyKeybaseFragment extends LoaderFragment implements
public class ViewKeyKeybaseFragment extends Fragment implements
LoaderManager.LoaderCallbacks<Cursor>,
CryptoOperationHelper.Callback<KeybaseVerificationParcel, KeybaseVerificationResult> {
@@ -99,9 +100,8 @@ public class ViewKeyKeybaseFragment extends LoaderFragment implements
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup superContainer, Bundle savedInstanceState) {
View root = super.onCreateView(inflater, superContainer, savedInstanceState);
View view = inflater.inflate(R.layout.view_key_adv_keybase_fragment, getContainer());
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup viewGroup, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.view_key_adv_keybase_fragment, viewGroup, false);
mInflater = inflater;
mReportHeader = view.findViewById(R.id.view_key_trust_cloud_narrative);
@@ -113,7 +113,7 @@ public class ViewKeyKeybaseFragment extends LoaderFragment implements
mProofVerifyHeader.setVisibility(View.GONE);
mProofVerifyDetail.setVisibility(View.GONE);
return root;
return view;
}
@Override
@@ -140,8 +140,6 @@ public class ViewKeyKeybaseFragment extends LoaderFragment implements
static final int INDEX_VERIFIED = 5;
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
setContentShown(false);
switch (id) {
case LOADER_ID_DATABASE: {
Uri baseUri = KeyRings.buildUnifiedKeyRingUri(masterKeyId);
@@ -173,8 +171,6 @@ public class ViewKeyKeybaseFragment extends LoaderFragment implements
startSearch(fingerprint);
}
setContentShown(true);
}
private void startSearch(final String fingerprint) {

View File

@@ -1,94 +0,0 @@
/*
* Copyright (C) 2017 Schürmann & Breitmoser GbR
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.sufficientlysecure.keychain.ui.base;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import org.sufficientlysecure.keychain.R;
/**
* This is a fragment helper class, which implements a generic
* progressbar/container view.
* <p/>
* To use it in a fragment, simply subclass, use onCreateView to create the
* layout's root view, and ues getContainer() as root view of your subclass.
* The layout shows a progress bar by default, and can be switched to the
* actual contents by calling setContentShown().
*/
public abstract class LoaderFragment extends Fragment {
private boolean mContentShown;
private View mProgressContainer;
private ViewGroup mContainer;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.loader_layout, container, false);
mContentShown = true;
mContainer = root.findViewById(R.id.loader_container);
mProgressContainer = root.findViewById(R.id.loader_progress);
// content is not shown (by visibility statuses in the layout files)
mContentShown = false;
return root;
}
protected ViewGroup getContainer() {
return mContainer;
}
public void setContentShown(boolean shown, boolean animate) {
if (mContentShown == shown) {
return;
}
mContentShown = shown;
if (shown) {
if (animate) {
mProgressContainer.startAnimation(AnimationUtils.loadAnimation(
getActivity(), android.R.anim.fade_out));
mContainer.startAnimation(AnimationUtils.loadAnimation(
getActivity(), android.R.anim.fade_in));
}
mProgressContainer.setVisibility(View.GONE);
mContainer.setVisibility(View.VISIBLE);
} else {
if (animate) {
mProgressContainer.startAnimation(AnimationUtils.loadAnimation(
getActivity(), android.R.anim.fade_in));
mContainer.startAnimation(AnimationUtils.loadAnimation(
getActivity(), android.R.anim.fade_out));
}
mProgressContainer.setVisibility(View.VISIBLE);
mContainer.setVisibility(View.INVISIBLE);
}
}
public void setContentShown(boolean shown) {
setContentShown(shown, true);
}
public void setContentShownNoAnimation(boolean shown) {
setContentShown(shown, false);
}
}