Merge tag '9.4.1'

pull/998/head
Alex Baker 4 years ago
commit b7e13eb796

@ -1,6 +1,11 @@
Change Log
---
=======
### 9.4.1 (2020-06-01)
* Add 'Tasks settings > Advanced > Improve performance' toggle
* Bug fixes
### 9.4 (2020-05-27)
* Add collapsible group headers when sorting by due date, priority, created, or modified

@ -42,8 +42,8 @@ android {
defaultConfig {
testApplicationId = "org.tasks.test"
applicationId = "org.tasks"
versionCode = 90400
versionName = "9.4"
versionCode = 90401
versionName = "9.4.1"
targetSdkVersion(Versions.targetSdk)
minSdkVersion(Versions.minSdk)
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

@ -150,7 +150,7 @@ open class TaskAdapter(
fun isHeader(position: Int): Boolean = dataSource.isHeader(position)
fun getTask(position: Int): TaskContainer = dataSource.getItem(position)
fun getTask(position: Int): TaskContainer = dataSource.getItem(position)!!
fun getItemUuid(position: Int): String = getTask(position).uuid

@ -3,7 +3,7 @@ package com.todoroo.astrid.adapter
import org.tasks.data.TaskContainer
interface TaskAdapterDataSource {
fun getItem(position: Int): TaskContainer
fun getItem(position: Int): TaskContainer?
fun getTaskCount(): Int

@ -1,6 +1,6 @@
package org.tasks.data
import com.todoroo.andlib.sql.Field
import com.todoroo.andlib.sql.Field.Companion.field
import com.todoroo.andlib.sql.Join
import com.todoroo.andlib.sql.Query
import com.todoroo.astrid.activity.TaskListFragment
@ -11,28 +11,30 @@ import com.todoroo.astrid.data.Task
import org.tasks.preferences.Preferences
internal object TaskListQueryNonRecursive {
private val JOIN_TAGS = Task.ID.eq(Field.field("${TaskListFragment.TAGS_METADATA_JOIN}.task"))
private val JOIN_TAGS = Task.ID.eq(field("${TaskListFragment.TAGS_METADATA_JOIN}.task"))
private val JOINS = """
${Join.left(Tag.TABLE.`as`(TaskListFragment.TAGS_METADATA_JOIN), JOIN_TAGS)}
${TaskListQuery.JOINS}
""".trimIndent()
private val TAGS =
Field.field("group_concat(distinct(${TaskListFragment.TAGS_METADATA_JOIN}.tag_uid))")
field("group_concat(distinct(${TaskListFragment.TAGS_METADATA_JOIN}.tag_uid))")
.`as`("tags")
private val FIELDS = TaskListQuery.FIELDS.plus(TAGS).toTypedArray()
fun getNonRecursiveQuery(filter: Filter, preferences: Preferences): List<String> {
val joinedQuery = JOINS + filter.getSqlQuery()
val query = SortHelper.adjustQueryForFlagsAndSort(preferences, joinedQuery, preferences.sortMode)
val sortMode = preferences.sortMode
val sortGroup = field(SortHelper.getSortGroup(sortMode) ?: "NULL").`as`("sortGroup")
val query = SortHelper.adjustQueryForFlagsAndSort(preferences, joinedQuery, sortMode)
val groupedQuery = if (query.contains("ORDER BY")) {
query.replace("ORDER BY", "GROUP BY ${Task.ID} ORDER BY")
} else {
"$query GROUP BY ${Task.ID}"
}
return mutableListOf(
Query.select(*FIELDS)
Query.select(*FIELDS.plus(sortGroup))
.withQueryTemplate(PermaSql.replacePlaceholdersForQuery(groupedQuery))
.from(Task.TABLE)
.toString())
}
}
}

@ -13,6 +13,7 @@ import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers
import org.tasks.LocalBroadcastManager
import org.tasks.PermissionUtil
import org.tasks.R
import org.tasks.calendars.CalendarEventProvider
@ -41,6 +42,7 @@ class Advanced : InjectingPreferenceFragment() {
@Inject lateinit var toaster: Toaster
@Inject lateinit var permissionRequester: FragmentPermissionRequestor
@Inject lateinit var permissionChecker: PermissionChecker
@Inject lateinit var localBroadcastManager: LocalBroadcastManager
private lateinit var disposables: CompositeDisposable
private lateinit var calendarReminderPreference: SwitchPreferenceCompat
@ -48,6 +50,12 @@ class Advanced : InjectingPreferenceFragment() {
override fun getPreferenceXml() = R.xml.preferences_advanced
override fun setupPreferences(savedInstanceState: Bundle?) {
findPreference(R.string.p_disable_subtasks)
.setOnPreferenceChangeListener { _: Preference?, _: Any? ->
localBroadcastManager.broadcastRefresh()
true
}
findPreference(R.string.EPr_manage_purge_deleted)
.setOnPreferenceClickListener {
purgeDeletedTasks()

@ -70,12 +70,6 @@ class LookAndFeel : InjectingPreferenceFragment() {
override fun getPreferenceXml() = R.xml.preferences_look_and_feel
override fun setupPreferences(savedInstanceState: Bundle?) {
findPreference(R.string.p_disable_subtasks)
.setOnPreferenceChangeListener { _: Preference?, _: Any? ->
localBroadcastManager.broadcastRefresh()
true
}
val themePref = findPreference(R.string.p_theme)
val themeNames = resources.getStringArray(R.array.base_theme_names)
themePref.summary = themeNames[themeBase.index]

@ -68,7 +68,7 @@ class DragAndDropRecyclerAdapter(
override fun isHeader(position: Int): Boolean = list.isHeader(position)
override fun getItem(position: Int): TaskContainer = list.getItem(position)
override fun getItem(position: Int) = list.getItem(position)
override fun submitList(list: List<TaskContainer>) {
disposables.add(

@ -22,7 +22,7 @@ class PagedListRecyclerAdapter(
private val differ: AsyncPagedListDiffer<TaskContainer> =
AsyncPagedListDiffer(this, AsyncDifferConfig.Builder(ItemCallback()).build())
override fun getItem(position: Int) = differ.getItem(position)!!
override fun getItem(position: Int) = differ.getItem(position)
override fun submitList(list: List<TaskContainer>) = differ.submitList(list as PagedList<TaskContainer>)

@ -86,7 +86,7 @@ public class TaskListViewModel extends ViewModel implements Observer<PagedList<T
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
subtasks -> {
if (manualSortFilter || (subtasks.usesSubtasks() && preferences.showSubtasks())) {
if (manualSortFilter || preferences.showSubtasks()) {
performNonPagedQuery(subtasks);
} else {
performPagedListQuery();

@ -606,10 +606,8 @@
<string name="sort_created">Nach Erstellungszeit</string>
<string name="filter_after_today">"Nach heute "</string>
<string name="filter_overdue">Überfällig</string>
<string name="disable_subtasks">Unteraufgaben deaktivieren</string>
<string name="add_tags">Schlagwörter hinzufügen</string>
<string name="filter_no_tags">Keine Schlagwörter</string>
<string name="disable_subtasks_summary">Teilaufgaben zu deaktivieren kann die App-Performance verbessern</string>
<string name="filter_any_due_date">Beliebiges Fälligkeitsdatum</string>
<string name="enjoying_tasks">Gefällt Ihnen Tasks\?</string>
<string name="whats_new_in_version">Änderungen in Version %s</string>

@ -616,8 +616,6 @@
<string name="filter_today_only">Hoy sólo</string>
<string name="filter_overdue">Atrasado</string>
<string name="sort_created">En el momento de la creación</string>
<string name="disable_subtasks_summary">La desactivación de subtareas puede mejorar el rendimiento de la aplicación</string>
<string name="disable_subtasks">Desactivar subtareas</string>
<string name="got_it">¡Entendido!</string>
<string name="no_thanks">No gracias</string>
<string name="support_development_subscribe">Desbloquea características adicionales y soporta software de código abierto</string>

@ -602,8 +602,6 @@
<string name="auto_dismiss_datetime_edit">Zereginaren edizioa</string>
<string name="auto_dismiss_datetime_list_summary">Itxi automatikoki zereginen zerrendatik hautatzean</string>
<string name="auto_dismiss_datetime_list">Zereginen zerrenda</string>
<string name="disable_subtasks_summary">Azpi-zereginak desgaitzeak aplikazioaren errendimendua hobetu dezake</string>
<string name="disable_subtasks">Desgaitu azpi-zereginak</string>
<string name="widget_due_date_hidden">Ezkutatuta</string>
<string name="widget_due_date_below_title">Izenburuaren azpian</string>
<string name="widget_due_date_after_title">Izenburua eta gero</string>

@ -600,8 +600,6 @@
<string name="wearable_notifications">Puettavan laitteen ilmoitukset</string>
<string name="preferences_advanced">Kehittyneet</string>
<string name="caldav_account_description">Vaatii palveluntuottajan tai itsehallinnoidun CalDAV tilin. Tutustu palveluntarjoajiin osoitteessa tasks.org/caldav</string>
<string name="disable_subtasks_summary">Alatehtävien poisto käytöstä voi parantaa ohjelman suorituskykyä</string>
<string name="disable_subtasks">Poista alatehtävät käytöstä</string>
<string name="whats_new">Päivitykset</string>
<string name="location_departed">Lähdit paikasta %s</string>
<string name="location_arrived">Saavuit paikkaan %s</string>

@ -611,8 +611,6 @@
<string name="filter_today_only">Aujourd\'hui seulement</string>
<string name="filter_overdue">En retard</string>
<string name="sort_created">Par date de création</string>
<string name="disable_subtasks_summary">La désactivation des sous-tâches peut améliorer les performances de l\'application</string>
<string name="disable_subtasks">Désactiver les sous-tâches</string>
<string name="got_it">J\'ai compris !</string>
<string name="no_thanks">Non, merci</string>
<string name="support_development_subscribe">Déverrouillez des fonctionnalités supplémentaires et supportez les logiciels open source</string>

@ -614,8 +614,6 @@
<string name="filter_today_only">Csak ma</string>
<string name="filter_overdue">Határidőn túli</string>
<string name="sort_created">Létrehozás ideje alapján</string>
<string name="disable_subtasks_summary">A részfeladatok letiltása növelheti az app sebességét</string>
<string name="disable_subtasks">Részfeladatok letiltása</string>
<string name="got_it">Megértettem!</string>
<string name="no_thanks">Köszönöm, nem</string>
<string name="support_development_subscribe">További finkciók feloldása és a nyílt szoftver támogatása</string>

@ -539,8 +539,6 @@
<item quantity="many">מעט</item>
<item quantity="other">אחר</item>
</plurals>
<string name="disable_subtasks_summary">ביטול תתי משימות עשוי לשפר ביצועים</string>
<string name="disable_subtasks">ביטול תתי משימות</string>
<string name="enter_title_hint">הזן כותרת</string>
<string name="collapse_subtasks">כיווץ תתי משימות</string>
<string name="expand_subtasks">הרחבת תתי משימות</string>

@ -611,8 +611,6 @@
<string name="filter_today_only">Alleen vandaag</string>
<string name="filter_overdue">Te laat</string>
<string name="sort_created">Op aanmaaktijd</string>
<string name="disable_subtasks_summary">Het uitschakelen van deeltaken kan de snelheid van de app verbeteren</string>
<string name="disable_subtasks">Deeltaken uitschakelen</string>
<string name="support_development_subscribe">Ontgrendel extra mogelijkheden en ondersteun open source software</string>
<string name="got_it">Begrepen!</string>
<string name="whats_new">Nieuws</string>

@ -626,8 +626,6 @@
<string name="custom_filter_or">LUB</string>
<string name="custom_filter_and">ORAZ</string>
<string name="custom_filter_criteria">Kryteria filtrowania</string>
<string name="disable_subtasks_summary">Wyłączenie podzadań może zwiększyć wydajność aplikacji</string>
<string name="disable_subtasks">Wyłącz podzadania</string>
<string name="sort_created">Wg. czasu stworzenia</string>
<string name="got_it">Rozumiem!</string>
<string name="no_thanks">Nie, dziękuję</string>

@ -632,8 +632,6 @@
<string name="custom_filter_or">ИЛИ</string>
<string name="custom_filter_and">И</string>
<string name="custom_filter_criteria">Критерии фильтрации</string>
<string name="disable_subtasks_summary">Отключение подзадач может повысить производительность приложения</string>
<string name="disable_subtasks">Отключить подзадачи</string>
<string name="sort_created">По времени создания</string>
<string name="got_it">Понятно!</string>
<string name="no_thanks">Нет, спасибо</string>

@ -616,8 +616,6 @@
<string name="custom_filter_and">VE</string>
<string name="custom_filter_criteria">Süzme ölçütü</string>
<string name="sort_created">Oluşturulma zamanına göre</string>
<string name="disable_subtasks_summary">Alt görevleri devre dışı bırakmak uygulama performansını iyileştirebilir</string>
<string name="disable_subtasks">Alt görevleri devre dışı bırak</string>
<string name="tell_me_how_im_doing">Lütfen nasıl yaptığımı anlat</string>
<string name="got_it">Anladım!</string>
<string name="no_thanks">Teşekkürler</string>

@ -606,8 +606,6 @@
<string name="filter_any_due_date">任何到期日</string>
<string name="filter_today_only">仅今日</string>
<string name="filter_overdue">到期</string>
<string name="disable_subtasks_summary">禁用子任务可能改善应用性能</string>
<string name="disable_subtasks">禁用子任务</string>
<string name="sort_created">按创建时间</string>
<string name="got_it">知道了!</string>
<string name="no_thanks">不,谢谢</string>

@ -2,6 +2,8 @@
<resources>
<string-array name="changelog">
<item>Add collapsible group headers when sorting by due date, priority, created, or modified</item>
<item>Add \'Tasks settings > Advanced > Improve performance\' toggle</item>
<item>Bug fixes</item>
<item>Update translations</item>
</string-array>
</resources>
</resources>

@ -540,8 +540,8 @@ File %1$s contained %2$s.\n\n
<string name="collapse_subtasks">Collapse subtasks</string>
<string name="subtasks_multilevel_google_task">Multi-level subtasks not supported by Google Tasks</string>
<string name="enter_title_hint">Enter title</string>
<string name="disable_subtasks">Disable subtasks</string>
<string name="disable_subtasks_summary">Disabling subtasks may improve app performance</string>
<string name="improve_performance">Improve performance</string>
<string name="improve_performance_summary">Disable sort groups and collapsible subtasks to improve app performance</string>
<string name="enter_tag_name">Enter tag name</string>
<string name="create_new_tag">Create \"%s\"</string>
<string name="choose_synchronization_service">Select a platform</string>

@ -2,6 +2,12 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<SwitchPreferenceCompat
android:defaultValue="false"
android:key="@string/p_disable_subtasks"
android:summary="@string/improve_performance_summary"
android:title="@string/improve_performance" />
<Preference
android:icon="@drawable/ic_outline_attachment_24px"
android:key="@string/p_attachment_dir"

@ -50,12 +50,6 @@
app:min="0"
app:showSeekBarValue="true" />
<SwitchPreferenceCompat
android:defaultValue="false"
android:key="@string/p_disable_subtasks"
android:summary="@string/disable_subtasks_summary"
android:title="@string/disable_subtasks" />
<SwitchPreferenceCompat
android:defaultValue="false"
android:key="@string/p_fullTaskTitle"

@ -0,0 +1,3 @@
* Add collapsible group headers when sorting by due date, priority, created, or modified
* Add 'Tasks settings > Advanced > Improve performance' toggle
* Bug fixes
Loading…
Cancel
Save