com.insthub.O2OMobile.Activity.D1_OrderActivity.java Source code

Java tutorial

Introduction

Here is the source code for com.insthub.O2OMobile.Activity.D1_OrderActivity.java

Source

//
//       _/_/_/                      _/            _/_/_/_/_/
//    _/          _/_/      _/_/    _/  _/              _/      _/_/      _/_/
//   _/  _/_/  _/_/_/_/  _/_/_/_/  _/_/              _/      _/    _/  _/    _/
//  _/    _/  _/        _/        _/  _/          _/        _/    _/  _/    _/
//   _/_/_/    _/_/_/    _/_/_/  _/    _/      _/_/_/_/_/    _/_/      _/_/
//
//
//  Copyright (c) 2015-2016, Geek Zoo Studio
//  http://www.geek-zoo.com
//
//
//  Permission is hereby granted, free of charge, to any person obtaining a
//  copy of this software and associated documentation files (the "Software"),
//  to deal in the Software without restriction, including without limitation
//  the rights to use, copy, modify, merge, publish, distribute, sublicense,
//  and/or sell copies of the Software, and to permit persons to whom the
//  Software is furnished to do so, subject to the following conditions:
//
//  The above copyright notice and this permission notice shall be included in
//  all copies or substantial portions of the Software.
//
//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
//  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
//  IN THE SOFTWARE.
//

package com.insthub.O2OMobile.Activity;

import android.app.Dialog;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.AnimationDrawable;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Editable;
import android.text.Selection;
import android.text.Spannable;
import android.text.TextWatcher;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.BeeFramework.Utils.AnimationUtil;
import com.BeeFramework.Utils.TimeUtil;
import com.BeeFramework.Utils.Utils;
import com.BeeFramework.activity.BaseActivity;
import com.BeeFramework.model.BusinessResponse;
import com.BeeFramework.view.MyDialog;
import com.BeeFramework.view.RoundedWebImageView;
import com.BeeFramework.view.ToastView;
import com.external.androidquery.callback.AjaxStatus;
import com.external.eventbus.EventBus;
import com.external.maxwin.view.IXListViewListener;
import com.external.maxwin.view.XListView;
import com.insthub.O2OMobile.O2OMobile;
import com.insthub.O2OMobile.O2OMobileAppConst;
import com.insthub.O2OMobile.MessageConstant;
import com.insthub.O2OMobile.Model.OrderInfoModel;
import com.insthub.O2OMobile.Protocol.ApiInterface;
import com.insthub.O2OMobile.Protocol.ENUM_ORDER_STATUS;
import com.insthub.O2OMobile.Protocol.ENUM_PAY_CODE;
import com.insthub.O2OMobile.Protocol.ORDER_INFO;
import com.insthub.O2OMobile.Protocol.SIMPLE_USER;
import com.insthub.O2OMobile.Protocol.orderacceptResponse;
import com.insthub.O2OMobile.R;
import com.insthub.O2OMobile.SESSION;
import com.insthub.O2OMobile.Utils.StringUtils;
import com.nostra13.universalimageloader.core.ImageLoader;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;

public class D1_OrderActivity extends BaseActivity implements BusinessResponse, IXListViewListener {

