Repo shows assets size and download time (#2202)
This commit is contained in:
parent
abe143e9cc
commit
466e5537a9
|
|
@ -36,6 +36,12 @@ public class ReleaseAsset {
|
|||
@SerializedName("downloadUrl")
|
||||
@Expose
|
||||
private String downloadUrl;
|
||||
@SerializedName("downloadCount")
|
||||
@Expose
|
||||
private int downloadCount = 0;
|
||||
@SerializedName("size")
|
||||
@Expose
|
||||
private int size = 0;
|
||||
|
||||
@Nullable
|
||||
public String getName() {
|
||||
|
|
@ -63,4 +69,20 @@ public class ReleaseAsset {
|
|||
public void setDownloadUrl(String downloadUrl) {
|
||||
this.downloadUrl = downloadUrl;
|
||||
}
|
||||
|
||||
public int getDownloadCount() {
|
||||
return downloadCount;
|
||||
}
|
||||
|
||||
public void setDownloadCount(int downloadCount) {
|
||||
this.downloadCount = downloadCount;
|
||||
}
|
||||
|
||||
public int getSize() {
|
||||
return size;
|
||||
}
|
||||
|
||||
public void setSize(int size) {
|
||||
this.size = size;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
package org.lsposed.manager.ui.fragment;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
|
|
@ -27,7 +28,10 @@ import android.os.Bundle;
|
|||
import android.text.Spannable;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.TextUtils;
|
||||
import android.text.format.Formatter;
|
||||
import android.text.style.ClickableSpan;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.text.style.RelativeSizeSpan;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
|
|
@ -38,6 +42,7 @@ import android.webkit.WebResourceResponse;
|
|||
import android.webkit.WebSettings;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ScrollView;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
|
@ -347,16 +352,30 @@ public class RepoItemFragment extends BaseFragment implements RepoLoader.RepoLis
|
|||
return new BlurBehindDialogBuilder(requireActivity(), R.style.ThemeOverlay_MaterialAlertDialog_Centered_FullWidthButtons)
|
||||
.setTitle(R.string.module_release_view_assets)
|
||||
.setPositiveButton(android.R.string.cancel, null)
|
||||
.setItems(args.getCharSequenceArray("names"),
|
||||
.setAdapter(new ArrayAdapter<>(requireActivity(), R.layout.dialog_item, args.getCharSequenceArray("names")),
|
||||
(dialog, which) -> NavUtil.startURL(requireActivity(), args.getStringArrayList("urls").get(which)))
|
||||
.create();
|
||||
}
|
||||
|
||||
static void create(FragmentManager fm, String[] names, ArrayList<String> urls) {
|
||||
static void create(Activity activity, FragmentManager fm, List<ReleaseAsset> assets) {
|
||||
var f = new DownloadDialog();
|
||||
var bundle = new Bundle();
|
||||
bundle.putStringArray("names", names);
|
||||
bundle.putStringArrayList("urls", urls);
|
||||
|
||||
var displayNames = new CharSequence[assets.size()];
|
||||
for (int i = 0; i < assets.size(); i++) {
|
||||
var sb = new SpannableStringBuilder(assets.get(i).getName());
|
||||
var count = assets.get(i).getDownloadCount();
|
||||
var countStr = activity.getResources().getQuantityString(R.plurals.module_release_assets_download_count, count, count);
|
||||
var sizeStr = Formatter.formatShortFileSize(activity, assets.get(i).getSize());
|
||||
sb.append('\n').append(sizeStr).append('/').append(countStr);
|
||||
final ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(ResourceUtils.resolveColor(activity.getTheme(), android.R.attr.textColorSecondary));
|
||||
final RelativeSizeSpan relativeSizeSpan = new RelativeSizeSpan(0.8f);
|
||||
sb.setSpan(foregroundColorSpan, sb.length() - sizeStr.length() - countStr.length() - 1, sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
sb.setSpan(relativeSizeSpan, sb.length() - sizeStr.length() - countStr.length() - 1, sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
displayNames[i] = sb;
|
||||
}
|
||||
bundle.putCharSequenceArray("names", displayNames);
|
||||
bundle.putStringArrayList("urls", assets.stream().map(ReleaseAsset::getDownloadUrl).collect(Collectors.toCollection(ArrayList::new)));
|
||||
f.setArguments(bundle);
|
||||
f.show(fm, "download");
|
||||
}
|
||||
|
|
@ -429,9 +448,7 @@ public class RepoItemFragment extends BaseFragment implements RepoLoader.RepoLis
|
|||
List<ReleaseAsset> assets = release.getReleaseAssets();
|
||||
if (assets != null && !assets.isEmpty()) {
|
||||
holder.viewAssets.setOnClickListener(v -> {
|
||||
ArrayList<String> names = new ArrayList<>();
|
||||
assets.forEach(releaseAsset -> names.add(releaseAsset.getName()));
|
||||
DownloadDialog.create(getChildFragmentManager(), names.toArray(new String[0]), assets.stream().map(ReleaseAsset::getDownloadUrl).collect(Collectors.toCollection(ArrayList::new)));
|
||||
DownloadDialog.create(requireActivity(), getParentFragmentManager(), assets);
|
||||
});
|
||||
} else {
|
||||
holder.viewAssets.setVisibility(View.GONE);
|
||||
|
|
|
|||
|
|
@ -16,22 +16,12 @@
|
|||
~
|
||||
~ Copyright (C) 2021 LSPosed Contributors
|
||||
-->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
<com.google.android.material.textview.MaterialTextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/item"
|
||||
style="@style/TextAppearance.MaterialComponents.Body2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
style="@style/DeviceInfoDialogLabel"
|
||||
android:id="@+id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
style="@style/DeviceInfoDialogValue"
|
||||
android:id="@+id/value"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingBottom="0dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="?attr/listPreferredItemHeight"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="?attr/listPreferredItemPaddingStart"
|
||||
android:paddingEnd="?attr/listPreferredItemPaddingEnd" />
|
||||
|
|
|
|||
|
|
@ -243,4 +243,8 @@
|
|||
<string name="color_deep_orange">Deep orange</string>
|
||||
<string name="color_brown">Brown</string>
|
||||
<string name="color_blue_grey">Blue grey</string>
|
||||
<plurals name="module_release_assets_download_count">
|
||||
<item quantity="one">%d download</item>
|
||||
<item quantity="other">%d downloads</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
|
|
|||
Loading…
Reference in New Issue