This commit is contained in:
nuclearfog 2023-03-30 22:25:27 +02:00
parent dcd2091b8d
commit 3e9b97c230
No known key found for this signature in database
GPG Key ID: 03488A185C476379
10 changed files with 60 additions and 45 deletions

View File

@ -33,7 +33,7 @@ public class DatabaseAction extends AsyncExecutor<DatabaseAction.DatabaseParam,
} catch (Exception exception) {
exception.printStackTrace();
}
return null;
return new DatabaseResult(DatabaseResult.ERROR);
}
/**
@ -55,6 +55,7 @@ public class DatabaseAction extends AsyncExecutor<DatabaseAction.DatabaseParam,
*/
public static class DatabaseResult {
public static final int ERROR = -1;
public static final int DELETE = 1;
public final int mode;

View File

@ -8,7 +8,6 @@ import android.util.LruCache;
import androidx.annotation.Nullable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
@ -100,6 +99,7 @@ public class ImageCache {
if (file.createNewFile()) {
FileOutputStream output = new FileOutputStream(file);
image.compress(Bitmap.CompressFormat.PNG, 1, output);
output.close();
files.put(key, file);
}
} catch (IOException|SecurityException e) {
@ -118,15 +118,16 @@ public class ImageCache {
public synchronized Bitmap getImage(String key) {
Bitmap result = cache.get(key);
if (result == null) {
File file = files.get(key);
if (file != null) {
try {
FileInputStream inputStream = new FileInputStream(file);
result = BitmapFactory.decodeStream(inputStream);
cache.put(key, result);
} catch (IOException e) {
e.printStackTrace();
try {
File file = files.get(key);
if (file != null && file.canRead()) {
result = BitmapFactory.decodeFile(file.getAbsolutePath());
if (result != null) {
cache.put(key, result);
}
}
} catch (SecurityException e) {
e.printStackTrace();
}
}
return result;
@ -139,7 +140,7 @@ public class ImageCache {
public synchronized void trimCache() {
File[] files = imageFolder.listFiles();
if (files != null) {
long size = 0;
long size = 0L;
for (File file : files) {
size += file.length();
}

View File

@ -809,7 +809,7 @@ public class ProfileActivity extends AppCompatActivity implements ActivityResult
profileImage.setImageResource(0);
}
}
if (user.getEmojis().length > 0) {
if (settings.imagesEnabled() && user.getEmojis().length > 0) {
if (!user.getUsername().isEmpty()) {
SpannableString usernameSpan = new SpannableString(user.getUsername());
EmojiParam param = new EmojiParam(user.getEmojis(), usernameSpan, getResources().getDimensionPixelSize(R.dimen.profile_icon_size));

View File

@ -598,8 +598,12 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen
* called from {@link DatabaseAction}
*/
private void onDatabaseResult(@NonNull DatabaseResult result) {
setResult(RETURN_DATA_CLEARED);
Toast.makeText(getApplicationContext(), R.string.info_database_cleared, Toast.LENGTH_SHORT).show();
if (result.mode == DatabaseResult.DELETE) {
setResult(RETURN_DATA_CLEARED);
Toast.makeText(getApplicationContext(), R.string.info_database_cleared, Toast.LENGTH_SHORT).show();
} else if (result.mode == DatabaseResult.ERROR) {
Toast.makeText(getApplicationContext(), R.string.error_database_cleared, Toast.LENGTH_SHORT).show();
}
}
/**

View File

@ -922,14 +922,16 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
cardList.setVisibility(View.GONE);
statusText.setMaxLines(10);
}
if (status.getEmojis().length > 0 && spannableText != null) {
EmojiParam param = new EmojiParam(status.getEmojis(), spannableText, getResources().getDimensionPixelSize(R.dimen.page_status_icon_size));
emojiAsync.execute(param, statusTextUpdate);
}
if (author.getEmojis().length > 0 && !author.getUsername().isEmpty()) {
SpannableString usernameSpan = new SpannableString(author.getUsername());
EmojiParam param = new EmojiParam(author.getEmojis(), usernameSpan, getResources().getDimensionPixelSize(R.dimen.page_status_icon_size));
emojiAsync.execute(param, usernameUpdate);
if (settings.imagesEnabled()) {
if (status.getEmojis().length > 0 && spannableText != null) {
EmojiParam param = new EmojiParam(status.getEmojis(), spannableText, getResources().getDimensionPixelSize(R.dimen.page_status_icon_size));
emojiAsync.execute(param, statusTextUpdate);
}
if (author.getEmojis().length > 0 && !author.getUsername().isEmpty()) {
SpannableString usernameSpan = new SpannableString(author.getUsername());
EmojiParam param = new EmojiParam(author.getEmojis(), usernameSpan, getResources().getDimensionPixelSize(R.dimen.page_status_icon_size));
emojiAsync.execute(param, usernameUpdate);
}
}
}
@ -960,9 +962,9 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
// append translation
statusText.append(textSpan);
translateText.setText(R.string.status_translate_source);
translateText.append(translation.getSource());
// scroll to translation
translateText.append(translation.getSource() + ", ");
translateText.append(getString(R.string.status_translate_source_language));
translateText.append(translation.getOriginalLanguage());
}
}

View File

@ -51,7 +51,7 @@ import jp.wasabeef.picasso.transformations.RoundedCornersTransformation;
public class StatusHolder extends ViewHolder implements OnClickListener {
private ImageView profile, repostUserIcon, verifiedIcon, lockedIcon, repostIcon, favoriteIcon, replyStatus;
private TextView username, screenname, text, repost, favorite, reply, reposter, created, replyname, label;
private TextView username, screenname, statusText, repost, favorite, reply, reposter, created, replyname, label;
private View dismissButton;
private RecyclerView iconList;
@ -88,7 +88,7 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
replyStatus = itemView.findViewById(R.id.item_status_reply);
username = itemView.findViewById(R.id.item_status_author_username);
screenname = itemView.findViewById(R.id.item_status_author_screenname);
text = itemView.findViewById(R.id.item_status_text);
statusText = itemView.findViewById(R.id.item_status_text);
repost = itemView.findViewById(R.id.item_status_repost_count);
favorite = itemView.findViewById(R.id.item_status_favorite_count);
reply = itemView.findViewById(R.id.item_status_reply_count);
@ -155,18 +155,18 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
created.setText(StringTools.formatCreationTime(itemView.getResources(), status.getTimestamp()));
if (!status.getText().trim().isEmpty()) {
textSpan = Tagger.makeTextWithLinks(status.getText(), settings.getHighlightColor());
text.setText(textSpan);
text.setVisibility(View.VISIBLE);
statusText.setText(textSpan);
statusText.setVisibility(View.VISIBLE);
} else {
text.setVisibility(View.GONE);
statusText.setVisibility(View.GONE);
}
if (settings.hideSensitiveEnabled() && status.isSpoiler()) {
text.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
float radius = text.getTextSize() / 3;
statusText.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
float radius = statusText.getTextSize() / 3;
BlurMaskFilter filter = new BlurMaskFilter(radius, BlurMaskFilter.Blur.NORMAL);
text.getPaint().setMaskFilter(filter);
statusText.getPaint().setMaskFilter(filter);
} else {
text.getPaint().setMaskFilter(null);
statusText.getPaint().setMaskFilter(null);
}
if (status.isReposted()) {
repostIcon.setColorFilter(settings.getRepostIconColor());
@ -218,14 +218,16 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
} else {
iconList.setVisibility(View.GONE);
}
if (textSpan != null && status.getEmojis().length > 0) {
EmojiParam param = new EmojiParam(tagId, status.getEmojis(), textSpan, text.getResources().getDimensionPixelSize(R.dimen.item_status_icon_size));
emojiLoader.execute(param, textResult);
}
if (!user.getUsername().isEmpty() && user.getEmojis().length > 0) {
SpannableString userSpan = new SpannableString(user.getUsername());
EmojiParam param = new EmojiParam(tagId, user.getEmojis(), userSpan, text.getResources().getDimensionPixelSize(R.dimen.item_status_icon_size));
emojiLoader.execute(param, usernameResult);
if (settings.imagesEnabled()) {
if (status.getEmojis().length > 0 && textSpan != null) {
EmojiParam param = new EmojiParam(tagId, status.getEmojis(), textSpan, statusText.getResources().getDimensionPixelSize(R.dimen.item_status_icon_size));
emojiLoader.execute(param, textResult);
}
if (user.getEmojis().length > 0 && !user.getUsername().isEmpty()) {
SpannableString userSpan = new SpannableString(user.getUsername());
EmojiParam param = new EmojiParam(tagId, user.getEmojis(), userSpan, statusText.getResources().getDimensionPixelSize(R.dimen.item_status_icon_size));
emojiLoader.execute(param, usernameResult);
}
}
}
@ -298,8 +300,8 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
*/
private void setTextEmojis(@NonNull EmojiResult result) {
if (result.id == tagId && result.images != null) {
Spannable spannable = TextWithEmoji.addEmojis(text.getContext(), result.spannable, result.images);
text.setText(spannable);
Spannable spannable = TextWithEmoji.addEmojis(statusText.getContext(), result.spannable, result.images);
statusText.setText(spannable);
}
}
}

View File

@ -143,7 +143,7 @@ public class UserHolder extends ViewHolder implements OnClickListener, AsyncCall
} else {
profileImg.setImageResource(0);
}
if (!user.getUsername().isEmpty() && user.getEmojis().length > 0) {
if (settings.imagesEnabled() && user.getEmojis().length > 0 && !user.getUsername().isEmpty()) {
SpannableString userSpan = new SpannableString(user.getUsername());
EmojiParam param = new EmojiParam(tagId, user.getEmojis(), userSpan, username.getResources().getDimensionPixelSize(R.dimen.item_user_icon_size));
emojiLoader.execute(param, this);

View File

@ -170,6 +170,7 @@
android:layout_height="wrap_content"
android:visibility="gone"
android:text="@string/status_translate_text"
android:lines="1"
app:layout_constraintStart_toStartOf="@id/page_status_text"
app:layout_constraintTop_toBottomOf="@id/page_status_text"/>

View File

@ -295,4 +295,6 @@
<string name="status_contains_spoiler">Spoiler!</string>
<string name="settings_hide_sensitive">verstecke sensible Inhalte</string>
<string name="status_translate_source">Übersetzt von:\u0020</string>
<string name="error_database_cleared">Fehler beim Löschen der Datanbank!</string>
<string name="status_translate_source_language">Sprache:\u0020</string>
</resources>

View File

@ -102,6 +102,7 @@
<string name="error_api_access_limited">Error, API access limited by Twitter!</string>
<string name="error_json_format">JSON error!</string>
<string name="error_api_key_expired">Error, API Keys expired! Please update app!</string>
<string name="error_database_cleared">Error while clearing database!</string>
<string name="error_result_cancelled">Error, result cancelled!</string>
<string name="error_twitter_search">Error, search query is too long or contains illegal characters!</string>
<string name="error_wrong_connection_settings">wrong connection settings! Discarc changes?</string>
@ -296,6 +297,7 @@
<string name="account_page" translatable="false">Accounts</string>
<string name="status_translate_text">translate</string>
<string name="status_translate_source">Translated by:\u0020</string>
<string name="status_translate_source_language">Language:\u0020</string>
<string name="confirm_remove_account">remove account from list?</string>
<string name="dialog_confirm_warning">Warning</string>
<string name="dialog_warning_videoview">videoplayer does not support proxy! Continue without proxy connection?</string>