package org.softeg.slartus.forpdaplus.prefs;/*
* Created by slinkin on 16.04.2014.
*/
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import com.afollestad.materialdialogs.MaterialDialog;
import org.softeg.slartus.forpdaplus.R;
public class TopicsPreferenceFragment extends PreferenceFragment implements Preference.OnPreferenceClickListener {
public static String ListName = "";
@SuppressWarnings("ConstantConditions")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.topics_list_prefs);
Preference sortPreference = findPreference("topics.list.sort");
sortPreference.setOnPreferenceClickListener(this);
sortPreference.setSummary(getSortTitle());
}
private String getSortTitle() {
String title = "";
Boolean asc = true;
switch (Preferences.List.getListSort(getListName(), Preferences.List.defaultListSort())) {
case "sortorder.desc":
asc = false;
case "sortorder.asc":
title = getString(R.string.sort_how_on_site);
break;
case "date.desc":
asc = false;
case "date.asc":
title = getString(R.string.sort_date_last_post);
break;
case "date_and_new.desc":
asc = false;
case "date_and_new.asc":
title = getString(R.string.sort_date_last_post_unview);
break;
case "title.desc":
asc = false;
case "title.asc":
title = getString(R.string.sort_topic_name);
break;
}
return String.format("%s (%s)", title, (asc ? getString(R.string.sort_ascending) : getString(R.string.sort_descending)));
}
@Override
public void onActivityCreated(android.os.Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
PreferenceManager.setDefaultValues(getActivity(), R.xml.topics_list_prefs, false);
}
@Override
public boolean onPreferenceClick(Preference preference) {
String key = preference.getKey();
switch (key) {
case "topics.list.sort":
showSortDialog();
return true;
}
return false;
}
private void showSortDialog() {
LayoutInflater inflater = LayoutInflater.from(getActivity());
View v = inflater.inflate(R.layout.topics_sort_dialog, null);
assert v != null;
final RadioGroup radioGroup = (RadioGroup) v.findViewById(R.id.rgSortType);
switch (Preferences.List.getListSort(getListName(), Preferences.List.defaultListSort())) {
case "sortorder.desc":
case "sortorder.asc":
((RadioButton) radioGroup.findViewById(R.id.rbSortBySortOrder)).setChecked(true);
break;
case "date.desc":
case "date.asc":
((RadioButton) radioGroup.findViewById(R.id.rbSortByDate)).setChecked(true);
break;
case "date_and_new.desc":
case "date_and_new.asc":
((RadioButton) radioGroup.findViewById(R.id.rbSortByDateAndNew)).setChecked(true);
break;
case "title.desc":
case "title.asc":
((RadioButton) radioGroup.findViewById(R.id.rbSortByTitle)).setChecked(true);
break;
default:
((RadioButton) radioGroup.findViewById(R.id.rbSortBySortOrder)).setChecked(true);
break;
}
new MaterialDialog.Builder(getActivity())
.title(R.string.sort)
.customView(v,true)
.positiveText(R.string.sort_descending)
.neutralText(R.string.sort_ascending)
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
String sortValue = "date";
switch (radioGroup.getCheckedRadioButtonId()) {
case R.id.rbSortBySortOrder:
sortValue = "sortorder";
break;
case R.id.rbSortByDate:
sortValue = "date";
break;
case R.id.rbSortByDateAndNew:
sortValue = "date_and_new";
break;
case R.id.rbSortByTitle:
sortValue = "title";
break;
}
Preferences.List.setListSort(getListName(), sortValue + ".desc");
Toast.makeText(getActivity(), R.string.need_refresh_list,
Toast.LENGTH_SHORT).show();
}
@Override
public void onNeutral(MaterialDialog dialog) {
String sortValue = "date";
switch (radioGroup.getCheckedRadioButtonId()) {
case R.id.rbSortBySortOrder:
sortValue = "sortorder";
break;
case R.id.rbSortByDate:
sortValue = "date";
break;
case R.id.rbSortByDateAndNew:
sortValue = "date_and_new";
break;
case R.id.rbSortByTitle:
sortValue = "title";
break;
}
Preferences.List.setListSort(getListName(), sortValue + ".asc");
Toast.makeText(getActivity(), R.string.need_refresh_list,
Toast.LENGTH_SHORT).show();
}
})
.show();
}
private String getListName() {
return ListName;
}
}