diff --git a/app/src/main/java/com/amine/myterio/app/DetailsActivity.java b/app/src/main/java/com/amine/myterio/app/DetailsActivity.java index e1a9974..25fbc1d 100644 --- a/app/src/main/java/com/amine/myterio/app/DetailsActivity.java +++ b/app/src/main/java/com/amine/myterio/app/DetailsActivity.java @@ -12,6 +12,7 @@ import android.widget.Toast; import com.amine.myterio.app.adapters.ForecastAdapter; import com.amine.myterio.app.api.WeatherAdapters; import com.amine.myterio.app.api.WeatherApis; +import com.amine.myterio.app.config.Config; import com.amine.myterio.app.model.City; import com.amine.myterio.app.model.Forecast; import retrofit.Callback; @@ -39,7 +40,7 @@ public class DetailsActivity extends AppCompatActivity { if (cityName != null) { WeatherApis.WeatherDailyForecastLocationApi s = adapters.getWeatherForecastLocationAdapter(); - s.cityForecast(cityName, new Callback() { + s.cityForecast(cityName, Config.country, new Callback() { @Override public void success(Forecast forecast, Response response) { f[0] = forecast; @@ -49,12 +50,12 @@ public class DetailsActivity extends AppCompatActivity { @Override public void failure(RetrofitError error) { - Toast.makeText(getApplicationContext(), "Pas de pr�visions pour cette ville.", Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), getString(R.string.weather_not_available), Toast.LENGTH_SHORT).show(); } }); WeatherApis.WeatherLocationApi sWeather = adapters.getWeatherLocationAdapter(); - sWeather.locationWeather(cityName, new Callback() { + sWeather.locationWeather(cityName, Config.country, new Callback() { @Override public void success(City c, Response response) { ImageView image = (ImageView) findViewById(R.id.weatherImage); @@ -63,7 +64,7 @@ public class DetailsActivity extends AppCompatActivity { @Override public void failure(RetrofitError error) { - Toast.makeText(DetailsActivity.this, "Hello toast!", Toast.LENGTH_SHORT).show(); + Toast.makeText(DetailsActivity.this, getString(R.string.weather_get_error), Toast.LENGTH_SHORT).show(); } }); } else { @@ -71,7 +72,7 @@ public class DetailsActivity extends AppCompatActivity { cityName = city.getName(); WeatherApis.WeatherDailyForecastApi s = adapters.getWeatherForecastAdapter(); - s.cityForecast(city.getCityIdentifier(), new Callback() { + s.cityForecast(city.getCityIdentifier(), Config.country, new Callback() { @Override public void success(Forecast forecast, Response response) { f[0] = forecast; @@ -80,7 +81,7 @@ public class DetailsActivity extends AppCompatActivity { @Override public void failure(RetrofitError error) { - Toast.makeText(getApplicationContext(), "Pas de pr�visions pour cette ville.", Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), getString(R.string.weather_not_available), Toast.LENGTH_SHORT).show(); } }); @@ -94,7 +95,7 @@ public class DetailsActivity extends AppCompatActivity { @Override public void failure(RetrofitError error) { - Toast.makeText(DetailsActivity.this, "Hello toast!", Toast.LENGTH_SHORT).show(); + Toast.makeText(DetailsActivity.this, getString(R.string.weather_get_error), Toast.LENGTH_SHORT).show(); } }); } diff --git a/app/src/main/java/com/amine/myterio/app/MainActivity.java b/app/src/main/java/com/amine/myterio/app/MainActivity.java index c0820c3..c14599c 100644 --- a/app/src/main/java/com/amine/myterio/app/MainActivity.java +++ b/app/src/main/java/com/amine/myterio/app/MainActivity.java @@ -1,5 +1,6 @@ package com.amine.myterio.app; +import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; @@ -7,10 +8,12 @@ import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.telephony.TelephonyManager; import android.view.Menu; import android.view.MenuItem; import android.view.View; import com.amine.myterio.app.adapters.CitiesAdapter; +import com.amine.myterio.app.config.Config; import com.amine.myterio.app.db.CityDAO; import com.amine.myterio.app.model.City; import com.melnykov.fab.FloatingActionButton; @@ -20,33 +23,23 @@ import java.util.ArrayList; public class MainActivity extends AppCompatActivity { - private RecyclerView mRecyclerView; - private RecyclerView.Adapter mAdapter; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); handleView(); + } - /* WeatherAdapters adapters = new WeatherAdapters(); - WeatherApis.WeatherDailyForecastApi s = adapters.getWeatherForecastAdapter(); - s.cityForecast(1851632, new Callback() { - @Override - public void success(Forecast forecast, Response response) { - Toast.makeText(getApplicationContext(), "Hello toast!", Toast.LENGTH_SHORT).show(); - } - - @Override - public void failure(RetrofitError error) { - Toast.makeText(getApplicationContext(), "Hello toast!", Toast.LENGTH_SHORT).show(); - } - });*/ + private void saveUserCountry() { + TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); + Config.country = tm.getSimCountryIso().toLowerCase(); + if (Config.country == null || Config.country.equals("") || Config.country.isEmpty()) + Config.country = MainActivity.this.getResources().getConfiguration().locale.getCountry().toLowerCase(); } private void handleView() { setContentView(R.layout.activity_main); - mRecyclerView = (RecyclerView) findViewById(R.id.list); - + RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.list); + saveUserCountry(); // Google way to test is tablet boolean isTablet = ((this.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE); @@ -62,18 +55,12 @@ public class MainActivity extends AppCompatActivity { mRecyclerView.setLayoutManager(layoutManager); mRecyclerView.setHasFixedSize(true); - ArrayList cities = new ArrayList(); + ArrayList cities; CityDAO dao = CityDAO.getInstance(this); - - City c = new City("Cairns", 2172797); - City c1 = new City("Moscow", 524901); - - dao.insertCity(c); - dao.insertCity(c1); cities = dao.getAllCities(); - mAdapter = new CitiesAdapter(cities, this); + RecyclerView.Adapter mAdapter = new CitiesAdapter(cities, this); mRecyclerView.setAdapter(mAdapter); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); diff --git a/app/src/main/java/com/amine/myterio/app/SearchActivity.java b/app/src/main/java/com/amine/myterio/app/SearchActivity.java index cc515c2..7c272aa 100644 --- a/app/src/main/java/com/amine/myterio/app/SearchActivity.java +++ b/app/src/main/java/com/amine/myterio/app/SearchActivity.java @@ -9,9 +9,9 @@ import android.view.View; import android.widget.*; import com.amine.myterio.app.api.CitiesAdapters; import com.amine.myterio.app.api.CitiesApi; -import com.amine.myterio.app.api.Predictions; import com.amine.myterio.app.config.Config; import com.amine.myterio.app.model.Countries; +import com.amine.myterio.app.model.Predictions; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; diff --git a/app/src/main/java/com/amine/myterio/app/adapters/CitiesAdapter.java b/app/src/main/java/com/amine/myterio/app/adapters/CitiesAdapter.java index c8b5123..20fffb3 100644 --- a/app/src/main/java/com/amine/myterio/app/adapters/CitiesAdapter.java +++ b/app/src/main/java/com/amine/myterio/app/adapters/CitiesAdapter.java @@ -13,6 +13,7 @@ import com.amine.myterio.app.DetailsActivity; import com.amine.myterio.app.R; import com.amine.myterio.app.api.WeatherAdapters; import com.amine.myterio.app.api.WeatherApis; +import com.amine.myterio.app.config.Config; import com.amine.myterio.app.model.City; import retrofit.Callback; import retrofit.RetrofitError; @@ -21,19 +22,18 @@ import retrofit.client.Response; import java.util.ArrayList; public class CitiesAdapter extends RecyclerView.Adapter { - private static ArrayList mDataset; - private static Context c; + private ArrayList mDataset; + private Context c; public CitiesAdapter(ArrayList cities, Context c) { - mDataset = cities; + this.mDataset = cities; this.c = c; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.city_card_view, parent, false); - ViewHolder vh = new ViewHolder(v); - return vh; + return new ViewHolder(v); } @Override @@ -44,7 +44,7 @@ public class CitiesAdapter extends RecyclerView.Adapter() { + s.cityWeather(currentCity[0].getCityIdentifier(), Config.country, new Callback() { @Override public void success(City city, Response response) { currentCity[0] = city; @@ -71,7 +71,7 @@ public class CitiesAdapter extends RecyclerView.Adapter { - private static Forecast forecast; - private static Context c; - + private Forecast forecast; + private Context c; public ForecastAdapter(Context c, Forecast forecast) { this.forecast = forecast; this.c = c; @@ -27,8 +26,7 @@ public class ForecastAdapter extends RecyclerView.Adapter cb); + void locationWeather(@Query("q") String location, @Query("lang") String lang, Callback cb); } public interface WeatherCityApi { @GET("/data/2.5/weather") - void cityWeather(@Query("id") int city, Callback cb); + void cityWeather(@Query("id") int city, @Query("lang") String lang, Callback cb); } public interface WeatherDailyForecastApi { @GET("/data/2.5/forecast/daily?units=metric&cnt=7") - void cityForecast(@Query("id") int city, Callback cb); + void cityForecast(@Query("id") int city, @Query("lang") String lang, Callback cb); } public interface WeatherDailyForecastLocationApi { @GET("/data/2.5/forecast/daily?units=metric&cnt=7") - void cityForecast(@Query("q") String location, Callback cb); + void cityForecast(@Query("q") String location, @Query("lang") String lang, Callback cb); } } diff --git a/app/src/main/java/com/amine/myterio/app/config/Config.java b/app/src/main/java/com/amine/myterio/app/config/Config.java index 75a9183..c594dd3 100644 --- a/app/src/main/java/com/amine/myterio/app/config/Config.java +++ b/app/src/main/java/com/amine/myterio/app/config/Config.java @@ -1,5 +1,6 @@ package com.amine.myterio.app.config; public class Config { - public static String placesApiKey = "AIzaSyDxSXMcZK1Ybjkz-IuN2EhhFCwRSbaianE"; + public static final String placesApiKey = "AIzaSyDxSXMcZK1Ybjkz-IuN2EhhFCwRSbaianE"; + public static String country = "FR"; } diff --git a/app/src/main/java/com/amine/myterio/app/db/CityDAO.java b/app/src/main/java/com/amine/myterio/app/db/CityDAO.java index 71ccd97..346b9b3 100644 --- a/app/src/main/java/com/amine/myterio/app/db/CityDAO.java +++ b/app/src/main/java/com/amine/myterio/app/db/CityDAO.java @@ -37,11 +37,11 @@ public class CityDAO { } } - public void open() { + private void open() { bdd = maBaseSQLite.getWritableDatabase(); } - public void close() { + private void close() { bdd.close(); } diff --git a/app/src/main/java/com/amine/myterio/app/db/CityDB.java b/app/src/main/java/com/amine/myterio/app/db/CityDB.java index d122407..1d21caa 100644 --- a/app/src/main/java/com/amine/myterio/app/db/CityDB.java +++ b/app/src/main/java/com/amine/myterio/app/db/CityDB.java @@ -4,7 +4,7 @@ import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; -public class CityDB extends SQLiteOpenHelper { +class CityDB extends SQLiteOpenHelper { private static final String TABLE_CITIES = "cities"; private static final String COL_ID = "ID"; diff --git a/app/src/main/java/com/amine/myterio/app/model/City.java b/app/src/main/java/com/amine/myterio/app/model/City.java index d6af6ed..d271c8e 100644 --- a/app/src/main/java/com/amine/myterio/app/model/City.java +++ b/app/src/main/java/com/amine/myterio/app/model/City.java @@ -18,11 +18,11 @@ public class City implements Parcelable { return new City[size]; } }; - public String name; - public int id; - public MainInfo main; - public List weather; - public Wind wind; + private String name; + private int id; + private MainInfo main; + private List weather; + private Wind wind; public City(String name, int id) { this.name = name; @@ -38,7 +38,7 @@ public class City implements Parcelable { this.name = description; } - public City(Parcel source) { + private City(Parcel source) { this.name = source.readString(); this.id = source.readInt(); this.main = source.readParcelable(MainInfo.class.getClassLoader()); diff --git a/app/src/main/java/com/amine/myterio/app/model/Countries.java b/app/src/main/java/com/amine/myterio/app/model/Countries.java index 643f259..d8e7ea1 100644 --- a/app/src/main/java/com/amine/myterio/app/model/Countries.java +++ b/app/src/main/java/com/amine/myterio/app/model/Countries.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; public class Countries { - public List countries; + private List countries; public Countries() { countries = new ArrayList(); diff --git a/app/src/main/java/com/amine/myterio/app/model/Country.java b/app/src/main/java/com/amine/myterio/app/model/Country.java index bfac350..ccfe9a6 100644 --- a/app/src/main/java/com/amine/myterio/app/model/Country.java +++ b/app/src/main/java/com/amine/myterio/app/model/Country.java @@ -3,9 +3,9 @@ package com.amine.myterio.app.model; import java.util.ArrayList; import java.util.List; -public class Country { - public String name; - public List cities; +class Country { + private String name; + private List cities; public Country() { cities = new ArrayList(); diff --git a/app/src/main/java/com/amine/myterio/app/model/Forecast.java b/app/src/main/java/com/amine/myterio/app/model/Forecast.java index 08a1665..2bcda3c 100644 --- a/app/src/main/java/com/amine/myterio/app/model/Forecast.java +++ b/app/src/main/java/com/amine/myterio/app/model/Forecast.java @@ -3,8 +3,8 @@ package com.amine.myterio.app.model; import java.util.List; public class Forecast { - public City city; - public List list; + private City city; + private List list; public City getCity() { return city; diff --git a/app/src/main/java/com/amine/myterio/app/model/ForecastWeather.java b/app/src/main/java/com/amine/myterio/app/model/ForecastWeather.java index b92a0d2..3af2be8 100644 --- a/app/src/main/java/com/amine/myterio/app/model/ForecastWeather.java +++ b/app/src/main/java/com/amine/myterio/app/model/ForecastWeather.java @@ -3,10 +3,10 @@ package com.amine.myterio.app.model; import java.util.List; public class ForecastWeather { - public TempInfo temp; - public List weather; - public float speed; - public int dt; + private TempInfo temp; + private List weather; + private float speed; + private int dt; public TempInfo getTemp() { return temp; diff --git a/app/src/main/java/com/amine/myterio/app/model/MainInfo.java b/app/src/main/java/com/amine/myterio/app/model/MainInfo.java index 7221ffb..7a4bdc8 100644 --- a/app/src/main/java/com/amine/myterio/app/model/MainInfo.java +++ b/app/src/main/java/com/amine/myterio/app/model/MainInfo.java @@ -15,9 +15,9 @@ public class MainInfo implements Parcelable { return new MainInfo[size]; } }; - public float temp; - public float temp_max; - public float temp_min; + private float temp; + private float temp_max; + private float temp_min; public MainInfo(Parcel source) { this.temp = source.readFloat(); diff --git a/app/src/main/java/com/amine/myterio/app/api/PredictionCities.java b/app/src/main/java/com/amine/myterio/app/model/PredictionCities.java similarity index 72% rename from app/src/main/java/com/amine/myterio/app/api/PredictionCities.java rename to app/src/main/java/com/amine/myterio/app/model/PredictionCities.java index 71c4545..85c2fcf 100644 --- a/app/src/main/java/com/amine/myterio/app/api/PredictionCities.java +++ b/app/src/main/java/com/amine/myterio/app/model/PredictionCities.java @@ -1,9 +1,7 @@ -package com.amine.myterio.app.api; - -import com.amine.myterio.app.model.City; +package com.amine.myterio.app.model; public class PredictionCities { - public String description; + private String description; public String getDescription() { return description; diff --git a/app/src/main/java/com/amine/myterio/app/api/Predictions.java b/app/src/main/java/com/amine/myterio/app/model/Predictions.java similarity index 86% rename from app/src/main/java/com/amine/myterio/app/api/Predictions.java rename to app/src/main/java/com/amine/myterio/app/model/Predictions.java index ba66bf8..8d11f04 100644 --- a/app/src/main/java/com/amine/myterio/app/api/Predictions.java +++ b/app/src/main/java/com/amine/myterio/app/model/Predictions.java @@ -1,10 +1,10 @@ -package com.amine.myterio.app.api; +package com.amine.myterio.app.model; import java.util.ArrayList; import java.util.List; public class Predictions { - public List predictions; + private List predictions; public List getPredictions() { return predictions; diff --git a/app/src/main/java/com/amine/myterio/app/model/TempInfo.java b/app/src/main/java/com/amine/myterio/app/model/TempInfo.java index 570e40f..516a202 100644 --- a/app/src/main/java/com/amine/myterio/app/model/TempInfo.java +++ b/app/src/main/java/com/amine/myterio/app/model/TempInfo.java @@ -1,12 +1,12 @@ package com.amine.myterio.app.model; public class TempInfo { - public float day; - public float min; - public float max; - public float night; - public float eve; - public float morn; + private float day; + private float min; + private float max; + private float night; + private float eve; + private float morn; public float getDay() { return day; diff --git a/app/src/main/java/com/amine/myterio/app/model/Weather.java b/app/src/main/java/com/amine/myterio/app/model/Weather.java index a026118..2e9c28c 100644 --- a/app/src/main/java/com/amine/myterio/app/model/Weather.java +++ b/app/src/main/java/com/amine/myterio/app/model/Weather.java @@ -4,10 +4,10 @@ import android.content.Context; import android.graphics.drawable.Drawable; public class Weather { - public String description; - public String icon; - public int id; - public String main; + private String description; + private String icon; + private int id; + private String main; public String getDescription() { return description; @@ -17,10 +17,14 @@ public class Weather { this.description = description; } - public String getIcon() { + private String getIcon() { return icon; } + public void setIcon(String icon) { + this.icon = icon; + } + public Drawable getIconDrawable(Context c, String packageName) { String uri = "@mipmap/"; @@ -77,10 +81,6 @@ public class Weather { return c.getResources().getDrawable(imageResource); } - public void setIcon(String icon) { - this.icon = icon; - } - public int getId() { return id; } diff --git a/app/src/main/java/com/amine/myterio/app/model/Wind.java b/app/src/main/java/com/amine/myterio/app/model/Wind.java index d4eaab7..b7ef913 100644 --- a/app/src/main/java/com/amine/myterio/app/model/Wind.java +++ b/app/src/main/java/com/amine/myterio/app/model/Wind.java @@ -1,8 +1,8 @@ package com.amine.myterio.app.model; public class Wind { - public float deg; - public float speed; + private float deg; + private float speed; public float getDeg() { return deg; diff --git a/app/src/main/res/layout/city_card_view.xml b/app/src/main/res/layout/city_card_view.xml index c5e9b4e..5e418f9 100644 --- a/app/src/main/res/layout/city_card_view.xml +++ b/app/src/main/res/layout/city_card_view.xml @@ -19,6 +19,7 @@ android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center_horizontal" + android:baselineAligned="false" android:orientation="horizontal"> + Myterio + Hello world! + Settings + SearchActivity + DetailsActivity + This location dosn\'t have any weather. + Can\'t get the weather from the API. + diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml deleted file mode 100644 index 63fc816..0000000 --- a/app/src/main/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - 64dp - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 267c85c..ee365a7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,7 +1,9 @@ - Myterio + Myterio Hello world! Settings - SearchActivity - DetailsActivity + SearchActivity + DetailsActivity + Pas de prévisions pour cette ville. + Erreur lors de la récupération des prévisions