Skip to content

Commit a99d1a5

Browse files
committed
2087: Add kotlinx-parcelable; fix glide apps preloader
1 parent 083c5ee commit a99d1a5

File tree

6 files changed

+35
-45
lines changed

6 files changed

+35
-45
lines changed

app/build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
apply plugin: 'com.android.application'
22
apply plugin: 'kotlin-android'
33
apply plugin: 'kotlin-kapt'
4+
apply plugin: 'kotlin-android-extensions'
45
apply plugin: 'com.hiya.jacoco-android'
56

67
android {
@@ -59,6 +60,10 @@ android {
5960
viewBinding true
6061
}
6162

63+
androidExtensions {
64+
features = ["parcelize"]
65+
}
66+
6267
lintOptions {
6368
abortOnError false
6469
}

app/src/main/java/com/amaze/filemanager/adapters/AppsAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,9 @@ public View getView(final int position, View convertView, ViewGroup parent) {
139139
holder.txtDesc.setText(rowItem.openFileParcelable.getClassName());
140140
holder.txtDesc.setSingleLine(true);
141141
holder.txtDesc.setEllipsize(TextUtils.TruncateAt.MIDDLE);
142-
modelProvider.loadApkImage(rowItem.packageName, holder.apkIcon, true, themedActivity);
142+
modelProvider.loadApkImage(rowItem.packageName, holder.apkIcon);
143143
} else {
144-
modelProvider.loadApkImage(rowItem.path, holder.apkIcon, false, themedActivity);
144+
modelProvider.loadApkImage(rowItem.path, holder.apkIcon);
145145
}
146146

147147
if (holder.about != null && !isBottomSheet) {

app/src/main/java/com/amaze/filemanager/adapters/data/OpenFileParcelable.kt

Lines changed: 3 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -21,43 +21,14 @@
2121
package com.amaze.filemanager.adapters.data
2222

2323
import android.net.Uri
24-
import android.os.Parcel
2524
import android.os.Parcelable
25+
import kotlinx.android.parcel.Parcelize
2626

27+
@Parcelize
2728
class OpenFileParcelable(
2829
var uri: Uri?,
2930
var mimeType: String?,
3031
var useNewStack: Boolean?,
3132
var className: String?,
3233
var packageName: String?
33-
) : Parcelable {
34-
constructor(parcel: Parcel) : this(
35-
parcel.readParcelable(Uri::class.java.classLoader),
36-
parcel.readString(),
37-
parcel.readValue(Boolean::class.java.classLoader) as? Boolean,
38-
parcel.readString(),
39-
parcel.readString()
40-
)
41-
42-
override fun writeToParcel(parcel: Parcel, flags: Int) {
43-
parcel.writeParcelable(uri, flags)
44-
parcel.writeString(mimeType)
45-
parcel.writeValue(useNewStack)
46-
parcel.writeString(className)
47-
parcel.writeString(packageName)
48-
}
49-
50-
override fun describeContents(): Int {
51-
return 0
52-
}
53-
54-
companion object CREATOR : Parcelable.Creator<OpenFileParcelable> {
55-
override fun createFromParcel(parcel: Parcel): OpenFileParcelable {
56-
return OpenFileParcelable(parcel)
57-
}
58-
59-
override fun newArray(size: Int): Array<OpenFileParcelable?> {
60-
return arrayOfNulls(size)
61-
}
62-
}
63-
}
34+
) : Parcelable

app/src/main/java/com/amaze/filemanager/adapters/glide/AppsAdapterPreloadModel.java

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import com.amaze.filemanager.GlideApp;
2727
import com.amaze.filemanager.GlideRequest;
28+
import com.amaze.filemanager.R;
2829
import com.bumptech.glide.ListPreloader;
2930
import com.bumptech.glide.RequestBuilder;
3031

@@ -36,16 +37,21 @@
3637

3738
import androidx.annotation.NonNull;
3839
import androidx.annotation.Nullable;
40+
import androidx.core.content.ContextCompat;
3941
import androidx.fragment.app.Fragment;
4042

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

46+
private Context mContext;
4447
private GlideRequest<Drawable> request;
4548
private List<String> items;
49+
private boolean isBottomSheet;
4650

47-
public AppsAdapterPreloadModel(Fragment f) {
51+
public AppsAdapterPreloadModel(Fragment f, boolean isBottomSheet) {
4852
request = GlideApp.with(f).asDrawable().fitCenter();
53+
this.mContext = f.requireContext();
54+
this.isBottomSheet = isBottomSheet;
4955
}
5056

5157
public void setItemList(List<String> items) {
@@ -62,19 +68,27 @@ public List<String> getPreloadItems(int position) {
6268
@Nullable
6369
@Override
6470
public RequestBuilder getPreloadRequestBuilder(String item) {
65-
return request.clone().load(item);
71+
if (isBottomSheet) {
72+
return request.clone().load(getApplicationIconFromPackageName(item));
73+
} else {
74+
return request.clone().load(item);
75+
}
6676
}
6777

68-
public void loadApkImage(String item, ImageView v, boolean isBottomSheet, Context context) {
78+
public void loadApkImage(String item, ImageView v) {
6979
if (isBottomSheet) {
70-
try {
71-
request.load(context.getPackageManager().getApplicationIcon(item)).into(v);
72-
} catch (PackageManager.NameNotFoundException e) {
73-
Log.w(getClass().getSimpleName(), e);
74-
request.load("").into(v);
75-
}
80+
request.load(getApplicationIconFromPackageName(item)).into(v);
7681
} else {
7782
request.load(item).into(v);
7883
}
7984
}
85+
86+
private Drawable getApplicationIconFromPackageName(String packageName) {
87+
try {
88+
return mContext.getPackageManager().getApplicationIcon(packageName);
89+
} catch (PackageManager.NameNotFoundException e) {
90+
Log.w(getClass().getSimpleName(), e);
91+
return ContextCompat.getDrawable(mContext, R.drawable.ic_broken_image_white_24dp);
92+
}
93+
}
8094
}

app/src/main/java/com/amaze/filemanager/ui/dialogs/OpenFileDialogFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ class OpenFileDialogFragment : BaseBottomSheetFragment() {
279279
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
280280
super.onViewCreated(view, savedInstanceState)
281281

282-
val modelProvider = AppsAdapterPreloadModel(this)
282+
val modelProvider = AppsAdapterPreloadModel(this, true)
283283
val sizeProvider = ViewPreloadSizeProvider<String>()
284284
val preloader = ListPreloader(
285285
GlideApp.with(this), modelProvider, sizeProvider, GlideConstants.MAX_PRELOAD_APPSADAPTER

app/src/main/java/com/amaze/filemanager/ui/fragments/AppsListFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ else if (utilsProvider.getAppTheme().equals(AppTheme.BLACK))
9797
.getDecorView()
9898
.setBackgroundColor(Utils.getColor(getContext(), android.R.color.black));
9999

100-
modelProvider = new AppsAdapterPreloadModel(app);
100+
modelProvider = new AppsAdapterPreloadModel(app, false);
101101
ViewPreloadSizeProvider<String> sizeProvider = new ViewPreloadSizeProvider<>();
102102
ListPreloader<String> preloader =
103103
new ListPreloader<>(

0 commit comments

Comments
 (0)