fixed #321 - delete otr fingerprints
This commit is contained in:
parent
90947597e5
commit
449c2a544b
Binary file not shown.
After Width: | Height: | Size: 448 B |
Binary file not shown.
After Width: | Height: | Size: 282 B |
Binary file not shown.
After Width: | Height: | Size: 513 B |
Binary file not shown.
After Width: | Height: | Size: 681 B |
|
@ -1,22 +1,40 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent" >
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_toLeftOf="@+id/button_remove"
|
||||
android:orientation="vertical"
|
||||
android:padding="8dp" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/key"
|
||||
<TextView
|
||||
android:id="@+id/key"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/primarytext"
|
||||
android:textSize="18sp"
|
||||
android:typeface="monospace" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/key_type"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/secondarytext" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/button_remove"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="18sp"
|
||||
android:textColor="@color/primarytext"
|
||||
android:typeface="monospace"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/key_type"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/secondarytext"
|
||||
/>
|
||||
</LinearLayout>
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:padding="8dp"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:src="@drawable/ic_action_remove"
|
||||
android:visibility="invisible"/>
|
||||
|
||||
</RelativeLayout>
|
|
@ -245,5 +245,7 @@
|
|||
<string name="request_presence_updates">Please request presence updates from your contact first.\n\n<small>This will be used to determine what client(s) your contact is using.</small></string>
|
||||
<string name="request_now">Request now</string>
|
||||
<string name="unable_to_decrypt_otr_message">Unable to decrypt OTR message</string>
|
||||
<string name="delete_fingerprint">Delete Fingerprint</string>
|
||||
<string name="sure_delete_fingerprint">Are you sure you would like to delete this fingerprint?</string>
|
||||
|
||||
</resources>
|
|
@ -351,4 +351,26 @@ public class Contact implements ListItem {
|
|||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean deleteOtrFingerprint(String fingerprint) {
|
||||
boolean success = false;
|
||||
try {
|
||||
if (this.keys.has("otr_fingerprints")) {
|
||||
JSONArray newPrints = new JSONArray();
|
||||
JSONArray oldPrints = this.keys
|
||||
.getJSONArray("otr_fingerprints");
|
||||
for (int i = 0; i < oldPrints.length(); ++i) {
|
||||
if (!oldPrints.getString(i).equals(fingerprint)) {
|
||||
newPrints.put(oldPrints.getString(i));
|
||||
} else {
|
||||
success = true;
|
||||
}
|
||||
}
|
||||
this.keys.put("otr_fingerprints", newPrints);
|
||||
}
|
||||
return success;
|
||||
} catch (JSONException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ import android.view.View.OnClickListener;
|
|||
import android.widget.CheckBox;
|
||||
import android.widget.CompoundButton.OnCheckedChangeListener;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.QuickContactBadge;
|
||||
import android.widget.TextView;
|
||||
|
@ -323,16 +324,25 @@ public class ContactDetailsActivity extends XmppActivity {
|
|||
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
for (Iterator<String> iterator = contact.getOtrFingerprints()
|
||||
.iterator(); iterator.hasNext();) {
|
||||
String otrFingerprint = iterator.next();
|
||||
View view = (View) inflater.inflate(R.layout.contact_key, null);
|
||||
final String otrFingerprint = iterator.next();
|
||||
View view = (View) inflater.inflate(R.layout.contact_key, keys,false);
|
||||
TextView key = (TextView) view.findViewById(R.id.key);
|
||||
TextView keyType = (TextView) view.findViewById(R.id.key_type);
|
||||
ImageButton remove = (ImageButton) view.findViewById(R.id.button_remove);
|
||||
remove.setVisibility(View.VISIBLE);
|
||||
keyType.setText("OTR Fingerprint");
|
||||
key.setText(otrFingerprint);
|
||||
keys.addView(view);
|
||||
remove.setOnClickListener(new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
confirmToDeleteFingerprint(otrFingerprint);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (contact.getPgpKeyId() != 0) {
|
||||
View view = (View) inflater.inflate(R.layout.contact_key, null);
|
||||
View view = (View) inflater.inflate(R.layout.contact_key, keys,false);
|
||||
TextView key = (TextView) view.findViewById(R.id.key);
|
||||
TextView keyType = (TextView) view.findViewById(R.id.key_type);
|
||||
keyType.setText("PGP Key ID");
|
||||
|
@ -360,6 +370,25 @@ public class ContactDetailsActivity extends XmppActivity {
|
|||
keys.addView(view);
|
||||
}
|
||||
}
|
||||
|
||||
protected void confirmToDeleteFingerprint(final String fingerprint) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.delete_fingerprint);
|
||||
builder.setMessage(R.string.sure_delete_fingerprint);
|
||||
builder.setNegativeButton(R.string.cancel, null);
|
||||
builder.setPositiveButton(R.string.delete,new android.content.DialogInterface.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (contact.deleteOtrFingerprint(fingerprint)) {
|
||||
populateView();
|
||||
xmppConnectionService.syncRosterToDisk(contact.getAccount());
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
builder.create().show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackendConnected() {
|
||||
|
|
Loading…
Reference in New Issue