package com.xiaomi.xms.sales.ui;
import java.io.IOException;
import java.util.ArrayList;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;
import com.xiaomi.xms.sales.R;
import com.xiaomi.xms.sales.activity.OrderEditActivity;
import com.xiaomi.xms.sales.adapter.PrinterSpinnerAdapter;
import com.xiaomi.xms.sales.loader.OrderInfoLoader;
import com.xiaomi.xms.sales.loader.PrinterInfoLoader;
import com.xiaomi.xms.sales.loader.PrinterSaveLoader;
import com.xiaomi.xms.sales.loader.PrinterInfoLoader.PrinterMode;
import com.xiaomi.xms.sales.model.Order;
import com.xiaomi.xms.sales.util.Constants;
import com.xiaomi.xms.sales.util.LogcatHelper;
import com.xiaomi.xms.sales.util.PrinterService;
import com.xiaomi.xms.sales.util.ToastUtil;
import com.xiaomi.xms.sales.widget.EmptyLoadingView;
public class SavePrinterFragment extends BaseFragment {
private Bundle mBundle;
private int printerId;
private Spinner mPrinterSpinner;
private PrinterSpinnerAdapter mPrinterAdapter;
private ArrayList<PrinterMode> mPrinterList;
private int orderType;
private TextView orderPrinter;
private TextView orderId;
private Button mSave;
private String mOrderIdStr;
private boolean printerRedo;
public static final int GET_PRINTER_LIST = 2;
private static final int GET_ORDER_INFO = 1001;
private static final int SAVE_PRINTER = 100;
private EmptyLoadingView mLoadingView;
private String ip;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.save_printer_fragment,container, false);
mSave = (Button) view.findViewById(R.id.save_btn);
orderPrinter = (TextView) view.findViewById(R.id.order_printer);
orderId = (TextView) view.findViewById(R.id.order_id);
mPrinterSpinner = (Spinner) view.findViewById(R.id.printer);
mPrinterAdapter = new PrinterSpinnerAdapter(getActivity());
mPrinterSpinner.setAdapter(mPrinterAdapter);
mLoadingView = (EmptyLoadingView) view.findViewById(R.id.loading);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mBundle = getArguments();
if (mBundle != null) {
mOrderIdStr = mBundle.getString(Constants.Intent.EXTRA_PAYMENT_ORDER_ID);
orderType = mBundle.getInt(Constants.Intent.EXTRA_ORDER_TYPE);
printerRedo = mBundle.getBoolean(Constants.Intent.EXTRA_PRINTER_REDO);
orderId.setText("订单号:"+mOrderIdStr);
} else {
if(getActivity() != null ){
getActivity().finish();
}
}
mPrinterSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
if(mPrinterList == null){
mPrinterList = new ArrayList<PrinterMode>();
}
if(orderType == 2){ //现货销售的订单才显示选择打印机
getPrinterList();
}
mSave.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
PrinterMode printerMode = (PrinterMode)mPrinterSpinner.getSelectedItem();
printerId = printerMode.mModeKey;
ip = printerMode.mIpAdress;
/*
getLoaderManager().restartLoader(SAVE_PRINTER, null,
new LoaderCallbacks<PrinterSaveLoader.Result>() {
@Override
public Loader<com.xiaomi.xms.sales.loader.PrinterSaveLoader.Result> onCreateLoader(
int id, Bundle arg1) {
if (id == SAVE_PRINTER) {
PrinterSaveLoader mLoader = new PrinterSaveLoader(getActivity(), printerId,mOrderIdStr);
mLoader.setNeedDatabase(false);
mLoader.setProgressNotifiable(mLoadingView);
return (Loader<PrinterSaveLoader.Result>) mLoader;
}
return null;
}
@Override
public void onLoadFinished(
Loader<com.xiaomi.xms.sales.loader.PrinterSaveLoader.Result> arg0,
com.xiaomi.xms.sales.loader.PrinterSaveLoader.Result data) {
if(data != null && data.responseInfo != null && data.responseInfo.equalsIgnoreCase("OK")) {
ToastUtil.show(getActivity(), "发送打印请求成功");
if(printerRedo == false){
Intent intent = new Intent(getActivity(), OrderEditActivity.class);
intent.setAction(Constants.Intent.ACTION_ORDER_EDIT);
intent.putExtra(Constants.Intent.EXTRA_PAYMENT_ORDER_ID, mOrderIdStr);
intent.putExtra(Constants.Intent.EXTRA_ORDER_TYPE, orderType);
intent.putExtra(Constants.Intent.EXTRA_ORDER_EDIT_ACTION, "ADD");
startActivity(intent);
if(getActivity() != null ){
getActivity().finish();
}
}
}
else{
ToastUtil.show(getActivity(), "发送打印请求失败,请再次选择打印机...");
}
}
@Override
public void onLoaderReset(
Loader<com.xiaomi.xms.sales.loader.PrinterSaveLoader.Result> arg0) {
}
});
*/
getLoaderManager().restartLoader(GET_ORDER_INFO, null, new LoaderCallbacks<OrderInfoLoader.Result>() {
@Override
public OrderInfoLoader onCreateLoader(int id, Bundle arg1) {
if (id == GET_ORDER_INFO) {
OrderInfoLoader mLoader = new OrderInfoLoader(getActivity());
mLoader.setNeedSecurityKeyTask(false);
mLoader.setNeedDatabase(false);
mLoader.setOrderId(mOrderIdStr);
mLoader.setProgressNotifiable(mLoadingView);
return mLoader;
}
return null;
}
@Override
public void onLoadFinished(Loader<OrderInfoLoader.Result> loader,
OrderInfoLoader.Result data) {
if (data != null && data.mOrderInfo != null) {
System.out.println("ip:"+ip);
final String PRINT_IP = ip;
final Order order = data.mOrderInfo;
ToastUtil.show(getActivity(), "开始打印购物清单!");
new Thread(new Runnable() {
@Override
public void run() {
PrinterService printerService;
try {
printerService = new PrinterService(PRINT_IP);
printerService.print(order,getActivity());
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
@Override
public void onLoaderReset(Loader<OrderInfoLoader.Result> loader) {
}
});
}
});
}
/**
* 获取打印机信息
*/
public void getPrinterList(){
getLoaderManager().initLoader(GET_PRINTER_LIST, null,new LoaderCallbacks<PrinterInfoLoader.Result>() {
@Override
public Loader<com.xiaomi.xms.sales.loader.PrinterInfoLoader.Result> onCreateLoader(
int id, Bundle arg1) {
if (id == GET_PRINTER_LIST) {
PrinterInfoLoader mLoader = new PrinterInfoLoader(getActivity(), Constants.PRINTER);
mLoader.setNeedDatabase(false);
mLoader.setProgressNotifiable(mLoadingView);
return (Loader<PrinterInfoLoader.Result>) mLoader;
}
return null;
}
@Override
public void onLoadFinished(
Loader<com.xiaomi.xms.sales.loader.PrinterInfoLoader.Result> arg0,
com.xiaomi.xms.sales.loader.PrinterInfoLoader.Result data) {
if(data != null && data.p != null && data.p.size() > 0){
mPrinterList = data.p;
mPrinterAdapter.updateData(mPrinterList);
}
}
@Override
public void onLoaderReset(
Loader<com.xiaomi.xms.sales.loader.PrinterInfoLoader.Result> arg0) {
}
});
}
}