diff --git a/res/layout/profile_document_item.xml b/res/layout/profile_document_item.xml
index 7944f9ab3..37ccdc695 100644
--- a/res/layout/profile_document_item.xml
+++ b/res/layout/profile_document_item.xml
@@ -1,6 +1,7 @@
diff --git a/src/org/thoughtcrime/securesms/ProfileDocumentsAdapter.java b/src/org/thoughtcrime/securesms/ProfileDocumentsAdapter.java
index 052cdb0f8..7107638fa 100644
--- a/src/org/thoughtcrime/securesms/ProfileDocumentsAdapter.java
+++ b/src/org/thoughtcrime/securesms/ProfileDocumentsAdapter.java
@@ -40,12 +40,14 @@ class ProfileDocumentsAdapter extends StickyHeaderGridAdapter {
private BucketedThreadMedia media;
private static class ViewHolder extends StickyHeaderGridAdapter.ItemViewHolder {
+ private final View rowView;
private final DocumentView documentView;
private final AudioView audioView;
private final TextView date;
public ViewHolder(View v) {
super(v);
+ rowView = v;
documentView = v.findViewById(R.id.document_view);
audioView = v.findViewById(R.id.audio_view);
date = v.findViewById(R.id.date);
@@ -103,14 +105,14 @@ class ProfileDocumentsAdapter extends StickyHeaderGridAdapter {
viewHolder.audioView.setVisibility(View.VISIBLE);
viewHolder.audioView.setAudio((AudioSlide)slide, dcMsg.getDuration());
+ viewHolder.audioView.setOnLongClickListener(view -> { itemClickListener.onMediaLongClicked(dcMsg); return true; });
}
else if (slide != null && slide.hasDocument()) {
viewHolder.documentView.setVisibility(View.VISIBLE);
viewHolder.documentView.setDocument((DocumentSlide)slide);
- viewHolder.documentView.setOnClickListener(view -> {
- ApplicationDcContext dcContext = DcHelper.getContext(context);
- dcContext.openForViewOrShare(dcMsg.getId(), Intent.ACTION_VIEW);
- });
+ viewHolder.documentView.setOnClickListener(view -> itemClickListener.onMediaClicked(dcMsg));
+ viewHolder.documentView.setOnLongClickListener(view -> { itemClickListener.onMediaLongClicked(dcMsg); return true; });
+ viewHolder.rowView.setOnClickListener(view -> itemClickListener.onMediaClicked(dcMsg));
viewHolder.audioView.setVisibility(View.GONE);
}
@@ -119,6 +121,9 @@ class ProfileDocumentsAdapter extends StickyHeaderGridAdapter {
viewHolder.audioView.setVisibility(View.GONE);
}
+ viewHolder.rowView.setOnLongClickListener(view -> { itemClickListener.onMediaLongClicked(dcMsg); return true; });
+ viewHolder.rowView.setSelected(selected.contains(dcMsg));
+
viewHolder.date.setText(DateUtils.getBriefRelativeTimeSpanString(context, locale, dcMsg.getTimestamp()));
}
@@ -158,94 +163,3 @@ class ProfileDocumentsAdapter extends StickyHeaderGridAdapter {
void onMediaLongClicked(DcMsg mediaRecord);
}
}
-
-/*
-public class ProfileDocumentsAdapter extends CursorRecyclerViewAdapter implements StickyHeaderDecoration.StickyHeaderAdapter {
-
- private final Calendar calendar;
- private final Locale locale;
-
- ProfileDocumentsAdapter(Context context, Cursor cursor, Locale locale) {
- super(context, cursor);
-
- this.calendar = Calendar.getInstance();
- this.locale = locale;
- }
-
- @Override
- public ViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
- return new ViewHolder(LayoutInflater.from(getContext()).inflate(R.layout.profile_document_item, parent, false));
- }
-
- @Override
- public void onBindItemViewHolder(ViewHolder viewHolder, @NonNull Cursor cursor) {
- MediaDatabase.MediaRecord mediaRecord = MediaDatabase.MediaRecord.from(getContext(), cursor);
- Slide slide = MediaUtil.getSlideForAttachment(getContext(), mediaRecord.getAttachment());
-
- if (slide != null && slide.hasDocument()) {
- viewHolder.documentView.setDocument((DocumentSlide)slide);
- viewHolder.date.setText(DateUtils.getRelativeDate(getContext(), locale, mediaRecord.getDate()));
- viewHolder.documentView.setVisibility(View.VISIBLE);
- viewHolder.date.setVisibility(View.VISIBLE);
- viewHolder.documentView.setOnClickListener(view -> {
- int msgId = slide.getDcMsgId();
- ApplicationDcContext dcContext = DcHelper.getContext(getContext());
- dcContext.openForViewOrShare(msgId, Intent.ACTION_VIEW);
- });
- } else {
- viewHolder.documentView.setVisibility(View.GONE);
- viewHolder.date.setVisibility(View.GONE);
- }
- }
-
- @Override
- public long getHeaderId(int position) {
- if (!isActiveCursor()) return -1;
- if (isHeaderPosition(position)) return -1;
- if (isFooterPosition(position)) return -1;
- if (position >= getItemCount()) return -1;
- if (position < 0) return -1;
-
- Cursor cursor = getCursorAtPositionOrThrow(position);
- MediaDatabase.MediaRecord mediaRecord = MediaDatabase.MediaRecord.from(getContext(), cursor);
-
- calendar.setTime(new Date(mediaRecord.getDate()));
- return Util.hashCode(calendar.get(Calendar.YEAR), calendar.get(Calendar.DAY_OF_YEAR));
- }
-
- @Override
- public HeaderViewHolder onCreateHeaderViewHolder(ViewGroup parent) {
- return new HeaderViewHolder(LayoutInflater.from(getContext()).inflate(R.layout.profile_document_item_header, parent, false));
- }
-
- @Override
- public void onBindHeaderViewHolder(HeaderViewHolder viewHolder, int position) {
- Cursor cursor = getCursorAtPositionOrThrow(position);
- MediaDatabase.MediaRecord mediaRecord = MediaDatabase.MediaRecord.from(getContext(), cursor);
- viewHolder.textView.setText(DateUtils.getRelativeDate(getContext(), locale, mediaRecord.getDate()));
- }
-
- public static class ViewHolder extends RecyclerView.ViewHolder {
-
- private final DocumentView documentView;
- private final TextView date;
-
- public ViewHolder(View itemView) {
- super(itemView);
- this.documentView = itemView.findViewById(R.id.document_view);
- this.date = itemView.findViewById(R.id.date);
- }
- }
-
- static class HeaderViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView textView;
-
- HeaderViewHolder(View itemView) {
- super(itemView);
- this.textView = itemView.findViewById(R.id.text);
- }
- }
-
-}
-*/
\ No newline at end of file
diff --git a/src/org/thoughtcrime/securesms/ProfileDocumentsFragment.java b/src/org/thoughtcrime/securesms/ProfileDocumentsFragment.java
index be86d0a80..1414c233b 100644
--- a/src/org/thoughtcrime/securesms/ProfileDocumentsFragment.java
+++ b/src/org/thoughtcrime/securesms/ProfileDocumentsFragment.java
@@ -14,7 +14,6 @@ import android.support.v4.content.Loader;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.view.ActionMode;
-import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -28,10 +27,9 @@ import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcMsg;
import com.codewaves.stickyheadergrid.StickyHeaderGridLayoutManager;
+import org.thoughtcrime.securesms.connect.ApplicationDcContext;
import org.thoughtcrime.securesms.connect.DcHelper;
-import org.thoughtcrime.securesms.database.Address;
import org.thoughtcrime.securesms.database.loaders.BucketedThreadMediaLoader;
-import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.util.ViewUtil;
import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask;
@@ -131,8 +129,9 @@ public class ProfileDocumentsFragment
}
}
- private void handleMediaPreviewClick(@NonNull DcMsg mediaRecord) {
- if (mediaRecord.getFile() == null) {
+ private void handleMediaPreviewClick(@NonNull DcMsg dcMsg) {
+ // audio is stated by the play-button
+ if (dcMsg.getType()==DcMsg.DC_MSG_AUDIO || dcMsg.getType()==DcMsg.DC_MSG_VOICE) {
return;
}
@@ -141,12 +140,8 @@ public class ProfileDocumentsFragment
return;
}
- Intent intent = new Intent(context, MediaPreviewActivity.class);
- intent.putExtra(MediaPreviewActivity.DC_MSG_ID, mediaRecord.getId());
- intent.putExtra(MediaPreviewActivity.ADDRESS_EXTRA, Address.fromChat(chatId));
- intent.putExtra(MediaPreviewActivity.OUTGOING_EXTRA, mediaRecord.isOutgoing());
- intent.putExtra(MediaPreviewActivity.LEFT_IS_RECENT_EXTRA, false);
- context.startActivity(intent);
+ ApplicationDcContext dcContext = DcHelper.getContext(context);
+ dcContext.openForViewOrShare(dcMsg.getId(), Intent.ACTION_VIEW);
}
@Override
@@ -243,69 +238,3 @@ public class ProfileDocumentsFragment
}
}
}
-
-
-/*
-public class ProfileDocumentsFragment extends Fragment implements LoaderManager.LoaderCallbacks {
-
- public static final String LOCALE_EXTRA = "locale_extra";
- public static final String ADDRESS_EXTRA = "address";
-
- protected RecyclerView recyclerView;
- protected TextView noMedia;
-
- protected Recipient recipient;
- protected Locale locale;
-
- @Override
- public void onCreate(Bundle bundle) {
- super.onCreate(bundle);
-
- Locale locale = (Locale)getArguments().getSerializable(LOCALE_EXTRA);
- if (locale == null) throw new AssertionError();
- this.locale = locale;
-
- String address = getArguments().getString(ADDRESS_EXTRA);
- if (address == null) throw new AssertionError();
- this.recipient = Recipient.from(getContext(), Address.fromSerialized(address));
-
- getLoaderManager().initLoader(0, null, this);
- }
-
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.profile_documents_fragment, container, false);
- ProfileDocumentsAdapter adapter = new ProfileDocumentsAdapter(getContext(), null, locale);
-
- this.recyclerView = ViewUtil.findById(view, R.id.recycler_view);
- this.noMedia = ViewUtil.findById(view, R.id.no_documents);
-
- this.recyclerView.setAdapter(adapter);
- this.recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
- this.recyclerView.addItemDecoration(new StickyHeaderDecoration(adapter, false, true));
- this.recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));
-
- return view;
- }
-
- @Override
- public Loader onCreateLoader(int id, Bundle args) {
- return new ThreadMediaLoader(getContext(), recipient.getAddress(), false);
- }
-
- @Override
- public void onLoadFinished(Loader loader, Cursor data) {
- //((CursorRecyclerViewAdapter)this.recyclerView.getAdapter()).changeCursor(data);
- getActivity().invalidateOptionsMenu();
-
- // TODO: onLoadFinished() should no take a cursor but forward the loaded messages in a way
- this.noMedia.setVisibility(data.getCount() > 0 ? View.GONE : View.VISIBLE);
- }
-
- @Override
- public void onLoaderReset(Loader loader) {
- ((CursorRecyclerViewAdapter)this.recyclerView.getAdapter()).changeCursor(null);
- getActivity().invalidateOptionsMenu();
- }
-}
-*/
\ No newline at end of file