kopia lustrzana https://github.com/ryukoposting/Signal-Android
Sort contacts that start with a number at the end.
rodzic
167a691018
commit
bfdebbfa5d
|
@ -2378,7 +2378,7 @@ public class RecipientDatabase extends Database {
|
||||||
.excludeId(includeSelf ? null : Recipient.self().getId())
|
.excludeId(includeSelf ? null : Recipient.self().getId())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
String orderBy = SORT_NAME + ", " + SYSTEM_JOINED_NAME + ", " + SEARCH_PROFILE_NAME + ", " + USERNAME + ", " + PHONE;
|
String orderBy = orderByPreferringAlphaOverNumeric(SORT_NAME) + ", " + PHONE;
|
||||||
|
|
||||||
return databaseHelper.getReadableDatabase().query(TABLE_NAME, SEARCH_PROJECTION, searchSelection.where, searchSelection.args, null, null, orderBy);
|
return databaseHelper.getReadableDatabase().query(TABLE_NAME, SEARCH_PROJECTION, searchSelection.where, searchSelection.args, null, null, orderBy);
|
||||||
}
|
}
|
||||||
|
@ -2395,7 +2395,7 @@ public class RecipientDatabase extends Database {
|
||||||
|
|
||||||
String selection = searchSelection.getWhere();
|
String selection = searchSelection.getWhere();
|
||||||
String[] args = searchSelection.getArgs();
|
String[] args = searchSelection.getArgs();
|
||||||
String orderBy = SORT_NAME + ", " + SYSTEM_JOINED_NAME + ", " + SEARCH_PROFILE_NAME + ", " + PHONE;
|
String orderBy = orderByPreferringAlphaOverNumeric(SORT_NAME) + ", " + PHONE;
|
||||||
|
|
||||||
return databaseHelper.getReadableDatabase().query(TABLE_NAME, SEARCH_PROJECTION, selection, args, null, null, orderBy);
|
return databaseHelper.getReadableDatabase().query(TABLE_NAME, SEARCH_PROJECTION, selection, args, null, null, orderBy);
|
||||||
}
|
}
|
||||||
|
@ -3091,6 +3091,16 @@ public class RecipientDatabase extends Database {
|
||||||
return "NULLIF(" + column + ", '')";
|
return "NULLIF(" + column + ", '')";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* By default, SQLite will prefer numbers over letters when sorting. e.g. (b, a, 1) is sorted as (1, a, b).
|
||||||
|
* This order by will using a GLOB pattern to instead sort it as (a, b, 1).
|
||||||
|
*
|
||||||
|
* @param column The name of the column to sort by
|
||||||
|
*/
|
||||||
|
private static @NonNull String orderByPreferringAlphaOverNumeric(@NonNull String column) {
|
||||||
|
return "CASE WHEN " + column + " GLOB '[0-9]*' THEN 1 ELSE 0 END, " + column;
|
||||||
|
}
|
||||||
|
|
||||||
private static @NonNull String removeWhitespace(@NonNull String column) {
|
private static @NonNull String removeWhitespace(@NonNull String column) {
|
||||||
return "REPLACE(" + column + ", ' ', '')";
|
return "REPLACE(" + column + ", ' ', '')";
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue