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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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()); |