    private AnimationDrawable mAnimationDrawable = null;
    private Dialog mPriceDialog;
    private Dialog mOrderDialog;
    private ImageView mBack;
    private TextView mTitle;
    private TextView mRightText;
    private XListView mXListView;
    private View mHeaderView;
    private Button mOrderBtnCancel;
    private Button mOrderBtnOk;
    private ImageView mOrderEmptyView;
    private RoundedWebImageView mOrderEmployerAvatar;
    private TextView mOrderEmployerName;
    private ImageView mOrderEmployerPhone;
    private TextView mOrderTime;
    private TextView mOrderSn;
    private TextView mOrderServiceType;
    private TextView mOrderAppointmentTime;
    private TextView mOrderLocation;
    private TextView mOrderPrice;
    private LinearLayout mOrderTransactionPriceView;
    private TextView mOrderTransactionPrice;
    private TextView mOrderContentText;
    private LinearLayout mOrderContentVoiceView;
    private ImageView mOrderContentVoiceIcon;
    private TextView mOrderContentVoiceTime;
    private LinearLayout mOrderStatusView;
    private TextView mOrderStatus;
    private ImageView mOrderStatusArrow;
    private View mOrderVisibleButtonView;
    private LinearLayout mOrderWaitView;
    private TextView mOrderEmployeeCount;
    private LinearLayout mOrderEmployeeView;
    private RoundedWebImageView mOrderEmployeeAvatar;
    private TextView mOrderEmployeeName;
    private ImageView mOrderEmployeePhone;
    private LinearLayout mOrderCommentView;
    private View mOrderPlay;
    private LinearLayout mOrderPlayOrderView;
    private TextView mOrderPlayOrderSn;
    private TextView mOrderPlayOrderServiceType;
    private TextView mOrderPlayOrderLocation;
    private TextView mOrderPlayOrderPrice;
    private LinearLayout mOrderPlayButtonView;
    private Button mOrderPlayOnline;
    private Button mOrderPlayOffline;
    private Button mOrderPlayCancel;
    private TextView mOrderPriceDialogPrice;
    private EditText mOrderPriceDialogChangePrice;
    private Button mOrderPriceDialogOk;
    private Button mOrderPriceDialogCancel;
    protected ImageLoader mImageLoader = ImageLoader.getInstance();
    private OrderInfoModel mOrderInfoModel;
    private int mOrderId;
    public static String ORDER_ID = "orderId";
    private MediaPlayer mPlayer;
    private int mWidthPixels; //?
    private ENUM_PAY_CODE payCode;
    public int COMMENT_SEND = 1;
    private int PLAY_VOICE = 1;
    private TextView mAcceptOrderTime;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.d1_order_listview);

        mBack = (ImageView) findViewById(R.id.top_view_back);
        mTitle = (TextView) findViewById(R.id.top_view_title);
        mRightText = (TextView) findViewById(R.id.top_view_right_text);
        mBack.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                finish();
            }
        });
        mTitle.setText(getString(R.string.order_detail));
        mRightText.setVisibility(View.VISIBLE);

        DisplayMetrics dm = getResources().getDisplayMetrics();
        mWidthPixels = dm.widthPixels;

        Intent intent = getIntent();
        mOrderId = intent.getIntExtra(ORDER_ID, 0);

        mHeaderView = LayoutInflater.from(this).inflate(R.layout.d1_order, null);
        mXListView = (XListView) findViewById(R.id.order_listview);
        mXListView.addHeaderView(mHeaderView);
        mXListView.setPullLoadEnable(false);
        mXListView.loadMoreHide();
        mXListView.setRefreshTime();
        mXListView.setXListViewListener(this, 1);
        mXListView.setAdapter(null);

        mOrderBtnCancel = (Button) findViewById(R.id.order_button_cancel);
        mOrderBtnOk = (Button) findViewById(R.id.order_button_ok);
        mOrderEmptyView = (ImageView) findViewById(R.id.order_empty_view);

        mOrderPlay = findViewById(R.id.order_play);
        mOrderPlayOrderView = (LinearLayout) findViewById(R.id.order_play_order_view);
        mOrderPlayOrderSn = (TextView) findViewById(R.id.order_play_order_sn);
        mOrderPlayOrderServiceType = (TextView) findViewById(R.id.order_play_order_service_type);
        mOrderPlayOrderLocation = (TextView) findViewById(R.id.order_play_order_location);
        mOrderPlayOrderPrice = (TextView) findViewById(R.id.order_play_order_price);
        mOrderPlayButtonView = (LinearLayout) findViewById(R.id.order_play_button_view);
        mOrderPlayOnline = (Button) findViewById(R.id.order_play_online);
        mOrderPlayOffline = (Button) findViewById(R.id.order_play_offline);
        mOrderPlayCancel = (Button) findViewById(R.id.order_play_cancel);

        mOrderEmployerAvatar = (RoundedWebImageView) mHeaderView.findViewById(R.id.order_employer_avatar);
        mOrderEmployerName = (TextView) mHeaderView.findViewById(R.id.order_employer_name);
        mOrderEmployerPhone = (ImageView) mHeaderView.findViewById(R.id.order_employer_phone);
        mOrderTime = (TextView) mHeaderView.findViewById(R.id.order_time);
        mOrderSn = (TextView) mHeaderView.findViewById(R.id.order_sn);
        mOrderServiceType = (TextView) mHeaderView.findViewById(R.id.order_service_type);
        mOrderAppointmentTime = (TextView) mHeaderView.findViewById(R.id.order_appointment_time);
        mOrderLocation = (TextView) mHeaderView.findViewById(R.id.order_location);
        mOrderPrice = (TextView) mHeaderView.findViewById(R.id.order_price);
        mOrderTransactionPriceView = (LinearLayout) mHeaderView.findViewById(R.id.order_transaction_price_view);
        mOrderTransactionPrice = (TextView) mHeaderView.findViewById(R.id.order_transaction_price);
        mOrderContentText = (TextView) mHeaderView.findViewById(R.id.order_content_text);
        mOrderContentVoiceView = (LinearLayout) mHeaderView.findViewById(R.id.order_content_voice_view);
        mOrderContentVoiceIcon = (ImageView) mHeaderView.findViewById(R.id.order_content_voice_icon);
        mOrderContentVoiceTime = (TextView) mHeaderView.findViewById(R.id.order_content_voice_time);
        mOrderStatusView = (LinearLayout) mHeaderView.findViewById(R.id.order_status_view);
        mOrderStatus = (TextView) mHeaderView.findViewById(R.id.order_status);
        mOrderStatusArrow = (ImageView) mHeaderView.findViewById(R.id.order_status_arrow);
        mOrderVisibleButtonView = mHeaderView.findViewById(R.id.order_visible_button_view);
        mOrderWaitView = (LinearLayout) mHeaderView.findViewById(R.id.order_wait_view);
        mOrderEmployeeCount = (TextView) mHeaderView.findViewById(R.id.order_employee_count);
        mOrderEmployeeView = (LinearLayout) mHeaderView.findViewById(R.id.order_employee_view);
        mOrderEmployeeAvatar = (RoundedWebImageView) mHeaderView.findViewById(R.id.order_employee_avatar);
        mOrderEmployeeName = (TextView) mHeaderView.findViewById(R.id.order_employee_name);
        mOrderEmployeePhone = (ImageView) mHeaderView.findViewById(R.id.order_employee_phone);
        mOrderCommentView = (LinearLayout) mHeaderView.findViewById(R.id.order_comment_view);
        mAcceptOrderTime = (TextView) mHeaderView.findViewById(R.id.accept_order_time);

        mRightText.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(D1_OrderActivity.this, G0_ReportActivity.class);
                intent.putExtra("orderId", mOrderId);
                startActivity(intent);
            }
        });
        mOrderEmptyView.setOnClickListener(null);
        mOrderPlayOrderView.setOnClickListener(null);
        mOrderPlay.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                AnimationUtil.backAnimationFromBottom(mOrderPlayOrderView);
                mOrderPlayOrderView.setVisibility(View.GONE);
                AnimationUtil.backAnimation(mOrderPlayButtonView);
                mOrderPlayButtonView.setVisibility(View.GONE);
                Handler mHandler = new Handler() {
                    @Override
                    public void handleMessage(Message msg) {
                        super.handleMessage(msg);
                        mOrderPlay.setVisibility(View.GONE);
                        mOrderBtnCancel.setVisibility(View.VISIBLE);
                    }
                };
                mHandler.sendEmptyMessageDelayed(0, 200);
            }
        });

        mOrderPlayOnline.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                payCode = ENUM_PAY_CODE.PAY_ONLINE;
                mOrderInfoModel.pay(mOrderId, ENUM_PAY_CODE.PAY_ONLINE.value());

            }
        });

        mOrderPlayOffline.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                payCode = ENUM_PAY_CODE.PAY_OFFLINE;
                mOrderInfoModel.pay(mOrderId, ENUM_PAY_CODE.PAY_OFFLINE.value());
            }
        });

        mOrderPlayCancel.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                AnimationUtil.backAnimationFromBottom(mOrderPlayOrderView);
                mOrderPlayOrderView.setVisibility(View.GONE);
                AnimationUtil.backAnimation(mOrderPlayButtonView);
                mOrderPlayButtonView.setVisibility(View.GONE);
                Handler mHandler = new Handler() {
                    @Override
                    public void handleMessage(Message msg) {
                        super.handleMessage(msg);
                        mOrderPlay.setVisibility(View.GONE);
                        mOrderBtnCancel.setVisibility(View.VISIBLE);
                    }
                };
                mHandler.sendEmptyMessageDelayed(0, 200);
            }
        });

        mOrderStatusView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(D1_OrderActivity.this, D2_OrderHistoryActivity.class);
                intent.putExtra("order_id", mOrderId);
                startActivity(intent);
            }
        });

        mOrderInfoModel = new OrderInfoModel(this);
        mOrderInfoModel.addResponseListener(this);
        mOrderInfoModel.get(mOrderId);

    }

    private void showOrderPriceDialog() {
        LayoutInflater inflater = LayoutInflater.from(D1_OrderActivity.this);
        View view = inflater.inflate(R.layout.d1_order_price_dialog, null);
        mPriceDialog = new Dialog(D1_OrderActivity.this, R.style.dialog);
        mPriceDialog.setContentView(view);
        mPriceDialog.setCanceledOnTouchOutside(false);
        mPriceDialog.show();

        mOrderPriceDialogPrice = (TextView) view.findViewById(R.id.order_price_dialog_price);
        mOrderPriceDialogChangePrice = (EditText) view.findViewById(R.id.order_price_dialog_change_price);
        mOrderPriceDialogOk = (Button) view.findViewById(R.id.order_price_dialog_ok);
        mOrderPriceDialogCancel = (Button) view.findViewById(R.id.order_price_dialog_cancel);

        if (mOrderInfoModel.publicOrder.offer_price != null) {
            mOrderPriceDialogPrice.setText(Utils.formatBalance(mOrderInfoModel.publicOrder.offer_price) + "");
        }

        mOrderPriceDialogChangePrice.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                // TODO Auto-generated method stub
                if (s.toString().length() > 0) {
                    if (s.toString().substring(0, 1).equals(".")) {
                        s = s.toString().substring(1, s.length());
                        mOrderPriceDialogChangePrice.setText(s);
                    }
                }
                if (s.toString().length() > 1) {
                    if (s.toString().substring(0, 1).equals("0")) {
                        if (!s.toString().substring(1, 2).equals(".")) {
                            s = s.toString().substring(1, s.length());
                            mOrderPriceDialogChangePrice.setText(s);
                            CharSequence charSequencePirce = mOrderPriceDialogChangePrice.getText();
                            if (charSequencePirce instanceof Spannable) {
                                Spannable spanText = (Spannable) charSequencePirce;
                                Selection.setSelection(spanText, charSequencePirce.length());
                            }
                        }
                    }
                }
                boolean flag = false;
                for (int i = 0; i < s.toString().length() - 1; i++) {
                    String getstr = s.toString().substring(i, i + 1);
                    if (getstr.equals(".")) {
                        flag = true;
                        break;
                    }
                }
                if (flag) {
                    int i = s.toString().indexOf(".");
                    if (s.toString().length() - 3 > i) {
                        String getstr = s.toString().substring(0, i + 3);
                        mOrderPriceDialogChangePrice.setText(getstr);
                        CharSequence charSequencePirce = mOrderPriceDialogChangePrice.getText();
                        if (charSequencePirce instanceof Spannable) {
                            Spannable spanText = (Spannable) charSequencePirce;
                            Selection.setSelection(spanText, charSequencePirce.length());
                        }
                    }
                }
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                // TODO Auto-generated method stub
            }

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub
            }
        });

        mOrderPriceDialogCancel.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mPriceDialog.dismiss();
            }
        });

        mOrderPriceDialogOk.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mOrderInfoModel.done(mOrderId, mOrderPriceDialogChangePrice.getText().toString());
                mPriceDialog.dismiss();
            }
        });

    }

    private void showOrderDialog(boolean isSucceed, orderacceptResponse response) {
        LayoutInflater inflater = LayoutInflater.from(D1_OrderActivity.this);
        View view = inflater.inflate(R.layout.d1_order_dialog, null);
        mOrderDialog = new Dialog(D1_OrderActivity.this, R.style.dialog);
        mOrderDialog.setContentView(view);
        mOrderDialog.setCanceledOnTouchOutside(false);
        mOrderDialog.show();

        Button order_dialog_button = (Button) view.findViewById(R.id.order_dialog_button);
        ImageView order_dialog_icon = (ImageView) view.findViewById(R.id.order_dialog_icon);
        TextView order_dialog_text = (TextView) view.findViewById(R.id.order_dialog_text);
        TextView order_dialog_error_text = (TextView) view.findViewById(R.id.order_dialog_error_text);

        if (isSucceed) {
            order_dialog_icon.setImageResource(R.drawable.b2_selected_icon);
            order_dialog_text.setText(getString(R.string.receive_order_success));
            order_dialog_text.setTextColor(Color.parseColor("#39BCED"));
        } else {
            order_dialog_icon.setImageResource(R.drawable.d3_failed);
            order_dialog_text.setText(getString(R.string.receive_order_fail));
            order_dialog_text.setTextColor(Color.parseColor("#f65858"));
            order_dialog_error_text.setText(response.error_desc);
        }

        order_dialog_button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mOrderDialog.dismiss();
            }
        });
    }

    @Override
    public void OnMessageResponse(String url, JSONObject jo, AjaxStatus status) throws JSONException {
        // TODO Auto-generated method stub
        mXListView.stopRefresh();
        if (url.endsWith(ApiInterface.ORDER_INFO)) {

            Message msg = new Message();
            msg.what = MessageConstant.RECEIVE_ORDER_PUSH;
            EventBus.getDefault().post(msg);

            if (jo != null) {
                mOrderEmptyView.setVisibility(View.GONE);
                mOrderEmptyView.setImageDrawable(null);
                mOrderEmptyView.setOnClickListener(null);
                setOrderDetailView(mOrderInfoModel.publicOrder);
            } else {
                mOrderEmptyView.setVisibility(View.VISIBLE);
                mOrderEmptyView.setImageResource(R.drawable.e7_no_connections);
                mOrderEmptyView.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        mOrderInfoModel.get(mOrderId);
                    }
                });
            }
        } else if (url.endsWith(ApiInterface.ORDER_CANCEL)) {
            ToastView toast = new ToastView(D1_OrderActivity.this, getString(R.string.order_have_canceled));
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();
            setOrderDetailView(mOrderInfoModel.publicOrder);
        } else if (url.endsWith(ApiInterface.ORDER_ACCEPT)) {
            orderacceptResponse response = new orderacceptResponse();
            response.fromJson(jo);
            if (response.succeed == 1) {
                showOrderDialog(true, response);
            } else {
                showOrderDialog(false, response);
            }
            setOrderDetailView(mOrderInfoModel.publicOrder);
        } else if (url.endsWith(ApiInterface.ORDER_WORK_DONE)) {
            setOrderDetailView(mOrderInfoModel.publicOrder);
        } else if (url.endsWith(ApiInterface.ORDER_PAY)) {

            if (payCode == ENUM_PAY_CODE.PAY_OFFLINE) {
                AnimationUtil.backAnimationFromBottom(mOrderPlayOrderView);
                mOrderPlayOrderView.setVisibility(View.GONE);
                AnimationUtil.backAnimation(mOrderPlayButtonView);
                mOrderPlayButtonView.setVisibility(View.GONE);
                Handler mHandler = new Handler() {
                    @Override
                    public void handleMessage(Message msg) {
                        super.handleMessage(msg);
                        mOrderPlay.setVisibility(View.GONE);
                        mOrderBtnCancel.setVisibility(View.VISIBLE);
                    }
                };
                mHandler.sendEmptyMessageDelayed(0, 200);
            } else {
                //Todo 
                ToastView toast = new ToastView(getApplicationContext(), getString(R.string.share_content));
                toast.setGravity(Gravity.CENTER, 0, 0);
                toast.show();
            }

            setOrderDetailView(mOrderInfoModel.publicOrder);
        } else if (url.endsWith(ApiInterface.ORDER_CONFIRM_PAY)) {
            setOrderDetailView(mOrderInfoModel.publicOrder);
        }
    }

    private void setOrderDetailView(final ORDER_INFO order) {
        setOrderDate(order);

        mOrderEmployeeView.setVisibility(View.VISIBLE);
        if (order.order_status == ENUM_ORDER_STATUS.OS_PUBLISHED.value()) {
            mOrderEmployeeView.setVisibility(View.GONE);
            // ??
            if (order.employer.id != 0) {
                if (isEmp(order.employer)) {
                    mOrderWaitView.setVisibility(View.VISIBLE);
                    mOrderEmployeeCount.setText(order.push_number + "");
                    mOrderBtnCancel.setText(getString(R.string.cancel_order));
                    mOrderBtnCancel.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            // TODO Auto-generated method stub
                            final MyDialog myDialog = new MyDialog(D1_OrderActivity.this,
                                    getString(R.string.cacel_order_or_not));
                            myDialog.show();
                            myDialog.positive.setOnClickListener(new OnClickListener() {

                                @Override
                                public void onClick(View v) {
                                    // TODO Auto-generated method stub
                                    myDialog.dismiss();
                                    mOrderInfoModel.cancel(mOrderId);
                                }
                            });
                            myDialog.negative.setOnClickListener(new OnClickListener() {

                                @Override
                                public void onClick(View v) {
                                    // TODO Auto-generated method stub
                                    myDialog.dismiss();
                                }
                            });
                        }
                    });
                } else {
                    mOrderBtnCancel.setText(getString(R.string.receive_immediately));
                    mOrderBtnCancel.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            mOrderInfoModel.accept(mOrderId);
                        }
                    });
                }
            }
        } else if (order.order_status == ENUM_ORDER_STATUS.OS_KNOCK_DOWN.value()) {
            // ?

            mOrderWaitView.setVisibility(View.GONE);
            mOrderBtnCancel.setEnabled(true);
            mOrderBtnCancel.setBackgroundResource(R.drawable.c1_apply_btn_select);
            if (isEmp(order.employer)) { // 
                if (order.employee.id != 0) {
                    setEmployee(order.employee, false, order);
                }
                mOrderBtnCancel.setEnabled(false);
                mOrderBtnCancel.setBackgroundResource(R.drawable.c1_applied_btn);
                mOrderBtnCancel.setText(getString(R.string.wait_for_complete));
            } else if (isEmp(order.employee)) { // 
                setEmployee(order.employee, true, order);
                mOrderBtnOk.setVisibility(View.VISIBLE);
                mOrderVisibleButtonView.setVisibility(View.VISIBLE);
                mOrderBtnOk.setText(getString(R.string.confirm_complete));
                mOrderBtnOk.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        showOrderPriceDialog();
                    }
                });
                mOrderBtnCancel.setText(getString(R.string.cancel_order));
                mOrderBtnCancel.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        final MyDialog myDialog = new MyDialog(D1_OrderActivity.this,
                                getString(R.string.cacel_order_or_not));
                        myDialog.show();
                        myDialog.positive.setOnClickListener(new OnClickListener() {

                            @Override
                            public void onClick(View v) {
                                // TODO Auto-generated method stub
                                myDialog.dismiss();
                                mOrderInfoModel.cancel(mOrderId);
                            }
                        });
                        myDialog.negative.setOnClickListener(new OnClickListener() {

                            @Override
                            public void onClick(View v) {
                                // TODO Auto-generated method stub
                                myDialog.dismiss();
                            }
                        });
                    }
                });
            } else { // 
                setVisitor();
            }
        } else if (order.order_status == ENUM_ORDER_STATUS.OS_WORK_DONE.value()) {
            // ?
            mOrderWaitView.setVisibility(View.GONE);
            mOrderBtnCancel.setEnabled(true);
            mOrderBtnCancel.setBackgroundResource(R.drawable.c1_apply_btn_select);
            mOrderTransactionPriceView.setVisibility(View.VISIBLE);
            if (order.transaction_price != null && !order.transaction_price.equals("")) {
                mOrderTransactionPrice.setText(Utils.formatBalance(order.transaction_price) + "");
            } else {
                mOrderTransactionPrice.setText(Utils.formatBalance(order.offer_price) + "");
            }
            if (isEmp(order.employer)) { // 
                if (order.employee.id != 0) {
                    setEmployee(order.employee, false, order);
                }
                mOrderBtnCancel.setText(getString(R.string.immediately_pay));
                mOrderBtnCancel.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        mOrderPlay.setVisibility(View.VISIBLE);
                        mOrderPlayOrderView.setVisibility(View.VISIBLE);
                        AnimationUtil.showAnimationFromTop(mOrderPlayOrderView);
                        mOrderPlayButtonView.setVisibility(View.VISIBLE);
                        AnimationUtil.showAnimation(mOrderPlayButtonView);
                        mOrderBtnCancel.setVisibility(View.GONE);
                        if (order.order_sn != null) {
                            mOrderPlayOrderSn.setText(order.order_sn);
                        }
                        if (order.service_type != null && order.service_type.title != null) {
                            mOrderPlayOrderServiceType.setText(order.service_type.title);
                        }
                        if (order.location != null && order.location.name != null) {
                            mOrderPlayOrderLocation.setText(order.location.name);
                        }
                        mOrderPlayOrderPrice.setText(Utils.formatBalance(order.transaction_price) + "");
                    }
                });
            } else if (isEmp(order.employee)) { // 
                setEmployee(order.employee, true, order);

                mOrderBtnOk.setVisibility(View.GONE);
                mOrderVisibleButtonView.setVisibility(View.GONE);
                mOrderBtnCancel.setEnabled(false);
                mOrderBtnCancel.setBackgroundResource(R.drawable.c1_applied_btn);
                mOrderBtnCancel.setText(getString(R.string.wait_for_pay));
            } else { // 
                setVisitor();
            }
        } else if (order.order_status == ENUM_ORDER_STATUS.OS_PAYED.value()) {
            // 
            mOrderWaitView.setVisibility(View.GONE);
            mOrderBtnCancel.setEnabled(true);
            mOrderBtnCancel.setBackgroundResource(R.drawable.c1_apply_btn_select);
            mOrderTransactionPriceView.setVisibility(View.VISIBLE);
            if (order.transaction_price != null && !order.transaction_price.equals("")) {
                mOrderTransactionPrice
                        .setText(Utils.formatBalance(order.transaction_price) + getString(R.string.yuan));
            } else {
                mOrderTransactionPrice.setText(Utils.formatBalance(order.offer_price) + getString(R.string.yuan));
            }
            if (isEmp(order.employer)) { // 
                if (order.employee.id != 0) {
                    setEmployee(order.employee, false, order);
                }
                mOrderBtnCancel.setEnabled(false);
                mOrderBtnCancel.setBackgroundResource(R.drawable.c1_applied_btn);
                mOrderBtnCancel.setText(getString(R.string.wait_for_confirm_pay));
            } else if (isEmp(order.employee)) { // 
                setEmployee(order.employee, true, order);
                mOrderBtnCancel.setText(getString(R.string.confirm_pay));
                mOrderBtnCancel.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        mOrderInfoModel.confirmPay(mOrderId);
                    }
                });
            } else { // 
                setVisitor();
            }
        } else if (order.order_status == ENUM_ORDER_STATUS.OS_PAY_CONFORMED.value()) {
            // 
            mOrderWaitView.setVisibility(View.GONE);
            mOrderBtnCancel.setEnabled(true);
            mOrderBtnCancel.setBackgroundResource(R.drawable.c1_apply_btn_select);
            mOrderTransactionPriceView.setVisibility(View.VISIBLE);
            if (order.transaction_price != null && !order.transaction_price.equals("")) {
                mOrderTransactionPrice
                        .setText(Utils.formatBalance(order.transaction_price) + getString(R.string.yuan));
            } else {
                mOrderTransactionPrice.setText(Utils.formatBalance(order.offer_price) + getString(R.string.yuan));
            }
            if (isEmp(order.employer)) { // 
                if (order.employee.id != 0) {
                    setEmployee(order.employee, false, order);
                }
                mOrderBtnCancel.setText(getString(R.string.evaluate_now));
                mOrderBtnCancel.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        //Toast.makeText(D1_OrderDetailActivity.this, OrderStatusPayConformed, 0).show();
                        Intent it = new Intent(D1_OrderActivity.this, D3_OrderCommentActivity.class);
                        it.putExtra(O2OMobileAppConst.ORDERINFO, order);
                        startActivityForResult(it, COMMENT_SEND);
                    }
                });
            } else if (isEmp(order.employee)) { // 
                setEmployee(order.employee, true, order);
                mOrderBtnCancel.setText(getString(R.string.evaluate_now));
                mOrderBtnCancel.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        Intent it = new Intent(D1_OrderActivity.this, D3_OrderCommentActivity.class);
                        it.putExtra(O2OMobileAppConst.ORDERINFO, order);
                        startActivityForResult(it, COMMENT_SEND);
                    }
                });
            } else { // 
                setVisitor();
            }
        } else if (order.order_status == ENUM_ORDER_STATUS.OS_EMPLOYEE_COMMENTED.value()) {
            // 
            mOrderWaitView.setVisibility(View.GONE);
            mOrderBtnCancel.setEnabled(true);
            mOrderBtnCancel.setBackgroundResource(R.drawable.c1_apply_btn_select);
            mOrderTransactionPriceView.setVisibility(View.VISIBLE);
            if (order.transaction_price != null && !order.transaction_price.equals("")) {
                mOrderTransactionPrice
                        .setText(Utils.formatBalance(order.transaction_price) + getString(R.string.yuan));
            } else {
                mOrderTransactionPrice.setText(Utils.formatBalance(order.offer_price) + getString(R.string.yuan));
            }
            mOrderCommentView.setVisibility(View.VISIBLE);
            mOrderCommentView.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent it = new Intent(D1_OrderActivity.this, D4_OrderCommentListActivity.class);
                    it.putExtra(O2OMobileAppConst.ORDERINFO, order);
                    startActivity(it);
                }
            });
            if (isEmp(order.employer)) { // 
                if (order.employee.id != 0) {
                    setEmployee(order.employee, false, order);
                }
                mOrderBtnCancel.setText(getString(R.string.evaluate_now));
                mOrderBtnCancel.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent it = new Intent(D1_OrderActivity.this, D3_OrderCommentActivity.class);
                        it.putExtra(O2OMobileAppConst.ORDERINFO, order);
                        startActivityForResult(it, COMMENT_SEND);
                    }
                });
            } else if (isEmp(order.employee)) { // 
                setEmployee(order.employee, true, order);
                mOrderBtnCancel.setEnabled(false);
                mOrderBtnCancel.setBackgroundResource(R.drawable.c1_applied_btn);
                mOrderBtnCancel.setText(getString(R.string.wait_for_evaluate));
            } else { // 
                setVisitor();
            }
        } else if (order.order_status == ENUM_ORDER_STATUS.OS_EMPLOYER_COMMENTED.value()) {
            // 
            mOrderWaitView.setVisibility(View.GONE);
            mOrderBtnCancel.setEnabled(true);
            mOrderBtnCancel.setBackgroundResource(R.drawable.c1_apply_btn_select);
            mOrderTransactionPriceView.setVisibility(View.VISIBLE);
            if (order.transaction_price != null && !order.transaction_price.equals("")) {
                mOrderTransactionPrice
                        .setText(Utils.formatBalance(order.transaction_price) + getString(R.string.yuan));
            } else {
                mOrderTransactionPrice.setText(Utils.formatBalance(order.offer_price) + getString(R.string.yuan));
            }
            mOrderCommentView.setVisibility(View.VISIBLE);
            mOrderCommentView.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent it = new Intent(D1_OrderActivity.this, D4_OrderCommentListActivity.class);
                    it.putExtra(O2OMobileAppConst.ORDERINFO, order);
                    startActivity(it);
                }
            });
            if (isEmp(order.employer)) { // 
                if (order.employee.id != 0) {
                    setEmployee(order.employee, false, order);
                }
                mOrderBtnCancel.setEnabled(false);
                mOrderBtnCancel.setBackgroundResource(R.drawable.c1_applied_btn);
                mOrderBtnCancel.setText(getString(R.string.wait_for_evaluate));
            } else if (isEmp(order.employee)) { // 
                setEmployee(order.employee, true, order);
                mOrderBtnCancel.setText(getString(R.string.evaluate_now));
                mOrderBtnCancel.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        Intent it = new Intent(D1_OrderActivity.this, D3_OrderCommentActivity.class);
                        it.putExtra(O2OMobileAppConst.ORDERINFO, order);
                        startActivityForResult(it, COMMENT_SEND);
                    }
                });
            } else { // 
                setVisitor();
            }
        } else if (order.order_status == ENUM_ORDER_STATUS.OS_FINISHED.value()) {
            // ??
            mOrderWaitView.setVisibility(View.GONE);
            mOrderBtnCancel.setEnabled(true);
            mOrderBtnCancel.setBackgroundResource(R.drawable.c1_apply_btn_select);
            mOrderTransactionPriceView.setVisibility(View.VISIBLE);
            if (order.transaction_price != null && !order.transaction_price.equals("")) {
                mOrderTransactionPrice
                        .setText(Utils.formatBalance(order.transaction_price) + getString(R.string.yuan));
            } else {
                mOrderTransactionPrice.setText(Utils.formatBalance(order.offer_price) + getString(R.string.yuan));
            }
            mOrderCommentView.setVisibility(View.VISIBLE);
            mOrderCommentView.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent it = new Intent(D1_OrderActivity.this, D4_OrderCommentListActivity.class);
                    it.putExtra(O2OMobileAppConst.ORDERINFO, order);
                    startActivity(it);
                }
            });
            if (isEmp(order.employer)) { // 
                if (order.employee.id != 0) {
                    setEmployee(order.employee, false, order);
                }
                mOrderBtnCancel.setText(getString(R.string.share_evalute));
                mOrderBtnCancel.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent intent = new Intent(D1_OrderActivity.this, D3_OrderCommentCompleteActivity.class);
                        intent.putExtra("order_id", mOrderId);
                        startActivity(intent);
                    }
                });
            } else if (isEmp(order.employee)) { // 
                setEmployee(order.employee, true, order);
                mOrderBtnCancel.setText(getString(R.string.share_evalute));
                mOrderBtnCancel.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent intent = new Intent(D1_OrderActivity.this, D3_OrderCommentCompleteActivity.class);
                        intent.putExtra("order_id", mOrderId);
                        startActivity(intent);
                    }
                });
            } else { // 
                setVisitor();
            }
        } else if (order.order_status == ENUM_ORDER_STATUS.OS_CANCELED.value()) {
            // ??
            mOrderWaitView.setVisibility(View.GONE);
            if (isEmp(order.employer)) { // 
                if (order.employee.id != 0) {
                    setEmployee(order.employee, false, order);
                }
                mOrderBtnCancel.setEnabled(false);
                mOrderBtnCancel.setBackgroundResource(R.drawable.c1_applied_btn);
                mOrderBtnCancel.setText(getString(R.string.order_have_canceled));
            } else if (isEmp(order.employee)) { // 
                setEmployee(order.employee, true, order);
                mOrderBtnOk.setVisibility(View.GONE);
                mOrderVisibleButtonView.setVisibility(View.GONE);
                mOrderBtnCancel.setEnabled(false);
                mOrderBtnCancel.setBackgroundResource(R.drawable.c1_applied_btn);
                mOrderBtnCancel.setText(getString(R.string.order_have_canceled));
            } else { // 
                setVisitor();
            }
        }
    }

    /**
     * ?
     * @param order
     */
    private void setOrderDate(final ORDER_INFO order) {
        if (order.employer != null && order.employer.avatar != null && order.employer.avatar.thumb != null) {
            mImageLoader.displayImage(order.employer.avatar.thumb, mOrderEmployerAvatar, O2OMobile.options_head);
        }
        mOrderEmployerAvatar.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(D1_OrderActivity.this, F0_ProfileActivity.class);
                intent.putExtra(F0_ProfileActivity.USER_ID, order.employer.id);
                startActivity(intent);
            }
        });
        if (order.employer != null && order.employer.nickname != null) {
            mOrderEmployerName.setText(order.employer.nickname);
        }
        if (order.created_at != null) {
            mOrderTime.setText(TimeUtil.timeAgo(order.created_at));
        }
        if (order.order_sn != null) {
            mOrderSn.setText(order.order_sn);
        }
        if (order.service_type != null && order.service_type.title != null) {
            mOrderServiceType.setText(order.service_type.title);
        }
        if (order.appointment_time != null) {
            mOrderAppointmentTime.setText(order.appointment_time);
        }
        if (order.location != null && order.location.name != null) {
            mOrderLocation.setText(order.location.name);
        }
        if (order.offer_price != null) {
            mOrderPrice.setText(Utils.formatBalance(order.offer_price) + getString(R.string.yuan));
        }
        if (order.content != null && order.content.text != null && !order.content.text.equals("")) {
            mOrderContentText.setText(order.content.text);
        }
        if (order.content != null && order.content.voice != null) {
            if (!order.content.voice.equals("")) {
                mOrderContentVoiceView.setVisibility(View.VISIBLE);
                mOrderContentVoiceTime.setText(order.duration + "'");

                LayoutParams layoutParams_icon = (LayoutParams) mOrderContentVoiceView.getLayoutParams();
                layoutParams_icon.width = mWidthPixels / 6 + order.duration * 3;
                layoutParams_icon.height = mWidthPixels / 12;
                mOrderContentVoiceView.setLayoutParams(layoutParams_icon);

            }
            mOrderContentVoiceView.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    if (mPlayer == null) {
                        mOrderContentVoiceIcon.setImageResource(R.anim.voice_play_animation);
                        mAnimationDrawable = (AnimationDrawable) mOrderContentVoiceIcon.getDrawable();
                        mAnimationDrawable.setOneShot(false);
                        mAnimationDrawable.start();

                        Message msg = new Message();
                        msg.what = PLAY_VOICE;
                        msg.obj = order;
                        handler.sendMessage(msg);
                    } else {
                        mPlayer.release();
                        mPlayer = null;
                        mAnimationDrawable.stop();
                        mOrderContentVoiceIcon.setImageResource(R.drawable.d8_btn_playing_2);
                    }
                }
            });
        }
        mOrderStatus.setText(StringUtils.getOrderStatusName(order.order_status));
    }

    /**
     * @param employee 
     * @param isEmployee ???
     */
    private void setEmployee(final SIMPLE_USER employee, boolean isEmployee, ORDER_INFO order) {
        if (!"".equals(order.accept_time)) {
            mAcceptOrderTime.setText(TimeUtil.timeAgo(order.accept_time));
        }
        if (employee != null && employee.avatar != null && employee.avatar.thumb != null) {
            mImageLoader.displayImage(employee.avatar.thumb, mOrderEmployeeAvatar, O2OMobile.options_head);
        }
        mOrderEmployeeAvatar.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(D1_OrderActivity.this, F0_ProfileActivity.class);
                intent.putExtra(F0_ProfileActivity.USER_ID, employee.id);
                startActivity(intent);
            }
        });
        if (employee.nickname != null) {
            mOrderEmployeeName.setText(employee.nickname);
        }
        if (isEmployee) {
            mOrderEmployerPhone.setVisibility(View.VISIBLE);
            mOrderEmployerPhone.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent intent = new Intent(Intent.ACTION_CALL,
                            Uri.parse("tel:" + mOrderInfoModel.publicOrder.employer.mobile_phone));
                    startActivity(intent);
                }
            });
        } else {
            mOrderEmployeePhone.setVisibility(View.VISIBLE);
            mOrderEmployeePhone.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + employee.mobile_phone));
                    startActivity(intent);
                }
            });
        }
    }

    /**
     * ????
     */
    private void setVisitor() {

        mOrderEmployeeView.setVisibility(View.GONE);
        mOrderStatusArrow.setVisibility(View.GONE);
        mOrderStatusView.setEnabled(false);
        mOrderBtnCancel.setVisibility(View.GONE);
        mOrderStatusView.setBackgroundColor(Color.parseColor("#eeeeee"));
        mOrderStatus.setText(getString(R.string.order_have_been_received));

    }

    /**
     * ?/
     */
    public boolean isEmp(SIMPLE_USER user) {
        if (user.id == SESSION.getInstance().uid) {
            return true;
        } else {
            return false;
        }
    }

    @Override
    public void onRefresh(int id) {
        // TODO Auto-generated method stub
        mOrderInfoModel.get(mOrderId);
    }

    @Override
    public void onLoadMore(int id) {
        // TODO Auto-generated method stub

    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        if (mPlayer != null) {
            mPlayer.release();
            mPlayer = null;
            mAnimationDrawable.stop();
            mOrderContentVoiceIcon.setImageResource(R.drawable.d8_btn_playing_2);
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == COMMENT_SEND) {
            if (data != null) {
                ORDER_INFO order = (ORDER_INFO) data.getSerializableExtra(O2OMobileAppConst.ORDERINFO);
                setOrderDetailView(order);
            }
        } else {
            //Todo
        }
    }

    public void hidePayView() {
        AnimationUtil.backAnimationFromBottom(mOrderPlayOrderView);
        mOrderPlayOrderView.setVisibility(View.GONE);
        AnimationUtil.backAnimation(mOrderPlayButtonView);
        mOrderPlayButtonView.setVisibility(View.GONE);
        Handler mHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                mOrderPlay.setVisibility(View.GONE);
                mOrderBtnCancel.setVisibility(View.VISIBLE);
            }
        };
        mHandler.sendEmptyMessageDelayed(0, 200);
    }

    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            super.handleMessage(msg);
            if (msg.what == PLAY_VOICE) {
                ORDER_INFO order = (ORDER_INFO) msg.obj;
                mPlayer = new MediaPlayer();
                try {
                    mPlayer.setDataSource(order.content.voice);
                    mPlayer.prepare();
                    mPlayer.start();
                    mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                        @Override
                        public void onCompletion(MediaPlayer mp) {
                            mp.reset();
                            mPlayer = null;
                            mAnimationDrawable.stop();
                            mOrderContentVoiceIcon.setImageResource(R.drawable.d8_btn_playing_2);
                        }
                    });
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    };

    @Override
    protected void onNewIntent(Intent intent) {
        // ?Push?
        setIntent(intent);
        handleIntent(intent);
    }

    private void handleIntent(Intent intent) {

        mOrderId = intent.getIntExtra(ORDER_ID, 0);
        mOrderInfoModel.get(mOrderId);
    }

}