
public class PrintActivity extends BaseActivity implements View.OnClickListener, DialogClickInterface {
    private String TAG = "PrintActivity";

    private Context context = this;

    @BindView(R.id.txt_balance_before)
    TextView txtBalanceBefore;
    @BindView(R.id.txt_commission)
    TextView txt_commission;
    @BindView(R.id.linear_balance_before)
    LinearLayout linearBalanceBefore;
    @BindView(R.id.txt_balance_after)
    TextView txtBalanceAfter;
    @BindView(R.id.linear_balance_after)
    LinearLayout linearBalanceAfter;
    @BindView(R.id.scroll)
    ScrollView scroll;

    @BindView(R.id.btnProblem)
    ImageView btnProblem;

    @BindView(R.id.btn_logout)
    ImageView btnLogout;

    @BindView(R.id.lyBodyShare)
    LinearLayout lyBodyShare;
    @BindView(R.id.btnSend)
    ImageView btnSend;

    @BindView(R.id.txt_operation_name)
    TextView txt_operation_name;
    @BindView(R.id.txt_time)
    TextView txtTime;
    @BindView(R.id.txt_transactionId)
    TextView txtTransactionId;
    @BindView(R.id.btn_print)
    Button btnPrint;
    @BindView(R.id.txt_amount)
    TextView txtAmount;


    @BindView(R.id.txt_day)
    TextView txtDay;
    @BindView(R.id.txt_total_amount)
    TextView txtTotalAmount;
    @BindView(R.id.txt_merchant_id)
    TextView txtMerchantId;
    @BindView(R.id.mRlayout)
    LinearLayout mRlayout;
    @BindView(R.id.txt_invoice_status)
    TextView txt_invoice_status;
    @BindView(R.id.toolbar)
    Toolbar toolbar;
    @BindView(R.id.sRlayout)
    LinearLayout sRlayout;
    @BindView(R.id.textView2)
    TextView textView2;
    @BindView(R.id.lin)
    LinearLayout lin;

    MerchantManager merchantManager;

    private Context mContext = this;

    private int currIndex = 0;
    static boolean isConnected;

    protected static IPrinterOpertion myOpertion;

    private PrinterInstance mPrinter;

    public static final int CONNECT_DEVICE = 1;
    public static final int ENABLE_BT = 2;
    private ProgressDialog dialog;

    private static int SERVICE_ID, TRANSACTION_ID, MERCHANT_ID;

    private static String TIME, AMOUNT, DEDUCTED, POWERD_BY, REPEATED_COPY, SERVICE_NAME, TOTAL_AMOUNT,
            BALANCE, DESCRIPTION, INVOICE_STATUS, BALANCE_BEFORE, BALANCE_AFTER, COMMISSION, BACK, OPERATION_NAME;

    private static Map<String, String> INPUTS_MAP;

    private static List<PaymentModel.ResponseEntity> INFORMATION;

    private String currentlanguage, getToken;
    private Handler mHandler;
    private LinearLayout.LayoutParams mRparams, sRparams;

    private DatabaseHelper mydb;
    private int categoryId;
    private boolean reprint = true;

    public static void start(Context context, int serviceId, int transactionId, int merchant_id, String time, String amount
            /*   , String deducted*/,
                             String totalAmount, String powerdBy, String balance, List<PaymentModel.ResponseEntity> information,
                             String ServiceName, Map<String, String> inputsMap, String description, String status,
                             String repeatedCopy, String balanceBefore, String balanceAfter, String commission, String back, String operationName) {
        Intent starter = new Intent(context, PrintActivity.class);
        SERVICE_ID = serviceId;
        TRANSACTION_ID = transactionId;
        MERCHANT_ID = merchant_id;
        TIME = time;
        AMOUNT = amount;
//        DEDUCTED = deducted;
        TOTAL_AMOUNT = totalAmount;
        POWERD_BY = powerdBy;
        BALANCE = balance;
        INFORMATION = information;
        SERVICE_NAME = ServiceName;
        INPUTS_MAP = inputsMap;
        DESCRIPTION = description;
        INVOICE_STATUS = status;
        REPEATED_COPY = repeatedCopy;
        BALANCE_BEFORE = balanceBefore;
        BALANCE_AFTER = balanceAfter;
        COMMISSION = commission;
        BACK = back;
        OPERATION_NAME = operationName;

        starter.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        context.startActivity(starter);

    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_print_payment);
        ButterKnife.bind(this);

        currentlanguage = PreferencesHelper.getLanguage(this);
        merchantManager = new MerchantManager(PrintActivity.this);

        getToken = merchantManager.getMerchant().getToken();

        mydb = DatabaseHelper.getInstance(PrintActivity.this);

        categoryId = mydb.get_category_id(SERVICE_ID);

 
        // Request location permission, needed for BLE Scan
        ActivityCompat.requestPermissions(this,
                new String[]{
                        Manifest.permission.ACCESS_FINE_LOCATION,
                        Manifest.permission.ACCESS_COARSE_LOCATION,
                        Manifest.permission.ACCESS_BACKGROUND_LOCATION     },
                3);


        txtBalanceAfter.setText(BALANCE_AFTER);
        txtBalanceBefore.setText(BALANCE_BEFORE);

        mRparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        mRparams.setMargins(25, 0, 25, 0);

        sRparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        sRparams.setMargins(0, (int) getResources().getDimension(R.dimen._5sdp), 0, (int) getResources().getDimension(R.dimen._5sdp));

        //Displaying data into screen
        txtMerchantId.setText(String.valueOf(MERCHANT_ID));
        txt_operation_name.setText(OPERATION_NAME);
        txtTime.setText(TIME);
        txtTransactionId.setText(String.valueOf(TRANSACTION_ID));
        txtAmount.setText(AMOUNT + " " + getResources().getString(R.string.currency));
        //tvAmountDeducted.setText(DEDUCTED + " " + getResources().getString(R.string.currency));
        txtTotalAmount.setText(TOTAL_AMOUNT + " " + getResources().getString(R.string.currency));
        //txt_commission.setText(COMMISSION + " " + getResources().getString(R.string.currency));

        if (INVOICE_STATUS != null) {

            switch (INVOICE_STATUS) {

                case "paid":
                    txt_invoice_status.setText(R.string.progress_successfully);
                    break;
                case "pending":
                    txt_invoice_status.setText(R.string.progress_pending);
                    btnPrint.setEnabled(false);
                    break;
                case "reverse":
                    txt_invoice_status.setText(R.string.progress_reverse);
                    btnPrint.setEnabled(false);
                    break;

            }
        }


        toolBar();

        InitView();



        information();

        params();

        boolean direction;
        Bidi bidi = new Bidi("", Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
        if (bidi.getBaseLevel() == 0)
            direction = true; //en
        else
            direction = false; //ar

    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();

        finish();

 
    }

    @Override
    public boolean onSupportNavigateUp() {
        onBackPressed();
        return true;
    }

    @Override
    protected void onStop() {
        super.onStop();
        if (myOpertion != null) {
            myOpertion.close();
        }

    }

    // initilize toolbar
    private void toolBar() {
        btnSend.setVisibility(View.GONE);
        Toolbar toolbar = findViewById(R.id.toolbar);
        btnProblem.setVisibility(View.GONE);
        setSupportActionBar(toolbar);
        if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
            getSupportActionBar().setTitle(R.string.print);
            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //Define Back Button Function
                    onBackPressed();
                }
            });

        }


    }

    // initilize ProgressDialog
    private void InitView() {

        dialog = new ProgressDialog(mContext);
        dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        dialog.setTitle(getString(R.string.connecting));
        dialog.setMessage(getString(R.string.pleaseWait));
        dialog.setIndeterminate(true);
        dialog.setCancelable(false);

    }

    // print prepaid card pin and serial
    private void information() {

        if (INFORMATION != null && INFORMATION.size() > 0) {
            for (int i = 0; i < INFORMATION.size(); i++) {

                String key = INFORMATION.get(i).getKey();
                String keyEn = INFORMATION.get(i).getKey();
                String Value = INFORMATION.get(i).getValue();

                mRlayout.addView(ComponentsUtil.CreateTextView(this, currentlanguage, mRparams,
                        keyEn, key, 14, Color.BLACK, Gravity.CENTER, 0));

                Log.d(TAG, " ---ar--" + key + ":      " + Value);

                mRlayout.addView(ComponentsUtil.CreateTextView(this, currentlanguage, mRparams,
                        Value, Value, 18, Color.BLACK, Gravity.CENTER, 0));


            }
        }
    }

    // Display transaction inputs
    private void params() {

   
        try {

            if (INPUTS_MAP != null && INPUTS_MAP.size() > 0) {

                Log.d(TAG, " ---param size--" + INPUTS_MAP.size());

    
                for (String key : INPUTS_MAP.keySet()) {
                    sRlayout.addView(ComponentsUtil.CreateTextView(this,
                            currentlanguage,
                            sRparams,
                            key + ":\n" +
                                    "" + INPUTS_MAP.get(key),
                            key + ":\n" +
                                    "" + INPUTS_MAP.get(key),
                            14,
                            Color.BLACK,
                            Gravity.CENTER,
                            0));
                }


            }


        } finally {
//         
        }

    }

    @OnClick({R.id.btn_logout, R.id.btn_print, R.id.linear_balance_before, R.id.linear_balance_after, R.id.btnSend, R.id.btnProblem})
    public void onClick(View view) {

        switch (view.getId()) {

            case R.id.btn_logout:
                CustomAlertDialog.getInstance().showConfirmDialog(getString(R.string.exit), getString(R.string.confirmExit), getString(R.string.yes), getString(R.string.no),
                        PrintActivity.this, 4);
                break;
            case R.id.btn_print:
                if (reprint) {
                    if (INVOICE_STATUS != null) {
                        switch (INVOICE_STATUS) {
                            case "paid":
                                String printingLang;
                                if (PreferencesHelper.getPrintLang(PrintActivity.this) == 0) {
                                    printingLang = "ar";
                                } else {
                                    printingLang = "en";
                                }
                                if (PreferencesHelper.getPrintType(PrintActivity.this).equals(1)) {
                                    new MobiWireReceipt(PrintActivity.this,
                                            SERVICE_ID, TRANSACTION_ID, MERCHANT_ID, TIME, AMOUNT,
                                            TOTAL_AMOUNT, POWERD_BY, INFORMATION, SERVICE_NAME, INPUTS_MAP,
                                            DESCRIPTION, REPEATED_COPY, printingLang, categoryId);
                                    onBackPressed();

                                } else if (PreferencesHelper.getPrintType(PrintActivity.this).equals(2)) {
                                    new PaxReceipt(PrintActivity.this,
                                            SERVICE_ID, TRANSACTION_ID, MERCHANT_ID, TIME, AMOUNT,
                                            TOTAL_AMOUNT, POWERD_BY, INFORMATION, SERVICE_NAME, INPUTS_MAP,
                                            DESCRIPTION, REPEATED_COPY, printingLang, categoryId);
                                    onBackPressed();
                                } else if (PreferencesHelper.getPrintType(PrintActivity.this).equals(3)) {
                                    new SunmiReceipt(PrintActivity.this,
                                            SERVICE_ID, TRANSACTION_ID, MERCHANT_ID, TIME, AMOUNT,
                                            TOTAL_AMOUNT, POWERD_BY, INFORMATION, SERVICE_NAME, INPUTS_MAP,
                                            DESCRIPTION, REPEATED_COPY, printingLang, categoryId);
                                    onBackPressed();
                                } else {
                                    handlerBLUETOOTH(printingLang);
                                    //btnPrint.setEnabled(false);
                                    finish();
                                }
                                break;
                            case "pending":
                                Toast.makeText(PrintActivity.this, R.string.CantPrint, Toast.LENGTH_SHORT).show();
                                break;
                            case "reverse":
                                Toast.makeText(PrintActivity.this, R.string.CantPrint, Toast.LENGTH_SHORT).show();
                                break;
                        }
                        reprint = false;
                        break;
                    }
                } else {
                    Toast.makeText(mContext, R.string.no_print, Toast.LENGTH_SHORT).show();
                    break;
                }
            case R.id.linear_balance_before:
                startActivity(BalanceActivity.getStartIntent(PrintActivity.this, String.valueOf(TRANSACTION_ID)));
                break;
            case R.id.linear_balance_after:
                startActivity(BalanceActivity.getStartIntent(PrintActivity.this, String.valueOf(TRANSACTION_ID)));
                break;

            case R.id.btnSend:
                int currentapiVersion = android.os.Build.VERSION.SDK_INT;
                if (currentapiVersion > 20) {
                    shareScreenshot();
                } else {
                    shareData();
                }
                break;

            case R.id.btnProblem:
                sendWrongTransactionRequest();
                break;

        }
    }

    private void sendWrongTransactionRequest() {
        ProgressDialog dialog = CustomProgressDialog.showProgressDialog(PrintActivity.this, getString(R.string.loading));
        ApiInterface apiInterface = ApiClient.getClient().create(ApiInterface.class);
        Call<WrongTransactionModel> call = apiInterface.WRONG_TRANSACTION_MODEL_CALL(getToken, TRANSACTION_ID, currentlanguage);
        call.enqueue(new Callback<WrongTransactionModel>() {
            @Override
            public void onResponse(Call<WrongTransactionModel> call, Response<WrongTransactionModel> response) {
                dialog.dismiss();

                if (response.isSuccessful()) {
                    boolean status = response.body().getStatus();
                    String msg = response.body().getMsg();
                    int code = response.body().getCode();
                    if (status) {
                        String s = "";
                        switch (response.body().getData().getStatus()) {
                            case "pending":
                                s = getString(R.string.pending_s);
                                break;
                            case "solved":
                                s = getString(R.string.solved_s);
                                break;
                            case "error":
                                s = getString(R.string.error_s);
                                break;
                        }

                        String message = response.body().getData().getDescription() + "\n"
                                + getString(R.string.status) + ": " + s + "\n"
                                + getString(R.string.created_at) + ": " + response.body().getData().getCreatedAt();


                        CustomAlertDialog.getInstance().showInfoDialog(getString(R.string.info), message
                                , getString(R.string.ok), context, 0);
                    } else {
                        CustomAlertDialog.getInstance().showMessageDialog(getString(R.string.complaint), ""
                                , getString(R.string.send), getString(R.string.cancel), context, new CustomAlertDialog.MessageInterface() {
                                    @Override
                                    public void submit(String comment) {
                                        sendWrongTransactionSubmitRequest(comment);
                                    }
                                });
                    }
                }
            }

            @Override
            public void onFailure(Call<WrongTransactionModel> call, Throwable t) {
                dialog.dismiss();
                if (t instanceof IOException) {
                    CustomAlertDialog.getInstance().showErrDialog(PrintActivity.this, ErrorCodes.ERR_NETWORK_FAILURE, 1);
                } else {
                    CustomAlertDialog.getInstance().showErrDialog(PrintActivity.this, ErrorCodes.ERR_CONVERSION_ISSUE, 1);

                }
            }
        });
    }

    private void sendWrongTransactionSubmitRequest(String comment) {
        ProgressDialog dialog = CustomProgressDialog.showProgressDialog(PrintActivity.this, getString(R.string.loading));
        ApiInterface apiInterface = ApiClient.getClient().create(ApiInterface.class);
        Call<WrongTransactionModel> call = apiInterface.WRONG_TRANSACTION_SUBMIT_MODEL_CALL(getToken, TRANSACTION_ID, comment, currentlanguage);
        call.enqueue(new Callback<WrongTransactionModel>() {
            @Override
            public void onResponse(Call<WrongTransactionModel> call, Response<WrongTransactionModel> response) {
                dialog.dismiss();

                if (response.isSuccessful()) {

                    boolean status = response.body().getStatus();
                    String msg = response.body().getMsg();
                    int code = response.body().getCode();


                    CustomAlertDialog.getInstance().showInfoDialog(getString(R.string.info), msg
                            , getString(R.string.ok), context, 0);
                }
            }

            @Override
            public void onFailure(Call<WrongTransactionModel> call, Throwable t) {
                dialog.dismiss();
                if (t instanceof IOException) {
                    CustomAlertDialog.getInstance().showErrDialog(PrintActivity.this, ErrorCodes.ERR_NETWORK_FAILURE, 1);
                } else {
                    CustomAlertDialog.getInstance().showErrDialog(PrintActivity.this, ErrorCodes.ERR_CONVERSION_ISSUE, 1);

                }
            }
        });
    }


    private Bitmap initShareHeader() {
        Bitmap logo = BitmapFactory.decodeResource(getResources(), R.drawable.theka_print);
        Bitmap scaledLogo = Bitmap.createScaledBitmap(logo
                , (int) context.getResources().getDimension(R.dimen._90sdp)
                , (int) context.getResources().getDimension(R.dimen._40sdp), false);


        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int width = size.x;

        Bitmap headerBg = Bitmap.createBitmap(
                width, // Width
                (int) context.getResources().getDimension(R.dimen._55sdp), // Height
                Bitmap.Config.ARGB_8888 // Config
        );

        float left = (width - context.getResources().getDimension(R.dimen._90sdp)) / 2;
        float top = context.getResources().getDimension(R.dimen._5sdp);

        Canvas canvas = new Canvas(headerBg);
        canvas.drawColor(getResources().getColor(R.color.colorPrimary));
        canvas.drawBitmap(scaledLogo, left, top, null);

        return headerBg;
    }

    private void shareScreenshot() {
        Bitmap body = ImageUtils.takeSnapshotForView(lyBodyShare);
        Bitmap bitmap = ImageUtils.margeImages(initShareHeader(), body);

        try {
            File file = new File(this.getExternalCacheDir(), "Print_" + System.currentTimeMillis() + ".png");
            FileOutputStream fOut = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
            fOut.flush();
            fOut.close();
            file.setReadable(true, false);
            final Intent intent = new Intent(Intent.ACTION_SEND);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            Uri imageUri = FileProvider.getUriForFile(
                    PrintActivity.this,
                    BuildConfig.APPLICATION_ID + ".provider", //(use your app signature + ".provider" )
                    file);

            intent.putExtra(Intent.EXTRA_STREAM, imageUri);
            intent.setType("image/*");
            startActivity(Intent.createChooser(intent, getString(R.string.share_via)));
        } catch (Exception e) {
            Log.e(TAG, "Error: " + e.getMessage());
        }
    }

    private void shareData() {
        String shareSubject = txt_invoice_status.getText().toString();

        String shareBody = txt_invoice_status.getText().toString() + "\n"
                + getString(R.string.total) + ":" + txtTotalAmount.getText().toString() + "\n"
                + getInformation()
                + getInputs()
                + textView2.getText().toString() + "\n"
                + getString(R.string.time) + ":" + txtTime.getText().toString() + "\n"
                + getString(R.string.amount) + ":" + txtAmount.getText().toString() + "\n"
                + getString(R.string.merchantCodePrint) + ":" + txtMerchantId.getText().toString() + "\n"
                + getString(R.string.transaction_id) + ":" + txtTransactionId.getText().toString() + "\n"
                + getString(R.string.balanceBefore) + ":" + txtBalanceBefore.getText().toString() + "\n"
                + getString(R.string.balanceAfter) + ":" + txtBalanceAfter.getText().toString();

        Intent sharingIntent = new Intent(Intent.ACTION_SEND);
        sharingIntent.setType("text/plain");
        sharingIntent.putExtra(Intent.EXTRA_SUBJECT, shareSubject);
        sharingIntent.putExtra(Intent.EXTRA_TEXT, shareBody);
        startActivity(Intent.createChooser(sharingIntent, getString(R.string.share_via)));
    }

    private String getInformation() {
        String info = "";

        if (INFORMATION != null && INFORMATION.size() > 0) {
            for (int i = 0; i < INFORMATION.size(); i++) {

                String key = INFORMATION.get(i).getKey();
                String keyEn = INFORMATION.get(i).getKey();
                String Value = INFORMATION.get(i).getValue();

                if (currentlanguage.equals("en")) {
                    info += keyEn;
                } else {
                    info += key;
                }

                info += ":" + Value + "\n";
            }
        }
        return info;
    }

    private String getInputs() {
        String inputs = "";
        for (String key : INPUTS_MAP.keySet()) {
            inputs += key + ":" + INPUTS_MAP.get(key) + "\n";
        }
        return inputs;
    }

    @Override
    protected void onActivityResult(final int requestCode, int resultCode, final Intent data) {
        switch (requestCode) {
            case CONNECT_DEVICE:
                if (resultCode == Activity.RESULT_OK) {
                    if (currIndex == 0) {
                        dialog.show();
                        new Thread(new Runnable() {
                            public void run() {
                                myOpertion.open(data);
                            }
                        }).start();
                    } else if (currIndex == 2) {
                        myOpertion.open(data);
                    }
                }
                break;
            case ENABLE_BT:
                if (resultCode == Activity.RESULT_OK) {
                    myOpertion.chooseDevice();
                } else {
                    Toast.makeText(this, R.string.bt_not_enabled,
                            Toast.LENGTH_SHORT).show();
                }
        }
    }

    @SuppressLint("HandlerLeak")
    private void handlerBLUETOOTH(final String lang) {
        String mac = PreferencesHelper.getPrintMac(PrintActivity.this);

        if (mac.equals("")) {
            mHandler = new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    switch (msg.what) {
                        case PrinterConstants.Connect.SUCCESS:
                            isConnected = true;
                            mPrinter = myOpertion.getPrinter();

                            new BluetoothReceipt(PrintActivity.this,
                                    mPrinter,
                                    SERVICE_ID,
                                    TRANSACTION_ID,
                                    MERCHANT_ID,
                                    TIME,
                                    AMOUNT,
                                    TOTAL_AMOUNT,
                                    POWERD_BY,
                                    INFORMATION,
                                    SERVICE_NAME,
                                    INPUTS_MAP,
                                    DESCRIPTION,
                                    REPEATED_COPY,
                                    lang, categoryId);

                            myOpertion.close();
                            break;
                        case PrinterConstants.Connect.FAILED:
                            isConnected = false;
                            Toast.makeText(mContext, R.string.conn_failed, Toast.LENGTH_SHORT).show();
                            break;
                        case PrinterConstants.Connect.CLOSED:
                            isConnected = false;
                            Toast.makeText(mContext, R.string.conn_closed, Toast.LENGTH_SHORT).show();
                            break;
                        case PrinterConstants.Connect.NODEVICE:
                            isConnected = false;
                            Toast.makeText(mContext, R.string.conn_no, Toast.LENGTH_SHORT).show();
                            break;

                        default:
                            break;
                    }
                    if (dialog != null && dialog.isShowing()) {
                        dialog.dismiss();
                    }

                }

            };

            myOpertion = (IPrinterOpertion) new BluetoothOperation(PrintActivity.this, mHandler);
            myOpertion.chooseDevice();

        } else {
            dialog.show();
            mHandler = new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    switch (msg.what) {
                        case PrinterConstants.Connect.SUCCESS:
                            isConnected = true;
                            mPrinter = myOpertion.getPrinter();

                            new BluetoothReceipt(PrintActivity.this,
                                    mPrinter,
                                    SERVICE_ID,
                                    TRANSACTION_ID,
                                    MERCHANT_ID,
                                    TIME,
                                    AMOUNT,
                                    TOTAL_AMOUNT,
                                    POWERD_BY,
                                    INFORMATION,
                                    SERVICE_NAME,
                                    INPUTS_MAP,
                                    DESCRIPTION,
                                    REPEATED_COPY,
                                    lang, categoryId);


                            myOpertion.close();
                            break;
                        case PrinterConstants.Connect.FAILED:
                            isConnected = false;
                            Toast.makeText(mContext, R.string.conn_failed, Toast.LENGTH_SHORT).show();
                            break;
                        case PrinterConstants.Connect.CLOSED:
                            isConnected = false;
                            //Toast.makeText(mContext, R.string.conn_closed, Toast.LENGTH_SHORT).show();
                            break;
                        case PrinterConstants.Connect.NODEVICE:
                            isConnected = false;
                            Toast.makeText(mContext, R.string.conn_no, Toast.LENGTH_SHORT).show();
                            break;

                        default:
                            break;
                    }
                    if (dialog != null && dialog.isShowing()) {
                        dialog.dismiss();
                    }
                }
            };

            myOpertion = (IPrinterOpertion) new BluetoothOperation(PrintActivity.this, mHandler);
            myOpertion.open(mac);
        }
    }

    @Override
    public void onClickPositiveButton(DialogInterface pDialog, int pDialogIntefier) {


        if (pDialogIntefier == 1) {
            CustomAlertDialog.getInstance().onClickNegativeButton(pDialog, 0);
        }
        if (pDialogIntefier == 4) {
            CustomAlertDialog.getInstance().onClickNegativeButton(pDialog, 0);
            Utils.logout(PrintActivity.this, getToken);

        }


    }

    @Override
    public void onClickNegativeButton(DialogInterface pDialog, int pDialogIntefier) {


        if (pDialogIntefier == 4) {
            CustomAlertDialog.getInstance().onClickNegativeButton(pDialog, 0);


        }
    }


}