package com.biznow.ordernow; import java.util.ArrayList; import net.sourceforge.zbar.Symbol; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.biznow.ordernow.R; import com.biznow.ordernow.model.OrderNowConstants; import com.data.menu.CustomerOrderWrapper; import com.dm.zbar.android.scanner.ZBarConstants; import com.dm.zbar.android.scanner.ZBarScannerActivity; import com.facebook.Session; import com.facebook.widget.ProfilePictureView; import com.util.OrderNowUtilities; import com.util.Utilities; public class QRCodeScannerActivity extends Activity { private static final String SAMPLE_REST_ID = "R3"; private static final String SAMPLE_TABLE_ID = "T20"; private static final int ZBAR_QR_SCANNER_REQUEST = 1; private ProfilePictureView profilePictureView; private TextView welcome; private TextView custName; private Button qrCodeButton; private Button openRestMenuButton; private String activeTableId; private String activeRestId; private String activeRestName; private ArrayList<CustomerOrderWrapper> activeSubOrderList; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_qr_code_scanner); welcome = (TextView) findViewById(R.id.welcome_text); custName = (TextView) findViewById(R.id.selection_profile_name); qrCodeButton = (Button) findViewById(R.id.qrscan_btn); openRestMenuButton = (Button) findViewById(R.id.open_res_menu); ApplicationState applicationContext = (ApplicationState) getApplicationContext(); if(applicationContext.getUserName() != null && applicationContext.getUserName().trim() != "") { custName.setText(applicationContext.getUserName()); } if(applicationContext.getProfilePictureId() != null) { profilePictureView = (ProfilePictureView) findViewById(R.id.selection_profile_pic); profilePictureView.setProfileId(applicationContext.getProfilePictureId()); } checkForActiveSessionAndUpdateUI(); } private void checkForActiveSessionAndUpdateUI() { if(activeSessionPresent()) { welcome.setText("You are currently logged in " + activeRestName + " restaurant."); qrCodeButton.setVisibility(View.GONE); openRestMenuButton.setVisibility(View.VISIBLE); } else { welcome.setText(welcome.getText()); qrCodeButton.setVisibility(View.VISIBLE); if (OrderNowConstants.IS_PRODUCTION_SAMPLE_MODE) { openRestMenuButton.setVisibility(View.VISIBLE); openRestMenuButton.setText("Open Sample Menu"); } else { openRestMenuButton.setVisibility(View.GONE); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.qr_page_menu, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.allhistorybutton: Intent historyintent = new Intent(getApplicationContext(), AllCustomerHistoryActivity.class); startActivity(historyintent); return true; case R.id.signOut : Session session = Session.getActiveSession(); if (session != null && session.isOpened()) { session.closeAndClearTokenInformation(); } Intent intent = new Intent(getApplicationContext(), MainActivity.class); startActivity(intent); finish(); Toast.makeText(this, "Signed Out Successfully", Toast.LENGTH_SHORT).show(); return true; case R.id.sendAppFeedback : Intent Email = new Intent(Intent.ACTION_SEND); Email.setType("text/email"); Email.putExtra(Intent.EXTRA_EMAIL, new String[] { "ordernowinfo@gmail.com" }); Email.putExtra(Intent.EXTRA_SUBJECT, "Feedback For OrderNow Android"); Email.putExtra(Intent.EXTRA_TEXT, "Hi ,\n" + ""); startActivity(Intent.createChooser(Email, "Choose an Email Client ")); return true; default: return super.onOptionsItemSelected(item); } } private boolean activeSessionPresent() { if(OrderNowConstants.IS_PRODUCTION_SAMPLE_MODE) { return false; } activeTableId = OrderNowUtilities.getKeyFromSharedPreferences(getApplicationContext(), OrderNowConstants.KEY_ACTIVE_TABLE_ID); if(activeTableId != null && activeTableId.trim() != "") { activeRestId = OrderNowUtilities.getKeyFromSharedPreferences(getApplicationContext(), OrderNowConstants.KEY_ACTIVE_RESTAURANT_ID); activeRestName = OrderNowUtilities.getKeyFromSharedPreferences(getApplicationContext(), OrderNowConstants.KEY_ACTIVE_RESTAURANT_NAME); activeSubOrderList = OrderNowUtilities.getObjectFromSharedPreferences(getApplicationContext(), OrderNowConstants.KEY_ACTIVE_SUB_ORDER_LIST); return true; } return false; } public void launchQRScanner(View v) { if (isCameraAvailable()) { Intent intent = new Intent(this, ZBarScannerActivity.class); intent.putExtra(ZBarConstants.SCAN_MODES, new int[] { Symbol.QRCODE }); startActivityForResult(intent, ZBAR_QR_SCANNER_REQUEST); } else { Toast.makeText(this, "Rear Facing Camera Unavailable", Toast.LENGTH_SHORT).show(); } } public void openRestaurantMenu(View v) { if (OrderNowConstants.IS_PRODUCTION_SAMPLE_MODE) { loadRestaurantTable((ApplicationState) getApplicationContext(), SAMPLE_TABLE_ID, SAMPLE_REST_ID); } else if(activeTableId != null && activeTableId.trim() != "") { ApplicationState applicationContext = (ApplicationState) getApplicationContext(); ApplicationState.setOpenCategoryDrawer(applicationContext, true); Toast.makeText(this, "Session Table Id = " + activeTableId + " Rest Id = " + activeRestId, Toast.LENGTH_SHORT).show(); Intent intent = new Intent(this, FoodMenuActivity.class); startActivity(intent); } } public boolean isCameraAvailable() { PackageManager pm = getPackageManager(); return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { ApplicationState applicationContext = (ApplicationState) getApplicationContext(); switch (requestCode) { case ZBAR_QR_SCANNER_REQUEST: if (resultCode == RESULT_OK) { if (OrderNowConstants.IS_PRODUCTION_SAMPLE_MODE) { loadRestaurantTable((ApplicationState) getApplicationContext(), SAMPLE_TABLE_ID, SAMPLE_REST_ID); } else { String tableId_restID = data.getStringExtra(ZBarConstants.SCAN_RESULT); String[] scanResultStrings = tableId_restID.split(" "); String tableId = scanResultStrings[0]; String restId = (scanResultStrings.length > 1)? scanResultStrings[1] : ""; //Toast.makeText(this, "Table Id = " + tableId + " Rest Id = " + restId, Toast.LENGTH_SHORT).show(); loadRestaurantTable(applicationContext, tableId, restId); } } else if(resultCode == RESULT_CANCELED && data != null) { String error = data.getStringExtra(ZBarConstants.ERROR_INFO); Utilities.error("Error Message: " + error); Toast.makeText(this, "To be implemented", Toast.LENGTH_SHORT).show(); } break; } } private void loadRestaurantTable(ApplicationState applicationContext, String tableId, String restId) { //clean order stuff if present ApplicationState.cleanFoodMenuItemQuantityMap(applicationContext); //clean any previous session if present and start fresh OrderNowUtilities.sessionClean(applicationContext); OrderNowUtilities.putKeyToSharedPreferences(getApplicationContext(), OrderNowConstants.KEY_ACTIVE_TABLE_ID, tableId); OrderNowUtilities.putKeyToSharedPreferences(getApplicationContext(), OrderNowConstants.KEY_ACTIVE_RESTAURANT_ID, restId); ApplicationState.setOpenCategoryDrawer(applicationContext, true); Intent intent = new Intent(this, FoodMenuActivity.class); startActivity(intent); } @Override protected void onResume() { checkForActiveSessionAndUpdateUI(); super.onResume(); } }