diff options
Diffstat (limited to 'org_apg/src/org/apg/ui/KeyServerQueryActivity.java')
-rw-r--r-- | org_apg/src/org/apg/ui/KeyServerQueryActivity.java | 329 |
1 files changed, 0 insertions, 329 deletions
diff --git a/org_apg/src/org/apg/ui/KeyServerQueryActivity.java b/org_apg/src/org/apg/ui/KeyServerQueryActivity.java deleted file mode 100644 index cc65769de..000000000 --- a/org_apg/src/org/apg/ui/KeyServerQueryActivity.java +++ /dev/null @@ -1,329 +0,0 @@ -/* - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apg.ui; - -import java.util.List; -import java.util.Vector; - -import org.apg.Apg; -import org.apg.Constants; -import org.apg.HkpKeyServer; -import org.apg.Id; -import org.apg.KeyServer.InsufficientQuery; -import org.apg.KeyServer.KeyInfo; -import org.apg.KeyServer.QueryException; -import org.apg.KeyServer.TooManyResponses; -import org.apg.R; - -import com.actionbarsherlock.view.MenuItem; - -import android.app.Activity; -import android.app.Dialog; -import android.app.ProgressDialog; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemClickListener; -import android.widget.ArrayAdapter; -import android.widget.BaseAdapter; -import android.widget.Button; -import android.widget.EditText; -import android.widget.LinearLayout; -import android.widget.LinearLayout.LayoutParams; -import android.widget.ListView; -import android.widget.Spinner; -import android.widget.TextView; -import android.widget.Toast; - -public class KeyServerQueryActivity extends BaseActivity { - private ListView mList; - private EditText mQuery; - private Button mSearch; - private KeyInfoListAdapter mAdapter; - private Spinner mKeyServer; - - private int mQueryType; - private String mQueryString; - private long mQueryId; - private volatile List<KeyInfo> mSearchResult; - private volatile String mKeyData; - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - - case android.R.id.home: - startActivity(new Intent(this, PublicKeyListActivity.class)); - return true; - - default: - break; - - } - return false; - } - - @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() { - public void onItemClick(AdapterView<?> adapter, View view, int position, long keyId) { - get(keyId); - } - }); - - mSearch.setOnClickListener(new OnClickListener() { - 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); - } - } - } - - private void search(String query) { - showDialog(Id.dialog.querying); - mQueryType = Id.keyserver.search; - mQueryString = query; - mAdapter.setKeys(new Vector<KeyInfo>()); - startThread(); - } - - private void get(long keyId) { - showDialog(Id.dialog.querying); - mQueryType = Id.keyserver.get; - mQueryId = keyId; - startThread(); - } - - @Override - protected Dialog onCreateDialog(int id) { - ProgressDialog progress = (ProgressDialog) super.onCreateDialog(id); - progress.setMessage(this.getString(R.string.progress_queryingServer, - (String) mKeyServer.getSelectedItem())); - return progress; - } - - @Override - public void run() { - String error = null; - Bundle data = new Bundle(); - Message msg = new Message(); - - try { - HkpKeyServer server = new HkpKeyServer((String) mKeyServer.getSelectedItem()); - if (mQueryType == Id.keyserver.search) { - mSearchResult = server.search(mQueryString); - } else if (mQueryType == Id.keyserver.get) { - mKeyData = server.get(mQueryId); - } - } catch (QueryException e) { - error = "" + e; - } catch (InsufficientQuery e) { - error = "Insufficient query."; - } catch (TooManyResponses e) { - error = "Too many responses."; - } - - data.putInt(Constants.extras.STATUS, Id.message.done); - - if (error != null) { - data.putString(Apg.EXTRA_ERROR, error); - } - - msg.setData(data); - sendMessage(msg); - } - - @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.keyserver.search) { - if (mSearchResult != null) { - Toast.makeText(this, getString(R.string.keysFound, mSearchResult.size()), - Toast.LENGTH_SHORT).show(); - mAdapter.setKeys(mSearchResult); - } - } else if (mQueryType == Id.keyserver.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); - } - } - } - } - - public class KeyInfoListAdapter extends BaseAdapter { - protected LayoutInflater mInflater; - protected Activity mActivity; - protected List<KeyInfo> mKeys; - - public KeyInfoListAdapter(Activity activity) { - mActivity = activity; - mInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - mKeys = new Vector<KeyInfo>(); - } - - public void setKeys(List<KeyInfo> keys) { - mKeys = keys; - notifyDataSetChanged(); - } - - @Override - public boolean hasStableIds() { - return true; - } - - public int getCount() { - return mKeys.size(); - } - - public Object getItem(int position) { - return mKeys.get(position); - } - - public long getItemId(int position) { - return mKeys.get(position).keyId; - } - - public View getView(int position, View convertView, ViewGroup parent) { - KeyInfo keyInfo = mKeys.get(position); - - View view = mInflater.inflate(R.layout.key_server_query_result_item, null); - - TextView mainUserId = (TextView) view.findViewById(R.id.mainUserId); - mainUserId.setText(R.string.unknownUserId); - TextView mainUserIdRest = (TextView) view.findViewById(R.id.mainUserIdRest); - mainUserIdRest.setText(""); - TextView keyId = (TextView) view.findViewById(R.id.keyId); - keyId.setText(R.string.noKey); - TextView algorithm = (TextView) view.findViewById(R.id.algorithm); - algorithm.setText(""); - TextView status = (TextView) view.findViewById(R.id.status); - status.setText(""); - - String userId = keyInfo.userIds.get(0); - if (userId != null) { - String chunks[] = userId.split(" <", 2); - userId = chunks[0]; - if (chunks.length > 1) { - mainUserIdRest.setText("<" + chunks[1]); - } - mainUserId.setText(userId); - } - - keyId.setText(Apg.getSmallFingerPrint(keyInfo.keyId)); - - if (mainUserIdRest.getText().length() == 0) { - mainUserIdRest.setVisibility(View.GONE); - } - - algorithm.setText("" + keyInfo.size + "/" + keyInfo.algorithm); - - if (keyInfo.revoked != null) { - status.setText("revoked"); - } else { - status.setVisibility(View.GONE); - } - - LinearLayout ll = (LinearLayout) view.findViewById(R.id.list); - if (keyInfo.userIds.size() == 1) { - ll.setVisibility(View.GONE); - } else { - boolean first = true; - boolean second = true; - for (String uid : keyInfo.userIds) { - if (first) { - first = false; - continue; - } - if (!second) { - View sep = new View(mActivity); - sep.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 1)); - sep.setBackgroundResource(android.R.drawable.divider_horizontal_dark); - ll.addView(sep); - } - TextView uidView = (TextView) mInflater.inflate( - R.layout.key_server_query_result_user_id, null); - uidView.setText(uid); - ll.addView(uidView); - second = false; - } - } - - return view; - } - } -} |