/** * This function takes care of adding a card to the wishlist from this fragment. It makes sure * that fields are not null or have bad information. */ private void addCardToWishlist() { /* Do not allow empty fields */ String name = String.valueOf(mNameField.getText()); String numberOf = (String.valueOf(mNumberField.getText())); if (name == null || name.equals("")) { return; } if (numberOf == null || numberOf.equals("")) { return; } SQLiteDatabase database = DatabaseManager.getInstance(getActivity(), false).openDatabase(false); try { /* Make the new card */ MtgCard card = new MtgCard(); card.name = name; card.foil = mFoilCheckBox.isChecked(); card.numberOf = Integer.parseInt(numberOf); card.message = getString(R.string.wishlist_loading); /* Get some extra information from the database */ Cursor cardCursor = CardDbAdapter.fetchCardByName(card.name, CardDbAdapter.allData, database); if (cardCursor.getCount() == 0) { ToastWrapper.makeText( WishlistFragment.this.getActivity(), getString(R.string.toast_no_card), ToastWrapper.LENGTH_LONG) .show(); DatabaseManager.getInstance(getActivity(), false).closeDatabase(false); return; } card.type = cardCursor.getString(cardCursor.getColumnIndex(CardDbAdapter.KEY_TYPE)); card.rarity = (char) cardCursor.getInt(cardCursor.getColumnIndex(CardDbAdapter.KEY_RARITY)); card.manaCost = cardCursor.getString(cardCursor.getColumnIndex(CardDbAdapter.KEY_MANACOST)); card.power = cardCursor.getInt(cardCursor.getColumnIndex(CardDbAdapter.KEY_POWER)); card.toughness = cardCursor.getInt(cardCursor.getColumnIndex(CardDbAdapter.KEY_TOUGHNESS)); card.loyalty = cardCursor.getInt(cardCursor.getColumnIndex(CardDbAdapter.KEY_LOYALTY)); card.ability = cardCursor.getString(cardCursor.getColumnIndex(CardDbAdapter.KEY_ABILITY)); card.flavor = cardCursor.getString(cardCursor.getColumnIndex(CardDbAdapter.KEY_FLAVOR)); card.number = cardCursor.getString(cardCursor.getColumnIndex(CardDbAdapter.KEY_NUMBER)); card.setCode = cardCursor.getString(cardCursor.getColumnIndex(CardDbAdapter.KEY_SET)); card.setName = CardDbAdapter.getSetNameFromCode(card.setCode, database); card.cmc = cardCursor.getInt((cardCursor.getColumnIndex(CardDbAdapter.KEY_CMC))); card.color = cardCursor.getString(cardCursor.getColumnIndex(CardDbAdapter.KEY_COLOR)); /* Override choice if the card can't be foil */ if (!CardDbAdapter.canBeFoil(card.setCode, database)) { card.foil = false; } /* Clean up */ cardCursor.close(); /* Add it to the wishlist, either as a new CompressedWishlistInfo, or to an existing one */ if (mCompressedWishlist.contains(card)) { CompressedWishlistInfo cwi = mCompressedWishlist.get(mCompressedWishlist.indexOf(card)); boolean added = false; for (IndividualSetInfo isi : cwi.mInfo) { if (isi.mSetCode.equals(card.setCode) && isi.mIsFoil.equals(card.foil)) { added = true; isi.mNumberOf++; } } if (!added) { cwi.add(card); } } else { mCompressedWishlist.add(new CompressedWishlistInfo(card)); } /* load the price */ loadPrice(card.name, card.setCode, card.number); /* Sort the wishlist */ sortWishlist(); /* Save the wishlist */ WishlistHelpers.WriteCompressedWishlist(getActivity(), mCompressedWishlist); /* Clean up for the next add */ mNumberField.setText("1"); mNameField.setText(""); mFoilCheckBox.setChecked(false); /* Redraw the new wishlist with the new card */ mWishlistAdapter.notifyDataSetChanged(); } catch (FamiliarDbException e) { handleFamiliarDbException(false); } catch (NumberFormatException e) { /* eat it */ } DatabaseManager.getInstance(getActivity(), false).closeDatabase(false); }