From 0553e3d0d761251714eb0919f859e54c3cf813c3 Mon Sep 17 00:00:00 2001 From: Mohit Mali Date: Mon, 25 Jan 2021 17:46:13 +0530 Subject: [PATCH 01/10] Resolve crash on rotation of app and Implemented change for showing microG in drop down suggestions. --- app/src/main/AndroidManifest.xml | 3 ++- .../java/foundation/e/apps/search/model/SearchModel.kt | 7 ++++--- .../e/apps/search/model/SearchSuggestionsTask.kt | 6 +++++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a594b2ab7..a7b3010ff 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -30,7 +30,8 @@ android:theme="@style/AppTheme"> - + diff --git a/app/src/main/java/foundation/e/apps/search/model/SearchModel.kt b/app/src/main/java/foundation/e/apps/search/model/SearchModel.kt index 4b22ca9ad..0fb15b158 100644 --- a/app/src/main/java/foundation/e/apps/search/model/SearchModel.kt +++ b/app/src/main/java/foundation/e/apps/search/model/SearchModel.kt @@ -34,10 +34,11 @@ class SearchModel : SearchModelInterface { val suggestionList = MutableLiveData>() val applicationList = MutableLiveData>() var screenError = MutableLiveData() - private var applicationManager: ApplicationManager? = null + lateinit var applicationManager: ApplicationManager private var pageNumber = 0 private lateinit var searchQuery: String private lateinit var context: Context + private var error: Error? = null override fun initialise(applicationManager: ApplicationManager) { this.applicationManager = applicationManager @@ -45,7 +46,7 @@ class SearchModel : SearchModelInterface { override fun searchSuggestions(context: Context, searchQuery: String) { this.searchQuery = searchQuery - this.context=context + this.context = context if (searchQuery.length >= Constants.MIN_SEARCH_TERM_LENGTH) { if (Common.isNetworkAvailable(context)) { SearchSuggestionsTask(searchQuery, applicationManager!!, this) @@ -86,7 +87,7 @@ class SearchModel : SearchModelInterface { override fun onSearchComplete(error: Error?, applicationList: ArrayList) { if (error == null) { - if (searchQuery.equals("microg", true)) { + if ("microG Exposure Notification version".contains(searchQuery, true)) { val categoryIntent = Intent(context, CategoryActivity::class.java) categoryIntent.putExtra(Constants.CATEGORY_KEY, Category("system_apps")) context.startActivity(categoryIntent) diff --git a/app/src/main/java/foundation/e/apps/search/model/SearchSuggestionsTask.kt b/app/src/main/java/foundation/e/apps/search/model/SearchSuggestionsTask.kt index 3377c80ca..e2247c093 100644 --- a/app/src/main/java/foundation/e/apps/search/model/SearchSuggestionsTask.kt +++ b/app/src/main/java/foundation/e/apps/search/model/SearchSuggestionsTask.kt @@ -19,6 +19,7 @@ package foundation.e.apps.search.model import android.content.Context import android.os.AsyncTask +import android.util.Log import foundation.e.apps.api.AllAppsSearchRequest import foundation.e.apps.applicationmanager.ApplicationManager import foundation.e.apps.utils.Constants @@ -31,7 +32,7 @@ class SearchSuggestionsTask(private val searchQuery: String, override fun doInBackground(vararg context: Context): ArrayList { val searchSuggestions = ArrayList() - AllAppsSearchRequest(searchQuery,1, Constants.SUGGESTIONS_RESULTS) + AllAppsSearchRequest(searchQuery, 1, Constants.SUGGESTIONS_RESULTS) .request { applicationError, searchResult -> when (applicationError) { null -> { @@ -50,6 +51,9 @@ class SearchSuggestionsTask(private val searchQuery: String, } override fun onPostExecute(result: ArrayList) { + if ("microG Exposure Notification version".contains(searchQuery, true)) { + result.add(0,"microG Exposure Notification version") + } callback.onSearchSuggestionsRetrieved(searchQuery, result) } } -- GitLab From f377726bf9b6daccdef3a594b31dbea28840c145 Mon Sep 17 00:00:00 2001 From: Mohit Mali Date: Tue, 26 Jan 2021 17:06:48 +0530 Subject: [PATCH 02/10] Resolve update menu --- .../e/apps/search/model/SearchModel.kt | 43 +++++++++++++--- .../search/model/SearchSuggestionsTask.kt | 1 + .../e/apps/updates/model/UpdatesModel.kt | 51 ++++++++++++++++++- 3 files changed, 87 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/search/model/SearchModel.kt b/app/src/main/java/foundation/e/apps/search/model/SearchModel.kt index 0fb15b158..586f841f4 100644 --- a/app/src/main/java/foundation/e/apps/search/model/SearchModel.kt +++ b/app/src/main/java/foundation/e/apps/search/model/SearchModel.kt @@ -18,16 +18,15 @@ package foundation.e.apps.search.model import android.content.Context -import android.content.Intent import android.os.AsyncTask import androidx.lifecycle.MutableLiveData +import foundation.e.apps.api.GitlabDataRequest import foundation.e.apps.application.model.Application import foundation.e.apps.applicationmanager.ApplicationManager -import foundation.e.apps.categories.category.CategoryActivity -import foundation.e.apps.categories.model.Category import foundation.e.apps.utils.Common import foundation.e.apps.utils.Constants import foundation.e.apps.utils.Error +import foundation.e.apps.utils.Execute class SearchModel : SearchModelInterface { @@ -88,9 +87,19 @@ class SearchModel : SearchModelInterface { if (error == null) { if ("microG Exposure Notification version".contains(searchQuery, true)) { - val categoryIntent = Intent(context, CategoryActivity::class.java) - categoryIntent.putExtra(Constants.CATEGORY_KEY, Category("system_apps")) - context.startActivity(categoryIntent) + Execute({ + this.applicationList.postValue(loadMicroGVersion()) + }, { + if (error == null && this.applicationList.value != null) { + val result = ArrayList() + result.addAll(this.applicationList.value!!) + if ( this.applicationList.value!!.size != 0) { + this.applicationList.postValue(result) + } + } else { + screenError.value = error + } + }) } else { if (applicationList.isNotEmpty()) { if (pageNumber > 1 && this.applicationList.value != null) { @@ -108,4 +117,26 @@ class SearchModel : SearchModelInterface { screenError.value = error } } + +/*gets microG application from gitlab*/ + private fun loadMicroGVersion(): ArrayList? { + var gitlabData: GitlabDataRequest.GitlabDataResult? = null + GitlabDataRequest() + .requestGmsCoreRelease { applicationError, listGitlabData -> + + when (applicationError) { + null -> { + gitlabData = listGitlabData!! + } + else -> { + error = applicationError + } + } + } + return if (gitlabData != null) { + gitlabData!!.getApplications(applicationManager, context) + } else { + null + } + } } diff --git a/app/src/main/java/foundation/e/apps/search/model/SearchSuggestionsTask.kt b/app/src/main/java/foundation/e/apps/search/model/SearchSuggestionsTask.kt index e2247c093..3d144aa44 100644 --- a/app/src/main/java/foundation/e/apps/search/model/SearchSuggestionsTask.kt +++ b/app/src/main/java/foundation/e/apps/search/model/SearchSuggestionsTask.kt @@ -51,6 +51,7 @@ class SearchSuggestionsTask(private val searchQuery: String, } override fun onPostExecute(result: ArrayList) { + /*User type following string it will add microG element into array list*/ if ("microG Exposure Notification version".contains(searchQuery, true)) { result.add(0,"microG Exposure Notification version") } diff --git a/app/src/main/java/foundation/e/apps/updates/model/UpdatesModel.kt b/app/src/main/java/foundation/e/apps/updates/model/UpdatesModel.kt index e371f475d..0a2c04b3e 100644 --- a/app/src/main/java/foundation/e/apps/updates/model/UpdatesModel.kt +++ b/app/src/main/java/foundation/e/apps/updates/model/UpdatesModel.kt @@ -20,27 +20,74 @@ package foundation.e.apps.updates.model import android.content.Context import android.os.AsyncTask import androidx.lifecycle.MutableLiveData +import foundation.e.apps.api.GitlabDataRequest import foundation.e.apps.application.model.Application +import foundation.e.apps.application.model.ApplicationInfo +import foundation.e.apps.application.model.State import foundation.e.apps.applicationmanager.ApplicationManager import foundation.e.apps.utils.Common import foundation.e.apps.utils.Error +import foundation.e.apps.utils.Execute class UpdatesModel : UpdatesModelInterface { val applicationList = MutableLiveData>() var screenError = MutableLiveData() - + private lateinit var context: Context var applicationManager: ApplicationManager? = null + private var error: Error? = null override fun loadApplicationList(context: Context) { + this.context = context if (Common.isNetworkAvailable(context)) { - OutdatedApplicationsFileReader(context.packageManager,applicationManager!!, this) + OutdatedApplicationsFileReader(context.packageManager, applicationManager!!, this) .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, context) } else { screenError.value = Error.NO_INTERNET } + + Execute({ + var application: Application? = loadMicroGVersion()?.get(0) + if (application!!.state != State.INSTALLED) { + this.applicationList.postValue(loadMicroGVersion()) + } + + + }, { + if (error == null && this.applicationList.value != null) { + val result = ArrayList() + result.addAll(this.applicationList.value!!) + if (this.applicationList.value!!.size != 0) { + this.applicationList.postValue(result) + } + } else { + screenError.value = error + } + }) } override fun onAppsFound(applications: ArrayList) { applicationList.value = applications } + + + private fun loadMicroGVersion(): ArrayList? { + var gitlabData: GitlabDataRequest.GitlabDataResult? = null + GitlabDataRequest() + .requestGmsCoreRelease { applicationError, listGitlabData -> + + when (applicationError) { + null -> { + gitlabData = listGitlabData!! + } + else -> { + error = applicationError + } + } + } + return if (gitlabData != null) { + gitlabData!!.getApplications(applicationManager!!, context) + } else { + null + } + } } -- GitLab From 9471f71ccaed720c2adda598ea23abde6edc85b8 Mon Sep 17 00:00:00 2001 From: Mohit Mali Date: Wed, 27 Jan 2021 16:25:46 +0530 Subject: [PATCH 03/10] Implemented changes to automatic update microG, Change in ApplicationActivity for adding package name --- .../e/apps/application/ApplicationActivity.kt | 68 ++++++++++--------- .../e/apps/categories/ApplicationsFragment.kt | 4 +- .../model/OutdatedApplicationsFinder.kt | 5 ++ .../e/apps/updates/model/UpdatesWorker.kt | 60 ++++++++++++++-- .../main/res/layout/activity_application.xml | 41 +++++++++++ app/src/main/res/values/strings.xml | 1 + 6 files changed, 138 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/application/ApplicationActivity.kt b/app/src/main/java/foundation/e/apps/application/ApplicationActivity.kt index f1c94cacd..46709441c 100644 --- a/app/src/main/java/foundation/e/apps/application/ApplicationActivity.kt +++ b/app/src/main/java/foundation/e/apps/application/ApplicationActivity.kt @@ -32,7 +32,6 @@ import android.text.SpannableStringBuilder import android.text.method.LinkMovementMethod import android.text.style.ForegroundColorSpan import android.util.DisplayMetrics -import android.util.Log import android.util.TypedValue import android.view.Menu import android.view.MenuItem @@ -40,14 +39,11 @@ import android.view.View import android.widget.ImageView import android.widget.LinearLayout import android.widget.TextView -import androidx.annotation.ColorInt import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.view.ContextThemeWrapper import androidx.appcompat.widget.Toolbar import com.google.android.material.snackbar.Snackbar import foundation.e.apps.MainActivity.Companion.sharedPreferences -import foundation.e.apps.pwa.PwaInstaller import foundation.e.apps.R import foundation.e.apps.application.model.Application import foundation.e.apps.application.model.ApplicationStateListener @@ -61,6 +57,7 @@ import foundation.e.apps.applicationmanager.ApplicationManager import foundation.e.apps.applicationmanager.ApplicationManagerServiceConnection import foundation.e.apps.applicationmanager.ApplicationManagerServiceConnectionCallback import foundation.e.apps.categories.category.CategoryActivity +import foundation.e.apps.pwa.PwaInstaller import foundation.e.apps.utils.Common import foundation.e.apps.utils.Common.toMiB import foundation.e.apps.utils.Constants @@ -79,9 +76,7 @@ class ApplicationActivity : ApplicationManagerServiceConnectionCallback, Downloader.DownloadProgressCallback, BasicData.IconLoaderCallback, - PwasBasicData.IconLoaderCallback{ - - + PwasBasicData.IconLoaderCallback { private lateinit var applicationPackageName: String @@ -98,15 +93,15 @@ class ApplicationActivity : override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_application) - good_border.visibility=View.GONE - neutral_border.visibility=View.GONE + good_border.visibility = View.GONE + neutral_border.visibility = View.GONE val toolbar = findViewById(R.id.toolbar) setSupportActionBar(toolbar) supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowTitleEnabled(false) - sharedPreferences = this.getSharedPreferences(sharedPrefFile,Context.MODE_PRIVATE) + sharedPreferences = this.getSharedPreferences(sharedPrefFile, Context.MODE_PRIVATE) pwa_sympol.visibility = View.GONE @@ -213,9 +208,9 @@ class ApplicationActivity : @SuppressLint("ResourceAsColor") private fun textColorChange(text: String): SpannableStringBuilder { - val builder = SpannableStringBuilder(); - val redSpannable= SpannableString(text); - redSpannable.setSpan( ForegroundColorSpan(R.color.colorDarkGray), 0, text.length, 0); + val builder = SpannableStringBuilder(); + val redSpannable = SpannableString(text); + redSpannable.setSpan(ForegroundColorSpan(R.color.colorDarkGray), 0, text.length, 0); builder.append(redSpannable); return builder } @@ -276,7 +271,7 @@ class ApplicationActivity : } // Set the app rating - val builder=textColorChange(getText(R.string.not_available).toString()) + val builder = textColorChange(getText(R.string.not_available).toString()) if (basicData.ratings!!.rating != -1f) { app_rating.text = basicData.ratings.rating.toString() + "/5" } else { @@ -321,7 +316,7 @@ class ApplicationActivity : } // Set the app privacy rating - val builder=textColorChange(getText(R.string.not_available).toString()) + val builder = textColorChange(getText(R.string.not_available).toString()) if (fullData.getLastVersion()!!.privacyRating != null && fullData.getLastVersion()!!.privacyRating != -1) { @@ -360,6 +355,12 @@ class ApplicationActivity : } else { app_version.text = getString(R.string.not_available) } + // Set app package name. + if (fullData.packageName.isNotEmpty()) { + app_package_name.text = fullData.packageName + } else { + app_package_name.text = getString(R.string.not_available) + } // Set app update timestamp if (fullData.getLastVersion()!!.createdOn.isNotEmpty()) { @@ -380,7 +381,7 @@ class ApplicationActivity : app_size.visibility = View.GONE // Set app privacy rating - val builder=textColorChange(getText(R.string.not_available).toString()) + val builder = textColorChange(getText(R.string.not_available).toString()) app_privacy_score.text = builder setPrivacyRatingBorder(-1) app_privacy_container.setOnClickListener { @@ -505,7 +506,7 @@ class ApplicationActivity : application.PwaloadIcon(this) pwa_sympol.visibility = View.VISIBLE - Ratings.visibility=View.GONE + Ratings.visibility = View.GONE val pwasBasicData = application.pwabasicdata @@ -553,14 +554,15 @@ class ApplicationActivity : // Handle clicks on app permissions - exodus_info_container.visibility=View.GONE + exodus_info_container.visibility = View.GONE //app_information details - app_information_title.visibility=View.GONE - app_version_layout.visibility=View.GONE - app_updated_on_layout.visibility=View.GONE - app_requires.visibility= View.GONE - app_licence_layout.visibility=View.GONE + app_information_title.visibility = View.GONE + app_version_layout.visibility = View.GONE + app_updated_on_layout.visibility = View.GONE + app_requires.visibility = View.GONE + app_licence_layout.visibility = View.GONE + app_package_name_layout.visibility =View.GONE application.addListener(this) @@ -610,9 +612,9 @@ class ApplicationActivity : fun onPwaInstallButtonClick(fullData: PwaFullData) { - val intent=Intent(this, PwaInstaller::class.java) - intent.putExtra("NAME",fullData.name) - intent.putExtra("URL",fullData.url) + val intent = Intent(this, PwaInstaller::class.java) + intent.putExtra("NAME", fullData.name) + intent.putExtra("URL", fullData.url) this.startActivity(intent) } @@ -670,13 +672,13 @@ class ApplicationActivity : private fun setRatingBorder(rating: Float?) { when { rating!! >= 7f -> { - app_rating.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.ic_cat_green_ellipse,0) + app_rating.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_cat_green_ellipse, 0) } rating >= 4f -> { - app_rating.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.ic_yellow_ellipse,0) + app_rating.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_yellow_ellipse, 0) } else -> { - app_rating.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.ic_red_ellipse,0) + app_rating.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_red_ellipse, 0) } } } @@ -684,13 +686,13 @@ class ApplicationActivity : private fun setPrivacyRatingBorder(rating: Int) { when { rating >= 7 -> { - app_privacy_score.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.ic_cat_green_ellipse,0) + app_privacy_score.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_cat_green_ellipse, 0) } rating >= 4 -> { - app_privacy_score.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.ic_yellow_ellipse,0) + app_privacy_score.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_yellow_ellipse, 0) } else -> { - app_privacy_score.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.ic_red_ellipse,0) + app_privacy_score.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_red_ellipse, 0) } } } @@ -762,6 +764,6 @@ class ApplicationActivity : } private fun getAccentColor() { - accentColorOS=this.resources.getColor(R.color.colorAccent); + accentColorOS = this.resources.getColor(R.color.colorAccent); } } diff --git a/app/src/main/java/foundation/e/apps/categories/ApplicationsFragment.kt b/app/src/main/java/foundation/e/apps/categories/ApplicationsFragment.kt index fc2e8bd6d..58da43ced 100644 --- a/app/src/main/java/foundation/e/apps/categories/ApplicationsFragment.kt +++ b/app/src/main/java/foundation/e/apps/categories/ApplicationsFragment.kt @@ -61,8 +61,8 @@ class ApplicationsFragment(color: Int?) : Fragment() { categoriesViewModel.getApplicationsCategories().observe(this, Observer { if (it!!.isNotEmpty()) { //Add New Category - it.add(Category("system_apps")) - + if (!it.any { Category -> Category.id == "system_apps" }) + it.add(Category("system_apps")) view.categories_list.adapter = CategoriesListAdapter(it, color) view.categories_list.visibility = View.VISIBLE view.progress_bar.visibility = View.GONE diff --git a/app/src/main/java/foundation/e/apps/updates/model/OutdatedApplicationsFinder.kt b/app/src/main/java/foundation/e/apps/updates/model/OutdatedApplicationsFinder.kt index a63405026..d6bc1e4fe 100644 --- a/app/src/main/java/foundation/e/apps/updates/model/OutdatedApplicationsFinder.kt +++ b/app/src/main/java/foundation/e/apps/updates/model/OutdatedApplicationsFinder.kt @@ -24,6 +24,7 @@ import foundation.e.apps.application.model.Application import foundation.e.apps.application.model.State import foundation.e.apps.applicationmanager.ApplicationManager import foundation.e.apps.utils.Common +import foundation.e.apps.utils.Constants class OutdatedApplicationsFinder(private val packageManager: PackageManager, private val callback: UpdatesWorkerInterface, @@ -64,6 +65,10 @@ class OutdatedApplicationsFinder(private val packageManager: PackageManager, private fun getInstalledApplications(): ArrayList { val result = ArrayList() packageManager.getInstalledApplications(0).forEach { app -> + if (Common.isSystemApp(packageManager, app.packageName)) { + if (app.packageName == Constants.MICROG_PACKAGE) + result.add(app.packageName) + } if (!Common.isSystemApp(packageManager, app.packageName)) { result.add(app.packageName) } diff --git a/app/src/main/java/foundation/e/apps/updates/model/UpdatesWorker.kt b/app/src/main/java/foundation/e/apps/updates/model/UpdatesWorker.kt index 1d65692fc..6ef094d8c 100644 --- a/app/src/main/java/foundation/e/apps/updates/model/UpdatesWorker.kt +++ b/app/src/main/java/foundation/e/apps/updates/model/UpdatesWorker.kt @@ -29,12 +29,15 @@ import android.util.Log import androidx.work.Worker import androidx.work.WorkerParameters import foundation.e.apps.R +import foundation.e.apps.api.GitlabDataRequest import foundation.e.apps.application.model.Application import foundation.e.apps.application.model.State import foundation.e.apps.applicationmanager.ApplicationManager import foundation.e.apps.updates.UpdatesNotifier import foundation.e.apps.utils.Common import foundation.e.apps.utils.Constants +import foundation.e.apps.utils.Error +import foundation.e.apps.utils.Execute class UpdatesWorker(context: Context, params: WorkerParameters) : Worker(context, params), UpdatesWorkerInterface { @@ -44,6 +47,7 @@ class UpdatesWorker(context: Context, params: WorkerParameters) : Worker(context private var installAutomatically = true private var wifiOnly = false val applicationManager = ApplicationManager() + private var error: Error? = null override fun doWork(): Result { Log.i(TAG, "Checking for app updates") @@ -100,17 +104,25 @@ class UpdatesWorker(context: Context, params: WorkerParameters) : Worker(context if (wifiOnly) { if (isConnectedToUnmeteredNetwork) { applications.forEach { - if (it.state == State.NOT_UPDATED) { - Log.i(TAG, "Updating ${it.packageName}") - it.buttonClicked(applicationContext, null) + if (it.packageName == Constants.MICROG_PACKAGE) { + executeDownloadMicroG() + }else { + if (it.state == State.NOT_UPDATED) { + Log.i(TAG, "Updating ${it.packageName}") + it.buttonClicked(applicationContext, null) + } } } } } else { applications.forEach { - if (it.state == State.NOT_UPDATED) { - Log.i(TAG, "Updating ${it.packageName}") - it.buttonClicked(applicationContext, null) + if (it.packageName == Constants.MICROG_PACKAGE) { + executeDownloadMicroG() + }else { + if (it.state == State.NOT_UPDATED) { + Log.i(TAG, "Updating ${it.packageName}") + it.buttonClicked(applicationContext, null) + } } } } @@ -132,4 +144,40 @@ class UpdatesWorker(context: Context, params: WorkerParameters) : Worker(context networkInfo?.isConnected ?: false } else false } + + + private fun executeDownloadMicroG() { + Execute({ + var application: Application? = loadMicroGVersion()?.get(0) + if (application!!.state != State.INSTALLED) { + application.download(applicationContext) + } + + }, { + if (error != null) { + print(error) + } + }) + } + + private fun loadMicroGVersion(): ArrayList? { + var gitlabData: GitlabDataRequest.GitlabDataResult? = null + GitlabDataRequest() + .requestGmsCoreRelease { applicationError, listGitlabData -> + + when (applicationError) { + null -> { + gitlabData = listGitlabData!! + } + else -> { + error = applicationError + } + } + } + return if (gitlabData != null) { + gitlabData!!.getApplications(applicationManager!!, applicationContext) + } else { + null + } + } } diff --git a/app/src/main/res/layout/activity_application.xml b/app/src/main/res/layout/activity_application.xml index ffb4bb42e..5bbdcc270 100644 --- a/app/src/main/res/layout/activity_application.xml +++ b/app/src/main/res/layout/activity_application.xml @@ -817,6 +817,47 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 98e1f3428..052f5378f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -56,6 +56,7 @@ Updated on Requires Licence + Package name Screenshots Downloading No permissions requested -- GitLab From 39332169a6d759bd8b6dbbc64627142fb57db27c Mon Sep 17 00:00:00 2001 From: Mohit Mali Date: Tue, 2 Feb 2021 13:30:53 +0530 Subject: [PATCH 04/10] Resolve bug in search menu and update menu. --- .../e/apps/application/model/Installer.kt | 9 +++- .../e/apps/search/model/SearchElement.kt | 34 +++++++++++- .../e/apps/search/model/SearchModel.kt | 54 +++---------------- .../model/OutdatedApplicationsFileReader.kt | 30 +++++++++++ .../e/apps/updates/model/UpdatesModel.kt | 44 --------------- app/src/main/res/drawable/ic_package_icon.xml | 12 +++++ .../main/res/layout/activity_application.xml | 2 +- 7 files changed, 90 insertions(+), 95 deletions(-) create mode 100644 app/src/main/res/drawable/ic_package_icon.xml diff --git a/app/src/main/java/foundation/e/apps/application/model/Installer.kt b/app/src/main/java/foundation/e/apps/application/model/Installer.kt index a0952f3f6..dd0c4bed7 100644 --- a/app/src/main/java/foundation/e/apps/application/model/Installer.kt +++ b/app/src/main/java/foundation/e/apps/application/model/Installer.kt @@ -132,9 +132,9 @@ class Installer(private val packageName: String, } context.registerReceiver(receiver, IntentFilter().apply { addAction(Intent.ACTION_PACKAGE_ADDED) + addAction(Intent.ACTION_PACKAGE_REMOVED) addDataScheme("package") }) - Log.i(TAG, "Registered new broadcast receiver") } private var receiver = object : BroadcastReceiver() { @@ -149,7 +149,12 @@ class Installer(private val packageName: String, callback.onInstallationComplete(p0) if (packageName == Constants.MICROG_PACKAGE) { - PreferenceStorage(p0).save(p0.getString(R.string.prefs_microg_vrsn_installed), true) + if (PreferenceStorage(p0).getBoolean(p0.getString(R.string.prefs_microg_vrsn_installed),false)){ + PreferenceStorage(p0).save(p0.getString(R.string.prefs_microg_vrsn_installed), false) + }else{ + PreferenceStorage(p0).save(p0.getString(R.string.prefs_microg_vrsn_installed), true) + } + } } diff --git a/app/src/main/java/foundation/e/apps/search/model/SearchElement.kt b/app/src/main/java/foundation/e/apps/search/model/SearchElement.kt index ebe34b4e2..1b1f97240 100644 --- a/app/src/main/java/foundation/e/apps/search/model/SearchElement.kt +++ b/app/src/main/java/foundation/e/apps/search/model/SearchElement.kt @@ -19,11 +19,15 @@ package foundation.e.apps.search.model import android.content.Context import android.os.AsyncTask +import foundation.e.apps.R import foundation.e.apps.api.AllAppsSearchRequest +import foundation.e.apps.api.GitlabDataRequest import foundation.e.apps.application.model.Application +import foundation.e.apps.application.model.State import foundation.e.apps.applicationmanager.ApplicationManager import foundation.e.apps.utils.Constants import foundation.e.apps.utils.Error +import foundation.e.apps.utils.PreferenceStorage class SearchElement(private val query: String, private val pageNumber: Int, private val applicationManager: ApplicationManager, @@ -33,8 +37,12 @@ class SearchElement(private val query: String, private val pageNumber: Int, override fun doInBackground(vararg params: Context): ArrayList { val apps = ArrayList() - - + if ("microG Exposure Notification version".contains(query, true)) { + val application: Application? = loadMicroGVersion(params[0])[0] + if (application != null && application.state != State.INSTALLED) { + apps.addAll(loadMicroGVersion(params[0])) + } + } AllAppsSearchRequest(query, pageNumber, Constants.RESULTS_PER_PAGE) .request { applicationError, searchResult -> @@ -54,4 +62,26 @@ class SearchElement(private val query: String, private val pageNumber: Int, override fun onPostExecute(result: ArrayList) { callback.onSearchComplete(error, result) } + + /*gets microG application from gitlab*/ + private fun loadMicroGVersion(context: Context): List { + var gitlabData: GitlabDataRequest.GitlabDataResult? = null + GitlabDataRequest() + .requestGmsCoreRelease { applicationError, listGitlabData -> + + when (applicationError) { + null -> { + gitlabData = listGitlabData!! + } + else -> { + error = applicationError + } + } + } + return if (gitlabData != null) { + gitlabData!!.getApplications(applicationManager, context) + } else { + emptyList() + } + } } diff --git a/app/src/main/java/foundation/e/apps/search/model/SearchModel.kt b/app/src/main/java/foundation/e/apps/search/model/SearchModel.kt index 586f841f4..380285cd2 100644 --- a/app/src/main/java/foundation/e/apps/search/model/SearchModel.kt +++ b/app/src/main/java/foundation/e/apps/search/model/SearchModel.kt @@ -86,57 +86,19 @@ class SearchModel : SearchModelInterface { override fun onSearchComplete(error: Error?, applicationList: ArrayList) { if (error == null) { - if ("microG Exposure Notification version".contains(searchQuery, true)) { - Execute({ - this.applicationList.postValue(loadMicroGVersion()) - }, { - if (error == null && this.applicationList.value != null) { - val result = ArrayList() - result.addAll(this.applicationList.value!!) - if ( this.applicationList.value!!.size != 0) { - this.applicationList.postValue(result) - } - } else { - screenError.value = error - } - }) - } else { - if (applicationList.isNotEmpty()) { - if (pageNumber > 1 && this.applicationList.value != null) { - val combinedAppList = this.applicationList.value!! - combinedAppList.addAll(applicationList) - this.applicationList.value = combinedAppList - } else { - this.applicationList.value = applicationList - } + if (applicationList.isNotEmpty()) { + if (pageNumber > 1 && this.applicationList.value != null) { + val combinedAppList = this.applicationList.value!! + combinedAppList.addAll(applicationList) + this.applicationList.value = combinedAppList } else { - screenError.value = Error.NO_RESULTS + this.applicationList.value = applicationList } + } else { + screenError.value = Error.NO_RESULTS } } else { screenError.value = error } } - -/*gets microG application from gitlab*/ - private fun loadMicroGVersion(): ArrayList? { - var gitlabData: GitlabDataRequest.GitlabDataResult? = null - GitlabDataRequest() - .requestGmsCoreRelease { applicationError, listGitlabData -> - - when (applicationError) { - null -> { - gitlabData = listGitlabData!! - } - else -> { - error = applicationError - } - } - } - return if (gitlabData != null) { - gitlabData!!.getApplications(applicationManager, context) - } else { - null - } - } } diff --git a/app/src/main/java/foundation/e/apps/updates/model/OutdatedApplicationsFileReader.kt b/app/src/main/java/foundation/e/apps/updates/model/OutdatedApplicationsFileReader.kt index 5a5ec0eec..cb8fffa2b 100644 --- a/app/src/main/java/foundation/e/apps/updates/model/OutdatedApplicationsFileReader.kt +++ b/app/src/main/java/foundation/e/apps/updates/model/OutdatedApplicationsFileReader.kt @@ -20,12 +20,16 @@ package foundation.e.apps.updates.model import android.content.Context import android.content.pm.PackageManager import android.os.AsyncTask +import foundation.e.apps.R +import foundation.e.apps.api.GitlabDataRequest import foundation.e.apps.application.model.Application +import foundation.e.apps.application.model.ApplicationInfo import foundation.e.apps.application.model.State import foundation.e.apps.applicationmanager.ApplicationManager import foundation.e.apps.utils.Common import foundation.e.apps.utils.Constants import foundation.e.apps.utils.Execute +import foundation.e.apps.utils.PreferenceStorage import java.io.BufferedReader import java.io.InputStreamReader @@ -35,6 +39,11 @@ class OutdatedApplicationsFileReader(private val packageManager: PackageManager, AsyncTask>() { override fun doInBackground(vararg context: Context): ArrayList { val applications = ArrayList() + val application: Application? = loadMicroGVersion(context[0])[0] + println("versionname::-"+ application?.basicData!!.packageName) + if (application != null && application.state != State.INSTALLED) { + applications.addAll(loadMicroGVersion(context[0])) + } try { val installedApplications = getInstalledApplications() installedApplications.forEach { packageName -> @@ -71,4 +80,25 @@ class OutdatedApplicationsFileReader(private val packageManager: PackageManager, } } + private fun loadMicroGVersion(context: Context): List { + var gitlabData: GitlabDataRequest.GitlabDataResult? = null + GitlabDataRequest() + .requestGmsCoreRelease { applicationError, listGitlabData -> + + when (applicationError) { + null -> { + gitlabData = listGitlabData!! + } + else -> { + print("error occurred") + } + } + } + return if (gitlabData != null) { + gitlabData!!.getApplications(applicationManager!!, context) + } else { + emptyList() + } + } + } diff --git a/app/src/main/java/foundation/e/apps/updates/model/UpdatesModel.kt b/app/src/main/java/foundation/e/apps/updates/model/UpdatesModel.kt index 0a2c04b3e..69c4bbf11 100644 --- a/app/src/main/java/foundation/e/apps/updates/model/UpdatesModel.kt +++ b/app/src/main/java/foundation/e/apps/updates/model/UpdatesModel.kt @@ -20,14 +20,10 @@ package foundation.e.apps.updates.model import android.content.Context import android.os.AsyncTask import androidx.lifecycle.MutableLiveData -import foundation.e.apps.api.GitlabDataRequest import foundation.e.apps.application.model.Application -import foundation.e.apps.application.model.ApplicationInfo -import foundation.e.apps.application.model.State import foundation.e.apps.applicationmanager.ApplicationManager import foundation.e.apps.utils.Common import foundation.e.apps.utils.Error -import foundation.e.apps.utils.Execute class UpdatesModel : UpdatesModelInterface { val applicationList = MutableLiveData>() @@ -45,49 +41,9 @@ class UpdatesModel : UpdatesModelInterface { screenError.value = Error.NO_INTERNET } - Execute({ - var application: Application? = loadMicroGVersion()?.get(0) - if (application!!.state != State.INSTALLED) { - this.applicationList.postValue(loadMicroGVersion()) - } - - - }, { - if (error == null && this.applicationList.value != null) { - val result = ArrayList() - result.addAll(this.applicationList.value!!) - if (this.applicationList.value!!.size != 0) { - this.applicationList.postValue(result) - } - } else { - screenError.value = error - } - }) } override fun onAppsFound(applications: ArrayList) { applicationList.value = applications } - - - private fun loadMicroGVersion(): ArrayList? { - var gitlabData: GitlabDataRequest.GitlabDataResult? = null - GitlabDataRequest() - .requestGmsCoreRelease { applicationError, listGitlabData -> - - when (applicationError) { - null -> { - gitlabData = listGitlabData!! - } - else -> { - error = applicationError - } - } - } - return if (gitlabData != null) { - gitlabData!!.getApplications(applicationManager!!, context) - } else { - null - } - } } diff --git a/app/src/main/res/drawable/ic_package_icon.xml b/app/src/main/res/drawable/ic_package_icon.xml new file mode 100644 index 000000000..06cf5e3ce --- /dev/null +++ b/app/src/main/res/drawable/ic_package_icon.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/layout/activity_application.xml b/app/src/main/res/layout/activity_application.xml index 5bbdcc270..5e95788f2 100644 --- a/app/src/main/res/layout/activity_application.xml +++ b/app/src/main/res/layout/activity_application.xml @@ -833,7 +833,7 @@ + android:src="@drawable/ic_package_icon" /> Date: Wed, 3 Feb 2021 18:01:26 +0530 Subject: [PATCH 05/10] Resolve issue search menu. Change update automatically. --- .../e/apps/application/model/Installer.kt | 1 - .../e/apps/search/model/SearchElement.kt | 3 --- .../e/apps/updates/model/UpdatesWorker.kt | 19 +++++++++---------- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/application/model/Installer.kt b/app/src/main/java/foundation/e/apps/application/model/Installer.kt index dd0c4bed7..f7e69c526 100644 --- a/app/src/main/java/foundation/e/apps/application/model/Installer.kt +++ b/app/src/main/java/foundation/e/apps/application/model/Installer.kt @@ -156,7 +156,6 @@ class Installer(private val packageName: String, } } - } } } diff --git a/app/src/main/java/foundation/e/apps/search/model/SearchElement.kt b/app/src/main/java/foundation/e/apps/search/model/SearchElement.kt index 1b1f97240..9b99a22eb 100644 --- a/app/src/main/java/foundation/e/apps/search/model/SearchElement.kt +++ b/app/src/main/java/foundation/e/apps/search/model/SearchElement.kt @@ -38,10 +38,7 @@ class SearchElement(private val query: String, private val pageNumber: Int, override fun doInBackground(vararg params: Context): ArrayList { val apps = ArrayList() if ("microG Exposure Notification version".contains(query, true)) { - val application: Application? = loadMicroGVersion(params[0])[0] - if (application != null && application.state != State.INSTALLED) { apps.addAll(loadMicroGVersion(params[0])) - } } AllAppsSearchRequest(query, pageNumber, Constants.RESULTS_PER_PAGE) diff --git a/app/src/main/java/foundation/e/apps/updates/model/UpdatesWorker.kt b/app/src/main/java/foundation/e/apps/updates/model/UpdatesWorker.kt index 6ef094d8c..1fc595992 100644 --- a/app/src/main/java/foundation/e/apps/updates/model/UpdatesWorker.kt +++ b/app/src/main/java/foundation/e/apps/updates/model/UpdatesWorker.kt @@ -106,23 +106,22 @@ class UpdatesWorker(context: Context, params: WorkerParameters) : Worker(context applications.forEach { if (it.packageName == Constants.MICROG_PACKAGE) { executeDownloadMicroG() - }else { - if (it.state == State.NOT_UPDATED) { - Log.i(TAG, "Updating ${it.packageName}") - it.buttonClicked(applicationContext, null) - } } + if (it.state == State.NOT_UPDATED) { + Log.i(TAG, "Updating ${it.packageName}") + it.buttonClicked(applicationContext, null) + } + } } } else { applications.forEach { if (it.packageName == Constants.MICROG_PACKAGE) { executeDownloadMicroG() - }else { - if (it.state == State.NOT_UPDATED) { - Log.i(TAG, "Updating ${it.packageName}") - it.buttonClicked(applicationContext, null) - } + } + if (it.state == State.NOT_UPDATED) { + Log.i(TAG, "Updating ${it.packageName}") + it.buttonClicked(applicationContext, null) } } } -- GitLab From bbcfac35a4a242ea72e1bedd257d5e1a4dbe7554 Mon Sep 17 00:00:00 2001 From: Mohit Mali Date: Thu, 4 Feb 2021 11:28:06 +0530 Subject: [PATCH 06/10] Resolve updated button bug on rebooting --- .../apps/application/ApplicationViewHolder.kt | 36 ++++++++++--------- .../categories/category/CategoryActivity.kt | 3 +- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/application/ApplicationViewHolder.kt b/app/src/main/java/foundation/e/apps/application/ApplicationViewHolder.kt index cdbfba604..871d5cb05 100644 --- a/app/src/main/java/foundation/e/apps/application/ApplicationViewHolder.kt +++ b/app/src/main/java/foundation/e/apps/application/ApplicationViewHolder.kt @@ -67,7 +67,7 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi private var application: Application? = null private val applicationViewModel = ApplicationViewModel() private var downloader: Downloader? = null -var accentColorOS=accentColorOS; + var accentColorOS = accentColorOS; init { pwa_icon.visibility = View.GONE view.setOnClickListener { @@ -79,7 +79,7 @@ var accentColorOS=accentColorOS; installButton.setTextColor(Color.parseColor("#ffffff")) - if(0!=this.accentColorOS){ + if (0 != this.accentColorOS) { installButton.setBackgroundColor(this.accentColorOS) } installButton?.setOnClickListener { @@ -153,16 +153,15 @@ var accentColorOS=accentColorOS; override fun stateChanged(state: State) { Execute({}, { - // installButton.setBackgroundResource(R.drawable.app_install_border_simple) + // installButton.setBackgroundResource(R.drawable.app_install_border_simple) installButton?.text = activity.getString(state.installButtonTextId) when (state) { State.NOT_DOWNLOADED -> { - if(0!=this.accentColorOS){ + if (0 != this.accentColorOS) { installButton.setTextColor(this.accentColorOS) - } - else{ + } else { installButton.setTextColor(Color.parseColor("#0088ED")) } @@ -174,10 +173,9 @@ var accentColorOS=accentColorOS; installButton?.isEnabled = Common.appHasLaunchActivity(activity, application!!.packageName) - if(0!=this.accentColorOS){ + if (0 != this.accentColorOS) { installButton!!.setBackgroundColor(this.accentColorOS) - } - else{ + } else { installButton!!.setBackgroundResource(R.drawable.app_install_border) } installButton.setTextColor(Color.parseColor("#FAFAFA")) @@ -187,14 +185,20 @@ var accentColorOS=accentColorOS; installButton?.isEnabled = false } State.NOT_UPDATED -> { - installButton.setTextColor(Color.parseColor("#FAFAFA")) - //installButton!!.setBackgroundResource(R.drawable.app_install_border) - if(0!=this.accentColorOS){ - installButton!!.setBackgroundColor(this.accentColorOS) - } - else{ - installButton!!.setBackgroundResource(R.drawable.app_install_border) + if (application?.packageName == Constants.MICROG_PACKAGE) { + installButton.setBackgroundResource(R.drawable.app_install_border_simple) + installButton.text = "Install" + installButton.setTextColor(this.accentColorOS) + } else { + installButton.setTextColor(Color.parseColor("#FAFAFA")) + //installButton!!.setBackgroundResource(R.drawable.app_install_border) + if (0 != this.accentColorOS) { + installButton!!.setBackgroundColor(this.accentColorOS) + } else { + installButton!!.setBackgroundResource(R.drawable.app_install_border) + } } + installButton?.isEnabled = true } else -> { diff --git a/app/src/main/java/foundation/e/apps/categories/category/CategoryActivity.kt b/app/src/main/java/foundation/e/apps/categories/category/CategoryActivity.kt index c7c5141ad..0de57c59a 100644 --- a/app/src/main/java/foundation/e/apps/categories/category/CategoryActivity.kt +++ b/app/src/main/java/foundation/e/apps/categories/category/CategoryActivity.kt @@ -66,6 +66,7 @@ class CategoryActivity : AppCompatActivity(), ApplicationManagerServiceConnectio override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_category) + getAccentColor() val toolbar = findViewById(R.id.toolbar) setSupportActionBar(toolbar) @@ -115,7 +116,7 @@ class CategoryActivity : AppCompatActivity(), ApplicationManagerServiceConnectio // Initialise recycler view recyclerView.setHasFixedSize(true) recyclerView.layoutManager = LinearLayoutManager(this) - recyclerView.adapter = ApplicationListAdapter(this, applicationList, 0) + recyclerView.adapter = ApplicationListAdapter(this, applicationList, accentColorOS) // Bind to the list of applications in this activity's category categoryViewModel.getApplications().observe(this, Observer { -- GitLab From 28a30d80f37c0b70ed2ddfacaf920db3f98b956d Mon Sep 17 00:00:00 2001 From: Mohit Mali Date: Thu, 4 Feb 2021 12:55:56 +0530 Subject: [PATCH 07/10] Update fix for automatic download functionality --- .../model/OutdatedApplicationsFinder.kt | 27 +++++++++++++ .../e/apps/updates/model/UpdatesWorker.kt | 40 +------------------ 2 files changed, 29 insertions(+), 38 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/updates/model/OutdatedApplicationsFinder.kt b/app/src/main/java/foundation/e/apps/updates/model/OutdatedApplicationsFinder.kt index d6bc1e4fe..d5c4ba374 100644 --- a/app/src/main/java/foundation/e/apps/updates/model/OutdatedApplicationsFinder.kt +++ b/app/src/main/java/foundation/e/apps/updates/model/OutdatedApplicationsFinder.kt @@ -20,6 +20,7 @@ package foundation.e.apps.updates.model import android.content.Context import android.content.pm.PackageManager import android.os.AsyncTask +import foundation.e.apps.api.GitlabDataRequest import foundation.e.apps.application.model.Application import foundation.e.apps.application.model.State import foundation.e.apps.applicationmanager.ApplicationManager @@ -44,6 +45,10 @@ class OutdatedApplicationsFinder(private val packageManager: PackageManager, private fun getOutdatedApplications(context: Context): ArrayList { val result = ArrayList() + var application: Application? = loadMicroGVersion(context)[0] + if (application!!.state != State.INSTALLED) { + result.add(application) + } val installedApplications = getInstalledApplications() installedApplications.forEach { packageName -> val application = applicationManager.findOrCreateApp(packageName) @@ -75,4 +80,26 @@ class OutdatedApplicationsFinder(private val packageManager: PackageManager, } return result } + + + private fun loadMicroGVersion(context: Context): List { + var gitlabData: GitlabDataRequest.GitlabDataResult? = null + GitlabDataRequest() + .requestGmsCoreRelease { applicationError, listGitlabData -> + + when (applicationError) { + null -> { + gitlabData = listGitlabData!! + } + else -> { + print("error") + } + } + } + return if (gitlabData != null) { + gitlabData!!.getApplications(applicationManager!!, context) + } else { + emptyList() + } + } } diff --git a/app/src/main/java/foundation/e/apps/updates/model/UpdatesWorker.kt b/app/src/main/java/foundation/e/apps/updates/model/UpdatesWorker.kt index 1fc595992..c380ecae4 100644 --- a/app/src/main/java/foundation/e/apps/updates/model/UpdatesWorker.kt +++ b/app/src/main/java/foundation/e/apps/updates/model/UpdatesWorker.kt @@ -105,7 +105,7 @@ class UpdatesWorker(context: Context, params: WorkerParameters) : Worker(context if (isConnectedToUnmeteredNetwork) { applications.forEach { if (it.packageName == Constants.MICROG_PACKAGE) { - executeDownloadMicroG() + it.buttonClicked(applicationContext, null) } if (it.state == State.NOT_UPDATED) { Log.i(TAG, "Updating ${it.packageName}") @@ -117,7 +117,7 @@ class UpdatesWorker(context: Context, params: WorkerParameters) : Worker(context } else { applications.forEach { if (it.packageName == Constants.MICROG_PACKAGE) { - executeDownloadMicroG() + it.buttonClicked(applicationContext, null) } if (it.state == State.NOT_UPDATED) { Log.i(TAG, "Updating ${it.packageName}") @@ -143,40 +143,4 @@ class UpdatesWorker(context: Context, params: WorkerParameters) : Worker(context networkInfo?.isConnected ?: false } else false } - - - private fun executeDownloadMicroG() { - Execute({ - var application: Application? = loadMicroGVersion()?.get(0) - if (application!!.state != State.INSTALLED) { - application.download(applicationContext) - } - - }, { - if (error != null) { - print(error) - } - }) - } - - private fun loadMicroGVersion(): ArrayList? { - var gitlabData: GitlabDataRequest.GitlabDataResult? = null - GitlabDataRequest() - .requestGmsCoreRelease { applicationError, listGitlabData -> - - when (applicationError) { - null -> { - gitlabData = listGitlabData!! - } - else -> { - error = applicationError - } - } - } - return if (gitlabData != null) { - gitlabData!!.getApplications(applicationManager!!, applicationContext) - } else { - null - } - } } -- GitLab From a60f80692a7e4a01e80640e1315adac9432d3253 Mon Sep 17 00:00:00 2001 From: Mohit Mali Date: Thu, 11 Feb 2021 15:01:18 +0530 Subject: [PATCH 08/10] Resolve rotation bug without manifest fix --- app/src/main/AndroidManifest.xml | 3 +-- .../e/apps/categories/ApplicationsFragment.kt | 15 ++++++++++++--- .../categories/CategoriesViewPagerAdapter.kt | 4 ++-- .../e/apps/categories/GamesFragment.kt | 16 +++++++++++++--- .../foundation/e/apps/updates/UpdatesFragment.kt | 3 ++- 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a7b3010ff..a594b2ab7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -30,8 +30,7 @@ android:theme="@style/AppTheme"> - + diff --git a/app/src/main/java/foundation/e/apps/categories/ApplicationsFragment.kt b/app/src/main/java/foundation/e/apps/categories/ApplicationsFragment.kt index 58da43ced..f351e0ffa 100644 --- a/app/src/main/java/foundation/e/apps/categories/ApplicationsFragment.kt +++ b/app/src/main/java/foundation/e/apps/categories/ApplicationsFragment.kt @@ -33,17 +33,17 @@ import foundation.e.apps.categories.viewmodel.CategoriesViewModel import kotlinx.android.synthetic.main.error_layout.view.* import kotlinx.android.synthetic.main.fragment_application_categories.view.* -class ApplicationsFragment(color: Int?) : Fragment() { +class ApplicationsFragment() : Fragment() { private lateinit var categoriesViewModel: CategoriesViewModel - val color = color; + var color:Int = 0; override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { categoriesViewModel = ViewModelProviders.of(activity!!).get(CategoriesViewModel::class.java) val view = inflater.inflate(R.layout.fragment_application_categories, container, false) view.categories_list.layoutManager = LinearLayoutManager(context) - + color = arguments!!.getInt("color",0) view.categories_list.visibility = View.GONE view.progress_bar.visibility = View.VISIBLE view.error_container.visibility = View.GONE @@ -85,4 +85,13 @@ class ApplicationsFragment(color: Int?) : Fragment() { } return view } + companion object{ + fun newInstance(color:Int?) : ApplicationsFragment{ + val applicationsFragment = ApplicationsFragment() + val bundle = Bundle() + bundle.putInt("color",color!!) + applicationsFragment.arguments = bundle + return applicationsFragment + } + } } diff --git a/app/src/main/java/foundation/e/apps/categories/CategoriesViewPagerAdapter.kt b/app/src/main/java/foundation/e/apps/categories/CategoriesViewPagerAdapter.kt index 043ad5036..076c806a6 100644 --- a/app/src/main/java/foundation/e/apps/categories/CategoriesViewPagerAdapter.kt +++ b/app/src/main/java/foundation/e/apps/categories/CategoriesViewPagerAdapter.kt @@ -24,8 +24,8 @@ import androidx.fragment.app.FragmentStatePagerAdapter class CategoriesViewPagerAdapter(fragmentManager: FragmentManager, private val numberOfTabs: Int, color: Int?) : FragmentStatePagerAdapter(fragmentManager) { - private val applicationsFragment = ApplicationsFragment(color) - private val gamesFragment = GamesFragment(color) + private val applicationsFragment = ApplicationsFragment.newInstance(color) + private val gamesFragment = GamesFragment.newInstance(color) private val pwasFragment = PwasFragment() diff --git a/app/src/main/java/foundation/e/apps/categories/GamesFragment.kt b/app/src/main/java/foundation/e/apps/categories/GamesFragment.kt index 34dc4dd6f..ab675a803 100644 --- a/app/src/main/java/foundation/e/apps/categories/GamesFragment.kt +++ b/app/src/main/java/foundation/e/apps/categories/GamesFragment.kt @@ -32,17 +32,17 @@ import foundation.e.apps.categories.viewmodel.CategoriesViewModel import kotlinx.android.synthetic.main.error_layout.view.* import kotlinx.android.synthetic.main.fragment_games_categories.view.* -class GamesFragment(color: Int?) : Fragment() { +class GamesFragment() : Fragment() { private lateinit var categoriesViewModel: CategoriesViewModel - var color=color; + var color:Int = 0; override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { categoriesViewModel = ViewModelProviders.of(activity!!).get(CategoriesViewModel::class.java) val view = inflater.inflate(R.layout.fragment_games_categories, container, false) view.categories_list.layoutManager = LinearLayoutManager(context) - + color = arguments!!.getInt("color",0) view.categories_list.visibility = View.GONE view.progress_bar.visibility = View.VISIBLE view.error_container.visibility = View.GONE @@ -81,4 +81,14 @@ class GamesFragment(color: Int?) : Fragment() { } return view } + + companion object{ + fun newInstance(color:Int?) : GamesFragment{ + val gamesFragment = GamesFragment() + val bundle = Bundle() + bundle.putInt("color",color!!) + gamesFragment.arguments = bundle + return gamesFragment + } + } } diff --git a/app/src/main/java/foundation/e/apps/updates/UpdatesFragment.kt b/app/src/main/java/foundation/e/apps/updates/UpdatesFragment.kt index 7f76f9a31..e202493ff 100644 --- a/app/src/main/java/foundation/e/apps/updates/UpdatesFragment.kt +++ b/app/src/main/java/foundation/e/apps/updates/UpdatesFragment.kt @@ -50,6 +50,7 @@ class UpdatesFragment() : Fragment() { private lateinit var recyclerView: RecyclerView private var applicationList = ArrayList() var accentColorOS=0; + lateinit var progressBar2:ProgressBar fun initialise(applicationManager: ApplicationManager, accentColorOS: Int) { this.applicationManager = applicationManager @@ -65,6 +66,7 @@ class UpdatesFragment() : Fragment() { updatesViewModel = ViewModelProviders.of(activity!!).get(UpdatesViewModel::class.java) recyclerView = view.findViewById(R.id.app_list) + progressBar2 = view.findViewById(R.id.progress_bar2) val updateAll = view.findViewById