From 6f90e8455eddb28d15d6adf50ae3dc4d45fbb34d Mon Sep 17 00:00:00 2001 From: ritvik Date: Tue, 4 Aug 2020 17:57:56 +0530 Subject: [PATCH 001/117] *LocalFileTransferActivity_toKotlin* --- .../LocalFileTransferActivity.java | 406 ----------------- .../LocalFileTransferActivity.kt | 414 ++++++++++++++++++ 2 files changed, 414 insertions(+), 406 deletions(-) delete mode 100644 app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/LocalFileTransferActivity.java create mode 100644 app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/LocalFileTransferActivity.kt diff --git a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/LocalFileTransferActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/LocalFileTransferActivity.java deleted file mode 100644 index fb1c9d6c1..000000000 --- a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/LocalFileTransferActivity.java +++ /dev/null @@ -1,406 +0,0 @@ -/* - * Kiwix Android - * Copyright (c) 2019 Kiwix - * 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 . - * - */ - -package org.kiwix.kiwixmobile.local_file_transfer; - -import android.Manifest; -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.location.LocationManager; -import android.net.Uri; -import android.net.wifi.p2p.WifiP2pDevice; -import android.net.wifi.p2p.WifiP2pDeviceList; -import android.os.Build; -import android.os.Bundle; -import android.provider.Settings; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.ProgressBar; -import android.widget.TextView; -import android.widget.Toast; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.widget.Toolbar; -import androidx.core.app.ActivityCompat; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import butterknife.BindView; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import javax.inject.Inject; -import kotlin.Unit; -import kotlin.jvm.functions.Function0; -import org.kiwix.kiwixmobile.ActivityExtensionsKt; -import org.kiwix.kiwixmobile.R; -import org.kiwix.kiwixmobile.core.base.BaseActivity; -import org.kiwix.kiwixmobile.core.di.components.CoreComponent; -import org.kiwix.kiwixmobile.core.utils.AlertDialogShower; -import org.kiwix.kiwixmobile.core.utils.KiwixDialog; -import org.kiwix.kiwixmobile.local_file_transfer.adapter.WifiP2pDelegate; -import org.kiwix.kiwixmobile.local_file_transfer.adapter.WifiPeerListAdapter; - -/** - * Created by @Aditya-Sood as a part of GSoC 2019. - * - * This activity is the starting point for the module used for sharing zims between devices. - * - * The module is used for transferring ZIM files from one device to another, from within the - * app. Two devices are connected to each other using WiFi Direct, followed by file transfer. - * - * File transfer involves two phases: - * 1) Handshake with the selected peer device, using {@link PeerGroupHandshakeAsyncTask} - * 2) After handshake, starting the files transfer using {@link SenderDeviceAsyncTask} on the sender - * device and {@link ReceiverDeviceAsyncTask} files receiving device - */ -@SuppressLint("GoogleAppIndexingApiWarning") -public class LocalFileTransferActivity extends BaseActivity implements - WifiDirectManager.Callbacks { - - // Not a typo, 'Log' tags have a length upper limit of 25 characters - public static final String TAG = "LocalFileTransferActvty"; - public static final int REQUEST_ENABLE_LOCATION_SERVICES = 1; - private static final int PERMISSION_REQUEST_CODE_COARSE_LOCATION = 1; - private static final int PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS = 2; - - @Inject AlertDialogShower alertDialogShower; - @Inject WifiDirectManager wifiDirectManager; - @Inject LocationManager locationManager; - - @BindView(R.id.toolbar) Toolbar actionBar; - @BindView(R.id.text_view_device_name) TextView deviceName; - @BindView(R.id.progress_bar_searching_peers) ProgressBar searchingPeersProgressBar; - @BindView(R.id.list_peer_devices) RecyclerView peerDeviceList; - @BindView(R.id.text_view_empty_peer_list) TextView textViewPeerDevices; - @BindView(R.id.recycler_view_transfer_files) RecyclerView filesRecyclerView; - - private boolean isFileSender = false; // Whether the device is the file sender or not - - private ArrayList filesForTransfer = new ArrayList<>(); - private FileListAdapter fileListAdapter; - - private WifiPeerListAdapter wifiPeerListAdapter; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_local_file_transfer); - /* - * Presence of file Uris decides whether the device with the activity open is a sender or receiver: - * - On the sender device, this activity is started from the app chooser post selection - * of files to share in the Library - * - On the receiver device, the activity is started directly from within the 'Get Content' - * activity, without any file Uris - * */ - Intent filesIntent = getIntent(); - ArrayList fileUriArrayList; - fileUriArrayList = filesIntent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); - isFileSender = (fileUriArrayList != null && fileUriArrayList.size() > 0); - - setSupportActionBar(actionBar); - actionBar.setNavigationIcon(R.drawable.ic_close_white_24dp); - actionBar.setNavigationOnClickListener(v -> finish()); - - wifiPeerListAdapter = new WifiPeerListAdapter( - new WifiP2pDelegate(wifiP2pDevice -> { - wifiDirectManager.sendToDevice(wifiP2pDevice); - return Unit.INSTANCE; - } - ) - ); - peerDeviceList.setAdapter(wifiPeerListAdapter); - peerDeviceList.setLayoutManager(new LinearLayoutManager(this)); - peerDeviceList.setHasFixedSize(true); - - if (isFileSender) { - for (int i = 0; i < fileUriArrayList.size(); i++) { - filesForTransfer.add(new FileItem(fileUriArrayList.get(i))); - } - - displayFileTransferProgress(filesForTransfer); - } - - wifiDirectManager.startWifiDirectManager(filesForTransfer); - } - - @Override - public boolean onCreateOptionsMenu(@NonNull Menu menu) { - getMenuInflater().inflate(R.menu.wifi_file_share_items, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(@NonNull MenuItem item) { - if (item.getItemId() == R.id.menu_item_search_devices) { - - /* Permissions essential for this module */ - if (!checkCoarseLocationAccessPermission()) { - return true; - } - - if (!checkExternalStorageWritePermission()) { - return true; - } - - /* Initiate discovery */ - if (!wifiDirectManager.isWifiP2pEnabled()) { - requestEnableWifiP2pServices(); - return true; - } - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !isLocationServiceEnabled()) { - requestEnableLocationServices(); - return true; - } - - showPeerDiscoveryProgressBar(); - wifiDirectManager.discoverPeerDevices(); - - return true; - } else { - return super.onOptionsItemSelected(item); - } - } - - private void showPeerDiscoveryProgressBar() { // Setup UI for searching peers - searchingPeersProgressBar.setVisibility(View.VISIBLE); - peerDeviceList.setVisibility(View.INVISIBLE); - textViewPeerDevices.setVisibility(View.INVISIBLE); - } - - /* From WifiDirectManager.Callbacks interface */ - @Override - public void onUserDeviceDetailsAvailable(@Nullable WifiP2pDevice userDevice) { - // Update UI with user device's details - if (userDevice != null) { - deviceName.setText(userDevice.deviceName); - Log.d(TAG, WifiDirectManager.getDeviceStatus(userDevice.status)); - } - } - - @Override - public void onConnectionToPeersLost() { - wifiPeerListAdapter.setItems(Collections.EMPTY_LIST); - } - - @Override - public void onFilesForTransferAvailable(@NonNull ArrayList filesForTransfer) { - this.filesForTransfer = filesForTransfer; - displayFileTransferProgress(filesForTransfer); - } - - private void displayFileTransferProgress(@NonNull ArrayList filesToSend) { - fileListAdapter = new FileListAdapter(filesToSend); - filesRecyclerView.setAdapter(fileListAdapter); - filesRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - } - - @Override - public void onFileStatusChanged(int itemIndex) { - fileListAdapter.notifyItemChanged(itemIndex); - } - - @Override - public void updateListOfAvailablePeers(@NonNull WifiP2pDeviceList peers) { - final List deviceList = new ArrayList(peers.getDeviceList()); - - searchingPeersProgressBar.setVisibility(View.GONE); - peerDeviceList.setVisibility(View.VISIBLE); - wifiPeerListAdapter.setItems(deviceList); - - if (deviceList.size() == 0) { - Log.d(LocalFileTransferActivity.TAG, "No devices found"); - } - } - - @Override - public void onFileTransferComplete() { - finish(); - } - - /* Helper methods used for checking permissions and states of services */ - private boolean checkCoarseLocationAccessPermission() { // Required by Android to detect wifi-p2p peers - if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) - == PackageManager.PERMISSION_DENIED) { - - if (ActivityCompat.shouldShowRequestPermissionRationale(this, - Manifest.permission.ACCESS_COARSE_LOCATION)) { - alertDialogShower.show(KiwixDialog.LocationPermissionRationale.INSTANCE, - (Function0) () -> { - ActivityCompat.requestPermissions(this, - new String[] { Manifest.permission.ACCESS_COARSE_LOCATION }, - PERMISSION_REQUEST_CODE_COARSE_LOCATION); - return Unit.INSTANCE; - }); - } else { - ActivityCompat.requestPermissions(this, - new String[] { Manifest.permission.ACCESS_COARSE_LOCATION }, - PERMISSION_REQUEST_CODE_COARSE_LOCATION); - } - return false; - } else { - return true; // Control reaches here: Either permission granted at install time, or at the time of request - } - } - - private boolean checkExternalStorageWritePermission() { // To access and store the zims - if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) - == PackageManager.PERMISSION_DENIED) { - - if (ActivityCompat.shouldShowRequestPermissionRationale(this, - Manifest.permission.WRITE_EXTERNAL_STORAGE)) { - alertDialogShower.show(KiwixDialog.StoragePermissionRationale.INSTANCE, - new Function0() { - @Override public Unit invoke() { - ActivityCompat.requestPermissions(LocalFileTransferActivity.this, - new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE }, - PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS); - return Unit.INSTANCE; - } - }); - } else { - ActivityCompat.requestPermissions(this, - new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE }, - PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS); - } - return false; - } else { - return true; // Control reaches here: Either permission granted at install time, or at the time of request - } - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, - @NonNull int[] grantResults) { - - if (grantResults[0] == PackageManager.PERMISSION_DENIED) { - switch (requestCode) { - - case PERMISSION_REQUEST_CODE_COARSE_LOCATION: { - Log.e(TAG, "Location permission not granted"); - - showToast(this, R.string.permission_refused_location, Toast.LENGTH_LONG); - finish(); - break; - } - - case PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS: { - Log.e(TAG, "Storage write permission not granted"); - - showToast(this, R.string.permission_refused_storage, Toast.LENGTH_LONG); - finish(); - break; - } - - default: { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - break; - } - } - } - } - - private boolean isLocationServiceEnabled() { - return isProviderEnabled(LocationManager.GPS_PROVIDER) - || isProviderEnabled(LocationManager.NETWORK_PROVIDER); - } - - private boolean isProviderEnabled(String locationProvider) { - try { - return locationManager.isProviderEnabled(locationProvider); - } catch (SecurityException | IllegalArgumentException ex) { - ex.printStackTrace(); - return false; - } - } - - private void requestEnableLocationServices() { - alertDialogShower.show(KiwixDialog.EnableLocationServices.INSTANCE, - new Function0() { - @Override public Unit invoke() { - startActivityForResult(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), - REQUEST_ENABLE_LOCATION_SERVICES); - return Unit.INSTANCE; - } - }, - new Function0() { - @Override public Unit invoke() { - showToast(LocalFileTransferActivity.this, R.string.discovery_needs_location, - Toast.LENGTH_SHORT); - return Unit.INSTANCE; - } - }); - } - - private void requestEnableWifiP2pServices() { - alertDialogShower.show(KiwixDialog.EnableWifiP2pServices.INSTANCE, - new Function0() { - @Override public Unit invoke() { - startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); - return Unit.INSTANCE; - } - }, - new Function0() { - @Override public Unit invoke() { - showToast(LocalFileTransferActivity.this, R.string.discovery_needs_wifi, - Toast.LENGTH_SHORT); - return Unit.INSTANCE; - } - }); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - switch (requestCode) { - case REQUEST_ENABLE_LOCATION_SERVICES: { - if (!isLocationServiceEnabled()) { - showToast(this, R.string.permission_refused_location, Toast.LENGTH_LONG); - } - break; - } - - default: { - super.onActivityResult(requestCode, resultCode, data); - break; - } - } - } - - /* Miscellaneous helper methods */ - static void showToast(Context context, int stringResource, int duration) { - showToast(context, context.getString(stringResource), duration); - } - - static void showToast(Context context, String text, int duration) { - Toast.makeText(context, text, duration).show(); - } - - @Override protected void onDestroy() { - wifiDirectManager.stopWifiDirectManager(); - super.onDestroy(); - } - - @Override protected void injection(CoreComponent coreComponent) { - ActivityExtensionsKt.getKiwixActivityComponent(this).inject(this); - } -} diff --git a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/LocalFileTransferActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/LocalFileTransferActivity.kt new file mode 100644 index 000000000..17339d97f --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/LocalFileTransferActivity.kt @@ -0,0 +1,414 @@ +/* + * Kiwix Android + * Copyright (c) 2019 Kiwix + * 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 . + * + */ +package org.kiwix.kiwixmobile.local_file_transfer + +import android.Manifest +import android.annotation.SuppressLint +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import android.location.LocationManager +import android.net.Uri +import android.net.wifi.p2p.WifiP2pDevice +import android.net.wifi.p2p.WifiP2pDeviceList +import android.os.Build +import android.os.Bundle +import android.provider.Settings +import android.util.Log +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.widget.ProgressBar +import android.widget.TextView +import android.widget.Toast +import androidx.appcompat.widget.Toolbar +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import butterknife.BindView +import org.kiwix.kiwixmobile.R +import org.kiwix.kiwixmobile.core.base.BaseActivity +import org.kiwix.kiwixmobile.core.di.components.CoreComponent +import org.kiwix.kiwixmobile.core.utils.AlertDialogShower +import org.kiwix.kiwixmobile.core.utils.KiwixDialog +import org.kiwix.kiwixmobile.kiwixActivityComponent +import org.kiwix.kiwixmobile.local_file_transfer.WifiDirectManager.Companion.getDeviceStatus +import org.kiwix.kiwixmobile.local_file_transfer.adapter.WifiP2pDelegate +import org.kiwix.kiwixmobile.local_file_transfer.adapter.WifiPeerListAdapter +import java.util.ArrayList +import java.util.Collections +import javax.inject.Inject + +/** + * Created by @Aditya-Sood as a part of GSoC 2019. + * + * This activity is the starting point for the module used for sharing zims between devices. + * + * The module is used for transferring ZIM files from one device to another, from within the + * app. Two devices are connected to each other using WiFi Direct, followed by file transfer. + * + * File transfer involves two phases: + * 1) Handshake with the selected peer device, using [PeerGroupHandshakeAsyncTask] + * 2) After handshake, starting the files transfer using [SenderDeviceAsyncTask] on the sender + * device and [ReceiverDeviceAsyncTask] files receiving device + */ +@SuppressLint("GoogleAppIndexingApiWarning") +class LocalFileTransferActivity : BaseActivity(), + WifiDirectManager.Callbacks { + @Inject + var alertDialogShower: AlertDialogShower? = null + + @Inject + var wifiDirectManager: WifiDirectManager? = null + + @Inject + var locationManager: LocationManager? = null + + @BindView(R.id.toolbar) + var actionBar: Toolbar? = null + + @BindView(R.id.text_view_device_name) + var deviceName: TextView? = null + + @BindView(R.id.progress_bar_searching_peers) + var searchingPeersProgressBar: ProgressBar? = null + + @BindView(R.id.list_peer_devices) + var peerDeviceList: RecyclerView? = null + + @BindView(R.id.text_view_empty_peer_list) + var textViewPeerDevices: TextView? = null + + @BindView(R.id.recycler_view_transfer_files) + var filesRecyclerView: RecyclerView? = null + private var isFileSender = false // Whether the device is the file sender or not + private var filesForTransfer = ArrayList() + private var fileListAdapter: FileListAdapter? = null + private var wifiPeerListAdapter: WifiPeerListAdapter? = null + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_local_file_transfer) + /* + * Presence of file Uris decides whether the device with the activity open is a sender or receiver: + * - On the sender device, this activity is started from the app chooser post selection + * of files to share in the Library + * - On the receiver device, the activity is started directly from within the 'Get Content' + * activity, without any file Uris + * */ + val filesIntent = intent + val fileUriArrayList: ArrayList? + fileUriArrayList = filesIntent.getParcelableArrayListExtra(Intent.EXTRA_STREAM) + isFileSender = fileUriArrayList != null && fileUriArrayList.size > 0 + setSupportActionBar(actionBar) + actionBar!!.setNavigationIcon(R.drawable.ic_close_white_24dp) + actionBar!!.setNavigationOnClickListener { finish() } + wifiPeerListAdapter = WifiPeerListAdapter( + WifiP2pDelegate { wifiP2pDevice: WifiP2pDevice? -> + wifiDirectManager!!.sendToDevice(wifiP2pDevice!!) + } + ) + peerDeviceList!!.adapter = wifiPeerListAdapter + peerDeviceList!!.layoutManager = LinearLayoutManager(this) + peerDeviceList!!.setHasFixedSize(true) + if (isFileSender) { + for (i in fileUriArrayList.indices) { + filesForTransfer.add(FileItem(fileUriArrayList[i])) + } + displayFileTransferProgress(filesForTransfer) + } + wifiDirectManager!!.startWifiDirectManager(filesForTransfer) + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.wifi_file_share_items, menu) + return true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + return if (item.itemId == R.id.menu_item_search_devices) { + + /* Permissions essential for this module */ + if (!checkCoarseLocationAccessPermission()) { + return true + } + if (!checkExternalStorageWritePermission()) { + return true + } + + /* Initiate discovery */if (!wifiDirectManager!!.isWifiP2pEnabled) { + requestEnableWifiP2pServices() + return true + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !isLocationServiceEnabled) { + requestEnableLocationServices() + return true + } + showPeerDiscoveryProgressBar() + wifiDirectManager!!.discoverPeerDevices() + true + } else { + super.onOptionsItemSelected(item) + } + } + + private fun showPeerDiscoveryProgressBar() { // Setup UI for searching peers + searchingPeersProgressBar!!.visibility = View.VISIBLE + peerDeviceList!!.visibility = View.INVISIBLE + textViewPeerDevices!!.visibility = View.INVISIBLE + } + + /* From WifiDirectManager.Callbacks interface */ + override fun onUserDeviceDetailsAvailable(userDevice: WifiP2pDevice?) { + // Update UI with user device's details + if (userDevice != null) { + deviceName!!.text = userDevice.deviceName + Log.d( + TAG, + getDeviceStatus(userDevice.status) + ) + } + } + + override fun onConnectionToPeersLost() { + wifiPeerListAdapter!!.items = Collections.EMPTY_LIST as List + } + + override fun onFilesForTransferAvailable(filesForTransfer: ArrayList) { + this.filesForTransfer = filesForTransfer + displayFileTransferProgress(filesForTransfer) + } + + private fun displayFileTransferProgress(filesToSend: ArrayList) { + fileListAdapter = FileListAdapter(filesToSend) + filesRecyclerView!!.adapter = fileListAdapter + filesRecyclerView!!.layoutManager = LinearLayoutManager(this) + } + + override fun onFileStatusChanged(itemIndex: Int) { + fileListAdapter!!.notifyItemChanged(itemIndex) + } + + override fun updateListOfAvailablePeers(peers: WifiP2pDeviceList) { + val deviceList: List = ArrayList(peers.deviceList) + searchingPeersProgressBar!!.visibility = View.GONE + peerDeviceList!!.visibility = View.VISIBLE + wifiPeerListAdapter!!.items = deviceList + if (deviceList.isEmpty()) { + Log.d(TAG, "No devices found") + } + } + + override fun onFileTransferComplete() { + finish() + } + + /* Helper methods used for checking permissions and states of services */ + private fun checkCoarseLocationAccessPermission(): Boolean { // Required by Android to detect wifi-p2p peers + return if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) + == PackageManager.PERMISSION_DENIED + ) { + if (ActivityCompat.shouldShowRequestPermissionRationale( + this, + Manifest.permission.ACCESS_COARSE_LOCATION + ) + ) { + alertDialogShower!!.show(KiwixDialog.LocationPermissionRationale, + { + ActivityCompat.requestPermissions( + this, arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION), + PERMISSION_REQUEST_CODE_COARSE_LOCATION + ) + }) + } else { + ActivityCompat.requestPermissions( + this, arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION), + PERMISSION_REQUEST_CODE_COARSE_LOCATION + ) + } + false + } else { + true // Control reaches here: Either permission granted at install time, or at the time of request + } + } + + private fun checkExternalStorageWritePermission(): Boolean { // To access and store the zims + return if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) + == PackageManager.PERMISSION_DENIED + ) { + if (ActivityCompat.shouldShowRequestPermissionRationale( + this, + Manifest.permission.WRITE_EXTERNAL_STORAGE + ) + ) { + alertDialogShower!!.show(KiwixDialog.StoragePermissionRationale, { + ActivityCompat.requestPermissions( + this@LocalFileTransferActivity, + arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), + PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS + ) + }) + } else { + ActivityCompat.requestPermissions( + this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), + PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS + ) + } + false + } else { + true // Control reaches here: Either permission granted at install time, or at the time of request + } + } + + override fun onRequestPermissionsResult( + requestCode: Int, permissions: Array, + grantResults: IntArray + ) { + if (grantResults[0] == PackageManager.PERMISSION_DENIED) { + when (requestCode) { + PERMISSION_REQUEST_CODE_COARSE_LOCATION -> { + Log.e( + TAG, + "Location permission not granted" + ) + showToast( + this, + R.string.permission_refused_location, + Toast.LENGTH_LONG + ) + finish() + } + PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS -> { + Log.e( + TAG, + "Storage write permission not granted" + ) + showToast( + this, + R.string.permission_refused_storage, + Toast.LENGTH_LONG + ) + finish() + } + else -> { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + } + } + } + } + + private val isLocationServiceEnabled: Boolean + get() = (isProviderEnabled(LocationManager.GPS_PROVIDER) + || isProviderEnabled(LocationManager.NETWORK_PROVIDER)) + + private fun isProviderEnabled(locationProvider: String): Boolean { + return try { + locationManager!!.isProviderEnabled(locationProvider) + } catch (ex: SecurityException) { + ex.printStackTrace() + false + } catch (ex: IllegalArgumentException) { + ex.printStackTrace() + false + } + } + + private fun requestEnableLocationServices() { + alertDialogShower!!.show(KiwixDialog.EnableLocationServices, { + startActivityForResult( + Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), + REQUEST_ENABLE_LOCATION_SERVICES + ) + }, { + showToast( + this@LocalFileTransferActivity, R.string.discovery_needs_location, + Toast.LENGTH_SHORT + ) + }) + } + + private fun requestEnableWifiP2pServices() { + alertDialogShower!!.show(KiwixDialog.EnableWifiP2pServices, { + startActivity(Intent(Settings.ACTION_WIFI_SETTINGS)) + }, { + showToast( + this@LocalFileTransferActivity, R.string.discovery_needs_wifi, + Toast.LENGTH_SHORT + ) + }) + } + + override fun onActivityResult( + requestCode: Int, + resultCode: Int, + data: Intent? + ) { + when (requestCode) { + REQUEST_ENABLE_LOCATION_SERVICES -> { + if (!isLocationServiceEnabled) { + showToast( + this, + R.string.permission_refused_location, + Toast.LENGTH_LONG + ) + } + } + else -> { + super.onActivityResult(requestCode, resultCode, data) + } + } + } + + override fun onDestroy() { + wifiDirectManager!!.stopWifiDirectManager() + super.onDestroy() + } + + override fun injection(coreComponent: CoreComponent) { + this.kiwixActivityComponent.inject(this) + } + + companion object { + // Not a typo, 'Log' tags have a length upper limit of 25 characters + const val TAG = "LocalFileTransferActvty" + const val REQUEST_ENABLE_LOCATION_SERVICES = 1 + private const val PERMISSION_REQUEST_CODE_COARSE_LOCATION = 1 + private const val PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS = 2 + + /* Miscellaneous helper methods */ + fun showToast( + context: Context, + stringResource: Int, + duration: Int + ) { + showToast( + context, + context.getString(stringResource), + duration + ) + } + + private fun showToast( + context: Context?, + text: String?, + duration: Int + ) { + Toast.makeText(context, text, duration).show() + } + } +} From 23fff64fc00263d83a81977bf0fad4b45c5401b3 Mon Sep 17 00:00:00 2001 From: ritvik Date: Sun, 9 Aug 2020 15:42:58 +0530 Subject: [PATCH 002/117] converted --- .../FileItem.kt | 0 .../FileListAdapter.kt | 0 .../KiwixWifiP2pBroadcastReceiver.kt | 0 .../LocalFileTransferActivity.kt | 219 ++++++++---------- .../PeerGroupHandshakeAsyncTask.java | 0 .../ReceiverDeviceAsyncTask.java | 0 .../SenderDeviceAsyncTask.java | 0 .../WifiDirectManager.kt | 0 .../adapter/WifiP2pDelegate.kt | 0 .../adapter/WifiP2pViewHolder.kt | 0 .../adapter/WifiPeerListAdapter.kt | 0 11 files changed, 98 insertions(+), 121 deletions(-) rename app/src/main/java/org/kiwix/kiwixmobile/{local_file_transfer => localfiletransfer}/FileItem.kt (100%) rename app/src/main/java/org/kiwix/kiwixmobile/{local_file_transfer => localfiletransfer}/FileListAdapter.kt (100%) rename app/src/main/java/org/kiwix/kiwixmobile/{local_file_transfer => localfiletransfer}/KiwixWifiP2pBroadcastReceiver.kt (100%) rename app/src/main/java/org/kiwix/kiwixmobile/{local_file_transfer => localfiletransfer}/LocalFileTransferActivity.kt (66%) rename app/src/main/java/org/kiwix/kiwixmobile/{local_file_transfer => localfiletransfer}/PeerGroupHandshakeAsyncTask.java (100%) rename app/src/main/java/org/kiwix/kiwixmobile/{local_file_transfer => localfiletransfer}/ReceiverDeviceAsyncTask.java (100%) rename app/src/main/java/org/kiwix/kiwixmobile/{local_file_transfer => localfiletransfer}/SenderDeviceAsyncTask.java (100%) rename app/src/main/java/org/kiwix/kiwixmobile/{local_file_transfer => localfiletransfer}/WifiDirectManager.kt (100%) rename app/src/main/java/org/kiwix/kiwixmobile/{local_file_transfer => localfiletransfer}/adapter/WifiP2pDelegate.kt (100%) rename app/src/main/java/org/kiwix/kiwixmobile/{local_file_transfer => localfiletransfer}/adapter/WifiP2pViewHolder.kt (100%) rename app/src/main/java/org/kiwix/kiwixmobile/{local_file_transfer => localfiletransfer}/adapter/WifiPeerListAdapter.kt (100%) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/FileItem.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileItem.kt similarity index 100% rename from app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/FileItem.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileItem.kt diff --git a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/FileListAdapter.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileListAdapter.kt similarity index 100% rename from app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/FileListAdapter.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileListAdapter.kt diff --git a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/KiwixWifiP2pBroadcastReceiver.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/KiwixWifiP2pBroadcastReceiver.kt similarity index 100% rename from app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/KiwixWifiP2pBroadcastReceiver.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/KiwixWifiP2pBroadcastReceiver.kt diff --git a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/LocalFileTransferActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/LocalFileTransferActivity.kt similarity index 66% rename from app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/LocalFileTransferActivity.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/LocalFileTransferActivity.kt index 17339d97f..518ebda9e 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/LocalFileTransferActivity.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/LocalFileTransferActivity.kt @@ -15,11 +15,10 @@ * along with this program. If not, see . * */ -package org.kiwix.kiwixmobile.local_file_transfer +package org.kiwix.kiwixmobile.localfiletransfer import android.Manifest import android.annotation.SuppressLint -import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.location.LocationManager @@ -33,26 +32,26 @@ import android.util.Log import android.view.Menu import android.view.MenuItem import android.view.View -import android.widget.ProgressBar -import android.widget.TextView import android.widget.Toast import androidx.appcompat.widget.Toolbar import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import butterknife.BindView +import kotlinx.android.synthetic.main.activity_local_file_transfer.list_peer_devices +import kotlinx.android.synthetic.main.activity_local_file_transfer.progress_bar_searching_peers +import kotlinx.android.synthetic.main.activity_local_file_transfer.recycler_view_transfer_files +import kotlinx.android.synthetic.main.activity_local_file_transfer.text_view_device_name +import kotlinx.android.synthetic.main.activity_local_file_transfer.text_view_empty_peer_list import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.core.base.BaseActivity import org.kiwix.kiwixmobile.core.di.components.CoreComponent import org.kiwix.kiwixmobile.core.utils.AlertDialogShower import org.kiwix.kiwixmobile.core.utils.KiwixDialog import org.kiwix.kiwixmobile.kiwixActivityComponent -import org.kiwix.kiwixmobile.local_file_transfer.WifiDirectManager.Companion.getDeviceStatus -import org.kiwix.kiwixmobile.local_file_transfer.adapter.WifiP2pDelegate -import org.kiwix.kiwixmobile.local_file_transfer.adapter.WifiPeerListAdapter +import org.kiwix.kiwixmobile.localfiletransfer.WifiDirectManager.Companion.getDeviceStatus +import org.kiwix.kiwixmobile.localfiletransfer.adapter.WifiP2pDelegate +import org.kiwix.kiwixmobile.localfiletransfer.adapter.WifiPeerListAdapter import java.util.ArrayList -import java.util.Collections import javax.inject.Inject /** @@ -68,42 +67,27 @@ import javax.inject.Inject * 2) After handshake, starting the files transfer using [SenderDeviceAsyncTask] on the sender * device and [ReceiverDeviceAsyncTask] files receiving device */ -@SuppressLint("GoogleAppIndexingApiWarning") +@SuppressLint("GoogleAppIndexingApiWarning", "Registered") class LocalFileTransferActivity : BaseActivity(), WifiDirectManager.Callbacks { @Inject - var alertDialogShower: AlertDialogShower? = null + lateinit var alertDialogShower: AlertDialogShower @Inject - var wifiDirectManager: WifiDirectManager? = null + lateinit var wifiDirectManager: WifiDirectManager @Inject - var locationManager: LocationManager? = null + lateinit var locationManager: LocationManager - @BindView(R.id.toolbar) - var actionBar: Toolbar? = null - - @BindView(R.id.text_view_device_name) - var deviceName: TextView? = null - - @BindView(R.id.progress_bar_searching_peers) - var searchingPeersProgressBar: ProgressBar? = null - - @BindView(R.id.list_peer_devices) - var peerDeviceList: RecyclerView? = null - - @BindView(R.id.text_view_empty_peer_list) - var textViewPeerDevices: TextView? = null - - @BindView(R.id.recycler_view_transfer_files) - var filesRecyclerView: RecyclerView? = null private var isFileSender = false // Whether the device is the file sender or not private var filesForTransfer = ArrayList() private var fileListAdapter: FileListAdapter? = null private var wifiPeerListAdapter: WifiPeerListAdapter? = null + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_local_file_transfer) + /* * Presence of file Uris decides whether the device with the activity open is a sender or receiver: * - On the sender device, this activity is started from the app chooser post selection @@ -114,25 +98,28 @@ class LocalFileTransferActivity : BaseActivity(), val filesIntent = intent val fileUriArrayList: ArrayList? fileUriArrayList = filesIntent.getParcelableArrayListExtra(Intent.EXTRA_STREAM) - isFileSender = fileUriArrayList != null && fileUriArrayList.size > 0 - setSupportActionBar(actionBar) - actionBar!!.setNavigationIcon(R.drawable.ic_close_white_24dp) - actionBar!!.setNavigationOnClickListener { finish() } + isFileSender = fileUriArrayList?.isNotEmpty() == true && fileUriArrayList.size > 0 + + val toolbar: Toolbar = + findViewById(R.id.toolbar) + // I know this is not the best method, but android extensions were showing 'unknown reference' error + setSupportActionBar(toolbar) + toolbar.setNavigationIcon(R.drawable.ic_close_white_24dp) + toolbar.setNavigationOnClickListener { finish() } wifiPeerListAdapter = WifiPeerListAdapter( - WifiP2pDelegate { wifiP2pDevice: WifiP2pDevice? -> - wifiDirectManager!!.sendToDevice(wifiP2pDevice!!) - } + WifiP2pDelegate(wifiDirectManager::sendToDevice) ) - peerDeviceList!!.adapter = wifiPeerListAdapter - peerDeviceList!!.layoutManager = LinearLayoutManager(this) - peerDeviceList!!.setHasFixedSize(true) + + list_peer_devices?.adapter = wifiPeerListAdapter + list_peer_devices?.layoutManager = LinearLayoutManager(this) + list_peer_devices?.setHasFixedSize(true) if (isFileSender) { - for (i in fileUriArrayList.indices) { - filesForTransfer.add(FileItem(fileUriArrayList[i])) + fileUriArrayList.map { + filesForTransfer.add(FileItem(it)) } displayFileTransferProgress(filesForTransfer) } - wifiDirectManager!!.startWifiDirectManager(filesForTransfer) + wifiDirectManager.startWifiDirectManager(filesForTransfer) } override fun onCreateOptionsMenu(menu: Menu): Boolean { @@ -141,43 +128,42 @@ class LocalFileTransferActivity : BaseActivity(), } override fun onOptionsItemSelected(item: MenuItem): Boolean { + var status = false return if (item.itemId == R.id.menu_item_search_devices) { - /* Permissions essential for this module */ if (!checkCoarseLocationAccessPermission()) { - return true + status = true } if (!checkExternalStorageWritePermission()) { - return true + status = true } - - /* Initiate discovery */if (!wifiDirectManager!!.isWifiP2pEnabled) { + /* Initiate discovery */ + if (!wifiDirectManager.isWifiP2pEnabled) { requestEnableWifiP2pServices() - return true + status = true } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !isLocationServiceEnabled) { requestEnableLocationServices() - return true + status = true } showPeerDiscoveryProgressBar() - wifiDirectManager!!.discoverPeerDevices() - true - } else { - super.onOptionsItemSelected(item) - } + wifiDirectManager.discoverPeerDevices() + status + } else + return super.onOptionsItemSelected(item) } private fun showPeerDiscoveryProgressBar() { // Setup UI for searching peers - searchingPeersProgressBar!!.visibility = View.VISIBLE - peerDeviceList!!.visibility = View.INVISIBLE - textViewPeerDevices!!.visibility = View.INVISIBLE + progress_bar_searching_peers?.visibility = View.VISIBLE + list_peer_devices?.visibility = View.INVISIBLE + text_view_empty_peer_list?.visibility = View.INVISIBLE } /* From WifiDirectManager.Callbacks interface */ override fun onUserDeviceDetailsAvailable(userDevice: WifiP2pDevice?) { // Update UI with user device's details if (userDevice != null) { - deviceName!!.text = userDevice.deviceName + text_view_device_name?.text = userDevice.deviceName Log.d( TAG, getDeviceStatus(userDevice.status) @@ -186,7 +172,7 @@ class LocalFileTransferActivity : BaseActivity(), } override fun onConnectionToPeersLost() { - wifiPeerListAdapter!!.items = Collections.EMPTY_LIST as List + wifiPeerListAdapter?.items = emptyList() } override fun onFilesForTransferAvailable(filesForTransfer: ArrayList) { @@ -196,19 +182,19 @@ class LocalFileTransferActivity : BaseActivity(), private fun displayFileTransferProgress(filesToSend: ArrayList) { fileListAdapter = FileListAdapter(filesToSend) - filesRecyclerView!!.adapter = fileListAdapter - filesRecyclerView!!.layoutManager = LinearLayoutManager(this) + recycler_view_transfer_files?.adapter = fileListAdapter + recycler_view_transfer_files?.layoutManager = LinearLayoutManager(this) } override fun onFileStatusChanged(itemIndex: Int) { - fileListAdapter!!.notifyItemChanged(itemIndex) + fileListAdapter?.notifyItemChanged(itemIndex) } override fun updateListOfAvailablePeers(peers: WifiP2pDeviceList) { val deviceList: List = ArrayList(peers.deviceList) - searchingPeersProgressBar!!.visibility = View.GONE - peerDeviceList!!.visibility = View.VISIBLE - wifiPeerListAdapter!!.items = deviceList + progress_bar_searching_peers?.visibility = View.GONE + list_peer_devices?.visibility = View.VISIBLE + wifiPeerListAdapter?.items = deviceList if (deviceList.isEmpty()) { Log.d(TAG, "No devices found") } @@ -219,8 +205,12 @@ class LocalFileTransferActivity : BaseActivity(), } /* Helper methods used for checking permissions and states of services */ - private fun checkCoarseLocationAccessPermission(): Boolean { // Required by Android to detect wifi-p2p peers - return if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) + private fun checkCoarseLocationAccessPermission(): Boolean { + // Required by Android to detect wifi-p2p peers + return if (ContextCompat.checkSelfPermission( + this, + Manifest.permission.ACCESS_COARSE_LOCATION + ) == PackageManager.PERMISSION_DENIED ) { if (ActivityCompat.shouldShowRequestPermissionRationale( @@ -228,7 +218,7 @@ class LocalFileTransferActivity : BaseActivity(), Manifest.permission.ACCESS_COARSE_LOCATION ) ) { - alertDialogShower!!.show(KiwixDialog.LocationPermissionRationale, + alertDialogShower.show(KiwixDialog.LocationPermissionRationale, { ActivityCompat.requestPermissions( this, arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION), @@ -243,12 +233,16 @@ class LocalFileTransferActivity : BaseActivity(), } false } else { - true // Control reaches here: Either permission granted at install time, or at the time of request + true + // Control reaches here: Either permission granted at install time, or at the time of request } } private fun checkExternalStorageWritePermission(): Boolean { // To access and store the zims - return if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) + return if (ContextCompat.checkSelfPermission( + this, + Manifest.permission.WRITE_EXTERNAL_STORAGE + ) == PackageManager.PERMISSION_DENIED ) { if (ActivityCompat.shouldShowRequestPermissionRationale( @@ -256,7 +250,7 @@ class LocalFileTransferActivity : BaseActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE ) ) { - alertDialogShower!!.show(KiwixDialog.StoragePermissionRationale, { + alertDialogShower.show(KiwixDialog.StoragePermissionRationale, { ActivityCompat.requestPermissions( this@LocalFileTransferActivity, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), @@ -271,12 +265,14 @@ class LocalFileTransferActivity : BaseActivity(), } false } else { - true // Control reaches here: Either permission granted at install time, or at the time of request + true + // Control reaches here: Either permission granted at install time, or at the time of request } } override fun onRequestPermissionsResult( - requestCode: Int, permissions: Array, + requestCode: Int, + permissions: Array, grantResults: IntArray ) { if (grantResults[0] == PackageManager.PERMISSION_DENIED) { @@ -286,11 +282,12 @@ class LocalFileTransferActivity : BaseActivity(), TAG, "Location permission not granted" ) - showToast( + Toast.makeText( this, R.string.permission_refused_location, Toast.LENGTH_LONG - ) + ).show() + finish() } PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS -> { @@ -298,11 +295,12 @@ class LocalFileTransferActivity : BaseActivity(), TAG, "Storage write permission not granted" ) - showToast( + Toast.makeText( this, R.string.permission_refused_storage, Toast.LENGTH_LONG - ) + ).show() + finish() } else -> { @@ -313,12 +311,12 @@ class LocalFileTransferActivity : BaseActivity(), } private val isLocationServiceEnabled: Boolean - get() = (isProviderEnabled(LocationManager.GPS_PROVIDER) - || isProviderEnabled(LocationManager.NETWORK_PROVIDER)) + get() = (isProviderEnabled(LocationManager.GPS_PROVIDER) || + isProviderEnabled(LocationManager.NETWORK_PROVIDER)) private fun isProviderEnabled(locationProvider: String): Boolean { return try { - locationManager!!.isProviderEnabled(locationProvider) + locationManager.isProviderEnabled(locationProvider) } catch (ex: SecurityException) { ex.printStackTrace() false @@ -329,28 +327,28 @@ class LocalFileTransferActivity : BaseActivity(), } private fun requestEnableLocationServices() { - alertDialogShower!!.show(KiwixDialog.EnableLocationServices, { - startActivityForResult( - Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), - REQUEST_ENABLE_LOCATION_SERVICES - ) - }, { - showToast( + alertDialogShower.show( + KiwixDialog.EnableLocationServices, { + startActivityForResult( + Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), + REQUEST_ENABLE_LOCATION_SERVICES + ) + }, Toast.makeText( this@LocalFileTransferActivity, R.string.discovery_needs_location, Toast.LENGTH_SHORT - ) - }) + )::show + ) } private fun requestEnableWifiP2pServices() { - alertDialogShower!!.show(KiwixDialog.EnableWifiP2pServices, { - startActivity(Intent(Settings.ACTION_WIFI_SETTINGS)) - }, { - showToast( + alertDialogShower.show( + KiwixDialog.EnableWifiP2pServices, { + startActivity(Intent(Settings.ACTION_WIFI_SETTINGS)) + }, Toast.makeText( this@LocalFileTransferActivity, R.string.discovery_needs_wifi, Toast.LENGTH_SHORT - ) - }) + )::show + ) } override fun onActivityResult( @@ -361,11 +359,11 @@ class LocalFileTransferActivity : BaseActivity(), when (requestCode) { REQUEST_ENABLE_LOCATION_SERVICES -> { if (!isLocationServiceEnabled) { - showToast( + Toast.makeText( this, R.string.permission_refused_location, Toast.LENGTH_LONG - ) + ).show() } } else -> { @@ -375,7 +373,7 @@ class LocalFileTransferActivity : BaseActivity(), } override fun onDestroy() { - wifiDirectManager!!.stopWifiDirectManager() + wifiDirectManager.stopWifiDirectManager() super.onDestroy() } @@ -389,26 +387,5 @@ class LocalFileTransferActivity : BaseActivity(), const val REQUEST_ENABLE_LOCATION_SERVICES = 1 private const val PERMISSION_REQUEST_CODE_COARSE_LOCATION = 1 private const val PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS = 2 - - /* Miscellaneous helper methods */ - fun showToast( - context: Context, - stringResource: Int, - duration: Int - ) { - showToast( - context, - context.getString(stringResource), - duration - ) - } - - private fun showToast( - context: Context?, - text: String?, - duration: Int - ) { - Toast.makeText(context, text, duration).show() - } } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/PeerGroupHandshakeAsyncTask.java b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/PeerGroupHandshakeAsyncTask.java similarity index 100% rename from app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/PeerGroupHandshakeAsyncTask.java rename to app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/PeerGroupHandshakeAsyncTask.java diff --git a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/ReceiverDeviceAsyncTask.java b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/ReceiverDeviceAsyncTask.java similarity index 100% rename from app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/ReceiverDeviceAsyncTask.java rename to app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/ReceiverDeviceAsyncTask.java diff --git a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/SenderDeviceAsyncTask.java b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/SenderDeviceAsyncTask.java similarity index 100% rename from app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/SenderDeviceAsyncTask.java rename to app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/SenderDeviceAsyncTask.java diff --git a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/WifiDirectManager.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/WifiDirectManager.kt similarity index 100% rename from app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/WifiDirectManager.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/WifiDirectManager.kt diff --git a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/adapter/WifiP2pDelegate.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pDelegate.kt similarity index 100% rename from app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/adapter/WifiP2pDelegate.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pDelegate.kt diff --git a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/adapter/WifiP2pViewHolder.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pViewHolder.kt similarity index 100% rename from app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/adapter/WifiP2pViewHolder.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pViewHolder.kt diff --git a/app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/adapter/WifiPeerListAdapter.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiPeerListAdapter.kt similarity index 100% rename from app/src/main/java/org/kiwix/kiwixmobile/local_file_transfer/adapter/WifiPeerListAdapter.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiPeerListAdapter.kt From 8cc8b446687a50331e16643a597c33185097e779 Mon Sep 17 00:00:00 2001 From: ritvik Date: Sun, 9 Aug 2020 18:30:23 +0530 Subject: [PATCH 003/117] added all edited --- app/detekt_baseline.xml | 8 ++++---- app/src/main/AndroidManifest.xml | 2 +- .../di/components/KiwixActivityComponent.kt | 2 +- .../kiwix/kiwixmobile/localfiletransfer/FileItem.kt | 4 ++-- .../kiwixmobile/localfiletransfer/FileListAdapter.kt | 10 +++++----- .../localfiletransfer/KiwixWifiP2pBroadcastReceiver.kt | 2 +- .../localfiletransfer/LocalFileTransferActivity.kt | 4 ++-- .../localfiletransfer/PeerGroupHandshakeAsyncTask.java | 2 +- .../localfiletransfer/ReceiverDeviceAsyncTask.java | 10 +++++----- .../localfiletransfer/SenderDeviceAsyncTask.java | 8 ++++---- .../kiwixmobile/localfiletransfer/WifiDirectManager.kt | 6 +++--- .../localfiletransfer/adapter/WifiP2pDelegate.kt | 2 +- .../localfiletransfer/adapter/WifiP2pViewHolder.kt | 2 +- .../kiwix/kiwixmobile/zim_manager/ZimManageActivity.kt | 2 +- .../main/res/layout/activity_local_file_transfer.xml | 2 +- app/src/main/res/menu/wifi_file_share_items.xml | 2 +- 16 files changed, 34 insertions(+), 34 deletions(-) diff --git a/app/detekt_baseline.xml b/app/detekt_baseline.xml index b52cda4f5..754852c72 100644 --- a/app/detekt_baseline.xml +++ b/app/detekt_baseline.xml @@ -35,10 +35,10 @@ PackageNaming:ShareFiles.kt$package org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects PackageNaming:SimplePageChangeListener.kt$package org.kiwix.kiwixmobile.zim_manager PackageNaming:StartMultiSelection.kt$package org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects - PackageNaming:WifiDirectManager.kt$package org.kiwix.kiwixmobile.local_file_transfer - PackageNaming:WifiP2pDelegate.kt$package org.kiwix.kiwixmobile.local_file_transfer.adapter - PackageNaming:WifiP2pViewHolder.kt$package org.kiwix.kiwixmobile.local_file_transfer.adapter - PackageNaming:WifiPeerListAdapter.kt$package org.kiwix.kiwixmobile.local_file_transfer.adapter + PackageNaming:WifiDirectManager.kt$package org.kiwix.kiwixmobile.localfiletransfer + PackageNaming:WifiP2pDelegate.kt$package org.kiwix.kiwixmobile.localfiletransfer.adapter + PackageNaming:WifiP2pViewHolder.kt$package org.kiwix.kiwixmobile.localfiletransfer.adapter + PackageNaming:WifiPeerListAdapter.kt$package org.kiwix.kiwixmobile.localfiletransfer.adapter PackageNaming:ZimFileSelectFragment.kt$package org.kiwix.kiwixmobile.zim_manager.fileselect_view PackageNaming:ZimManageActivity.kt$package org.kiwix.kiwixmobile.zim_manager PackageNaming:ZimManageViewModel.kt$package org.kiwix.kiwixmobile.zim_manager diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f6709c436..de4864729 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -153,7 +153,7 @@ diff --git a/app/src/main/java/org/kiwix/kiwixmobile/di/components/KiwixActivityComponent.kt b/app/src/main/java/org/kiwix/kiwixmobile/di/components/KiwixActivityComponent.kt index d0ead37cc..f1e0fe36b 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/di/components/KiwixActivityComponent.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/di/components/KiwixActivityComponent.kt @@ -25,7 +25,7 @@ import org.kiwix.kiwixmobile.di.modules.KiwixActivityModule import org.kiwix.kiwixmobile.intro.IntroActivity import org.kiwix.kiwixmobile.intro.IntroModule import org.kiwix.kiwixmobile.language.LanguageActivity -import org.kiwix.kiwixmobile.local_file_transfer.LocalFileTransferActivity +import org.kiwix.kiwixmobile.localfiletransfer.LocalFileTransferActivity import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.main.KiwixReaderFragment import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileItem.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileItem.kt index 4f2c05687..90eceffd9 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileItem.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileItem.kt @@ -18,10 +18,10 @@ @file:Suppress("PackageNaming") -package org.kiwix.kiwixmobile.local_file_transfer +package org.kiwix.kiwixmobile.localfiletransfer import android.net.Uri -import org.kiwix.kiwixmobile.local_file_transfer.WifiDirectManager.Companion.getFileName +import org.kiwix.kiwixmobile.localfiletransfer.WifiDirectManager.Companion.getFileName /** * Helper class, part of the local file sharing module. diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileListAdapter.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileListAdapter.kt index 945ad254e..4366cb912 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileListAdapter.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileListAdapter.kt @@ -17,7 +17,7 @@ */ @file:Suppress("PackageNaming") -package org.kiwix.kiwixmobile.local_file_transfer +package org.kiwix.kiwixmobile.localfiletransfer import android.view.View import android.view.ViewGroup @@ -26,13 +26,13 @@ import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.item_transfer_list.image_view_file_transferred import kotlinx.android.synthetic.main.item_transfer_list.progress_bar_transferring_file import kotlinx.android.synthetic.main.item_transfer_list.text_view_file_item_name -import org.kiwix.kiwixmobile.local_file_transfer.FileItem.FileStatus.SENDING -import org.kiwix.kiwixmobile.local_file_transfer.FileItem.FileStatus.SENT -import org.kiwix.kiwixmobile.local_file_transfer.FileItem.FileStatus.ERROR +import org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.SENDING +import org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.SENT +import org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.ERROR import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.core.base.adapter.BaseViewHolder import org.kiwix.kiwixmobile.core.extensions.ViewGroupExtensions.inflate -import org.kiwix.kiwixmobile.local_file_transfer.FileListAdapter.FileViewHolder +import org.kiwix.kiwixmobile.localfiletransfer.FileListAdapter.FileViewHolder import java.util.ArrayList /** diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/KiwixWifiP2pBroadcastReceiver.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/KiwixWifiP2pBroadcastReceiver.kt index a45ae0647..e84d511c9 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/KiwixWifiP2pBroadcastReceiver.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/KiwixWifiP2pBroadcastReceiver.kt @@ -18,7 +18,7 @@ @file:Suppress("PackageNaming") -package org.kiwix.kiwixmobile.local_file_transfer +package org.kiwix.kiwixmobile.localfiletransfer import android.content.BroadcastReceiver import android.content.Context diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/LocalFileTransferActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/LocalFileTransferActivity.kt index 518ebda9e..be76bbdb8 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/LocalFileTransferActivity.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/LocalFileTransferActivity.kt @@ -311,8 +311,8 @@ class LocalFileTransferActivity : BaseActivity(), } private val isLocationServiceEnabled: Boolean - get() = (isProviderEnabled(LocationManager.GPS_PROVIDER) || - isProviderEnabled(LocationManager.NETWORK_PROVIDER)) + get() = isProviderEnabled(LocationManager.GPS_PROVIDER) || + isProviderEnabled(LocationManager.NETWORK_PROVIDER) private fun isProviderEnabled(locationProvider: String): Boolean { return try { diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/PeerGroupHandshakeAsyncTask.java b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/PeerGroupHandshakeAsyncTask.java index 0376eacb5..301f877b8 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/PeerGroupHandshakeAsyncTask.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/PeerGroupHandshakeAsyncTask.java @@ -16,7 +16,7 @@ * */ -package org.kiwix.kiwixmobile.local_file_transfer; +package org.kiwix.kiwixmobile.localfiletransfer; import android.os.AsyncTask; import android.util.Log; diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/ReceiverDeviceAsyncTask.java b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/ReceiverDeviceAsyncTask.java index 130960552..524cb71bb 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/ReceiverDeviceAsyncTask.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/ReceiverDeviceAsyncTask.java @@ -16,7 +16,7 @@ * */ -package org.kiwix.kiwixmobile.local_file_transfer; +package org.kiwix.kiwixmobile.localfiletransfer; import android.os.AsyncTask; import android.util.Log; @@ -29,10 +29,10 @@ import java.net.Socket; import java.util.ArrayList; import org.kiwix.kiwixmobile.core.BuildConfig; import org.kiwix.kiwixmobile.core.R; -import static org.kiwix.kiwixmobile.local_file_transfer.FileItem.FileStatus; -import static org.kiwix.kiwixmobile.local_file_transfer.FileItem.FileStatus.ERROR; -import static org.kiwix.kiwixmobile.local_file_transfer.FileItem.FileStatus.SENDING; -import static org.kiwix.kiwixmobile.local_file_transfer.FileItem.FileStatus.SENT; +import static org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus; +import static org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.ERROR; +import static org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.SENDING; +import static org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.SENT; /** * Helper class for the local file sharing module. diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/SenderDeviceAsyncTask.java b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/SenderDeviceAsyncTask.java index 898b1dca8..c4dc751fa 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/SenderDeviceAsyncTask.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/SenderDeviceAsyncTask.java @@ -16,7 +16,7 @@ * */ -package org.kiwix.kiwixmobile.local_file_transfer; +package org.kiwix.kiwixmobile.localfiletransfer; import android.app.Activity; import android.content.ContentResolver; @@ -29,9 +29,9 @@ import java.net.InetSocketAddress; import java.net.Socket; import org.kiwix.kiwixmobile.core.BuildConfig; -import static org.kiwix.kiwixmobile.local_file_transfer.FileItem.FileStatus.ERROR; -import static org.kiwix.kiwixmobile.local_file_transfer.FileItem.FileStatus.SENDING; -import static org.kiwix.kiwixmobile.local_file_transfer.FileItem.FileStatus.SENT; +import static org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.ERROR; +import static org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.SENDING; +import static org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.SENT; /** * Helper class for the local file sharing module. diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/WifiDirectManager.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/WifiDirectManager.kt index f6e9c7f7e..5e6cbcc92 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/WifiDirectManager.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/WifiDirectManager.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . * */ -package org.kiwix.kiwixmobile.local_file_transfer +package org.kiwix.kiwixmobile.localfiletransfer import android.app.Activity import android.content.BroadcastReceiver @@ -45,8 +45,8 @@ import org.kiwix.kiwixmobile.core.extensions.toast import org.kiwix.kiwixmobile.core.utils.AlertDialogShower import org.kiwix.kiwixmobile.core.utils.KiwixDialog.FileTransferConfirmation import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil -import org.kiwix.kiwixmobile.local_file_transfer.FileItem.FileStatus -import org.kiwix.kiwixmobile.local_file_transfer.KiwixWifiP2pBroadcastReceiver.P2pEventListener +import org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus +import org.kiwix.kiwixmobile.localfiletransfer.KiwixWifiP2pBroadcastReceiver.P2pEventListener import java.io.IOException import java.io.InputStream import java.io.OutputStream diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pDelegate.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pDelegate.kt index 199707e9a..a172b830d 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pDelegate.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pDelegate.kt @@ -16,7 +16,7 @@ * */ -package org.kiwix.kiwixmobile.local_file_transfer.adapter +package org.kiwix.kiwixmobile.localfiletransfer.adapter import android.net.wifi.p2p.WifiP2pDevice import android.view.ViewGroup diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pViewHolder.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pViewHolder.kt index cfaf8748e..25f02e281 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pViewHolder.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pViewHolder.kt @@ -16,7 +16,7 @@ * */ -package org.kiwix.kiwixmobile.local_file_transfer.adapter +package org.kiwix.kiwixmobile.localfiletransfer.adapter import android.net.wifi.p2p.WifiP2pDevice import android.view.View diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.kt index c564d587b..8207e5234 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.kt @@ -36,7 +36,7 @@ import org.kiwix.kiwixmobile.core.utils.LanguageUtils import org.kiwix.kiwixmobile.core.utils.SimpleTextListener import org.kiwix.kiwixmobile.kiwixActivityComponent import org.kiwix.kiwixmobile.language.LanguageActivity -import org.kiwix.kiwixmobile.local_file_transfer.LocalFileTransferActivity +import org.kiwix.kiwixmobile.localfiletransfer.LocalFileTransferActivity import javax.inject.Inject class ZimManageActivity : BaseActivity() { diff --git a/app/src/main/res/layout/activity_local_file_transfer.xml b/app/src/main/res/layout/activity_local_file_transfer.xml index 8ba06a1b9..126d23c15 100644 --- a/app/src/main/res/layout/activity_local_file_transfer.xml +++ b/app/src/main/res/layout/activity_local_file_transfer.xml @@ -6,7 +6,7 @@ android:layout_height="match_parent" android:background="@android:color/transparent" android:fitsSystemWindows="true" - tools:context="org.kiwix.kiwixmobile.local_file_transfer.LocalFileTransferActivity"> + tools:context="org.kiwix.kiwixmobile.localfiletransfer.LocalFileTransferActivity"> diff --git a/app/src/main/res/menu/wifi_file_share_items.xml b/app/src/main/res/menu/wifi_file_share_items.xml index 3e8b199d5..b0b838046 100644 --- a/app/src/main/res/menu/wifi_file_share_items.xml +++ b/app/src/main/res/menu/wifi_file_share_items.xml @@ -2,7 +2,7 @@ + tools:context="org.kiwix.kiwixmobile.localfiletransfer.LocalFileTransferActivity"> Date: Sun, 9 Aug 2020 18:58:16 +0530 Subject: [PATCH 004/117] modified WifiPeerListAdapter --- .../localfiletransfer/adapter/WifiPeerListAdapter.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiPeerListAdapter.kt b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiPeerListAdapter.kt index 0b496b2c6..71866e929 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiPeerListAdapter.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiPeerListAdapter.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . * */ -package org.kiwix.kiwixmobile.local_file_transfer.adapter +package org.kiwix.kiwixmobile.localfiletransfer.adapter import android.net.wifi.p2p.WifiP2pDevice import org.kiwix.kiwixmobile.core.base.adapter.BaseDelegateAdapter From bb06719249e6fcd524bfb998faba64980c990763 Mon Sep 17 00:00:00 2001 From: ritvik Date: Tue, 11 Aug 2020 01:38:18 +0530 Subject: [PATCH 005/117] edited LocaleFileTransferActivity --- app/detekt_baseline.xml | 8 +- app/src/main/AndroidManifest.xml | 2 +- .../di/components/KiwixActivityComponent.kt | 2 +- .../FileItem.kt | 4 +- .../FileListAdapter.kt | 10 +- .../KiwixWifiP2pBroadcastReceiver.kt | 2 +- .../LocalFileTransferActivity.kt | 109 ++++++++---------- .../PeerGroupHandshakeAsyncTask.java | 2 +- .../ReceiverDeviceAsyncTask.java | 10 +- .../SenderDeviceAsyncTask.java | 8 +- .../WifiDirectManager.kt | 6 +- .../adapter/WifiP2pDelegate.kt | 2 +- .../adapter/WifiP2pViewHolder.kt | 2 +- .../adapter/WifiPeerListAdapter.kt | 2 +- .../zim_manager/ZimManageActivity.kt | 2 +- .../layout/activity_local_file_transfer.xml | 2 +- .../main/res/menu/wifi_file_share_items.xml | 2 +- 17 files changed, 83 insertions(+), 92 deletions(-) rename app/src/main/java/org/kiwix/kiwixmobile/{localfiletransfer => localFileTransfer}/FileItem.kt (92%) rename app/src/main/java/org/kiwix/kiwixmobile/{localfiletransfer => localFileTransfer}/FileListAdapter.kt (90%) rename app/src/main/java/org/kiwix/kiwixmobile/{localfiletransfer => localFileTransfer}/KiwixWifiP2pBroadcastReceiver.kt (98%) rename app/src/main/java/org/kiwix/kiwixmobile/{localfiletransfer => localFileTransfer}/LocalFileTransferActivity.kt (83%) rename app/src/main/java/org/kiwix/kiwixmobile/{localfiletransfer => localFileTransfer}/PeerGroupHandshakeAsyncTask.java (99%) rename app/src/main/java/org/kiwix/kiwixmobile/{localfiletransfer => localFileTransfer}/ReceiverDeviceAsyncTask.java (93%) rename app/src/main/java/org/kiwix/kiwixmobile/{localfiletransfer => localFileTransfer}/SenderDeviceAsyncTask.java (94%) rename app/src/main/java/org/kiwix/kiwixmobile/{localfiletransfer => localFileTransfer}/WifiDirectManager.kt (98%) rename app/src/main/java/org/kiwix/kiwixmobile/{localfiletransfer => localFileTransfer}/adapter/WifiP2pDelegate.kt (96%) rename app/src/main/java/org/kiwix/kiwixmobile/{localfiletransfer => localFileTransfer}/adapter/WifiP2pViewHolder.kt (95%) rename app/src/main/java/org/kiwix/kiwixmobile/{localfiletransfer => localFileTransfer}/adapter/WifiPeerListAdapter.kt (94%) diff --git a/app/detekt_baseline.xml b/app/detekt_baseline.xml index 754852c72..048d90f15 100644 --- a/app/detekt_baseline.xml +++ b/app/detekt_baseline.xml @@ -35,10 +35,10 @@ PackageNaming:ShareFiles.kt$package org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects PackageNaming:SimplePageChangeListener.kt$package org.kiwix.kiwixmobile.zim_manager PackageNaming:StartMultiSelection.kt$package org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects - PackageNaming:WifiDirectManager.kt$package org.kiwix.kiwixmobile.localfiletransfer - PackageNaming:WifiP2pDelegate.kt$package org.kiwix.kiwixmobile.localfiletransfer.adapter - PackageNaming:WifiP2pViewHolder.kt$package org.kiwix.kiwixmobile.localfiletransfer.adapter - PackageNaming:WifiPeerListAdapter.kt$package org.kiwix.kiwixmobile.localfiletransfer.adapter + PackageNaming:WifiDirectManager.kt$package org.kiwix.kiwixmobile.localFileTransfer + PackageNaming:WifiP2pDelegate.kt$package org.kiwix.kiwixmobile.localFileTransfer.adapter + PackageNaming:WifiP2pViewHolder.kt$package org.kiwix.kiwixmobile.localFileTransfer.adapter + PackageNaming:WifiPeerListAdapter.kt$package org.kiwix.kiwixmobile.localFileTransfer.adapter PackageNaming:ZimFileSelectFragment.kt$package org.kiwix.kiwixmobile.zim_manager.fileselect_view PackageNaming:ZimManageActivity.kt$package org.kiwix.kiwixmobile.zim_manager PackageNaming:ZimManageViewModel.kt$package org.kiwix.kiwixmobile.zim_manager diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index de4864729..aa9181e42 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -153,7 +153,7 @@ diff --git a/app/src/main/java/org/kiwix/kiwixmobile/di/components/KiwixActivityComponent.kt b/app/src/main/java/org/kiwix/kiwixmobile/di/components/KiwixActivityComponent.kt index f1e0fe36b..705d06d6a 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/di/components/KiwixActivityComponent.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/di/components/KiwixActivityComponent.kt @@ -25,7 +25,7 @@ import org.kiwix.kiwixmobile.di.modules.KiwixActivityModule import org.kiwix.kiwixmobile.intro.IntroActivity import org.kiwix.kiwixmobile.intro.IntroModule import org.kiwix.kiwixmobile.language.LanguageActivity -import org.kiwix.kiwixmobile.localfiletransfer.LocalFileTransferActivity +import org.kiwix.kiwixmobile.localFileTransfer.LocalFileTransferActivity import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.main.KiwixReaderFragment import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileItem.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/FileItem.kt similarity index 92% rename from app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileItem.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/FileItem.kt index 90eceffd9..c9aeb6aec 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileItem.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/FileItem.kt @@ -18,10 +18,10 @@ @file:Suppress("PackageNaming") -package org.kiwix.kiwixmobile.localfiletransfer +package org.kiwix.kiwixmobile.localFileTransfer import android.net.Uri -import org.kiwix.kiwixmobile.localfiletransfer.WifiDirectManager.Companion.getFileName +import org.kiwix.kiwixmobile.localFileTransfer.WifiDirectManager.Companion.getFileName /** * Helper class, part of the local file sharing module. diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileListAdapter.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/FileListAdapter.kt similarity index 90% rename from app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileListAdapter.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/FileListAdapter.kt index 4366cb912..c476c3a66 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/FileListAdapter.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/FileListAdapter.kt @@ -17,7 +17,7 @@ */ @file:Suppress("PackageNaming") -package org.kiwix.kiwixmobile.localfiletransfer +package org.kiwix.kiwixmobile.localFileTransfer import android.view.View import android.view.ViewGroup @@ -26,13 +26,13 @@ import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.item_transfer_list.image_view_file_transferred import kotlinx.android.synthetic.main.item_transfer_list.progress_bar_transferring_file import kotlinx.android.synthetic.main.item_transfer_list.text_view_file_item_name -import org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.SENDING -import org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.SENT -import org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.ERROR +import org.kiwix.kiwixmobile.localFileTransfer.FileItem.FileStatus.SENDING +import org.kiwix.kiwixmobile.localFileTransfer.FileItem.FileStatus.SENT +import org.kiwix.kiwixmobile.localFileTransfer.FileItem.FileStatus.ERROR import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.core.base.adapter.BaseViewHolder import org.kiwix.kiwixmobile.core.extensions.ViewGroupExtensions.inflate -import org.kiwix.kiwixmobile.localfiletransfer.FileListAdapter.FileViewHolder +import org.kiwix.kiwixmobile.localFileTransfer.FileListAdapter.FileViewHolder import java.util.ArrayList /** diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/KiwixWifiP2pBroadcastReceiver.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/KiwixWifiP2pBroadcastReceiver.kt similarity index 98% rename from app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/KiwixWifiP2pBroadcastReceiver.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/KiwixWifiP2pBroadcastReceiver.kt index e84d511c9..ad1b25117 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/KiwixWifiP2pBroadcastReceiver.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/KiwixWifiP2pBroadcastReceiver.kt @@ -18,7 +18,7 @@ @file:Suppress("PackageNaming") -package org.kiwix.kiwixmobile.localfiletransfer +package org.kiwix.kiwixmobile.localFileTransfer import android.content.BroadcastReceiver import android.content.Context diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/LocalFileTransferActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt similarity index 83% rename from app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/LocalFileTransferActivity.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt index be76bbdb8..710d2dfc7 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/LocalFileTransferActivity.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt @@ -15,10 +15,11 @@ * along with this program. If not, see . * */ -package org.kiwix.kiwixmobile.localfiletransfer +package org.kiwix.kiwixmobile.localFileTransfer import android.Manifest import android.annotation.SuppressLint +import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.location.LocationManager @@ -48,9 +49,9 @@ import org.kiwix.kiwixmobile.core.di.components.CoreComponent import org.kiwix.kiwixmobile.core.utils.AlertDialogShower import org.kiwix.kiwixmobile.core.utils.KiwixDialog import org.kiwix.kiwixmobile.kiwixActivityComponent -import org.kiwix.kiwixmobile.localfiletransfer.WifiDirectManager.Companion.getDeviceStatus -import org.kiwix.kiwixmobile.localfiletransfer.adapter.WifiP2pDelegate -import org.kiwix.kiwixmobile.localfiletransfer.adapter.WifiPeerListAdapter +import org.kiwix.kiwixmobile.localFileTransfer.WifiDirectManager.Companion.getDeviceStatus +import org.kiwix.kiwixmobile.localFileTransfer.adapter.WifiP2pDelegate +import org.kiwix.kiwixmobile.localFileTransfer.adapter.WifiPeerListAdapter import java.util.ArrayList import javax.inject.Inject @@ -110,9 +111,9 @@ class LocalFileTransferActivity : BaseActivity(), WifiP2pDelegate(wifiDirectManager::sendToDevice) ) - list_peer_devices?.adapter = wifiPeerListAdapter - list_peer_devices?.layoutManager = LinearLayoutManager(this) - list_peer_devices?.setHasFixedSize(true) + list_peer_devices.adapter = wifiPeerListAdapter + list_peer_devices.layoutManager = LinearLayoutManager(this) + list_peer_devices.setHasFixedSize(true) if (isFileSender) { fileUriArrayList.map { filesForTransfer.add(FileItem(it)) @@ -128,42 +129,46 @@ class LocalFileTransferActivity : BaseActivity(), } override fun onOptionsItemSelected(item: MenuItem): Boolean { - var status = false - return if (item.itemId == R.id.menu_item_search_devices) { + /* var status = false */ + if (item.itemId == R.id.menu_item_search_devices) { /* Permissions essential for this module */ - if (!checkCoarseLocationAccessPermission()) { - status = true + return when { + !checkCoarseLocationAccessPermission() -> { + true + } + !checkExternalStorageWritePermission() -> { + true + } + /* Initiate discovery */ + !wifiDirectManager.isWifiP2pEnabled -> { + requestEnableWifiP2pServices() + true + } + Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !isLocationServiceEnabled -> { + requestEnableLocationServices() + true + } + else -> { + showPeerDiscoveryProgressBar() + wifiDirectManager.discoverPeerDevices() + true + } } - if (!checkExternalStorageWritePermission()) { - status = true - } - /* Initiate discovery */ - if (!wifiDirectManager.isWifiP2pEnabled) { - requestEnableWifiP2pServices() - status = true - } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !isLocationServiceEnabled) { - requestEnableLocationServices() - status = true - } - showPeerDiscoveryProgressBar() - wifiDirectManager.discoverPeerDevices() - status - } else - return super.onOptionsItemSelected(item) + } + return super.onOptionsItemSelected(item) } private fun showPeerDiscoveryProgressBar() { // Setup UI for searching peers - progress_bar_searching_peers?.visibility = View.VISIBLE - list_peer_devices?.visibility = View.INVISIBLE - text_view_empty_peer_list?.visibility = View.INVISIBLE + progress_bar_searching_peers.visibility = View.VISIBLE + list_peer_devices.visibility = View.INVISIBLE + text_view_empty_peer_list.visibility = View.INVISIBLE } /* From WifiDirectManager.Callbacks interface */ override fun onUserDeviceDetailsAvailable(userDevice: WifiP2pDevice?) { // Update UI with user device's details if (userDevice != null) { - text_view_device_name?.text = userDevice.deviceName + text_view_device_name.text = userDevice.deviceName Log.d( TAG, getDeviceStatus(userDevice.status) @@ -182,8 +187,8 @@ class LocalFileTransferActivity : BaseActivity(), private fun displayFileTransferProgress(filesToSend: ArrayList) { fileListAdapter = FileListAdapter(filesToSend) - recycler_view_transfer_files?.adapter = fileListAdapter - recycler_view_transfer_files?.layoutManager = LinearLayoutManager(this) + recycler_view_transfer_files.adapter = fileListAdapter + recycler_view_transfer_files.layoutManager = LinearLayoutManager(this) } override fun onFileStatusChanged(itemIndex: Int) { @@ -192,8 +197,8 @@ class LocalFileTransferActivity : BaseActivity(), override fun updateListOfAvailablePeers(peers: WifiP2pDeviceList) { val deviceList: List = ArrayList(peers.deviceList) - progress_bar_searching_peers?.visibility = View.GONE - list_peer_devices?.visibility = View.VISIBLE + progress_bar_searching_peers.visibility = View.GONE + list_peer_devices.visibility = View.VISIBLE wifiPeerListAdapter?.items = deviceList if (deviceList.isEmpty()) { Log.d(TAG, "No devices found") @@ -282,11 +287,7 @@ class LocalFileTransferActivity : BaseActivity(), TAG, "Location permission not granted" ) - Toast.makeText( - this, - R.string.permission_refused_location, - Toast.LENGTH_LONG - ).show() + R.string.permission_refused_location.toast(this) finish() } @@ -295,11 +296,7 @@ class LocalFileTransferActivity : BaseActivity(), TAG, "Storage write permission not granted" ) - Toast.makeText( - this, - R.string.permission_refused_storage, - Toast.LENGTH_LONG - ).show() + R.string.permission_refused_storage.toast(this) finish() } @@ -333,10 +330,8 @@ class LocalFileTransferActivity : BaseActivity(), Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), REQUEST_ENABLE_LOCATION_SERVICES ) - }, Toast.makeText( - this@LocalFileTransferActivity, R.string.discovery_needs_location, - Toast.LENGTH_SHORT - )::show + }, + R.string.discovery_needs_location.toast(this)::show ) } @@ -344,10 +339,7 @@ class LocalFileTransferActivity : BaseActivity(), alertDialogShower.show( KiwixDialog.EnableWifiP2pServices, { startActivity(Intent(Settings.ACTION_WIFI_SETTINGS)) - }, Toast.makeText( - this@LocalFileTransferActivity, R.string.discovery_needs_wifi, - Toast.LENGTH_SHORT - )::show + }, R.string.discovery_needs_wifi.toast(this)::show ) } @@ -359,11 +351,7 @@ class LocalFileTransferActivity : BaseActivity(), when (requestCode) { REQUEST_ENABLE_LOCATION_SERVICES -> { if (!isLocationServiceEnabled) { - Toast.makeText( - this, - R.string.permission_refused_location, - Toast.LENGTH_LONG - ).show() + R.string.permission_refused_location.toast(this) } } else -> { @@ -372,6 +360,9 @@ class LocalFileTransferActivity : BaseActivity(), } } + fun Any.toast(context: Context, duration: Int = Toast.LENGTH_SHORT): Toast = + Toast.makeText(context, this.toString(), duration).apply { show() } + override fun onDestroy() { wifiDirectManager.stopWifiDirectManager() super.onDestroy() diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/PeerGroupHandshakeAsyncTask.java b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/PeerGroupHandshakeAsyncTask.java similarity index 99% rename from app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/PeerGroupHandshakeAsyncTask.java rename to app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/PeerGroupHandshakeAsyncTask.java index 301f877b8..4bd6a40af 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/PeerGroupHandshakeAsyncTask.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/PeerGroupHandshakeAsyncTask.java @@ -16,7 +16,7 @@ * */ -package org.kiwix.kiwixmobile.localfiletransfer; +package org.kiwix.kiwixmobile.localFileTransfer; import android.os.AsyncTask; import android.util.Log; diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/ReceiverDeviceAsyncTask.java b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/ReceiverDeviceAsyncTask.java similarity index 93% rename from app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/ReceiverDeviceAsyncTask.java rename to app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/ReceiverDeviceAsyncTask.java index 524cb71bb..f4655c8ec 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/ReceiverDeviceAsyncTask.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/ReceiverDeviceAsyncTask.java @@ -16,7 +16,7 @@ * */ -package org.kiwix.kiwixmobile.localfiletransfer; +package org.kiwix.kiwixmobile.localFileTransfer; import android.os.AsyncTask; import android.util.Log; @@ -29,10 +29,10 @@ import java.net.Socket; import java.util.ArrayList; import org.kiwix.kiwixmobile.core.BuildConfig; import org.kiwix.kiwixmobile.core.R; -import static org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus; -import static org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.ERROR; -import static org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.SENDING; -import static org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.SENT; +import static org.kiwix.kiwixmobile.localFileTransfer.FileItem.FileStatus; +import static org.kiwix.kiwixmobile.localFileTransfer.FileItem.FileStatus.ERROR; +import static org.kiwix.kiwixmobile.localFileTransfer.FileItem.FileStatus.SENDING; +import static org.kiwix.kiwixmobile.localFileTransfer.FileItem.FileStatus.SENT; /** * Helper class for the local file sharing module. diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/SenderDeviceAsyncTask.java b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/SenderDeviceAsyncTask.java similarity index 94% rename from app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/SenderDeviceAsyncTask.java rename to app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/SenderDeviceAsyncTask.java index c4dc751fa..7daf75d46 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/SenderDeviceAsyncTask.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/SenderDeviceAsyncTask.java @@ -16,7 +16,7 @@ * */ -package org.kiwix.kiwixmobile.localfiletransfer; +package org.kiwix.kiwixmobile.localFileTransfer; import android.app.Activity; import android.content.ContentResolver; @@ -29,9 +29,9 @@ import java.net.InetSocketAddress; import java.net.Socket; import org.kiwix.kiwixmobile.core.BuildConfig; -import static org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.ERROR; -import static org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.SENDING; -import static org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus.SENT; +import static org.kiwix.kiwixmobile.localFileTransfer.FileItem.FileStatus.ERROR; +import static org.kiwix.kiwixmobile.localFileTransfer.FileItem.FileStatus.SENDING; +import static org.kiwix.kiwixmobile.localFileTransfer.FileItem.FileStatus.SENT; /** * Helper class for the local file sharing module. diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/WifiDirectManager.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/WifiDirectManager.kt similarity index 98% rename from app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/WifiDirectManager.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/WifiDirectManager.kt index 5e6cbcc92..60129b319 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/WifiDirectManager.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/WifiDirectManager.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . * */ -package org.kiwix.kiwixmobile.localfiletransfer +package org.kiwix.kiwixmobile.localFileTransfer import android.app.Activity import android.content.BroadcastReceiver @@ -45,8 +45,8 @@ import org.kiwix.kiwixmobile.core.extensions.toast import org.kiwix.kiwixmobile.core.utils.AlertDialogShower import org.kiwix.kiwixmobile.core.utils.KiwixDialog.FileTransferConfirmation import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil -import org.kiwix.kiwixmobile.localfiletransfer.FileItem.FileStatus -import org.kiwix.kiwixmobile.localfiletransfer.KiwixWifiP2pBroadcastReceiver.P2pEventListener +import org.kiwix.kiwixmobile.localFileTransfer.FileItem.FileStatus +import org.kiwix.kiwixmobile.localFileTransfer.KiwixWifiP2pBroadcastReceiver.P2pEventListener import java.io.IOException import java.io.InputStream import java.io.OutputStream diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pDelegate.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/adapter/WifiP2pDelegate.kt similarity index 96% rename from app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pDelegate.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/adapter/WifiP2pDelegate.kt index a172b830d..557839e94 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pDelegate.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/adapter/WifiP2pDelegate.kt @@ -16,7 +16,7 @@ * */ -package org.kiwix.kiwixmobile.localfiletransfer.adapter +package org.kiwix.kiwixmobile.localFileTransfer.adapter import android.net.wifi.p2p.WifiP2pDevice import android.view.ViewGroup diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pViewHolder.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/adapter/WifiP2pViewHolder.kt similarity index 95% rename from app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pViewHolder.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/adapter/WifiP2pViewHolder.kt index 25f02e281..f05bce1ce 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiP2pViewHolder.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/adapter/WifiP2pViewHolder.kt @@ -16,7 +16,7 @@ * */ -package org.kiwix.kiwixmobile.localfiletransfer.adapter +package org.kiwix.kiwixmobile.localFileTransfer.adapter import android.net.wifi.p2p.WifiP2pDevice import android.view.View diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiPeerListAdapter.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/adapter/WifiPeerListAdapter.kt similarity index 94% rename from app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiPeerListAdapter.kt rename to app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/adapter/WifiPeerListAdapter.kt index 71866e929..28dfc1dc7 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localfiletransfer/adapter/WifiPeerListAdapter.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/adapter/WifiPeerListAdapter.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . * */ -package org.kiwix.kiwixmobile.localfiletransfer.adapter +package org.kiwix.kiwixmobile.localFileTransfer.adapter import android.net.wifi.p2p.WifiP2pDevice import org.kiwix.kiwixmobile.core.base.adapter.BaseDelegateAdapter diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.kt index 8207e5234..e2044fc3c 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.kt @@ -36,7 +36,7 @@ import org.kiwix.kiwixmobile.core.utils.LanguageUtils import org.kiwix.kiwixmobile.core.utils.SimpleTextListener import org.kiwix.kiwixmobile.kiwixActivityComponent import org.kiwix.kiwixmobile.language.LanguageActivity -import org.kiwix.kiwixmobile.localfiletransfer.LocalFileTransferActivity +import org.kiwix.kiwixmobile.localFileTransfer.LocalFileTransferActivity import javax.inject.Inject class ZimManageActivity : BaseActivity() { diff --git a/app/src/main/res/layout/activity_local_file_transfer.xml b/app/src/main/res/layout/activity_local_file_transfer.xml index 126d23c15..d579337c2 100644 --- a/app/src/main/res/layout/activity_local_file_transfer.xml +++ b/app/src/main/res/layout/activity_local_file_transfer.xml @@ -6,7 +6,7 @@ android:layout_height="match_parent" android:background="@android:color/transparent" android:fitsSystemWindows="true" - tools:context="org.kiwix.kiwixmobile.localfiletransfer.LocalFileTransferActivity"> + tools:context="org.kiwix.kiwixmobile.localFileTransfer.LocalFileTransferActivity"> diff --git a/app/src/main/res/menu/wifi_file_share_items.xml b/app/src/main/res/menu/wifi_file_share_items.xml index b0b838046..ab64f5c02 100644 --- a/app/src/main/res/menu/wifi_file_share_items.xml +++ b/app/src/main/res/menu/wifi_file_share_items.xml @@ -2,7 +2,7 @@ + tools:context="org.kiwix.kiwixmobile.localFileTransfer.LocalFileTransferActivity"> Date: Tue, 11 Aug 2020 19:04:42 +0530 Subject: [PATCH 006/117] edited files --- .../androidTest/java/org/kiwix/kiwixmobile/BaseActivityTest.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/BaseActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/BaseActivityTest.kt index fdb7c7537..2a03e4d0b 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/BaseActivityTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/BaseActivityTest.kt @@ -34,9 +34,11 @@ import org.kiwix.kiwixmobile.core.di.components.TestComponent abstract class BaseActivityTest { @get:Rule abstract var activityRule: ActivityTestRule + @get:Rule var readPermissionRule: GrantPermissionRule = GrantPermissionRule.grant(permission.READ_EXTERNAL_STORAGE) + @get:Rule var writePermissionRule: GrantPermissionRule = GrantPermissionRule.grant(permission.WRITE_EXTERNAL_STORAGE) From cfe99fc760d3de6ad5fc2154008c5053297ad7fc Mon Sep 17 00:00:00 2001 From: ritvik Date: Sun, 16 Aug 2020 23:29:59 +0530 Subject: [PATCH 007/117] solved toast issue --- .../LocalFileTransferActivity.kt | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt index 710d2dfc7..006faca0f 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt @@ -19,7 +19,6 @@ package org.kiwix.kiwixmobile.localFileTransfer import android.Manifest import android.annotation.SuppressLint -import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.location.LocationManager @@ -46,6 +45,7 @@ import kotlinx.android.synthetic.main.activity_local_file_transfer.text_view_emp import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.core.base.BaseActivity import org.kiwix.kiwixmobile.core.di.components.CoreComponent +import org.kiwix.kiwixmobile.core.extensions.toast import org.kiwix.kiwixmobile.core.utils.AlertDialogShower import org.kiwix.kiwixmobile.core.utils.KiwixDialog import org.kiwix.kiwixmobile.kiwixActivityComponent @@ -103,7 +103,6 @@ class LocalFileTransferActivity : BaseActivity(), val toolbar: Toolbar = findViewById(R.id.toolbar) - // I know this is not the best method, but android extensions were showing 'unknown reference' error setSupportActionBar(toolbar) toolbar.setNavigationIcon(R.drawable.ic_close_white_24dp) toolbar.setNavigationOnClickListener { finish() } @@ -129,7 +128,6 @@ class LocalFileTransferActivity : BaseActivity(), } override fun onOptionsItemSelected(item: MenuItem): Boolean { - /* var status = false */ if (item.itemId == R.id.menu_item_search_devices) { /* Permissions essential for this module */ return when { @@ -287,7 +285,10 @@ class LocalFileTransferActivity : BaseActivity(), TAG, "Location permission not granted" ) - R.string.permission_refused_location.toast(this) + this.toast( + R.string.permission_refused_location, + Toast.LENGTH_SHORT + ) finish() } @@ -296,8 +297,10 @@ class LocalFileTransferActivity : BaseActivity(), TAG, "Storage write permission not granted" ) - R.string.permission_refused_storage.toast(this) - + this.toast( + R.string.permission_refused_storage, + Toast.LENGTH_SHORT + ) finish() } else -> { @@ -331,7 +334,12 @@ class LocalFileTransferActivity : BaseActivity(), REQUEST_ENABLE_LOCATION_SERVICES ) }, - R.string.discovery_needs_location.toast(this)::show + { + this.toast( + R.string.discovery_needs_location, + Toast.LENGTH_SHORT + ) + } ) } @@ -339,7 +347,12 @@ class LocalFileTransferActivity : BaseActivity(), alertDialogShower.show( KiwixDialog.EnableWifiP2pServices, { startActivity(Intent(Settings.ACTION_WIFI_SETTINGS)) - }, R.string.discovery_needs_wifi.toast(this)::show + }, { + this.toast( + R.string.discovery_needs_wifi, + Toast.LENGTH_SHORT + ) + } ) } @@ -351,7 +364,10 @@ class LocalFileTransferActivity : BaseActivity(), when (requestCode) { REQUEST_ENABLE_LOCATION_SERVICES -> { if (!isLocationServiceEnabled) { - R.string.permission_refused_location.toast(this) + this.toast( + R.string.permission_refused_location, + Toast.LENGTH_SHORT + ) } } else -> { @@ -360,9 +376,6 @@ class LocalFileTransferActivity : BaseActivity(), } } - fun Any.toast(context: Context, duration: Int = Toast.LENGTH_SHORT): Toast = - Toast.makeText(context, this.toString(), duration).apply { show() } - override fun onDestroy() { wifiDirectManager.stopWifiDirectManager() super.onDestroy() From d2f2cd0de1748e372eb0c43a5d3575e1fcf9f29a Mon Sep 17 00:00:00 2001 From: ritvik Date: Mon, 17 Aug 2020 15:33:33 +0530 Subject: [PATCH 008/117] solved synatax issues --- .../LocalFileTransferActivity.kt | 59 ++++++++----------- 1 file changed, 24 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt index 006faca0f..473b33787 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt @@ -88,7 +88,6 @@ class LocalFileTransferActivity : BaseActivity(), override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_local_file_transfer) - /* * Presence of file Uris decides whether the device with the activity open is a sender or receiver: * - On the sender device, this activity is started from the app chooser post selection @@ -131,12 +130,10 @@ class LocalFileTransferActivity : BaseActivity(), if (item.itemId == R.id.menu_item_search_devices) { /* Permissions essential for this module */ return when { - !checkCoarseLocationAccessPermission() -> { + !checkCoarseLocationAccessPermission() -> true - } - !checkExternalStorageWritePermission() -> { + !checkExternalStorageWritePermission() -> true - } /* Initiate discovery */ !wifiDirectManager.isWifiP2pEnabled -> { requestEnableWifiP2pServices() @@ -168,8 +165,7 @@ class LocalFileTransferActivity : BaseActivity(), if (userDevice != null) { text_view_device_name.text = userDevice.deviceName Log.d( - TAG, - getDeviceStatus(userDevice.status) + TAG, getDeviceStatus(userDevice.status) ) } } @@ -216,23 +212,25 @@ class LocalFileTransferActivity : BaseActivity(), ) == PackageManager.PERMISSION_DENIED ) { - if (ActivityCompat.shouldShowRequestPermissionRationale( + when { + ActivityCompat.shouldShowRequestPermissionRationale( this, Manifest.permission.ACCESS_COARSE_LOCATION - ) - ) { - alertDialogShower.show(KiwixDialog.LocationPermissionRationale, - { - ActivityCompat.requestPermissions( - this, arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION), - PERMISSION_REQUEST_CODE_COARSE_LOCATION - ) - }) - } else { - ActivityCompat.requestPermissions( - this, arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION), - PERMISSION_REQUEST_CODE_COARSE_LOCATION - ) + ) -> { + alertDialogShower.show(KiwixDialog.LocationPermissionRationale, + { + ActivityCompat.requestPermissions( + this, arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION), + PERMISSION_REQUEST_CODE_COARSE_LOCATION + ) + }) + } + else -> { + ActivityCompat.requestPermissions( + this, arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION), + PERMISSION_REQUEST_CODE_COARSE_LOCATION + ) + } } false } else { @@ -281,31 +279,23 @@ class LocalFileTransferActivity : BaseActivity(), if (grantResults[0] == PackageManager.PERMISSION_DENIED) { when (requestCode) { PERMISSION_REQUEST_CODE_COARSE_LOCATION -> { - Log.e( - TAG, - "Location permission not granted" - ) + Log.e(TAG, "Location permission not granted") this.toast( R.string.permission_refused_location, Toast.LENGTH_SHORT ) - finish() } PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS -> { - Log.e( - TAG, - "Storage write permission not granted" - ) + Log.e(TAG, "Storage write permission not granted") this.toast( R.string.permission_refused_storage, Toast.LENGTH_SHORT ) finish() } - else -> { + else -> super.onRequestPermissionsResult(requestCode, permissions, grantResults) - } } } } @@ -370,9 +360,8 @@ class LocalFileTransferActivity : BaseActivity(), ) } } - else -> { + else -> super.onActivityResult(requestCode, resultCode, data) - } } } From a0ac045b9e1634bb6d74fc608abf0bc14e0123b2 Mon Sep 17 00:00:00 2001 From: ritvik Date: Mon, 17 Aug 2020 17:37:47 +0530 Subject: [PATCH 009/117] solved synatax issues & toast issues --- .../localFileTransfer/LocalFileTransferActivity.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt index 473b33787..5032bad4b 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferActivity.kt @@ -280,7 +280,7 @@ class LocalFileTransferActivity : BaseActivity(), when (requestCode) { PERMISSION_REQUEST_CODE_COARSE_LOCATION -> { Log.e(TAG, "Location permission not granted") - this.toast( + toast( R.string.permission_refused_location, Toast.LENGTH_SHORT ) @@ -288,7 +288,7 @@ class LocalFileTransferActivity : BaseActivity(), } PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS -> { Log.e(TAG, "Storage write permission not granted") - this.toast( + toast( R.string.permission_refused_storage, Toast.LENGTH_SHORT ) @@ -325,7 +325,7 @@ class LocalFileTransferActivity : BaseActivity(), ) }, { - this.toast( + toast( R.string.discovery_needs_location, Toast.LENGTH_SHORT ) @@ -338,7 +338,7 @@ class LocalFileTransferActivity : BaseActivity(), KiwixDialog.EnableWifiP2pServices, { startActivity(Intent(Settings.ACTION_WIFI_SETTINGS)) }, { - this.toast( + toast( R.string.discovery_needs_wifi, Toast.LENGTH_SHORT ) @@ -354,7 +354,7 @@ class LocalFileTransferActivity : BaseActivity(), when (requestCode) { REQUEST_ENABLE_LOCATION_SERVICES -> { if (!isLocationServiceEnabled) { - this.toast( + toast( R.string.permission_refused_location, Toast.LENGTH_SHORT ) From eff1e3e8cbe5f6ecd39d2aa21f1c0dbb738bcd5a Mon Sep 17 00:00:00 2001 From: prayutsu Date: Thu, 20 Aug 2020 21:06:49 +0530 Subject: [PATCH 010/117] #2291 - change ErrorActivity.java to ErrorActivity.kt --- .../core/error/DiagnosticReportActivity.kt | 7 +- .../kiwixmobile/core/error/ErrorActivity.java | 250 ------------------ .../kiwixmobile/core/error/ErrorActivity.kt | 233 ++++++++++++++++ 3 files changed, 237 insertions(+), 253 deletions(-) delete mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/error/ErrorActivity.java create mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/error/ErrorActivity.kt diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/error/DiagnosticReportActivity.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/error/DiagnosticReportActivity.kt index 1c2c7d89d..d72710b37 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/error/DiagnosticReportActivity.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/error/DiagnosticReportActivity.kt @@ -20,6 +20,7 @@ package org.kiwix.kiwixmobile.core.error import android.os.Bundle import android.view.View +import kotlinx.android.synthetic.main.activity_kiwix_error.allowCrash import kotlinx.android.synthetic.main.activity_kiwix_error.messageText import kotlinx.android.synthetic.main.activity_kiwix_error.textView2 import org.kiwix.kiwixmobile.core.R @@ -30,16 +31,16 @@ class DiagnosticReportActivity : ErrorActivity() { super.onCreate(savedInstanceState) textView2.setText(R.string.diagnostic_report) messageText.setText(R.string.diagnostic_report_message) - allowCrashCheckbox.visibility = View.GONE + allowCrash.visibility = View.GONE } override fun restartApp() { finish() } - override fun getSubject() = "Somebody has sent a Diagnostic Report " + override val subject = "Somebody has sent a Diagnostic Report " - override fun getBody() = """ + override val body = """ Hi Kiwix Developers, I am having an issue with the app and would like you to check these details diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/error/ErrorActivity.java b/core/src/main/java/org/kiwix/kiwixmobile/core/error/ErrorActivity.java deleted file mode 100644 index 9dac2af5b..000000000 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/error/ErrorActivity.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Kiwix Android - * Copyright (c) 2019 Kiwix - * 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 . - * - */ - -package org.kiwix.kiwixmobile.core.error; - -import android.content.Intent; -import android.content.pm.PackageManager; -import android.net.Uri; -import android.os.Build; -import android.os.Bundle; -import android.widget.Button; -import android.widget.CheckBox; -import androidx.core.content.ContextCompat; -import butterknife.BindView; -import java.io.File; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.List; -import javax.inject.Inject; -import org.jetbrains.annotations.NotNull; -import org.kiwix.kiwixmobile.core.R; -import org.kiwix.kiwixmobile.core.R2; -import org.kiwix.kiwixmobile.core.base.BaseActivity; -import org.kiwix.kiwixmobile.core.dao.NewBookDao; -import org.kiwix.kiwixmobile.core.di.components.CoreComponent; -import org.kiwix.kiwixmobile.core.entity.LibraryNetworkEntity; -import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer; -import org.kiwix.kiwixmobile.core.utils.files.FileLogger; -import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BooksOnDiskListItem.BookOnDisk; -import org.kiwix.kiwixmobile.zim_manager.MountInfo; -import org.kiwix.kiwixmobile.zim_manager.MountPointProducer; - -import static androidx.core.content.FileProvider.getUriForFile; -import static org.kiwix.kiwixmobile.core.utils.LanguageUtils.getCurrentLocale; - -public class ErrorActivity extends BaseActivity { - - public static final String EXCEPTION_KEY = "exception"; - - @Inject - NewBookDao bookDao; - @Inject - ZimReaderContainer zimReaderContainer; - @Inject - MountPointProducer mountPointProducer; - @Inject - FileLogger fileLogger; - - @BindView(R2.id.reportButton) - Button reportButton; - - @BindView(R2.id.restartButton) - Button restartButton; - - @BindView(R2.id.allowLanguage) - CheckBox allowLanguageCheckbox; - - @BindView(R2.id.allowZims) - CheckBox allowZimsCheckbox; - - @BindView(R2.id.allowCrash) - CheckBox allowCrashCheckbox; - - @BindView(R2.id.allowLogs) - CheckBox allowLogsCheckbox; - - @BindView(R2.id.allowDeviceDetails) - CheckBox allowDeviceDetailsCheckbox; - - @BindView(R2.id.allowFileSystemDetails) - CheckBox allowFileSystemDetailsCheckbox; - - private static void killCurrentProcess() { - android.os.Process.killProcess(android.os.Process.myPid()); - System.exit(10); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_kiwix_error); - Intent callingIntent = getIntent(); - - Bundle extras = callingIntent.getExtras(); - final Throwable exception; - if (extras != null && safeContains(extras, EXCEPTION_KEY)) { - exception = (Throwable) extras.getSerializable(EXCEPTION_KEY); - } else { - exception = null; - } - - reportButton.setOnClickListener(v -> { - - Intent emailIntent = new Intent(Intent.ACTION_SEND); - emailIntent.setType("vnd.android.cursor.dir/email"); - emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "android-crash-feedback@kiwix.org" }); - emailIntent.putExtra(Intent.EXTRA_SUBJECT, getSubject()); - - String body = getBody(); - - if (allowLogsCheckbox.isChecked()) { - File file = fileLogger.writeLogFile(this); - Uri path = getUriForFile(this, getApplicationContext().getPackageName()+ ".fileprovider", file); - emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - emailIntent.putExtra(Intent.EXTRA_STREAM, path); - } - - if (allowCrashCheckbox.isChecked() && exception != null) { - body += "Exception Details:\n\n" + - toStackTraceString(exception) + - "\n\n"; - } - - if (allowZimsCheckbox.isChecked()) { - List books = bookDao.getBooks(); - - StringBuilder sb = new StringBuilder(); - for (BookOnDisk bookOnDisk : books) { - final LibraryNetworkEntity.Book book = bookOnDisk.getBook(); - String bookString = book.getTitle() + - ":\nArticles: [" + book.getArticleCount() + - "]\nCreator: [" + book.getCreator() + - "]\n"; - - sb.append(bookString); - } - String allZimFiles = sb.toString(); - - String currentZimFile = zimReaderContainer.getZimCanonicalPath(); - body += "Curent Zim File:\n" + - currentZimFile + - "\n\nAll Zim Files in DB:\n" + - allZimFiles + - "\n\n"; - } - - if (allowLanguageCheckbox.isChecked()) { - body += "Current Locale:\n" + - getCurrentLocale(getApplicationContext()) + - "\n\n"; - } - - if (allowDeviceDetailsCheckbox.isChecked()) { - body += "Device Details:\n" + - "Device:[" + Build.DEVICE - + "]\nModel:[" + Build.MODEL - + "]\nManufacturer:[" + Build.MANUFACTURER - + "]\nTime:[" + Build.TIME - + "]\nAndroid Version:[" + Build.VERSION.RELEASE - + "]\nApp Version:[" + getVersionName() + " " + getVersionCode() - + "]" + - "\n\n"; - } - - if (allowFileSystemDetailsCheckbox.isChecked()) { - body += "Mount Points\n"; - for (MountInfo mountInfo : mountPointProducer.produce()) { - body += mountInfo + "\n"; - } - - body += "\nExternal Directories\n"; - for (File externalFilesDir : ContextCompat.getExternalFilesDirs(this, null)) { - body += (externalFilesDir != null ? externalFilesDir.getPath() : "null") + "\n"; - } - } - - emailIntent.putExtra(Intent.EXTRA_TEXT, body); - - startActivityForResult(Intent.createChooser(emailIntent, "Send email..."), 1); - }); - - restartButton.setOnClickListener(v -> onRestartClicked()); - } - - private boolean safeContains(Bundle extras, String key) { - try { - return extras.containsKey(key); - } catch (RuntimeException ignore) { - return false; - } - } - - private void onRestartClicked() { - restartApp(); - } - - @NotNull protected String getSubject() { - return "Someone has reported a crash"; - } - - @NotNull protected String getBody() { - return "Hi Kiwix Developers!\n" + - "The Android app crashed, here are some details to help fix it:\n\n"; - } - - private int getVersionCode() { - try { - return getPackageManager() - .getPackageInfo(getPackageName(), 0).versionCode; - } catch (PackageManager.NameNotFoundException e) { - throw new RuntimeException(e); - } - } - - private String getVersionName() { - try { - return getPackageManager() - .getPackageInfo(getPackageName(), 0).versionName; - } catch (PackageManager.NameNotFoundException e) { - throw new RuntimeException(e); - } - } - - private String toStackTraceString(Throwable exception) { - StringWriter stringWriter = new StringWriter(); - exception.printStackTrace(new PrintWriter(stringWriter)); - return stringWriter.toString(); - } - - void restartApp() { - startActivity(getPackageManager().getLaunchIntentForPackage(getPackageName())); - finish(); - killCurrentProcess(); - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - restartApp(); - } - - @Override protected void injection(CoreComponent coreComponent) { - coreComponent.inject(this); - } -} diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/error/ErrorActivity.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/error/ErrorActivity.kt new file mode 100644 index 000000000..dddde058d --- /dev/null +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/error/ErrorActivity.kt @@ -0,0 +1,233 @@ +/* + * Kiwix Android + * Copyright (c) 2019 Kiwix + * 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 . + * + */ +package org.kiwix.kiwixmobile.core.error + +import android.content.Intent +import android.content.pm.PackageManager +import android.os.Build +import android.os.Bundle +import android.os.Process +import androidx.core.content.ContextCompat +import androidx.core.content.FileProvider +import kotlinx.android.synthetic.main.activity_kiwix_error.allowCrash +import kotlinx.android.synthetic.main.activity_kiwix_error.allowDeviceDetails +import kotlinx.android.synthetic.main.activity_kiwix_error.allowFileSystemDetails +import kotlinx.android.synthetic.main.activity_kiwix_error.allowLanguage +import kotlinx.android.synthetic.main.activity_kiwix_error.allowLogs +import kotlinx.android.synthetic.main.activity_kiwix_error.allowZims +import kotlinx.android.synthetic.main.activity_kiwix_error.reportButton +import kotlinx.android.synthetic.main.activity_kiwix_error.restartButton +import org.kiwix.kiwixmobile.core.R +import org.kiwix.kiwixmobile.core.base.BaseActivity +import org.kiwix.kiwixmobile.core.dao.NewBookDao +import org.kiwix.kiwixmobile.core.di.components.CoreComponent +import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer +import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.getCurrentLocale +import org.kiwix.kiwixmobile.core.utils.files.FileLogger +import org.kiwix.kiwixmobile.zim_manager.MountPointProducer +import java.io.PrintWriter +import java.io.StringWriter +import javax.inject.Inject +import kotlin.system.exitProcess + +open class ErrorActivity : BaseActivity() { + @Inject + lateinit var bookDao: NewBookDao + + @Inject + lateinit var zimReaderContainer: ZimReaderContainer + + @Inject + lateinit var mountPointProducer: MountPointProducer + + @Inject + lateinit var fileLogger: FileLogger + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_kiwix_error) + val callingIntent = intent + val extras = callingIntent.extras + val exception: Throwable? + exception = if (extras != null && safeContains(extras)) { + extras.getSerializable(EXCEPTION_KEY) as Throwable + } else { + null + } + reportButton!!.setOnClickListener { + val emailIntent = Intent(Intent.ACTION_SEND) + emailIntent.type = "vnd.android.cursor.dir/email" + emailIntent.putExtra( + Intent.EXTRA_EMAIL, + arrayOf("android-crash-feedback@kiwix.org") + ) + emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject) + var body = body + if (allowLogs.isChecked) { + val file = fileLogger.writeLogFile(this) + val path = FileProvider.getUriForFile( + this, + applicationContext.packageName + ".fileprovider", + file + ) + emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + emailIntent.putExtra(Intent.EXTRA_STREAM, path) + } + if (allowCrash.isChecked && exception != null) { + body += """ + Exception Details: + + ${toStackTraceString(exception)} + + + """.trimIndent() + } + if (allowZims.isChecked) { + val sb = StringBuilder() + bookDao.getBooks().forEach { + val bookString = """ + ${it.book.getTitle()}: + Articles: [${it.book.getArticleCount()}] + Creator: [${it.book.getCreator()}] + + """.trimIndent() + sb.append(bookString) + } + val allZimFiles = "$sb" + val currentZimFile = zimReaderContainer.zimCanonicalPath + body += """ + Curent Zim File: + $currentZimFile + + All Zim Files in DB: + $allZimFiles + + + """.trimIndent() + } + if (allowLanguage.isChecked) { + body += """ + Current Locale: + ${getCurrentLocale(applicationContext)} + + + """.trimIndent() + } + if (allowDeviceDetails.isChecked) { + body += """Device Details: +Device:[${Build.DEVICE}] +Model:[${Build.MODEL}] +Manufacturer:[${Build.MANUFACTURER}] +Time:[${Build.TIME}] +Android Version:[${Build.VERSION.RELEASE}] +App Version:[$versionName $versionCode] + +""" + } + if (allowFileSystemDetails.isChecked) { + body += "Mount Points\n" + mountPointProducer.produce().forEach { + body += """ + $it + + """.trimIndent() + } + body += "\nExternal Directories\n" + for (externalFilesDir in ContextCompat.getExternalFilesDirs(this, null)) body += """ + ${if (externalFilesDir != null) externalFilesDir.path else "null"} + + """.trimIndent() + } + emailIntent.putExtra(Intent.EXTRA_TEXT, body) + startActivityForResult(Intent.createChooser(emailIntent, "Send email..."), 1) + } + restartButton!!.setOnClickListener { onRestartClicked() } + } + + private fun safeContains(extras: Bundle): Boolean { + return try { + extras.containsKey(EXCEPTION_KEY) + } catch (ignore: RuntimeException) { + false + } + } + + private fun onRestartClicked() { + restartApp() + } + + protected open val subject: String + get() = "Someone has reported a crash" + + protected open val body: String + get() = """ + Hi Kiwix Developers! + The Android app crashed, here are some details to help fix it: + + + """.trimIndent() + + private val versionCode: Int + get() = try { + packageManager + .getPackageInfo(packageName, 0).versionCode + } catch (e: PackageManager.NameNotFoundException) { + throw RuntimeException(e) + } + + private val versionName: String + get() = try { + packageManager + .getPackageInfo(packageName, 0).versionName + } catch (e: PackageManager.NameNotFoundException) { + throw RuntimeException(e) + } + + private fun toStackTraceString(exception: Throwable): String { + val stringWriter = StringWriter() + exception.printStackTrace(PrintWriter(stringWriter)) + return "$stringWriter" + } + + open fun restartApp() { + startActivity(packageManager.getLaunchIntentForPackage(packageName)) + finish() + killCurrentProcess() + } + + public override fun onActivityResult( + requestCode: Int, + resultCode: Int, + data: Intent? + ) { + super.onActivityResult(requestCode, resultCode, data) + restartApp() + } + + override fun injection(coreComponent: CoreComponent) { + coreComponent.inject(this) + } + + companion object { + const val EXCEPTION_KEY = "exception" + private fun killCurrentProcess() { + Process.killProcess(Process.myPid()) + exitProcess(10) + } + } +} From 97c90901e685c855974a7e602120186f73e5ef97 Mon Sep 17 00:00:00 2001 From: bharath2547 Date: Fri, 21 Aug 2020 20:13:09 +0530 Subject: [PATCH 011/117] converted DocumentParser.java class to kotlin class --- .../core/main/CoreReaderFragment.java | 3 +- .../kiwixmobile/core/main/DocumentParser.java | 88 ------------------- .../kiwixmobile/core/main/DocumentParser.kt | 84 ++++++++++++++++++ 3 files changed, 86 insertions(+), 89 deletions(-) delete mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/main/DocumentParser.java create mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/main/DocumentParser.kt diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.java b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.java index 4acde9bd5..8d79ab595 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.java +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.java @@ -467,8 +467,9 @@ public abstract class CoreReaderFragment extends BaseFragment private void setupDocumentParser() { documentParser = new DocumentParser(new DocumentParser.SectionsListener() { + @Override - public void sectionsLoaded(String title, List sections) { + public void sectionsLoaded(String title, List sections) { if (isAdded()) { for (TableDrawerAdapter.DocumentSection section : sections) { if (section.title.contains("REPLACE_")) { diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/DocumentParser.java b/core/src/main/java/org/kiwix/kiwixmobile/core/main/DocumentParser.java deleted file mode 100644 index 3e0842c2d..000000000 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/DocumentParser.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Kiwix Android - * Copyright (c) 2019 Kiwix - * 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 . - * - */ -package org.kiwix.kiwixmobile.core.main; - -import android.os.Handler; -import android.os.Looper; -import android.webkit.JavascriptInterface; -import android.webkit.WebView; -import java.util.ArrayList; -import java.util.List; - -import static org.kiwix.kiwixmobile.core.main.TableDrawerAdapter.DocumentSection; - -public class DocumentParser { - - private String title; - private SectionsListener listener; - private List sections; - - DocumentParser(SectionsListener listener) { - this.listener = listener; - } - - public void initInterface(WebView webView) { - webView.addJavascriptInterface(new ParserCallback(), "DocumentParser"); - } - - public interface SectionsListener { - void sectionsLoaded(String title, List sections); - - void clearSections(); - } - - class ParserCallback { - - @JavascriptInterface - @SuppressWarnings("unused") - public void parse(final String sectionTitle, final String element, final String id) { - if (element.equals("H1")) { - title = sectionTitle.trim(); - return; - } - DocumentSection section = new DocumentSection(); - section.title = sectionTitle.trim(); - section.id = id; - int level; - try { - String character = element.substring(element.length() - 1); - level = Integer.parseInt(character); - } catch (NumberFormatException e) { - level = 0; - } - section.level = level; - sections.add(section); - } - - @JavascriptInterface - @SuppressWarnings("unused") - public void start() { - title = ""; - sections = new ArrayList<>(); - new Handler(Looper.getMainLooper()).post(() -> listener.clearSections()); - } - - @JavascriptInterface - @SuppressWarnings("unused") - public void stop() { - List listToBeSentToMainThread = new ArrayList<>(sections); - new Handler(Looper.getMainLooper()).post(() -> - listener.sectionsLoaded(title, listToBeSentToMainThread)); - } - } -} diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/DocumentParser.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/DocumentParser.kt new file mode 100644 index 000000000..85885dc76 --- /dev/null +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/DocumentParser.kt @@ -0,0 +1,84 @@ +/* + * Kiwix Android + * Copyright (c) 2020 Kiwix + * 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 . + * + */ + +package org.kiwix.kiwixmobile.core.main + +import android.os.Handler +import android.os.Looper +import android.webkit.JavascriptInterface +import android.webkit.WebView +import org.kiwix.kiwixmobile.core.main.TableDrawerAdapter.DocumentSection + +public class DocumentParser(private var listener: DocumentParser.SectionsListener) { + + private var tittle: String = "" + private var sections = ArrayList(); + + public fun initInterface(webView: WebView) { + webView.addJavascriptInterface(ParserCallback(), "Documentparser") + } + + public interface SectionsListener { + fun sectionsLoaded(tittle: String = "", sections: List) + + fun clearSections() + } + + inner class ParserCallback() { + + @JavascriptInterface + public fun parse(sectionTittle: String, element: String, id: String) { + + if (element == "H1") { + tittle = sectionTittle.trim() + return + } + val section = DocumentSection() + section.title = section.title.trim(); + section.id = id; + var level: Int + try { + val character: String = element.substring(element.length - 1) + level = Integer.parseInt(character) + Integer.parseInt(id) + } catch (e: NumberFormatException) { + level = 0 + } + section.level = level; + sections.add(section) + } + + @JavascriptInterface + public fun start() { + tittle = "" + sections = ArrayList() + Handler(Looper.getMainLooper()).post(Runnable(listener::clearSections)) + } + + @JavascriptInterface + public fun stop() { + val listToBeSentToMainThread: List = ArrayList(sections); + Handler(Looper.getMainLooper()).post { + listener.sectionsLoaded( + tittle, + listToBeSentToMainThread + ) + } + } + } +} From 3685b13b784fbab2e8886f8dcbfff1ab43c6229e Mon Sep 17 00:00:00 2001 From: ritvik Date: Sat, 22 Aug 2020 00:58:47 +0530 Subject: [PATCH 012/117] changed filesForTransfer to List --- .idea/codeStyles/Project.xml | 9 +++++++++ .../localFileTransfer/FileListAdapter.kt | 9 ++++----- .../localFileTransfer/LocalFileTransferActivity.kt | 13 +++++++------ .../PeerGroupHandshakeAsyncTask.java | 3 ++- .../localFileTransfer/ReceiverDeviceAsyncTask.java | 3 ++- .../localFileTransfer/WifiDirectManager.kt | 6 +++--- 6 files changed, 27 insertions(+), 16 deletions(-) diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 9ab52cb68..4698dbeb3 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -37,6 +37,15 @@ +