Android Open Source - trivial-password Account List Fragment






From Project

Back to project page trivial-password.

License

The source code is released under:

MIT License

If you think the Android project trivial-password listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.hbabcock.trivialpassword;
//from   w w w  .  ja  v  a  2  s. co  m
import java.util.ArrayList;

import android.annotation.TargetApi;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.ListFragment;
import android.util.Log;
import android.view.ActionMode;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView.MultiChoiceModeListener;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

public class AccountListFragment extends ListFragment {
  private static final String TAG = "AccountListFragment";
  
  private ArrayList<Account> mAccounts;
  
  @Override
  public boolean onContextItemSelected(MenuItem item){
    AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();
    int position = info.position;
    AccountAdapter adapter = (AccountAdapter)getListAdapter();
    Account account = adapter.getItem(position);
    
    switch (item.getItemId()){
    case R.id.menu_item_delete_account:
      AccountManager.get(getActivity()).deleteAccount(account);
      adapter.notifyDataSetChanged();
      return true;
    }
    return super.onContextItemSelected(item);
  }
  
  @Override
  public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    
    setHasOptionsMenu(true);
    
    getActivity().setTitle(R.string.accounts_title);

    /*
    if (PasswordManager.get(getActivity()).havePassword() == false){
      Intent i = new Intent(getActivity(), PasswordActivity.class);
      startActivity(i);
    }
    */
    
    mAccounts = AccountManager.get(getActivity()).getAccounts();
    AccountAdapter adapter = new AccountAdapter(mAccounts);
    setListAdapter(adapter);
  }
  
  @Override
  public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
    getActivity().getMenuInflater().inflate(R.menu.fragment_account_list_context, menu);
  }
  
  @TargetApi(11)
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){
    View v = inflater.inflate(R.layout.fragment_list_account, parent, false);
    
    Button b = (Button)v.findViewById(R.id.add_button);
    b.setOnClickListener(new View.OnClickListener(){
      public void onClick(View vw){
        startAddDialog();
      }      
    });
    
    ListView lv = (ListView)v.findViewById(android.R.id.list);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB){
      registerForContextMenu(lv);
    }
    else{
      lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
      lv.setMultiChoiceModeListener(new MultiChoiceModeListener(){

        public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked){
          
        }
        
        public boolean onCreateActionMode(ActionMode mode, Menu menu){
          MenuInflater inflater = mode.getMenuInflater();
          inflater.inflate(R.menu.fragment_account_list_context, menu);
          return true;
        }
        
        public boolean onPrepareActionMode(ActionMode mode, Menu menu){
          return false;
        }
        
        public boolean onActionItemClicked(ActionMode mode, MenuItem item){
          switch (item.getItemId()){
          case R.id.menu_item_delete_account:
            AccountAdapter adapter = (AccountAdapter)getListAdapter();
            AccountManager accountManager = AccountManager.get(getActivity());
            for (int i = adapter.getCount() - 1; i >= 0; i--){
              if (getListView().isItemChecked(i)){
                accountManager.deleteAccount(adapter.getItem(i));
              }
            }
            mode.finish();
            adapter.notifyDataSetChanged();
            return true;
          default:
            return false;
          }
        }

        public void onDestroyActionMode(ActionMode mode){
          
        }
      });
    }
    
    return v;
  }
  
  @Override
  public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.fragment_account_list, menu);
  }

  @Override
  public void onListItemClick(ListView l, View v, int position, long id){
    Intent i = new Intent(getActivity(), AccountPagerActivity.class);
    i.putExtra(AccountFragment.EXTRA_ACCOUNT_ID, ((Account)(getListAdapter()).getItem(position)).getId());
    i.putExtra(AccountFragment.EXTRA_NEW_ACCOUNT, false);
    startActivityForResult(i, 0);
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()){
      case R.id.menu_item_new_account:
        startAddDialog();
        return true;
      case R.id.menu_item_change_password:
        FragmentManager fm = getActivity().getSupportFragmentManager();
        PasswordChangeFragment dialog = new PasswordChangeFragment();
        dialog.setTargetFragment(AccountListFragment.this, 0);
        dialog.show(fm, TAG);
      case R.id.menu_item_lock:
        PasswordManager.get(getActivity()).clearPassword();
        Intent i = new Intent(getActivity(), PasswordActivity.class);
        startActivity(i);
      default:
        return super.onOptionsItemSelected(item);
    }
  }

  @Override
  public void onPause(){
    super.onPause();
    AccountManager.get(getActivity()).saveAccounts();
  }

  @Override
  public void onResume(){
    super.onResume();
    Log.i(TAG,"onResume");
    if (PasswordManager.get(getActivity()).havePassword() == false){
      Intent i = new Intent(getActivity(), PasswordActivity.class);
      startActivity(i);
    }
    else {
      if (AccountManager.get(getActivity()).getLoadedOk() == false){
        mAccounts = AccountManager.get(getActivity()).getAccounts();
        AccountAdapter adapter = new AccountAdapter(mAccounts);
        setListAdapter(adapter);
      }
      else{
        ((AccountAdapter)getListAdapter()).notifyDataSetChanged();
      }
    }
  }

  /*
  @Override
  public void onSaveInstanceState(Bundle outState){
    super.onSaveInstanceState(outState);
    outState.putString(KEY_PASSWORD, PasswordManager.get(getActivity()).getPassword());
    outState.putString(KEY_HINT, PasswordManager.get(getActivity()).getHint());
  }
  */
  
  private void startAddDialog(){
    Account account = new Account();
    AccountManager.get(getActivity()).addAccount(account);
    Intent i = new Intent(getActivity(), AccountPagerActivity.class);
    i.putExtra(AccountFragment.EXTRA_ACCOUNT_ID, account.getId());
    i.putExtra(AccountFragment.EXTRA_NEW_ACCOUNT, true);
    startActivityForResult(i, 0);
  }
  
  public class AccountAdapter extends ArrayAdapter<Account>{
    
    public AccountAdapter(ArrayList<Account> accounts){
      super(getActivity(), 0, accounts);
    }
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent){
      if (convertView == null){
        convertView = getActivity().getLayoutInflater().inflate(R.layout.list_item_account, null);
      }
      
      Account a = getItem(position);
      
      ((TextView)convertView.findViewById(R.id.account_list_account)).setText(a.getAccount());
      ((TextView)convertView.findViewById(R.id.account_list_username)).setText(a.getUsername());
      return convertView;
    }
  }

}




Java Source Code List

org.hbabcock.trivialpassword.AccountEditorFragment.java
org.hbabcock.trivialpassword.AccountFragment.java
org.hbabcock.trivialpassword.AccountListActivity.java
org.hbabcock.trivialpassword.AccountListFragment.java
org.hbabcock.trivialpassword.AccountManager.java
org.hbabcock.trivialpassword.AccountPagerActivity.java
org.hbabcock.trivialpassword.Account.java
org.hbabcock.trivialpassword.PasswordActivity.java
org.hbabcock.trivialpassword.PasswordChangeFragment.java
org.hbabcock.trivialpassword.PasswordFragment.java
org.hbabcock.trivialpassword.PasswordManager.java
org.hbabcock.trivialpassword.SingleFragmentActivity.java
org.hbabcock.trivialpassword.TrivialPasswordJSONSerializer.java