Refactor: Use AlertDialogShower for all AlertDialogs

This commit is contained in:
Aditya-Sood 2019-07-12 21:22:32 +05:30
parent 0836b87055
commit 544fcd2215
5 changed files with 54 additions and 47 deletions

View File

@ -25,6 +25,7 @@ import org.kiwix.kiwixmobile.downloader.DownloadFragment
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.ZimFileSelectFragment
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects.DeleteFiles
import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment
import org.kiwix.kiwixmobile.zim_manager.local_file_transfer.LocalFileTransferActivity
@Subcomponent(modules = [ActivityModule::class])
interface ActivityComponent {
@ -36,6 +37,8 @@ interface ActivityComponent {
fun inject(deleteFiles: DeleteFiles)
fun inject(localFileTransferActivity: LocalFileTransferActivity)
@Subcomponent.Builder
interface Builder {

View File

@ -32,9 +32,6 @@ import org.kiwix.kiwixmobile.main.KiwixWebView;
import org.kiwix.kiwixmobile.search.AutoCompleteAdapter;
import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity;
import org.kiwix.kiwixmobile.zim_manager.DownloadNotificationClickedReceiver;
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.ZimFileSelectFragment;
import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment;
import org.kiwix.kiwixmobile.zim_manager.local_file_transfer.LocalFileTransferActivity;
@Singleton
@Component(modules = {
@ -68,6 +65,4 @@ public interface ApplicationComponent {
void inject(AutoCompleteAdapter autoCompleteAdapter);
void inject(DownloadNotificationClickedReceiver downloadNotificationClickedReceiver);
void inject(LocalFileTransferActivity localFileTransferActivity);
}

View File

@ -1,5 +1,6 @@
package org.kiwix.kiwixmobile.utils
import android.net.wifi.p2p.WifiP2pDevice
import org.kiwix.kiwixmobile.R
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.adapter.BooksOnDiskListItem.BookOnDisk
@ -16,6 +17,20 @@ sealed class KiwixDialog(
constructor(bookOnDisk: BookOnDisk) : this(arrayOf(bookOnDisk.book.title))
}
object LocationPermissionRationale : KiwixDialog( // For the local file transfer module
null, R.string.permission_rationale_location, android.R.string.yes, android.R.string.cancel
)
object StoragePermissionRationale : KiwixDialog( // For the local file transfer module
null, R.string.permission_rationale_storage, android.R.string.yes, android.R.string.cancel
)
data class FileTransferConfirmation(override val args: Array<out Any>) : KiwixDialog( // For the local file transfer module
null, R.string.transfer_to, R.string.yes, android.R.string.cancel
), HasBodyFormatArgs {
constructor(selectedPeerDevice: WifiP2pDevice) : this(arrayOf(selectedPeerDevice.deviceName))
}
open class YesNoDialog(
title: Int,
message: Int

View File

@ -1,6 +1,5 @@
package org.kiwix.kiwixmobile.zim_manager.local_file_transfer;
import android.content.DialogInterface;
import android.net.Uri;
import android.net.wifi.p2p.WifiP2pDevice;
import android.net.wifi.p2p.WifiP2pDeviceList;
@ -19,7 +18,6 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.fragment.app.ListFragment;
@ -27,8 +25,12 @@ import androidx.fragment.app.ListFragment;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
import kotlin.Unit;
import kotlin.jvm.functions.Function0;
import org.kiwix.kiwixmobile.BuildConfig;
import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.utils.AlertDialogShower;
import org.kiwix.kiwixmobile.utils.KiwixDialog;
import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil;
import java.io.IOException;
@ -60,6 +62,7 @@ public class DeviceListFragment extends ListFragment implements WifiP2pManager.P
public static int FILE_TRANSFER_PORT = 8008;
private SharedPreferenceUtil sharedPreferenceUtil;
private AlertDialogShower alertDialogShower;
private LocalFileTransferActivity localFileTransferActivity; // Parent activity, starting point of the module
private TransferProgressFragment transferProgressFragment; // Sibling fragment, for displaying transfer progress
@ -131,16 +134,12 @@ public class DeviceListFragment extends ListFragment implements WifiP2pManager.P
return;
selectedPeerDevice = (WifiP2pDevice) getListAdapter().getItem(position);
new AlertDialog.Builder(localFileTransferActivity)
.setMessage(getString(R.string.transfer_to, selectedPeerDevice.deviceName))
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((DeviceActionListener) localFileTransferActivity).connect(selectedPeerDevice);
}
})
.setNegativeButton(android.R.string.no, null)
.show();
alertDialogShower.show(new KiwixDialog.FileTransferConfirmation(selectedPeerDevice), new Function0<Unit>() {
@Override public Unit invoke() {
((DeviceActionListener) localFileTransferActivity).connect(selectedPeerDevice);
return Unit.INSTANCE;
}
});
}
private void displayTransferProgressFragment() {
@ -287,8 +286,9 @@ public class DeviceListFragment extends ListFragment implements WifiP2pManager.P
return (filesSent == totalFilesForTransfer);
}
public void setSharedPreferenceUtil(SharedPreferenceUtil sharedPreferenceUtil) {
public void performFieldInjection(SharedPreferenceUtil sharedPreferenceUtil, AlertDialogShower alertDialogShower) {
this.sharedPreferenceUtil = sharedPreferenceUtil;
this.alertDialogShower = alertDialogShower;
}
public String getZimStorageRootPath() {

View File

@ -1,13 +1,10 @@
package org.kiwix.kiwixmobile.zim_manager.local_file_transfer;
import android.Manifest;
import android.app.Dialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.location.LocationManager;
import android.net.Uri;
@ -17,7 +14,6 @@ import android.net.wifi.p2p.WifiP2pDevice;
import android.net.wifi.p2p.WifiP2pManager;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@ -26,18 +22,20 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import butterknife.BindView;
import butterknife.ButterKnife;
import kotlin.Unit;
import kotlin.jvm.functions.Function0;
import org.kiwix.kiwixmobile.KiwixApplication;
import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.utils.AlertDialogShower;
import org.kiwix.kiwixmobile.utils.KiwixDialog;
import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil;
import java.util.ArrayList;
@ -63,8 +61,8 @@ public class LocalFileTransferActivity extends AppCompatActivity implements Wifi
private static final int PERMISSION_REQUEST_CODE_COARSE_LOCATION = 1;
private static final int PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS = 2;
@Inject
SharedPreferenceUtil sharedPreferenceUtil;
@Inject SharedPreferenceUtil sharedPreferenceUtil;
@Inject AlertDialogShower alertDialogShower;
@BindView(R.id.toolbar_local_file_transfer) Toolbar actionBar;
@ -82,12 +80,14 @@ public class LocalFileTransferActivity extends AppCompatActivity implements Wifi
private final IntentFilter intentFilter = new IntentFilter(); // For specifying broadcasts (of the P2P API) that the module needs to respond to
private BroadcastReceiver receiver = null; // For receiving the broadcasts given by above filter
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_local_file_transfer);
KiwixApplication.getApplicationComponent().inject(this);
KiwixApplication.getApplicationComponent().activityComponent()
.activity(this)
.build()
.inject(this);
ButterKnife.bind(this);
/*
@ -153,7 +153,7 @@ public class LocalFileTransferActivity extends AppCompatActivity implements Wifi
final DeviceListFragment deviceListFragment = (DeviceListFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_device_list);
deviceListFragment.onInitiateDiscovery();
deviceListFragment.setSharedPreferenceUtil(sharedPreferenceUtil);
deviceListFragment.performFieldInjection(sharedPreferenceUtil, alertDialogShower);
manager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
@ -334,15 +334,12 @@ public class LocalFileTransferActivity extends AppCompatActivity implements Wifi
if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
if(shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_COARSE_LOCATION)) {
new AlertDialog.Builder(this)
.setMessage(R.string.permission_rationale_location)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_CODE_COARSE_LOCATION);
}
})
.show();
alertDialogShower.show(KiwixDialog.LocationPermissionRationale.INSTANCE, new Function0<Unit>() {
@Override public Unit invoke() {
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_CODE_COARSE_LOCATION);
return Unit.INSTANCE;
}
});
} else {
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_CODE_COARSE_LOCATION);
@ -361,15 +358,12 @@ public class LocalFileTransferActivity extends AppCompatActivity implements Wifi
if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if(shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
new AlertDialog.Builder(this)
.setMessage(R.string.permission_rationale_storage)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
requestPermissions(new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS);
}
})
.show();
alertDialogShower.show(KiwixDialog.StoragePermissionRationale.INSTANCE, new Function0<Unit>() {
@Override public Unit invoke() {
requestPermissions(new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS);
return Unit.INSTANCE;
}
});
} else {
requestPermissions(new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS);