Skip to content

Commit b227f64

Browse files
authored
Merge branch 'develop'
2 parents a4eed83 + 28d659c commit b227f64

File tree

5 files changed

+71
-27
lines changed

5 files changed

+71
-27
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog
22

3+
**2018-07-04**
4+
5+
New version: 27.1.1.2 (based on v27.1.1)
6+
7+
- No support preferences related changes in the support library.
8+
- RingtonePreference bug fixes(#164, #165, #167).
9+
310
**2018-05-11**
411

512
New version: 27.1.1.1 (based on v27.1.1)

README.md

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ implementation 'com.android.support:preference-v14:27.1.1'
2323
```
2424
And **add** this single line to your gradle file:
2525
```gradle
26-
implementation 'com.takisoft.fix:preference-v7:27.1.1.1'
26+
implementation 'com.takisoft.fix:preference-v7:27.1.1.2'
2727
```
2828
> Notice the versioning: the first three numbers are *always* the same as the latest official library while the last number is for own updates. I try to keep it up-to-date but if, for whatever reasons, I wouldn't notice the new support library versions, just issue a ticket.
2929
@@ -92,18 +92,18 @@ Now you can enjoy using the support preferences API without losing all your hair
9292
There are additional preferences not part of the official support library, but decided to add them to some extra libraries. You can add all of them to your project using
9393

9494
```gradle
95-
implementation 'com.takisoft.fix:preference-v7-extras:27.1.1.1'
95+
implementation 'com.takisoft.fix:preference-v7-extras:27.1.1.2'
9696
```
9797

9898
or one or more groups:
9999

100100
Preference | Dependency | Preview
101101
-|-|-
102-
[`RingtonePreference`](https://github.com/Gericop/Android-Support-Preference-V7-Fix/wiki/Preference-types#ringtonepreference) | `compile 'com.takisoft.fix:preference-v7-ringtone:27.1.1.1'` | ![API 26](https://raw.githubusercontent.com/Gericop/Android-Support-Preference-V7-Fix/master/images/ringtone_api26.png)
103-
[`DatePickerPreference`](https://github.com/Gericop/Android-Support-Preference-V7-Fix/wiki/Preference-types#datepickerpreference) | `compile 'com.takisoft.fix:preference-v7-datetimepicker:27.1.1.1'` | ![API 26](https://raw.githubusercontent.com/Gericop/Android-Support-Preference-V7-Fix/master/images/datepicker_api26.png)
104-
[`TimePickerPreference`](https://github.com/Gericop/Android-Support-Preference-V7-Fix/wiki/Preference-types#timepickerpreference) | `compile 'com.takisoft.fix:preference-v7-datetimepicker:27.1.1.1'` | ![API 26](https://raw.githubusercontent.com/Gericop/Android-Support-Preference-V7-Fix/master/images/timepicker_api26.png)
105-
[`ColorPickerPreference`](https://github.com/Gericop/Android-Support-Preference-V7-Fix/wiki/Preference-types#colorpickerpreference) | `compile 'com.takisoft.fix:preference-v7-colorpicker:27.1.1.1'` | ![API 26](https://raw.githubusercontent.com/Gericop/Android-Support-Preference-V7-Fix/master/images/colorpicker_api26_fixed.png)
106-
[`SimpleMenuPreference`](https://github.com/Gericop/Android-Support-Preference-V7-Fix/wiki/Preference-types#simplemenupreference) | `compile 'com.takisoft.fix:preference-v7-simplemenu:27.1.1.1'` | ![API 26](https://raw.githubusercontent.com/Gericop/Android-Support-Preference-V7-Fix/master/images/simplemenu_api26.png)
102+
[`RingtonePreference`](https://github.com/Gericop/Android-Support-Preference-V7-Fix/wiki/Preference-types#ringtonepreference) | `compile 'com.takisoft.fix:preference-v7-ringtone:27.1.1.2'` | ![API 26](https://raw.githubusercontent.com/Gericop/Android-Support-Preference-V7-Fix/master/images/ringtone_api26.png)
103+
[`DatePickerPreference`](https://github.com/Gericop/Android-Support-Preference-V7-Fix/wiki/Preference-types#datepickerpreference) | `compile 'com.takisoft.fix:preference-v7-datetimepicker:27.1.1.2'` | ![API 26](https://raw.githubusercontent.com/Gericop/Android-Support-Preference-V7-Fix/master/images/datepicker_api26.png)
104+
[`TimePickerPreference`](https://github.com/Gericop/Android-Support-Preference-V7-Fix/wiki/Preference-types#timepickerpreference) | `compile 'com.takisoft.fix:preference-v7-datetimepicker:27.1.1.2'` | ![API 26](https://raw.githubusercontent.com/Gericop/Android-Support-Preference-V7-Fix/master/images/timepicker_api26.png)
105+
[`ColorPickerPreference`](https://github.com/Gericop/Android-Support-Preference-V7-Fix/wiki/Preference-types#colorpickerpreference) | `compile 'com.takisoft.fix:preference-v7-colorpicker:27.1.1.2'` | ![API 26](https://raw.githubusercontent.com/Gericop/Android-Support-Preference-V7-Fix/master/images/colorpicker_api26_fixed.png)
106+
[`SimpleMenuPreference`](https://github.com/Gericop/Android-Support-Preference-V7-Fix/wiki/Preference-types#simplemenupreference) | `compile 'com.takisoft.fix:preference-v7-simplemenu:27.1.1.2'` | ![API 26](https://raw.githubusercontent.com/Gericop/Android-Support-Preference-V7-Fix/master/images/simplemenu_api26.png)
107107

108108
---
109109

@@ -149,7 +149,7 @@ The original implementation uses `?attr/textAppearanceSmall` as the message styl
149149
---
150150

151151
## Version
152-
The current stable version is **27.1.1.1**.
152+
The current stable version is **27.1.1.2**.
153153

154154
## Notes #
155155
This demo / bugfix is set to work on API level 14+.
@@ -168,19 +168,12 @@ API 15 | API 21 | API 26
168168

169169
### Changelog
170170

171-
**2018-05-11**
171+
**2018-07-04**
172172

173-
New version: 27.1.1.1 (based on v27.1.1)
173+
New version: 27.1.1.2 (based on v27.1.1)
174174

175175
- No support preferences related changes in the support library.
176-
- Bug fixes (#153, #149, #155, #152).
177-
178-
**2018-04-10**
179-
180-
New version: 27.1.1.0 (based on v27.1.1)
181-
182-
- No support preferences related changes in the support library.
183-
- Some bug fixes (see #147 for more info).
176+
- RingtonePreference bug fixes(#164, #165, #167).
184177

185178
> For older changelogs, check out the [CHANGELOG](CHANGELOG.md) file.
186179

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ project.ext.sdkVersion = 27
55
project.ext.supportLibraryVersion = '27.1.1'
66
project.ext.supportLibraryVersionPrefix = '27.1.1'
77
project.ext.supportLibraryVersionSuffix = ''
8-
project.ext.fixLibraryVersion = '1'
8+
project.ext.fixLibraryVersion = '2'
99

1010
project.ext.extrasLibraryVersionSuffix = ''
1111

@@ -16,7 +16,7 @@ buildscript {
1616
google()
1717
}
1818
dependencies {
19-
classpath 'com.android.tools.build:gradle:3.1.2'
19+
classpath 'com.android.tools.build:gradle:3.2.0-beta02'
2020
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.0'
2121
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
2222

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Tue Apr 03 22:42:27 PDT 2018
1+
#Wed Jun 27 20:46:56 CEST 2018
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

preference-v7-ringtone/src/main/java/com/takisoft/fix/support/v7/preference/RingtonePreferenceDialogFragmentCompat.java

Lines changed: 49 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import android.content.DialogInterface;
99
import android.content.Intent;
1010
import android.content.pm.PackageManager;
11+
import android.content.res.TypedArray;
1112
import android.database.Cursor;
1213
import android.database.MatrixCursor;
1314
import android.database.MergeCursor;
@@ -30,10 +31,16 @@
3031
import android.util.Log;
3132
import android.view.LayoutInflater;
3233
import android.view.View;
34+
import android.view.ViewGroup;
3335
import android.webkit.MimeTypeMap;
36+
import android.widget.Adapter;
37+
import android.widget.ArrayAdapter;
38+
import android.widget.CheckedTextView;
3439
import android.widget.CursorAdapter;
3540
import android.widget.HeaderViewListAdapter;
41+
import android.widget.ListAdapter;
3642
import android.widget.ListView;
43+
import android.widget.SimpleCursorAdapter;
3744
import android.widget.Toast;
3845

3946
import com.takisoft.fix.support.v7.preference.ringtone.R;
@@ -46,7 +53,9 @@
4653
import java.io.InputStream;
4754
import java.io.OutputStream;
4855
import java.security.SecureRandom;
56+
import java.util.ArrayList;
4957
import java.util.concurrent.LinkedBlockingQueue;
58+
import java.util.zip.Inflater;
5059

5160
import static android.app.Activity.RESULT_OK;
5261

@@ -105,8 +114,6 @@ protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
105114

106115
createCursor(ringtonePreference.getRingtone());
107116

108-
String colTitle = cursor.getColumnName(RingtoneManager.TITLE_COLUMN_INDEX);
109-
110117
final Context context = getContext();
111118

112119
final int ringtoneType = ringtonePreference.getRingtoneType();
@@ -119,9 +126,16 @@ protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
119126
} else {
120127
defaultUri = null;
121128
}
129+
130+
String[] titles = new String[cursor.getCount()];
131+
if (cursor.moveToFirst()){
132+
do{
133+
titles[cursor.getPosition()] = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX);
134+
}while(cursor.moveToNext());
135+
}
122136

123137
builder
124-
.setSingleChoiceItems(cursor, selectedIndex, colTitle, new DialogInterface.OnClickListener() {
138+
.setSingleChoiceItems(buildAdapter(context, cursor), selectedIndex, new DialogInterface.OnClickListener() {
125139
@Override
126140
public void onClick(DialogInterface dialogInterface, int i) {
127141
if (i < cursor.getCount()) {
@@ -292,8 +306,7 @@ protected Cursor doInBackground(Uri... params) {
292306
protected void onPostExecute(final Cursor newCursor) {
293307
if (newCursor != null) {
294308
final ListView listView = ((AlertDialog) getDialog()).getListView();
295-
final CursorAdapter adapter = ((CursorAdapter) ((HeaderViewListAdapter) listView.getAdapter()).getWrappedAdapter());
296-
adapter.changeCursor(newCursor);
309+
listView.setAdapter(buildAdapter(context, newCursor));
297310

298311
listView.setItemChecked(selectedIndex, true);
299312
listView.setSelection(selectedIndex);
@@ -532,6 +545,20 @@ public static String[] splitFileName(String mimeType, String displayName) {
532545
return new String[]{name, ext};
533546
}
534547

548+
private CheckedItemAdapter buildAdapter (Context context, Cursor cursor){
549+
String[] titles = new String[cursor.getCount()];
550+
if (cursor.moveToFirst()){
551+
do{
552+
titles[cursor.getPosition()] = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX);
553+
}while(cursor.moveToNext());
554+
}
555+
556+
final TypedArray a = context.obtainStyledAttributes(null, android.support.v7.appcompat.R.styleable.AlertDialog,
557+
android.support.v7.appcompat.R.attr.alertDialogStyle, 0);
558+
int layout = a.getResourceId(android.support.v7.appcompat.R.styleable.AlertDialog_singleChoiceItemLayout, 0);
559+
return new CheckedItemAdapter(context, layout, android.R.id.text1, titles);
560+
}
561+
535562
/**
536563
* Creates a {@link android.media.MediaScannerConnection} to scan a ringtone file and add its
537564
* information to the internal database.
@@ -579,4 +606,21 @@ private Uri take() throws InterruptedException {
579606
return mQueue.take();
580607
}
581608
}
609+
610+
private static class CheckedItemAdapter extends ArrayAdapter<CharSequence> {
611+
public CheckedItemAdapter(Context context, int resource, int textViewResourceId,
612+
CharSequence[] objects) {
613+
super(context, resource, textViewResourceId, objects);
614+
}
615+
616+
@Override
617+
public boolean hasStableIds() {
618+
return true;
619+
}
620+
621+
@Override
622+
public long getItemId(int position) {
623+
return position;
624+
}
625+
}
582626
}

0 commit comments

Comments
 (0)