/*
* Copyright (C) 2012-2016 The Android Money Manager Ex Project Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.money.manager.ex.common;
import android.animation.LayoutTransition;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.SearchView;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import com.melnykov.fab.FloatingActionButton;
import com.money.manager.ex.home.MainActivity;
import com.money.manager.ex.R;
import com.money.manager.ex.core.AbsListFragment;
import com.money.manager.ex.core.SearchViewFormatter;
import com.money.manager.ex.fragment.TipsDialogFragment;
import com.money.manager.ex.settings.PreferenceConstants;
/**
*
*/
public abstract class BaseListFragment
extends AbsListFragment {
private static final String KEY_SHOWN_TIPS_WILDCARD = "BaseListFragment:isShowTipsWildcard";
FloatingActionButton mFloatingActionButton;
// menu items
private boolean mShowMenuItemSearch = false;
private boolean mMenuItemSearchIconified = true;
// flag for tips wildcard
private boolean isShowTipsWildcard = false;
// hint search view
private String mSearchHint = "";
// abstract method
public abstract String getSubTitle();
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
mFloatingActionButton = (FloatingActionButton) view.findViewById(R.id.fab);
if (mFloatingActionButton != null) {
mFloatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onFloatingActionButtonClicked();
}
});
}
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// set animation
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
getListView().setLayoutTransition(new LayoutTransition());
}
// saved instance
if (savedInstanceState != null && savedInstanceState.containsKey(KEY_SHOWN_TIPS_WILDCARD)) {
isShowTipsWildcard = savedInstanceState.getBoolean(KEY_SHOWN_TIPS_WILDCARD);
}
// set subtitle in actionbar
String subTitle = getSubTitle();
if (!(TextUtils.isEmpty(subTitle)) && getActivity() instanceof AppCompatActivity) {
AppCompatActivity activity = (AppCompatActivity) getActivity();
if (activity != null) {
activity.getSupportActionBar().setSubtitle(subTitle);
}
}
}
@Override
public void onStart() {
super.onStart();
// show tooltip wildcard
// check search type
Boolean searchType = PreferenceManager.getDefaultSharedPreferences(getActivity())
.getBoolean(getString(PreferenceConstants.PREF_TEXT_SEARCH_TYPE), Boolean.TRUE);
if (isSearchMenuVisible() && !searchType && !isShowTipsWildcard) {
// show tooltip for wildcard
TipsDialogFragment tipsSync = TipsDialogFragment.getInstance(getActivity().getApplicationContext(), "lookupswildcard");
if (tipsSync != null) {
tipsSync.setTips(getString(R.string.lookups_wildcard));
// tipsSync.setCheckDontShowAgain(true);
tipsSync.show(getActivity().getSupportFragmentManager(), "lookupswildcard");
isShowTipsWildcard = true; // set shown
}
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
if (isSearchMenuVisible() && getActivity() != null && getActivity() instanceof AppCompatActivity) {
// Place an action bar item for searching.
final MenuItem itemSearch = menu.add(Menu.NONE, R.id.menu_query_mode, 1000, R.string.search);
itemSearch.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
SearchView searchView = new SearchView(getActivity());
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
return BaseListFragment.this.onPreQueryTextChange(s);
}
});
// searchView.setIconifiedByDefault(isMenuItemSearchIconified());
searchView.setIconified(isMenuItemSearchIconified());
itemSearch.setActionView(searchView);
SearchViewFormatter formatter = new SearchViewFormatter();
formatter.setSearchIconResource(R.drawable.ic_action_search_dark, true, true);
formatter.setSearchCloseIconResource(R.drawable.ic_action_content_clear_dark);
formatter.setSearchTextColorResource(R.color.abc_primary_text_material_dark);
//formatter.setSearchHintColorResource(R.color.mmx_hint_foreground_material_dark);
formatter.setSearchHintText(getSearchHint());
formatter.format(searchView);
// if (getSearchCollapsed()) {
// itemSearch.collapseActionView();
// }
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if (getActivity() != null && getActivity() instanceof MainActivity)
return super.onOptionsItemSelected(item);
// set result and exit
this.setResultAndFinish();
return true; // consumed here
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean(KEY_SHOWN_TIPS_WILDCARD, isShowTipsWildcard);
super.onSaveInstanceState(outState);
}
public boolean isSearchMenuVisible() {
return mShowMenuItemSearch;
}
public void setSearchMenuVisible(boolean mShowMenuItemSearch) {
this.mShowMenuItemSearch = mShowMenuItemSearch;
}
public void setResultAndFinish() {
this.setResult();
getActivity().finish();
}
public boolean isMenuItemSearchIconified() {
return mMenuItemSearchIconified;
}
public void setMenuItemSearchIconified(boolean mMenuItemSearchIconified) {
this.mMenuItemSearchIconified = mMenuItemSearchIconified;
}
public String getSearchHint() {
return mSearchHint;
}
public void setSearchHint(@NonNull String mSearchHint) {
this.mSearchHint = mSearchHint;
}
// Floating button methods
public FloatingActionButton getFloatingActionButton() {
return mFloatingActionButton;
}
public void setFloatingActionButtonVisible(boolean visible) {
if (mFloatingActionButton != null) {
mFloatingActionButton.setVisibility(visible ? View.VISIBLE : View.GONE);
}
}
public void attachFloatingActionButtonToListView() {
if (mFloatingActionButton != null) {
mFloatingActionButton.attachToListView(getListView());
}
}
public void onFloatingActionButtonClicked() {
return;
}
// End floating button methods.
protected boolean onPreQueryTextChange(String newText) {
if (PreferenceManager.getDefaultSharedPreferences(getActivity())
.getBoolean(getString(PreferenceConstants.PREF_TEXT_SEARCH_TYPE), Boolean.TRUE))
newText = "%" + newText;
return onQueryTextChange(newText);
}
protected boolean onQueryTextChange(String newText) {
return true;
}
/**
* metodo per l'implementazione del ritorno dei dati
*/
protected void setResult() { }
}