diff --git a/CHANGELOG.md b/CHANGELOG.md index 7dea3b708..e98a9e609 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +### 1.5.3 (May 22, 2016) + +* Complete Arabic and Czech translations +* Fix crash at startup +* Fix checkmark widget on custom launchers + ### 1.5.2 (May 19, 2016) * Fix missing attachment on bug reports diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e8d4dc86d..7eeedca29 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,8 +21,8 @@ + android:versionCode="19" + android:versionName="1.5.3"> diff --git a/app/src/main/java/org/isoron/uhabits/helpers/ReminderHelper.java b/app/src/main/java/org/isoron/uhabits/helpers/ReminderHelper.java index 07b113f15..35e1a92a1 100644 --- a/app/src/main/java/org/isoron/uhabits/helpers/ReminderHelper.java +++ b/app/src/main/java/org/isoron/uhabits/helpers/ReminderHelper.java @@ -93,9 +93,9 @@ public class ReminderHelper else manager.set(AlarmManager.RTC_WAKEUP, reminderTime, pendingIntent); - Log.d("ReminderHelper", String.format("Setting alarm (%s): %s...", - DateFormat.getDateTimeInstance().format(new Date(reminderTime)), - habit.name.substring(0, 3))); + String name = habit.name.substring(0, Math.min(3, habit.name.length())); + Log.d("ReminderHelper", String.format("Setting alarm (%s): %s", + DateFormat.getDateTimeInstance().format(new Date(reminderTime)), name)); } @Nullable diff --git a/app/src/main/java/org/isoron/uhabits/views/CheckmarkWidgetView.java b/app/src/main/java/org/isoron/uhabits/views/CheckmarkWidgetView.java index 01cf98a19..869c91afe 100644 --- a/app/src/main/java/org/isoron/uhabits/views/CheckmarkWidgetView.java +++ b/app/src/main/java/org/isoron/uhabits/views/CheckmarkWidgetView.java @@ -23,6 +23,7 @@ import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.AttributeSet; +import android.util.TypedValue; import android.widget.TextView; import org.isoron.uhabits.R; @@ -40,7 +41,6 @@ public class CheckmarkWidgetView extends HabitWidgetView implements HabitDataVie @Nullable private String name; - @Nullable private RingView ring; private TextView label; private int checkmarkValue; @@ -147,8 +147,22 @@ public class CheckmarkWidgetView extends HabitWidgetView implements HabitDataVie w *= scale; h *= scale; + if(h < getResources().getDimension(R.dimen.checkmarkWidget_heightBreakpoint)) + ring.setVisibility(GONE); + else + ring.setVisibility(VISIBLE); + widthMeasureSpec = MeasureSpec.makeMeasureSpec((int) w, MeasureSpec.EXACTLY); heightMeasureSpec = MeasureSpec.makeMeasureSpec((int) h, MeasureSpec.EXACTLY); + + float textSize = 0.15f * h; + float maxTextSize = getResources().getDimension(R.dimen.smallerTextSize); + textSize = Math.min(textSize, maxTextSize); + + label.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize); + ring.setTextSize(textSize); + ring.setThickness(0.15f * textSize); + super.onMeasure(widthMeasureSpec, heightMeasureSpec); } diff --git a/app/src/main/java/org/isoron/uhabits/views/RingView.java b/app/src/main/java/org/isoron/uhabits/views/RingView.java index 1ab2a9024..cac641a22 100644 --- a/app/src/main/java/org/isoron/uhabits/views/RingView.java +++ b/app/src/main/java/org/isoron/uhabits/views/RingView.java @@ -109,6 +109,11 @@ public class RingView extends View postInvalidate(); } + public void setTextSize(float textSize) + { + this.textSize = textSize; + } + @Override public void setBackgroundColor(int backgroundColor) { diff --git a/app/src/main/java/org/isoron/uhabits/widgets/BaseWidgetProvider.java b/app/src/main/java/org/isoron/uhabits/widgets/BaseWidgetProvider.java index 6490084f7..9c36fe398 100644 --- a/app/src/main/java/org/isoron/uhabits/widgets/BaseWidgetProvider.java +++ b/app/src/main/java/org/isoron/uhabits/widgets/BaseWidgetProvider.java @@ -45,9 +45,11 @@ import java.io.IOException; public abstract class BaseWidgetProvider extends AppWidgetProvider { - - private int portraitWidth, portraitHeight; - private int landscapeWidth, landscapeHeight; + private class WidgetDimensions + { + public int portraitWidth, portraitHeight; + public int landscapeWidth, landscapeHeight; + } protected abstract int getDefaultHeight(); @@ -71,7 +73,7 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(appContext); for(Integer id : appWidgetIds) - prefs.edit().remove(getHabitIdKey(id)); + prefs.edit().remove(getHabitIdKey(id)).apply(); } @Override @@ -98,7 +100,7 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider private void updateWidget(Context context, AppWidgetManager manager, int widgetId, Bundle options) { - updateWidgetSize(context, options); + WidgetDimensions dim = getWidgetDimensions(context, options); Context appContext = context.getApplicationContext(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(appContext); @@ -113,7 +115,7 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider return; } - new RenderWidgetTask(widgetId, context, habit, manager).execute(); + new RenderWidgetTask(widgetId, context, habit, dim, manager).execute(); } private void drawErrorWidget(Context context, AppWidgetManager manager, int widgetId) @@ -159,7 +161,7 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider } } - private void updateWidgetSize(Context context, Bundle options) + private WidgetDimensions getWidgetDimensions(Context context, Bundle options) { int maxWidth = getDefaultWidth(); int minWidth = getDefaultWidth(); @@ -178,11 +180,12 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT)); } - portraitWidth = minWidth; - portraitHeight = maxHeight; - - landscapeWidth = maxWidth; - landscapeHeight = minHeight; + WidgetDimensions ws = new WidgetDimensions(); + ws.portraitWidth = minWidth; + ws.portraitHeight = maxHeight; + ws.landscapeWidth = maxWidth; + ws.landscapeHeight = minHeight; + return ws; } private void measureCustomView(Context context, int w, int h, View customView) @@ -212,16 +215,18 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider private final Context context; private final Habit habit; private final AppWidgetManager manager; - public RemoteViews portraitRemoteViews, landscapeRemoteViews; - public View portraitWidgetView, landscapeWidgetView; + private RemoteViews portraitRemoteViews, landscapeRemoteViews; + private View portraitWidgetView, landscapeWidgetView; + private WidgetDimensions dim; - public RenderWidgetTask(int widgetId, Context context, Habit habit, + public RenderWidgetTask(int widgetId, Context context, Habit habit, WidgetDimensions ws, AppWidgetManager manager) { this.widgetId = widgetId; this.context = context; this.habit = habit; this.manager = manager; + this.dim = ws; } @Override @@ -232,11 +237,12 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider portraitRemoteViews = new RemoteViews(context.getPackageName(), getLayoutId()); portraitWidgetView = buildCustomView(context, habit); - measureCustomView(context, portraitWidth, portraitHeight, portraitWidgetView); + measureCustomView(context, dim.portraitWidth, dim.portraitHeight, portraitWidgetView); landscapeRemoteViews = new RemoteViews(context.getPackageName(), getLayoutId()); landscapeWidgetView = buildCustomView(context, habit); - measureCustomView(context, landscapeWidth, landscapeHeight, landscapeWidgetView); + measureCustomView(context, dim.landscapeWidth, dim.landscapeHeight, + landscapeWidgetView); } private void updateAppWidget() @@ -260,8 +266,10 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider { try { - buildRemoteViews(portraitWidgetView, portraitRemoteViews, portraitWidth, portraitHeight); - buildRemoteViews(landscapeWidgetView, landscapeRemoteViews, landscapeWidth, landscapeHeight); + buildRemoteViews(portraitWidgetView, portraitRemoteViews, + dim.portraitWidth, dim.portraitHeight); + buildRemoteViews(landscapeWidgetView, landscapeRemoteViews, + dim.landscapeWidth, dim.landscapeHeight); updateAppWidget(); } catch (Exception e) @@ -273,7 +281,8 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider super.onPostExecute(aVoid); } - private void buildRemoteViews(View widgetView, RemoteViews remoteViews, int width, int height) + private void buildRemoteViews(View widgetView, RemoteViews remoteViews, int width, + int height) { widgetView.invalidate(); widgetView.setDrawingCacheEnabled(true); @@ -287,7 +296,6 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider int imageWidth = widgetView.getMeasuredWidth(); int imageHeight = widgetView.getMeasuredHeight(); int p[] = getPadding(width, height, imageWidth, imageHeight); - remoteViews.setViewPadding(R.id.buttonOverlay, p[0], p[1], p[2], p[3]); } diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 40edb95e7..b17e91e8b 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -159,4 +159,32 @@ "فشل في توليد تقرير الاعطال" "توليد تقرير الاعطال" "استكشاف الأخطاء وإصلاحها" +"المساعدة في ترجمة هذا البرنامج" +"الوضع الليلي" +"استخدام أسود نقي في الوضع الليلي" +"يستبدل خلفيات رمادية مع أسود نقي في الوضع الليلي. يقلل من استهلاك البطارية في الهواتف مع شاشة AMOLED." +"السطح البيني" +"ترتيب عكسي أيام" +"عرض أيام في ترتيب عكسي على الشاشة الرئيسية" +"يوم" +"أسبوع" +"شهر" + + +"ربع سنه" +"عام" + + + +"مرات في" +"كل %d أيام" +"كل %d أسابيع" +"كل %d أشهر" + + +"النقاط" +"صوت تذكير" + + +"صامت" \ No newline at end of file diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index c5a9e73f4..62be2912f 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -1,6 +1,8 @@ -"Loop Habit Tracker + + +"Loop Habit Tracker" "Zvyky" "Nastavení" "Upravit" @@ -150,4 +152,32 @@ Upomínky mohou být potvrzen, odloženy nebo smazány přímo z tvého zaříze "Generace výpisu chyb selhala." "Generovat výpis chyb" "Řešení problémů" +"Pomozte s překladem aplikace" +"Noční téma" +"Zobrazit čistě černou v nočním tématu" +"Nahradí šedé pozadí čistou černou v nočním tématu. Snižuje spotřebu baterie v telefonech s AMOLED displejem." +"Rozhraní" +"Otočit pořadí dnů" +"Zobrazí dny na úvodní stránce v obráceném pořadí" +"Den" +"Týden" +"Měsíc" + + +"Čtvrtletí" +"Rok" + + + +"krát za" +"Každých %d dní" +"Každých %d týdnů" +"Každých %d měsíců" + + +"Skóre" +"Zvuk upomínky" + + +"Žádný" \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 42c044142..51147ef4c 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -26,7 +26,9 @@ @dimen/regularTextSize 16sp 14sp + 12sp 10sp 160dp -10dp + 55dp \ No newline at end of file