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_List_view_description">List view</string>
|
||||||
<string name="MediaOverviewActivity_Selected_description">Selected</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_file">File</string>
|
||||||
<string name="MediaOverviewActivity_audio">Audio</string>
|
<string name="MediaOverviewActivity_audio">Audio</string>
|
||||||
<string name="MediaOverviewActivity_video">Video</string>
|
<string name="MediaOverviewActivity_video">Video</string>
|
||||||
|
@ -27,6 +27,8 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.lifecycle.Observer;
|
import androidx.lifecycle.Observer;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
|
import com.annimon.stream.Collectors;
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
import com.codewaves.stickyheadergrid.StickyHeaderGridAdapter;
|
import com.codewaves.stickyheadergrid.StickyHeaderGridAdapter;
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.R;
|
import org.thoughtcrime.securesms.R;
|
||||||
@ -187,6 +189,12 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
|
|||||||
return selected.size();
|
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
|
@NonNull
|
||||||
public Collection<MediaRecord> getSelectedMedia() {
|
public Collection<MediaRecord> getSelectedMedia() {
|
||||||
return new HashSet<>(selected.values());
|
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.GlideApp;
|
||||||
import org.thoughtcrime.securesms.mms.PartAuthority;
|
import org.thoughtcrime.securesms.mms.PartAuthority;
|
||||||
import org.thoughtcrime.securesms.util.MediaUtil;
|
import org.thoughtcrime.securesms.util.MediaUtil;
|
||||||
|
import org.thoughtcrime.securesms.util.Util;
|
||||||
|
|
||||||
public final class MediaOverviewPageFragment extends Fragment
|
public final class MediaOverviewPageFragment extends Fragment
|
||||||
implements MediaGalleryAllAdapter.ItemClickListener,
|
implements MediaGalleryAllAdapter.ItemClickListener,
|
||||||
@ -117,6 +118,7 @@ public final class MediaOverviewPageFragment extends Fragment
|
|||||||
this.sorting = sorting;
|
this.sorting = sorting;
|
||||||
adapter.setShowFileSizes(sorting.isRelatedToFileSize());
|
adapter.setShowFileSizes(sorting.isRelatedToFileSize());
|
||||||
LoaderManager.getInstance(this).restartLoader(0, null, this);
|
LoaderManager.getInstance(this).restartLoader(0, null, this);
|
||||||
|
refreshActionModeTitle();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -134,6 +136,7 @@ public final class MediaOverviewPageFragment extends Fragment
|
|||||||
this.detail = detail;
|
this.detail = detail;
|
||||||
adapter.setDetailView(detail);
|
adapter.setDetailView(detail);
|
||||||
refreshLayoutManager();
|
refreshLayoutManager();
|
||||||
|
refreshActionModeTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -202,7 +205,7 @@ public final class MediaOverviewPageFragment extends Fragment
|
|||||||
if (adapter.getSelectedMediaCount() == 0) {
|
if (adapter.getSelectedMediaCount() == 0) {
|
||||||
actionMode.finish();
|
actionMode.finish();
|
||||||
} else {
|
} else {
|
||||||
actionMode.setTitle(String.valueOf(adapter.getSelectedMediaCount()));
|
refreshActionModeTitle();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,7 +266,33 @@ public final class MediaOverviewPageFragment extends Fragment
|
|||||||
|
|
||||||
private void handleSelectAllMedia() {
|
private void handleSelectAllMedia() {
|
||||||
getListAdapter().selectAllMedia();
|
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() {
|
private MediaGalleryAllAdapter getListAdapter() {
|
||||||
@ -283,7 +312,7 @@ public final class MediaOverviewPageFragment extends Fragment
|
|||||||
@Override
|
@Override
|
||||||
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
|
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
|
||||||
mode.getMenuInflater().inflate(R.menu.media_overview_context, menu);
|
mode.getMenuInflater().inflate(R.menu.media_overview_context, menu);
|
||||||
mode.setTitle("1");
|
refreshActionModeTitle();
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
Window window = requireActivity().getWindow();
|
Window window = requireActivity().getWindow();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user