Skip to content

Commit 2d1f90a

Browse files
authored
Merge pull request #6 from Ferfoui/prepare-release
Prepare release
2 parents 42f1d6f + f735c0b commit 2d1f90a

40 files changed

+1170
-278
lines changed

README.md

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
# America2Goat
22

3-
America2Goat is an Android app to convert imperial to metric system, for exemple you can convert inches to meters or centimeters to feet.
3+
America2Goat is an Android app to convert imperial to metric system, for example you can convert inches to meters or kilograms to pounds.
44

55

6-
## Installation
6+
## Requirements
7+
8+
Your device must be running Android 8.1 or later.
79

8-
To install the app, your device must be running Android 8.1 or later.
10+
11+
## Installation
912

1013
- You can download the APK file from the [releases](https://github.com/Ferfoui/America2Goat/releases) page and install it on your Android device.
1114
Before installing the APK file you need to enable the installation of apps from unknown sources in your device settings.
@@ -14,4 +17,37 @@ Your device will ask you to allow the installation of the app, click on `Install
1417
- You can also clone the repository and build the app using Android Studio.
1518

1619

17-
20+
## Supported units
21+
22+
#### Length units
23+
- Inches
24+
- Feet
25+
- Yards
26+
- Miles
27+
- Centimeters
28+
- Meters
29+
- Kilometers
30+
31+
#### Mass units
32+
- Ounces
33+
- Pounds
34+
- Grams
35+
- Kilograms
36+
37+
#### Volume units
38+
- Fluid ounces
39+
- Cups
40+
- Pints
41+
- Quarts
42+
- Gallons
43+
- Milliliters
44+
- Liters
45+
- Cubic meters
46+
47+
48+
## Supported languages
49+
50+
- English
51+
- French (Français)
52+
- Simplified Chinese (简体中文)
53+
- Traditional Chinese (繁體中文)

app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ android {
1010
applicationId = "fr.ferfoui.america2goat"
1111
minSdk = 27
1212
targetSdk = 34
13-
versionCode = 2
14-
versionName = "1.0.2-alpha"
13+
versionCode = 3
14+
versionName = "1.1.0"
1515

1616
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
1717
}

app/src/main/java/fr/ferfoui/america2goat/Constants.java

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,72 @@
11
package fr.ferfoui.america2goat;
22

3+
import fr.ferfoui.america2goat.data.settings.StorageKeys;
34
import fr.ferfoui.america2goat.unit.DistanceUnit;
45
import fr.ferfoui.america2goat.unit.MassUnit;
6+
import fr.ferfoui.america2goat.unit.UnitStorage;
7+
import fr.ferfoui.america2goat.unit.VolumeUnit;
58

9+
/**
10+
* Constants used throughout the application.
11+
*/
612
public class Constants {
713

14+
// Unit type names
815
public static final String DISTANCE_UNIT_TYPE_NAME = "distance_unit";
916
public static final String MASS_UNIT_TYPE_NAME = "mass_unit";
17+
public static final String VOLUME_UNIT_TYPE_NAME = "volume_unit";
1018

1119

20+
// Conversion factors
21+
public static final double KILOMETER_TO_METER = 1000d;
22+
public static final double CM_TO_METER = 0.01d;
23+
public static final double MILE_TO_METER = 1609.344d;
24+
public static final double YARD_TO_METER = 0.9144d;
1225
public static final double INCH_TO_METER = 0.0254d;
1326
public static final double FEET_TO_METER = 12 * INCH_TO_METER;
14-
public static final double CM_TO_METER = 0.01d;
1527

28+
public static final double KILOGRAM_TO_GRAM = 1000d;
1629
public static final double POUND_TO_GRAM = 453.59237d;
1730
public static final double OUNCE_TO_GRAM = POUND_TO_GRAM / 16d;
18-
public static final double KILOGRAM_TO_GRAM = 1000d;
31+
32+
public static final double CUBIC_METER_TO_LITER = 1000d;
33+
public static final double MILLILITER_TO_LITER = 0.001d;
34+
public static final double GALLON_TO_LITER = 3.78541d;
35+
public static final double QUART_TO_LITER = GALLON_TO_LITER / 4d;
36+
public static final double PINT_TO_LITER = QUART_TO_LITER / 2d;
37+
public static final double CUP_TO_LITER = PINT_TO_LITER / 2d;
38+
public static final double FLUID_OUNCE_TO_LITER = CUP_TO_LITER / 8d;
1939

2040

41+
// Default values
2142
public static final String DEFAULT_UNIT_TYPE = DISTANCE_UNIT_TYPE_NAME;
2243

23-
public static final DistanceUnit DEFAULT_INPUT_DISTANCE_UNIT = DistanceUnit.CENTIMETER;
24-
public static final DistanceUnit DEFAULT_OUTPUT_DISTANCE_UNIT = DistanceUnit.INCH;
44+
public static final DistanceUnit DEFAULT_INPUT_DISTANCE_UNIT = DistanceUnit.INCH;
45+
public static final DistanceUnit DEFAULT_OUTPUT_DISTANCE_UNIT = DistanceUnit.CENTIMETER;
46+
47+
public static final MassUnit DEFAULT_INPUT_MASS_UNIT = MassUnit.POUND;
48+
public static final MassUnit DEFAULT_OUTPUT_MASS_UNIT = MassUnit.KILOGRAM;
49+
50+
public static final VolumeUnit DEFAULT_INPUT_VOLUME_UNIT = VolumeUnit.GALLON;
51+
public static final VolumeUnit DEFAULT_OUTPUT_VOLUME_UNIT = VolumeUnit.LITER;
52+
53+
public static final UnitStorage DISTANCE_UNIT_STORAGE = new UnitStorage(
54+
StorageKeys.INPUT_DISTANCE_UNIT_STORAGE_KEY,
55+
StorageKeys.OUTPUT_DISTANCE_UNIT_STORAGE_KEY,
56+
DEFAULT_INPUT_DISTANCE_UNIT, DEFAULT_OUTPUT_DISTANCE_UNIT
57+
);
58+
59+
public static final UnitStorage MASS_UNIT_STORAGE = new UnitStorage(
60+
StorageKeys.INPUT_MASS_UNIT_STORAGE_KEY,
61+
StorageKeys.OUTPUT_MASS_UNIT_STORAGE_KEY,
62+
DEFAULT_INPUT_MASS_UNIT, DEFAULT_OUTPUT_MASS_UNIT
63+
);
2564

26-
public static final MassUnit DEFAULT_INPUT_MASS_UNIT = MassUnit.KILOGRAM;
27-
public static final MassUnit DEFAULT_OUTPUT_MASS_UNIT = MassUnit.POUND;
65+
public static final UnitStorage VOLUME_UNIT_STORAGE = new UnitStorage(
66+
StorageKeys.INPUT_VOLUME_UNIT_STORAGE_KEY,
67+
StorageKeys.OUTPUT_VOLUME_UNIT_STORAGE_KEY,
68+
DEFAULT_INPUT_VOLUME_UNIT, DEFAULT_OUTPUT_VOLUME_UNIT
69+
);
2870

2971

3072
public static final int DEFAULT_ROUND_PREFERENCE = 4;

app/src/main/java/fr/ferfoui/america2goat/MainActivity.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
import android.os.Bundle;
44

5-
import com.google.android.material.bottomnavigation.BottomNavigationView;
6-
75
import androidx.appcompat.app.AppCompatActivity;
86
import androidx.navigation.NavController;
97
import androidx.navigation.Navigation;
@@ -28,7 +26,7 @@ protected void onCreate(Bundle savedInstanceState) {
2826
// Passing each menu ID as a set of Ids because each
2927
// menu should be considered as top level destinations.
3028
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
31-
R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications)
29+
R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_app_info)
3230
.build();
3331
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
3432
//NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);

app/src/main/java/fr/ferfoui/america2goat/data/DataStorage.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import androidx.datastore.preferences.core.Preferences;
44

5+
/**
6+
* Interface for data storage operations.
7+
*/
58
public interface DataStorage {
69

710
/**
@@ -30,4 +33,4 @@ public interface DataStorage {
3033
*/
3134
boolean isDataAvailable(Preferences.Key<?> storageKey);
3235

33-
}
36+
}

app/src/main/java/fr/ferfoui/america2goat/data/conversion/Converter.java

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,75 @@
33
import fr.ferfoui.america2goat.Constants;
44
import fr.ferfoui.america2goat.unit.Unit;
55

6+
/**
7+
* Converter class for converting values between different units.
8+
*/
69
public class Converter {
710

811
private Unit inputUnit;
912
private Unit outputUnit;
1013

14+
/**
15+
* Default constructor initializing with default units.
16+
*/
1117
public Converter() {
1218
this(Constants.DEFAULT_INPUT_DISTANCE_UNIT, Constants.DEFAULT_OUTPUT_DISTANCE_UNIT);
1319
}
1420

21+
/**
22+
* Constructor initializing with specified units.
23+
*
24+
* @param initialInputUnit the initial input unit
25+
* @param initialOutputUnit the initial output unit
26+
*/
1527
public Converter(Unit initialInputUnit, Unit initialOutputUnit) {
1628
this.inputUnit = initialInputUnit;
1729
this.outputUnit = initialOutputUnit;
1830
}
1931

32+
/**
33+
* Converts a value from the input unit to the output unit.
34+
*
35+
* @param value the value to convert
36+
* @return the converted value
37+
*/
2038
public double convert(double value) {
21-
return value * inputUnit.getWeight() / outputUnit.getWeight();
22-
}
23-
24-
public void setInputUnit(Unit inputUnit) {
25-
this.inputUnit = inputUnit;
26-
}
27-
28-
public void setOutputUnit(Unit outputUnit) {
29-
this.outputUnit = outputUnit;
39+
return value * inputUnit.getFactor() / outputUnit.getFactor();
3040
}
3141

42+
/**
43+
* Gets the input unit.
44+
*
45+
* @return the input unit
46+
*/
3247
public Unit getInputUnit() {
3348
return inputUnit;
3449
}
3550

51+
/**
52+
* Sets the input unit.
53+
*
54+
* @param inputUnit the new input unit
55+
*/
56+
public void setInputUnit(Unit inputUnit) {
57+
this.inputUnit = inputUnit;
58+
}
59+
60+
/**
61+
* Gets the output unit.
62+
*
63+
* @return the output unit
64+
*/
3665
public Unit getOutputUnit() {
3766
return outputUnit;
3867
}
68+
69+
/**
70+
* Sets the output unit.
71+
*
72+
* @param outputUnit the new output unit
73+
*/
74+
public void setOutputUnit(Unit outputUnit) {
75+
this.outputUnit = outputUnit;
76+
}
3977
}

app/src/main/java/fr/ferfoui/america2goat/data/conversion/ConverterRepository.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,64 @@
22

33
import fr.ferfoui.america2goat.unit.Unit;
44

5+
/**
6+
* Repository class for handling conversions using a {@link Converter}.
7+
*/
58
public class ConverterRepository {
69

710
private final Converter converter;
811

12+
/**
13+
* Constructs a ConverterRepository with the specified Converter.
14+
*
15+
* @param converter the Converter to be used for conversions
16+
*/
917
public ConverterRepository(Converter converter) {
1018
this.converter = converter;
1119
}
1220

21+
/**
22+
* Converts the given value using the currently defined input and output units.
23+
*
24+
* @param value the value to be converted
25+
* @return the converted value
26+
*/
1327
public double convert(double value) {
1428
return converter.convert(value);
1529
}
1630

31+
/**
32+
* Gets the currently used input for conversions.
33+
*
34+
* @return the input unit
35+
*/
1736
public Unit getInputUnit() {
1837
return converter.getInputUnit();
1938
}
2039

40+
/**
41+
* Sets a new input unit to use for conversions.
42+
*
43+
* @param inputUnit the input unit to be set
44+
*/
2145
public void setInputUnit(Unit inputUnit) {
2246
converter.setInputUnit(inputUnit);
2347
}
2448

49+
/**
50+
* Gets the currently used output unit for conversions.
51+
*
52+
* @return the output unit
53+
*/
2554
public Unit getOutputUnit() {
2655
return converter.getOutputUnit();
2756
}
2857

58+
/**
59+
* Sets a new output unit to use for conversions.
60+
*
61+
* @param outputUnit the output unit to be set
62+
*/
2963
public void setOutputUnit(Unit outputUnit) {
3064
converter.setOutputUnit(outputUnit);
3165
}

0 commit comments

Comments
 (0)