From 441ccdfc8a31e172ef4a081c6de548bf0d484626 Mon Sep 17 00:00:00 2001 From: serso Date: Wed, 10 Feb 2016 17:41:32 +0100 Subject: [PATCH] Converter --- app/build.gradle | 1 + app/misc/libs/measure.jar | Bin 0 -> 91580 bytes .../solovyev/android/calculator/Display.java | 4 +- .../android/calculator/EditorFragment.java | 13 +- .../converter/ConverterFragment.java | 252 +++++++++++++++++ .../view/NumeralBaseConverterDialog.java | 118 -------- .../view/UnitConverterViewBuilder.java | 253 ------------------ .../main/res/layout/cpp_unit_converter.xml | 113 +++----- 8 files changed, 309 insertions(+), 445 deletions(-) create mode 100644 app/misc/libs/measure.jar create mode 100644 app/src/main/java/org/solovyev/android/calculator/converter/ConverterFragment.java delete mode 100644 app/src/main/java/org/solovyev/android/calculator/view/NumeralBaseConverterDialog.java delete mode 100644 app/src/main/java/org/solovyev/android/calculator/view/UnitConverterViewBuilder.java diff --git a/app/build.gradle b/app/build.gradle index f6abaf19..b0e229b5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,6 +67,7 @@ dependencies { compile('ch.acra:acra:4.7.0') { exclude group: 'org.json' } + compile ':measure:' compile ':drag-button:1.1@aar' compile ':square-otto:1.3.9-SNAPSHOT' apt ':square-otto-compiler:1.3.9-SNAPSHOT' diff --git a/app/misc/libs/measure.jar b/app/misc/libs/measure.jar new file mode 100644 index 0000000000000000000000000000000000000000..bc0dc6d9987e2cd6cbc9ddb28cac6aee3d389e2b GIT binary patch literal 91580 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 X0}VtTC@3S~p9?Y27Zw9t9qRu8aS&x$ literal 0 HcmV?d00001 diff --git a/app/src/main/java/org/solovyev/android/calculator/Display.java b/app/src/main/java/org/solovyev/android/calculator/Display.java index 017170a4..9b414138 100644 --- a/app/src/main/java/org/solovyev/android/calculator/Display.java +++ b/app/src/main/java/org/solovyev/android/calculator/Display.java @@ -45,7 +45,6 @@ import org.solovyev.android.calculator.calculations.CalculationFailedEvent; import org.solovyev.android.calculator.calculations.CalculationFinishedEvent; import org.solovyev.android.calculator.errors.FixableErrorsActivity; import org.solovyev.android.calculator.jscl.JsclOperation; -import org.solovyev.android.calculator.view.NumeralBaseConverterDialog; import dagger.Lazy; import jscl.math.Generic; @@ -264,7 +263,8 @@ public class Display implements CalculatorEventListener, View.OnClickListener, V return true; case R.string.c_convert: if (result != null) { - new NumeralBaseConverterDialog(result.toString()).show(App.getApplication()); + // FIXME: 2016-02-10 + //new NumeralBaseConverterDialog(result.toString()).show(App.getApplication()); } return true; case R.string.c_plot: diff --git a/app/src/main/java/org/solovyev/android/calculator/EditorFragment.java b/app/src/main/java/org/solovyev/android/calculator/EditorFragment.java index 3f8225c1..89b94a57 100644 --- a/app/src/main/java/org/solovyev/android/calculator/EditorFragment.java +++ b/app/src/main/java/org/solovyev/android/calculator/EditorFragment.java @@ -24,10 +24,17 @@ package org.solovyev.android.calculator; import android.content.SharedPreferences; import android.os.Bundle; -import android.view.*; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; + +import org.solovyev.android.calculator.converter.ConverterFragment; + import butterknife.Bind; import butterknife.ButterKnife; -import org.solovyev.android.calculator.view.NumeralBaseConverterDialog; import javax.annotation.Nonnull; import javax.inject.Inject; @@ -99,7 +106,7 @@ public class EditorFragment extends BaseFragment { Locator.getInstance().getPlotter().plot(); return true; case R.id.menu_conversion_tool: - new NumeralBaseConverterDialog(null).show(getActivity()); + ConverterFragment.show(getActivity()); return true; case R.id.menu_about: launcher.showAbout(); diff --git a/app/src/main/java/org/solovyev/android/calculator/converter/ConverterFragment.java b/app/src/main/java/org/solovyev/android/calculator/converter/ConverterFragment.java new file mode 100644 index 00000000..70efdf1a --- /dev/null +++ b/app/src/main/java/org/solovyev/android/calculator/converter/ConverterFragment.java @@ -0,0 +1,252 @@ +package org.solovyev.android.calculator.converter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.design.widget.TextInputLayout; +import android.support.v4.app.FragmentActivity; +import android.support.v7.app.AlertDialog; +import android.view.ContextMenu; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Spinner; + +import org.solovyev.android.Check; +import org.solovyev.android.calculator.App; +import org.solovyev.android.calculator.BaseDialogFragment; +import org.solovyev.android.calculator.R; + +import butterknife.Bind; +import butterknife.ButterKnife; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Nonnull; +import javax.measure.unit.Dimension; +import javax.measure.unit.NonSI; +import javax.measure.unit.SI; +import javax.measure.unit.Unit; + +public class ConverterFragment extends BaseDialogFragment + implements AdapterView.OnItemSelectedListener, View.OnClickListener, + MenuItem.OnMenuItemClickListener { + + private static final Map>> units = new HashMap<>(); + + private enum MyDimension { + TIME(Dimension.TIME, "Time"), + AMOUNT_OF_SUBSTANCE(Dimension.AMOUNT_OF_SUBSTANCE, "Amount of substance"), + ELECTRIC_CURRENT(Dimension.ELECTRIC_CURRENT, "Electric current"), + LENGTH(Dimension.LENGTH, "Length"), + MASS(Dimension.MASS, "Mass"), + TEMPERATURE(Dimension.TEMPERATURE, "Temperature"); + + @NonNull + public final Dimension dimension; + @NonNull + public final String name; + + MyDimension(@NonNull Dimension dimension, @NonNull String name) { + this.dimension = dimension; + this.name = name; + } + + @Nullable + public static MyDimension getByDimension(@NonNull Unit unit) { + for (MyDimension myDimension : values()) { + if (myDimension.dimension.equals(unit.getDimension())) { + return myDimension; + } + } + return null; + } + + @Nullable + public static MyDimension getByGroup(int group) { + final int ordinal = group - Menu.FIRST; + final MyDimension[] values = values(); + if (ordinal >= 0 && ordinal < values.length) { + return values[ordinal]; + } + return null; + } + + public int group() { + return Menu.FIRST + ordinal(); + } + } + + @Bind(R.id.converter_spinner_from) + Button spinnerFrom; + @Bind(R.id.converter_label_from) + TextInputLayout labelFrom; + @Bind(R.id.converter_edittext_from) + EditText editTextFrom; + @Bind(R.id.converter_spinner_to) + Spinner spinnerTo; + @Bind(R.id.converter_label_to) + TextInputLayout labelTo; + @Bind(R.id.converter_edittext_to) + EditText editTextTo; + private ArrayAdapter> adapterTo; + + private static void addUnit(@NonNull Unit unit) { + final MyDimension dimension = MyDimension.getByDimension(unit); + if (dimension == null) { + return; + } + + List> unitsInDimension = units.get(dimension); + if (unitsInDimension == null) { + unitsInDimension = new ArrayList<>(); + units.put(dimension, unitsInDimension); + } + unitsInDimension.add(unit); + } + + public static void show(@Nonnull FragmentActivity activity) { + App.showDialog(new ConverterFragment(), "converter", + activity.getSupportFragmentManager()); + } + + @Override + protected void onPrepareDialog(@NonNull AlertDialog.Builder builder) { + + } + + @SuppressLint("InflateParams") + @Nullable + @Override + protected View onCreateDialogView(@NonNull Context context, @NonNull LayoutInflater inflater, + @Nullable Bundle savedInstanceState) { + final View view = inflater.inflate(R.layout.cpp_unit_converter, null); + ButterKnife.bind(this, view); + + adapterTo = makeAdapter(context); + spinnerTo.setAdapter(adapterTo); + + spinnerFrom.setOnClickListener(this); + + return view; + } + + @Nonnull + private static ArrayAdapter> makeAdapter(@NonNull Context context) { + final ArrayAdapter> adapter = + new ArrayAdapter<>(context, R.layout.support_simple_spinner_dropdown_item); + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + return adapter; + } + + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + adapterTo.clear(); + /*final Unit unitFrom = adapterFrom.getItem(position); + final List> units = ConverterFragment.units.get(unitFrom.getDimension()); + for (Unit unitTo : units) { + if (!unitTo.equals(unitFrom)) { + adapterTo.add(unitTo); + } + }*/ + } + + @Override + public void onNothingSelected(AdapterView parent) { + + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.converter_spinner_from: + showDimensions(); + break; + } + } + + private void showDimensions() { + spinnerFrom.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() { + @Override + public void onCreateContextMenu(ContextMenu menu, View v, + ContextMenu.ContextMenuInfo menuInfo) { + Check.isTrue(v.getId() == R.id.converter_spinner_from); + menu.clear(); + // can't use sub-menus as AlertDialog doesn't support them + for (MyDimension dimension : units.keySet()) { + menu.add(Menu.NONE, dimension.group(), Menu.NONE, dimension.name) + .setOnMenuItemClickListener(ConverterFragment.this); + } + unregisterForContextMenu(spinnerFrom); + } + }); + spinnerFrom.showContextMenu(); + } + + @Override + public boolean onMenuItemClick(MenuItem item) { + if (item.getGroupId() == Menu.NONE) { + final MyDimension dimension = MyDimension.getByGroup(item.getItemId()); + if (dimension == null) { + return false; + } + spinnerFrom.post(new Runnable() { + @Override + public void run() { + showUnits(dimension); + } + }); + return true; + } + final MyDimension dimension = MyDimension.getByGroup(item.getGroupId()); + final List> unitsInDimension = units.get(dimension); + final Unit unit = unitsInDimension.get(item.getItemId()); + spinnerFrom.setText(unit.toString()); + adapterTo.clear(); + for (Unit unitInDimension : unitsInDimension) { + if (!unitInDimension.equals(unit)) { + adapterTo.add(unitInDimension); + } + } + return true; + } + + private void showUnits(@NonNull final MyDimension dimension) { + spinnerFrom.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() { + @Override + public void onCreateContextMenu(ContextMenu menu, View v, + ContextMenu.ContextMenuInfo menuInfo) { + Check.isTrue(v.getId() == R.id.converter_spinner_from); + menu.clear(); + final int group = dimension.group(); + final List> get = units.get(dimension); + for (int i = 0; i < get.size(); i++) { + final Unit unit = get.get(i); + menu.add(group, i, Menu.NONE, unit.toString()) + .setOnMenuItemClickListener(ConverterFragment.this); + } + unregisterForContextMenu(spinnerFrom); + } + }); + spinnerFrom.showContextMenu(); + } + + static { + for (Unit unit : SI.getInstance().getUnits()) { + addUnit(unit); + } + for (Unit unit : NonSI.getInstance().getUnits()) { + addUnit(unit); + } + } +} diff --git a/app/src/main/java/org/solovyev/android/calculator/view/NumeralBaseConverterDialog.java b/app/src/main/java/org/solovyev/android/calculator/view/NumeralBaseConverterDialog.java deleted file mode 100644 index c8baead1..00000000 --- a/app/src/main/java/org/solovyev/android/calculator/view/NumeralBaseConverterDialog.java +++ /dev/null @@ -1,118 +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.view; - -import android.content.Context; -import android.support.v7.app.AlertDialog; -import android.view.View; -import android.view.WindowManager; - -import org.solovyev.android.calculator.App; -import org.solovyev.android.calculator.Locator; -import org.solovyev.android.calculator.ParseException; -import org.solovyev.android.calculator.R; -import org.solovyev.android.calculator.ToJsclTextProcessor; -import org.solovyev.android.calculator.units.CalculatorNumeralBase; -import org.solovyev.common.MutableObject; -import org.solovyev.common.text.Strings; -import org.solovyev.common.units.Unit; -import org.solovyev.common.units.UnitImpl; - -import java.util.Arrays; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -public class NumeralBaseConverterDialog { - - @Nullable - private String initialFromValue; - - public NumeralBaseConverterDialog(@Nullable String initialFromValue) { - this.initialFromValue = initialFromValue; - } - - public void show(@Nonnull Context context) { - final UnitConverterViewBuilder b = new UnitConverterViewBuilder(); - b.setFromUnitTypes(Arrays.asList(CalculatorNumeralBase.values())); - b.setToUnitTypes(Arrays.asList(CalculatorNumeralBase.values())); - - if (!Strings.isEmpty(initialFromValue)) { - String value = initialFromValue; - try { - value = ToJsclTextProcessor.getInstance().process(value).getValue(); - b.setFromValue(UnitImpl.newInstance(value, CalculatorNumeralBase.valueOf(Locator.getInstance().getEngine().getMathEngine().getNumeralBase()))); - } catch (ParseException e) { - b.setFromValue(UnitImpl.newInstance(value, CalculatorNumeralBase.valueOf(Locator.getInstance().getEngine().getMathEngine().getNumeralBase()))); - } - } else { - b.setFromValue(UnitImpl.newInstance("", CalculatorNumeralBase.valueOf(Locator.getInstance().getEngine().getMathEngine().getNumeralBase()))); - } - - b.setConverter(CalculatorNumeralBase.getConverter()); - - final MutableObject alertDialogHolder = new MutableObject(); - b.setOkButtonOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - final AlertDialog alertDialog = alertDialogHolder.getObject(); - if (alertDialog != null) { - alertDialog.dismiss(); - } - } - }); - - b.setCustomButtonData(new UnitConverterViewBuilder.CustomButtonData(context.getString(R.string.c_use_short), new UnitConverterViewBuilder.CustomButtonOnClickListener() { - @Override - public void onClick(@Nonnull Unit fromUnits, @Nonnull Unit toUnits) { - String toUnitsValue = toUnits.getValue(); - - if (!toUnits.getUnitType().equals(CalculatorNumeralBase.valueOf(Locator.getInstance().getEngine().getMathEngine().getNumeralBase()))) { - toUnitsValue = ((CalculatorNumeralBase) toUnits.getUnitType()).getNumeralBase().getJsclPrefix() + toUnitsValue; - } - - Locator.getInstance().getKeyboard().buttonPressed(toUnitsValue); - final AlertDialog alertDialog = alertDialogHolder.getObject(); - if (alertDialog != null) { - alertDialog.dismiss(); - } - } - })); - - final AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context, App.getTheme().alertDialogTheme); - alertBuilder.setView(b.build(context)); - alertBuilder.setTitle(R.string.c_conversion_tool); - - final AlertDialog alertDialog = alertBuilder.create(); - - final WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); - lp.copyFrom(alertDialog.getWindow().getAttributes()); - - lp.width = WindowManager.LayoutParams.FILL_PARENT; - lp.height = WindowManager.LayoutParams.WRAP_CONTENT; - - alertDialogHolder.setObject(alertDialog); - alertDialog.show(); - alertDialog.getWindow().setAttributes(lp); - } -} diff --git a/app/src/main/java/org/solovyev/android/calculator/view/UnitConverterViewBuilder.java b/app/src/main/java/org/solovyev/android/calculator/view/UnitConverterViewBuilder.java deleted file mode 100644 index aad83dbd..00000000 --- a/app/src/main/java/org/solovyev/android/calculator/view/UnitConverterViewBuilder.java +++ /dev/null @@ -1,253 +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.view; - -import android.app.Activity; -import android.content.Context; -import android.text.ClipboardManager; -import android.text.Editable; -import android.text.TextWatcher; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.EditText; -import android.widget.Spinner; -import android.widget.Toast; - -import org.solovyev.android.calculator.R; -import org.solovyev.android.view.ViewBuilder; -import org.solovyev.android.view.ViewFromLayoutBuilder; -import org.solovyev.common.units.ConversionException; -import org.solovyev.common.units.Conversions; -import org.solovyev.common.units.Unit; -import org.solovyev.common.units.UnitConverter; -import org.solovyev.common.units.UnitImpl; -import org.solovyev.common.units.UnitType; - -import java.util.Collections; -import java.util.List; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -/** - * User: serso - * Date: 4/20/12 - * Time: 4:50 PM - */ -public class UnitConverterViewBuilder implements ViewBuilder { - - @Nonnull - private List> fromUnitTypes = Collections.emptyList(); - - @Nonnull - private List> toUnitTypes = Collections.emptyList(); - - @Nullable - private Unit fromValue; - - @Nonnull - private UnitConverter converter = UnitConverter.Dummy.getInstance(); - - @Nullable - private View.OnClickListener okButtonOnClickListener; - - @Nullable - private CustomButtonData customButtonData; - - private static void doConversion(@Nonnull View main, @Nonnull Context context, @Nonnull UnitConverter converter) { - final EditText fromEditText = (EditText) main.findViewById(R.id.units_from); - - final EditText toEditText = (EditText) main.findViewById(R.id.units_to); - - final String from = fromEditText.getText().toString(); - try { - toEditText.setText(Conversions.doConversion(converter, from, getFromUnitType(main), getToUnitType(main))); - } catch (ConversionException e) { - toEditText.setText(context.getString(R.string.c_error)); - } - } - - @Nonnull - private static Unit getToUnit(@Nonnull View main) { - final EditText toUnits = (EditText) main.findViewById(R.id.units_to); - return UnitImpl.newInstance(toUnits.getText().toString(), getToUnitType(main)); - } - - @Nonnull - private static UnitType getToUnitType(@Nonnull View main) { - final Spinner toSpinner = (Spinner) main.findViewById(R.id.unit_types_to); - return (UnitType) toSpinner.getSelectedItem(); - } - - @Nonnull - private static Unit getFromUnit(@Nonnull View main) { - final EditText fromUnits = (EditText) main.findViewById(R.id.units_from); - return UnitImpl.newInstance(fromUnits.getText().toString(), getFromUnitType(main)); - } - - @Nonnull - private static UnitType getFromUnitType(@Nonnull View main) { - final Spinner fromSpinner = (Spinner) main.findViewById(R.id.unit_types_from); - return (UnitType) fromSpinner.getSelectedItem(); - } - - public void setFromUnitTypes(@Nonnull List> fromUnitTypes) { - this.fromUnitTypes = fromUnitTypes; - } - - public void setToUnitTypes(@Nonnull List> toUnitTypes) { - this.toUnitTypes = toUnitTypes; - } - - public void setFromValue(@Nullable Unit fromValue) { - this.fromValue = fromValue; - } - - public void setConverter(@Nonnull UnitConverter converter) { - this.converter = converter; - } - - public void setOkButtonOnClickListener(@Nullable View.OnClickListener okButtonOnClickListener) { - this.okButtonOnClickListener = okButtonOnClickListener; - } - - public void setCustomButtonData(@Nullable CustomButtonData customButtonData) { - this.customButtonData = customButtonData; - } - - @Nonnull - @Override - public View build(@Nonnull final Context context) { - final View main = ViewFromLayoutBuilder.newInstance(R.layout.cpp_unit_converter).build(context); - - final Spinner fromSpinner = (Spinner) main.findViewById(R.id.unit_types_from); - final EditText fromEditText = (EditText) main.findViewById(R.id.units_from); - fromEditText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - } - - @Override - public void afterTextChanged(Editable s) { - doConversion(main, context, UnitConverterViewBuilder.this.converter); - } - }); - - fillSpinner(main, context, R.id.unit_types_from, fromUnitTypes); - fillSpinner(main, context, R.id.unit_types_to, toUnitTypes); - - if (fromValue != null) { - fromEditText.setText(fromValue.getValue()); - - int i = fromUnitTypes.indexOf(fromValue.getUnitType()); - if (i >= 0) { - fromSpinner.setSelection(i); - } - } - - final Button copyButton = (Button) main.findViewById(R.id.unit_converter_copy_button); - copyButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - final EditText toEditText = (EditText) main.findViewById(R.id.units_to); - - final ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Activity.CLIPBOARD_SERVICE); - clipboard.setText(toEditText.getText().toString()); - Toast.makeText(context, context.getText(R.string.c_result_copied), Toast.LENGTH_SHORT).show(); - } - }); - - final Button okButton = (Button) main.findViewById(R.id.unit_converter_ok_button); - if (okButtonOnClickListener == null) { - ((ViewGroup) okButton.getParent()).removeView(okButton); - } else { - okButton.setOnClickListener(this.okButtonOnClickListener); - } - - final Button customButton = (Button) main.findViewById(R.id.unit_converter_custom_button); - if (customButtonData == null) { - ((ViewGroup) customButton.getParent()).removeView(customButton); - } else { - customButton.setText(customButtonData.text); - customButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - customButtonData.clickListener.onClick(getFromUnit(main), getToUnit(main)); - } - }); - } - - - return main; - } - - private void fillSpinner(@Nonnull final View main, - @Nonnull final Context context, - final int spinnerId, - @Nonnull List> unitTypes) { - final Spinner spinner = (Spinner) main.findViewById(spinnerId); - - final ArrayAdapter> adapter = new ArrayAdapter>(context, R.layout.support_simple_spinner_dropdown_item); - adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - for (UnitType fromUnitType : unitTypes) { - adapter.add(fromUnitType); - } - spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - doConversion(main, context, UnitConverterViewBuilder.this.converter); - } - - @Override - public void onNothingSelected(AdapterView parent) { - } - }); - spinner.setAdapter(adapter); - } - - public interface CustomButtonOnClickListener { - void onClick(@Nonnull Unit fromUnits, @Nonnull Unit toUnits); - } - - public static class CustomButtonData { - - @Nonnull - private String text; - - @Nonnull - private CustomButtonOnClickListener clickListener; - - - public CustomButtonData(@Nonnull String text, @Nonnull CustomButtonOnClickListener clickListener) { - this.text = text; - this.clickListener = clickListener; - } - } -} diff --git a/app/src/main/res/layout/cpp_unit_converter.xml b/app/src/main/res/layout/cpp_unit_converter.xml index 4bc2bdc9..cfbf09e5 100644 --- a/app/src/main/res/layout/cpp_unit_converter.xml +++ b/app/src/main/res/layout/cpp_unit_converter.xml @@ -22,88 +22,63 @@ ~ Site: http://se.solovyev.org --> - + + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="horizontal" + android:paddingBottom="10dp"> - +