Loading app/src/main/java/app/fedilab/android/client/entities/api/Status.java +1 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,7 @@ public class Status implements Serializable, Cloneable { public boolean isChecked = false; public String translationContent; public boolean translationShown; public boolean canLoadMedia = false; public transient boolean isFocused = false; public transient boolean setCursorToEnd = false; public transient int cursorPosition = 0; Loading app/src/main/java/app/fedilab/android/helper/TimelineHelper.java +17 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ package app.fedilab.android.helper; * see <http://www.gnu.org/licenses>. */ import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Build; import android.text.Html; Loading Loading @@ -239,4 +241,19 @@ public class TimelineHelper { return notifications; } /** * Check if WIFI is opened * * @param context Context * @return boolean */ public static boolean isOnWIFI(Context context) { ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connManager != null) { NetworkInfo activeNetwork = connManager.getActiveNetworkInfo(); return (activeNetwork != null && activeNetwork.getType() == ConnectivityManager.TYPE_WIFI); } return false; } } app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java +169 −146 Original line number Diff line number Diff line Loading @@ -129,6 +129,7 @@ import app.fedilab.android.helper.MastodonHelper; import app.fedilab.android.helper.MediaHelper; import app.fedilab.android.helper.SpannableHelper; import app.fedilab.android.helper.ThemeHelper; import app.fedilab.android.helper.TimelineHelper; import app.fedilab.android.ui.fragment.timeline.FragmentMastodonContext; import app.fedilab.android.viewmodel.mastodon.AccountsVM; import app.fedilab.android.viewmodel.mastodon.SearchVM; Loading Loading @@ -342,6 +343,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> boolean displayBookmark = sharedpreferences.getBoolean(context.getString(R.string.SET_DISPLAY_BOOKMARK), false); boolean long_press_media = sharedpreferences.getBoolean(context.getString(R.string.SET_LONG_PRESS_STORE_MEDIA), false); boolean displayCounters = sharedpreferences.getBoolean(context.getString(R.string.SET_DISPLAY_COUNTER_FAV_BOOST), false); String loadMediaType = sharedpreferences.getString(context.getString(R.string.SET_LOAD_MEDIA_TYPE), "ALWAYS"); if (MainActivity.currentAccount != null && MainActivity.currentAccount.api == Account.API.PLEROMA) { if (status.pleroma != null && status.pleroma.emoji_reactions != null && status.pleroma.emoji_reactions.size() > 0) { Loading Loading @@ -1112,6 +1114,16 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.mediaContainer.removeAllViews(); //If only one attachment if (statusToDeal.media_attachments.size() == 1) { if ((loadMediaType.equals("ASK") || (loadMediaType.equals("WIFI") && !TimelineHelper.isOnWIFI(context))) && !statusToDeal.canLoadMedia) { holder.binding.mediaContainer.setVisibility(View.GONE); holder.binding.displayMedia.setVisibility(View.VISIBLE); holder.binding.displayMedia.setOnClickListener(v -> { statusToDeal.canLoadMedia = true; adapter.notifyItemChanged(holder.getBindingAdapterPosition()); }); } else { holder.binding.mediaContainer.setVisibility(View.VISIBLE); holder.binding.displayMedia.setVisibility(View.GONE); LayoutMediaBinding layoutMediaBinding = LayoutMediaBinding.inflate(LayoutInflater.from(context), holder.binding.attachmentsList, false); RelativeLayout.LayoutParams lp; if (fullAttachement) { Loading Loading @@ -1208,7 +1220,16 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.mediaContainer.addView(layoutMediaBinding.getRoot()); holder.binding.mediaContainer.setVisibility(View.VISIBLE); holder.binding.attachmentsListContainer.setVisibility(View.GONE); } } else { //Several media if ((loadMediaType.equals("ASK") || (loadMediaType.equals("WIFI") && !TimelineHelper.isOnWIFI(context))) && !statusToDeal.canLoadMedia) { holder.binding.mediaContainer.setVisibility(View.GONE); holder.binding.displayMedia.setVisibility(View.VISIBLE); holder.binding.displayMedia.setOnClickListener(v -> { statusToDeal.canLoadMedia = true; adapter.notifyItemChanged(holder.getBindingAdapterPosition()); }); } else { int mediaPosition = 1; for (Attachment attachment : statusToDeal.media_attachments) { LayoutMediaBinding layoutMediaBinding = LayoutMediaBinding.inflate(LayoutInflater.from(context), holder.binding.attachmentsList, false); Loading Loading @@ -1294,7 +1315,9 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.mediaContainer.setVisibility(View.GONE); holder.binding.attachmentsListContainer.setVisibility(View.VISIBLE); } } } else { holder.binding.displayMedia.setVisibility(View.GONE); holder.binding.mediaContainer.setVisibility(View.GONE); holder.binding.attachmentsListContainer.setVisibility(View.GONE); } Loading app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentTimelinesSettings.java +6 −1 Original line number Diff line number Diff line Loading @@ -17,10 +17,12 @@ package app.fedilab.android.ui.fragment.settings; import android.content.SharedPreferences; import android.os.Bundle; import androidx.preference.ListPreference; import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceManager; import app.fedilab.android.R; import app.fedilab.android.helper.Helper; public class FragmentTimelinesSettings extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { Loading @@ -31,7 +33,10 @@ public class FragmentTimelinesSettings extends PreferenceFragmentCompat implemen } private void createPref() { ListPreference SET_LOAD_MEDIA_TYPE = findPreference(getString(R.string.SET_LOAD_MEDIA_TYPE)); if (SET_LOAD_MEDIA_TYPE != null) { SET_LOAD_MEDIA_TYPE.getContext().setTheme(Helper.dialogStyle()); } } @Override Loading app/src/main/res/layout/drawer_status.xml +15 −0 Original line number Diff line number Diff line Loading @@ -382,6 +382,21 @@ </com.google.android.material.card.MaterialCardView> <com.google.android.material.button.MaterialButton android:id="@+id/display_media" style="@style/Widget.MaterialComponents.Button.TextButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="10dp" android:gravity="center_vertical" android:singleLine="true" android:text="@string/display_media" android:textAllCaps="false" android:visibility="gone" app:iconTint="@color/cyanea_accent_reference" app:strokeColor="@color/cyanea_accent_dark_reference" /> <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/media_container" android:layout_width="match_parent" Loading Loading
app/src/main/java/app/fedilab/android/client/entities/api/Status.java +1 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,7 @@ public class Status implements Serializable, Cloneable { public boolean isChecked = false; public String translationContent; public boolean translationShown; public boolean canLoadMedia = false; public transient boolean isFocused = false; public transient boolean setCursorToEnd = false; public transient int cursorPosition = 0; Loading
app/src/main/java/app/fedilab/android/helper/TimelineHelper.java +17 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ package app.fedilab.android.helper; * see <http://www.gnu.org/licenses>. */ import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Build; import android.text.Html; Loading Loading @@ -239,4 +241,19 @@ public class TimelineHelper { return notifications; } /** * Check if WIFI is opened * * @param context Context * @return boolean */ public static boolean isOnWIFI(Context context) { ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connManager != null) { NetworkInfo activeNetwork = connManager.getActiveNetworkInfo(); return (activeNetwork != null && activeNetwork.getType() == ConnectivityManager.TYPE_WIFI); } return false; } }
app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java +169 −146 Original line number Diff line number Diff line Loading @@ -129,6 +129,7 @@ import app.fedilab.android.helper.MastodonHelper; import app.fedilab.android.helper.MediaHelper; import app.fedilab.android.helper.SpannableHelper; import app.fedilab.android.helper.ThemeHelper; import app.fedilab.android.helper.TimelineHelper; import app.fedilab.android.ui.fragment.timeline.FragmentMastodonContext; import app.fedilab.android.viewmodel.mastodon.AccountsVM; import app.fedilab.android.viewmodel.mastodon.SearchVM; Loading Loading @@ -342,6 +343,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> boolean displayBookmark = sharedpreferences.getBoolean(context.getString(R.string.SET_DISPLAY_BOOKMARK), false); boolean long_press_media = sharedpreferences.getBoolean(context.getString(R.string.SET_LONG_PRESS_STORE_MEDIA), false); boolean displayCounters = sharedpreferences.getBoolean(context.getString(R.string.SET_DISPLAY_COUNTER_FAV_BOOST), false); String loadMediaType = sharedpreferences.getString(context.getString(R.string.SET_LOAD_MEDIA_TYPE), "ALWAYS"); if (MainActivity.currentAccount != null && MainActivity.currentAccount.api == Account.API.PLEROMA) { if (status.pleroma != null && status.pleroma.emoji_reactions != null && status.pleroma.emoji_reactions.size() > 0) { Loading Loading @@ -1112,6 +1114,16 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.mediaContainer.removeAllViews(); //If only one attachment if (statusToDeal.media_attachments.size() == 1) { if ((loadMediaType.equals("ASK") || (loadMediaType.equals("WIFI") && !TimelineHelper.isOnWIFI(context))) && !statusToDeal.canLoadMedia) { holder.binding.mediaContainer.setVisibility(View.GONE); holder.binding.displayMedia.setVisibility(View.VISIBLE); holder.binding.displayMedia.setOnClickListener(v -> { statusToDeal.canLoadMedia = true; adapter.notifyItemChanged(holder.getBindingAdapterPosition()); }); } else { holder.binding.mediaContainer.setVisibility(View.VISIBLE); holder.binding.displayMedia.setVisibility(View.GONE); LayoutMediaBinding layoutMediaBinding = LayoutMediaBinding.inflate(LayoutInflater.from(context), holder.binding.attachmentsList, false); RelativeLayout.LayoutParams lp; if (fullAttachement) { Loading Loading @@ -1208,7 +1220,16 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.mediaContainer.addView(layoutMediaBinding.getRoot()); holder.binding.mediaContainer.setVisibility(View.VISIBLE); holder.binding.attachmentsListContainer.setVisibility(View.GONE); } } else { //Several media if ((loadMediaType.equals("ASK") || (loadMediaType.equals("WIFI") && !TimelineHelper.isOnWIFI(context))) && !statusToDeal.canLoadMedia) { holder.binding.mediaContainer.setVisibility(View.GONE); holder.binding.displayMedia.setVisibility(View.VISIBLE); holder.binding.displayMedia.setOnClickListener(v -> { statusToDeal.canLoadMedia = true; adapter.notifyItemChanged(holder.getBindingAdapterPosition()); }); } else { int mediaPosition = 1; for (Attachment attachment : statusToDeal.media_attachments) { LayoutMediaBinding layoutMediaBinding = LayoutMediaBinding.inflate(LayoutInflater.from(context), holder.binding.attachmentsList, false); Loading Loading @@ -1294,7 +1315,9 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.mediaContainer.setVisibility(View.GONE); holder.binding.attachmentsListContainer.setVisibility(View.VISIBLE); } } } else { holder.binding.displayMedia.setVisibility(View.GONE); holder.binding.mediaContainer.setVisibility(View.GONE); holder.binding.attachmentsListContainer.setVisibility(View.GONE); } Loading
app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentTimelinesSettings.java +6 −1 Original line number Diff line number Diff line Loading @@ -17,10 +17,12 @@ package app.fedilab.android.ui.fragment.settings; import android.content.SharedPreferences; import android.os.Bundle; import androidx.preference.ListPreference; import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceManager; import app.fedilab.android.R; import app.fedilab.android.helper.Helper; public class FragmentTimelinesSettings extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { Loading @@ -31,7 +33,10 @@ public class FragmentTimelinesSettings extends PreferenceFragmentCompat implemen } private void createPref() { ListPreference SET_LOAD_MEDIA_TYPE = findPreference(getString(R.string.SET_LOAD_MEDIA_TYPE)); if (SET_LOAD_MEDIA_TYPE != null) { SET_LOAD_MEDIA_TYPE.getContext().setTheme(Helper.dialogStyle()); } } @Override Loading
app/src/main/res/layout/drawer_status.xml +15 −0 Original line number Diff line number Diff line Loading @@ -382,6 +382,21 @@ </com.google.android.material.card.MaterialCardView> <com.google.android.material.button.MaterialButton android:id="@+id/display_media" style="@style/Widget.MaterialComponents.Button.TextButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="10dp" android:gravity="center_vertical" android:singleLine="true" android:text="@string/display_media" android:textAllCaps="false" android:visibility="gone" app:iconTint="@color/cyanea_accent_reference" app:strokeColor="@color/cyanea_accent_dark_reference" /> <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/media_container" android:layout_width="match_parent" Loading