bug fix, layout fixes

This commit is contained in:
nuclearfog 2023-07-02 23:03:53 +02:00
parent b87f04529b
commit 5290a2d475
No known key found for this signature in database
GPG Key ID: 03488A185C476379
16 changed files with 74 additions and 40 deletions

View File

@ -112,7 +112,7 @@ public class ImageCache {
if (!files.containsKey(key)) {
try {
File file = new File(imageFolder, key);
if (file.createNewFile()) {
if ((file.exists() && file.canWrite()) || file.createNewFile()) {
FileOutputStream output = new FileOutputStream(file);
image.compress(Bitmap.CompressFormat.PNG, 1, output);
output.close();

View File

@ -3,6 +3,7 @@ package org.nuclearfog.twidda.backend.utils;
import android.content.Context;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.nuclearfog.twidda.R;
@ -40,6 +41,7 @@ public class ErrorUtils {
* @param exception connection exception
* @return message string
*/
@NonNull
public static String getErrorMessage(Context context, @Nullable ConnectionException exception) {
if (exception != null) {
switch (exception.getErrorCode()) {

View File

@ -1094,7 +1094,7 @@ public class GlobalSettings {
String pushPublicKey = settings.getString(PUSH_PUBLIC_KEY, "");
String pushPrivateKey = settings.getString(PUSH_PRIVATE_KEY, "");
String pushAuthKey = settings.getString(PUSH_AUTH_KEY, "");
boolean mentions = settings.getBoolean(PUSH_ALERT_MENTION, false);
boolean mentions = settings.getBoolean(PUSH_ALERT_MENTION, true);
boolean reposts = settings.getBoolean(PUSH_ALERT_REPOST, false);
boolean favorits = settings.getBoolean(PUSH_ALERT_FAVORITE, false);
boolean following = settings.getBoolean(PUSH_ALERT_FOLLOWING, false);

View File

@ -4,6 +4,8 @@ import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.text.Spannable;
@ -123,6 +125,8 @@ public class ProfileActivity extends AppCompatActivity implements ActivityResult
*/
private static final int SCROLL_THRESHOLD = 10;
private static final int IMAGE_PLACEHOLDER_COLOR = 0x2F000000;
private ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), this);
private AsyncCallback<DomainResult> domainCallback = this::setDomainResult;
private AsyncCallback<RelationResult> relationCallback = this::setRelationResult;
@ -828,6 +832,7 @@ public class ProfileActivity extends AppCompatActivity implements ActivityResult
if (settings.imagesEnabled()) {
String bannerImageUrl = user.getBannerImageThumbnailUrl();
String profileImageUrl = user.getProfileImageThumbnailUrl();
Drawable placeholder = new ColorDrawable(IMAGE_PLACEHOLDER_COLOR);
if (!bannerImageUrl.isEmpty()) {
picasso.load(bannerImageUrl).error(R.drawable.no_banner).into(bannerImage, this);
} else {
@ -836,10 +841,13 @@ public class ProfileActivity extends AppCompatActivity implements ActivityResult
}
if (!profileImageUrl.isEmpty()) {
Transformation roundCorner = new RoundedCornersTransformation(5, 0);
picasso.load(profileImageUrl).transform(roundCorner).error(R.drawable.no_image).into(profileImage);
picasso.load(profileImageUrl).transform(roundCorner).placeholder(placeholder).error(R.drawable.no_image).into(profileImage);
} else {
profileImage.setImageResource(0);
profileImage.setImageDrawable(placeholder);
}
} else {
Drawable placeholder = new ColorDrawable(IMAGE_PLACEHOLDER_COLOR);
profileImage.setImageDrawable(placeholder);
}
// initialize emoji loading for username/description
if (settings.imagesEnabled() && user.getEmojis().length > 0) {

View File

@ -427,7 +427,9 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen
}
// show push configuration dialog
else if (v.getId() == R.id.settings_enable_push_descr) {
pushDialog.show();
if (enablePush.isChecked()) {
pushDialog.show();
}
}
}

View File

@ -110,6 +110,13 @@ public class EmojiAdapter extends Adapter<EmojiHolder> implements OnHolderClickL
notifyDataSetChanged();
}
/**
* @return true if adapter is empty
*/
public boolean isEmpty() {
return items.isEmpty();
}
/**
* Listener used to send emoji information on click
*/

View File

@ -116,7 +116,9 @@ public class AudioPlayerDialog extends Dialog implements OnClickListener, Closea
@Override
protected void onStop() {
super.onStop();
player.pause();
if (player.isPlaying()) {
player.pause();
}
}

View File

@ -69,14 +69,23 @@ public class EmojiPicker extends BottomSheetDialog implements AsyncCallback<List
listView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
listView.setAdapter(adapter);
}
emojiLoader.execute(null, this);
@Override
protected void onStart() {
super.onStart();
if (adapter.isEmpty()) {
emojiLoader.execute(null, this);
}
}
@Override
public void onResult(@NonNull List<Emoji> emojis) {
adapter.replaceItems(emojis);
if (!emojis.isEmpty()) {
adapter.replaceItems(emojis);
}
}

View File

@ -6,7 +6,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/dialog_connection_root_padding"
tools:ignore="UseSwitchCompatOrMaterialXml">
tools:ignore="UseSwitchCompatOrMaterialXml"
tools:context=".ui.dialogs.ConnectionDialog">
<com.kyleduo.switchbutton.SwitchButton
android:id="@+id/dialog_connection_custom_api"
@ -25,8 +26,9 @@
android:lines="1"
android:layout_weight="1"
android:layout_margin="@dimen/dialog_connection_layout_margin"
android:textSize="@dimen/dialog_connection_textsize_label"
app:layout_constraintStart_toEndOf="@id/dialog_connection_custom_api"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toTopOf="@id/dialog_connection_custom_api"
app:layout_constraintBottom_toBottomOf="@id/dialog_connection_custom_api"
app:layout_constraintEnd_toStartOf="@id/dialog_connection_use_v2" />
@ -49,8 +51,9 @@
android:layout_weight="1"
android:layout_margin="@dimen/dialog_connection_layout_margin"
android:visibility="invisible"
android:textSize="@dimen/dialog_connection_textsize_label"
app:layout_constraintStart_toEndOf="@id/dialog_connection_use_v2"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toTopOf="@id/dialog_connection_use_v2"
app:layout_constraintBottom_toBottomOf="@id/dialog_connection_use_v2"
app:layout_constraintEnd_toEndOf="parent" />
@ -66,6 +69,7 @@
android:visibility="invisible"
android:inputType="textPassword"
android:importantForAutofill="no"
android:textSize="@dimen/dialog_connection_textsize_input"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/dialog_connection_custom_api"
app:layout_constraintEnd_toStartOf="@id/dialog_connection_api2" />
@ -82,6 +86,7 @@
android:visibility="invisible"
android:inputType="textPassword"
android:importantForAutofill="no"
android:textSize="@dimen/dialog_connection_textsize_input"
app:layout_constraintStart_toEndOf="@id/dialog_connection_api1"
app:layout_constraintTop_toBottomOf="@id/dialog_connection_custom_api"
app:layout_constraintEnd_toEndOf="parent" />
@ -103,6 +108,7 @@
android:lines="1"
android:layout_weight="1"
android:layout_margin="@dimen/dialog_connection_layout_margin"
android:textSize="@dimen/dialog_connection_textsize_label"
app:layout_constraintStart_toEndOf="@id/dialog_connection_custom_host"
app:layout_constraintTop_toTopOf="@id/dialog_connection_custom_host"
app:layout_constraintBottom_toBottomOf="@id/dialog_connection_custom_host"
@ -120,24 +126,11 @@
android:visibility="invisible"
android:inputType="textUri"
android:importantForAutofill="no"
android:textSize="@dimen/dialog_connection_textsize_input"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/dialog_connection_custom_host"
app:layout_constraintEnd_toEndOf="parent" />
<Button
android:id="@+id/dialog_connection_confirm"
android:layout_width="wrap_content"
android:layout_height="@dimen/dialog_connection_button_height"
android:text="@string/dialog_connection_apply"
android:lines="1"
android:padding="@dimen/dialog_connection_button_padding"
android:layout_margin="@dimen/dialog_connection_layout_margin"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/dialog_connection_hostname"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/dialog_connection_discard"
style="@style/FeedbackButton" />
<Button
android:id="@+id/dialog_connection_discard"
android:layout_width="wrap_content"
@ -146,7 +139,21 @@
android:lines="1"
android:padding="@dimen/dialog_connection_button_padding"
android:layout_margin="@dimen/dialog_connection_layout_margin"
app:layout_constraintStart_toEndOf="@id/dialog_connection_confirm"
android:textSize="@dimen/dialog_connection_textsize_button"
app:layout_constraintTop_toBottomOf="@id/dialog_connection_hostname"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/dialog_connection_confirm"
style="@style/FeedbackButton" />
<Button
android:id="@+id/dialog_connection_confirm"
android:layout_width="wrap_content"
android:layout_height="@dimen/dialog_connection_button_height"
android:text="@string/dialog_apply"
android:lines="1"
android:padding="@dimen/dialog_connection_button_padding"
android:layout_margin="@dimen/dialog_connection_layout_margin"
android:textSize="@dimen/dialog_connection_textsize_button"
app:layout_constraintTop_toBottomOf="@id/dialog_connection_hostname"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View File

@ -220,7 +220,7 @@
android:layout_width="0dp"
android:layout_height="@dimen/dialog_poll_button_height"
android:layout_weight="1"
android:text="@string/dialog_filter_button_apply"
android:text="@string/dialog_apply"
android:lines="1"
android:layout_margin="@dimen/dialog_filter_margin_items_layout"
app:layout_constraintTop_toTopOf="@id/dialog_filter_switch_hide"

View File

@ -199,7 +199,7 @@
android:layout_width="wrap_content"
android:layout_height="@dimen/dialog_push_button_height"
android:padding="@dimen/dialog_push_button_padding"
android:text="@string/dialog_push_apply"
android:text="@string/dialog_apply"
android:layout_margin="@dimen/dialog_push_layout_margin"
android:lines="1"
app:layout_constraintTop_toBottomOf="@id/dialog_push_edit_status"

View File

@ -109,7 +109,6 @@
<string name="proxy_password">Passwort</string>
<string name="error_dm_send">Direktnachricht konnte nicht an diesen Nutzer gesendet werden!</string>
<string name="dialog_connection_custom_host">Benutzerdefinierter Hostname</string>
<string name="dialog_connection_apply">anwenden</string>
<string name="dialog_report_hint_description">zusätzliche Beschreibung</string>
<string name="dialog_report_description_forward">an Quellinstanz weiterleiten</string>
<string name="confirm_mute">Nutzer stummschalten?</string>
@ -241,7 +240,7 @@
<string name="error_media_init">Fehler beim Vorbreiten der Mediendateien!</string>
<string name="menu_status_copy_text">Text</string>
<string name="menu_add_filter">Filter erstellen</string>
<string name="menu_status_copy_link">Status Link</string>
<string name="menu_status_copy_link">Status-Link</string>
<string name="menu_media_link">Medienlink</string>
<string name="info_status_text_copied">Status Text kopiert</string>
<string name="info_status_medialink_copied">Medienlink kopiert</string>
@ -328,7 +327,7 @@
<string name="dialog_push_new_follower">bei neuen Followern</string>
<string name="dialog_push_follow_request">bei neuen Follow-Anfragen</string>
<string name="dialog_push_title">Benachrichtigung</string>
<string name="dialog_push_apply">Änderungen anwenden</string>
<string name="dialog_apply">anwenden</string>
<string name="dialog_report_title_user">Nutzer melden</string>
<string name="dialog_report_category_label">Meldegrund</string>
<string name="dialog_report_title_status">Status melden</string>
@ -355,7 +354,6 @@
<string name="dialog_filter_create">Filter erstellen</string>
<string name="dialog_filter_name_hint">Filternamen eingeben</string>
<string name="dialog_filter_update">Filter aktualisieren</string>
<string name="dialog_filter_button_apply">anwenden</string>
<string name="dialog_filter_apply">Filter anwenden für</string>
<string name="dialog_filter_home">Home-Timeline</string>
<string name="dialog_filter_notification">Benachrichtigungen</string>

View File

@ -241,7 +241,6 @@
<string name="settings_key1_hint">Clave de consumidor</string>
<string name="settings_key2_hint">Secreto de consumidor</string>
<string name="dialog_connection_custom_host">Usar nombre de host personalizado</string>
<string name="dialog_connection_apply">Aplicar cambios</string>
<string name="confirm_mute">¿Silenciar usuario?</string>
<string name="item_list_pb_desc">Perfil del dueño de la lista</string>
<string name="list_appbar">Listas</string>
@ -320,7 +319,7 @@
<string name="dialog_push_new_follower">nuevo seguidor</string>
<string name="dialog_push_follow_request">en solicitud para seguir</string>
<string name="dialog_push_title">Notificación</string>
<string name="dialog_push_apply">aplicar cambios</string>
<string name="dialog_apply">aplicar cambios</string>
<string name="settings_enable_push_label">habilitar notificación push\n(requiere app ntfy)</string>
<string name="notification_favorite">%1$s ha marcado como favorito a tu estado</string>
<string name="notification_repost">%1$s ha re-publicado tu estado</string>

View File

@ -245,7 +245,9 @@
<dimen name="dialog_connection_button_padding">5dp</dimen>
<dimen name="dialog_connection_layout_margin">5dp</dimen>
<dimen name="dialog_connection_root_padding">8dp</dimen>
<dimen name="dialog_connection_textsizte_normal">13sp</dimen>
<dimen name="dialog_connection_textsize_input">18sp</dimen>
<dimen name="dialog_connection_textsize_button">14sp</dimen>
<dimen name="dialog_connection_textsize_label">12sp</dimen>
<!--dimens of dialog_poll.xml-->
<dimen name="dialog_poll_list_height">200sp</dimen>
@ -334,7 +336,7 @@
<!--dimens of dialog_push-->
<dimen name="dialog_push_title_textsize">20sp</dimen>
<dimen name="dialog_push_label_textsize">11sp</dimen>
<dimen name="dialog_push_button_height">28sp</dimen>
<dimen name="dialog_push_button_height">24sp</dimen>
<dimen name="dialog_push_button_padding">5dp</dimen>
<dimen name="dialog_push_layout_margin">5dp</dimen>
<dimen name="dialog_push_label_margin">10sp</dimen>

View File

@ -267,7 +267,6 @@
<string name="settings_key1_hint">Consumer key</string>
<string name="settings_key2_hint">Consumer secret</string>
<string name="dialog_connection_custom_host">use custom hostname</string>
<string name="dialog_connection_apply">apply changes</string>
<string name="dialog_report_hint_description">additional description</string>
<string name="dialog_report_description_forward">forward report to source instance</string>
<string name="confirm_mute">mute user?</string>
@ -351,7 +350,7 @@
<string name="dialog_push_new_follower">new follower</string>
<string name="dialog_push_follow_request">on follow request</string>
<string name="dialog_push_title">Notification</string>
<string name="dialog_push_apply">apply changes</string>
<string name="dialog_apply">apply</string>
<string name="dialog_report_title_user">report user</string>
<string name="dialog_report_category_label">what to report</string>
<string name="dialog_report_title_status">report status</string>
@ -376,7 +375,6 @@
<string name="dialog_filter_create">create filter</string>
<string name="dialog_filter_name_hint">enter filter name</string>
<string name="dialog_filter_update">update filter</string>
<string name="dialog_filter_button_apply">apply</string>
<string name="dialog_filter_apply">apply filter for</string>
<string name="dialog_filter_home">Home timeline</string>
<string name="dialog_filter_notification">Notifications</string>

View File

@ -47,7 +47,6 @@
<item name="android:background">@android:color/transparent</item>
<item name="android:windowCloseOnTouchOutside">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:textSize">@dimen/dialog_connection_textsizte_normal</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
@ -68,6 +67,7 @@
<style name="AudioDialog" parent="Theme.AppCompat.Dialog">
<item name="android:background">@color/player_control</item>
<item name="android:windowMinWidthMinor">90%</item>
<item name="android:windowMinWidthMajor">95%</item>
<item name="android:windowCloseOnTouchOutside">false</item>
</style>