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 6972cd6..98f8add 100644 --- a/app/src/main/java/com/amine/myterio/app/DetailsActivity.java +++ b/app/src/main/java/com/amine/myterio/app/DetailsActivity.java @@ -4,6 +4,15 @@ import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; +import android.widget.TextView; +import android.widget.Toast; +import com.amine.myterio.app.api.WeatherAdapters; +import com.amine.myterio.app.api.WeatherApis; +import com.amine.myterio.app.model.City; +import com.amine.myterio.app.model.Forecast; +import retrofit.Callback; +import retrofit.RetrofitError; +import retrofit.client.Response; public class DetailsActivity extends ActionBarActivity { @@ -12,6 +21,49 @@ public class DetailsActivity extends ActionBarActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_details); + + String cityName = getIntent().getExtras().getString("city_name"); + + WeatherAdapters adapters = new WeatherAdapters(); + final Forecast[] f = {null}; + + if (cityName != null) { + WeatherApis.WeatherDailyForecastLocationApi s = adapters.getWeatherForecastLocationAdapter(); + + s.cityForecast(cityName, new Callback() { + @Override + public void success(Forecast forecast, Response response) { + f[0] = forecast; + } + + @Override + public void failure(RetrofitError error) { + Toast.makeText(getApplicationContext(), "Pas de prévisions pour cette ville.", Toast.LENGTH_SHORT).show(); + } + }); + } else { + City city = getIntent().getExtras().getParcelable("city"); + cityName = city.getName(); + WeatherApis.WeatherDailyForecastApi s = adapters.getWeatherForecastAdapter(); + + s.cityForecast(city.getCityIdentifier(), new Callback() { + @Override + public void success(Forecast forecast, Response response) { + f[0] = forecast; + } + + @Override + public void failure(RetrofitError error) { + Toast.makeText(getApplicationContext(), "Pas de prévisions pour cette ville.", Toast.LENGTH_SHORT).show(); + } + }); + } + + TextView name = (TextView) findViewById(R.id.cityName); + name.setText(cityName); + + + } 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 331c043..cc515c2 100644 --- a/app/src/main/java/com/amine/myterio/app/SearchActivity.java +++ b/app/src/main/java/com/amine/myterio/app/SearchActivity.java @@ -47,6 +47,8 @@ public class SearchActivity extends AppCompatActivity { @Override public boolean onQueryTextSubmit(String query) { Intent intent = new Intent(SearchActivity.this, DetailsActivity.class); + intent.putExtra("city_name", query); + startActivity(intent); return false; } 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 0dc2e83..c8b5123 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 @@ -1,6 +1,7 @@ package com.amine.myterio.app.adapters; import android.content.Context; +import android.content.Intent; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; @@ -8,6 +9,7 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; +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; @@ -91,6 +93,10 @@ public class CitiesAdapter extends RecyclerView.Adapter cb); } + + public interface WeatherDailyForecastLocationApi { + @GET("/data/2.5/forecast/daily?units=metric&cnt=7") + void cityForecast(@Query("q") String location, Callback cb); + } } 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 76de724..d6af6ed 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 @@ -1,9 +1,23 @@ package com.amine.myterio.app.model; +import android.os.Parcel; +import android.os.Parcelable; + import java.util.List; -public class City { +public class City implements Parcelable { + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public City createFromParcel(Parcel source) { + return new City(source); + } + + @Override + public City[] newArray(int size) { + return new City[size]; + } + }; public String name; public int id; public MainInfo main; @@ -24,6 +38,12 @@ public class City { this.name = description; } + public City(Parcel source) { + this.name = source.readString(); + this.id = source.readInt(); + this.main = source.readParcelable(MainInfo.class.getClassLoader()); + } + public String getName() { return name; @@ -64,4 +84,16 @@ public class City { public void setWind(Wind wind) { this.wind = wind; } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.name); + dest.writeInt(this.id); + dest.writeParcelable(this.main, flags); + } } 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 75698bc..7221ffb 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 @@ -1,10 +1,30 @@ package com.amine.myterio.app.model; -public class MainInfo { +import android.os.Parcel; +import android.os.Parcelable; + +public class MainInfo implements Parcelable { + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public MainInfo createFromParcel(Parcel source) { + return new MainInfo(source); + } + + @Override + public MainInfo[] newArray(int size) { + return new MainInfo[size]; + } + }; public float temp; public float temp_max; public float temp_min; + public MainInfo(Parcel source) { + this.temp = source.readFloat(); + this.temp_max = source.readFloat(); + this.temp_min = source.readFloat(); + } + public int getTemp() { return Math.round(temp); } @@ -28,4 +48,16 @@ public class MainInfo { public void setTemp_min(float temp_min) { this.temp_min = temp_min; } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeFloat(this.temp); + dest.writeFloat(this.temp_max); + dest.writeFloat(this.temp_min); + } } diff --git a/app/src/main/res/layout/activity_details.xml b/app/src/main/res/layout/activity_details.xml index 4fffdc8..11e22ed 100644 --- a/app/src/main/res/layout/activity_details.xml +++ b/app/src/main/res/layout/activity_details.xml @@ -9,8 +9,28 @@ tools:context="com.amine.myterio.app.DetailsActivity"> + android:layout_alignParentTop="true" + android:layout_centerHorizontal="true" + android:text="New Text"/> + + + +