RTL support

pull/437/head
Alex Baker 10 years ago
parent d18f35965e
commit cc022036b2

@ -94,6 +94,7 @@
android:theme="@style/LightBase"
android:allowBackup="true"
android:name=".Tasks"
android:supportsRtl="true"
android:manageSpaceActivity="com.todoroo.astrid.core.OldTaskPreferences">
<!-- ====================================================== Activities = -->

@ -55,6 +55,7 @@ public class FilesControlSet extends TaskEditControlFragment {
public static final int TAG = R.string.TEA_ctrl_files_pref;
private static final char LEFT_TO_RIGHT_MARK = '\u200e';
private static final int REQUEST_ADD_ATTACHMENT = 50;
private static final String EXTRA_UUID = "extra_uuid";
@ -140,7 +141,7 @@ public class FilesControlSet extends TaskEditControlFragment {
}
private void addAttachment(TaskAttachment taskAttachment) {
View fileRow = getActivity().getLayoutInflater().inflate(R.layout.file_row, null);
View fileRow = getActivity().getLayoutInflater().inflate(R.layout.file_row, attachmentContainer, false);
fileRow.setTag(taskAttachment);
attachmentContainer.addView(fileRow);
addAttachment(taskAttachment, fileRow);
@ -148,7 +149,7 @@ public class FilesControlSet extends TaskEditControlFragment {
private void addAttachment(final TaskAttachment taskAttachment, final View fileRow) {
TextView nameView = (TextView) fileRow.findViewById(R.id.file_text);
String name = taskAttachment.getName();
String name = LEFT_TO_RIGHT_MARK + taskAttachment.getName();
nameView.setText(name);
nameView.setOnClickListener(new OnClickListener() {
@Override

@ -70,6 +70,7 @@ import static com.google.common.collect.Lists.newArrayList;
import static com.google.common.collect.Sets.difference;
import static com.google.common.collect.Sets.filter;
import static com.google.common.collect.Sets.newHashSet;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastJellybeanMR1;
/**
* Control set to manage adding and removing tags
@ -163,10 +164,14 @@ public final class TagsControlSet extends TaskEditControlFragment {
TagData tagData = allTags.get(position);
ThemeColor themeColor = themeCache.getThemeColor(tagData.getColor() >= 0 ? tagData.getColor() : 19);
view.setText(tagData.getName());
Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_label_24dp));
drawable.mutate();
DrawableCompat.setTint(drawable, themeColor.getPrimaryColor());
view.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
Drawable original = getResources().getDrawable(R.drawable.ic_label_24dp);
Drawable wrapped = DrawableCompat.wrap(original.mutate());
DrawableCompat.setTint(wrapped, themeColor.getPrimaryColor());
if (atLeastJellybeanMR1()) {
view.setCompoundDrawablesRelativeWithIntrinsicBounds(wrapped, null, null, null);
} else {
view.setCompoundDrawablesWithIntrinsicBounds(wrapped, null, null, null);
}
return view;
}
});

@ -97,6 +97,7 @@ public class HideUntilControlSet extends TaskEditControlFragment implements OnIt
selectedItemPosition = ((AdapterView) parent).getSelectedItemPosition();
}
TextView tv = (TextView) inflater.inflate(android.R.layout.simple_spinner_item, parent, false);
tv.setPadding(0, 0, 0, 0);
HideUntilValue value = getItem(selectedItemPosition);
if (value.setting == Task.HIDE_UNTIL_NONE) {
clearButton.setVisibility(View.GONE);

@ -4,7 +4,6 @@ import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.graphics.drawable.DrawableCompat;
@ -12,7 +11,6 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;
@ -26,6 +24,8 @@ import org.tasks.themes.ThemeCache;
import javax.inject.Inject;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastJellybeanMR1;
public class ThemePickerDialog extends InjectingDialogFragment {
private static final String EXTRA_COLOR_PALETTE = "extra_color_palette";
@ -64,7 +64,7 @@ public class ThemePickerDialog extends InjectingDialogFragment {
palette = (ColorPalette) savedInstanceState.getSerializable(EXTRA_COLOR_PALETTE);
}
final String[] themes = context.getResources().getStringArray(getNameRes());
final String[] themes = getResources().getStringArray(getNameRes());
final boolean purchasedThemes = preferences.hasPurchase(R.string.p_purchased_themes);
@ -72,25 +72,21 @@ public class ThemePickerDialog extends InjectingDialogFragment {
ListAdapter adapter = new ArrayAdapter<String>(context, R.layout.color_selection_row, themes) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) {
row = inflater.inflate(R.layout.color_selection_row, parent, false);
}
Resources resources = context.getResources();
ImageView primary = (ImageView) row.findViewById(R.id.color_primary);
Drawable original = resources.getDrawable(purchasedThemes || position < 2
TextView textView = (TextView) (convertView == null
? inflater.inflate(R.layout.color_selection_row, parent, false)
: convertView);
Drawable original = getResources().getDrawable(purchasedThemes || position < 2
? R.drawable.ic_lens_black_24dp
: R.drawable.ic_vpn_key_black_24dp);
Drawable wrapped = DrawableCompat.wrap(original.mutate());
DrawableCompat.setTint(wrapped, getDisplayColor(position));
primary.setImageDrawable(wrapped);
TextView text = (TextView) row.findViewById(android.R.id.text1);
text.setText(themes[position]);
return row;
if (atLeastJellybeanMR1()) {
textView.setCompoundDrawablesRelativeWithIntrinsicBounds(wrapped, null, null, null);
} else {
textView.setCompoundDrawablesWithIntrinsicBounds(wrapped, null, null, null);
}
textView.setText(themes[position]);
return textView;
}
};

@ -39,7 +39,6 @@ import butterknife.OnItemSelected;
import static com.google.common.collect.Lists.newArrayList;
import static java.util.Arrays.asList;
import static org.tasks.date.DateTimeUtils.newDateTime;
import static org.tasks.preferences.ResourceResolver.getData;
public class DeadlineControlSet extends TaskEditControlFragment {
@ -138,6 +137,7 @@ public class DeadlineControlSet extends TaskEditControlFragment {
selectedItemPosition = ((AdapterView) parent).getSelectedItemPosition();
}
TextView tv = (TextView) inflater.inflate(android.R.layout.simple_spinner_item, parent, false);
tv.setPadding(0, 0, 0, 0);
tv.setText(dueDateOptions.get(selectedItemPosition));
int textColor;
if (date == 0) {
@ -162,6 +162,7 @@ public class DeadlineControlSet extends TaskEditControlFragment {
selectedItemPosition = ((AdapterView) parent).getSelectedItemPosition();
}
TextView tv = (TextView) inflater.inflate(android.R.layout.simple_spinner_item, parent, false);
tv.setPadding(0, 0, 0, 0);
tv.setText(dueTimeOptions.get(selectedItemPosition));
int textColor;
if (time == -1) {

@ -1,22 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="@dimen/keyline_first">
<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2006 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
<ImageView
android:id="@+id/color_primary"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
http://www.apache.org/licenses/LICENSE-2.0
<TextView
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawablePadding="@dimen/keyline_second"
android:gravity="center_vertical"
android:paddingLeft="@dimen/keyline_first"
android:paddingStart="@dimen/keyline_first"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:paddingLeft="?android:attr/listPreferredItemPaddingStart"
android:paddingRight="?android:attr/listPreferredItemPaddingEnd"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:textAppearance="?android:attr/textAppearanceListItemSmall" />
</LinearLayout>

@ -1,62 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<?xml version="1.0" encoding="utf-8"?><!--
** Copyright (c) 2012 Todoroo Inc
**
** See the file "LICENSE" for the full license governing this code.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="55dip"
android:orientation="vertical">
android:background="?attr/selectableItemBackground"
android:orientation="vertical"
android:padding="@dimen/keyline_first">
<RelativeLayout
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/list_selector_background"
android:paddingTop="5dip"
android:paddingBottom="5dip"
android:paddingLeft="6dip"
android:paddingRight="6dip">
<!-- title -->
<TextView android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:textColor="?android:attr/textColorPrimary"
android:layout_alignParentLeft="true"
android:paddingLeft="5dip"
android:paddingRight="3dip"
android:textSize="16sp" />
<!-- activity date -->
<TextView android:id="@+id/date"
android:layout_width="fill_parent"
<TextView
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:layout_alignLeft="@id/title"
android:layout_marginLeft="5dip"
android:paddingTop="1dip"
android:textColor="?android:attr/textColorSecondary"
android:textStyle="normal"
android:gravity="left"
android:ellipsize="end"
android:singleLine="true"
android:textColor="?android:attr/textColorSecondary"
android:textSize="12sp"
android:singleLine="true"/>
</RelativeLayout>
android:textStyle="normal" />
<!-- picture -->
<ImageView
android:id="@+id/comment_picture"
android:layout_width="50dip"
android:layout_height="50dip"
android:layout_alignParentBottom="true"
android:layout_marginLeft="50dip"
android:layout_marginBottom="4dip"
android:scaleType="fitCenter"
android:visibility="gone"
android:scaleType="fitCenter"/>
tools:ignore="ContentDescription" />
</LinearLayout>

@ -3,6 +3,8 @@
android:id="@+id/clear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_gravity="center"
android:layout_weight="1"
android:alpha="?attr/alpha_secondary"

@ -9,6 +9,8 @@
android:hint="@string/TEA_note_label"
android:imeOptions="flagNoExtractUi"
android:inputType="textCapSentences|textMultiLine"
android:paddingLeft="0dp"
android:paddingStart="0dp"
android:paddingEnd="@dimen/keyline_first"
android:paddingRight="@dimen/keyline_first"
android:scrollbars="vertical" />

@ -11,7 +11,9 @@
android:layout_height="wrap_content"
android:gravity="start|center_vertical"
android:paddingEnd="@dimen/keyline_second"
android:paddingLeft="0dp"
android:paddingRight="@dimen/keyline_second"
android:paddingStart="0dp"
android:text="@string/TEA_importance_label" />
<RadioGroup
@ -20,6 +22,8 @@
android:layout_gravity="end"
android:gravity="end"
android:orientation="horizontal"
android:paddingRight="0dp"
android:paddingEnd="0dp"
android:paddingLeft="@dimen/keyline_second"
android:paddingStart="@dimen/keyline_second">

@ -10,26 +10,41 @@
<LinearLayout
android:id="@+id/alert_container"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
android:layout_height="wrap_content"
android:orientation="vertical" />
<LinearLayout
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Spinner
android:id="@+id/reminder_alarm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="@null"
android:gravity="end"
android:paddingEnd="10dp"
android:paddingLeft="0dp"
android:paddingRight="10dp"
android:paddingStart="0dp" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_gravity="start"
android:layout_toLeftOf="@id/reminder_alarm"
android:layout_toStartOf="@id/reminder_alarm"
android:gravity="start"
android:layout_weight="50">
android:orientation="horizontal">
<TextView
style="@style/TaskEditTextHint"
android:id="@+id/alarms_add"
style="@style/TaskEditTextHint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add_reminder" />
@ -41,25 +56,6 @@
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="end"
android:gravity="end"
android:layout_weight="50">
<Spinner
android:id="@+id/reminder_alarm"
android:background="@null"
android:gravity="end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="10dp"
android:paddingEnd="10dp"/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</LinearLayout>

@ -5,23 +5,25 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="@dimen/keyline_first"
android:paddingStart="@dimen/keyline_first"
android:paddingRight="@dimen/keyline_first"
android:paddingEnd="@dimen/keyline_first"
android:paddingTop="@dimen/task_edit_drawable_padding_top_bottom"
android:paddingBottom="@dimen/task_edit_drawable_padding_top_bottom"
tools:ignore="RtlSymmetry">
android:paddingEnd="@dimen/keyline_first"
android:paddingLeft="0dp"
android:paddingRight="@dimen/keyline_first"
android:paddingStart="0dp"
android:paddingTop="@dimen/task_edit_drawable_padding_top_bottom">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:tint="?attr/icon_tint"
android:alpha="?attr/alpha_secondary"
android:paddingRight="@dimen/keyline_second"
android:paddingEnd="@dimen/keyline_second"
android:paddingLeft="@dimen/keyline_first"
android:paddingRight="@dimen/keyline_second"
android:paddingStart="@dimen/keyline_first"
android:scaleType="center"
android:tint="?attr/icon_tint"
tools:ignore="ContentDescription" />
</LinearLayout>

@ -36,6 +36,8 @@
android:layout_height="wrap_content"
android:layout_toRightOf="@id/completeBox"
android:layout_toEndOf="@id/completeBox"
android:paddingLeft="0dp"
android:paddingStart="0dp"
android:paddingRight="@dimen/keyline_first"
android:paddingEnd="@dimen/keyline_first"
android:background="@null"

@ -3,21 +3,25 @@
**
** See the file "LICENSE" for the full license governing this code.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/task_edit_double_padding_top_bottom"
android:layout_marginBottom="@dimen/task_edit_double_padding_top_bottom">
android:paddingBottom="@dimen/task_edit_double_padding_top_bottom">
<include layout="@layout/control_set_clear_button" />
<TextView
style="@android:style/TextAppearance"
android:id="@+id/file_text"
android:layout_width="0dp"
style="@android:style/TextAppearance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_gravity="start"
android:layout_toLeftOf="@id/clear"
android:layout_toStartOf="@id/clear"
android:gravity="start"
android:textDirection="locale"
android:textColor="?attr/asTextColor" />
<include layout="@layout/control_set_clear_button" />
</LinearLayout>
</RelativeLayout>

@ -1,17 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="48dp">
android:layout_height="wrap_content"
android:paddingBottom="12dp"
android:paddingTop="12dp">
<!-- size -->
<TextView
android:id="@+id/size"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:gravity="end"
android:fontFamily="@string/font_fontFamily_medium"
android:gravity="center_vertical|end"
android:minEms="3"
android:paddingEnd="@dimen/keyline_first"
android:paddingLeft="@dimen/keyline_first"
@ -19,38 +21,36 @@
android:paddingStart="@dimen/keyline_first"
android:textColor="?android:attr/textColorSecondary" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="@dimen/keyline_first"
android:layout_marginStart="@dimen/keyline_first"
android:layout_toLeftOf="@id/size"
android:layout_toStartOf="@id/size"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon"
android:layout_width="56dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tint="?attr/icon_tint"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_gravity="center_vertical"
android:alpha="?attr/alpha_secondary"
android:scaleType="fitStart" />
android:paddingEnd="@dimen/keyline_second"
android:paddingLeft="@dimen/keyline_first"
android:paddingRight="@dimen/keyline_second"
android:paddingStart="@dimen/keyline_first"
android:scaleType="center"
android:tint="?attr/icon_tint" />
<!-- filter name -->
<TextView
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_centerVertical="true"
android:layout_toEndOf="@id/icon"
android:layout_toLeftOf="@id/size"
android:layout_toRightOf="@id/icon"
android:layout_toStartOf="@id/size"
android:checked="false"
android:ellipsize="end"
android:fontFamily="@string/font_fontFamily_medium"
android:gravity="center_vertical"
android:lines="1"
android:singleLine="true"
android:textColor="?android:attr/textColorPrimary"
android:textSize="14sp" />
</LinearLayout>
</RelativeLayout>

@ -53,6 +53,8 @@
android:ellipsize="end"
android:gravity="center_vertical"
android:maxLines="1"
android:paddingLeft="0dp"
android:paddingStart="0dp"
android:paddingEnd="@dimen/keyline_first"
android:paddingRight="@dimen/keyline_first"
android:singleLine="true" />
@ -64,6 +66,8 @@
android:layout_weight="1"
android:gravity="end|center_vertical"
android:orientation="vertical"
android:paddingLeft="0dp"
android:paddingStart="0dp"
android:paddingEnd="@dimen/keyline_first"
android:paddingRight="@dimen/keyline_first"
android:visibility="gone">
@ -93,6 +97,8 @@
android:layout_alignParentStart="true"
android:ellipsize="end"
android:gravity="center_vertical"
android:paddingLeft="0dp"
android:paddingStart="0dp"
android:paddingEnd="@dimen/keyline_first"
android:paddingRight="@dimen/keyline_first"
android:singleLine="true" />
@ -105,6 +111,8 @@
android:layout_alignParentRight="true"
android:ellipsize="none"
android:maxLines="1"
android:paddingLeft="0dp"
android:paddingStart="0dp"
android:paddingEnd="@dimen/keyline_first"
android:paddingRight="@dimen/keyline_first"
android:singleLine="true" />

@ -3,30 +3,34 @@
**
** See the file "LICENSE" for the full license governing this code.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_row"
android:clickable="false"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:clickable="false">
<ImageView
android:id="@+id/widget_complete_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingEnd="5dp"
android:paddingLeft="5dp"
android:paddingStart="5dp"
android:paddingRight="5dp"
android:paddingEnd="5dp"/>
android:paddingStart="5dp"
android:paddingTop="5dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center_vertical"
android:gravity="center_vertical">
android:layout_toEndOf="@id/widget_complete_box"
android:layout_toRightOf="@id/widget_complete_box"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
android:id="@+id/widget_text"
@ -43,9 +47,9 @@
android:ellipsize="end"
android:gravity="center_vertical"
android:singleLine="true"
android:visibility="gone"
android:textSize="12sp" />
android:textSize="12sp"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
Loading…
Cancel
Save