Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1fd82dce authored by Mario Danic's avatar Mario Danic
Browse files

Remove duplicate code



Signed-off-by: default avatarMario Danic <mario@lovelyhq.com>
parent 44bcef5d
Loading
Loading
Loading
Loading
+87 −0
Original line number Diff line number Diff line
@@ -8,16 +8,25 @@ import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.view.ViewCompat;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.ShareActionProvider;
import android.text.SpannableString;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.LinearLayout;
import android.widget.TextView;

import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.model.CloudNote;
import it.niedermann.owncloud.notes.model.DBNote;
import it.niedermann.owncloud.notes.persistence.NoteSQLiteOpenHelper;
import it.niedermann.owncloud.notes.util.DisplayUtils;
import it.niedermann.owncloud.notes.util.ICallback;

public abstract class BaseNoteFragment extends Fragment implements CategoryDialogFragment.CategoryDialogListener {
@@ -33,12 +42,32 @@ public abstract class BaseNoteFragment extends Fragment implements CategoryDialo
    private static final String SAVEDKEY_NOTE = "note";
    private static final String SAVEDKEY_ORIGINAL_NOTE = "original_note";

    protected SearchView searchView;
    protected MenuItem searchMenuItem;

    protected String searchQuery = null;

    protected DBNote note;
    @Nullable
    private DBNote originalNote;
    private NoteSQLiteOpenHelper db;
    private NoteFragmentListener listener;

    private TextView activeTextView;

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        if (savedInstanceState != null) {
            searchQuery = savedInstanceState.getString("searchQuery", "");
        }
    }

    protected void setActiveTextView(TextView textView) {
        activeTextView = textView;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
@@ -89,6 +118,18 @@ public abstract class BaseNoteFragment extends Fragment implements CategoryDialo
        super.onSaveInstanceState(outState);
        outState.putSerializable(SAVEDKEY_NOTE, note);
        outState.putSerializable(SAVEDKEY_ORIGINAL_NOTE, originalNote);

        if (searchView != null && !TextUtils.isEmpty(searchView.getQuery().toString())) {
            outState.putString("searchQuery", searchView.getQuery().toString());
        }
    }

    private void colorWithText(String newText) {
        if (activeTextView != null && ViewCompat.isAttachedToWindow(activeTextView)) {
            activeTextView.setText(DisplayUtils.searchAndColor(activeTextView.getText().toString(), new SpannableString
                            (activeTextView.getText()), newText, getResources().getColor(R.color.primary)),
                    TextView.BufferType.SPANNABLE);
        }
    }

    @Override
@@ -101,6 +142,52 @@ public abstract class BaseNoteFragment extends Fragment implements CategoryDialo
        super.onPrepareOptionsMenu(menu);
        MenuItem itemFavorite = menu.findItem(R.id.menu_favorite);
        prepareFavoriteOption(itemFavorite);

        searchMenuItem = menu.findItem(R.id.search);
        searchView = (android.support.v7.widget.SearchView) searchMenuItem.getActionView();

        if (!TextUtils.isEmpty(searchQuery)) {
            searchView.setQuery(searchQuery, true);
            searchView.clearFocus();
        } else {
            searchMenuItem.collapseActionView();
        }

        final LinearLayout searchEditFrame = searchView.findViewById(android.support.v7.appcompat.R.id
                .search_edit_frame);

        searchEditFrame.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            int oldVisibility = -1;
            @Override
            public void onGlobalLayout() {
                int currentVisibility = searchEditFrame.getVisibility();

                if (currentVisibility != oldVisibility) {
                    if (currentVisibility != View.VISIBLE) {
                        colorWithText("");
                        searchQuery = "";
                    }

                    oldVisibility = currentVisibility;
                }
            }

        });

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                searchQuery = newText;
                colorWithText(newText);
                return true;
            }
        });

    }

    private void prepareFavoriteOption(MenuItem item) {
+1 −82
Original line number Diff line number Diff line
@@ -4,20 +4,14 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewCompat;
import android.text.Editable;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.yydcdut.rxmarkdown.RxMDEditText;
@@ -28,7 +22,6 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.model.CloudNote;
import it.niedermann.owncloud.notes.util.DisplayUtils;
import it.niedermann.owncloud.notes.util.ICallback;
import it.niedermann.owncloud.notes.util.MarkDownUtil;
import rx.Subscriber;
@@ -74,15 +67,11 @@ public class NoteEditFragment extends BaseNoteFragment {
    };
    private android.support.v7.widget.SearchView searchView;

    private String searchQuery = null;
    private MenuItem searchMenuItem;
    private static boolean isNewFragment = false;

    public static NoteEditFragment newInstance(long noteId) {
        NoteEditFragment f = new NoteEditFragment();
        Bundle b = new Bundle();
        b.putLong(PARAM_NOTE_ID, noteId);
        isNewFragment = true;
        f.setArguments(b);
        return f;
    }
@@ -91,7 +80,6 @@ public class NoteEditFragment extends BaseNoteFragment {
        NoteEditFragment f = new NoteEditFragment();
        Bundle b = new Bundle();
        b.putSerializable(PARAM_NEWNOTE, newNote);
        isNewFragment = true;
        f.setArguments(b);
        return f;
    }
@@ -107,64 +95,6 @@ public class NoteEditFragment extends BaseNoteFragment {
        super.onPrepareOptionsMenu(menu);
        menu.findItem(R.id.menu_edit).setVisible(false);
        menu.findItem(R.id.menu_preview).setVisible(true);
        searchMenuItem = menu.findItem(R.id.search);

        searchView = (android.support.v7.widget.SearchView) searchMenuItem.getActionView();

        if (!TextUtils.isEmpty(searchQuery)) {
            if (!isNewFragment) {
                searchMenuItem.expandActionView();
            } else {
                searchMenuItem.collapseActionView();
            }
            searchView.setQuery(searchQuery, true);
            searchView.clearFocus();
        }  else {
            searchMenuItem.collapseActionView();
        }

        final LinearLayout searchEditFrame = searchView.findViewById(android.support.v7.appcompat.R.id
                .search_edit_frame);

        searchEditFrame.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            int oldVisibility = -1;
            @Override
            public void onGlobalLayout() {
                int currentVisibility = searchEditFrame.getVisibility();

                if (currentVisibility != oldVisibility) {
                    if (currentVisibility != View.VISIBLE) {
                        colorWithText("");
                        searchQuery = "";
                    }

                    oldVisibility = currentVisibility;
                }
            }

        });

        searchView.setOnQueryTextListener(new android.support.v7.widget.SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                searchQuery = newText;
                colorWithText(newText);
                return true;
            }
        });
    }

    private void colorWithText(String newText) {
        if (ViewCompat.isAttachedToWindow(editContent)) {
            editContent.setText(DisplayUtils.searchAndColor(editContent.getText().toString(), new SpannableString
                            (editContent.getText()), newText, getResources().getColor(R.color.primary)),
                    TextView.BufferType.SPANNABLE);
        }
    }

    @Nullable
