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