Skip to content
This repository was archived by the owner on Jan 30, 2025. It is now read-only.

several UI improvements for dialogs, video messages, and the previewer activity #2583

Merged
merged 7 commits into from
Sep 17, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Features:

Improvements:
- Minor changes to toolbar style and other UI elements (#2529)
- Improvements to dialogs, video messages, and the previewer activity (#2583)

Other changes:
-
Expand Down
24 changes: 20 additions & 4 deletions vector/src/main/assets/open_source_licenses.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,32 @@
<head>
<style>
body {
font-family: sans-serif;
font-family: sans-serif;
}
pre {
background-color: #eeeeee;
padding: 1em;
white-space: pre-wrap;
background-color: #eeeeee;
padding: 1em;
white-space: pre-wrap;
word-wrap: break-word;
border-radius: 4px;
}
p {
text-align: center;
font-weight: bold;
font-size: 18px;
margin: 0;
padding: 0;
}
div {
padding: 4px;
}
</style>
</head>
<body>
<div>
<p>Riot Android</p>
<p>Third Party Licenses</p>
</div>
<ul>
<li>
<b>Pristine libjingle</b>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ public static void show(final HomeServerConnectionConfig hsConfig, final Fingerp

LayoutInflater inflater = activity.getLayoutInflater();

View layout = inflater.inflate(R.layout.ssl_fingerprint_prompt, null);
View layout = inflater.inflate(R.layout.dialog_ssl_fingerprint, null);

TextView sslFingerprintTitle = layout.findViewById(R.id.ssl_fingerprint_title);
sslFingerprintTitle.setText(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import android.app.AlarmManager;
import android.app.DownloadManager;
import android.app.PendingIntent;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
Expand Down Expand Up @@ -1421,7 +1420,7 @@ static public <T> void displayDeviceVerificationDialog(final MXDeviceInfo device
AlertDialog.Builder builder = new AlertDialog.Builder(activiy);
LayoutInflater inflater = activiy.getLayoutInflater();

View layout = inflater.inflate(R.layout.encrypted_verify_device, null);
View layout = inflater.inflate(R.layout.dialog_device_verify, null);

TextView textView;

Expand All @@ -1435,9 +1434,9 @@ static public <T> void displayDeviceVerificationDialog(final MXDeviceInfo device
textView.setText(MatrixSdkExtensionsKt.getFingerprintHumanReadable(deviceInfo));

builder
.setView(layout)
.setTitle(R.string.encryption_information_verify_device)
.setPositiveButton(R.string.encryption_information_verify_key_match, new DialogInterface.OnClickListener() {
.setView(layout)
.setPositiveButton(R.string.encryption_information_verify, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
session.getCrypto().setDeviceVerification(MXDeviceInfo.DEVICE_VERIFICATION_VERIFIED, deviceInfo.deviceId, sender, callback);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import android.widget.VideoView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;

import org.jetbrains.annotations.NotNull;
import org.matrix.androidsdk.data.RoomMediaMessage;
Expand Down Expand Up @@ -44,10 +45,14 @@ public class MediaPreviewerActivity extends MXCActionBarActivity implements Medi
ImageView mPreviewerImageView;
@BindView(R.id.media_previewer_video_view)
VideoView mPreviewerVideoView;
@BindView(R.id.media_previewer_video_thumbnail)
ImageView mPreviewerVideoThumbnail;
@BindView(R.id.media_previewer_list)
RecyclerView mPreviewerRecyclerView;
@BindView(R.id.media_previewer_file_name)
TextView mFileNameView;
@BindView(R.id.media_previewer_video_play)
ImageView mPlayCircleView;


@Override
Expand Down Expand Up @@ -80,6 +85,13 @@ public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
mPlayCircleView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
onVideoPreviewClicked();
return false;
}
});
configureToolbar();
final String roomTitle = getIntent().getExtras().getString(EXTRA_ROOM_TITLE);
getSupportActionBar().setTitle(roomTitle);
Expand Down Expand Up @@ -112,22 +124,32 @@ private void updatePreview(final RoomMediaMessage roomMediaMessage) {
mFileNameView.setText(roomMediaMessage.getFileName(this));
final String mimeType = roomMediaMessage.getMimeType(this);
final Uri uri = roomMediaMessage.getUri();

if (mimeType != null) {
if (mimeType.startsWith("image")) {
mPreviewerImageView.setVisibility(View.VISIBLE);
mPreviewerVideoView.setVisibility(View.GONE);
mPreviewerVideoThumbnail.setVisibility(View.GONE);
mPlayCircleView.setVisibility(View.GONE);
Glide.with(this)
.asBitmap()
.load(uri)
.apply(new RequestOptions().fitCenter())
.into(mPreviewerImageView);
} else if (mimeType.startsWith("video")) {
mPreviewerImageView.setVisibility(View.GONE);
mPreviewerVideoView.setVisibility(View.VISIBLE);
mPreviewerVideoView.setVisibility(View.GONE);
mPreviewerVideoThumbnail.setVisibility(View.VISIBLE);
mPlayCircleView.setVisibility(View.VISIBLE);
Glide.with(this)
.load(uri)
.apply(new RequestOptions().fitCenter().frame(0))
.into(mPreviewerVideoThumbnail);
mPreviewerVideoView.setVideoURI(uri);
mPreviewerVideoView.seekTo(0);
} else {
mPreviewerImageView.setVisibility(View.VISIBLE);
mPreviewerVideoView.setVisibility(View.GONE);
mPreviewerVideoThumbnail.setVisibility(View.GONE);
mPreviewerImageView.setImageResource(R.drawable.filetype_attachment);
}
}
Expand All @@ -154,8 +176,14 @@ private List<RoomMediaMessage> getSharedItems() {

private void onVideoPreviewClicked() {
if (!mPreviewerVideoView.isPlaying()) {
mPreviewerVideoView.setVisibility(View.VISIBLE);
mPreviewerVideoThumbnail.setVisibility(View.GONE);
mPlayCircleView.setVisibility(View.GONE);
mPreviewerVideoView.start();
} else {
mPreviewerVideoThumbnail.setVisibility(View.VISIBLE);
mPlayCircleView.setVisibility(View.VISIBLE);
mPreviewerVideoView.setVisibility(View.GONE);
mPreviewerVideoView.pause();
}
}
Expand Down
11 changes: 7 additions & 4 deletions vector/src/main/java/im/vector/activity/VectorHomeActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -1448,14 +1448,18 @@ public void onUnexpectedError(final Exception e) {
*/
private void joinARoom() {
LayoutInflater inflater = LayoutInflater.from(this);

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
View dialogView = inflater.inflate(R.layout.dialog_join_room_by_id, null);
alertDialogBuilder.setView(dialogView);

final EditText textInput = dialogView.findViewById(R.id.join_room_edit_text);
textInput.setTextColor(ThemeUtils.INSTANCE.getColor(this, R.attr.riot_primary_text_color));

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

// set dialog layout
alertDialogBuilder
.setTitle(R.string.room_recents_join_room_title)
.setView(dialogView);

// set dialog message
AlertDialog alertDialog = alertDialogBuilder
.setCancelable(false)
Expand Down Expand Up @@ -1514,7 +1518,6 @@ public void onUnexpectedError(final Exception e) {
.show();

final Button joinButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);

if (null != joinButton) {
joinButton.setEnabled(false);
textInput.addTextChangedListener(new TextWatcher() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,10 @@ public void onSuccess(String savedMediaPath) {
} else {
// else download it
final String downloadId = mediasCache.downloadMedia(this,
mSession.getHomeServerConfig(), mediaInfo.mMediaUrl, mediaInfo.mMimeType, mediaInfo.mEncryptedFileInfo);
mSession.getHomeServerConfig(),
mediaInfo.mMediaUrl,
mediaInfo.mMimeType,
mediaInfo.mEncryptedFileInfo);

if (null != downloadId) {
mediasCache.addDownloadListener(downloadId, new MXMediaDownloadListener() {
Expand Down
24 changes: 10 additions & 14 deletions vector/src/main/java/im/vector/activity/VectorRoomActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -3615,16 +3615,14 @@ private void onRoomTitleClick() {
}

LayoutInflater inflater = LayoutInflater.from(this);
View dialogView = inflater.inflate(R.layout.dialog_base_edit_text, null);

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder
.setTitle(R.string.room_info_room_name)
.setView(dialogView);

View dialogView = inflater.inflate(R.layout.dialog_text_edittext, null);
alertDialogBuilder.setView(dialogView);

TextView titleText = dialogView.findViewById(R.id.dialog_title);
titleText.setText(R.string.room_info_room_name);

final EditText textInput = dialogView.findViewById(R.id.dialog_edit_text);
final EditText textInput = dialogView.findViewById(R.id.edit_text);
textInput.setText(mRoom.getState().name);

// set dialog message
Expand Down Expand Up @@ -3682,16 +3680,14 @@ private void onRoomTopicClick() {
}

LayoutInflater inflater = LayoutInflater.from(this);
View dialogView = inflater.inflate(R.layout.dialog_base_edit_text, null);

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder
.setTitle(R.string.room_info_room_topic)
.setView(dialogView);

View dialogView = inflater.inflate(R.layout.dialog_text_edittext, null);
alertDialogBuilder.setView(dialogView);

TextView titleText = dialogView.findViewById(R.id.dialog_title);
titleText.setText(R.string.room_info_room_topic);

final EditText textInput = dialogView.findViewById(R.id.dialog_edit_text);
final EditText textInput = dialogView.findViewById(R.id.edit_text);
textInput.setText(mRoom.getState().topic);

// set dialog message
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,10 @@ public void onBindViewHolder(@NonNull MediaItemViewHolder holder, int position)
final Uri uri = roomMediaMessage.getUri();
if (mimeType != null) {
if (mimeType.startsWith("image") || mimeType.startsWith("video")) {
final RequestOptions options = new RequestOptions().frame(0);
Glide.with(context)
.asBitmap()
.load(uri)
.apply(options)
.apply(new RequestOptions().frame(0))
.into(holder.mImagePreview);
} else {
holder.mImagePreview.setImageResource(R.drawable.filetype_attachment);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ private void downloadVideo(final View view, final int position, boolean force) {
final VideoView videoView = view.findViewById(R.id.media_slider_video_view);
final ImageView thumbView = view.findViewById(R.id.media_slider_video_thumbnail);
final PieFractionView pieFractionView = view.findViewById(R.id.media_slider_pie_view);
final ImageView playCircleView = view.findViewById(R.id.media_slider_video_play);
final View downloadFailedView = view.findViewById(R.id.media_download_failed);

final SlidableMediaInfo mediaInfo = mMediasMessagesList.get(position);
Expand Down Expand Up @@ -249,20 +250,21 @@ public void onSuccess(File file) {

if (null != downloadId) {
pieFractionView.setVisibility(View.VISIBLE);
playCircleView.setVisibility(View.GONE);
pieFractionView.setFraction(mMediasCache.getProgressValueForDownloadId(downloadId));
pieFractionView.setTag(downloadId);

mMediasCache.addDownloadListener(downloadId, new MXMediaDownloadListener() {

@Override
public void onDownloadError(String downloadId, JsonElement jsonElement) {
MatrixError error = JsonUtils.toMatrixError(jsonElement);
pieFractionView.setVisibility(View.GONE);
downloadFailedView.setVisibility(View.VISIBLE);

MatrixError error = JsonUtils.toMatrixError(jsonElement);
if ((null != error) && error.isSupportedErrorCode()) {
Toast.makeText(mContext, error.getLocalizedMessage(), Toast.LENGTH_LONG).show();
}

downloadFailedView.setVisibility(View.VISIBLE);
}

@Override
Expand All @@ -276,9 +278,9 @@ public void onDownloadProgress(String aDownloadId, DownloadStats stats) {
public void onDownloadComplete(String aDownloadId) {
if (aDownloadId.equals(pieFractionView.getTag())) {
pieFractionView.setVisibility(View.GONE);

// check if the media has been downloaded
if (mMediasCache.isMediaCached(loadingUri, mediaInfo.mMimeType)) {
playCircleView.setVisibility(View.VISIBLE);
mMediasCache.createTmpDecryptedMediaFile(loadingUri, mediaInfo.mMimeType, mediaInfo.mEncryptedFileInfo,
new SimpleApiCallback<File>() {
@Override
Expand Down Expand Up @@ -345,14 +347,12 @@ private void downloadHighResImage(final View view, final int position) {
public void onDownloadError(String aDownloadId, JsonElement jsonElement) {
if (aDownloadId.equals(downloadId)) {
pieFractionView.setVisibility(View.GONE);
downloadFailedView.setVisibility(View.VISIBLE);

MatrixError error = JsonUtils.toMatrixError(jsonElement);

if (null != error) {
Toast.makeText(mContext, error.getLocalizedMessage(), Toast.LENGTH_LONG).show();
}

downloadFailedView.setVisibility(View.VISIBLE);
}
}

Expand All @@ -367,7 +367,6 @@ public void onDownloadProgress(String aDownloadId, DownloadStats stats) {
public void onDownloadComplete(String aDownloadId) {
if (aDownloadId.equals(downloadId)) {
pieFractionView.setVisibility(View.GONE);

if (mMediasCache.isMediaCached(loadingUri, imageInfo.mMimeType)) {
mMediasCache.createTmpDecryptedMediaFile(loadingUri, imageInfo.mMimeType, imageInfo.mEncryptedFileInfo,
new SimpleApiCallback<File>() {
Expand Down
35 changes: 11 additions & 24 deletions vector/src/main/java/im/vector/adapters/VectorMessagesAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -1430,43 +1430,30 @@ private View getImageVideoView(int type, final int position, View convertView, V
Event event = row.getEvent();
Message message = null;

int waterMarkResourceId = -1;

boolean videoContent = false;
if (type == ROW_TYPE_IMAGE) {

ImageMessage imageMessage = JsonUtils.toImageMessage(event.getContent());

if ("image/gif".equals(imageMessage.getMimeType())) {
waterMarkResourceId = R.drawable.filetype_gif;
if (imageMessage.getMimeType().equals("image/gif")) {
videoContent = true;
}
message = imageMessage;

} else if (type == ROW_TYPE_VIDEO) {

videoContent = true;
message = JsonUtils.toVideoMessage(event.getContent());
waterMarkResourceId = R.drawable.filetype_video;

} else if (type == ROW_TYPE_STICKER) {

StickerMessage stickerMessage = JsonUtils.toStickerMessage(event.getContent());
message = stickerMessage;
}

// display a type watermark
final ImageView imageTypeView = convertView.findViewById(R.id.messagesAdapter_image_type);

if (null == imageTypeView) {
// display a play icon for video content
final ImageView playCircleView = convertView.findViewById(R.id.messagesAdapter_play_circle);
if (null == playCircleView) {
Log.e(LOG_TAG, "getImageVideoView : invalid layout");
return convertView;
}

imageTypeView.setBackgroundColor(Color.TRANSPARENT);

if (waterMarkResourceId > 0) {
imageTypeView.setImageBitmap(BitmapFactory.decodeResource(getContext().getResources(), waterMarkResourceId));
imageTypeView.setVisibility(View.VISIBLE);
} else {
imageTypeView.setVisibility(View.GONE);
playCircleView.setVisibility(View.GONE);
if (videoContent) {
playCircleView.setVisibility(View.VISIBLE);
}

if (null != message) {
Expand Down Expand Up @@ -2193,7 +2180,7 @@ private void displayE2eIcon(View inflatedView, int position) {

int type = getItemViewType(position);

if ((type == ROW_TYPE_IMAGE) || (type == ROW_TYPE_VIDEO)) {
if ((type == ROW_TYPE_IMAGE) || (type == ROW_TYPE_VIDEO) || (type == ROW_TYPE_STICKER)) {
View bodyLayoutView = inflatedView.findViewById(R.id.messagesAdapter_body_layout);
ViewGroup.MarginLayoutParams bodyLayout = (ViewGroup.MarginLayoutParams) bodyLayoutView.getLayoutParams();
ViewGroup.MarginLayoutParams e2eIconViewLayout = (ViewGroup.MarginLayoutParams) e2eIconView.getLayoutParams();
Expand Down
Loading