mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-27 11:12:15 -05:00
Part 2 of basic user interface for api accounts
This commit is contained in:
parent
9542dc0e12
commit
92a4d0e914
@ -21,6 +21,7 @@ import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
||||
@ -68,20 +69,20 @@ public class AccountSettingsActivity extends ActionBarActivity {
|
||||
}
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public boolean onCreateOptionsMenu(Menu menu) {
|
||||
// super.onCreateOptionsMenu(menu);
|
||||
// getMenuInflater().inflate(R.menu.api_app_settings, menu);
|
||||
// return true;
|
||||
// }
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
super.onCreateOptionsMenu(menu);
|
||||
getMenuInflater().inflate(R.menu.api_account_settings, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.menu_api_settings_revoke:
|
||||
case R.id.menu_account_settings_delete:
|
||||
deleteAccount();
|
||||
return true;
|
||||
case R.id.menu_api_settings_cancel:
|
||||
case R.id.menu_account_settings_cancel:
|
||||
finish();
|
||||
return true;
|
||||
}
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
package org.sufficientlysecure.keychain.remote.ui;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
@ -32,11 +33,14 @@ import android.widget.ImageView;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.beardedhen.androidbootstrap.BootstrapButton;
|
||||
|
||||
import org.spongycastle.util.encoders.Hex;
|
||||
import org.sufficientlysecure.keychain.Constants;
|
||||
import org.sufficientlysecure.keychain.R;
|
||||
import org.sufficientlysecure.keychain.remote.AccountSettings;
|
||||
import org.sufficientlysecure.keychain.remote.AppSettings;
|
||||
import org.sufficientlysecure.keychain.ui.EditKeyActivity;
|
||||
import org.sufficientlysecure.keychain.ui.SelectSecretKeyLayoutFragment;
|
||||
import org.sufficientlysecure.keychain.ui.adapter.KeyValueSpinnerAdapter;
|
||||
import org.sufficientlysecure.keychain.util.AlgorithmNames;
|
||||
@ -52,15 +56,13 @@ public class AccountSettingsFragment extends Fragment implements
|
||||
private AccountSettings mAccSettings;
|
||||
|
||||
// view
|
||||
private TextView mAppNameView;
|
||||
private ImageView mAppIconView;
|
||||
private TextView mAccNameView;
|
||||
private Spinner mEncryptionAlgorithm;
|
||||
private Spinner mHashAlgorithm;
|
||||
private Spinner mCompression;
|
||||
private TextView mPackageName;
|
||||
private TextView mPackageSignature;
|
||||
|
||||
private SelectSecretKeyLayoutFragment mSelectKeyFragment;
|
||||
private BootstrapButton mCreateKeyButton;
|
||||
|
||||
KeyValueSpinnerAdapter mEncryptionAdapter;
|
||||
KeyValueSpinnerAdapter mHashAdapter;
|
||||
@ -70,27 +72,15 @@ public class AccountSettingsFragment extends Fragment implements
|
||||
return mAccSettings;
|
||||
}
|
||||
|
||||
public void setAccSettings(AccountSettings appSettings) {
|
||||
this.mAccSettings = appSettings;
|
||||
// setPackage(appSettings.getPackageName());
|
||||
// mPackageName.setText(appSettings.getPackageName());
|
||||
public void setAccSettings(AccountSettings accountSettings) {
|
||||
this.mAccSettings = accountSettings;
|
||||
|
||||
// try {
|
||||
// MessageDigest md = MessageDigest.getInstance("SHA-256");
|
||||
// md.update(appSettings.getPackageSignature());
|
||||
// byte[] digest = md.digest();
|
||||
// String signature = new String(Hex.encode(digest));
|
||||
//
|
||||
// mPackageSignature.setText(signature);
|
||||
// } catch (NoSuchAlgorithmException e) {
|
||||
// Log.e(Constants.TAG, "Should not happen!", e);
|
||||
// }
|
||||
|
||||
mSelectKeyFragment.selectKey(appSettings.getKeyId());
|
||||
mEncryptionAlgorithm.setSelection(mEncryptionAdapter.getPosition(appSettings
|
||||
mAccNameView.setText(accountSettings.getAccountName());
|
||||
mSelectKeyFragment.selectKey(accountSettings.getKeyId());
|
||||
mEncryptionAlgorithm.setSelection(mEncryptionAdapter.getPosition(accountSettings
|
||||
.getEncryptionAlgorithm()));
|
||||
mHashAlgorithm.setSelection(mHashAdapter.getPosition(appSettings.getHashAlgorithm()));
|
||||
mCompression.setSelection(mCompressionAdapter.getPosition(appSettings.getCompression()));
|
||||
mHashAlgorithm.setSelection(mHashAdapter.getPosition(accountSettings.getHashAlgorithm()));
|
||||
mCompression.setSelection(mCompressionAdapter.getPosition(accountSettings.getCompression()));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -117,14 +107,19 @@ public class AccountSettingsFragment extends Fragment implements
|
||||
R.id.api_account_settings_select_key_fragment);
|
||||
mSelectKeyFragment.setCallback(this);
|
||||
|
||||
mAppNameView = (TextView) view.findViewById(R.id.api_account_settings_app_name);
|
||||
mAppIconView = (ImageView) view.findViewById(R.id.api_account_settings_app_icon);
|
||||
mAccNameView = (TextView) view.findViewById(R.id.api_account_settings_acc_name);
|
||||
mEncryptionAlgorithm = (Spinner) view
|
||||
.findViewById(R.id.api_account_settings_encryption_algorithm);
|
||||
mHashAlgorithm = (Spinner) view.findViewById(R.id.api_account_settings_hash_algorithm);
|
||||
mCompression = (Spinner) view.findViewById(R.id.api_account_settings_compression);
|
||||
mPackageName = (TextView) view.findViewById(R.id.api_account_settings_package_name);
|
||||
mPackageSignature = (TextView) view.findViewById(R.id.api_account_settings_package_signature);
|
||||
mCreateKeyButton = (BootstrapButton) view.findViewById(R.id.api_account_settings_create_key);
|
||||
|
||||
mCreateKeyButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
createKey();
|
||||
}
|
||||
});
|
||||
|
||||
AlgorithmNames algorithmNames = new AlgorithmNames(getActivity());
|
||||
|
||||
@ -172,25 +167,15 @@ public class AccountSettingsFragment extends Fragment implements
|
||||
}
|
||||
});
|
||||
}
|
||||
//
|
||||
// private void setPackage(String packageName) {
|
||||
// PackageManager pm = getActivity().getApplicationContext().getPackageManager();
|
||||
//
|
||||
// // get application name and icon from package manager
|
||||
// String appName = null;
|
||||
// Drawable appIcon = null;
|
||||
// try {
|
||||
// ApplicationInfo ai = pm.getApplicationInfo(packageName, 0);
|
||||
//
|
||||
// appName = (String) pm.getApplicationLabel(ai);
|
||||
// appIcon = pm.getApplicationIcon(ai);
|
||||
// } catch (final NameNotFoundException e) {
|
||||
// // fallback
|
||||
// appName = packageName;
|
||||
// }
|
||||
// mAppNameView.setText(appName);
|
||||
// mAppIconView.setImageDrawable(appIcon);
|
||||
// }
|
||||
|
||||
private void createKey() {
|
||||
Intent intent = new Intent(getActivity(), EditKeyActivity.class);
|
||||
intent.setAction(EditKeyActivity.ACTION_CREATE_KEY);
|
||||
intent.putExtra(EditKeyActivity.EXTRA_GENERATE_DEFAULT_KEYS, true);
|
||||
// set default user id to account name TODO: not working currently in EditKey
|
||||
intent.putExtra(EditKeyActivity.EXTRA_USER_IDS, mAccSettings.getAccountName());
|
||||
startActivityForResult(intent, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* callback from select secret key fragment
|
||||
|
@ -7,34 +7,14 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?android:attr/listPreferredItemHeight"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/api_account_settings_app_icon"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_marginRight="6dp"
|
||||
android:src="@drawable/icon" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/api_account_settings_app_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toRightOf="@+id/api_app_settings_app_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical"
|
||||
android:text="Name (set in-code)"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
</RelativeLayout>
|
||||
<TextView
|
||||
android:id="@+id/api_account_settings_acc_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical"
|
||||
android:text="Name (set in-code)"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/api_account_settings_select_key_fragment"
|
||||
@ -43,6 +23,19 @@
|
||||
android:layout_height="wrap_content"
|
||||
tools:layout="@layout/select_secret_key_layout_fragment" />
|
||||
|
||||
<com.beardedhen.androidbootstrap.BootstrapButton
|
||||
android:id="@+id/api_account_settings_create_key"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:text="@string/api_settings_create_key"
|
||||
bootstrapbutton:bb_icon_left="fa-key"
|
||||
bootstrapbutton:bb_size="default"
|
||||
bootstrapbutton:bb_type="default" />
|
||||
|
||||
<org.sufficientlysecure.keychain.ui.widget.FoldableLinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
@ -84,32 +77,6 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/api_settings_package_name"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/api_account_settings_package_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="com.example"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/api_settings_package_signature"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/api_account_settings_package_signature"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Base64 encoded signature"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
</org.sufficientlysecure.keychain.ui.widget.FoldableLinearLayout>
|
||||
|
||||
</LinearLayout>
|
@ -418,9 +418,11 @@
|
||||
<string name="api_settings_hide_advanced">Hide advanced settings</string>
|
||||
<string name="api_settings_no_key">No key selected</string>
|
||||
<string name="api_settings_select_key">Select key</string>
|
||||
<string name="api_settings_create_key">Create new key for this account</string>
|
||||
<string name="api_settings_save">Save</string>
|
||||
<string name="api_settings_cancel">Cancel</string>
|
||||
<string name="api_settings_revoke">Revoke access</string>
|
||||
<string name="api_settings_delete_account">Delete account</string>
|
||||
<string name="api_settings_package_name">Package Name</string>
|
||||
<string name="api_settings_package_signature">SHA-256 of Package Signature</string>
|
||||
<string name="api_settings_accounts">Accounts</string>
|
||||
|
Loading…
Reference in New Issue
Block a user