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.content.Context;
import android.os.Build; import android.os.Build;
import android.text.InputType; import android.text.InputType;
import android.util.DisplayMetrics;
import android.view.View; import android.view.View;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.TextView; 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() { public static boolean preLollipop() {
return !atLeastLollipop(); return !atLeastLollipop();
} }

@ -12,15 +12,21 @@ import org.tasks.R;
import org.tasks.activities.FilterSelectionActivity; import org.tasks.activities.FilterSelectionActivity;
import org.tasks.analytics.Tracker; import org.tasks.analytics.Tracker;
import org.tasks.analytics.Tracking; import org.tasks.analytics.Tracking;
import org.tasks.dialogs.SeekBarDialog;
import org.tasks.injection.ActivityComponent; import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingPreferenceActivity; import org.tasks.injection.InjectingPreferenceActivity;
import org.tasks.locale.Locale;
import javax.inject.Inject; 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_CUSTOMIZE = 1004;
private static final int REQUEST_DEFAULT_LIST = 1005; 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"; private static final String EXTRA_BUNDLE = "extra_bundle";
public static final String EXTRA_RESTART = "extra_restart"; public static final String EXTRA_RESTART = "extra_restart";
@ -30,6 +36,7 @@ public class AppearancePreferences extends InjectingPreferenceActivity {
@Inject DefaultFilterProvider defaultFilterProvider; @Inject DefaultFilterProvider defaultFilterProvider;
@Inject Tracker tracker; @Inject Tracker tracker;
@Inject Broadcaster broadcaster; @Inject Broadcaster broadcaster;
@Inject Locale locale;
private Bundle result; private Bundle result;
@ -52,6 +59,12 @@ public class AppearancePreferences extends InjectingPreferenceActivity {
startActivityForResult(new Intent(AppearancePreferences.this, BeastModePreferences.class), REQUEST_CUSTOMIZE); startActivityForResult(new Intent(AppearancePreferences.this, BeastModePreferences.class), REQUEST_CUSTOMIZE);
return true; 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)); Preference defaultList = findPreference(getString(R.string.p_default_list));
Filter filter = defaultFilterProvider.getDefaultFilter(); Filter filter = defaultFilterProvider.getDefaultFilter();
defaultList.setSummary(filter.listingTitle); defaultList.setSummary(filter.listingTitle);
@ -108,4 +121,17 @@ public class AppearancePreferences extends InjectingPreferenceActivity {
public void inject(ActivityComponent component) { public void inject(ActivityComponent component) {
component.inject(this); 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); 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) { public int getIntegerFromString(int keyResource, int defaultValue) {
Resources r = context.getResources(); Resources r = context.getResources();
String value = prefs.getString(r.getString(keyResource), null); String value = prefs.getString(r.getString(keyResource), null);

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

@ -16,6 +16,7 @@ import org.tasks.ui.CheckBoxes;
import javax.inject.Inject; import javax.inject.Inject;
import static android.support.v4.content.ContextCompat.getColor; 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.getData;
import static org.tasks.preferences.ResourceResolver.getResourceId; import static org.tasks.preferences.ResourceResolver.getResourceId;
@ -34,6 +35,7 @@ public class ViewHolderFactory {
private final DisplayMetrics metrics; private final DisplayMetrics metrics;
private final int background; private final int background;
private final int selectedColor; private final int selectedColor;
private final int rowPadding;
@Inject @Inject
public ViewHolderFactory(@ForActivity Context context, Preferences preferences, public ViewHolderFactory(@ForActivity Context context, Preferences preferences,
@ -52,11 +54,12 @@ public class ViewHolderFactory {
showFullTaskTitle = preferences.getBoolean(R.string.p_fullTaskTitle, false); showFullTaskTitle = preferences.getBoolean(R.string.p_fullTaskTitle, false);
fontSize = preferences.getIntegerFromString(R.string.p_fontSize, 16); fontSize = preferences.getIntegerFromString(R.string.p_fontSize, 16);
metrics = context.getResources().getDisplayMetrics(); metrics = context.getResources().getDisplayMetrics();
rowPadding = convertDpToPixels(metrics, preferences.getInt(R.string.p_rowPadding, 16));
} }
ViewHolder newViewHolder(ViewGroup viewGroup, ViewHolder.ViewHolderCallbacks callbacks, MultiSelector multiSelector) { ViewHolder newViewHolder(ViewGroup viewGroup, ViewHolder.ViewHolderCallbacks callbacks, MultiSelector multiSelector) {
return new ViewHolder(context, viewGroup, showFullTaskTitle, fontSize, checkBoxes, return new ViewHolder(context, viewGroup, showFullTaskTitle, fontSize, checkBoxes,
tagFormatter, textColorOverdue, textColorSecondary, textColorHint, taskDao, 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:background="?attr/selectableItemBackground"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:orientation="vertical" android:orientation="vertical">
android:paddingBottom="16dp"
android:paddingTop="16dp">
<!-- row 1 --> <!-- row 1 -->

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

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

Loading…
Cancel
Save