@Override public long getItemId(final int position) { if (position == accounts.size()) return 0; return accounts.get(position).getId().hashCode(); }
private void navDrawerSelectAccount(@Nullable WalletAccount account, boolean closeDrawer) { if (mNavigationDrawerFragment != null && account != null) { int position = 0; for (NavDrawerItem item : navDrawerItems) { if (item.itemType == ITEM_COIN && account.getId().equals(item.itemData)) { mNavigationDrawerFragment.setSelectedItem(position, closeDrawer); break; } position++; } } }
public void addAccount(WalletAccount pocket) { lock.lock(); try { String id = pocket.getId(); CoinType type = pocket.getCoinType(); checkState(!accounts.containsKey(id), "Cannot replace an existing wallet pocket"); if (!accountsByType.containsKey(type)) { accountsByType.put(type, new ArrayList<WalletAccount>()); } accountsByType.get(type).add(pocket); accounts.put(pocket.getId(), pocket); pocket.setWallet(this); } finally { lock.unlock(); } }
public static AccountDetailsFragment newInstance(WalletAccount account) { AccountDetailsFragment fragment = new AccountDetailsFragment(); Bundle args = new Bundle(); args.putSerializable(Constants.ARG_ACCOUNT_ID, account.getId()); fragment.setArguments(args); return fragment; }
private static EditAccountFragment instance(WalletAccount account) { final EditAccountFragment fragment = new EditAccountFragment(); final Bundle args = new Bundle(); args.putString(ARG_ACCOUNT_ID, account.getId()); fragment.setArguments(args); return fragment; }
public void maybeConnectAccount(WalletAccount account) { if (!account.isConnected()) { coinServiceConnectIntent.putExtra(Constants.ARG_ACCOUNT_ID, account.getId()); startService(coinServiceConnectIntent); } } }
public void onMakeTransaction(AbstractAddress toAddress, Value amount, @Nullable TxMessage txMessage) { Intent intent = new Intent(getActivity(), SignTransactionActivity.class); // Decide if emptying wallet or not if (canCompare(lastBalance, amount) && amount.compareTo(lastBalance) == 0) { intent.putExtra(Constants.ARG_EMPTY_WALLET, true); } else { intent.putExtra(Constants.ARG_SEND_VALUE, amount); } intent.putExtra(Constants.ARG_ACCOUNT_ID, account.getId()); intent.putExtra(Constants.ARG_SEND_TO_ADDRESS, toAddress); if (txMessage != null) intent.putExtra(Constants.ARG_TX_MESSAGE, txMessage); startActivityForResult(intent, SIGN_TRANSACTION); state = State.INPUT; }
public static DialogFragment getInstance(WalletAccount account) { DialogFragment dialog = new CreateNewAddressDialog(); dialog.setArguments(new Bundle()); dialog.getArguments().putString(Constants.ARG_ACCOUNT_ID, account.getId()); return dialog; }
@SuppressWarnings({ "unchecked"}) private static <T extends Fragment> T createFragment(WalletAccount account, int item) { String accountId = account.getId(); switch (item) { case RECEIVE: return (T) AddressRequestFragment.newInstance(accountId); case BALANCE: return (T) BalanceFragment.newInstance(accountId); case SEND: return (T) SendFragment.newInstance(accountId); default: throw new RuntimeException("Cannot create fragment, unknown screen item: " + item); } }
@Override public void onMakeTrade(WalletAccount fromAccount, WalletAccount toAccount, Value amount) { Bundle args = new Bundle(); args.putString(Constants.ARG_ACCOUNT_ID, fromAccount.getId()); args.putString(Constants.ARG_SEND_TO_ACCOUNT_ID, toAccount.getId()); if (amount.type.equals(fromAccount.getCoinType())) { // TODO set the empty wallet flag in the fragment // Decide if emptying wallet or not Value lastBalance = fromAccount.getBalance(); if (amount.compareTo(lastBalance) == 0) { args.putSerializable(Constants.ARG_EMPTY_WALLET, true); } else { args.putSerializable(Constants.ARG_SEND_VALUE, amount); } } else if (amount.type.equals(toAccount.getCoinType())) { args.putSerializable(Constants.ARG_SEND_VALUE, amount); } else { throw new IllegalStateException("Amount does not have the expected type: " + amount.type); } replaceFragment(MakeTransactionFragment.newInstance(args), containerRes); }
@Override public void onClick(View v) { String accountId = null; for (WalletAccount account : accounts) { if (account.getTransaction(txId) != null) { accountId = account.getId(); break; } } if (accountId != null && txId != null) { Intent intent = new Intent(getActivity(), TransactionDetailsActivity.class); intent.putExtra(Constants.ARG_ACCOUNT_ID, accountId); intent.putExtra(Constants.ARG_TRANSACTION_ID, txId); startActivity(intent); } else { // Take to an external blockchain explorer if (Constants.COINS_BLOCK_EXPLORERS.containsKey(withdrawType)) { String url = String.format(Constants.COINS_BLOCK_EXPLORERS.get(withdrawType), txId); Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); } else { // Should not happen Toast.makeText(getActivity(), R.string.error_generic, Toast.LENGTH_SHORT).show(); } } } });
case R.id.action_account_details: Intent intent = new Intent(activity, AccountDetailsActivity.class); intent.putExtra(Constants.ARG_ACCOUNT_ID, account.getId()); activity.startActivity(intent); mode.finish();
@Override public boolean equals(WalletAccount other) { return other != null && getId().equals(other.getId()) && getCoinType().equals(other.getCoinType()); } }
@Override public void onClick(DialogInterface dialog, int which) { Wallet wallet = account.getWallet(); wallet.deleteAccount(account.getId()); if (activity instanceof EditAccountFragment.Listener) { ((EditAccountFragment.Listener) activity) .onAccountModified(account); } } })
result.putExtra(Constants.ARG_ACCOUNT_ID, newAccount.getId()); setResult(RESULT_OK, result); finish();
@OnItemClick(R.id.account_rows) public void onAmountClick(int position) { if (position >= accountRows.getHeaderViewsCount()) { // Note the usage of getItemAtPosition() instead of adapter's getItem() because // the latter does not take into account the header (which has position 0). Object obj = accountRows.getItemAtPosition(position); if (listener != null && obj != null && obj instanceof WalletAccount) { listener.onAccountSelected(((WalletAccount) obj).getId()); } else { showGenericError(); } } }
private void createNavDrawerItems() { navDrawerItems.clear(); NavDrawerItem.addItem(navDrawerItems, ITEM_SECTION_TITLE, getString(R.string.navigation_drawer_services)); NavDrawerItem.addItem(navDrawerItems, ITEM_TRADE, getString(R.string.title_activity_trade), R.drawable.trade, null); NavDrawerItem.addItem(navDrawerItems, ITEM_SECTION_TITLE, getString(R.string.navigation_drawer_wallet)); NavDrawerItem.addItem(navDrawerItems, ITEM_OVERVIEW, getString(R.string.title_activity_overview), R.drawable.ic_launcher, null); for (WalletAccount account : getAllAccounts()) { NavDrawerItem.addItem(navDrawerItems, ITEM_COIN, account.getDescriptionOrCoinName(), Constants.COINS_ICONS.get(account.getCoinType()), account.getId()); } }
private void openAccount(WalletAccount account, boolean selectInNavDrawer) { if (account != null && !isFinishing()) { if (isAccountVisible(account)) return; FragmentTransaction ft = getFM().beginTransaction(); ft.hide(overviewFragment); // If this account fragment is hidden, show it if (accountFragment != null && account.getId().equals(lastAccountId)) { ft.show(accountFragment); } else { // Else create a new fragment for the new account lastAccountId = account.getId(); if (accountFragment != null) ft.remove(accountFragment); accountFragment = AccountFragment.getInstance(lastAccountId); ft.add(R.id.contents, accountFragment, ACCOUNT_TAG); getWalletApplication().getConfiguration().touchLastAccountId(lastAccountId); } ft.commit(); setAccountTitle(account); isOverviewVisible = false; connectCoinService(lastAccountId); if (selectInNavDrawer) { navDrawerSelectAccount(account, true); } // Hide the shadow of the action bar because the PagerTabStrip of the AccountFragment is visible if (getSupportActionBar() != null) { getSupportActionBar().setElevation(0); } } }