|
|
@@ -8,10 +8,17 @@ import android.content.IntentFilter;
|
|
|
import android.os.Bundle;
|
|
|
import android.support.v7.app.AlertDialog;
|
|
|
import android.support.v7.widget.RecyclerView;
|
|
|
+import android.util.DisplayMetrics;
|
|
|
import android.util.Log;
|
|
|
+import android.view.Gravity;
|
|
|
+import android.view.LayoutInflater;
|
|
|
import android.view.Menu;
|
|
|
import android.view.MenuItem;
|
|
|
import android.view.View;
|
|
|
+import android.view.WindowManager;
|
|
|
+import android.widget.EditText;
|
|
|
+import android.widget.PopupWindow;
|
|
|
+import android.widget.TextView;
|
|
|
|
|
|
import com.afollestad.materialdialogs.MaterialDialog;
|
|
|
import com.baidu.mapapi.model.LatLng;
|
|
|
@@ -36,6 +43,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
|
|
|
import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
|
|
|
import com.xzjmyk.pm.activity.ui.erp.util.baidu.OnGetDrivingRouteResult;
|
|
|
import com.xzjmyk.pm.activity.util.BaiduMapUtil;
|
|
|
+import com.xzjmyk.pm.activity.util.DisplayUtil;
|
|
|
import com.xzjmyk.pm.activity.util.PreferenceUtils;
|
|
|
import com.xzjmyk.pm.activity.util.TimeUtils;
|
|
|
import com.xzjmyk.pm.activity.view.MostLinearLayoutManager;
|
|
|
@@ -44,6 +52,8 @@ import com.xzjmyk.pm.activity.view.crouton.Crouton;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
+import static com.xzjmyk.pm.activity.util.BaiduMapUtil.getInstence;
|
|
|
+
|
|
|
|
|
|
public class MissionActivity extends BaseActivity implements View.OnClickListener, IMission, MissionAdapter.OnitemClickListener {
|
|
|
@ViewInject(R.id.recycler)
|
|
|
@@ -220,6 +230,7 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
|
|
|
startActivityForResult(intent, 0x20);
|
|
|
break;
|
|
|
case R.id.item_companyaddr_tv://选择公司地址
|
|
|
+ if (true) return;
|
|
|
if (model == null || model.getStatus() == 1) return;
|
|
|
String company = model.getCompanyName();
|
|
|
intent = new Intent(ct, LocationSearchActivity.class);
|
|
|
@@ -299,8 +310,6 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
|
|
|
if (requestCode == 0x20) {//选择公司
|
|
|
SelectAimModel entity = data.getParcelableExtra("data");
|
|
|
showSaveCompany(entity);
|
|
|
-
|
|
|
-
|
|
|
// MissionModel entity = data.getParcelableExtra("data");
|
|
|
// if (entity == null) return;
|
|
|
// if (ListUtils.isEmpty(adapter.getModels()) || adapter.getModels().size() <= position)
|
|
|
@@ -322,7 +331,7 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
|
|
|
if (info == null) {
|
|
|
return;
|
|
|
} else {
|
|
|
- String distance = BaiduMapUtil.getInstence().getDistance(info.location);
|
|
|
+ String distance = getInstence().getDistance(info.location);
|
|
|
if (StringUtils.isEmpty(distance)) return;
|
|
|
if (ListUtils.isEmpty(adapter.getModels()) || adapter.getModels().size() <= position)
|
|
|
return;
|
|
|
@@ -332,13 +341,13 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
|
|
|
adapter.getModels().get(position).setCompanyName(info.name);
|
|
|
adapter.getModels().get(position).setCompanyAddr(info.address);
|
|
|
adapter.getModels().get(position).setLatLng(info.location);
|
|
|
- adapter.getModels().get(position).setDistance(BaiduMapUtil.getInstence().distance(adapter.getModels().get(position).getLatLng()
|
|
|
+ adapter.getModels().get(position).setDistance(getInstence().distance(adapter.getModels().get(position).getLatLng()
|
|
|
, new LatLng(MyApplication.getInstance().getBdLocationHelper().getLatitude(),
|
|
|
MyApplication.getInstance().getBdLocationHelper().getLongitude())));
|
|
|
adapter.notifyItemChanged(position);
|
|
|
if (!StringUtils.isEmpty(adapter.getModels().get(position).getCompanyName()))
|
|
|
try {
|
|
|
- setEndTime(info.location, Double.valueOf(BaiduMapUtil.getInstence().getDistance(info.location)));
|
|
|
+ setEndTime(info.location, Double.valueOf(getInstence().getDistance(info.location)));
|
|
|
} catch (ClassCastException e) {
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
@@ -368,12 +377,91 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //显示确认公司
|
|
|
- private void showSaveCompany(SelectAimModel entity) {
|
|
|
-
|
|
|
+ private PopupWindow popupWindow = null;
|
|
|
+
|
|
|
+ private void showSaveCompany(final SelectAimModel entity) {
|
|
|
+ // 一个自定义的布局,作为显示的内容
|
|
|
+ View contentView = LayoutInflater.from(ct).inflate(
|
|
|
+ R.layout.item_select_aim_pop, null);
|
|
|
+ // 设置按钮的点击事件
|
|
|
+ final EditText company_et = (EditText) contentView.findViewById(R.id.company_et);
|
|
|
+ TextView address_tv = (TextView) contentView.findViewById(R.id.address_tv);
|
|
|
+ company_et.setText(entity.getName());
|
|
|
+ address_tv.setText("详细地址: " + entity.getAddress());
|
|
|
+
|
|
|
+ DisplayMetrics dm = getResources().getDisplayMetrics();
|
|
|
+ int w_screen = dm.widthPixels;
|
|
|
+ int h_screen = dm.heightPixels;
|
|
|
+ w_screen = DisplayUtil.dip2px(this, 300);
|
|
|
+ h_screen = DisplayUtil.dip2px(this, 185);
|
|
|
+ contentView.findViewById(R.id.goto_tv).setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View view) {
|
|
|
+ sureSelectAim(entity);
|
|
|
+ popupWindow.dismiss();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ contentView.findViewById(R.id.sure_tv).setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View view) {
|
|
|
+ String com = company_et.getText().toString();
|
|
|
+ if (!StringUtils.isEmpty(com)) {
|
|
|
+ entity.setName(com);
|
|
|
+ }
|
|
|
+ sureSelectAim(entity);
|
|
|
+ popupWindow.dismiss();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ popupWindow = new PopupWindow(contentView, w_screen, h_screen, true);
|
|
|
+ popupWindow.setTouchable(true);
|
|
|
+ // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
|
|
|
+ // 我觉得这里是API的一个bug
|
|
|
+ popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_main));
|
|
|
+
|
|
|
+ // 设置好参数之后再show
|
|
|
+ popupWindow.showAtLocation(contentView, Gravity.CENTER, 0, 0);
|
|
|
+ setbg(0.7f);
|
|
|
+ }
|
|
|
|
|
|
+ private void setbg(float alpha) {
|
|
|
+ WindowManager.LayoutParams lp = getWindow().getAttributes();
|
|
|
+ lp.alpha = alpha;
|
|
|
+ getWindow().setAttributes(lp);
|
|
|
+ if (popupWindow == null) return;
|
|
|
+ popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
|
|
|
+ @Override
|
|
|
+ public void onDismiss() {
|
|
|
+ WindowManager.LayoutParams lp = getWindow().getAttributes();
|
|
|
+ lp.alpha = 1f;
|
|
|
+ getWindow().setAttributes(lp);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
+ private void sureSelectAim(SelectAimModel entity) {
|
|
|
+ if (entity == null) return;
|
|
|
+ if (ListUtils.isEmpty(adapter.getModels()) || adapter.getModels().size() <= position)
|
|
|
+ return;
|
|
|
+ adapter.getModels().get(position).setCompanyName(StringUtils.isEmpty(entity.getName()) ? "" : entity.getName());
|
|
|
+ adapter.getModels().get(position).setCompanyAddr(StringUtils.isEmpty(entity.getAddress()) ? "" : entity.getAddress());
|
|
|
+ adapter.getModels().get(position).setVisitcount(1 + entity.getTimes());
|
|
|
+ if (entity.getLatLng() != null) {
|
|
|
+ adapter.getModels().get(position).setLatLng(entity.getLatLng());
|
|
|
+ adapter.getModels().get(position).setDistance(getInstence().distance(adapter.getModels().get(position).getLatLng()
|
|
|
+ , new LatLng(MyApplication.getInstance().getBdLocationHelper().getLatitude(),
|
|
|
+ MyApplication.getInstance().getBdLocationHelper().getLongitude())));
|
|
|
+ }
|
|
|
+ adapter.notifyItemChanged(position);
|
|
|
+ if (entity.getLatLng() != null) {
|
|
|
+ try {
|
|
|
+ float dis = Float.valueOf(BaiduMapUtil.getInstence().getDistance(entity.getLatLng()));
|
|
|
+ setEndTime(entity.getLatLng(), dis);
|
|
|
+ } catch (ClassCastException e) {
|
|
|
+ if (e != null)
|
|
|
+ Log.i("gongpengming", "ClassCastException " + e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* @param location
|
|
|
@@ -382,7 +470,7 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
|
|
|
*/
|
|
|
private void setEndTime(LatLng location, final double dis) {
|
|
|
Log.i("gongpengming", "dis=" + dis);
|
|
|
- BaiduMapUtil.getInstence().getDrivingRoute(MyApplication.getInstance().getBdLocationHelper().getLocation(), location,
|
|
|
+ getInstence().getDrivingRoute(MyApplication.getInstance().getBdLocationHelper().getLocation(), location,
|
|
|
new OnGetDrivingRouteResult() {
|
|
|
@Override
|
|
|
public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {
|