Skip to content

Commit

Permalink
Renew converter screen
Browse files Browse the repository at this point in the history
Some code fixes
  • Loading branch information
nevack committed May 11, 2016
1 parent 3833d1b commit 6eedf43
Show file tree
Hide file tree
Showing 26 changed files with 155 additions and 126 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,7 @@ public UnitsCategoryAdapter(Context context) {
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup,
int viewType) {
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.unitcardview, viewGroup, false);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,14 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Spinner;
import android.widget.TextView;

import org.nevack.unitconverter.R;
import org.nevack.unitconverter.model.EUnitCategory;
import org.nevack.unitconverter.model.converter.AreaConverter;
import org.nevack.unitconverter.model.converter.Converter;
import org.nevack.unitconverter.model.converter.CurrencyConverter;
import org.nevack.unitconverter.model.converter.LengthConverter;
import org.nevack.unitconverter.model.converter.MassConverter;
import org.nevack.unitconverter.model.converter.MemoryConverter;
import org.nevack.unitconverter.model.converter.OtherConverter;
import org.nevack.unitconverter.model.converter.SpeedConverter;
import org.nevack.unitconverter.model.converter.TemperatureConverter;
import org.nevack.unitconverter.model.converter.TimeConverter;
import org.nevack.unitconverter.model.converter.VolumeConverter;

public class ConverterFragment extends Fragment{

Expand All @@ -41,7 +31,7 @@ public class ConverterFragment extends Fragment{
private EditText mResultEditText;
private TextView mResultTextView;
private Spinner mResultSpinner;
private ImageButton mSwapImageButton;
private Button mSwapImageButton;

private EUnitCategory mCategory;
private Converter mConverter;
Expand Down Expand Up @@ -98,7 +88,7 @@ public void afterTextChanged(Editable s) {
mSourceTextView = (TextView) view.findViewById(R.id.sourcevaluesymbol);
mResultTextView = (TextView) view.findViewById(R.id.resultvaluesymbol);

mSwapImageButton = (ImageButton) view.findViewById(R.id.swapbutton);
mSwapImageButton = (Button) view.findViewById(R.id.swapbutton);
mSwapImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Expand All @@ -112,6 +102,20 @@ public void onClick(View v) {
}
});

mSourceTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mSourceSpinner.performClick();
}
});

mResultTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mResultSpinner.performClick();
}
});

return view;
}

