Loading sources and tags.
This commit is contained in:
		| @@ -29,6 +29,7 @@ import bou.amine.apps.readerforselfossv2.android.adapters.ItemListAdapter | ||||
| import bou.amine.apps.readerforselfossv2.android.adapters.ItemsAdapter | ||||
| import bou.amine.apps.readerforselfossv2.android.background.LoadingWorker | ||||
| import bou.amine.apps.readerforselfossv2.android.databinding.ActivityHomeBinding | ||||
| import bou.amine.apps.readerforselfossv2.android.fragments.FilterSheetFragment | ||||
| import bou.amine.apps.readerforselfossv2.android.settings.SettingsActivity | ||||
| import bou.amine.apps.readerforselfossv2.android.utils.bottombar.maybeShow | ||||
| import bou.amine.apps.readerforselfossv2.android.utils.bottombar.removeBadge | ||||
| @@ -835,6 +836,11 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar | ||||
|  | ||||
|     override fun onOptionsItemSelected(item: MenuItem): Boolean { | ||||
|         when (item.itemId) { | ||||
|             R.id.action_filter -> { | ||||
|                 val filterSheetFragment = FilterSheetFragment() | ||||
|                 filterSheetFragment.show(supportFragmentManager, FilterSheetFragment.TAG) | ||||
|                 return true | ||||
|             } | ||||
|             R.id.refresh -> { | ||||
|                 needsConfirmation(R.string.menu_home_refresh, R.string.refresh_dialog_message) { | ||||
|                     Toast.makeText(this, R.string.refresh_in_progress, Toast.LENGTH_SHORT).show() | ||||
|   | ||||
| @@ -0,0 +1,149 @@ | ||||
| package bou.amine.apps.readerforselfossv2.android.fragments | ||||
|  | ||||
| import android.annotation.SuppressLint | ||||
| import android.graphics.Color | ||||
| import android.graphics.drawable.Drawable | ||||
| import android.graphics.drawable.GradientDrawable | ||||
| import android.os.Bundle | ||||
| import android.view.LayoutInflater | ||||
| import android.view.View | ||||
| import android.view.View.GONE | ||||
| import android.view.View.VISIBLE | ||||
| import android.view.ViewGroup | ||||
| import bou.amine.apps.readerforselfossv2.android.R | ||||
| import bou.amine.apps.readerforselfossv2.android.sendSilentlyWithAcraWithName | ||||
| import bou.amine.apps.readerforselfossv2.repository.Repository | ||||
| import bou.amine.apps.readerforselfossv2.service.AppSettingsService | ||||
| import bou.amine.apps.readerforselfossv2.utils.getHtmlDecoded | ||||
| import bou.amine.apps.readerforselfossv2.utils.getIcon | ||||
| import com.bumptech.glide.Glide | ||||
| import com.bumptech.glide.load.DataSource | ||||
| import com.bumptech.glide.load.engine.GlideException | ||||
| import com.bumptech.glide.request.RequestListener | ||||
| import com.bumptech.glide.request.target.Target | ||||
| import com.google.android.material.bottomsheet.BottomSheetDialogFragment | ||||
| import com.google.android.material.chip.Chip | ||||
| import kotlinx.coroutines.CoroutineScope | ||||
| import kotlinx.coroutines.Dispatchers | ||||
| import kotlinx.coroutines.launch | ||||
| import org.kodein.di.DI | ||||
| import org.kodein.di.DIAware | ||||
| import org.kodein.di.android.x.closestDI | ||||
| import org.kodein.di.instance | ||||
|  | ||||
|  | ||||
| class FilterSheetFragment : BottomSheetDialogFragment(), DIAware { | ||||
|  | ||||
|     override val di: DI by closestDI() | ||||
|     private val repository: Repository by instance() | ||||
|     private val appSettingsService: AppSettingsService by instance() | ||||
|  | ||||
|     private var tagChip: Chip? = null | ||||
|     private var sourceChip: Chip? = null | ||||
|  | ||||
|     @SuppressLint("ResourceAsColor") | ||||
|     override fun onCreateView( | ||||
|         inflater: LayoutInflater, | ||||
|         container: ViewGroup?, | ||||
|         savedInstanceState: Bundle? | ||||
|     ): View? { | ||||
|         val binding = | ||||
|             bou.amine.apps.readerforselfossv2.android.databinding.FilterFragmentBinding.inflate( | ||||
|                 inflater, | ||||
|                 container, | ||||
|                 false | ||||
|             ) | ||||
|  | ||||
|         val tagGroup = binding.tagsGroup | ||||
|         val sourceGroup = binding.sourcesGroup | ||||
|  | ||||
|         CoroutineScope(Dispatchers.Main).launch { | ||||
|             repository.getTags().forEach { tag -> | ||||
|                 val c = Chip(requireContext()) | ||||
|                 c.text = tag.tag | ||||
|  | ||||
|                 val gd = GradientDrawable() | ||||
|                 val gdColor = try { | ||||
|                     Color.parseColor(tag.color) | ||||
|                 } catch (e: IllegalArgumentException) { | ||||
|                     e.sendSilentlyWithAcraWithName("color issue " + tag.color) | ||||
|                     resources.getColor(R.color.colorPrimary) | ||||
|                 } | ||||
|                 gd.setColor(gdColor) | ||||
|                 gd.shape = GradientDrawable.RECTANGLE | ||||
|                 gd.setSize(30, 30) | ||||
|                 gd.cornerRadius = 30F | ||||
|                 c.chipIcon = gd | ||||
|  | ||||
|                 c.setOnCloseIconClickListener { | ||||
|                     (it as Chip).isCloseIconVisible = false | ||||
|                     tagChip = null | ||||
|                 } | ||||
|  | ||||
|                 c.setOnClickListener { | ||||
|                     if (tagChip != null) { | ||||
|                         tagChip!!.isCloseIconVisible = false | ||||
|                     } | ||||
|                     (it as Chip).isCloseIconVisible = true | ||||
|                     tagChip = it | ||||
|                 } | ||||
|                 tagGroup.addView(c) | ||||
|             } | ||||
|  | ||||
|             repository.getSources().forEach { source -> | ||||
|                 val c = Chip(requireContext()) | ||||
|  | ||||
|                 Glide.with(requireContext()) | ||||
|                     .load(source.getIcon(repository.baseUrl)) | ||||
|                     .listener(object : RequestListener<Drawable?> { | ||||
|                         override fun onLoadFailed( | ||||
|                             e: GlideException?, | ||||
|                             model: Any?, | ||||
|                             target: Target<Drawable?>?, | ||||
|                             isFirstResource: Boolean | ||||
|                         ): Boolean { | ||||
|                             return false | ||||
|                         } | ||||
|  | ||||
|                         override fun onResourceReady( | ||||
|                             resource: Drawable?, | ||||
|                             model: Any?, | ||||
|                             target: Target<Drawable?>?, | ||||
|                             dataSource: DataSource?, | ||||
|                             isFirstResource: Boolean | ||||
|                         ): Boolean { | ||||
|                             c.chipIcon = resource | ||||
|                             return false | ||||
|                         } | ||||
|                     }).preload() | ||||
|  | ||||
|                 c.text = source.title.getHtmlDecoded() | ||||
|  | ||||
|                 c.setOnCloseIconClickListener { | ||||
|                     (it as Chip).isCloseIconVisible = false | ||||
|                     sourceChip = null | ||||
|                 } | ||||
|  | ||||
|                 c.setOnClickListener { | ||||
|                     if (sourceChip != null) { | ||||
|                         sourceChip!!.isCloseIconVisible = false | ||||
|                     } | ||||
|                     (it as Chip).isCloseIconVisible = true | ||||
|                     sourceChip = it | ||||
|                 } | ||||
|                 sourceGroup.addView(c) | ||||
|             } | ||||
|  | ||||
|             binding.progressBar2.visibility = GONE | ||||
|             binding.filterView.visibility = VISIBLE | ||||
|         } | ||||
|  | ||||
|         return binding.root | ||||
|     } | ||||
|  | ||||
|     companion object { | ||||
|         const val TAG = "ModalBottomSheet" | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,5 @@ | ||||
| <vector android:height="24dp" android:tint="#FFFFFF" | ||||
|     android:viewportHeight="24" android:viewportWidth="24" | ||||
|     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
|     <path android:fillColor="@android:color/white" android:pathData="M4.25,5.61C6.27,8.2 10,13 10,13v6c0,0.55 0.45,1 1,1h2c0.55,0 1,-0.45 1,-1v-6c0,0 3.72,-4.8 5.74,-7.39C20.25,4.95 19.78,4 18.95,4H5.04C4.21,4 3.74,4.95 4.25,5.61z"/> | ||||
| </vector> | ||||
							
								
								
									
										72
									
								
								androidApp/src/main/res/layout/filter_fragment.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								androidApp/src/main/res/layout/filter_fragment.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <androidx.constraintlayout.widget.ConstraintLayout | ||||
|     xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent"> | ||||
|  | ||||
|     <ProgressBar | ||||
|         android:id="@+id/progressBar2" | ||||
|         style="?android:attr/progressBarStyle" | ||||
|         android:layout_width="48dp" | ||||
|         android:layout_height="48dp" | ||||
|         app:layout_constraintBottom_toBottomOf="parent" | ||||
|         app:layout_constraintEnd_toEndOf="parent" | ||||
|         app:layout_constraintStart_toStartOf="parent" | ||||
|         app:layout_constraintTop_toTopOf="parent" /> | ||||
|  | ||||
|     <androidx.constraintlayout.widget.ConstraintLayout | ||||
|         android:id="@+id/filterView" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="match_parent" | ||||
|         android:visibility="gone"> | ||||
|  | ||||
|         <TextView | ||||
|             android:id="@+id/filterTagsTitle" | ||||
|             style="@style/MaterialAlertDialog.MaterialComponents.Title.Text" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_marginStart="24dp" | ||||
|             android:layout_marginTop="16dp" | ||||
|             android:text="@string/filter_tags_title" | ||||
|             app:layout_constraintStart_toStartOf="parent" | ||||
|             app:layout_constraintTop_toTopOf="parent" /> | ||||
|  | ||||
|         <com.google.android.material.chip.ChipGroup | ||||
|             app:singleSelection="true" | ||||
|             android:id="@+id/tagsGroup" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_marginStart="16dp" | ||||
|             android:layout_marginTop="24dp" | ||||
|             app:layout_constraintStart_toStartOf="parent" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/filterTagsTitle"> | ||||
|  | ||||
|         </com.google.android.material.chip.ChipGroup> | ||||
|  | ||||
|  | ||||
|         <TextView | ||||
|             android:id="@+id/filterSourcesTitle" | ||||
|             style="@style/MaterialAlertDialog.MaterialComponents.Title.Text" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_marginStart="24dp" | ||||
|             android:layout_marginTop="24dp" | ||||
|             android:text="@string/filter_sources_title" | ||||
|             app:layout_constraintStart_toStartOf="parent" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/tagsGroup" /> | ||||
|  | ||||
|  | ||||
|         <com.google.android.material.chip.ChipGroup | ||||
|             android:id="@+id/sourcesGroup" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_marginStart="16dp" | ||||
|             android:layout_marginTop="24dp" | ||||
|             app:layout_constraintStart_toStartOf="parent" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/filterSourcesTitle"> | ||||
|  | ||||
|         </com.google.android.material.chip.ChipGroup> | ||||
|  | ||||
|     </androidx.constraintlayout.widget.ConstraintLayout> | ||||
| </androidx.constraintlayout.widget.ConstraintLayout> | ||||
| @@ -8,11 +8,17 @@ | ||||
|         app:showAsAction="ifRoom|collapseActionView" | ||||
|         app:actionViewClass="androidx.appcompat.widget.SearchView" /> | ||||
|  | ||||
|     <item android:id="@+id/action_filter" | ||||
|         android:title="@string/menu_home_filter" | ||||
|         android:icon="@drawable/ic_baseline_filter_alt_24" | ||||
|         android:orderInCategory="1" | ||||
|         app:showAsAction="always" /> | ||||
|  | ||||
|     <item android:id="@+id/readAll" | ||||
|           android:icon="@drawable/ic_menu_done_all_white_24dp" | ||||
|           android:title="@string/readAll" | ||||
|           android:orderInCategory="1" | ||||
|           app:showAsAction="always"/> | ||||
|           android:orderInCategory="2" | ||||
|           app:showAsAction="ifRoom"/> | ||||
|  | ||||
|     <item | ||||
|         android:id="@+id/refresh" | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -5,4 +5,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -138,4 +138,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -141,4 +141,7 @@ | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="filter_tags_title">Tags</string> | ||||
|     <string name="filter_sources_title">Sources</string> | ||||
| </resources> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user