@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.key_server_query_layout);

    mQuery = (EditText) findViewById(R.id.query);
    mSearch = (Button) findViewById(R.id.btn_search);
    mList = (ListView) findViewById(R.id.list);
    mAdapter = new KeyInfoListAdapter(this);
    mList.setAdapter(mAdapter);

    mKeyServer = (Spinner) findViewById(R.id.keyServer);
    ArrayAdapter<String> adapter =
        new ArrayAdapter<String>(
            this, android.R.layout.simple_spinner_item, mPreferences.getKeyServers());
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mKeyServer.setAdapter(adapter);
    if (adapter.getCount() > 0) {
      mKeyServer.setSelection(0);
    } else {
      mSearch.setEnabled(false);
    }

    mList.setOnItemClickListener(
        new OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> adapter, View view, int position, long keyId) {
            get(keyId);
          }
        });

    mSearch.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            String query = mQuery.getText().toString();
            search(query);
          }
        });

    Intent intent = getIntent();
    if (Apg.Intent.LOOK_UP_KEY_ID.equals(intent.getAction())
        || Apg.Intent.LOOK_UP_KEY_ID_AND_RETURN.equals(intent.getAction())) {
      long keyId = intent.getLongExtra(Apg.EXTRA_KEY_ID, 0);
      if (keyId != 0) {
        String query = "0x" + Apg.keyToHex(keyId);
        mQuery.setText(query);
        search(query);
      }
    }
  }
  @Override
  public void doneCallback(Message msg) {
    super.doneCallback(msg);

    removeDialog(Id.dialog.querying);

    Bundle data = msg.getData();
    String error = data.getString(Apg.EXTRA_ERROR);
    if (error != null) {
      Toast.makeText(this, getString(R.string.errorMessage, error), Toast.LENGTH_SHORT).show();
      return;
    }

    if (mQueryType == Id.query.search) {
      if (mSearchResult != null) {
        Toast.makeText(
                this, getString(R.string.keysFound, mSearchResult.size()), Toast.LENGTH_SHORT)
            .show();
        mAdapter.setKeys(mSearchResult);
      }
    } else if (mQueryType == Id.query.get) {
      Intent orgIntent = getIntent();
      if (Apg.Intent.LOOK_UP_KEY_ID_AND_RETURN.equals(orgIntent.getAction())) {
        if (mKeyData != null) {
          Intent intent = new Intent();
          intent.putExtra(Apg.EXTRA_TEXT, mKeyData);
          setResult(RESULT_OK, intent);
        } else {
          setResult(RESULT_CANCELED);
        }
        finish();
      } else {
        if (mKeyData != null) {
          Intent intent = new Intent(this, PublicKeyListActivity.class);
          intent.setAction(Apg.Intent.IMPORT);
          intent.putExtra(Apg.EXTRA_TEXT, mKeyData);
          startActivity(intent);
        }
      }
    }
  }