Skip to content

Commit

Permalink
2087: Add kotlinx-parcelable; fix glide apps preloader
Browse files Browse the repository at this point in the history
  • Loading branch information
VishalNehra committed Nov 28, 2020
1 parent 083c5ee commit a99d1a5
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 45 deletions.
5 changes: 5 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.hiya.jacoco-android'

android {
Expand Down Expand Up @@ -59,6 +60,10 @@ android {
viewBinding true
}

androidExtensions {
features = ["parcelize"]
}

lintOptions {
abortOnError false
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,9 +139,9 @@ public View getView(final int position, View convertView, ViewGroup parent) {
holder.txtDesc.setText(rowItem.openFileParcelable.getClassName());
holder.txtDesc.setSingleLine(true);
holder.txtDesc.setEllipsize(TextUtils.TruncateAt.MIDDLE);
modelProvider.loadApkImage(rowItem.packageName, holder.apkIcon, true, themedActivity);
modelProvider.loadApkImage(rowItem.packageName, holder.apkIcon);
} else {
modelProvider.loadApkImage(rowItem.path, holder.apkIcon, false, themedActivity);
modelProvider.loadApkImage(rowItem.path, holder.apkIcon);
}

if (holder.about != null && !isBottomSheet) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,43 +21,14 @@
package com.amaze.filemanager.adapters.data

import android.net.Uri
import android.os.Parcel
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize

@Parcelize
class OpenFileParcelable(
var uri: Uri?,
var mimeType: String?,
var useNewStack: Boolean?,
var className: String?,
var packageName: String?
) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readParcelable(Uri::class.java.classLoader),
parcel.readString(),
parcel.readValue(Boolean::class.java.classLoader) as? Boolean,
parcel.readString(),
parcel.readString()
)

override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeParcelable(uri, flags)
parcel.writeString(mimeType)
parcel.writeValue(useNewStack)
parcel.writeString(className)
parcel.writeString(packageName)
}

override fun describeContents(): Int {
return 0
}

companion object CREATOR : Parcelable.Creator<OpenFileParcelable> {
override fun createFromParcel(parcel: Parcel): OpenFileParcelable {
return OpenFileParcelable(parcel)
}

override fun newArray(size: Int): Array<OpenFileParcelable?> {
return arrayOfNulls(size)
}
}
}
) : Parcelable
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

import com.amaze.filemanager.GlideApp;
import com.amaze.filemanager.GlideRequest;
import com.amaze.filemanager.R;
import com.bumptech.glide.ListPreloader;
import com.bumptech.glide.RequestBuilder;

Expand All @@ -36,16 +37,21 @@

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;

/** @author Emmanuel Messulam <[email protected]> on 10/12/2017, at 15:38. */
public class AppsAdapterPreloadModel implements ListPreloader.PreloadModelProvider<String> {

private Context mContext;
private GlideRequest<Drawable> request;
private List<String> items;
private boolean isBottomSheet;

public AppsAdapterPreloadModel(Fragment f) {
public AppsAdapterPreloadModel(Fragment f, boolean isBottomSheet) {
request = GlideApp.with(f).asDrawable().fitCenter();
this.mContext = f.requireContext();
this.isBottomSheet = isBottomSheet;
}

public void setItemList(List<String> items) {
Expand All @@ -62,19 +68,27 @@ public List<String> getPreloadItems(int position) {
@Nullable
@Override
public RequestBuilder getPreloadRequestBuilder(String item) {
return request.clone().load(item);
if (isBottomSheet) {
return request.clone().load(getApplicationIconFromPackageName(item));
} else {
return request.clone().load(item);
}
}

public void loadApkImage(String item, ImageView v, boolean isBottomSheet, Context context) {
public void loadApkImage(String item, ImageView v) {
if (isBottomSheet) {
try {
request.load(context.getPackageManager().getApplicationIcon(item)).into(v);
} catch (PackageManager.NameNotFoundException e) {
Log.w(getClass().getSimpleName(), e);
request.load("").into(v);
}
request.load(getApplicationIconFromPackageName(item)).into(v);
} else {
request.load(item).into(v);
}
}

private Drawable getApplicationIconFromPackageName(String packageName) {
try {
return mContext.getPackageManager().getApplicationIcon(packageName);
} catch (PackageManager.NameNotFoundException e) {
Log.w(getClass().getSimpleName(), e);
return ContextCompat.getDrawable(mContext, R.drawable.ic_broken_image_white_24dp);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ class OpenFileDialogFragment : BaseBottomSheetFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

val modelProvider = AppsAdapterPreloadModel(this)
val modelProvider = AppsAdapterPreloadModel(this, true)
val sizeProvider = ViewPreloadSizeProvider<String>()
val preloader = ListPreloader(
GlideApp.with(this), modelProvider, sizeProvider, GlideConstants.MAX_PRELOAD_APPSADAPTER
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ else if (utilsProvider.getAppTheme().equals(AppTheme.BLACK))
.getDecorView()
.setBackgroundColor(Utils.getColor(getContext(), android.R.color.black));

modelProvider = new AppsAdapterPreloadModel(app);
modelProvider = new AppsAdapterPreloadModel(app, false);
ViewPreloadSizeProvider<String> sizeProvider = new ViewPreloadSizeProvider<>();
ListPreloader<String> preloader =
new ListPreloader<>(
Expand Down

0 comments on commit a99d1a5

Please sign in to comment.