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.ZimFileSelectFragment
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects.DeleteFiles 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.library_view.LibraryFragment
import org.kiwix.kiwixmobile.zim_manager.local_file_transfer.LocalFileTransferActivity
@Subcomponent(modules = [ActivityModule::class]) @Subcomponent(modules = [ActivityModule::class])
interface ActivityComponent { interface ActivityComponent {
@ -36,6 +37,8 @@ interface ActivityComponent {
fun inject(deleteFiles: DeleteFiles) fun inject(deleteFiles: DeleteFiles)
fun inject(localFileTransferActivity: LocalFileTransferActivity)
@Subcomponent.Builder @Subcomponent.Builder
interface 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.search.AutoCompleteAdapter;
import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity; import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity;
import org.kiwix.kiwixmobile.zim_manager.DownloadNotificationClickedReceiver; 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 @Singleton
@Component(modules = { @Component(modules = {
@ -68,6 +65,4 @@ public interface ApplicationComponent {
void inject(AutoCompleteAdapter autoCompleteAdapter); void inject(AutoCompleteAdapter autoCompleteAdapter);
void inject(DownloadNotificationClickedReceiver downloadNotificationClickedReceiver); void inject(DownloadNotificationClickedReceiver downloadNotificationClickedReceiver);
void inject(LocalFileTransferActivity localFileTransferActivity);
} }

View File

@ -1,5 +1,6 @@
package org.kiwix.kiwixmobile.utils package org.kiwix.kiwixmobile.utils
import android.net.wifi.p2p.WifiP2pDevice
import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.R
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.adapter.BooksOnDiskListItem.BookOnDisk 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)) 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( open class YesNoDialog(
title: Int, title: Int,
message: Int message: Int

View File

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

View File

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