Expand Down Expand Up @@ -189,41 +193,7 @@ protected void onPostExecute(Void aVoid) {

@Override
protected Void doInBackground(Void... params) {
switch (mCategory) {
case MASS:
mConverter = new MassConverter(getActivity());
break;
case VOLUME:
mConverter = new VolumeConverter(getActivity());
break;
case LENGTH:
mConverter = new LengthConverter(getActivity());
break;
case TEMPERATURE:
mConverter = new TemperatureConverter(getActivity());
break;
case SPEED:
mConverter = new SpeedConverter(getActivity());
break;
case TIME:
mConverter = new TimeConverter(getActivity());
break;
case OTHER:
mConverter = new OtherConverter(getActivity());
break;
case MEMORY:
mConverter = new MemoryConverter(getActivity());
break;
case CURRENCY:
mConverter = new CurrencyConverter(getActivity());
break;
case AREA:
mConverter = new AreaConverter(getActivity());
break;
default:
mConverter = new OtherConverter(getActivity());
break;
}
mConverter = mCategory.getConverter(getActivity());

return null;
}
Expand Down
35 changes: 24 additions & 11 deletions app/src/main/java/org/nevack/unitconverter/model/EUnitCategory.java
Original file line number Diff line number Diff line change
@@ -1,29 +1,34 @@
package org.nevack.unitconverter.model;

import android.content.Context;

import org.nevack.unitconverter.R;
import org.nevack.unitconverter.model.converter.*;

public enum EUnitCategory {
MASS(R.string.mass, R.drawable.weight, R.color.unitRed, R.drawable.ic_weight),
VOLUME(R.string.volume, R.drawable.volume, R.color.unitGreen, R.drawable.ic_volume),
TEMPERATURE(R.string.temperature, R.drawable.temperature, R.color.unitPurple, R.drawable.ic_temperature),
SPEED(R.string.speed, R.drawable.speed, R.color.unitDBlue, R.drawable.ic_speed),
LENGTH(R.string.length, R.drawable.ruler, R.color.unitGrey, R.drawable.ic_ruler),
AREA(R.string.area, R.drawable.area, R.color.unitRed, R.drawable.ic_area),
MEMORY(R.string.memory, R.drawable.memory, R.color.unitLBlue, R.drawable.ic_memory),
TIME(R.string.time, R.drawable.timer, R.color.unitOrange, R.drawable.ic_timer),
CURRENCY(R.string.currency, R.drawable.currency, R.color.unitDGreen, R.drawable.ic_currency),
OTHER(R.string.other, R.drawable.other, R.color.unitRed, R.drawable.ic_other);
MASS(R.string.mass, R.drawable.weight, R.color.unitRed, R.drawable.ic_weight, MassConverter.class),
VOLUME(R.string.volume, R.drawable.volume, R.color.unitGreen, R.drawable.ic_volume, VolumeConverter.class),
TEMPERATURE(R.string.temperature, R.drawable.temperature, R.color.unitPurple, R.drawable.ic_temperature, TemperatureConverter.class),
SPEED(R.string.speed, R.drawable.speed, R.color.unitDBlue, R.drawable.ic_speed, SpeedConverter.class),
LENGTH(R.string.length, R.drawable.ruler, R.color.unitGrey, R.drawable.ic_ruler, LengthConverter.class),
AREA(R.string.area, R.drawable.area, R.color.unitRed, R.drawable.ic_area, AreaConverter.class),
MEMORY(R.string.memory, R.drawable.memory, R.color.unitLBlue, R.drawable.ic_memory, MemoryConverter.class),
TIME(R.string.time, R.drawable.timer, R.color.unitOrange, R.drawable.ic_timer, TimeConverter.class),
CURRENCY(R.string.currency, R.drawable.currency, R.color.unitDGreen, R.drawable.ic_currency, CurrencyConverter.class),
OTHER(R.string.other, R.drawable.other, R.color.unitRed, R.drawable.ic_other, OtherConverter.class);

private int unitNameResID;
private int unitIconResID;
private int unitColorResID;
private int unitNavIconResID;
private Class<? extends Converter> converter;

EUnitCategory(int unitNameResID, int unitIconResID, int unitColorResID, int unitNavIconResID) {
EUnitCategory(int unitNameResID, int unitIconResID, int unitColorResID, int unitNavIconResID, Class<? extends Converter> converter) {
this.unitNameResID = unitNameResID;
this.unitIconResID = unitIconResID;
this.unitColorResID = unitColorResID;
this.unitNavIconResID = unitNavIconResID;
this.converter = converter;
}

public int getNameResID() {
Expand All @@ -41,4 +46,12 @@ public int getColorResID() {
public int getNavIconResID() {
return unitNavIconResID;
}

public Converter getConverter(Context context) {
try {
return converter.getConstructor(Context.class).newInstance(context);
} catch (Exception e) {
return new OtherConverter(context);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,8 @@
import org.nevack.unitconverter.model.Unit;

public class AreaConverter extends Converter {

private static final String SQUARE_POSTFIX = "<sup><small>2</small></sup>";

public AreaConverter(Context context) {
this.context = context;
super(context);

unitList.add(new Unit(context.getString(R.string.squaremetre), 1d, context.getString(R.string.metresymbol) + SQUARE_POSTFIX));
unitList.add(new Unit(context.getString(R.string.squarecentimetre), 0.0001, context.getString(R.string.centimetresymbol) + SQUARE_POSTFIX));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,16 @@

public abstract class Converter {
protected static final String TAG = "Converter";
protected static final String CUBIC_POSTFIX = "<sup><small>3</small></sup>";
protected static final String SQUARE_POSTFIX = "<sup><small>2</small></sup>";

protected List<Unit> unitList = new ArrayList<>();
protected Context context;

public Converter(Context context) {
this.context = context;
}

public String convert(String inputValue, int inputValueType, int outputValueType) {
BigDecimal source = new BigDecimal(inputValue);
BigDecimal sourceFactor = BigDecimal.valueOf(unitList.get(inputValueType).getFactor());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Locale;
Expand All @@ -26,7 +28,7 @@ public class CurrencyConverter extends Converter{
private static final String FILE_NAME = "currency.xml";

public CurrencyConverter(Context context) {
this.context = context;
super(context);

String url = NBRBCurrencyExchangeParser.NBRB_URL + new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH).format(new Date());

Expand Down Expand Up @@ -60,6 +62,13 @@ public CurrencyConverter(Context context) {
}

unitList.add(new Unit("Белорусский рубль", 1d, "BYR"));

Collections.sort(unitList, new Comparator<Unit>() {
@Override
public int compare(Unit lhs, Unit rhs) {
return lhs.getName().compareToIgnoreCase(rhs.getName());
}
});
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
public class LengthConverter extends Converter{

public LengthConverter(Context context) {
this.context = context;
super(context);

unitList.add(new Unit(context.getString(R.string.metre), 1d, context.getString(R.string.metresymbol)));
unitList.add(new Unit(context.getString(R.string.millimetre), 0.001d, context.getString(R.string.millimetresymbol)));
unitList.add(new Unit(context.getString(R.string.centimetre), 0.01d, context.getString(R.string.centimetresymbol)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
public class MassConverter extends Converter{

public MassConverter(Context context) {
this.context = context;
super(context);

unitList.add(new Unit(context.getString(R.string.kilogram), 1d, context.getString(R.string.kilogramsymbol)));
unitList.add(new Unit(context.getString(R.string.gram), 0.001d, context.getString(R.string.gramsymbol)));
unitList.add(new Unit(context.getString(R.string.milligram), 0.0000001d, context.getString(R.string.milligramsymbol)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
public class MemoryConverter extends Converter {

public MemoryConverter(Context context) {
this.context = context;
super(context);

unitList.add(new Unit(context.getString(R.string.bit), 0.125d, context.getString(R.string.bit_symbol)));
unitList.add(new Unit(context.getString(R.string.memorybyte), 1d, context.getString(R.string.memorybytesymbol)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
public class OtherConverter extends Converter {

public OtherConverter(Context context){
this.context = context;
super(context);

unitList.add(new Unit(context.getString(R.string.pico), 0.000000000001d, "×10<sup><small>-12</small></sup>"));
unitList.add(new Unit(context.getString(R.string.nano), 0.000000001d, "×10<sup><small>-9</small></sup>"));
unitList.add(new Unit(context.getString(R.string.micro), 0.000001d, "×10<sup><small>-6</small></sup>"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@

public class SpeedConverter extends Converter {
public SpeedConverter(Context context) {
this.context = context;
super(context);

unitList.add(new Unit(context.getString(R.string.metrespersecond), 3.6d, context.getString(R.string.mpssymbol)));
unitList.add(new Unit(context.getString(R.string.kilometresperhour), 1d, context.getString(R.string.kmpssymbol)));
unitList.add(new Unit(context.getString(R.string.milesperhour), 1.609344d, context.getString(R.string.miphsymbol)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@

public class TemperatureConverter extends Converter {
public TemperatureConverter(Context context) {
this.context = context;
super(context);

unitList.add(new Unit(context.getString(R.string.kelvin), 1d, context.getString(R.string.kelvinsymbol)));
unitList.add(new Unit(context.getString(R.string.celsius), 1d, context.getString(R.string.celsiussymbol)));
unitList.add(new Unit(context.getString(R.string.fahrenheit), 1d, context.getString(R.string.fahrenheitsymbol)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
public class TimeConverter extends Converter
{
public TimeConverter(Context context) {
this.context = context;
super(context);

unitList.add(new Unit(context.getString(R.string.microsecond), 0.000001d, context.getString(R.string.microsecondsymbol)));
unitList.add(new Unit(context.getString(R.string.millisecond), 0.001d, context.getString(R.string.millisecondsymbol)));
unitList.add(new Unit(context.getString(R.string.second), 1d, context.getString(R.string.secondsymbol)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@

public class VolumeConverter extends Converter{

private static final String CUBIC_POSTFIX = "<sup><small>3</small></sup>";

public VolumeConverter(Context context) {
this.context = context;
super(context);

unitList.add(new Unit(context.getString(R.string.litre), 0.001d, context.getString(R.string.litresymbol)));
unitList.add(new Unit(context.getString(R.string.cubicmetre), 1d, context.getString(R.string.metresymbol) + CUBIC_POSTFIX));
unitList.add(new Unit(context.getString(R.string.millilitre), 0.000001d, context.getString(R.string.millilitresymbol)));
Expand Down
Binary file removed app/src/main/res/drawable-hdpi/ic_swap_vertical.png
Binary file not shown.
Binary file removed app/src/main/res/drawable-mdpi/ic_swap_vertical.png
Binary file not shown.
Binary file removed app/src/main/res/drawable-xhdpi/ic_swap_vertical.png
Binary file not shown.
Binary file removed app/src/main/res/drawable-xxhdpi/ic_swap_vertical.png
Binary file not shown.
Binary file removed app/src/main/res/drawable-xxxhdpi/ic_swap_vertical.png
Binary file not shown.
2 changes: 1 addition & 1 deletion app/src/main/res/layout/activity_convert.xml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@

<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"/>
</android.support.v4.widget.DrawerLayout>
Loading

0 comments on commit 6eedf43

Please sign in to comment.