diff options
| author | Dominik Schürmann <dominik@dominikschuermann.de> | 2013-09-05 21:25:49 +0200 | 
|---|---|---|
| committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2013-09-05 21:25:49 +0200 | 
| commit | 00d03d452ecde61cd6fe29eeadbf7a3d2e9050e5 (patch) | |
| tree | 15bdee44c2703d467317e46958e974589fd886dc /OpenPGP-Keychain | |
| parent | 8614ff2ec74447f7199a5822f9331a0991161038 (diff) | |
| download | open-keychain-00d03d452ecde61cd6fe29eeadbf7a3d2e9050e5.tar.gz open-keychain-00d03d452ecde61cd6fe29eeadbf7a3d2e9050e5.tar.bz2 open-keychain-00d03d452ecde61cd6fe29eeadbf7a3d2e9050e5.zip | |
Include DoneBar for edit activities
Diffstat (limited to 'OpenPGP-Keychain')
14 files changed, 194 insertions, 46 deletions
| diff --git a/OpenPGP-Keychain/res/drawable-hdpi/ic_action_cancel.png b/OpenPGP-Keychain/res/drawable-hdpi/ic_action_cancel.pngBinary files differ new file mode 100644 index 000000000..cde36e1fa --- /dev/null +++ b/OpenPGP-Keychain/res/drawable-hdpi/ic_action_cancel.png diff --git a/OpenPGP-Keychain/res/drawable-hdpi/ic_action_done.png b/OpenPGP-Keychain/res/drawable-hdpi/ic_action_done.pngBinary files differ new file mode 100644 index 000000000..58bf97217 --- /dev/null +++ b/OpenPGP-Keychain/res/drawable-hdpi/ic_action_done.png diff --git a/OpenPGP-Keychain/res/drawable-mdpi/ic_action_cancel.png b/OpenPGP-Keychain/res/drawable-mdpi/ic_action_cancel.pngBinary files differ new file mode 100644 index 000000000..9f4c3d6a2 --- /dev/null +++ b/OpenPGP-Keychain/res/drawable-mdpi/ic_action_cancel.png diff --git a/OpenPGP-Keychain/res/drawable-mdpi/ic_action_done.png b/OpenPGP-Keychain/res/drawable-mdpi/ic_action_done.pngBinary files differ new file mode 100644 index 000000000..cf5fab3ad --- /dev/null +++ b/OpenPGP-Keychain/res/drawable-mdpi/ic_action_done.png diff --git a/OpenPGP-Keychain/res/drawable-xhdpi/ic_action_cancel.png b/OpenPGP-Keychain/res/drawable-xhdpi/ic_action_cancel.pngBinary files differ new file mode 100644 index 000000000..ca7d159fd --- /dev/null +++ b/OpenPGP-Keychain/res/drawable-xhdpi/ic_action_cancel.png diff --git a/OpenPGP-Keychain/res/drawable-xhdpi/ic_action_done.png b/OpenPGP-Keychain/res/drawable-xhdpi/ic_action_done.pngBinary files differ new file mode 100644 index 000000000..b8915716e --- /dev/null +++ b/OpenPGP-Keychain/res/drawable-xhdpi/ic_action_done.png diff --git a/OpenPGP-Keychain/res/layout/actionbar_custom_view_done.xml b/OpenPGP-Keychain/res/layout/actionbar_custom_view_done.xml new file mode 100644 index 000000000..bcbb5f5c1 --- /dev/null +++ b/OpenPGP-Keychain/res/layout/actionbar_custom_view_done.xml @@ -0,0 +1,27 @@ +<!-- +      Copyright 2013 The Android Open Source Project + +      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. +--> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" +    android:layout_width="match_parent" +    android:layout_height="match_parent" +    android:divider="@drawable/abs__list_divider_holo_light" +    android:dividerPadding="12dp" +    android:orientation="horizontal" +    android:showDividers="end" > + +    <include layout="@layout/actionbar_include_done_button" /> + +</LinearLayout>
\ No newline at end of file diff --git a/OpenPGP-Keychain/res/layout/actionbar_custom_view_done_cancel.xml b/OpenPGP-Keychain/res/layout/actionbar_custom_view_done_cancel.xml new file mode 100644 index 000000000..8c8428e75 --- /dev/null +++ b/OpenPGP-Keychain/res/layout/actionbar_custom_view_done_cancel.xml @@ -0,0 +1,29 @@ +<!-- +      Copyright 2013 The Android Open Source Project + +      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. +--> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" +    android:layout_width="match_parent" +    android:layout_height="match_parent" +    android:divider="@drawable/abs__list_divider_holo_light" +    android:dividerPadding="12dp" +    android:orientation="horizontal" +    android:showDividers="middle" > + +    <include layout="@layout/actionbar_include_cancel_button" /> + +    <include layout="@layout/actionbar_include_done_button" /> + +</LinearLayout>
\ No newline at end of file diff --git a/OpenPGP-Keychain/res/layout/actionbar_include_cancel_button.xml b/OpenPGP-Keychain/res/layout/actionbar_include_cancel_button.xml new file mode 100644 index 000000000..0f0521d3c --- /dev/null +++ b/OpenPGP-Keychain/res/layout/actionbar_include_cancel_button.xml @@ -0,0 +1,36 @@ +<!-- +      Copyright 2013 The Android Open Source Project + +      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. +--> + +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" +    android:id="@+id/actionbar_cancel" +    style="@style/Widget.Sherlock.ActionButton" +    android:layout_width="0dp" +    android:layout_height="match_parent" +    android:layout_weight="1" > + +    <TextView +        android:id="@+id/actionbar_cancel_text" +        style="@style/Widget.Sherlock.ActionBar.TabText" +        android:layout_width="wrap_content" +        android:layout_height="wrap_content" +        android:layout_gravity="center" +        android:drawableLeft="@drawable/ic_action_cancel" +        android:drawablePadding="8dp" +        android:gravity="center_vertical" +        android:paddingRight="20dp" +        android:text="Cancel (set in-code!)" /> + +</FrameLayout>
\ No newline at end of file diff --git a/OpenPGP-Keychain/res/layout/actionbar_include_done_button.xml b/OpenPGP-Keychain/res/layout/actionbar_include_done_button.xml new file mode 100644 index 000000000..e14853be3 --- /dev/null +++ b/OpenPGP-Keychain/res/layout/actionbar_include_done_button.xml @@ -0,0 +1,36 @@ +<!-- +      Copyright 2013 The Android Open Source Project + +      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. +--> + +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" +    android:id="@+id/actionbar_done" +    style="@style/Widget.Sherlock.ActionButton" +    android:layout_width="0dp" +    android:layout_height="match_parent" +    android:layout_weight="1" > + +    <TextView +        android:id="@+id/actionbar_done_text" +        style="@style/Widget.Sherlock.ActionBar.TabText" +        android:layout_width="wrap_content" +        android:layout_height="wrap_content" +        android:layout_gravity="center" +        android:drawableLeft="@drawable/ic_action_done" +        android:drawablePadding="8dp" +        android:gravity="center_vertical" +        android:paddingRight="20dp" +        android:text="Save (set in-code!)" /> + +</FrameLayout>
\ No newline at end of file diff --git a/OpenPGP-Keychain/res/layout/api_app_settings_activity.xml b/OpenPGP-Keychain/res/layout/api_app_settings_activity.xml index b5e6e46ae..3157a3f09 100644 --- a/OpenPGP-Keychain/res/layout/api_app_settings_activity.xml +++ b/OpenPGP-Keychain/res/layout/api_app_settings_activity.xml @@ -1,10 +1,8 @@  <?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"      xmlns:tools="http://schemas.android.com/tools" -    android:padding="8dp"      android:layout_width="fill_parent" -    android:layout_height="fill_parent" -    android:orientation="vertical" > +    android:layout_height="fill_parent" >      <fragment          android:id="@+id/api_app_settings_fragment" @@ -13,25 +11,4 @@          android:layout_height="wrap_content"          tools:layout="@layout/api_app_settings_fragment" /> -    <LinearLayout -        android:layout_width="fill_parent" -        android:layout_height="wrap_content" -        android:orientation="horizontal" -        android:paddingBottom="3dip" > - -        <Button -            android:id="@+id/api_app_settings_revoke" -            android:layout_width="wrap_content" -            android:layout_height="wrap_content" -            android:layout_weight="1" -            android:text="@string/api_settings_revoke" /> - -        <Button -            android:id="@+id/api_app_settings_save" -            android:layout_width="wrap_content" -            android:layout_height="wrap_content" -            android:layout_weight="1" -            android:text="@string/api_settings_save" /> -    </LinearLayout> - -</LinearLayout>
\ No newline at end of file +</RelativeLayout>
\ No newline at end of file diff --git a/OpenPGP-Keychain/res/menu/api_app_settings.xml b/OpenPGP-Keychain/res/menu/api_app_settings.xml new file mode 100644 index 000000000..1ee05f5de --- /dev/null +++ b/OpenPGP-Keychain/res/menu/api_app_settings.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" > + +    <item +        android:id="@+id/menu_api_settings_revoke" +        android:showAsAction="never" +        android:title="@string/api_settings_revoke"/> +    <item +        android:id="@+id/menu_api_settings_cancel" +        android:showAsAction="never" +        android:title="@string/api_settings_cancel"/> + +</menu>
\ No newline at end of file diff --git a/OpenPGP-Keychain/res/values/strings.xml b/OpenPGP-Keychain/res/values/strings.xml index d6253ea57..5aa4081fb 100644 --- a/OpenPGP-Keychain/res/values/strings.xml +++ b/OpenPGP-Keychain/res/values/strings.xml @@ -368,6 +368,7 @@      <string name="api_settings_no_key">No key selected</string>      <string name="api_settings_select_key">Select key</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_register_text">%1$s (%2$s) requests access to OpenPGP Keychain\'s API.\n\nAllow permanent access?</string>      <string name="api_register_allow">Allow access</string> diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsActivity.java index 6316dbc38..0cfbbe3fc 100644 --- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsActivity.java +++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsActivity.java @@ -5,7 +5,6 @@ import org.sufficientlysecure.keychain.R;  import org.sufficientlysecure.keychain.provider.KeychainContract;  import org.sufficientlysecure.keychain.util.Log; -import android.content.ContentUris;  import android.content.ContentValues;  import android.content.Intent;  import android.content.pm.ApplicationInfo; @@ -14,13 +13,16 @@ import android.content.pm.PackageManager.NameNotFoundException;  import android.database.Cursor;  import android.net.Uri;  import android.os.Bundle; +import android.view.LayoutInflater;  import android.view.View; -import android.view.View.OnClickListener;  import android.widget.Button;  import android.widget.CheckBox;  import android.widget.TextView; +import com.actionbarsherlock.app.ActionBar;  import com.actionbarsherlock.app.SherlockFragmentActivity; +import com.actionbarsherlock.view.Menu; +import com.actionbarsherlock.view.MenuItem;  public class AppSettingsActivity extends SherlockFragmentActivity {      private PackageManager pm; @@ -46,28 +48,36 @@ public class AppSettingsActivity extends SherlockFragmentActivity {          pm = getApplicationContext().getPackageManager(); +        // BEGIN_INCLUDE (inflate_set_custom_view) +        // Inflate a "Done" custom action bar view to serve as the "Up" affordance. +        final LayoutInflater inflater = (LayoutInflater) getSupportActionBar().getThemedContext() +                .getSystemService(LAYOUT_INFLATER_SERVICE); +        final View customActionBarView = inflater +                .inflate(R.layout.actionbar_custom_view_done, null); + +        ((TextView) customActionBarView.findViewById(R.id.actionbar_done_text)) +                .setText(R.string.api_settings_save); +        customActionBarView.findViewById(R.id.actionbar_done).setOnClickListener( +                new View.OnClickListener() { +                    @Override +                    public void onClick(View v) { +                        // "Done" +                        save(); +                    } +                }); + +        // Show the custom action bar view and hide the normal Home icon and title. +        final ActionBar actionBar = getSupportActionBar(); +        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM +                | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE); +        actionBar.setCustomView(customActionBarView); +        // END_INCLUDE (inflate_set_custom_view) +          setContentView(R.layout.api_app_settings_activity);          selectedKey = (TextView) findViewById(R.id.api_app_settings_selected_key);          selectKeyButton = (Button) findViewById(R.id.api_app_settings_select_key_button);          asciiArmorCheckBox = (CheckBox) findViewById(R.id.api_app_ascii_armor); -        revokeButton = (Button) findViewById(R.id.api_app_settings_revoke); -        saveButton = (Button) findViewById(R.id.api_app_settings_save); - -        revokeButton.setOnClickListener(new OnClickListener() { - -            @Override -            public void onClick(View v) { -                revokeAccess(); -            } -        }); -        saveButton.setOnClickListener(new OnClickListener() { - -            @Override -            public void onClick(View v) { -                save(); -            } -        });          Intent intent = getIntent();          appUri = intent.getData(); @@ -81,6 +91,26 @@ public class AppSettingsActivity extends SherlockFragmentActivity {          }      } +    @Override +    public boolean onCreateOptionsMenu(Menu menu) { +        super.onCreateOptionsMenu(menu); +        getSupportMenuInflater().inflate(R.menu.api_app_settings, menu); +        return true; +    } + +    @Override +    public boolean onOptionsItemSelected(MenuItem item) { +        switch (item.getItemId()) { +        case R.id.menu_api_settings_revoke: +            revokeAccess(); +            return true; +        case R.id.menu_api_settings_cancel: +            finish(); +            return true; +        } +        return super.onOptionsItemSelected(item); +    } +      private void loadData(Uri appUri) {          Cursor cur = getContentResolver().query(appUri, null, null, null, null);          if (cur.moveToFirst()) { @@ -114,7 +144,6 @@ public class AppSettingsActivity extends SherlockFragmentActivity {      }      private void save() { -        Log.d(Constants.TAG, "saving");          final ContentValues cv = new ContentValues();          // cv.put(KeychainContract.ApiApps.PACKAGE_NAME, packageName);          cv.put(KeychainContract.ApiApps.ASCII_ARMOR, asciiArmorCheckBox.isChecked()); | 
