diff options
| author | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-02-23 10:36:39 +0100 | 
|---|---|---|
| committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-02-23 10:36:39 +0100 | 
| commit | dd3af50956ec80502f9f14e91cffbd271cc232fd (patch) | |
| tree | 5c7da347126957e380aa3ce81ddc2955079809d7 | |
| parent | 4c7622e257288f75ec02b4182f2665970987f556 (diff) | |
| download | open-keychain-dd3af50956ec80502f9f14e91cffbd271cc232fd.tar.gz open-keychain-dd3af50956ec80502f9f14e91cffbd271cc232fd.tar.bz2 open-keychain-dd3af50956ec80502f9f14e91cffbd271cc232fd.zip  | |
Uncluttering App Settings: Move advanced info in dialog
4 files changed, 107 insertions, 59 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AppSettingsActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AppSettingsActivity.java index c6b8b186c..407480c98 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AppSettingsActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AppSettingsActivity.java @@ -40,7 +40,10 @@ import org.sufficientlysecure.keychain.operations.results.OperationResult;  import org.sufficientlysecure.keychain.provider.KeychainContract;  import org.sufficientlysecure.keychain.provider.ProviderHelper;  import org.sufficientlysecure.keychain.remote.AppSettings; +import org.sufficientlysecure.keychain.service.SaveKeyringParcel;  import org.sufficientlysecure.keychain.ui.BaseActivity; +import org.sufficientlysecure.keychain.ui.dialog.AddSubkeyDialogFragment; +import org.sufficientlysecure.keychain.ui.dialog.AdvancedAppSettingsDialogFragment;  import org.sufficientlysecure.keychain.util.Log;  import java.security.MessageDigest; @@ -130,16 +133,40 @@ public class AppSettingsActivity extends BaseActivity {      @Override      public boolean onOptionsItemSelected(MenuItem item) {          switch (item.getItemId()) { -            case R.id.menu_api_settings_revoke: +            case R.id.menu_api_save: { +                save(); +                return true; +            } +            case R.id.menu_api_settings_revoke: {                  revokeAccess();                  return true; -            case R.id.menu_api_save: -                save(); +            } +            case R.id.menu_api_settings_advanced: { +                showAdvancedInfo();                  return true; +            }          }          return super.onOptionsItemSelected(item);      } +    private void showAdvancedInfo() { +        String signature = null; +        // advanced info: package signature SHA-256 +        try { +            MessageDigest md = MessageDigest.getInstance("SHA-256"); +            md.update(mAppSettings.getPackageSignature()); +            byte[] digest = md.digest(); +            signature = new String(Hex.encode(digest)); +        } catch (NoSuchAlgorithmException e) { +            Log.e(Constants.TAG, "Should not happen!", e); +        } + +        AdvancedAppSettingsDialogFragment dialogFragment = +                AdvancedAppSettingsDialogFragment.newInstance(mAppSettings.getPackageName(), signature); + +        dialogFragment.show(getSupportFragmentManager(), "advancedDialog"); +    } +      private void startApp() {          Intent i;          PackageManager manager = getPackageManager(); @@ -175,21 +202,6 @@ public class AppSettingsActivity extends BaseActivity {          mAppNameView.setText(appName);          mAppIconView.setImageDrawable(appIcon); -        // advanced info: package name -        mPackageName.setText(mAppSettings.getPackageName()); - -        // advanced info: package signature SHA-256 -        try { -            MessageDigest md = MessageDigest.getInstance("SHA-256"); -            md.update(mAppSettings.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); -        } -          Uri accountsUri = appUri.buildUpon().appendPath(KeychainContract.PATH_ACCOUNTS).build();          Log.d(Constants.TAG, "accountsUri: " + accountsUri);          Uri allowedKeysUri = appUri.buildUpon().appendPath(KeychainContract.PATH_ALLOWED_KEYS).build(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AdvancedAppSettingsDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AdvancedAppSettingsDialogFragment.java new file mode 100644 index 000000000..d2fa37cf7 --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AdvancedAppSettingsDialogFragment.java @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2015 Dominik Schürmann <dominik@dominikschuermann.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ + +package org.sufficientlysecure.keychain.ui.dialog; + +import android.app.Dialog; +import android.content.DialogInterface; +import android.os.Bundle; +import android.support.v4.app.DialogFragment; +import android.support.v4.app.FragmentActivity; + +import org.sufficientlysecure.keychain.R; + +public class AdvancedAppSettingsDialogFragment extends DialogFragment { +    private static final String ARG_PACKAGE_NAME = "package_name"; +    private static final String ARG_SIGNATURE = "signature"; + +    /** +     * Creates new instance of this fragment +     */ +    public static AdvancedAppSettingsDialogFragment newInstance(String packageName, String digest) { +        AdvancedAppSettingsDialogFragment frag = new AdvancedAppSettingsDialogFragment(); +        Bundle args = new Bundle(); +        args.putString(ARG_PACKAGE_NAME, packageName); +        args.putString(ARG_SIGNATURE, digest); + +        frag.setArguments(args); +        return frag; +    } + +    /** +     * Creates dialog +     */ +    @Override +    public Dialog onCreateDialog(Bundle savedInstanceState) { +        final FragmentActivity activity = getActivity(); + +        CustomAlertDialogBuilder alert = new CustomAlertDialogBuilder(activity); + +        alert.setTitle(R.string.api_settings_advanced); +        alert.setCancelable(true); + +        alert.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { +            @Override +            public void onClick(DialogInterface dialog, int id) { +                dismiss(); +            } +        }); + +        String packageName = getArguments().getString(ARG_PACKAGE_NAME); +        String signature = getArguments().getString(ARG_SIGNATURE); + +        alert.setMessage(getString(R.string.api_settings_package_name) + ": " + packageName + "\n\n" +                + getString(R.string.api_settings_package_signature) + ": " + signature); + +        return alert.show(); +    } +} diff --git a/OpenKeychain/src/main/res/layout/api_app_settings_activity.xml b/OpenKeychain/src/main/res/layout/api_app_settings_activity.xml index 253836080..6df5c84f5 100644 --- a/OpenKeychain/src/main/res/layout/api_app_settings_activity.xml +++ b/OpenKeychain/src/main/res/layout/api_app_settings_activity.xml @@ -103,47 +103,6 @@                      android:layout_height="match_parent"                      android:orientation="vertical" /> -                <TextView -                    style="@style/SectionHeader" -                    android:layout_width="match_parent" -                    android:layout_height="wrap_content" -                    android:text="@string/api_settings_advanced" /> - -                <org.sufficientlysecure.keychain.ui.widget.FoldableLinearLayout -                    android:layout_width="match_parent" -                    android:layout_height="match_parent" -                    android:textColor="@color/icons" -                    custom:foldedLabel="@string/api_settings_show_info" -                    custom:unFoldedLabel="@string/api_settings_hide_info"> - -                    <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_app_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_app_settings_package_signature" -                        android:layout_width="match_parent" -                        android:layout_height="wrap_content" -                        android:text="Base64 encoded hash of signature" -                        android:textAppearance="?android:attr/textAppearanceSmall" /> - -                </org.sufficientlysecure.keychain.ui.widget.FoldableLinearLayout> -              </LinearLayout>          </ScrollView>      </LinearLayout> diff --git a/OpenKeychain/src/main/res/menu/api_app_settings.xml b/OpenKeychain/src/main/res/menu/api_app_settings.xml index 4b4fc39e8..5ac340550 100644 --- a/OpenKeychain/src/main/res/menu/api_app_settings.xml +++ b/OpenKeychain/src/main/res/menu/api_app_settings.xml @@ -12,4 +12,9 @@          android:title="@string/api_settings_revoke"          app:showAsAction="never" /> +    <item +        android:id="@+id/menu_api_settings_advanced" +        android:title="@string/api_settings_advanced" +        app:showAsAction="never" /> +  </menu>
\ No newline at end of file  | 
