fixed image/video viewer. status preference fix
This commit is contained in:
parent
82c2cbe67a
commit
71cc5d833c
|
@ -44,52 +44,16 @@ import java.io.Serializable;
|
||||||
*/
|
*/
|
||||||
public class ImageViewer extends MediaActivity implements AsyncCallback<ImageLoaderResult>, DescriptionCallback {
|
public class ImageViewer extends MediaActivity implements AsyncCallback<ImageLoaderResult>, DescriptionCallback {
|
||||||
|
|
||||||
/**
|
|
||||||
* mode used to show local image/gif file
|
|
||||||
* requires {@link #KEY_MEDIA_LOCAL} to be set
|
|
||||||
*/
|
|
||||||
public static final int MEDIA_LOCAL = 902;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* mode used to show online image
|
|
||||||
* requires {@link #KEY_MEDIA_URL} to be set
|
|
||||||
*/
|
|
||||||
public static final int IMAGE_ONLINE = 903;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* mode used to show online image
|
|
||||||
* requires {@link #KEY_MEDIA_ONLINE} to be set
|
|
||||||
*/
|
|
||||||
public static final int MEDIA_ONLINE = 904;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* activity result code indicates that {@link MediaStatus} data has been updated
|
* activity result code indicates that {@link MediaStatus} data has been updated
|
||||||
*/
|
*/
|
||||||
public static final int RETURN_MEDIA_STATUS_UPDATE = 0x5895;
|
public static final int RETURN_MEDIA_STATUS_UPDATE = 0x5895;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* key to set image format (image or gif)
|
* key to add media data (online or local)
|
||||||
* value type is Integer {@link #IMAGE_ONLINE,#GIF_LOCAL,#MEDIA_LOCAL}
|
* value type can be {@link Media} for online media, {@link MediaStatus} for local media or {@link Uri} for media links
|
||||||
*/
|
*/
|
||||||
public static final String TYPE = "image-type";
|
public static final String KEY_IMAGE_DATA = "image-data";
|
||||||
|
|
||||||
/**
|
|
||||||
* key to add URI of the image (online or local)
|
|
||||||
* value type is {@link Uri}
|
|
||||||
*/
|
|
||||||
public static final String KEY_MEDIA_URL = "image-url";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* key to add offline media
|
|
||||||
* value type is {@link MediaStatus}
|
|
||||||
*/
|
|
||||||
public static final String KEY_MEDIA_LOCAL = "media-status";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* key to add online media
|
|
||||||
* value type is {@link Media}
|
|
||||||
*/
|
|
||||||
public static final String KEY_MEDIA_ONLINE = "media-online";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* name of the cache folder where online images will be stored
|
* name of the cache folder where online images will be stored
|
||||||
|
@ -111,7 +75,6 @@ public class ImageViewer extends MediaActivity implements AsyncCallback<ImageLoa
|
||||||
private ImageDownloader imageAsync;
|
private ImageDownloader imageAsync;
|
||||||
private GlobalSettings settings;
|
private GlobalSettings settings;
|
||||||
private File cacheFolder;
|
private File cacheFolder;
|
||||||
private int mode = 0;
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -141,58 +104,66 @@ public class ImageViewer extends MediaActivity implements AsyncCallback<ImageLoa
|
||||||
cacheFolder = new File(getExternalCacheDir(), ImageViewer.CACHE_FOLDER);
|
cacheFolder = new File(getExternalCacheDir(), ImageViewer.CACHE_FOLDER);
|
||||||
cacheFolder.mkdirs();
|
cacheFolder.mkdirs();
|
||||||
|
|
||||||
mode = getIntent().getIntExtra(TYPE, 0);
|
// get parameters
|
||||||
switch (mode) {
|
String imageUrl = null;
|
||||||
case IMAGE_ONLINE:
|
String blurHash = null;
|
||||||
zoomImage.setVisibility(View.VISIBLE);
|
String description = null;
|
||||||
|
boolean animated = false;
|
||||||
|
boolean local = false;
|
||||||
|
Serializable serializedData;
|
||||||
|
if (savedInstanceState != null) {
|
||||||
|
serializedData = savedInstanceState.getSerializable(KEY_IMAGE_DATA);
|
||||||
|
} else {
|
||||||
|
serializedData = getIntent().getSerializableExtra(KEY_IMAGE_DATA);
|
||||||
|
}
|
||||||
|
if (serializedData instanceof MediaStatus) {
|
||||||
|
mediaStatus = (MediaStatus) serializedData;
|
||||||
|
imageUrl = mediaStatus.getPath();
|
||||||
|
animated = mediaStatus.getMediaType() == MediaStatus.GIF;
|
||||||
|
local = imageUrl != null && !imageUrl.startsWith("http");
|
||||||
|
description = mediaStatus.getDescription();
|
||||||
|
} else if (serializedData instanceof Media) {
|
||||||
|
Media media = (Media) serializedData;
|
||||||
|
blurHash = media.getBlurHash();
|
||||||
|
imageUrl = media.getUrl();
|
||||||
|
description = media.getDescription();
|
||||||
|
animated = media.getMediaType() == Media.GIF;
|
||||||
|
} else if (serializedData instanceof String) {
|
||||||
|
imageUrl = (String) serializedData;
|
||||||
|
} else {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
// setup image view
|
||||||
|
if (imageUrl != null && !imageUrl.trim().isEmpty()) {
|
||||||
|
// select view to show image
|
||||||
|
if (animated) {
|
||||||
|
gifImage.setVisibility(View.VISIBLE);
|
||||||
|
zoomImage.setVisibility(View.INVISIBLE);
|
||||||
|
} else {
|
||||||
gifImage.setVisibility(View.INVISIBLE);
|
gifImage.setVisibility(View.INVISIBLE);
|
||||||
|
zoomImage.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
// load image
|
||||||
|
if (local) {
|
||||||
|
if (animated) {
|
||||||
|
gifImage.setImageURI(Uri.parse(imageUrl));
|
||||||
|
} else {
|
||||||
|
zoomImage.setImageURI(Uri.parse(imageUrl));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
loadingCircle.setVisibility(View.VISIBLE);
|
loadingCircle.setVisibility(View.VISIBLE);
|
||||||
Uri data = getIntent().getParcelableExtra(KEY_MEDIA_URL);
|
ImageLoaderParam request = new ImageLoaderParam(Uri.parse(imageUrl), cacheFolder);
|
||||||
ImageLoaderParam request = new ImageLoaderParam(data, cacheFolder);
|
|
||||||
imageAsync.execute(request, this);
|
imageAsync.execute(request, this);
|
||||||
break;
|
}
|
||||||
|
}
|
||||||
case MEDIA_LOCAL:
|
// set image description
|
||||||
Serializable serializedData = getIntent().getSerializableExtra(KEY_MEDIA_LOCAL);
|
if (description != null && !description.trim().isEmpty()) {
|
||||||
if (serializedData instanceof MediaStatus) {
|
descriptionView.setDescription(description);
|
||||||
mediaStatus = (MediaStatus) serializedData;
|
}
|
||||||
if (!mediaStatus.getDescription().trim().isEmpty()) {
|
// set image blur placeholder
|
||||||
descriptionView.setVisibility(View.VISIBLE);
|
if (blurHash != null && !blurHash.trim().isEmpty()) {
|
||||||
descriptionView.setDescription(mediaStatus.getDescription());
|
Bitmap blur = BlurHashDecoder.INSTANCE.decode(blurHash, 16, 16, 1f, true);
|
||||||
}
|
zoomImage.setImageBitmap(blur);
|
||||||
if (mediaStatus.getMediaType() == MediaStatus.PHOTO) {
|
|
||||||
zoomImage.setVisibility(View.VISIBLE);
|
|
||||||
gifImage.setVisibility(View.INVISIBLE);
|
|
||||||
zoomImage.setImageURI(Uri.parse(mediaStatus.getPath()));
|
|
||||||
} else if (mediaStatus.getMediaType() == MediaStatus.GIF) {
|
|
||||||
zoomImage.setVisibility(View.INVISIBLE);
|
|
||||||
gifImage.setVisibility(View.VISIBLE);
|
|
||||||
gifImage.setImageURI(Uri.parse(mediaStatus.getPath()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MEDIA_ONLINE:
|
|
||||||
serializedData = getIntent().getSerializableExtra(KEY_MEDIA_ONLINE);
|
|
||||||
if (serializedData instanceof Media) {
|
|
||||||
loadingCircle.setVisibility(View.VISIBLE);
|
|
||||||
Media media = (Media) serializedData;
|
|
||||||
if (!media.getBlurHash().isEmpty()) {
|
|
||||||
Bitmap blur = BlurHashDecoder.INSTANCE.decode(media.getBlurHash(), 16, 16, 1f, true);
|
|
||||||
zoomImage.setImageBitmap(blur);
|
|
||||||
}
|
|
||||||
if (!media.getDescription().isEmpty()) {
|
|
||||||
descriptionView.setVisibility(View.VISIBLE);
|
|
||||||
descriptionView.setDescription(media.getDescription());
|
|
||||||
}
|
|
||||||
if (media.getMediaType() == Media.PHOTO) {
|
|
||||||
zoomImage.setVisibility(View.VISIBLE);
|
|
||||||
gifImage.setVisibility(View.INVISIBLE);
|
|
||||||
request = new ImageLoaderParam(Uri.parse(media.getUrl()), cacheFolder);
|
|
||||||
imageAsync.execute(request, this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,7 +172,7 @@ public class ImageViewer extends MediaActivity implements AsyncCallback<ImageLoa
|
||||||
public void onBackPressed() {
|
public void onBackPressed() {
|
||||||
if (mediaStatus != null) {
|
if (mediaStatus != null) {
|
||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
intent.putExtra(KEY_MEDIA_LOCAL, mediaStatus);
|
intent.putExtra(KEY_IMAGE_DATA, mediaStatus);
|
||||||
setResult(RETURN_MEDIA_STATUS_UPDATE, intent);
|
setResult(RETURN_MEDIA_STATUS_UPDATE, intent);
|
||||||
}
|
}
|
||||||
super.onBackPressed();
|
super.onBackPressed();
|
||||||
|
@ -220,11 +191,17 @@ public class ImageViewer extends MediaActivity implements AsyncCallback<ImageLoa
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
getMenuInflater().inflate(R.menu.image, menu);
|
getMenuInflater().inflate(R.menu.image, menu);
|
||||||
MenuItem itemSave = menu.findItem(R.id.menu_image_save);
|
|
||||||
MenuItem itemDescription = menu.findItem(R.id.menu_image_add_description);
|
MenuItem itemDescription = menu.findItem(R.id.menu_image_add_description);
|
||||||
AppStyles.setMenuIconColor(menu, settings.getIconColor());
|
|
||||||
itemSave.setVisible(mode == IMAGE_ONLINE || mode == MEDIA_ONLINE);
|
|
||||||
itemDescription.setVisible(mediaStatus != null);
|
itemDescription.setVisible(mediaStatus != null);
|
||||||
|
AppStyles.setMenuIconColor(menu, settings.getIconColor());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||||
|
MenuItem itemSave = menu.findItem(R.id.menu_image_save);
|
||||||
|
itemSave.setVisible(cacheUri != null);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -239,6 +216,7 @@ public class ImageViewer extends MediaActivity implements AsyncCallback<ImageLoa
|
||||||
}
|
}
|
||||||
else if (item.getItemId() == R.id.menu_image_add_description) {
|
else if (item.getItemId() == R.id.menu_image_add_description) {
|
||||||
descriptionDialog.show();
|
descriptionDialog.show();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
@ -261,6 +239,7 @@ public class ImageViewer extends MediaActivity implements AsyncCallback<ImageLoa
|
||||||
cacheUri = result.uri;
|
cacheUri = result.uri;
|
||||||
zoomImage.reset();
|
zoomImage.reset();
|
||||||
zoomImage.setImageURI(cacheUri);
|
zoomImage.setImageURI(cacheUri);
|
||||||
|
invalidateMenu();
|
||||||
} else {
|
} else {
|
||||||
ErrorUtils.showErrorMessage(getApplicationContext(), result.exception);
|
ErrorUtils.showErrorMessage(getApplicationContext(), result.exception);
|
||||||
finish();
|
finish();
|
||||||
|
|
|
@ -184,8 +184,7 @@ public class MessageEditor extends MediaActivity implements OnClickListener, OnC
|
||||||
else if (v.getId() == R.id.popup_message_preview) {
|
else if (v.getId() == R.id.popup_message_preview) {
|
||||||
if (messageUpdate.getMediaStatus() != null) {
|
if (messageUpdate.getMediaStatus() != null) {
|
||||||
Intent intent = new Intent(this, ImageViewer.class);
|
Intent intent = new Intent(this, ImageViewer.class);
|
||||||
intent.putExtra(ImageViewer.KEY_MEDIA_LOCAL, messageUpdate.getMediaStatus());
|
intent.putExtra(ImageViewer.KEY_IMAGE_DATA, messageUpdate.getMediaStatus());
|
||||||
intent.putExtra(ImageViewer.TYPE, ImageViewer.MEDIA_LOCAL);
|
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -583,8 +583,7 @@ public class ProfileActivity extends AppCompatActivity implements ActivityResult
|
||||||
else if (v.getId() == R.id.profile_img) {
|
else if (v.getId() == R.id.profile_img) {
|
||||||
if (!user.getOriginalProfileImageUrl().isEmpty()) {
|
if (!user.getOriginalProfileImageUrl().isEmpty()) {
|
||||||
Intent intent = new Intent(this, ImageViewer.class);
|
Intent intent = new Intent(this, ImageViewer.class);
|
||||||
intent.putExtra(ImageViewer.KEY_MEDIA_URL, Uri.parse(user.getOriginalProfileImageUrl()));
|
intent.putExtra(ImageViewer.KEY_IMAGE_DATA, user.getOriginalProfileImageUrl());
|
||||||
intent.putExtra(ImageViewer.TYPE, ImageViewer.IMAGE_ONLINE);
|
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -592,8 +591,7 @@ public class ProfileActivity extends AppCompatActivity implements ActivityResult
|
||||||
else if (v.getId() == R.id.profile_banner) {
|
else if (v.getId() == R.id.profile_banner) {
|
||||||
if (!user.getOriginalBannerImageUrl().isEmpty()) {
|
if (!user.getOriginalBannerImageUrl().isEmpty()) {
|
||||||
Intent intent = new Intent(this, ImageViewer.class);
|
Intent intent = new Intent(this, ImageViewer.class);
|
||||||
intent.putExtra(ImageViewer.KEY_MEDIA_URL, Uri.parse(user.getOriginalBannerImageUrl()));
|
intent.putExtra(ImageViewer.KEY_IMAGE_DATA, user.getOriginalBannerImageUrl());
|
||||||
intent.putExtra(ImageViewer.TYPE, ImageViewer.IMAGE_ONLINE);
|
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -539,7 +539,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
|
||||||
// edit status
|
// edit status
|
||||||
else if (item.getItemId() == R.id.menu_status_edit) {
|
else if (item.getItemId() == R.id.menu_status_edit) {
|
||||||
Intent intent = new Intent(this, StatusEditor.class);
|
Intent intent = new Intent(this, StatusEditor.class);
|
||||||
intent.putExtra(StatusEditor.KEY_DATA, status);
|
intent.putExtra(StatusEditor.KEY_STATUS_DATA, status);
|
||||||
intent.putExtra(StatusEditor.KEY_EDIT, true);
|
intent.putExtra(StatusEditor.KEY_EDIT, true);
|
||||||
activityResultLauncher.launch(intent);
|
activityResultLauncher.launch(intent);
|
||||||
}
|
}
|
||||||
|
@ -555,7 +555,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
|
||||||
public void onActivityResult(ActivityResult result) {
|
public void onActivityResult(ActivityResult result) {
|
||||||
if (result.getData() != null) {
|
if (result.getData() != null) {
|
||||||
if (result.getResultCode() == StatusEditor.RETURN_STATUS_UPDATE) {
|
if (result.getResultCode() == StatusEditor.RETURN_STATUS_UPDATE) {
|
||||||
Serializable data = result.getData().getSerializableExtra(StatusEditor.KEY_DATA);
|
Serializable data = result.getData().getSerializableExtra(StatusEditor.KEY_STATUS_DATA);
|
||||||
if (data instanceof Status) {
|
if (data instanceof Status) {
|
||||||
setStatus((Status) data);
|
setStatus((Status) data);
|
||||||
}
|
}
|
||||||
|
@ -573,7 +573,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
|
||||||
// answer to the status
|
// answer to the status
|
||||||
if (v.getId() == R.id.page_status_reply) {
|
if (v.getId() == R.id.page_status_reply) {
|
||||||
Intent intent = new Intent(this, StatusEditor.class);
|
Intent intent = new Intent(this, StatusEditor.class);
|
||||||
intent.putExtra(StatusEditor.KEY_DATA, status);
|
intent.putExtra(StatusEditor.KEY_STATUS_DATA, status);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
// show user reposting this status
|
// show user reposting this status
|
||||||
|
@ -728,8 +728,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
|
||||||
String imageUrl = card.getImageUrl();
|
String imageUrl = card.getImageUrl();
|
||||||
if (!imageUrl.isEmpty()) {
|
if (!imageUrl.isEmpty()) {
|
||||||
Intent intent = new Intent(this, ImageViewer.class);
|
Intent intent = new Intent(this, ImageViewer.class);
|
||||||
intent.putExtra(ImageViewer.KEY_MEDIA_URL, Uri.parse(card.getImageUrl()));
|
intent.putExtra(ImageViewer.KEY_IMAGE_DATA, card.getImageUrl());
|
||||||
intent.putExtra(ImageViewer.TYPE, ImageViewer.IMAGE_ONLINE);
|
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -742,8 +741,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
|
||||||
switch (media.getMediaType()) {
|
switch (media.getMediaType()) {
|
||||||
case Media.PHOTO:
|
case Media.PHOTO:
|
||||||
Intent intent = new Intent(this, ImageViewer.class);
|
Intent intent = new Intent(this, ImageViewer.class);
|
||||||
intent.putExtra(ImageViewer.KEY_MEDIA_ONLINE, media);
|
intent.putExtra(ImageViewer.KEY_IMAGE_DATA, media);
|
||||||
intent.putExtra(ImageViewer.TYPE, ImageViewer.MEDIA_ONLINE);
|
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -754,7 +752,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
|
||||||
case Media.GIF:
|
case Media.GIF:
|
||||||
case Media.VIDEO:
|
case Media.VIDEO:
|
||||||
intent = new Intent(this, VideoViewer.class);
|
intent = new Intent(this, VideoViewer.class);
|
||||||
intent.putExtra(VideoViewer.KEY_VIDEO_ONLINE, media);
|
intent.putExtra(VideoViewer.KEY_VIDEO_DATA, media);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,10 +71,10 @@ public class StatusEditor extends MediaActivity implements ActivityResultCallbac
|
||||||
* key to add the status to reply
|
* key to add the status to reply
|
||||||
* value type is {@link Status}
|
* value type is {@link Status}
|
||||||
*/
|
*/
|
||||||
public static final String KEY_DATA = "status_data";
|
public static final String KEY_STATUS_DATA = "status_data";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* key to edit status send with {@link #KEY_DATA}
|
* key to edit status send with {@link #KEY_STATUS_DATA}
|
||||||
* value type is Boolean
|
* value type is Boolean
|
||||||
*/
|
*/
|
||||||
public static final String KEY_EDIT = "status_edit";
|
public static final String KEY_EDIT = "status_edit";
|
||||||
|
@ -85,12 +85,6 @@ public class StatusEditor extends MediaActivity implements ActivityResultCallbac
|
||||||
*/
|
*/
|
||||||
public static final String KEY_TEXT = "status_text";
|
public static final String KEY_TEXT = "status_text";
|
||||||
|
|
||||||
/**
|
|
||||||
* key for status update to restore
|
|
||||||
* value type is {@link StatusUpdate}
|
|
||||||
*/
|
|
||||||
private static final String KEY_SAVE = "status_update";
|
|
||||||
|
|
||||||
private ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), this);
|
private ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), this);
|
||||||
private AsyncCallback<StatusUpdateResult> statusUpdateResult = this::onStatusUpdated;
|
private AsyncCallback<StatusUpdateResult> statusUpdateResult = this::onStatusUpdated;
|
||||||
private AsyncCallback<Instance> instanceResult = this::onInstanceResult;
|
private AsyncCallback<Instance> instanceResult = this::onInstanceResult;
|
||||||
|
@ -148,10 +142,10 @@ public class StatusEditor extends MediaActivity implements ActivityResultCallbac
|
||||||
audioDialog = new AudioPlayerDialog(this);
|
audioDialog = new AudioPlayerDialog(this);
|
||||||
emojiPicker = new EmojiPicker(this, this);
|
emojiPicker = new EmojiPicker(this, this);
|
||||||
adapter = new IconAdapter(this, true);
|
adapter = new IconAdapter(this, true);
|
||||||
|
|
||||||
iconList.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true));
|
iconList.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true));
|
||||||
iconList.setAdapter(adapter);
|
iconList.setAdapter(adapter);
|
||||||
AppStyles.setEditorTheme(root, background);
|
AppStyles.setEditorTheme(root, background);
|
||||||
|
|
||||||
if (!settings.getLogin().getConfiguration().locationSupported()) {
|
if (!settings.getLogin().getConfiguration().locationSupported()) {
|
||||||
locationBtn.setVisibility(View.GONE);
|
locationBtn.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
@ -159,35 +153,43 @@ public class StatusEditor extends MediaActivity implements ActivityResultCallbac
|
||||||
emojiButton.setVisibility(View.GONE);
|
emojiButton.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
// fetch parameters
|
// fetch parameters
|
||||||
if (savedInstanceState == null)
|
boolean editStatus;
|
||||||
savedInstanceState = getIntent().getExtras();
|
String prefix;
|
||||||
|
Serializable serializedData;
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
Serializable serializedStatus = savedInstanceState.getSerializable(KEY_DATA);
|
serializedData = savedInstanceState.getSerializable(KEY_STATUS_DATA);
|
||||||
Serializable serializedStatusUpdate = savedInstanceState.getSerializable(KEY_SAVE);
|
editStatus = savedInstanceState.getBoolean(KEY_EDIT, false);
|
||||||
boolean editStatus = savedInstanceState.getBoolean(KEY_EDIT, false);
|
prefix = savedInstanceState.getString(KEY_TEXT, "");
|
||||||
String prefix = savedInstanceState.getString(KEY_TEXT);
|
} else {
|
||||||
if (serializedStatusUpdate instanceof StatusUpdate) {
|
serializedData = getIntent().getSerializableExtra(KEY_STATUS_DATA);
|
||||||
statusUpdate = (StatusUpdate) serializedStatusUpdate;
|
editStatus = getIntent().getBooleanExtra(KEY_EDIT, false);
|
||||||
} else if (serializedStatus instanceof Status) {
|
if (getIntent().hasExtra(KEY_TEXT)) {
|
||||||
Status status = (Status) serializedStatus;
|
prefix = getIntent().getStringExtra(KEY_TEXT);
|
||||||
if (editStatus) {
|
|
||||||
statusUpdate.setStatus(status);
|
|
||||||
statusText.append(status.getText());
|
|
||||||
for (Media media : status.getMedia()) {
|
|
||||||
addMedia(media.getMediaType());
|
|
||||||
}
|
|
||||||
mediaBtn.setVisibility(View.GONE);
|
|
||||||
} else {
|
|
||||||
statusUpdate.addReplyStatusId(status.getId());
|
|
||||||
statusUpdate.setVisibility(status.getVisibility());
|
|
||||||
statusUpdate.addText(status.getUserMentions());
|
|
||||||
statusText.append(status.getUserMentions());
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
statusUpdate.addText(prefix);
|
prefix = "";
|
||||||
statusText.append(prefix);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (serializedData instanceof StatusUpdate) {
|
||||||
|
statusUpdate = (StatusUpdate) serializedData;
|
||||||
|
} else if (serializedData instanceof Status) {
|
||||||
|
Status status = (Status) serializedData;
|
||||||
|
if (editStatus) {
|
||||||
|
statusUpdate.setStatus(status);
|
||||||
|
statusText.append(status.getText());
|
||||||
|
for (Media media : status.getMedia()) {
|
||||||
|
addMedia(media.getMediaType());
|
||||||
|
}
|
||||||
|
mediaBtn.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
statusUpdate.addReplyStatusId(status.getId());
|
||||||
|
statusUpdate.setVisibility(status.getVisibility());
|
||||||
|
statusUpdate.addText(status.getUserMentions());
|
||||||
|
statusText.append(status.getUserMentions());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
statusUpdate.addText(prefix);
|
||||||
|
statusText.append(prefix);
|
||||||
|
}
|
||||||
|
|
||||||
statusText.addTextChangedListener(this);
|
statusText.addTextChangedListener(this);
|
||||||
emojiButton.setOnClickListener(this);
|
emojiButton.setOnClickListener(this);
|
||||||
|
@ -226,7 +228,7 @@ public class StatusEditor extends MediaActivity implements ActivityResultCallbac
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
||||||
outState.putSerializable(KEY_SAVE, statusUpdate);
|
outState.putSerializable(KEY_STATUS_DATA, statusUpdate);
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -251,7 +253,7 @@ public class StatusEditor extends MediaActivity implements ActivityResultCallbac
|
||||||
public void onActivityResult(ActivityResult result) {
|
public void onActivityResult(ActivityResult result) {
|
||||||
if (result.getResultCode() == ImageViewer.RETURN_MEDIA_STATUS_UPDATE) {
|
if (result.getResultCode() == ImageViewer.RETURN_MEDIA_STATUS_UPDATE) {
|
||||||
if (result.getData() != null) {
|
if (result.getData() != null) {
|
||||||
Serializable data = result.getData().getSerializableExtra(ImageViewer.KEY_MEDIA_LOCAL);
|
Serializable data = result.getData().getSerializableExtra(ImageViewer.KEY_IMAGE_DATA);
|
||||||
if (data instanceof MediaStatus) {
|
if (data instanceof MediaStatus) {
|
||||||
MediaStatus mediaStatus = (MediaStatus) data;
|
MediaStatus mediaStatus = (MediaStatus) data;
|
||||||
statusUpdate.updateMediaStatus(mediaStatus);
|
statusUpdate.updateMediaStatus(mediaStatus);
|
||||||
|
@ -259,7 +261,7 @@ public class StatusEditor extends MediaActivity implements ActivityResultCallbac
|
||||||
}
|
}
|
||||||
} else if (result.getResultCode() == VideoViewer.RESULT_VIDEO_UPDATE) {
|
} else if (result.getResultCode() == VideoViewer.RESULT_VIDEO_UPDATE) {
|
||||||
if (result.getData() != null) {
|
if (result.getData() != null) {
|
||||||
Serializable data = result.getData().getSerializableExtra(VideoViewer.KEY_VIDEO_LOCAL);
|
Serializable data = result.getData().getSerializableExtra(VideoViewer.KEY_VIDEO_DATA);
|
||||||
if (data instanceof MediaStatus) {
|
if (data instanceof MediaStatus) {
|
||||||
MediaStatus mediaStatus = (MediaStatus) data;
|
MediaStatus mediaStatus = (MediaStatus) data;
|
||||||
statusUpdate.updateMediaStatus(mediaStatus);
|
statusUpdate.updateMediaStatus(mediaStatus);
|
||||||
|
@ -405,14 +407,13 @@ public class StatusEditor extends MediaActivity implements ActivityResultCallbac
|
||||||
case MediaStatus.PHOTO:
|
case MediaStatus.PHOTO:
|
||||||
case MediaStatus.GIF:
|
case MediaStatus.GIF:
|
||||||
Intent intent = new Intent(this, ImageViewer.class);
|
Intent intent = new Intent(this, ImageViewer.class);
|
||||||
intent.putExtra(ImageViewer.KEY_MEDIA_LOCAL, media);
|
intent.putExtra(ImageViewer.KEY_IMAGE_DATA, media);
|
||||||
intent.putExtra(ImageViewer.TYPE, ImageViewer.MEDIA_LOCAL);
|
|
||||||
activityResultLauncher.launch(intent);
|
activityResultLauncher.launch(intent);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MediaStatus.VIDEO:
|
case MediaStatus.VIDEO:
|
||||||
intent = new Intent(this, VideoViewer.class);
|
intent = new Intent(this, VideoViewer.class);
|
||||||
intent.putExtra(VideoViewer.KEY_VIDEO_LOCAL, media);
|
intent.putExtra(VideoViewer.KEY_VIDEO_DATA, media);
|
||||||
activityResultLauncher.launch(intent);
|
activityResultLauncher.launch(intent);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -490,7 +491,7 @@ public class StatusEditor extends MediaActivity implements ActivityResultCallbac
|
||||||
private void onStatusUpdated(@NonNull StatusUpdateResult result) {
|
private void onStatusUpdated(@NonNull StatusUpdateResult result) {
|
||||||
if (result.status != null) {
|
if (result.status != null) {
|
||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
intent.putExtra(KEY_DATA, result.status);
|
intent.putExtra(KEY_STATUS_DATA, result.status);
|
||||||
setResult(RETURN_STATUS_UPDATE, intent);
|
setResult(RETURN_STATUS_UPDATE, intent);
|
||||||
Toast.makeText(getApplicationContext(), R.string.info_status_sent, Toast.LENGTH_LONG).show();
|
Toast.makeText(getApplicationContext(), R.string.info_status_sent, Toast.LENGTH_LONG).show();
|
||||||
finish();
|
finish();
|
||||||
|
|
|
@ -61,15 +61,9 @@ public class VideoViewer extends AppCompatActivity implements Player.Listener, D
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* bundle key used for media information
|
* bundle key used for media information
|
||||||
* value type is {@link Media}
|
* value type can be {@link Media} or {@link MediaStatus}
|
||||||
*/
|
*/
|
||||||
public static final String KEY_VIDEO_ONLINE = "media-video";
|
public static final String KEY_VIDEO_DATA = "media-video";
|
||||||
|
|
||||||
/**
|
|
||||||
* bundle key used for mediastatus information
|
|
||||||
* value type is {@link MediaStatus}
|
|
||||||
*/
|
|
||||||
public static final String KEY_VIDEO_LOCAL = "video-media-status";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Activity result code used to update {@link MediaStatus} information
|
* Activity result code used to update {@link MediaStatus} information
|
||||||
|
@ -116,21 +110,18 @@ public class VideoViewer extends AppCompatActivity implements Player.Listener, D
|
||||||
playerView.setShowNextButton(false);
|
playerView.setShowNextButton(false);
|
||||||
playerView.setShowPreviousButton(false);
|
playerView.setShowPreviousButton(false);
|
||||||
|
|
||||||
MediaItem mediaItem;
|
ProgressiveMediaSource mediaSource = null;
|
||||||
DataSource.Factory dataSourceFactory;
|
Serializable serializedData;
|
||||||
Serializable serializedMedia, serializedMediaStatus;
|
|
||||||
if (savedInstance != null) {
|
if (savedInstance != null) {
|
||||||
serializedMedia = savedInstance.getSerializable(KEY_VIDEO_ONLINE);
|
serializedData = savedInstance.getSerializable(KEY_VIDEO_DATA);
|
||||||
serializedMediaStatus = savedInstance.getSerializable(KEY_VIDEO_LOCAL);
|
|
||||||
} else {
|
} else {
|
||||||
serializedMedia = getIntent().getSerializableExtra(KEY_VIDEO_ONLINE);
|
serializedData = getIntent().getSerializableExtra(KEY_VIDEO_DATA);
|
||||||
serializedMediaStatus = getIntent().getSerializableExtra(KEY_VIDEO_LOCAL);
|
|
||||||
}
|
}
|
||||||
// check if video is online
|
// check if video is online
|
||||||
if (serializedMedia instanceof Media) {
|
if (serializedData instanceof Media) {
|
||||||
this.media = (Media) serializedMedia;
|
this.media = (Media) serializedData;
|
||||||
mediaItem = MediaItem.fromUri(media.getUrl());
|
MediaItem mediaItem = MediaItem.fromUri(media.getUrl());
|
||||||
dataSourceFactory = new OkHttpDataSource.Factory((Call.Factory) ConnectionBuilder.create(this, CACHE_SIZE));
|
DataSource.Factory dataSourceFactory = new OkHttpDataSource.Factory((Call.Factory) ConnectionBuilder.create(this, CACHE_SIZE));
|
||||||
if (media.getMediaType() != Media.VIDEO) {
|
if (media.getMediaType() != Media.VIDEO) {
|
||||||
playerView.setUseController(false);
|
playerView.setUseController(false);
|
||||||
player.setRepeatMode(Player.REPEAT_MODE_ONE);
|
player.setRepeatMode(Player.REPEAT_MODE_ONE);
|
||||||
|
@ -139,37 +130,46 @@ public class VideoViewer extends AppCompatActivity implements Player.Listener, D
|
||||||
descriptionView.setVisibility(View.VISIBLE);
|
descriptionView.setVisibility(View.VISIBLE);
|
||||||
descriptionView.setDescription(media.getDescription());
|
descriptionView.setDescription(media.getDescription());
|
||||||
}
|
}
|
||||||
|
mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory, new DefaultExtractorsFactory()).createMediaSource(mediaItem);
|
||||||
}
|
}
|
||||||
// check if viceo is local
|
// check if viceo is from an editable status
|
||||||
else if (serializedMediaStatus instanceof MediaStatus) {
|
else if (serializedData instanceof MediaStatus) {
|
||||||
this.mediaStatus = (MediaStatus) serializedMediaStatus;
|
this.mediaStatus = (MediaStatus) serializedData;
|
||||||
mediaItem = MediaItem.fromUri(mediaStatus.getPath());
|
if (mediaStatus.getPath() != null) {
|
||||||
dataSourceFactory = new DataSource.Factory() {
|
DataSource.Factory dataSourceFactory;
|
||||||
@NonNull
|
MediaItem mediaItem = MediaItem.fromUri(mediaStatus.getPath());
|
||||||
@Override
|
if (mediaStatus.getPath().startsWith("http")) {
|
||||||
public DataSource createDataSource() {
|
dataSourceFactory = new OkHttpDataSource.Factory((Call.Factory) ConnectionBuilder.create(this, CACHE_SIZE));
|
||||||
return new ContentDataSource(getApplicationContext());
|
} else {
|
||||||
|
dataSourceFactory = new DataSource.Factory() {
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public DataSource createDataSource() {
|
||||||
|
return new ContentDataSource(getApplicationContext());
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
};
|
if (mediaStatus.getMediaType() != MediaStatus.VIDEO) {
|
||||||
if (mediaStatus.getMediaType() != MediaStatus.VIDEO) {
|
playerView.setUseController(false);
|
||||||
playerView.setUseController(false);
|
player.setRepeatMode(Player.REPEAT_MODE_ONE);
|
||||||
player.setRepeatMode(Player.REPEAT_MODE_ONE);
|
}
|
||||||
}
|
if (descriptionView != null && !mediaStatus.getDescription().isEmpty()) {
|
||||||
if (descriptionView != null && !mediaStatus.getDescription().isEmpty()) {
|
descriptionView.setVisibility(View.VISIBLE);
|
||||||
descriptionView.setVisibility(View.VISIBLE);
|
descriptionView.setDescription(mediaStatus.getDescription());
|
||||||
descriptionView.setDescription(mediaStatus.getDescription());
|
}
|
||||||
|
mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory, new DefaultExtractorsFactory()).createMediaSource(mediaItem);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
// prepare playback
|
||||||
|
if (mediaSource != null) {
|
||||||
|
player.setMediaSource(mediaSource);
|
||||||
|
playerView.setPlayer(player);
|
||||||
|
player.addListener(this);
|
||||||
|
player.prepare();
|
||||||
|
player.setPlayWhenReady(true);
|
||||||
} else {
|
} else {
|
||||||
finish();
|
finish();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
// initialize video extractor
|
|
||||||
player.setMediaSource(new ProgressiveMediaSource.Factory(dataSourceFactory, new DefaultExtractorsFactory()).createMediaSource(mediaItem));
|
|
||||||
playerView.setPlayer(player);
|
|
||||||
// prepare playback
|
|
||||||
player.addListener(this);
|
|
||||||
player.prepare();
|
|
||||||
player.setPlayWhenReady(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -186,7 +186,7 @@ public class VideoViewer extends AppCompatActivity implements Player.Listener, D
|
||||||
public void onBackPressed() {
|
public void onBackPressed() {
|
||||||
if (mediaStatus != null) {
|
if (mediaStatus != null) {
|
||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
intent.putExtra(KEY_VIDEO_LOCAL, mediaStatus);
|
intent.putExtra(KEY_VIDEO_DATA, mediaStatus);
|
||||||
setResult(RESULT_VIDEO_UPDATE, intent);
|
setResult(RESULT_VIDEO_UPDATE, intent);
|
||||||
}
|
}
|
||||||
player.stop();
|
player.stop();
|
||||||
|
@ -196,8 +196,11 @@ public class VideoViewer extends AppCompatActivity implements Player.Listener, D
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
||||||
outState.putSerializable(KEY_VIDEO_LOCAL, mediaStatus);
|
if (mediaStatus != null) {
|
||||||
outState.putSerializable(KEY_VIDEO_ONLINE, media);
|
outState.putSerializable(KEY_VIDEO_DATA, mediaStatus);
|
||||||
|
} else if (media != null) {
|
||||||
|
outState.putSerializable(KEY_VIDEO_DATA, media);
|
||||||
|
}
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,10 +229,10 @@ public class VideoViewer extends AppCompatActivity implements Player.Listener, D
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
getMenuInflater().inflate(R.menu.video, menu);
|
getMenuInflater().inflate(R.menu.video, menu);
|
||||||
MenuItem menuOpenLink = menu.findItem(R.id.menu_video_link);
|
MenuItem menuOpenUrl = menu.findItem(R.id.menu_video_link);
|
||||||
MenuItem menuDescription = menu.findItem(R.id.menu_video_add_description);
|
MenuItem menuDescription = menu.findItem(R.id.menu_video_add_description);
|
||||||
AppStyles.setMenuIconColor(menu, Color.WHITE);
|
AppStyles.setMenuIconColor(menu, Color.WHITE);
|
||||||
menuOpenLink.setVisible(media != null);
|
menuOpenUrl.setVisible(media != null);
|
||||||
menuDescription.setVisible(mediaStatus != null);
|
menuDescription.setVisible(mediaStatus != null);
|
||||||
return super.onCreateOptionsMenu(menu);
|
return super.onCreateOptionsMenu(menu);
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,8 @@ import java.util.TreeMap;
|
||||||
*/
|
*/
|
||||||
public class StatusPreferenceDialog extends Dialog implements OnCheckedChangeListener, OnItemSelectedListener {
|
public class StatusPreferenceDialog extends Dialog implements OnCheckedChangeListener, OnItemSelectedListener {
|
||||||
|
|
||||||
private Spinner visibilitySelector;
|
private Spinner visibilitySelector, languageSelector;
|
||||||
|
private SwitchButton sensitiveCheck, spoilerCheck;
|
||||||
|
|
||||||
private DropdownAdapter visibility_adapter, language_adapter;
|
private DropdownAdapter visibility_adapter, language_adapter;
|
||||||
private StatusUpdate statusUpdate;
|
private StatusUpdate statusUpdate;
|
||||||
|
@ -63,16 +64,17 @@ public class StatusPreferenceDialog extends Dialog implements OnCheckedChangeLis
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.dialog_status);
|
setContentView(R.layout.dialog_status);
|
||||||
ViewGroup rootView = findViewById(R.id.dialog_status_root);
|
ViewGroup rootView = findViewById(R.id.dialog_status_root);
|
||||||
SwitchButton sensitiveCheck = findViewById(R.id.dialog_status_sensitive);
|
|
||||||
SwitchButton spoilerCheck = findViewById(R.id.dialog_status_spoiler);
|
|
||||||
View statusVisibility = findViewById(R.id.dialog_status_visibility_container);
|
View statusVisibility = findViewById(R.id.dialog_status_visibility_container);
|
||||||
View statusSpoiler = findViewById(R.id.dialog_status_spoiler_container);
|
View statusSpoiler = findViewById(R.id.dialog_status_spoiler_container);
|
||||||
Spinner languageSelector = findViewById(R.id.dialog_status_language);
|
languageSelector = findViewById(R.id.dialog_status_language);
|
||||||
visibilitySelector = findViewById(R.id.dialog_status_visibility);
|
visibilitySelector = findViewById(R.id.dialog_status_visibility);
|
||||||
|
sensitiveCheck = findViewById(R.id.dialog_status_sensitive);
|
||||||
|
spoilerCheck = findViewById(R.id.dialog_status_spoiler);
|
||||||
GlobalSettings settings = GlobalSettings.get(getContext());
|
GlobalSettings settings = GlobalSettings.get(getContext());
|
||||||
AppStyles.setTheme(rootView);
|
AppStyles.setTheme(rootView);
|
||||||
|
|
||||||
languageSelector.setAdapter(language_adapter);
|
languageSelector.setAdapter(language_adapter);
|
||||||
|
languageSelector.setSelection(0, false);
|
||||||
languageSelector.setSelected(false);
|
languageSelector.setSelected(false);
|
||||||
visibilitySelector.setAdapter(visibility_adapter);
|
visibilitySelector.setAdapter(visibility_adapter);
|
||||||
visibilitySelector.setSelection(0, false);
|
visibilitySelector.setSelection(0, false);
|
||||||
|
@ -95,7 +97,6 @@ public class StatusPreferenceDialog extends Dialog implements OnCheckedChangeLis
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onStart() {
|
protected void onStart() {
|
||||||
super.onStart();
|
|
||||||
if (statusUpdate.getVisibility() == Status.VISIBLE_PUBLIC) {
|
if (statusUpdate.getVisibility() == Status.VISIBLE_PUBLIC) {
|
||||||
visibilitySelector.setSelection(0, false);
|
visibilitySelector.setSelection(0, false);
|
||||||
} else if (statusUpdate.getVisibility() == Status.VISIBLE_PRIVATE) {
|
} else if (statusUpdate.getVisibility() == Status.VISIBLE_PRIVATE) {
|
||||||
|
@ -105,6 +106,16 @@ public class StatusPreferenceDialog extends Dialog implements OnCheckedChangeLis
|
||||||
} else if (statusUpdate.getVisibility() == Status.VISIBLE_UNLISTED) {
|
} else if (statusUpdate.getVisibility() == Status.VISIBLE_UNLISTED) {
|
||||||
visibilitySelector.setSelection(3, false);
|
visibilitySelector.setSelection(3, false);
|
||||||
}
|
}
|
||||||
|
sensitiveCheck.setCheckedImmediately(statusUpdate.isSensitive());
|
||||||
|
spoilerCheck.setCheckedImmediately(statusUpdate.isSpoiler());
|
||||||
|
if (!statusUpdate.getLanguageCode().isEmpty()) {
|
||||||
|
for (int i = 0; i < languageCodes.length; i++) {
|
||||||
|
if (languageCodes[i].equals(statusUpdate.getLanguageCode())) {
|
||||||
|
languageSelector.setSelection(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
super.onStart();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -136,8 +147,6 @@ public class StatusPreferenceDialog extends Dialog implements OnCheckedChangeLis
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||||
if (!isShowing())
|
|
||||||
return;
|
|
||||||
if (parent.getId() == R.id.dialog_status_visibility) {
|
if (parent.getId() == R.id.dialog_status_visibility) {
|
||||||
switch (position) {
|
switch (position) {
|
||||||
case 0:
|
case 0:
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package org.nuclearfog.twidda.ui.fragments;
|
package org.nuclearfog.twidda.ui.fragments;
|
||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
@ -142,8 +141,7 @@ public class MessageFragment extends ListFragment implements OnMessageClickListe
|
||||||
int mediaIndex = extras[0];
|
int mediaIndex = extras[0];
|
||||||
if (mediaIndex >= 0 && mediaIndex < message.getMedia().length) {
|
if (mediaIndex >= 0 && mediaIndex < message.getMedia().length) {
|
||||||
Intent intent = new Intent(requireContext(), ImageViewer.class);
|
Intent intent = new Intent(requireContext(), ImageViewer.class);
|
||||||
intent.putExtra(ImageViewer.KEY_MEDIA_URL, Uri.parse(message.getMedia()[mediaIndex].getUrl()));
|
intent.putExtra(ImageViewer.KEY_IMAGE_DATA, message.getMedia()[mediaIndex].getUrl());
|
||||||
intent.putExtra(ImageViewer.TYPE, ImageViewer.IMAGE_ONLINE);
|
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue