diff options
| author | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-06-30 17:14:12 +0200 | 
|---|---|---|
| committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-06-30 17:14:12 +0200 | 
| commit | 715188ccdaf9659aec2fec348505cd7675b62f52 (patch) | |
| tree | f3b5d0a0d2deb82b90c85edfe36b77bf1e6f7e18 /OpenKeychain | |
| parent | 04d7e3f155e182b0abaebd9a37b43634a20e3ebf (diff) | |
| download | open-keychain-715188ccdaf9659aec2fec348505cd7675b62f52.tar.gz open-keychain-715188ccdaf9659aec2fec348505cd7675b62f52.tar.bz2 open-keychain-715188ccdaf9659aec2fec348505cd7675b62f52.zip | |
Better settings workarounds
Diffstat (limited to 'OpenKeychain')
| -rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/compatibility/AppCompatPreferenceActivity.java | 127 | ||||
| -rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java | 7 | ||||
| -rw-r--r-- | OpenKeychain/src/main/res/layout/preference_toolbar.xml (renamed from OpenKeychain/src/main/res/layout/preference_toolbar_activity.xml) | 5 | 
3 files changed, 134 insertions, 5 deletions
| diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/compatibility/AppCompatPreferenceActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/compatibility/AppCompatPreferenceActivity.java new file mode 100644 index 000000000..5200b8ced --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/compatibility/AppCompatPreferenceActivity.java @@ -0,0 +1,127 @@ + +/* + * Copyright (C) 2014 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. + */ +package org.sufficientlysecure.keychain.compatibility; + +import android.content.res.Configuration; +import android.os.Bundle; +import android.preference.PreferenceActivity; +import android.support.annotation.LayoutRes; +import android.support.annotation.Nullable; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatDelegate; +import android.support.v7.widget.Toolbar; +import android.view.MenuInflater; +import android.view.View; +import android.view.ViewGroup; + +/** + * A {@link android.preference.PreferenceActivity} which implements and proxies the necessary calls + * to be used with AppCompat. + * <p/> + * This technique can be used with an {@link android.app.Activity} class, not just + * {@link android.preference.PreferenceActivity}. + */ +public abstract class AppCompatPreferenceActivity extends PreferenceActivity { +    private AppCompatDelegate mDelegate; + +    @Override +    protected void onCreate(Bundle savedInstanceState) { +        getDelegate().installViewFactory(); +        getDelegate().onCreate(savedInstanceState); +        super.onCreate(savedInstanceState); +    } + +    @Override +    protected void onPostCreate(Bundle savedInstanceState) { +        super.onPostCreate(savedInstanceState); +        getDelegate().onPostCreate(savedInstanceState); +    } + +    public ActionBar getSupportActionBar() { +        return getDelegate().getSupportActionBar(); +    } + +    public void setSupportActionBar(@Nullable Toolbar toolbar) { +        getDelegate().setSupportActionBar(toolbar); +    } + +    @Override +    public MenuInflater getMenuInflater() { +        return getDelegate().getMenuInflater(); +    } + +    @Override +    public void setContentView(@LayoutRes int layoutResID) { +        getDelegate().setContentView(layoutResID); +    } + +    @Override +    public void setContentView(View view) { +        getDelegate().setContentView(view); +    } + +    @Override +    public void setContentView(View view, ViewGroup.LayoutParams params) { +        getDelegate().setContentView(view, params); +    } + +    @Override +    public void addContentView(View view, ViewGroup.LayoutParams params) { +        getDelegate().addContentView(view, params); +    } + +    @Override +    protected void onPostResume() { +        super.onPostResume(); +        getDelegate().onPostResume(); +    } + +    @Override +    protected void onTitleChanged(CharSequence title, int color) { +        super.onTitleChanged(title, color); +        getDelegate().setTitle(title); +    } + +    @Override +    public void onConfigurationChanged(Configuration newConfig) { +        super.onConfigurationChanged(newConfig); +        getDelegate().onConfigurationChanged(newConfig); +    } + +    @Override +    protected void onStop() { +        super.onStop(); +        getDelegate().onStop(); +    } + +    @Override +    protected void onDestroy() { +        super.onDestroy(); +        getDelegate().onDestroy(); +    } + +    public void invalidateOptionsMenu() { +        getDelegate().invalidateOptionsMenu(); +    } + +    private AppCompatDelegate getDelegate() { +        if (mDelegate == null) { +            mDelegate = AppCompatDelegate.create(this, null); +        } +        return mDelegate; +    } +}
\ No newline at end of file diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java index 71f07d785..a552e1c55 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java @@ -23,7 +23,6 @@ import android.content.Intent;  import android.os.Bundle;  import android.preference.CheckBoxPreference;  import android.preference.Preference; -import android.preference.PreferenceActivity;  import android.preference.PreferenceFragment;  import android.preference.PreferenceScreen;  import android.support.v7.widget.Toolbar; @@ -33,12 +32,13 @@ import android.widget.LinearLayout;  import org.sufficientlysecure.keychain.Constants;  import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.compatibility.AppCompatPreferenceActivity;  import org.sufficientlysecure.keychain.ui.widget.IntegerListPreference;  import org.sufficientlysecure.keychain.util.Preferences;  import java.util.List; -public class SettingsActivity extends PreferenceActivity { +public class SettingsActivity extends AppCompatPreferenceActivity {      public static final String ACTION_PREFS_CLOUD = "org.sufficientlysecure.keychain.ui.PREFS_CLOUD";      public static final String ACTION_PREFS_ADV = "org.sufficientlysecure.keychain.ui.PREFS_ADV"; @@ -104,13 +104,14 @@ public class SettingsActivity extends PreferenceActivity {      private void setupToolbar() {          ViewGroup root = (ViewGroup) findViewById(android.R.id.content);          LinearLayout content = (LinearLayout) root.getChildAt(0); -        LinearLayout toolbarContainer = (LinearLayout) View.inflate(this, R.layout.preference_toolbar_activity, null); +        LinearLayout toolbarContainer = (LinearLayout) View.inflate(this, R.layout.preference_toolbar, null);          root.removeAllViews();          toolbarContainer.addView(content);          root.addView(toolbarContainer);          Toolbar toolbar = (Toolbar) toolbarContainer.findViewById(R.id.toolbar); +          toolbar.setTitle(R.string.title_preferences);          toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_white_24dp));          toolbar.setNavigationOnClickListener(new View.OnClickListener() { diff --git a/OpenKeychain/src/main/res/layout/preference_toolbar_activity.xml b/OpenKeychain/src/main/res/layout/preference_toolbar.xml index f17bc30bc..2f54b954e 100644 --- a/OpenKeychain/src/main/res/layout/preference_toolbar_activity.xml +++ b/OpenKeychain/src/main/res/layout/preference_toolbar.xml @@ -1,7 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" -    android:orientation="vertical"      android:layout_width="match_parent" -    android:layout_height="match_parent"> +    android:layout_height="match_parent" +    android:orientation="vertical">      <include          android:id="@+id/toolbar_include" | 
