diff options
Diffstat (limited to 'branches/sca-java-1.x/samples/store-android/src/store/android')
-rw-r--r-- | branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java | 214 |
1 files changed, 155 insertions, 59 deletions
diff --git a/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java b/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java index 68e03abbe5..1b7bd3008c 100644 --- a/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java +++ b/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java @@ -28,83 +28,112 @@ import services.Catalog; import services.CatalogProxy; import services.Item; import services.ShoppingCartProxy; +import android.app.AlertDialog; import android.app.TabActivity; +import android.content.Context; +import android.content.DialogInterface; import android.graphics.Typeface; import android.os.Bundle; import android.util.Log; import android.view.View; +import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.ArrayAdapter; +import android.widget.Button; import android.widget.ListView; import android.widget.TabHost; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; import android.widget.TabHost.OnTabChangeListener; import android.widget.TabHost.TabSpec; +import android.view.LayoutInflater; + + public class catalog extends TabActivity { private Catalog catalogProxy = new CatalogProxy(); private ShoppingCartProxy shoppingCartProxy = new ShoppingCartProxy(); TabHost mTabHost; ListView itemsList, cartList; - TextView txtTotal; + TextView txtTotal,txtEmpty; TabSpec catalogTab, cartTab; - String[] items; - Set<String> cartItems=new HashSet<String>(); + Button btnClean; + Item[] items; + List<Item> cartItems=new ArrayList<Item>(); - private String[] getCatalogItems() { - List<String> catalog = new ArrayList<String>(); - - for(Item item : catalogProxy.get()) { - catalog.add(item.toString()); - } - - String[] catalogArray = new String[catalog.size()]; - catalog.toArray(catalogArray); - Log.e("Tuscany", "Catalog GET!!"); - - return catalogArray; + private void getCatalogItems() { + items=catalogProxy.get(); + } + + private void getCartItems() + { + Item[] i=shoppingCartProxy.getItems(); + if(i!=null) + { + for(Item item:i) + { + cartItems.add(item); + + } + } + Log.e(getString(R.string.app_tag), String.valueOf(cartItems.size())+" cart items retrieved"); } /** Called when the activity is first created. */ - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - Log.e("Tuscany", "Started"); + Log.e(getString(R.string.app_tag), getString(R.string.start_tag)); //Load UI from layout file setContentView(R.layout.main); + + findViews(); //Get data to be loaded to UI - items=getCatalogItems(); + getCatalogItems(); + getCartItems(); + //Load UI with data - itemsList.setAdapter(new ArrayAdapter<String>(this, - android.R.layout.simple_list_item_multiple_choice,items)); - itemsList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); + itemsList.setAdapter(new ArrayAdapter<Item>(this, + R.layout.cat_row,R.id.txtItemC,items)); + itemsList.setChoiceMode(ListView.CHOICE_MODE_SINGLE); + itemsList.setClickable(true); + reloadShoppingCart(); + //Set Listeners listen(); + + + } + + /** * Retrieve UI Content */ public void findViews() { mTabHost = getTabHost(); - mTabHost.addTab(mTabHost.newTabSpec("catalog_tab").setIndicator("Catalog Items").setContent(R.id.ListView01)); - mTabHost.addTab(mTabHost.newTabSpec("shopping_cart_tab").setIndicator("Shopping Cart").setContent(R.id.tab02)); + mTabHost.addTab(mTabHost.newTabSpec(getString(R.string.tab_catalog)).setIndicator(getString(R.string.title_catalog)).setContent(R.id.ListView01)); + mTabHost.addTab(mTabHost.newTabSpec(getString(R.string.tab_shop)).setIndicator(getString(R.string.title_shop)).setContent(R.id.tab02)); mTabHost.setCurrentTab(0); itemsList=(ListView)findViewById(R.id.ListView01); cartList=(ListView)findViewById(R.id.ListView02); + btnClean=(Button)findViewById(R.id.btnClean); + btnClean.setText(R.string.btn_clean); txtTotal=(TextView)findViewById(R.id.txtTotal); - txtTotal.setTextSize((float) 25.0); + txtTotal.setTextSize((float) 15.0); txtTotal.setTypeface(Typeface.DEFAULT_BOLD); + txtEmpty=(TextView)findViewById(R.id.txtEmpty); + txtEmpty.setTypeface(null, Typeface.ITALIC); + } /** @@ -116,49 +145,99 @@ public class catalog extends TabActivity { mTabHost.setOnTabChangedListener(new OnTabChangeListener(){ public void onTabChanged(String tabId) { - if(tabId.compareTo("shopping_cart_tab")==0) - { - if(!cartList.getAdapter().isEmpty()) - { - txtTotal.setVisibility(TextView.VISIBLE); - } - else - txtTotal.setVisibility(TextView.INVISIBLE); - txtTotal.setText("Total: "+shoppingCartProxy.getTotal()); + // TODO Auto-generated method stub + if(tabId.compareTo("shopping_cart_tab")==0) + reloadShoppingCart(); - } } }); - //CatalogList Listener + + + + btnClean.setOnClickListener(new OnClickListener(){ + public void onClick(View arg0) { + // TODO Auto-generated method stub + new AlertDialog.Builder(catalog.this) + .setTitle("Tuscany Android Store") + .setMessage("You're about to erase all items. Proceed ?") + .setIcon(R.drawable.icon) + .setPositiveButton(R.string.alert_yes, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + if(shoppingCartProxy.clearCartContent()) + { + cartItems.clear(); + Log.i(getString(R.string.app_tag), getString(R.string.del_all_ok)); + reloadShoppingCart(); + } + }}) + .setNegativeButton(R.string.alert_cancel, new DialogInterface.OnClickListener(){ + + public void onClick(DialogInterface dialog, int which) { + // TODO Auto-generated method stub + } + }) + .show(); + + + + } + + }); + itemsList.setOnItemClickListener(new OnItemClickListener(){ public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub - String item=itemsList.getAdapter().getItem((int)arg3).toString(); - - //add item to shopping cart. For now, item can be added only once. - //Items Quantity will be supported in coming versions. - if(cartItems.add(item)) - { - if(shoppingCartProxy.addItem(Item.parseItem(item))) - Log.i("Tuscany", "Entry to be added: "+item); - else - Log.e("Tuscany", "Unable to add entry: "+item); - - } - else - { - shoppingCartProxy.removeItem(Item.parseItem(item)); - cartItems.remove(item); - Log.i("Tuscany", "Entry to be removed: "+item); - } - reloadShoppingCart(); + addItemAction(items[(int)arg3]); } + + }); + + cartList.setOnItemClickListener(new OnItemClickListener(){ + + + public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, + long arg3) { + // TODO Auto-generated method stub + removeItemAction(cartItems.get((int)arg3)); + } + }); + + + + } + + public void addItemAction(Item item) + { + //add item to shopping cart. + Item tmp=new Item(item.getName(), item.getPrice()); + if(shoppingCartProxy.addItem(tmp)) + { + cartItems.add(tmp); + Log.i(getString(R.string.app_tag), getString(R.string.add_entry_ok)+item); + } + + else + Log.e(getString(R.string.app_tag), getString(R.string.add_entry_ko)+item); + + } + + public void removeItemAction(Item item) + { + if(shoppingCartProxy.removeItem(item) && cartItems.remove(item)) + { + Log.i(getString(R.string.app_tag), getString(R.string.del_entry_ok)+item); + } + else + Log.i(getString(R.string.app_tag), getString(R.string.del_entry_ko)+item); + reloadShoppingCart(); + } /** @@ -166,12 +245,29 @@ public class catalog extends TabActivity { */ public void reloadShoppingCart() { - String[] cartArray=new String[cartItems.size()]; - cartList.setChoiceMode(ListView.CHOICE_MODE_NONE); - cartList.setAdapter(new ArrayAdapter<String>(this, - android.R.layout.simple_list_item_1, cartItems.toArray(cartArray))); + Item[] cartArray=new Item[cartItems.size()]; + cartList.setChoiceMode(ListView.CHOICE_MODE_SINGLE); + cartList.setClickable(true); + cartList.setAdapter(new ArrayAdapter<Item>(this, + R.layout.shop_row, R.id.txtItemS, cartItems.toArray(cartArray))); + if(!cartList.getAdapter().isEmpty()) + { + txtTotal.setVisibility(TextView.VISIBLE); + txtEmpty.setText("Click on an item below to remove it"); + btnClean.setVisibility(Button.VISIBLE); + } + else + { + txtTotal.setVisibility(TextView.INVISIBLE); + txtEmpty.setVisibility(TextView.VISIBLE); + txtEmpty.setText(R.string.txt_empty); + btnClean.setVisibility(Button.INVISIBLE); + } + String tt=shoppingCartProxy.getTotal(); + txtTotal.setText(getString(R.string.title_order)+": "+(tt.length()>5?tt.substring(0,5):tt)); + } - + }
\ No newline at end of file |