Fix lint issues

This commit is contained in:
serso 2016-03-23 21:32:51 +01:00
parent d6ea6c742f
commit 72b333681c
210 changed files with 394 additions and 2690 deletions

View File

@ -50,6 +50,9 @@ android {
lintOptions { lintOptions {
abortOnError false abortOnError false
warning 'MissingTranslation' warning 'MissingTranslation'
disable 'ContentDescription'
// floating icon is semi-transparent
disable 'IconLauncherShape'
} }
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7 sourceCompatibility JavaVersion.VERSION_1_7

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.solovyev.android.calculator" package="org.solovyev.android.calculator"
android:installLocation="auto"> android:installLocation="auto">
@ -25,7 +26,8 @@
android:hardwareAccelerated="true" android:hardwareAccelerated="true"
android:icon="@drawable/ic_launcher" android:icon="@drawable/ic_launcher"
android:label="@string/c_app_name" android:label="@string/c_app_name"
android:theme="@style/Cpp.Theme.Material"> android:theme="@style/Cpp.Theme.Material"
tools:ignore="UnusedAttribute">
<meta-data <meta-data
android:name="com.google.android.gms.version" android:name="com.google.android.gms.version"
@ -210,6 +212,7 @@
<!-- Google Analytics --> <!-- Google Analytics -->
<receiver <receiver
android:name="com.google.android.gms.analytics.AnalyticsReceiver" android:name="com.google.android.gms.analytics.AnalyticsReceiver"
android:exported="false"
android:enabled="true"> android:enabled="true">
<intent-filter> <intent-filter>
<action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" /> <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />

View File

@ -44,27 +44,27 @@ import javax.annotation.Nullable;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import java.io.File; import java.io.File;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Singleton @Singleton
public class VariablesRegistry extends BaseEntitiesRegistry<IConstant> { public class VariablesRegistry extends BaseEntitiesRegistry<IConstant> {
{
@Nonnull addDescription("Π", R.string.c_var_description_PI);
private static final Map<String, String> substitutes = new HashMap<>(); addDescription("π", R.string.c_var_description_pi);
addDescription("e", R.string.c_var_description_e);
static { addDescription("i", R.string.c_var_description_i);
substitutes.put("π", "pi"); addDescription("c", R.string.c_var_description_c);
substitutes.put("Π", "PI"); addDescription("G", R.string.c_var_description_G);
substitutes.put("", "inf"); addDescription("h", R.string.c_var_description_h_reduced);
substitutes.put("h", "h_reduced"); addDescription("", R.string.c_var_description_inf);
substitutes.put("NaN", "nan"); addDescription("inf", R.string.c_var_description_inf);
addDescription("nan", R.string.c_var_description_nan);
addDescription("NaN", R.string.c_var_description_nan);
} }
@Inject @Inject
public VariablesRegistry(@Nonnull JsclMathEngine mathEngine) { public VariablesRegistry(@Nonnull JsclMathEngine mathEngine) {
super(mathEngine.getConstantsRegistry(), "c_var_description_"); super(mathEngine.getConstantsRegistry());
} }
public void addOrUpdate(@Nonnull IConstant newVariable, @Nullable IConstant oldVariable) { public void addOrUpdate(@Nonnull IConstant newVariable, @Nullable IConstant oldVariable) {
@ -82,12 +82,6 @@ public class VariablesRegistry extends BaseEntitiesRegistry<IConstant> {
bus.post(new RemovedEvent(variable)); bus.post(new RemovedEvent(variable));
} }
@Nonnull
@Override
protected Map<String, String> getSubstitutes() {
return substitutes;
}
public void init() { public void init() {
Check.isNotMainThread(); Check.isNotMainThread();

View File

@ -1,61 +0,0 @@
/*
* Copyright 2013 serso aka se.solovyev
*
* 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
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Contact details
*
* Email: se.solovyev@gmail.com
* Site: http://se.solovyev.org
*/
package org.solovyev.android.calculator.about;
import android.content.res.Resources;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
/**
* User: serso
* Date: 4/20/12
* Time: 3:31 PM
*/
public class TextHelper {
@Nonnull
public String packageName;
@Nonnull
public Resources resources;
public TextHelper(@Nonnull Resources resources, @Nonnull String packageName) {
this.packageName = packageName;
this.resources = resources;
}
@Nullable
public String getText(@Nonnull String stringName) {
final int stringId = this.resources.getIdentifier(stringName, "string", this.packageName);
try {
if (stringId == 0) {
return null;
}
return resources.getString(stringId);
} catch (Resources.NotFoundException e) {
return null;
}
}
}

View File

@ -390,7 +390,7 @@ public class ConverterFragment extends BaseDialogFragment
ELECTRIC_CURRENT(Dimension.ELECTRIC_CURRENT, R.string.cpp_converter_electric_current), ELECTRIC_CURRENT(Dimension.ELECTRIC_CURRENT, R.string.cpp_converter_electric_current),
LENGTH(Dimension.LENGTH, R.string.cpp_converter_length), LENGTH(Dimension.LENGTH, R.string.cpp_converter_length),
MASS(Dimension.MASS, R.string.cpp_converter_mass), MASS(Dimension.MASS, R.string.cpp_converter_mass),
TEMPERATURE(Dimension.TEMPERATURE, R.string.cpp_converter_termperature); TEMPERATURE(Dimension.TEMPERATURE, R.string.cpp_converter_temperature);
@NonNull @NonNull
public final Dimension dimension; public final Dimension dimension;

View File

@ -23,16 +23,17 @@
package org.solovyev.android.calculator.entities; package org.solovyev.android.calculator.entities;
import android.app.Application; import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Handler; import android.os.Handler;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import com.squareup.otto.Bus; import com.squareup.otto.Bus;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.solovyev.android.Check; import org.solovyev.android.Check;
import org.solovyev.android.calculator.*; import org.solovyev.android.calculator.AppModule;
import org.solovyev.android.calculator.EntitiesRegistry;
import org.solovyev.android.calculator.ErrorReporter;
import org.solovyev.android.calculator.json.Json; import org.solovyev.android.calculator.json.Json;
import org.solovyev.android.calculator.json.Jsonable; import org.solovyev.android.calculator.json.Jsonable;
import org.solovyev.android.io.FileSaver; import org.solovyev.android.io.FileSaver;
@ -46,10 +47,7 @@ import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.*;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
public abstract class BaseEntitiesRegistry<T extends MathEntity> implements EntitiesRegistry<T> { public abstract class BaseEntitiesRegistry<T extends MathEntity> implements EntitiesRegistry<T> {
@ -58,8 +56,6 @@ public abstract class BaseEntitiesRegistry<T extends MathEntity> implements Enti
protected final Object lock = this; protected final Object lock = this;
@Nonnull @Nonnull
private final MathRegistry<T> mathRegistry; private final MathRegistry<T> mathRegistry;
@Nonnull
private final String prefix;
@NonNull @NonNull
private final WriteTask writeTask = new WriteTask(); private final WriteTask writeTask = new WriteTask();
@Inject @Inject
@ -81,33 +77,29 @@ public abstract class BaseEntitiesRegistry<T extends MathEntity> implements Enti
@Named(AppModule.DIR_FILES) @Named(AppModule.DIR_FILES)
public File filesDir; public File filesDir;
@Nonnull
private final Map<String, Integer> descriptions = new HashMap<>();
// synchronized on lock // synchronized on lock
private boolean initialized; private boolean initialized;
protected BaseEntitiesRegistry(@Nonnull MathRegistry<T> mathRegistry, protected BaseEntitiesRegistry(@Nonnull MathRegistry<T> mathRegistry) {
@Nonnull String prefix) {
this.mathRegistry = mathRegistry; this.mathRegistry = mathRegistry;
this.prefix = prefix;
} }
protected void addDescription(@Nonnull String name, @StringRes int description) {
@Nonnull descriptions.put(name, description);
protected abstract Map<String, String> getSubstitutes(); }
@Nullable @Nullable
@Override @Override
public String getDescription(@Nonnull String name) { public String getDescription(@Nonnull String name) {
final String stringName; final Integer description = descriptions.get(name);
if (description == null || description == 0) {
final Map<String, String> substitutes = getSubstitutes(); return null;
final String substitute = substitutes.get(name);
if (substitute == null) {
stringName = prefix + name;
} else {
stringName = prefix + substitute;
} }
return getDescription(application, stringName); return application.getResources().getString(description);
} }
@Override @Override
@ -115,18 +107,6 @@ public abstract class BaseEntitiesRegistry<T extends MathEntity> implements Enti
setInitialized(); setInitialized();
} }
@Nullable
public String getDescription(@Nonnull Context context, @Nonnull String descriptionId) {
final Resources resources = context.getResources();
final int stringId = resources.getIdentifier(descriptionId, "string", CalculatorApplication.class.getPackage().getName());
try {
return resources.getString(stringId);
} catch (Resources.NotFoundException e) {
return null;
}
}
@NonNull @NonNull
protected final <E> List<E> loadEntities(@NonNull Json.Creator<E> creator) { protected final <E> List<E> loadEntities(@NonNull Json.Creator<E> creator) {
final File file = getEntitiesFile(); final File file = getEntitiesFile();

View File

@ -30,6 +30,7 @@ import jscl.math.function.IFunction;
import org.simpleframework.xml.Serializer; import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister; import org.simpleframework.xml.core.Persister;
import org.solovyev.android.Check; import org.solovyev.android.Check;
import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.entities.BaseEntitiesRegistry; import org.solovyev.android.calculator.entities.BaseEntitiesRegistry;
import org.solovyev.android.calculator.entities.Category; import org.solovyev.android.calculator.entities.Category;
import org.solovyev.android.calculator.entities.Entities; import org.solovyev.android.calculator.entities.Entities;
@ -43,23 +44,47 @@ import javax.annotation.Nullable;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import java.io.File; import java.io.File;
import java.util.*; import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static android.text.TextUtils.isEmpty; import static android.text.TextUtils.isEmpty;
@Singleton @Singleton
public class FunctionsRegistry extends BaseEntitiesRegistry<Function> { public class FunctionsRegistry extends BaseEntitiesRegistry<Function> {
@Nonnull {
private static final Map<String, String> substitutes = new HashMap<>(); addDescription("sin", R.string.c_fun_description_sin);
addDescription("cos", R.string.c_fun_description_cos);
static { addDescription("tan", R.string.c_fun_description_tan);
substitutes.put("", "sqrt"); addDescription("cot", R.string.c_fun_description_cot);
addDescription("asin", R.string.c_fun_description_asin);
addDescription("acos", R.string.c_fun_description_acos);
addDescription("atan", R.string.c_fun_description_atan);
addDescription("acot", R.string.c_fun_description_acot);
addDescription("ln", R.string.c_fun_description_ln);
addDescription("lg", R.string.c_fun_description_lg);
addDescription("log", R.string.c_fun_description_log);
addDescription("exp", R.string.c_fun_description_exp);
addDescription("", R.string.c_fun_description_sqrt);
addDescription("sqrt", R.string.c_fun_description_sqrt);
addDescription("cubic", R.string.c_fun_description_cubic);
addDescription("abs", R.string.c_fun_description_abs);
addDescription("sgn", R.string.c_fun_description_sgn);
addDescription("eq", R.string.c_fun_description_eq);
addDescription("le", R.string.c_fun_description_le);
addDescription("ge", R.string.c_fun_description_ge);
addDescription("ne", R.string.c_fun_description_ne);
addDescription("lt", R.string.c_fun_description_lt);
addDescription("gt", R.string.c_fun_description_gt);
addDescription("rad", R.string.c_fun_description_rad);
addDescription("dms", R.string.c_fun_description_dms);
addDescription("deg", R.string.c_fun_description_deg);
} }
@Inject @Inject
public FunctionsRegistry(@Nonnull JsclMathEngine mathEngine) { public FunctionsRegistry(@Nonnull JsclMathEngine mathEngine) {
super(mathEngine.getFunctionsRegistry(), "c_fun_description_"); super(mathEngine.getFunctionsRegistry());
} }
public void addOrUpdate(@Nonnull Function newFunction, @Nullable Function oldFunction) { public void addOrUpdate(@Nonnull Function newFunction, @Nullable Function oldFunction) {
@ -91,6 +116,7 @@ public class FunctionsRegistry extends BaseEntitiesRegistry<Function> {
setInitialized(); setInitialized();
} }
} }
@Nullable @Nullable
protected Function addSafely(@Nonnull CustomFunction.Builder builder) { protected Function addSafely(@Nonnull CustomFunction.Builder builder) {
try { try {
@ -141,12 +167,6 @@ public class FunctionsRegistry extends BaseEntitiesRegistry<Function> {
return new File(filesDir, "functions.json"); return new File(filesDir, "functions.json");
} }
@Nonnull
@Override
protected Map<String, String> getSubstitutes() {
return substitutes;
}
@Override @Override
public Category getCategory(@Nonnull Function function) { public Category getCategory(@Nonnull Function function) {
return Entities.getCategory(function, FunctionCategory.values()); return Entities.getCategory(function, FunctionCategory.values());

View File

@ -25,6 +25,7 @@ package org.solovyev.android.calculator.operators;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import jscl.JsclMathEngine; import jscl.JsclMathEngine;
import jscl.math.operator.Operator; import jscl.math.operator.Operator;
import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.entities.BaseEntitiesRegistry; import org.solovyev.android.calculator.entities.BaseEntitiesRegistry;
import org.solovyev.android.calculator.entities.Category; import org.solovyev.android.calculator.entities.Category;
import org.solovyev.android.calculator.entities.Entities; import org.solovyev.android.calculator.entities.Entities;
@ -35,33 +36,23 @@ import javax.annotation.Nullable;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import java.io.File; import java.io.File;
import java.util.HashMap;
import java.util.Map;
@Singleton @Singleton
public class OperatorsRegistry extends BaseEntitiesRegistry<Operator> { public class OperatorsRegistry extends BaseEntitiesRegistry<Operator> {
@Nonnull {
private static final Map<String, String> substitutes = new HashMap<String, String>(); addDescription("mod", R.string.c_op_description_mod);
addDescription("Σ", R.string.c_op_description_sum);
static { addDescription("", R.string.c_op_description_product);
substitutes.put("Σ", "sum"); addDescription("", R.string.c_op_description_derivative);
substitutes.put("", "product"); addDescription("∫ab", R.string.c_op_description_integral_ab);
substitutes.put("", "derivative"); addDescription("", R.string.c_op_description_integral);
substitutes.put("∫ab", "integral_ab"); addDescription("Σ", R.string.c_op_description_sum);
substitutes.put("", "integral");
substitutes.put("Σ", "sum");
} }
@Inject @Inject
public OperatorsRegistry(@Nonnull JsclMathEngine mathEngine) { public OperatorsRegistry(@Nonnull JsclMathEngine mathEngine) {
super(mathEngine.getOperatorsRegistry(), "c_op_description_"); super(mathEngine.getOperatorsRegistry());
}
@Nonnull
@Override
protected Map<String, String> getSubstitutes() {
return substitutes;
} }
@Nullable @Nullable

View File

@ -25,6 +25,7 @@ package org.solovyev.android.calculator.operators;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import jscl.JsclMathEngine; import jscl.JsclMathEngine;
import jscl.math.operator.Operator; import jscl.math.operator.Operator;
import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.entities.BaseEntitiesRegistry; import org.solovyev.android.calculator.entities.BaseEntitiesRegistry;
import org.solovyev.android.calculator.entities.Category; import org.solovyev.android.calculator.entities.Category;
import org.solovyev.android.calculator.entities.Entities; import org.solovyev.android.calculator.entities.Entities;
@ -35,31 +36,20 @@ import javax.annotation.Nullable;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import java.io.File; import java.io.File;
import java.util.HashMap;
import java.util.Map;
@Singleton @Singleton
public class PostfixFunctionsRegistry extends BaseEntitiesRegistry<Operator> { public class PostfixFunctionsRegistry extends BaseEntitiesRegistry<Operator> {
@Nonnull {
private static final Map<String, String> substitutes = new HashMap<String, String>(); addDescription("%", R.string.c_pf_description_percent);
addDescription("!", R.string.c_pf_description_factorial);
static { addDescription("!!", R.string.c_pf_description_double_factorial);
substitutes.put("%", "percent"); addDescription("°", R.string.c_pf_description_degree);
substitutes.put("!", "factorial");
substitutes.put("!!", "double_factorial");
substitutes.put("°", "degree");
} }
@Inject @Inject
public PostfixFunctionsRegistry(@Nonnull JsclMathEngine mathEngine) { public PostfixFunctionsRegistry(@Nonnull JsclMathEngine mathEngine) {
super(mathEngine.getPostfixFunctionsRegistry(), "c_pf_description_"); super(mathEngine.getPostfixFunctionsRegistry());
}
@Nonnull
@Override
protected Map<String, String> getSubstitutes() {
return substitutes;
} }
@Nullable @Nullable

View File

@ -0,0 +1,21 @@
package org.solovyev.android.calculator.release;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
public class ReleaseNote {
@NonNull
public final String versionName;
@StringRes
public final int description;
private ReleaseNote(@NonNull String versionName, int description) {
this.versionName = versionName;
this.description = description;
}
@NonNull
public static ReleaseNote make(@NonNull String versionName, int description) {
return new ReleaseNote(versionName, description);
}
}

View File

@ -6,12 +6,7 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
import com.google.common.base.Strings;
import org.solovyev.android.calculator.CalculatorApplication;
import org.solovyev.android.calculator.R; import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.about.TextHelper;
import org.solovyev.android.calculator.wizard.WizardFragment; import org.solovyev.android.calculator.wizard.WizardFragment;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
@ -33,25 +28,14 @@ public class ReleaseNoteFragment extends WizardFragment {
version = getArguments().getInt(ARG_VERSION, 0); version = getArguments().getInt(ARG_VERSION, 0);
} }
@Nonnull
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = super.onCreateView(inflater, container, savedInstanceState); final View view = super.onCreateView(inflater, container, savedInstanceState);
final TextView title = (TextView) view.findViewById(R.id.release_note_title); final TextView title = (TextView) view.findViewById(R.id.release_note_title);
final TextHelper textHelper = new TextHelper(getActivity().getResources(), CalculatorApplication.class.getPackage().getName()); title.setText(getString(R.string.cpp_new_in_version, ReleaseNotes.getReleaseNoteVersion(version)));
title.setText(getString(R.string.cpp_new_in_version, getReleaseNoteVersion(textHelper)));
final TextView message = (TextView) view.findViewById(R.id.release_note_message); final TextView message = (TextView) view.findViewById(R.id.release_note_message);
message.setText(Html.fromHtml(getReleaseNote(textHelper))); message.setText(Html.fromHtml(ReleaseNotes.getReleaseNoteDescription(getActivity(), version)));
return view; return view;
} }
@Nonnull
private String getReleaseNoteVersion(@Nonnull TextHelper textHelper) {
return ReleaseNotes.getVersionName(textHelper, version);
}
@Nonnull
private String getReleaseNote(@Nonnull TextHelper textHelper) {
final String resourceId = ReleaseNotes.makeReleaseNotesResourceId(version);
return Strings.nullToEmpty(textHelper.getText(resourceId)).replace("\n", "<br/>");
}
} }

View File

@ -1,10 +1,9 @@
package org.solovyev.android.calculator.release; package org.solovyev.android.calculator.release;
import android.content.Context; import android.content.Context;
import android.util.SparseArray;
import org.solovyev.android.calculator.App; import org.solovyev.android.calculator.App;
import org.solovyev.android.calculator.CalculatorApplication;
import org.solovyev.android.calculator.R; import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.about.TextHelper;
import org.solovyev.common.text.Strings; import org.solovyev.common.text.Strings;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
@ -13,11 +12,30 @@ import java.util.List;
public final class ReleaseNotes { public final class ReleaseNotes {
private static final SparseArray<ReleaseNote> map = new SparseArray<>();
static {
map.put(118, ReleaseNote.make("2.0.0", R.string.c_release_notes_for_118));
map.put(141, ReleaseNote.make("2.1.2", R.string.c_release_notes_for_141));
map.put(143, ReleaseNote.make("2.1.4", R.string.c_release_notes_for_143));
}
@Nonnull @Nonnull
public static String getReleaseNotes(@Nonnull Context context) { public static String getReleaseNotes(@Nonnull Context context) {
return getReleaseNotesString(context, 0); return getReleaseNotesString(context, 0);
} }
@Nonnull
public static String getReleaseNoteVersion(int version) {
final ReleaseNote releaseNote = map.get(version);
return releaseNote == null ? String.valueOf(version) : releaseNote.versionName;
}
@Nonnull
public static String getReleaseNoteDescription(@Nonnull Context context, int version) {
final ReleaseNote releaseNote = map.get(version);
return releaseNote == null ? "" : context.getString(releaseNote.description);
}
@Nonnull @Nonnull
public static String getReleaseNotesString(@Nonnull Context context, int minVersion) { public static String getReleaseNotesString(@Nonnull Context context, int minVersion) {
final StringBuilder result = new StringBuilder(); final StringBuilder result = new StringBuilder();
@ -25,22 +43,21 @@ public final class ReleaseNotes {
final String releaseNotesForTitle = context.getString(R.string.c_release_notes_for_title); final String releaseNotesForTitle = context.getString(R.string.c_release_notes_for_title);
final int currentVersionCode = App.getAppVersionCode(context); final int currentVersionCode = App.getAppVersionCode(context);
final TextHelper textHelper = new TextHelper(context.getResources(), CalculatorApplication.class.getPackage().getName());
boolean first = true; boolean first = true;
for (int versionCode = currentVersionCode; versionCode >= minVersion; versionCode--) { for (int versionCode = currentVersionCode; versionCode >= minVersion; versionCode--) {
final String versionName = getVersionName(textHelper, versionCode); final ReleaseNote releaseNote = map.get(versionCode);
String releaseNotesForVersion = textHelper.getText(makeReleaseNotesResourceId(versionCode)); if (releaseNote == null) {
if (!Strings.isEmpty(releaseNotesForVersion)) { continue;
if (!first) {
result.append("<br/><br/>");
} else {
first = false;
}
releaseNotesForVersion = releaseNotesForVersion.replace("\n", "<br/>");
result.append("<b>").append(releaseNotesForTitle).append(versionName).append("</b><br/><br/>");
result.append(releaseNotesForVersion);
} }
if (!first) {
result.append("<br/><br/>");
} else {
first = false;
}
final String description = context.getResources().getString(releaseNote.description);
final String descriptionHtml = description.replace("\n", "<br/>");
result.append("<b>").append(releaseNotesForTitle).append(releaseNote.versionName).append("</b><br/><br/>");
result.append(descriptionHtml);
} }
return result.toString(); return result.toString();
@ -51,14 +68,17 @@ public final class ReleaseNotes {
final List<Integer> releaseNotes = new ArrayList<>(); final List<Integer> releaseNotes = new ArrayList<>();
final int currentVersionCode = App.getAppVersionCode(context); final int currentVersionCode = App.getAppVersionCode(context);
final TextHelper textHelper = new TextHelper(context.getResources(), CalculatorApplication.class.getPackage().getName());
for (int versionCode = currentVersionCode; versionCode >= minVersion; versionCode--) { for (int versionCode = currentVersionCode; versionCode >= minVersion; versionCode--) {
if (versionCode == ChooseThemeReleaseNoteStep.VERSION_CODE) { if (versionCode == ChooseThemeReleaseNoteStep.VERSION_CODE) {
releaseNotes.add(ChooseThemeReleaseNoteStep.VERSION_CODE); releaseNotes.add(ChooseThemeReleaseNoteStep.VERSION_CODE);
} }
final String releaseNotesForVersion = textHelper.getText(makeReleaseNotesResourceId(versionCode)); final ReleaseNote releaseNote = map.get(versionCode);
if (!Strings.isEmpty(releaseNotesForVersion)) { if (releaseNote == null) {
continue;
}
final String description = context.getString(releaseNote.description);
if (!Strings.isEmpty(description)) {
releaseNotes.add(versionCode); releaseNotes.add(versionCode);
} }
} }
@ -68,36 +88,20 @@ public final class ReleaseNotes {
public static boolean hasReleaseNotes(@Nonnull Context context, int minVersion) { public static boolean hasReleaseNotes(@Nonnull Context context, int minVersion) {
final int currentVersionCode = App.getAppVersionCode(context); final int currentVersionCode = App.getAppVersionCode(context);
final TextHelper textHelper = new TextHelper(context.getResources(), CalculatorApplication.class.getPackage().getName());
for (int versionCode = currentVersionCode; versionCode >= minVersion; versionCode--) { for (int versionCode = currentVersionCode; versionCode >= minVersion; versionCode--) {
if (versionCode == ChooseThemeReleaseNoteStep.VERSION_CODE) { if (versionCode == ChooseThemeReleaseNoteStep.VERSION_CODE) {
return true; return true;
} }
String releaseNotesForVersion = textHelper.getText(makeReleaseNotesResourceId(versionCode)); final ReleaseNote releaseNote = map.get(versionCode);
if (!Strings.isEmpty(releaseNotesForVersion)) { if (releaseNote == null) {
continue;
}
if (!Strings.isEmpty(context.getString(releaseNote.description))) {
return true; return true;
} }
} }
return false; return false;
} }
@Nonnull
public static String getVersionName(@Nonnull TextHelper textHelper, int versionCode) {
final String versionName = textHelper.getText(makeVersionResourceId(versionCode));
if (versionName != null) {
return versionName;
} else {
return String.valueOf(versionCode);
}
}
public static String makeReleaseNotesResourceId(int versionCode) {
return "c_release_notes_for_" + versionCode;
}
private static String makeVersionResourceId(int versionCode) {
return "c_release_notes_for_" + versionCode + "_version";
}
} }

View File

@ -31,6 +31,8 @@ import android.widget.TextView;
import org.solovyev.android.calculator.App; import org.solovyev.android.calculator.App;
import org.solovyev.android.calculator.R; import org.solovyev.android.calculator.R;
import javax.annotation.Nonnull;
public final class WelcomeWizardStep extends WizardFragment { public final class WelcomeWizardStep extends WizardFragment {
@Override @Override
@ -38,6 +40,7 @@ public final class WelcomeWizardStep extends WizardFragment {
return R.layout.cpp_wizard_step_welcome; return R.layout.cpp_wizard_step_welcome;
} }
@Nonnull
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = super.onCreateView(inflater, container, savedInstanceState); final View view = super.onCreateView(inflater, container, savedInstanceState);

View File

@ -68,6 +68,7 @@ public abstract class WizardFragment extends Fragment implements View.OnClickLis
throw new AssertionError("Wizard step for class " + getClass() + " was not found"); throw new AssertionError("Wizard step for class " + getClass() + " was not found");
} }
@Nonnull
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_wizard, container, false); final View view = inflater.inflate(R.layout.fragment_wizard, container, false);

View File

@ -22,6 +22,8 @@
package org.solovyev.common.text; package org.solovyev.common.text;
import org.solovyev.android.Check;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.HashMap; import java.util.HashMap;
@ -74,7 +76,7 @@ public class NumberMapper<N extends Number> implements Mapper<N> {
@Nonnull @Nonnull
public static <N extends Number> Mapper<N> of(@Nonnull Class<? extends N> clazz) { public static <N extends Number> Mapper<N> of(@Nonnull Class<? extends N> clazz) {
assert supportedClasses.contains(clazz) : "Class " + clazz + " is not supported by " + NumberMapper.class; Check.isTrue(supportedClasses.contains(clazz), "Class " + clazz + " is not supported by " + NumberMapper.class);
return (Mapper<N>) mappers.get(clazz); return (Mapper<N>) mappers.get(clazz);
} }

View File

@ -22,6 +22,8 @@
package org.solovyev.common.text; package org.solovyev.common.text;
import org.solovyev.android.Check;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.Arrays; import java.util.Arrays;
@ -50,7 +52,7 @@ public class NumberParser<N extends Number> implements Parser<N> {
@Nonnull @Nonnull
public static <N extends Number> Parser<N> of(@Nonnull Class<N> clazz) { public static <N extends Number> Parser<N> of(@Nonnull Class<N> clazz) {
assert supportedClasses.contains(clazz) : "Class " + clazz + " is not supported by " + NumberParser.class; Check.isTrue(supportedClasses.contains(clazz), "Class " + clazz + " is not supported by " + NumberParser.class);
return (Parser<N>) parsers.get(clazz); return (Parser<N>) parsers.get(clazz);
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 496 B

View File

@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright 2013 serso aka se.solovyev
~
~ 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
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ 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.
~
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Contact details
~
~ Email: se.solovyev@gmail.com
~ Site: http://se.solovyev.org
-->
<ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark">
<item a:drawable="@drawable/cpp_wizard_button_shape_normal" />
</ripple>

View File

@ -23,7 +23,7 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item> <item>
<shape> <shape>
<solid a:color="@color/blue_900" /> <solid a:color="@color/blue_900" />

View File

@ -23,7 +23,7 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item> <item>
<shape> <shape>
<solid a:color="@color/blue_850" /> <solid a:color="@color/blue_850" />

View File

@ -23,7 +23,7 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item> <item>
<shape> <shape>
<solid a:color="@color/grey_900" /> <solid a:color="@color/grey_900" />

View File

@ -23,7 +23,7 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item> <item>
<shape> <shape>
<solid a:color="@color/grey_850" /> <solid a:color="@color/grey_850" />

View File

@ -23,7 +23,7 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item> <item>
<shape> <shape>
<solid a:color="@color/grey_800" /> <solid a:color="@color/grey_800" />

View File

@ -23,7 +23,7 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item> <item>
<shape> <shape>
<solid a:color="@color/grey_850" /> <solid a:color="@color/grey_850" />

View File

@ -23,7 +23,7 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item> <item>
<shape> <shape>
<solid a:color="@color/teal_400" /> <solid a:color="@color/teal_400" />

View File

@ -23,7 +23,7 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item> <item>
<shape> <shape>
<solid a:color="@color/teal_500" /> <solid a:color="@color/teal_500" />

View File

@ -23,6 +23,6 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item a:drawable="@drawable/metro_blue_button_shape" /> <item a:drawable="@drawable/metro_blue_button_shape" />
</ripple> </ripple>

View File

@ -23,6 +23,6 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item a:drawable="@drawable/metro_button_dark_shape" /> <item a:drawable="@drawable/metro_button_dark_shape" />
</ripple> </ripple>

View File

@ -23,6 +23,6 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item a:drawable="@drawable/metro_button_green_shape" /> <item a:drawable="@drawable/metro_button_green_shape" />
</ripple> </ripple>

View File

@ -23,6 +23,6 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item a:drawable="@drawable/metro_button_light_shape" /> <item a:drawable="@drawable/metro_button_light_shape" />
</ripple> </ripple>

View File

@ -23,6 +23,6 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item a:drawable="@drawable/metro_button_purple_shape" /> <item a:drawable="@drawable/metro_button_purple_shape" />
</ripple> </ripple>

View File

@ -23,6 +23,6 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item a:drawable="@drawable/metro_blue_button_shape" /> <item a:drawable="@drawable/metro_blue_button_shape" />
</ripple> </ripple>

View File

@ -23,6 +23,6 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item a:drawable="@drawable/metro_button_dark_shape" /> <item a:drawable="@drawable/metro_button_dark_shape" />
</ripple> </ripple>

View File

@ -23,6 +23,6 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/ripple_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item a:drawable="@drawable/metro_button_light_shape" /> <item a:drawable="@drawable/metro_button_light_shape" />
</ripple> </ripple>

View File

@ -23,7 +23,7 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/button_material_dark"> a:color="@color/cpp_ripple_material_dark">
<item> <item>
<shape> <shape>
<solid a:color="@color/cpp_editor_bg" /> <solid a:color="@color/cpp_editor_bg" />

View File

@ -23,7 +23,7 @@
--> -->
<ripple xmlns:a="http://schemas.android.com/apk/res/android" <ripple xmlns:a="http://schemas.android.com/apk/res/android"
a:color="@color/button_material_light"> a:color="@color/cpp_ripple_material_light">
<item> <item>
<shape> <shape>
<solid a:color="@color/cpp_bg_light" /> <solid a:color="@color/cpp_bg_light" />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 938 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright 2013 serso aka se.solovyev
~
~ 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
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ 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.
~
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Contact details
~
~ Email: se.solovyev@gmail.com
~ Site: http://se.solovyev.org
-->
<selector xmlns:a="http://schemas.android.com/apk/res/android">
<item a:drawable="@drawable/cpp_wizard_button_shape_pressed" a:state_pressed="true" />
<item a:drawable="@drawable/cpp_wizard_button_shape_normal" />
</selector>

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Copyright 2013 serso aka se.solovyev
~
~ 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
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ 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.
~
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Contact details
~
~ Email: se.solovyev@gmail.com
~ Site: http://se.solovyev.org
-->
<inset xmlns:a="http://schemas.android.com/apk/res/android"
a:insetBottom="@dimen/cpp_button_padding"
a:insetLeft="@dimen/cpp_button_padding"
a:insetRight="@dimen/cpp_button_padding"
a:insetTop="@dimen/cpp_button_padding">
<shape>
<solid a:color="@color/grey_800" />
<corners a:radius="@dimen/cpp_button_corner" />
</shape>
</inset>

View File

@ -1,32 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Copyright 2013 serso aka se.solovyev
~
~ 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
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ 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.
~
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Contact details
~
~ Email: se.solovyev@gmail.com
~ Site: http://se.solovyev.org
-->
<inset xmlns:a="http://schemas.android.com/apk/res/android"
a:insetBottom="@dimen/cpp_button_padding"
a:insetLeft="@dimen/cpp_button_padding"
a:insetRight="@dimen/cpp_button_padding"
a:insetTop="@dimen/cpp_button_padding">
<shape>
<solid a:color="@color/grey_600" />
<corners a:radius="@dimen/cpp_button_corner" />
</shape>
</inset>

View File

@ -28,5 +28,5 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
a:text="@string/c_clear" a:text="@string/c_clear"
app:directionTextUp="MC" app:directionTextUp="@string/cpp_kb_memory_clear"
a:textStyle="bold"/> a:textStyle="bold"/>

View File

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright 2013 serso aka se.solovyev
~
~ 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
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ 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.
~
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Contact details
~
~ Email: se.solovyev@gmail.com
~ Site: http://se.solovyev.org
-->
<ImageButton
xmlns:a="http://schemas.android.com/apk/res/android"
a:id="@id/cpp_button_like"
style="?attr/cpp_button_style_control"
a:src="@drawable/ic_share_white_48dp" />

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright 2013 serso aka se.solovyev
~
~ 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
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ 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.
~
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Contact details
~
~ Email: se.solovyev@gmail.com
~ Site: http://se.solovyev.org
-->
<org.solovyev.android.views.dragbutton.DirectionDragButton style="?attr/cpp_button_style_control" />

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright 2013 serso aka se.solovyev
~
~ 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
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ 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.
~
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Contact details
~
~ Email: se.solovyev@gmail.com
~ Site: http://se.solovyev.org
-->
<org.solovyev.android.views.dragbutton.DirectionDragButton
xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:c="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_equals"
style="?attr/cpp_button_style_control"
a:text="="
c:directionTextDown="@string/cpp_plot_button_text"
c:directionTextUp="≡"
tools:ignore="HardcodedText" />

View File

@ -1,31 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright 2013 serso aka se.solovyev
~
~ 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
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ 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.
~
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Contact details
~
~ Email: se.solovyev@gmail.com
~ Site: http://se.solovyev.org
-->
<org.solovyev.android.views.dragbutton.DirectionDragButton
xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_operators"
style="?attr/cpp_button_style_control"
a:text="@string/cpp_kb_operators"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_0" a:id="@id/cpp_button_0"
style="@style/CppKeyboardButton.Metro.Simple.Digit" style="@style/CppKeyboardButton.Metro.Simple.Digit"
a:text="0" /> a:text="0"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_0" a:id="@id/cpp_button_0"
style="@style/CppKeyboardButton.Material.Simple.Digit" style="@style/CppKeyboardButton.Material.Simple.Digit"
a:text="0" /> a:text="0"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_0" a:id="@id/cpp_button_0"
style="@style/CppKeyboardButton.Material.Light.Simple.Digit" style="@style/CppKeyboardButton.Material.Light.Simple.Digit"
a:text="0" /> a:text="0"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_1" a:id="@id/cpp_button_1"
style="@style/CppKeyboardButton.Metro.Simple.Digit" style="@style/CppKeyboardButton.Metro.Simple.Digit"
a:text="1" /> a:text="1"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_1" a:id="@id/cpp_button_1"
style="@style/CppKeyboardButton.Material.Simple.Digit" style="@style/CppKeyboardButton.Material.Simple.Digit"
a:text="1" /> a:text="1"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_1" a:id="@id/cpp_button_1"
style="@style/CppKeyboardButton.Material.Light.Simple.Digit" style="@style/CppKeyboardButton.Material.Light.Simple.Digit"
a:text="1" /> a:text="1"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_2" a:id="@id/cpp_button_2"
style="@style/CppKeyboardButton.Metro.Simple.Digit" style="@style/CppKeyboardButton.Metro.Simple.Digit"
a:text="2" /> a:text="2"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_2" a:id="@id/cpp_button_2"
style="@style/CppKeyboardButton.Material.Simple.Digit" style="@style/CppKeyboardButton.Material.Simple.Digit"
a:text="2" /> a:text="2"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_2" a:id="@id/cpp_button_2"
style="@style/CppKeyboardButton.Material.Light.Simple.Digit" style="@style/CppKeyboardButton.Material.Light.Simple.Digit"
a:text="2" /> a:text="2"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_3" a:id="@id/cpp_button_3"
style="@style/CppKeyboardButton.Metro.Simple.Digit" style="@style/CppKeyboardButton.Metro.Simple.Digit"
a:text="3" /> a:text="3"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_3" a:id="@id/cpp_button_3"
style="@style/CppKeyboardButton.Material.Simple.Digit" style="@style/CppKeyboardButton.Material.Simple.Digit"
a:text="3" /> a:text="3"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_3" a:id="@id/cpp_button_3"
style="@style/CppKeyboardButton.Material.Light.Simple.Digit" style="@style/CppKeyboardButton.Material.Light.Simple.Digit"
a:text="3" /> a:text="3"
tools:ignore="HardcodedText" />

View File

@ -23,6 +23,8 @@
--> -->
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_4" a:id="@id/cpp_button_4"
style="@style/CppKeyboardButton.Metro.Simple.Digit" style="@style/CppKeyboardButton.Metro.Simple.Digit"
a:text="4" /> a:text="4"
tools:ignore="HardcodedText" />

View File

@ -23,6 +23,8 @@
--> -->
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_4" a:id="@id/cpp_button_4"
style="@style/CppKeyboardButton.Material.Simple.Digit" style="@style/CppKeyboardButton.Material.Simple.Digit"
a:text="4" /> a:text="4"
tools:ignore="HardcodedText" />

View File

@ -23,6 +23,8 @@
--> -->
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_4" a:id="@id/cpp_button_4"
style="@style/CppKeyboardButton.Material.Light.Simple.Digit" style="@style/CppKeyboardButton.Material.Light.Simple.Digit"
a:text="4" /> a:text="4"
tools:ignore="HardcodedText" />

View File

@ -23,6 +23,8 @@
--> -->
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_5" a:id="@id/cpp_button_5"
style="@style/CppKeyboardButton.Metro.Simple.Digit" style="@style/CppKeyboardButton.Metro.Simple.Digit"
a:text="5" /> a:text="5"
tools:ignore="HardcodedText" />

View File

@ -23,6 +23,8 @@
--> -->
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_5" a:id="@id/cpp_button_5"
style="@style/CppKeyboardButton.Material.Simple.Digit" style="@style/CppKeyboardButton.Material.Simple.Digit"
a:text="5" /> a:text="5"
tools:ignore="HardcodedText" />

View File

@ -23,6 +23,8 @@
--> -->
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_5" a:id="@id/cpp_button_5"
style="@style/CppKeyboardButton.Material.Light.Simple.Digit" style="@style/CppKeyboardButton.Material.Light.Simple.Digit"
a:text="5" /> a:text="5"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_6" a:id="@id/cpp_button_6"
style="@style/CppKeyboardButton.Metro.Simple.Digit" style="@style/CppKeyboardButton.Metro.Simple.Digit"
a:text="6" /> a:text="6"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_6" a:id="@id/cpp_button_6"
style="@style/CppKeyboardButton.Material.Simple.Digit" style="@style/CppKeyboardButton.Material.Simple.Digit"
a:text="6" /> a:text="6"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_6" a:id="@id/cpp_button_6"
style="@style/CppKeyboardButton.Material.Light.Simple.Digit" style="@style/CppKeyboardButton.Material.Light.Simple.Digit"
a:text="6" /> a:text="6"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_7" a:id="@id/cpp_button_7"
style="@style/CppKeyboardButton.Metro.Simple.Digit" style="@style/CppKeyboardButton.Metro.Simple.Digit"
a:text="7" /> a:text="7"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_7" a:id="@id/cpp_button_7"
style="@style/CppKeyboardButton.Material.Simple.Digit" style="@style/CppKeyboardButton.Material.Simple.Digit"
a:text="7" /> a:text="7"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_7" a:id="@id/cpp_button_7"
style="@style/CppKeyboardButton.Material.Light.Simple.Digit" style="@style/CppKeyboardButton.Material.Light.Simple.Digit"
a:text="7" /> a:text="7"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_8" a:id="@id/cpp_button_8"
style="@style/CppKeyboardButton.Metro.Simple.Digit" style="@style/CppKeyboardButton.Metro.Simple.Digit"
a:text="8" /> a:text="8"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_8" a:id="@id/cpp_button_8"
style="@style/CppKeyboardButton.Material.Simple.Digit" style="@style/CppKeyboardButton.Material.Simple.Digit"
a:text="8" /> a:text="8"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_8" a:id="@id/cpp_button_8"
style="@style/CppKeyboardButton.Material.Light.Simple.Digit" style="@style/CppKeyboardButton.Material.Light.Simple.Digit"
a:text="8" /> a:text="8"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_9" a:id="@id/cpp_button_9"
style="@style/CppKeyboardButton.Metro.Simple.Digit" style="@style/CppKeyboardButton.Metro.Simple.Digit"
a:text="9" /> a:text="9"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_9" a:id="@id/cpp_button_9"
style="@style/CppKeyboardButton.Material.Simple.Digit" style="@style/CppKeyboardButton.Material.Simple.Digit"
a:text="9" /> a:text="9"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_9" a:id="@id/cpp_button_9"
style="@style/CppKeyboardButton.Material.Light.Simple.Digit" style="@style/CppKeyboardButton.Material.Light.Simple.Digit"
a:text="9" /> a:text="9"
tools:ignore="HardcodedText" />

View File

@ -26,5 +26,4 @@
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
a:id="@id/cpp_button_app" a:id="@id/cpp_button_app"
style="@style/CppKeyboardButton.Metro.Simple.Control.Image" style="@style/CppKeyboardButton.Metro.Simple.Control.Image"
a:contentDescription="App"
a:src="@drawable/ic_launch_white_48dp" /> a:src="@drawable/ic_launch_white_48dp" />

View File

@ -26,5 +26,4 @@
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
a:id="@id/cpp_button_app" a:id="@id/cpp_button_app"
style="@style/CppKeyboardButton.Material.Simple.Control.Image" style="@style/CppKeyboardButton.Material.Simple.Control.Image"
a:contentDescription="App"
a:src="@drawable/ic_launch_white_48dp" /> a:src="@drawable/ic_launch_white_48dp" />

View File

@ -26,5 +26,4 @@
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
a:id="@id/cpp_button_app" a:id="@id/cpp_button_app"
style="@style/CppKeyboardButton.Material.Light.Simple.Control.Image" style="@style/CppKeyboardButton.Material.Light.Simple.Control.Image"
a:contentDescription="App"
a:src="@drawable/ic_launch_white_48dp" /> a:src="@drawable/ic_launch_white_48dp" />

View File

@ -26,5 +26,4 @@
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
a:id="@id/cpp_button_copy" a:id="@id/cpp_button_copy"
style="@style/CppKeyboardButton.Metro.Simple.Control.Image" style="@style/CppKeyboardButton.Metro.Simple.Control.Image"
a:contentDescription="Copy"
a:src="@drawable/ic_content_copy_white_48dp" /> a:src="@drawable/ic_content_copy_white_48dp" />

View File

@ -26,5 +26,4 @@
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
a:id="@id/cpp_button_copy" a:id="@id/cpp_button_copy"
style="@style/CppKeyboardButton.Material.Simple.Control.Image" style="@style/CppKeyboardButton.Material.Simple.Control.Image"
a:contentDescription="Copy"
a:src="@drawable/ic_content_copy_white_48dp" /> a:src="@drawable/ic_content_copy_white_48dp" />

View File

@ -26,5 +26,4 @@
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
a:id="@id/cpp_button_copy" a:id="@id/cpp_button_copy"
style="@style/CppKeyboardButton.Material.Light.Simple.Control.Image" style="@style/CppKeyboardButton.Material.Light.Simple.Control.Image"
a:contentDescription="Copy"
a:src="@drawable/ic_content_copy_white_48dp" /> a:src="@drawable/ic_content_copy_white_48dp" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_division" a:id="@id/cpp_button_division"
style="@style/CppKeyboardButton.Metro.Simple.Operation" style="@style/CppKeyboardButton.Metro.Simple.Operation"
a:text="/" /> a:text="/"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_division" a:id="@id/cpp_button_division"
style="@style/CppKeyboardButton.Material.Simple.Operation" style="@style/CppKeyboardButton.Material.Simple.Operation"
a:text="/" /> a:text="/"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_division" a:id="@id/cpp_button_division"
style="@style/CppKeyboardButton.Material.Light.Simple.Operation" style="@style/CppKeyboardButton.Material.Light.Simple.Operation"
a:text="/" /> a:text="/"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_period" a:id="@id/cpp_button_period"
style="@style/CppKeyboardButton.Metro.Simple.Digit" style="@style/CppKeyboardButton.Metro.Simple.Digit"
a:text="." /> a:text="."
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_period" a:id="@id/cpp_button_period"
style="@style/CppKeyboardButton.Material.Simple.Digit" style="@style/CppKeyboardButton.Material.Simple.Digit"
a:text="." /> a:text="."
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_period" a:id="@id/cpp_button_period"
style="@style/CppKeyboardButton.Material.Light.Simple.Digit" style="@style/CppKeyboardButton.Material.Light.Simple.Digit"
a:text="." /> a:text="."
tools:ignore="HardcodedText" />

View File

@ -23,6 +23,8 @@
--> -->
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_equals" a:id="@id/cpp_button_equals"
style="@style/CppKeyboardButton.Metro.Simple.NoBg" style="@style/CppKeyboardButton.Metro.Simple.NoBg"
a:text="=" /> a:text="="
tools:ignore="HardcodedText" />

View File

@ -23,6 +23,8 @@
--> -->
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_equals" a:id="@id/cpp_button_equals"
style="@style/CppKeyboardButton.Material.Simple.NoBg" style="@style/CppKeyboardButton.Material.Simple.NoBg"
a:text="=" /> a:text="="
tools:ignore="HardcodedText" />

View File

@ -23,6 +23,8 @@
--> -->
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_equals" a:id="@id/cpp_button_equals"
style="@style/CppKeyboardButton.Material.Light.Simple.NoBg" style="@style/CppKeyboardButton.Material.Light.Simple.NoBg"
a:text="=" /> a:text="="
tools:ignore="HardcodedText" />

View File

@ -26,5 +26,4 @@
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
a:id="@id/cpp_button_erase" a:id="@id/cpp_button_erase"
style="@style/CppKeyboardButton.Metro.Simple.Operation.Image" style="@style/CppKeyboardButton.Metro.Simple.Operation.Image"
a:contentDescription="Erase"
a:src="@drawable/ic_backspace_white_48dp" /> a:src="@drawable/ic_backspace_white_48dp" />

View File

@ -26,5 +26,4 @@
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
a:id="@id/cpp_button_erase" a:id="@id/cpp_button_erase"
style="@style/CppKeyboardButton.Material.Simple.Control.Image.Highlighted" style="@style/CppKeyboardButton.Material.Simple.Control.Image.Highlighted"
a:contentDescription="Erase"
a:src="@drawable/ic_backspace_white_48dp" /> a:src="@drawable/ic_backspace_white_48dp" />

View File

@ -26,5 +26,4 @@
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
a:id="@id/cpp_button_erase" a:id="@id/cpp_button_erase"
style="@style/CppKeyboardButton.Material.Light.Simple.Control.Image.Highlighted" style="@style/CppKeyboardButton.Material.Light.Simple.Control.Image.Highlighted"
a:contentDescription="Erase"
a:src="@drawable/ic_backspace_white_48dp" /> a:src="@drawable/ic_backspace_white_48dp" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_multiplication" a:id="@id/cpp_button_multiplication"
style="@style/CppKeyboardButton.Metro.Simple.Operation" style="@style/CppKeyboardButton.Metro.Simple.Operation"
a:text="×" /> a:text="×"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_multiplication" a:id="@id/cpp_button_multiplication"
style="@style/CppKeyboardButton.Material.Simple.Operation" style="@style/CppKeyboardButton.Material.Simple.Operation"
a:text="×" /> a:text="×"
tools:ignore="HardcodedText" />

View File

@ -24,6 +24,8 @@
<Button <Button
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
a:id="@id/cpp_button_multiplication" a:id="@id/cpp_button_multiplication"
style="@style/CppKeyboardButton.Material.Light.Simple.Operation" style="@style/CppKeyboardButton.Material.Light.Simple.Operation"
a:text="×" /> a:text="×"
tools:ignore="HardcodedText" />

View File

@ -26,5 +26,4 @@
xmlns:a="http://schemas.android.com/apk/res/android" xmlns:a="http://schemas.android.com/apk/res/android"
a:id="@id/cpp_button_paste" a:id="@id/cpp_button_paste"
style="@style/CppKeyboardButton.Metro.Simple.Control.Image" style="@style/CppKeyboardButton.Metro.Simple.Control.Image"
a:contentDescription="Paste"
a:src="@drawable/ic_content_paste_white_48dp" /> a:src="@drawable/ic_content_paste_white_48dp" />

Some files were not shown because too many files have changed in this diff Show More