From eb39e1b7c580d32dc5987a6de884e7a23218de16 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 22 Feb 2022 18:56:30 +0100 Subject: [PATCH] Refactoring DialogProgressView. Refactoring UpdateManager. --- app/src/main/AndroidManifest.xml | 3 +- .../MainApplicationComponent.java | 10 ++ .../MainApplicationModule.java | 14 +++ .../core/expansion/BaseActivity.java | 33 +++-- .../core/expansion/BaseActivityComponent.java | 14 +++ .../core/expansion/BaseActivityModule.java | 7 ++ .../core/expansion/BaseDialogFragment.java | 6 +- .../core/expansion/BaseFragment.java | 41 +++++-- .../core/expansion/BaseFragmentComponent.java | 14 +++ .../core/expansion/BaseFragmentModule.java | 7 ++ .../core/update/UpdateApp.java | 60 ---------- .../core/update/UpdatesManager.java | 98 ++++++++------- .../core/utility/FileDownloader.java | 113 ++++++++++++++++++ .../core/utility/UtilityExceptions.java | 6 +- .../core/utility/UtilityProgress.java | 24 ++-- .../gest/main/MainActivity.java | 5 +- .../OrdiniUscitaElencoFragment.java | 1 + .../PVOrdiniAcquistoGrigliaFragment.java | 8 +- .../dialogs/DialogScanLisA.java | 11 +- .../RettificaGiacenzeFragment.java | 6 +- .../view/dialogs/DialogProgress.java | 61 ---------- .../view/dialogs/DialogProgressView.java | 88 ++++++++++++++ .../DialogChooseArtsFromListaArts.java | 4 +- .../input_peso_lu/DialogInputPeso.java | 16 +-- app/src/main/res/layout/dialog_progress.xml | 9 +- 25 files changed, 426 insertions(+), 233 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentModule.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/update/UpdateApp.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/utility/FileDownloader.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgressView.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a42b2eaf..b8226a96 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,7 +19,8 @@ android:supportsRtl="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true" - android:fullBackupContent="@xml/backup_descriptor"> + android:fullBackupContent="@xml/backup_descriptor" + android:requestLegacyExternalStorage="true"> { BarcodeManager.disable(); - if (this.mCurrentProgress == null) { - this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); + if (!this.mCurrentProgress.isVisible() && !this.mCurrentProgress.isAdded()) { + this.mCurrentProgress.show(getSupportFragmentManager(), "tag"); } }); } @@ -51,9 +67,8 @@ public class BaseActivity extends AppCompatActivity { protected void closeProgress() { runOnUiThread(() -> { BarcodeManager.enable(); - if (mCurrentProgress != null) { + if (mCurrentProgress.isVisible()) { mCurrentProgress.dismiss(); - mCurrentProgress = null; } }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityComponent.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityComponent.java new file mode 100644 index 00000000..e4da916a --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.core.expansion; + +import dagger.Subcomponent; + +@Subcomponent +public interface BaseActivityComponent { + + @Subcomponent.Factory + interface Factory { + BaseActivityComponent create(); + } + + void inject(BaseActivity baseActivity); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityModule.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityModule.java new file mode 100644 index 00000000..eb3d3500 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityModule.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.core.expansion; + +import dagger.Module; + +@Module(subcomponents = BaseActivityComponent.class) +public class BaseActivityModule { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java index 7ede3676..5b932074 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.core.expansion; -import android.app.Dialog; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; @@ -15,11 +14,12 @@ import androidx.fragment.app.FragmentTransaction; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; public class BaseDialogFragment extends DialogFragment { private boolean mBarcodeListener = false; - private Dialog mCurrentProgress; + private DialogProgressView mCurrentProgress; public BaseDialogFragment() { super(); @@ -82,7 +82,7 @@ public class BaseDialogFragment extends DialogFragment { // new Thread(() -> { requireActivity().runOnUiThread(() -> { if (this.mCurrentProgress == null) { - this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); + this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(requireActivity()); } }); // }).start(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java index 6db30d6e..7c6281b1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java @@ -1,21 +1,30 @@ package it.integry.integrywmsnative.core.expansion; -import android.app.Dialog; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.ui.ElevatedToolbar; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; public abstract class BaseFragment extends Fragment { - protected Dialog mCurrentProgress; + @Inject + public DialogProgressView mCurrentProgress; protected ElevatedToolbar mToolbar; @@ -26,11 +35,22 @@ public abstract class BaseFragment extends Fragment { mToolbar = toolbar; } - public void addOnPreDestroy(Runnable onPreDestroy) { this.mOnPreDestroyList.add(onPreDestroy); } + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = super.onCreateView(inflater, container, savedInstanceState); + + MainApplication.appComponent + .baseFragmentComponent() + .create() + .inject(this); + + return view; + } public void onLoadingStarted() { new Thread(() -> { @@ -65,24 +85,23 @@ public abstract class BaseFragment extends Fragment { } protected void openProgress() { - getActivity().runOnUiThread(() -> { - if (this.mCurrentProgress == null) { - this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); + requireActivity().runOnUiThread(() -> { + if (!this.mCurrentProgress.isVisible() && !this.mCurrentProgress.isAdded()) { + this.mCurrentProgress.show(requireActivity().getSupportFragmentManager(), "tag"); } }); } protected void closeProgress() { - getActivity().runOnUiThread(() -> { - if (mCurrentProgress != null) { + requireActivity().runOnUiThread(() -> { + if (mCurrentProgress.isVisible()) { mCurrentProgress.dismiss(); - mCurrentProgress = null; } }); } protected void popMe() { - getActivity().runOnUiThread(() -> { + requireActivity().runOnUiThread(() -> { ((IPoppableActivity) requireActivity()).pop(); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentComponent.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentComponent.java new file mode 100644 index 00000000..91e1cacb --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.core.expansion; + +import dagger.Subcomponent; + +@Subcomponent +public interface BaseFragmentComponent { + + @Subcomponent.Factory + interface Factory { + BaseFragmentComponent create(); + } + + void inject(BaseFragment baseFragment); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentModule.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentModule.java new file mode 100644 index 00000000..2b161e90 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentModule.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.core.expansion; + +import dagger.Module; + +@Module(subcomponents = BaseFragmentComponent.class) +public class BaseFragmentModule { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/update/UpdateApp.java b/app/src/main/java/it/integry/integrywmsnative/core/update/UpdateApp.java deleted file mode 100644 index 32f4fa16..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/update/UpdateApp.java +++ /dev/null @@ -1,60 +0,0 @@ -package it.integry.integrywmsnative.core.update; - -import android.content.Context; -import android.content.Intent; -import android.net.Uri; -import android.os.AsyncTask; -import android.os.Environment; -import android.util.Log; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.URL; - -public class UpdateApp extends AsyncTask { - private Context context; - public void setContext(Context contextf){ - context = contextf; - } - - @Override - protected Void doInBackground(String... arg0) { - try { - URL url = new URL(arg0[0]); - HttpURLConnection c = (HttpURLConnection) url.openConnection(); - c.setRequestMethod("GET"); - c.setDoOutput(true); - c.connect(); - - File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); - file.mkdirs(); - File outputFile = new File(file, "update.apk"); - if(outputFile.exists()){ - outputFile.delete(); - } - FileOutputStream fos = new FileOutputStream(outputFile); - - InputStream is = c.getInputStream(); - - byte[] buffer = new byte[1024]; - int len1 = 0; - while ((len1 = is.read(buffer)) != -1) { - fos.write(buffer, 0, len1); - } - fos.close(); - is.close(); - - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setDataAndType(Uri.fromFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)), "application/vnd.android.package-archive"); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // without this flag android returned a intent error! - context.startActivity(intent); - - - } catch (Exception e) { - Log.e("UpdateAPP", "Update error! " + e.getMessage()); - } - return null; - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java b/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java index f978434a..3ba6afeb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java @@ -1,30 +1,35 @@ package it.integry.integrywmsnative.core.update; -import android.app.Activity; -import android.app.DownloadManager; -import android.content.BroadcastReceiver; -import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.net.Uri; import android.os.Build; import android.os.Environment; +import androidx.appcompat.app.AppCompatActivity; + import com.github.javiersantos.appupdater.AppUpdater; import com.github.javiersantos.appupdater.enums.Display; import com.github.javiersantos.appupdater.enums.UpdateFrom; import java.io.File; -import it.integry.integrywmsnative.R; +import javax.inject.Singleton; + import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; import it.integry.integrywmsnative.core.class_router.ClassRouter; import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.FileDownloader; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; +@Singleton public class UpdatesManager { - public static void init(Activity context) { + private AppCompatActivity mContext; + + public void init(AppCompatActivity activityContext) { + this.mContext = activityContext; + String suffix; ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION); try { @@ -40,64 +45,67 @@ public class UpdatesManager { String currentDownloadUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/android-release" + suffix + ".apk"; - AppUpdater appUpdater = new AppUpdater(context) + AppUpdater appUpdater = new AppUpdater(mContext) .setDisplay(Display.DIALOG) .setUpdateFrom(UpdateFrom.JSON) .setUpdateJSON(currentVersionUrl) .setButtonDoNotShowAgain(null) .setButtonUpdateClickListener((dialog, which) -> { - installAPK(context, currentDownloadUrl); + installAPK(currentDownloadUrl); }); appUpdater.start(); } - private static void installAPK(Activity context, String downloadURL) { + private void installAPK(String downloadURL) { + String destination = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/"; - String fileName = context.getResources().getString(R.string.app_name) + ".apk"; - destination += fileName; - final Uri uri = Uri.parse("file://" + destination); - //Delete update file if exists - final File file = new File(destination); - if (file.exists()) - file.delete(); + var progressDialog = DialogProgressView.newInstance("Download", null, false); + progressDialog.show(mContext.getSupportFragmentManager(), "tag"); - //set downloadmanager - DownloadManager.Request request = new DownloadManager.Request(Uri.parse(downloadURL)); - request.setDescription(context.getString(R.string.notification_update_download)); - request.setTitle(context.getString(R.string.app_name)); - //set destination - request.setDestinationUri(uri); + var fileDownloader = new FileDownloader() + .setDestFolder(destination) + .setUrlString(downloadURL) + .setOnProgressUpdate(progress -> { + mContext.runOnUiThread(() -> { + progressDialog.setProgress(progress); + }); + }) + .setOnDownloadCompleted(destPath -> { - // get download service and enqueue file - final DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); - manager.enqueue(request); + mContext.runOnUiThread(() -> { + progressDialog.dismiss(); - //set BroadcastReceiver to install app when .apk is downloaded - BroadcastReceiver onComplete = new BroadcastReceiver() { - public void onReceive(Context ctxt, Intent i) { + Uri fileLoc; + Intent intent; - Uri fileLoc; - Intent intent; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + intent = new Intent(Intent.ACTION_INSTALL_PACKAGE); + fileLoc = GenericFileProvider.getUriForFile(mContext, + mContext.getApplicationContext().getPackageName() + ".core.update.GenericFileProvider", + new File(destPath)); + } else { + intent = new Intent(Intent.ACTION_VIEW); + fileLoc = Uri.fromFile(new File(destPath)); + } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - intent = new Intent(Intent.ACTION_INSTALL_PACKAGE); - fileLoc = GenericFileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".core.update.GenericFileProvider", file); - } else { - intent = new Intent(Intent.ACTION_VIEW); - fileLoc = Uri.fromFile(file); - } + intent.setDataAndType(fileLoc, "application/vnd.android.package-archive"); + intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); - intent.setDataAndType(fileLoc, "application/vnd.android.package-archive"); - intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); + mContext.startActivity(intent); + }); - context.startActivity(intent); + }); + + + new Thread(() -> { + try { + fileDownloader.download(); + } catch (Exception e) { + e.printStackTrace(); } - }; - - //register receiver for when .apk download is compete - context.registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); + }).start(); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/FileDownloader.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/FileDownloader.java new file mode 100644 index 00000000..a3718bee --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/FileDownloader.java @@ -0,0 +1,113 @@ +package it.integry.integrywmsnative.core.utility; + +import android.webkit.URLUtil; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; + +public class FileDownloader { + + private String urlString; + private String destFolder; + + private RunnableArgs onProgressUpdate; + private RunnableArgs onDownloadCompleted; + + + public void download() throws Exception { + InputStream input = null; + OutputStream output = null; + HttpURLConnection connection = null; + String destPathFile; + + try { + File direct = new File(destFolder); + if (!direct.exists()) { + direct.mkdirs(); + } + + URL url = new URL(urlString); + connection = (HttpURLConnection) url.openConnection(); + connection.connect(); + connection.setConnectTimeout(120 * 1000); + + if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) + throw new Exception("Server returned HTTP " + connection.getResponseCode() + " " + connection.getResponseMessage()); + + input = connection.getInputStream(); + int totalBytesToDownload = connection.getContentLength(); + int downloadedBytes = 0; + + String title = URLUtil.guessFileName(String.valueOf(url), null, null); + + destPathFile = destFolder + title; + + if (new File(destPathFile).exists()) + new File(destPathFile).delete(); + + output = new FileOutputStream(destPathFile); + + byte[] buf = new byte[1024]; + int len; + while ((len = input.read(buf)) > 0) { + output.write(buf, 0, len); + + downloadedBytes += len; + if (onProgressUpdate != null) + onProgressUpdate.run((downloadedBytes * 100) / totalBytesToDownload); + } + + } catch (Exception e) { + throw e; + + } finally { + try { + if (output != null) + output.close(); + if (input != null) + input.close(); + } catch (IOException ignored) { + } + if (connection != null) + connection.disconnect(); + } + + if (onDownloadCompleted != null) onDownloadCompleted.run(destPathFile); + } + + + public String getUrlString() { + return urlString; + } + + public FileDownloader setUrlString(String urlString) { + this.urlString = urlString; + return this; + } + + public String getDestFolder() { + return destFolder; + } + + public FileDownloader setDestFolder(String destFolder) { + this.destFolder = destFolder; + return this; + } + + public FileDownloader setOnProgressUpdate(RunnableArgs onProgressUpdate) { + this.onProgressUpdate = onProgressUpdate; + return this; + } + + public FileDownloader setOnDownloadCompleted(RunnableArgs onDownloadCompleted) { + this.onDownloadCompleted = onDownloadCompleted; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java index 0b1b6e37..e43108db 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.core.utility; -import android.app.Dialog; import android.content.Context; import android.text.Html; @@ -13,6 +12,7 @@ import com.orhanobut.logger.Logger; import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.core.rest.CommonRESTException; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class UtilityExceptions { @@ -21,9 +21,9 @@ public class UtilityExceptions { }; - public static void defaultException(Context context, Exception ex, Dialog progressDialog) { + public static void defaultException(Context context, Exception ex, DialogProgressView progressDialog) { defaultException(context, ex); - if (progressDialog != null) progressDialog.dismiss(); + if (progressDialog != null && progressDialog.isVisible()) progressDialog.dismiss(); } public static void defaultException(Context context, Exception ex) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityProgress.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityProgress.java index 800c42c3..17887c96 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityProgress.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityProgress.java @@ -1,25 +1,21 @@ package it.integry.integrywmsnative.core.utility; -import android.app.Dialog; -import android.content.Context; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.FragmentActivity; -import it.integry.integrywmsnative.view.dialogs.DialogProgress; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; public class UtilityProgress { - public static Dialog createDefaultProgressDialog(Context mContext) { -// final ProgressDialog progress = ProgressDialog.show(mContext, mContext.getText(R.string.waiting), -// mContext.getText(R.string.loading) + " ...", true); -// -// return progress; - - Dialog progress = DialogProgress.make(mContext); - progress.show(); + public static DialogProgressView createDefaultProgressDialog(FragmentActivity mContext) { + var progress = DialogProgressView.newInstance(); + progress.show(mContext.getSupportFragmentManager(), "tag"); return progress; } - public static Dialog createDefaultProgressDialog(Context mContext,String subtitle) { - Dialog progress = DialogProgress.make(mContext,subtitle); - progress.show(); + + public static DialogProgressView createDefaultProgressDialog(AppCompatActivity mContext, String title, String subtitle) { + DialogProgressView progress = DialogProgressView.newInstance(title, subtitle, true); + progress.show(mContext.getSupportFragmentManager(), "tag"); return progress; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java index 0c76e122..2ba06186 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java @@ -67,6 +67,9 @@ public class MainActivity extends BaseActivity @Inject MainContext mainContext; + @Inject + UpdatesManager updatesManager; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -79,7 +82,7 @@ public class MainActivity extends BaseActivity mBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.activity_main, null, false); setContentView(mBinding.getRoot()); - UpdatesManager.init(this); + updatesManager.init(this); UtilityContext.initMainActivity(this); setSupportActionBar(mBinding.appBarMain.toolbar); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java index af2c9bba..a06313bc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java @@ -138,6 +138,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + super.onCreateView(inflater, container, savedInstanceState); mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_main_ordini_uscita, container, false); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java index 60abff71..35cfdf25 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java @@ -1,8 +1,6 @@ package it.integry.integrywmsnative.gest.pv_ordini_acquisto; -import android.app.Dialog; import android.content.Context; -import android.content.Intent; import android.os.Bundle; import android.text.Html; import android.text.SpannableString; @@ -25,7 +23,6 @@ import javax.inject.Inject; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; -import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; @@ -41,12 +38,13 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity; -import it.integry.integrywmsnative.gest.pv_ordini_acquisto.ui.OrdineAcquistoPvOpenListAdapter; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLisA; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper; +import it.integry.integrywmsnative.gest.pv_ordini_acquisto.ui.OrdineAcquistoPvOpenListAdapter; import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.dialogs.DialogAskAction; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitledFragment, IScrollableFragment { @@ -55,7 +53,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled private OrdineAcquistoPvHelper mHelper; private Griglia mGriglia; private OrdineAcquistoPvOpenListAdapter mAdapter; - private Dialog mCurrentProgress; + private DialogProgressView mCurrentProgress; private final List mRenderedOrderList = new ArrayList<>(); private boolean mRedirectToNewOrder = true; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java index 66175187..9b746822 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs; -import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.graphics.Color; @@ -8,6 +7,7 @@ import android.graphics.drawable.ColorDrawable; import android.view.LayoutInflater; import androidx.databinding.DataBindingUtil; +import androidx.fragment.app.FragmentActivity; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.R; @@ -21,13 +21,14 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.DialogScanCodiceGrigliaBinding; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; public class DialogScanLisA { - private Activity mContext; + private FragmentActivity mContext; private BaseDialog mDialog; - private Dialog mCurrentProgress; + private DialogProgressView mCurrentProgress; private final DialogScanCodiceGrigliaBinding mBinding; @@ -38,7 +39,7 @@ public class DialogScanLisA { private GrigliaRepository mGrigliaRepository; private Griglia mGriglia; - private DialogScanLisA(Activity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { + private DialogScanLisA(FragmentActivity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { mOnDialogDismiss = null; mContext = context; mGrigliaRepository = grigliaRepository; @@ -58,7 +59,7 @@ public class DialogScanLisA { } - public static Dialog make(Activity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { + public static Dialog make(FragmentActivity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { return new DialogScanLisA(context, grigliaRepository, helper, onDialogDismiss).mDialog; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java index db11171d..91b09a44 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze; -import android.app.Dialog; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.res.ColorStateList; @@ -58,6 +57,7 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; import it.integry.integrywmsnative.view.dialogs.DialogConsts; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts; @@ -82,7 +82,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr private int barcodeScannerIstanceID = -1; - private Dialog mCurrentProgress; + private DialogProgressView mCurrentProgress; public RettificaGiacenzeFragment() { // Required empty public constructor @@ -341,7 +341,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr if (ex instanceof InvalidPesoKGException) { UtilityToast.showToast(ex.getMessage()); } else { - UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress); + UtilityExceptions.defaultException(requireActivity(), ex, mCurrentProgress); } BarcodeManager.enable(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java deleted file mode 100644 index d29dc050..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java +++ /dev/null @@ -1,61 +0,0 @@ -package it.integry.integrywmsnative.view.dialogs; - -import android.app.Dialog; -import android.content.Context; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.view.LayoutInflater; - -import androidx.databinding.DataBindingUtil; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.databinding.DialogProgressBinding; - -public class DialogProgress { - - private Context mContext; - private DialogProgressBinding mBinding; - - private Dialog mDialog; - - public static Dialog make(Context context,String subtitle) { - DialogProgress progress = new DialogProgress(context); - progress.setSubtitle(subtitle); - return progress.mDialog; - } - - public static Dialog make(Context context) { - return new DialogProgress(context).mDialog; - } - - - - private DialogProgress(Context context) { - mContext = context; - - LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); - mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_progress, null, false); - -// final Thread[] progressBarThread = new Thread[1]; - - mDialog = new Dialog(mContext); - mDialog.setContentView(mBinding.getRoot()); - mDialog.setCanceledOnTouchOutside(false); - mDialog.setCancelable(false); - mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - mDialog.setOnShowListener(dialog -> { -// ((ProgressBar) currentView.findViewById(R.id.progressBar)).setIndeterminate(true); -// progressBarThread[0] = UtilityProgress.makeProgressBarIndeterminate(mBinding.progressBar); - }); - - mDialog.setOnDismissListener(dialog -> { -// progressBarThread[0].interrupt(); - }); - } - - private void setSubtitle(String subtitle){ - mBinding.subtitleText.setText(subtitle); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgressView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgressView.java new file mode 100644 index 00000000..405d04e4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgressView.java @@ -0,0 +1,88 @@ +package it.integry.integrywmsnative.view.dialogs; + +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Build; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.databinding.DataBindingUtil; +import androidx.fragment.app.DialogFragment; + +import javax.inject.Singleton; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.DialogProgressBinding; + +@Singleton +public class DialogProgressView extends DialogFragment { + + private DialogProgressBinding mBindings; + + private String title; + private String subtitle; + private boolean indeterminateProgress; + + public static DialogProgressView newInstance(String title, String subtitle, boolean indeterminate) { + return new DialogProgressView() + .setIndeterminateProgress(indeterminate) + .setTitle(title) + .setSubtitle(subtitle); + } + + public static DialogProgressView newInstance() { + return newInstance(null, null, true); + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_progress, container, false); + + getDialog().setCanceledOnTouchOutside(false); + getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + + mBindings.setTitle(UtilityString.isNullOrEmpty(title) ? requireActivity().getString(R.string.loading) : title); + + mBindings.setSubtitle(subtitle); + mBindings.progressBar.setIndeterminate(isIndeterminateProgress()); + + if(!isIndeterminateProgress()){ + mBindings.progressBar.setMax(100); + } + + return mBindings.getRoot(); + } + + + public boolean isIndeterminateProgress() { + return indeterminateProgress; + } + + public DialogProgressView setIndeterminateProgress(boolean indeterminateProgress) { + this.indeterminateProgress = indeterminateProgress; + return this; + } + + + public DialogProgressView setTitle(String title) { + this.title = title; + return this; + } + + public DialogProgressView setSubtitle(String subtitle) { + this.subtitle = subtitle; + return this; + } + + public void setProgress(int progress) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + mBindings.progressBar.setProgress(progress, true); + } + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java index 0c472d2f..835431de 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts; -import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.graphics.Color; @@ -42,6 +41,7 @@ import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.DialogChooseArtsFromListaArtsLayoutBinding; import it.integry.integrywmsnative.view.dialogs.DialogCommon; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; public class DialogChooseArtsFromListaArts extends BaseDialogFragment { @@ -62,7 +62,7 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { private final List mDataset; private int mBarcodeScannerIstanceID; - private Dialog mCurrentProgress; + private DialogProgressView mCurrentProgress; private MtbAart selectedArt; public static DialogChooseArtsFromListaArts newInstance(List listaMtbColr, RunnableArgs> onItemsChoosed, Runnable onAbort) { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java index 82d6604e..df570d41 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java @@ -8,6 +8,7 @@ import android.view.LayoutInflater; import android.widget.ArrayAdapter; import androidx.databinding.DataBindingUtil; +import androidx.fragment.app.FragmentActivity; import com.annimon.stream.Optional; import com.annimon.stream.Stream; @@ -24,24 +25,25 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.DialogInputPesoLuBinding; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; public class DialogInputPeso { - private Context mContext; - private DialogInputPesoLuBinding mBindings; - private DialogInputPesoViewModel mViewModel; - private Dialog currentDialog; + private final FragmentActivity mContext; + private final DialogInputPesoLuBinding mBindings; + private final DialogInputPesoViewModel mViewModel; + private final Dialog currentDialog; private List codTcolList = null; private ArrayAdapter codTcolArrayAdapter = null; - public static Dialog make(final Context context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss onDialogDismiss) { + public static Dialog make(final FragmentActivity context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss onDialogDismiss) { return new DialogInputPeso(context, codTcol, netWeight, grossWeight, onDialogDismiss).currentDialog; } - private DialogInputPeso(final Context context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss onDialogDismiss) { + private DialogInputPeso(final FragmentActivity context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss onDialogDismiss) { this.mContext = context; @@ -91,7 +93,7 @@ public class DialogInputPeso { private void init() { - final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); + final DialogProgressView progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); MagazzinoRESTConsumer.getTipiColloStatic(codTcols -> { this.codTcolList = codTcols; diff --git a/app/src/main/res/layout/dialog_progress.xml b/app/src/main/res/layout/dialog_progress.xml index 53d8ac4a..b9d76f88 100644 --- a/app/src/main/res/layout/dialog_progress.xml +++ b/app/src/main/res/layout/dialog_progress.xml @@ -6,6 +6,11 @@ + + + @@ -28,15 +33,13 @@