package com.ly.supermvp.delegate;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.ly.supermvp.R;
import com.ly.supermvp.model.weather.ShowApiWeather;
import com.ly.supermvp.mvp_frame.view.AppDelegate;
import com.ly.supermvp.utils.GlideUtil;
import com.ly.supermvp.view.LoadingView;
import com.ly.supermvp.widget.ProgressLayout;
import com.orhanobut.dialogplus.DialogPlus;
import com.orhanobut.dialogplus.Holder;
import com.orhanobut.dialogplus.ViewHolder;
import com.rey.material.widget.EditText;
import butterknife.Bind;
/**
* <Pre>
* 天气预报界面视图代理
* </Pre>
*
* @author 刘阳
* @version 1.0
* <p/>
* Create by 2016/2/29 17:44
* @see https://github.com/liuyanggithub/SuperMvp
*/
public class WeatherFragmentDelegate extends AppDelegate implements LoadingView{
private ImageView iv_weather;
private TextView tv_weather, tv_aqi, tv_sd, tv_wind_direction, tv_wind_power, tv_temperature_time,
tv_temperature;
private LinearLayout ll_dialog_holder;
@Bind(R.id.progress_layout)
ProgressLayout mProgressLayout;
@Bind(R.id.et_location)
EditText et_location;
@Override
public int getRootLayoutId() {
return R.layout.fragment_weather;
}
/**
* 获取输入的地名
* @return
*/
public String getInputLocation(){
return et_location.getText().toString();
}
/**
* 显示当前天气弹窗
*/
public void showNowWeatherDialog(ShowApiWeather weather) {
ll_dialog_holder = (LinearLayout) getActivity().getLayoutInflater().inflate(R.layout.dialog_weather, null);
Holder holder = new ViewHolder(ll_dialog_holder);
findHolderChildView(holder);
GlideUtil.loadImage(getActivity(), weather.now.weather_pic, iv_weather);
tv_weather.setText(weather.now.weather);
tv_temperature.setText(weather.now.temperature + "℃");
tv_temperature_time.setText(weather.now.temperature_time);
tv_aqi.setText(String.format(getActivity().getResources().getString(R.string.weather_dialog_aqi),
weather.now.aqi));
tv_sd.setText(String.format(getActivity().getResources().getString(R.string.weather_dialog_sd),
weather.now.sd));
tv_wind_direction.setText(String.format(getActivity().getResources().getString(R.string.weather_dialog_wind_direction),
weather.now.wind_direction));
tv_wind_power.setText(String.format(getActivity().getResources().getString(R.string.weather_dialog_wind_power),
weather.now.wind_power));
showOnlyContentDialog(holder, Gravity.BOTTOM, false);
}
/**
* 查找弹窗的holder的子控件
*
* @param holder
*/
private void findHolderChildView(Holder holder) {
iv_weather = (ImageView) holder.getInflatedView().findViewById(R.id.iv_weather);
tv_weather = (TextView) holder.getInflatedView().findViewById(R.id.tv_weather);
tv_temperature = (TextView) holder.getInflatedView().findViewById(R.id.tv_temperature);
tv_temperature_time = (TextView) holder.getInflatedView().findViewById(R.id.tv_temperature_time);
tv_aqi = (TextView) holder.getInflatedView().findViewById(R.id.tv_aqi);
tv_sd = (TextView) holder.getInflatedView().findViewById(R.id.tv_sd);
tv_wind_direction = (TextView) holder.getInflatedView().findViewById(R.id.tv_wind_direction);
tv_wind_power = (TextView) holder.getInflatedView().findViewById(R.id.tv_wind_power);
}
/**
* 仅显示内容的dialog
*
* @param holder
* @param gravity 显示位置(居中,底部,顶部)
* @param expanded 是否支持展开(有列表时适用)
*/
private void showOnlyContentDialog(Holder holder, int gravity,
boolean expanded) {
final DialogPlus dialog = DialogPlus.newDialog(getActivity())
.setContentHolder(holder)
.setGravity(gravity)
.setExpanded(expanded)
.setCancelable(true)
.create();
dialog.show();
}
/**
* 关闭软键盘
*/
public void closeSoftInput(){
InputMethodManager inputMethodManager = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(et_location.getWindowToken(), 0);
}
@Override
public void showLoading() {
mProgressLayout.showLoading();
}
@Override
public void showContent() {
if (!mProgressLayout.isContent()) {
mProgressLayout.showContent();
}
}
@Override
public void showError(int messageId, View.OnClickListener listener) {
}
@Override
public Context getContext() {
return null;
}
}