Add preference for spacing between rows

pull/511/head^2
Alex Baker 9 years ago
parent 0be6cecc2f
commit 726342b292

@ -11,6 +11,7 @@ import android.content.ContentValues;
import android.content.Context;
import android.os.Build;
import android.text.InputType;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.TextView;
@ -203,6 +204,11 @@ public class AndroidUtilities {
}
}
public static int convertDpToPixels(DisplayMetrics displayMetrics, int dp) {
// developer.android.com/guide/practices/screens_support.html#dips-pels
return (int) (dp * displayMetrics.density + 0.5f);
}
public static boolean preLollipop() {
return !atLeastLollipop();
}

@ -12,15 +12,21 @@ import org.tasks.R;
import org.tasks.activities.FilterSelectionActivity;
import org.tasks.analytics.Tracker;
import org.tasks.analytics.Tracking;
import org.tasks.dialogs.SeekBarDialog;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingPreferenceActivity;
import org.tasks.locale.Locale;
import javax.inject.Inject;
public class AppearancePreferences extends InjectingPreferenceActivity {
import static org.tasks.dialogs.SeekBarDialog.newSeekBarDialog;
public class AppearancePreferences extends InjectingPreferenceActivity implements SeekBarDialog.SeekBarCallback {
private static final int REQUEST_CUSTOMIZE = 1004;
private static final int REQUEST_DEFAULT_LIST = 1005;
private static final int REQUEST_ROW_PADDING = 1006;
private static final String FRAG_TAG_ROW_PADDING_SEEKBAR = "frag_tag_row_padding_seekbar";
private static final String EXTRA_BUNDLE = "extra_bundle";
public static final String EXTRA_RESTART = "extra_restart";
@ -30,6 +36,7 @@ public class AppearancePreferences extends InjectingPreferenceActivity {
@Inject DefaultFilterProvider defaultFilterProvider;
@Inject Tracker tracker;
@Inject Broadcaster broadcaster;
@Inject Locale locale;
private Bundle result;
@ -52,6 +59,12 @@ public class AppearancePreferences extends InjectingPreferenceActivity {
startActivityForResult(new Intent(AppearancePreferences.this, BeastModePreferences.class), REQUEST_CUSTOMIZE);
return true;
});
findPreference(R.string.p_rowPadding).setOnPreferenceClickListener(preference -> {
newSeekBarDialog(R.layout.dialog_font_size_seekbar, 0, 16, preferences.getRowPadding(), REQUEST_ROW_PADDING)
.show(getFragmentManager(), FRAG_TAG_ROW_PADDING_SEEKBAR);
return false;
});
updateRowPadding();
Preference defaultList = findPreference(getString(R.string.p_default_list));
Filter filter = defaultFilterProvider.getDefaultFilter();
defaultList.setSummary(filter.listingTitle);
@ -108,4 +121,17 @@ public class AppearancePreferences extends InjectingPreferenceActivity {
public void inject(ActivityComponent component) {
component.inject(this);
}
@Override
public void valueSelected(int value, int requestCode) {
if (requestCode == REQUEST_ROW_PADDING) {
preferences.setInt(R.string.p_rowPadding, value);
result.putBoolean(EXTRA_RESTART, true);
updateRowPadding();
}
}
private void updateRowPadding() {
findPreference(R.string.p_rowPadding).setSummary(locale.formatNumber(preferences.getRowPadding()));
}
}

@ -149,6 +149,10 @@ public class Preferences {
return getIntegerFromString(R.string.p_default_reminders_mode_key, 0);
}
public int getRowPadding() {
return getInt(R.string.p_rowPadding, 16);
}
public int getIntegerFromString(int keyResource, int defaultValue) {
Resources r = context.getResources();
String value = prefs.getString(r.getString(keyResource), null);

@ -126,7 +126,8 @@ class ViewHolder extends MultiSelectorBindingHolder {
CheckBoxes checkBoxes, TagFormatter tagFormatter,
int textColorOverdue, int textColorSecondary, int textColorHint, TaskDao taskDao,
DialogBuilder dialogBuilder, ViewHolderCallbacks callback,
DisplayMetrics metrics, int background, int selectedColor, MultiSelector multiSelector) {
DisplayMetrics metrics, int background, int selectedColor, MultiSelector multiSelector,
int rowPadding) {
super(view, multiSelector);
this.context = context;
this.checkBoxes = checkBoxes;
@ -150,11 +151,7 @@ class ViewHolder extends MultiSelectorBindingHolder {
nameView.setEllipsize(null);
}
if (fontSize < 16) {
// developer.android.com/guide/practices/screens_support.html#dips-pels
int fontSizeInDP = (int) (fontSize * metrics.density + 0.5f);
rowBody.setPadding(0, fontSizeInDP, 0, fontSizeInDP);
}
rowBody.setPadding(0, rowPadding, 0, rowPadding);
nameView.setTextSize(fontSize);
int fontSizeDetails = Math.max(10, fontSize - 2);

@ -16,6 +16,7 @@ import org.tasks.ui.CheckBoxes;
import javax.inject.Inject;
import static android.support.v4.content.ContextCompat.getColor;
import static com.todoroo.andlib.utility.AndroidUtilities.convertDpToPixels;
import static org.tasks.preferences.ResourceResolver.getData;
import static org.tasks.preferences.ResourceResolver.getResourceId;
@ -34,6 +35,7 @@ public class ViewHolderFactory {
private final DisplayMetrics metrics;
private final int background;
private final int selectedColor;
private final int rowPadding;
@Inject
public ViewHolderFactory(@ForActivity Context context, Preferences preferences,
@ -52,11 +54,12 @@ public class ViewHolderFactory {
showFullTaskTitle = preferences.getBoolean(R.string.p_fullTaskTitle, false);
fontSize = preferences.getIntegerFromString(R.string.p_fontSize, 16);
metrics = context.getResources().getDisplayMetrics();
rowPadding = convertDpToPixels(metrics, preferences.getInt(R.string.p_rowPadding, 16));
}
ViewHolder newViewHolder(ViewGroup viewGroup, ViewHolder.ViewHolderCallbacks callbacks, MultiSelector multiSelector) {
return new ViewHolder(context, viewGroup, showFullTaskTitle, fontSize, checkBoxes,
tagFormatter, textColorOverdue, textColorSecondary, textColorHint, taskDao,
dialogBuilder, callbacks, metrics, background, selectedColor, multiSelector);
dialogBuilder, callbacks, metrics, background, selectedColor, multiSelector, rowPadding);
}
}

@ -6,9 +6,7 @@
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="vertical"
android:paddingBottom="16dp"
android:paddingTop="16dp">
android:orientation="vertical">
<!-- row 1 -->

@ -89,6 +89,7 @@
<!-- ======================================================= APPEARANCE == -->
<string name="p_fontSize">font_size</string>
<string name="p_rowPadding">row_padding</string>
<string name="p_voiceRemindersEnabled">voiceRemindersEnabled</string>

@ -15,6 +15,11 @@
android:key="@string/p_fontSize"
android:title="@string/font_size" />
<Preference
android:defaultValue="16"
android:key="@string/p_rowPadding"
android:title="Row spacing" />
<com.todoroo.astrid.ui.MultilineCheckboxPreference
android:defaultValue="false"
android:key="@string/p_fullTaskTitle"

Loading…
Cancel
Save