@@ -179,9 +109,7 @@ public class NoteEditFragment extends BaseNoteFragment {

        ButterKnife.bind(this, getView());

        if (savedInstanceState != null) {
            searchQuery = savedInstanceState.getString("searchQuery", "");
        }
        setActiveTextView(editContent);

        if (note.getContent().isEmpty()) {
            getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
@@ -274,13 +202,4 @@ public class NoteEditFragment extends BaseNoteFragment {
            }
        });
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        if (searchView != null && !TextUtils.isEmpty(searchView.getQuery().toString())) {
            outState.putString("searchQuery", searchView.getQuery().toString());
        }
    }

}
+1 −81
Original line number Diff line number Diff line
@@ -2,19 +2,12 @@ package it.niedermann.owncloud.notes.android.fragment;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewCompat;
import android.support.v7.widget.SearchView;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.yydcdut.rxmarkdown.RxMDTextView;
@@ -24,7 +17,6 @@ import com.yydcdut.rxmarkdown.syntax.text.TextFactory;
import butterknife.BindView;
import butterknife.ButterKnife;
import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.util.DisplayUtils;
import it.niedermann.owncloud.notes.util.MarkDownUtil;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
@@ -35,9 +27,6 @@ public class NotePreviewFragment extends BaseNoteFragment {
    @BindView(R.id.single_note_content)
    RxMDTextView noteContent;

    private String searchQuery = null;
    private SearchView searchView;

    private static boolean isNewFragment = false;
    public static NotePreviewFragment newInstance(long noteId) {
        NotePreviewFragment f = new NotePreviewFragment();
@@ -53,56 +42,6 @@ public class NotePreviewFragment extends BaseNoteFragment {
        super.onPrepareOptionsMenu(menu);
        menu.findItem(R.id.menu_edit).setVisible(true);
        menu.findItem(R.id.menu_preview).setVisible(false);
        MenuItem searchMenuItem = menu.findItem(R.id.search);

        searchView = (android.support.v7.widget.SearchView) searchMenuItem.getActionView();

        if (!TextUtils.isEmpty(searchQuery)) {
            if (!isNewFragment) {
                searchMenuItem.expandActionView();
            } else {
                searchMenuItem.collapseActionView();
            }
            searchView.setQuery(searchQuery, true);
            searchView.clearFocus();
        } else {
            searchMenuItem.collapseActionView();
        }

        final LinearLayout searchEditFrame = searchView.findViewById(android.support.v7.appcompat.R.id
                .search_edit_frame);

        searchEditFrame.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            int oldVisibility = -1;
            @Override
            public void onGlobalLayout() {
                int currentVisibility = searchEditFrame.getVisibility();

                if (currentVisibility != oldVisibility) {
                    if (currentVisibility != View.VISIBLE) {
                        colorWithText("");
                        searchQuery = "";
                    }

                    oldVisibility = currentVisibility;
                }
            }

        });

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                searchQuery = newText;
                colorWithText(newText);
                return true;
            }
        });
    }

    @Nullable
@@ -116,9 +55,7 @@ public class NotePreviewFragment extends BaseNoteFragment {
        super.onActivityCreated(savedInstanceState);
        ButterKnife.bind(this, getView());

        if (savedInstanceState != null) {
            searchQuery = savedInstanceState.getString("searchQuery", "");
        }
        setActiveTextView(noteContent);

        String content = note.getContent();
        /*
@@ -164,21 +101,4 @@ public class NotePreviewFragment extends BaseNoteFragment {
    protected String getContent() {
        return note.getContent();
    }

    private void colorWithText(String newText) {
        if (ViewCompat.isAttachedToWindow(noteContent)) {
            noteContent.setText(DisplayUtils.searchAndColor(noteContent.getText().toString(), new SpannableString
                            (noteContent.getText()), newText, getResources().getColor(R.color.primary)),
                    TextView.BufferType.SPANNABLE);
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        if (searchView != null && !TextUtils.isEmpty(searchView.getQuery().toString())) {
            outState.putString("searchQuery", searchView.getQuery().toString());
        }
    }

}