Commit Graph

105 Commits

Author SHA1 Message Date
Mathias Jeppsson
1560003d4a Fixing memory leak in PreferenceScreen.
Every time the PreferenceScreen is displayed a new ListView is
created and bound to the adapter. As the same adapter is used during
the lifetime of PreferenceScreen and the listviews never gets
unbound, the adapter will contain a list of unused views. The old view
should be unbound from adapter when we create a new view.

Change-Id: I13e2d0dc79c8ff79b58efa650653e3f84c6e53c5
2011-01-18 13:20:34 -08:00
Dianne Hackborn
327fbd2c8f Fix a bunch of API review bugs.
3362464 API REVIEW: android.content potpourri
3362445 API REVIEW: Fragment transaction stuff
3362428 API REVIEW: Fragment stuff
3362418 API REVIEW: Loader stuff
3362414 API REVIEW: android.content.pm.ActivityInfo

Change-Id: I6475421a4735759b458acb67df4380cc6234f147
2011-01-17 16:23:42 -08:00
Dianne Hackborn
db7f38673c Merge "Start renaming FragmentTransaction.openTransaction() to beginTransaction()." into honeycomb 2011-01-17 12:33:50 -08:00
Dianne Hackborn
48e7b45869 Start renaming FragmentTransaction.openTransaction() to beginTransaction().
Change-Id: Ib4a6d824b33cca699b7b25159c491fb610d5f5da
2011-01-17 12:28:35 -08:00
Amith Yamasani
e494662c99 Add back legacy layout for preference framework for compatibility.
Bug: 3184831

Copied holo layouts to *_holo.xml and restored the old layouts for
non-holo (pre-honeycomb) apps to use so that their layout assumptions
aren't messed up.

Change-Id: If4dcef16191a47a4b101da6bfb0c2df1757d1ae4
2011-01-16 17:19:08 -08:00
Amith Yamasani
c9ecb73ccd Add a way to insert a parent bread crumb so that deep linked settings can navigate up.
Bug: 3236568

This adds a way to insert a title as well as get a callback when that title is clicked.
It is not really on the backstack and clicks must be handled via the listener interface.
2010-12-14 15:17:32 -08:00
Amith Yamasani
3e86040439 Potential fix for Settings screen ClassCast exception on the phone.
Bug: 3273396
Change-Id: I92477dc8d5e864027923c52545069710dff3575a
2010-12-10 14:23:39 -08:00
Amith Yamasani
74402cfe4e Remove the OnItemClick listener when the fragment is destroyed.
Bug: 3228510

This probably fixes a lot of other monkey bugs in Settings.
2010-12-09 11:22:15 -08:00
Amith Yamasani
3c9f519f89 Move the breadcrumbs to the right pane.
Bug: 3236568
2010-12-08 23:44:38 -08:00
Jim Miller
c57406cdfa Fix 3148496: Update PreferenceActivity to handle single-pane fragments.
This fixes a couple of bugs I found while updating SecuritySettings.

Change-Id: I9881cff71799ddf3c1d1493c2f7f3bfb31ca7774
2010-12-08 16:33:34 -08:00
Dianne Hackborn
9d0718042f Fix issues #3257701 and #3267312
3257701 Preference headers have duplicated "title" and "summary" if
        title is not loaded from a resource
3267312 Fragment.onConfigurationChanged doesn't get called

Change-Id: I76e346ba88aa632ebb9aa413a2ce2645ebf357cd
2010-12-08 14:52:58 -08:00
Adam Powell
7e06ea80f7 Fix bug 3245210 - Bad window style for action modes for light holo dialog theme
Also fixed some issues with the overlay action mode window styles.

Change-Id: Ie4cf43f6ccf720ef0090ca8bd667fb6d78152f93
2010-12-05 18:29:10 -08:00
Dianne Hackborn
50ed8294d3 Fix issue #3201066: Locale change not reflected by settings
Change-Id: I356c7ec021df7a20f52017e0630d341230ea349f
2010-12-03 16:38:25 -08:00
Mindy Pereira
8b2fb60cd4 Preference changes to layouts.
Change-Id: I37366c3465aa1d8d2bd30fb6ae4b821f5f2d5e2d
Additional changes to make the left and right padding
behave the same way as the top and bottom padding.
That is, our default pref screens will automatically
apply the padding and clipToPadding tags. Custom preference
screens will appear as before.
Uses LayoutParams now instead of a specific id.
2010-11-30 13:57:58 -08:00
Mindy Pereira
35c8be0655 Use getDimensionPixel size instead of casting to an int.
Change-Id: I907c8be25bd4cf0fefc2bb4e0282db2d136da099
2010-11-24 15:28:07 -08:00
Mindy Pereira
2266b92072 Create logic for applying padding only to custom preference layouts
n the case of any standard PreferenceFragment layout, we can
change the list styling to add padding and set clipToPadding to false.
In this case, we don't want extra padding in the parent ViewGroup
(R.id.prefs).
When an app specifies a custom preference fragment layout, we want
to add the previously existing padding styles R.id.prefs.

Change-Id: Idfd77dcbef264c6f5f4121b66fd54c684ad0a288
2010-11-23 14:47:52 -08:00
Amith Yamasani
b65897ba50 Adjust preference activity margins and move the widget back to the right side.
Add a new "icon" field to Preference for adding icons to the left of the preference title.
Several screens such as BluetoothSettings and Accounts have added their own custom preferences
just to add an icon to the left. This makes it simpler going forward.
2010-11-17 15:34:45 -08:00
Dianne Hackborn
3a57fb9e9c Fix issue #3191573: PreferenceFragment.onActivityResult cannot
launch a new fragment on the same call.

There were some problems with the API design where you could do
things in such a way that a back stack entry that was not at the
top would get popped.  Ouch.  Hopefully this change prevents that
from being able to happen.

Change-Id: I8cbc952e12ddd231ff6c84b6e9bbf5125f449f04
2010-11-16 10:50:31 -08:00
Amith Yamasani
8bda1c1ef7 am f8d2aff4: am db65907a: Merge "Adding pan behavior on preference dialog."
* commit 'f8d2aff41d347e029c9c0b1f51f20c92cd1cce8e':
  Adding pan behavior on preference dialog.
2010-11-11 09:10:51 -08:00
Amith Yamasani
f8d2aff41d am db65907a: Merge "Adding pan behavior on preference dialog."
* commit 'db65907a2148f053e51f941979f0f7694acd5923':
  Adding pan behavior on preference dialog.
2010-11-11 09:06:02 -08:00
Dianne Hackborn
ab36acb399 Fixe some stuff.
Addresses these bugs:

3061847 - With no headers, PreferenceActivity crashes
2888426 - minor typo in DevicePolicyManagerService.ActiveAdmin.writeToXml()
3159155 - IllegalStateException:"Can not perform this action after
    onSaveInstanceState" while dismissing a DialogFragment
3155995 - PopupWindow.showAtLocation does not respect LayoutParams

Also tweak the new fragment APIs to use abstract classes instead of
interfaces as base classes.

Change-Id: I9c0b4337fe0e304b737b5f7c2762762372bb3020
2010-11-08 10:46:19 -08:00
Amith Yamasani
8da3529069 Added assets for preference panel and adjusted layout margins for new spec. 2010-11-07 16:46:24 -08:00
Andrew Stadler
83681eb600 Avoid NPE when reloading headers in single-pane mode
Change-Id: I696102b371566872ab1e6dca7281015da534b83f
2010-11-04 15:49:05 -07:00
Jeff Brown
b0418da0e7 Add plumbing for volume mute key.
Full support for the volume mute key will be implemented in a
later change.

Bug: 2912307
Change-Id: I98c27d6360f159c8b7447e04b45f442eff87b38a
2010-11-02 17:31:39 -07:00
Dianne Hackborn
8eb2e244f9 Various PreferenceActivity and related improvement.
This is all about making the preferences implementation better.

Well, mostly all about that.

Change-Id: I8efa98cb5680f3ccfa3ed694a1586de3fb3a9e11
2010-11-01 14:48:34 -07:00
Amith Yamasani
f5cbaeda14 No animation when tapping on current header in a preference screen.
Bug: 3125427
2010-10-27 16:31:05 -07:00
Amith Yamasani
27da0bf0a3 Fix sub-header height to follow drawable. Floating panels for Preference screens. 2010-10-27 11:03:22 -07:00
Peter Eliasson
f313b9e841 Adding pan behavior on preference dialog.
Changed the preference dialog with text input to pan if
the display area is limited. This helps the user to see
the input better.

Change-Id: I12341546f6f82601ac5a2746153255a9b2d49a1c
2010-10-25 14:33:06 +02:00
Brad Fitzpatrick
d532d8d8c1 am ca1db5ae: am dd644c17: Fallback to SharedPreferences.commit() when no apply() exists.
Merge commit 'ca1db5ae68971779fd8af83c908128849f470ae0'

* commit 'ca1db5ae68971779fd8af83c908128849f470ae0':
  Fallback to SharedPreferences$Editor.commit() when no apply() exists.
2010-10-11 17:43:06 -07:00
Brad Fitzpatrick
ca1db5ae68 am dd644c17: Fallback to SharedPreferences.commit() when no apply() exists.
Merge commit 'dd644c179c1bf47d82d776d7f644e4fc1467159d' into gingerbread-plus-aosp

* commit 'dd644c179c1bf47d82d776d7f644e4fc1467159d':
  Fallback to SharedPreferences$Editor.commit() when no apply() exists.
2010-10-10 15:30:55 -07:00
Brad Fitzpatrick
dd644c179c Fallback to SharedPreferences$Editor.commit() when no apply() exists.
Gingerbread widened the SharedPreferences.Editor interface, adding an
apply() method.  Most people don't implement this interface
themselves, but a couple apps do.

A few spots in the core framework take a SharedPreferences[.Editor]
from apps, which might be a pre-Gingerbread implementation without an
apply() method.  This patch makes sure we never depend on the presence
of an apply() method, falling back to commit() if apply() isn't
available.

Change-Id: I32693ac9227a60b694526a26a30234fb17a40581
2010-10-10 15:26:24 -07:00
Chet Haase
9ff82bf2b3 Adding next/prev to fragment animations and to PreferenceActivity
Adding a new concept of "next" and "previous" to fragment.s Previously, fragments would
either be placed onto or taken off of the stack, or would just replace the current
fragment. The new next/prev capability gives the ability to run a transition that is
specific to next/previous operations, such as navigating forward and backward in a list.
New next/prev animations may be associated with a fragment replace operation to get the
next/prev animations built into the system (next animates things up, prev animates them
down).

Change-Id: Ia9f3663bac009376420d845b396ac51b8e4d1647
2010-10-05 15:13:24 -07:00
Amith Yamasani
05fbc31ed9 Make the headers pane disappear in no-headers mode, not just the ListView. 2010-09-26 13:29:01 -07:00
Amith Yamasani
82e7bc1134 Fix for Ringtones not being saved when using Preference fragments.
Bug: 2988732

RingtonePreference was calling startActivityForResult on Activity instead
of on Fragment, so the result was not being delivered to the fragment.

Setting a fragment owner on the PreferenceManager instance so that it can
be used instead of getActivity() for launching the intent.

Not exposing any new public APIs at this time.
2010-09-23 15:14:59 -07:00
Amith Yamasani
ed13cde1de Fix attribute parsing of PreferenceHeader_id 2010-09-17 16:59:26 -07:00
Dianne Hackborn
c6669ca632 Add API for showing breadcrumbs of fragment back stack.
This adds a simple API to have your back stack automatically
shown as bread crumbs in the action bar.  Introduces some APIs
to retrieve the current back stack.

Also fix a little bug in the "activated" state where it was
being propagated down the hierarchy as "selected". :p  And from
that, fix the standard colors to be reasonable when in the
activated state.

Finally PreferenceActivity is updated to take advantage of
bread crumbs to show your place in the preferences.

Change-Id: I9d633bedf8d7c6e4ed9b25cb9698faa66c7dd9a4
2010-09-16 18:36:04 -07:00
Dianne Hackborn
d0fa371f27 Add a new "activated" state to View.
Use this in ListView and GridView if the top view is not checkable.

This allows PreferenceActivity to now highlight the current heading
that is being shown.

Change-Id: I0d28aded9a61a42962b4aece420ae4058712d963
2010-09-15 11:00:44 -07:00
Dianne Hackborn
a21e3da559 Fix issue #2967969: Crash rotating screen on "delete account" dialog
- Have PreferenceActivity save and restore its header state.
- Keep track of the current header selection.
- When headers are updated, try to retain the current header selection.

Also fix issue #2995541: Cannot add new contact.  We were not allowing
fragment transactions in some cases.

Change-Id: I4aa4c703ed5f4ecf9f425cd7eeea4740c6360ce9
2010-09-13 22:49:54 -07:00
Dianne Hackborn
3e449ce00e Some fragment stuff:
Fix issue #2975886: Make getTargetFragment() survive rotation events with
retained fragments.  We now fix up the fragment pointer when restoring state.

