mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-09 10:58:34 +00:00
Show total file size of selected items when appropriate.
This commit is contained in:
parent
006343460e
commit
acfba9ac96
@ -506,6 +506,14 @@
|
||||
<string name="MediaOverviewActivity_List_view_description">List view</string>
|
||||
<string name="MediaOverviewActivity_Selected_description">Selected</string>
|
||||
|
||||
<plurals name="MediaOverviewActivity_d_items_s">
|
||||
<item quantity="one">%1$d item %2$s</item>
|
||||
<item quantity="other">%1$d items %2$s</item>
|
||||
</plurals>
|
||||
<plurals name="MediaOverviewActivity_d_items">
|
||||
<item quantity="one">%1$d item</item>
|
||||
<item quantity="other">%1$d items</item>
|
||||
</plurals>
|
||||
<string name="MediaOverviewActivity_file">File</string>
|
||||
<string name="MediaOverviewActivity_audio">Audio</string>
|
||||
<string name="MediaOverviewActivity_video">Video</string>
|
||||
|
@ -27,6 +27,8 @@ import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.annimon.stream.Collectors;
|
||||
import com.annimon.stream.Stream;
|
||||
import com.codewaves.stickyheadergrid.StickyHeaderGridAdapter;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
@ -187,6 +189,12 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
|
||||
return selected.size();
|
||||
}
|
||||
|
||||
public long getSelectedMediaTotalFileSize() {
|
||||
//noinspection ConstantConditions attacment cannot be null if selected
|
||||
return Stream.of(selected.values())
|
||||
.collect(Collectors.summingLong(a -> a.getAttachment().getSize()));
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public Collection<MediaRecord> getSelectedMedia() {
|
||||
return new HashSet<>(selected.values());
|
||||
|
@ -37,6 +37,7 @@ import org.thoughtcrime.securesms.logging.Log;
|
||||
import org.thoughtcrime.securesms.mms.GlideApp;
|
||||
import org.thoughtcrime.securesms.mms.PartAuthority;
|
||||
import org.thoughtcrime.securesms.util.MediaUtil;
|
||||
import org.thoughtcrime.securesms.util.Util;
|
||||
|
||||
public final class MediaOverviewPageFragment extends Fragment
|
||||
implements MediaGalleryAllAdapter.ItemClickListener,
|
||||
@ -117,6 +118,7 @@ public final class MediaOverviewPageFragment extends Fragment
|
||||
this.sorting = sorting;
|
||||
adapter.setShowFileSizes(sorting.isRelatedToFileSize());
|
||||
LoaderManager.getInstance(this).restartLoader(0, null, this);
|
||||
refreshActionModeTitle();
|
||||
}
|
||||
});
|
||||
|
||||
@ -134,6 +136,7 @@ public final class MediaOverviewPageFragment extends Fragment
|
||||
this.detail = detail;
|
||||
adapter.setDetailView(detail);
|
||||
refreshLayoutManager();
|
||||
refreshActionModeTitle();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -202,7 +205,7 @@ public final class MediaOverviewPageFragment extends Fragment
|
||||
if (adapter.getSelectedMediaCount() == 0) {
|
||||
actionMode.finish();
|
||||
} else {
|
||||
actionMode.setTitle(String.valueOf(adapter.getSelectedMediaCount()));
|
||||
refreshActionModeTitle();
|
||||
}
|
||||
}
|
||||
|
||||
@ -263,7 +266,33 @@ public final class MediaOverviewPageFragment extends Fragment
|
||||
|
||||
private void handleSelectAllMedia() {
|
||||
getListAdapter().selectAllMedia();
|
||||
actionMode.setTitle(String.valueOf(getListAdapter().getSelectedMediaCount()));
|
||||
refreshActionModeTitle();
|
||||
}
|
||||
|
||||
private void refreshActionModeTitle() {
|
||||
if (actionMode != null) {
|
||||
actionMode.setTitle(getActionModeTitle());
|
||||
}
|
||||
}
|
||||
|
||||
private String getActionModeTitle() {
|
||||
MediaGalleryAllAdapter adapter = getListAdapter();
|
||||
int mediaCount = adapter.getSelectedMediaCount();
|
||||
boolean showTotalFileSize = detail ||
|
||||
mediaType != MediaLoader.MediaType.GALLERY ||
|
||||
sorting == MediaDatabase.Sorting.Largest;
|
||||
|
||||
if (showTotalFileSize) {
|
||||
long totalFileSize = adapter.getSelectedMediaTotalFileSize();
|
||||
return getResources().getQuantityString(R.plurals.MediaOverviewActivity_d_items_s,
|
||||
mediaCount,
|
||||
mediaCount,
|
||||
Util.getPrettyFileSize(totalFileSize));
|
||||
} else {
|
||||
return getResources().getQuantityString(R.plurals.MediaOverviewActivity_d_items,
|
||||
mediaCount,
|
||||
mediaCount);
|
||||
}
|
||||
}
|
||||
|
||||
private MediaGalleryAllAdapter getListAdapter() {
|
||||
@ -283,7 +312,7 @@ public final class MediaOverviewPageFragment extends Fragment
|
||||
@Override
|
||||
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
|
||||
mode.getMenuInflater().inflate(R.menu.media_overview_context, menu);
|
||||
mode.setTitle("1");
|
||||
refreshActionModeTitle();
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
Window window = requireActivity().getWindow();
|
||||
|
Loading…
x
Reference in New Issue
Block a user