/** Initializes select contact group spinner with contact groups. */
  private void initContactGroupSpinner() {
    Spinner groupSpinner = (Spinner) findViewById(R.id.selectGroupSpinner);

    MetaContactGroupAdapter contactGroupAdapter =
        new MetaContactGroupAdapter(this, R.id.selectGroupSpinner, true, true);

    contactGroupAdapter.setItemLayout(R.layout.simple_spinner_item);
    contactGroupAdapter.setDropDownLayout(R.layout.dropdown_spinner_item);

    groupSpinner.setAdapter(contactGroupAdapter);
  }
  /** {@inheritDoc} */
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.authorization_requested);

    long requestId = getIntent().getLongExtra(EXTRA_REQUEST_ID, -1);

    if (requestId == -1) throw new IllegalArgumentException();

    this.request = AuthorizationHandlerImpl.getRequest(requestId);

    View content = findViewById(android.R.id.content);

    ViewUtil.setTextViewValue(
        content,
        R.id.requestInfo,
        getString(
            R.string.service_gui_AUTHORIZATION_REQUESTED_INFO, request.contact.getDisplayName()));

    ViewUtil.setTextViewValue(
        content,
        R.id.addToContacts,
        getString(R.string.service_gui_ADD_AUTHORIZED_CONTACT, request.contact.getDisplayName()));

    Spinner contactGroupSpinner = (Spinner) findViewById(R.id.selectGroupSpinner);

    contactGroupSpinner.setAdapter(new MetaContactGroupAdapter(this));

    CompoundButton addToContactsCb = (CompoundButton) findViewById(R.id.addToContacts);

    addToContactsCb.setOnCheckedChangeListener(
        new CompoundButton.OnCheckedChangeListener() {
          @Override
          public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            updateAddToContactsStatus(isChecked);
          }
        });
  }
  /** Initializes "select account" spinner with existing accounts. */
  private void initAccountSpinner() {
    Spinner accountsSpiner = (Spinner) findViewById(R.id.selectAccountSpinner);

    Iterator<ProtocolProviderService> providers = AccountUtils.getRegisteredProviders().iterator();

    List<AccountID> accounts = new ArrayList<AccountID>();

    int selectedIdx = -1;
    int idx = 0;

    while (providers.hasNext()) {
      ProtocolProviderService provider = providers.next();

      OperationSet opSet = provider.getOperationSet(OperationSetPresence.class);

      if (opSet == null) continue;

      AccountID account = provider.getAccountID();
      accounts.add(account);
      idx++;

      if (account.isPreferredProvider()) {
        selectedIdx = idx;
      }
    }

    AccountsListAdapter accountsAdapter =
        new AccountsListAdapter(
            this, R.layout.select_account_row, R.layout.select_account_dropdown, accounts, true);
    accountsSpiner.setAdapter(accountsAdapter);

    // if we have only select account option and only one account
    // select the available account
    if (accounts.size() == 1) accountsSpiner.setSelection(0);
    else accountsSpiner.setSelection(selectedIdx);
  }