parent
1c86828b65
commit
3dff7f90e7
@ -0,0 +1,36 @@
|
||||
package eu.kanade.mangafeed.ui.setting;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import eu.kanade.mangafeed.R;
|
||||
import eu.kanade.mangafeed.data.preference.PreferencesHelper;
|
||||
import eu.kanade.mangafeed.ui.setting.preference.LibraryColumnsDialog;
|
||||
|
||||
public class SettingsGeneralFragment extends SettingsNestedFragment {
|
||||
|
||||
private LibraryColumnsDialog columnsDialog;
|
||||
|
||||
public static SettingsNestedFragment newInstance(int resourcePreference, int resourceTitle) {
|
||||
SettingsNestedFragment fragment = new SettingsGeneralFragment();
|
||||
fragment.setArgs(resourcePreference, resourceTitle);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
|
||||
View view = super.onCreateView(inflater, container, savedState);
|
||||
|
||||
PreferencesHelper preferences = getSettingsActivity().preferences;
|
||||
|
||||
columnsDialog = (LibraryColumnsDialog) findPreference(
|
||||
getString(R.string.pref_library_columns_dialog_key));
|
||||
|
||||
columnsDialog.setPreferencesHelper(preferences);
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,80 @@
|
||||
package eu.kanade.mangafeed.ui.setting.preference;
|
||||
|
||||
import android.content.Context;
|
||||
import android.preference.DialogPreference;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.widget.NumberPicker;
|
||||
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
import eu.kanade.mangafeed.R;
|
||||
import eu.kanade.mangafeed.data.preference.PreferencesHelper;
|
||||
|
||||
public class LibraryColumnsDialog extends DialogPreference {
|
||||
|
||||
private Context context;
|
||||
private PreferencesHelper preferences;
|
||||
|
||||
@Bind(R.id.portrait_columns) NumberPicker portraitColumns;
|
||||
@Bind(R.id.landscape_columns) NumberPicker landscapeColumns;
|
||||
|
||||
public LibraryColumnsDialog(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
init(context);
|
||||
}
|
||||
|
||||
public LibraryColumnsDialog(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
init(context);
|
||||
}
|
||||
|
||||
private void init(Context context) {
|
||||
this.context = context;
|
||||
setDialogLayoutResource(R.layout.pref_library_columns);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onBindDialogView(View view) {
|
||||
super.onBindDialogView(view);
|
||||
ButterKnife.bind(this, view);
|
||||
|
||||
portraitColumns.setValue(preferences.portraitColumns().get());
|
||||
landscapeColumns.setValue(preferences.landscapeColumns().get());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDialogClosed(boolean positiveResult) {
|
||||
super.onDialogClosed(positiveResult);
|
||||
|
||||
if (positiveResult) {
|
||||
preferences.portraitColumns().set(portraitColumns.getValue());
|
||||
preferences.landscapeColumns().set(landscapeColumns.getValue());
|
||||
updateSummary();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateSummary() {
|
||||
setSummary(getColumnsSummary());
|
||||
}
|
||||
|
||||
private String getColumnsSummary() {
|
||||
return String.format("%s: %s, %s: %s",
|
||||
context.getString(R.string.portrait),
|
||||
getColumnValue(preferences.portraitColumns().get()),
|
||||
context.getString(R.string.landscape),
|
||||
getColumnValue(preferences.landscapeColumns().get()));
|
||||
}
|
||||
|
||||
private String getColumnValue(int value) {
|
||||
return value == 0 ? context.getString(R.string.default_columns) : value + "";
|
||||
}
|
||||
|
||||
public void setPreferencesHelper(PreferencesHelper preferences) {
|
||||
this.preferences = preferences;
|
||||
|
||||
// Set initial summary when the preferences helper is provided
|
||||
updateSummary();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package eu.kanade.mangafeed.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
public class AutofitRecyclerView extends RecyclerView {
|
||||
|
||||
private GridLayoutManager manager;
|
||||
private int columnWidth = -1;
|
||||
private int spanCount = 0;
|
||||
|
||||
public AutofitRecyclerView(Context context) {
|
||||
super(context);
|
||||
init(context, null);
|
||||
}
|
||||
|
||||
public AutofitRecyclerView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
init(context, attrs);
|
||||
}
|
||||
|
||||
public AutofitRecyclerView(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
init(context, attrs);
|
||||
}
|
||||
|
||||
private void init(Context context, AttributeSet attrs) {
|
||||
if (attrs != null) {
|
||||
int[] attrsArray = {
|
||||
android.R.attr.columnWidth
|
||||
};
|
||||
TypedArray array = context.obtainStyledAttributes(attrs, attrsArray);
|
||||
columnWidth = array.getDimensionPixelSize(0, -1);
|
||||
array.recycle();
|
||||
}
|
||||
|
||||
manager = new GridLayoutManager(getContext(), 1);
|
||||
setLayoutManager(manager);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthSpec, int heightSpec) {
|
||||
super.onMeasure(widthSpec, heightSpec);
|
||||
if (spanCount == 0 && columnWidth > 0) {
|
||||
int spanCount = Math.max(1, getMeasuredWidth() / columnWidth);
|
||||
manager.setSpanCount(spanCount);
|
||||
}
|
||||
}
|
||||
|
||||
public void setSpanCount(int spanCount) {
|
||||
this.spanCount = spanCount;
|
||||
if (spanCount > 0) {
|
||||
manager.setSpanCount(spanCount);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingTop="15dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:gravity="center">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/portrait"/>
|
||||
|
||||
<eu.kanade.mangafeed.widget.MinMaxNumberPicker
|
||||
android:id="@+id/portrait_columns"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:min="0"
|
||||
app:max="10"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:gravity="center">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/landscape"/>
|
||||
|
||||
<eu.kanade.mangafeed.widget.MinMaxNumberPicker
|
||||
android:id="@+id/landscape_columns"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:min="0"
|
||||
app:max="10"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<eu.kanade.mangafeed.ui.setting.preference.LibraryColumnsDialog
|
||||
android:key="@string/pref_library_columns_dialog_key"
|
||||
android:persistent="false"
|
||||
android:title="@string/pref_library_columns"/>
|
||||
|
||||
</PreferenceScreen>
|
Loading…
Reference in new issue