Fix issue #2919928: In PreferenceFragment, addPreferencesFromResources() is
not effective when called after onActivityCreated().  Note to self: do not use
a what code of 0.  Maybe that should be documented (I'll do it in gingerbread).

Hopefully implement #2992753: DialogFragment.dismiss will NPE if called too soon
(before attached to activity).  We now keep track of the FragmentManager
separately from the activity, and set that as soon as the fragment is part of a
transaction.

Investigate issue #2988876: NPE when device orientation is changed.  The NPE is
because of the app trying to do a fragment transaction in onPause().  This is
fundamentally not viable, since (a) the activity will be gone before we ever
have a chance to process the message to commit the transaction, and (b) even if
we did try to commit the transaction earlier, this would be done after
onSaveInstanceState() and thus not work in cases where the activity gets killed
in the background.  So instead, we'll just throw an immediate exception if you
try to do this.

Change-Id: Iea62b50eb79f066af2471fce86836d073398f4f7
2010-09-12 17:10:04 -07:00
Brad Fitzpatrick
4f3c5589c8 am 9eb32c96: am a2f2141c: Merge "More SharedPreferences commit() -> apply() changes." into gingerbread
Merge commit '9eb32c96c872512c8aedc8627a4b96e9ea2a1a28'

* commit '9eb32c96c872512c8aedc8627a4b96e9ea2a1a28':
  More SharedPreferences commit() -> apply() changes.
2010-09-03 13:27:51 -07:00
Brad Fitzpatrick
9eb32c96c8 am a2f2141c: Merge "More SharedPreferences commit() -> apply() changes." into gingerbread
Merge commit 'a2f2141c84923e34e003bec92b7435ea79b02ee8' into gingerbread-plus-aosp

* commit 'a2f2141c84923e34e003bec92b7435ea79b02ee8':
  More SharedPreferences commit() -> apply() changes.
2010-09-03 12:49:44 -07:00
Brad Fitzpatrick
fa8e271636 More SharedPreferences commit() -> apply() changes.
Change-Id: Ibc844d72d463434722a349f5bbc02889a9feb0ee
2010-09-03 11:18:28 -07:00
Andrew Stadler
aa904f48cf Add startPreferenceFragment()
This allows sub-fragments to be started directly via API

Change-Id: I6c8b86a911c8731068459eb9cdd3d37970fc9d0e
2010-09-02 14:50:08 -07:00
Brad Fitzpatrick
02f4f0eb49 am 734d2707: am bb660d7e: Merge "Renaming SharedPreferences.startCommit to apply" into gingerbread
Merge commit '734d270769c609c7d3a1f2ec46e1d329d9682ab4'

* commit '734d270769c609c7d3a1f2ec46e1d329d9682ab4':
  Renaming SharedPreferences$Editor.startCommit to apply
2010-08-30 18:25:02 -07:00
Brad Fitzpatrick
734d270769 am bb660d7e: Merge "Renaming SharedPreferences.startCommit to apply" into gingerbread
Merge commit 'bb660d7e1bed3a07a1804bd9641d9634bfaa4972' into gingerbread-plus-aosp

* commit 'bb660d7e1bed3a07a1804bd9641d9634bfaa4972':
  Renaming SharedPreferences$Editor.startCommit to apply
2010-08-30 18:18:54 -07:00
Brad Fitzpatrick
66fce5068a Renaming SharedPreferences$Editor.startCommit to apply
Also removes the artifical restriction that only one apply() can be in
flight at once.  That was old from when I thought it'd end up being
required, but wasn't.

Change-Id: I3540ea8be6e0760d6a51d218186f71655c2f3f55
2010-08-30 18:10:49 -07:00
Brad Fitzpatrick
7f7ce40f90 resolved conflicts for merge of 28130bae to master
Change-Id: I13df8dc12092c3d2536e12216df9130d5914380a
2010-08-27 16:11:27 -07:00
Brad Fitzpatrick
28130baefb resolved conflicts for merge of 6b50986a to gingerbread-plus-aosp
Change-Id: I7c5ec7ae717e75ad242e2c1ad4537052e4eea718
2010-08-27 12:08:40 -07:00
Brad Fitzpatrick
333b8cba99 SharedPreferences$Editor.startCommit()
Adds a fire-and-forget save method (startCommit) to the
SharedPreferences.Editor, which is the way most people use it anyway.

This commit adds the implementation.  The previous commit added the
interface and docs:

   previous change: Idf9934b445da1fb72b79f0192218b47c0a7f5a34
        git commit: edf32d0131

In addition, this change:

-- adds a generic "runPendingWorkFinishers" mechanism to
   ActivityThread to wait on async operations that are still
   in flight and use it for this.

-- ties runPendingWorkFinishers into Activity.onPause,
   BroadcastReceiver, and Service.

-- makes sSharedPreferences keyed on name, not File, to avoid
   unnnecessary allocations

-- documents and guarantees what thread
   OnSharedPreferenceChangeListener callbacks run on

-- makes a few things in frameworks/base use startCommit(), notably
   Preference.java (which was ignoring the return value anyway)

Change-Id: I1c8db60ad45643226fe6d246d3e513eeb7bd0ebd
2010-08-27 09:10:11 -07:00
Dianne Hackborn
5c769a47ae Some new preferences features.
- You can add arbitrary stuff at the bottom of the header list.
- You can associated an intent with a header to have that launched
  when the header is clicked.
- You can change the current header when the header list is rebuilt
  after the first time.

Change-Id: I889512beff0c2902a790434e5cde9ce6df74d0c2
2010-08-26 17:43:49 -07:00