Commit 5e5257b0 authored by Thomas's avatar Thomas
Browse files

Display media (always/wifi/ask)

parent dc8243fd
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+17 −0
Original line number Diff line number Diff line
@@ -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;

@@ -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;
    }
}
+169 −146
Original line number Diff line number Diff line
@@ -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;
@@ -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) {
@@ -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) {
@@ -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);
@@ -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);
        }
+6 −1
Original line number Diff line number Diff line
@@ -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 {

@@ -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
+15 −0
Original line number Diff line number Diff line
@@ -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