package Ġdev . max si om in . domain search . fragments . settings Ċ Ċ import Ġandroid . content . Activity NotFoundException Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . preference . Preference Ċ import Ġandroidx . preference . Preference Fragment Compat Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġdev . max si om in . domain search . AP K _ LOCATION Ċ import Ġdev . max si om in . domain search . App Ċ import Ġdev . max si om in . domain search . R Ċ import Ġdev . max si om in . domain search . base . Base ViewModel Ċ import Ġdev . max si om in . domain search . extensions . add On Preference ChangeListener Ċ import Ġdev . max si om in . domain search . extensions . open In Browser Ċ import Ġdev . max si om in . domain search . extensions . setOnClickListener Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ private Ġconst Ġval ĠDE VELO PER _ EMAIL Ġ= Ġ" contact @ max si om in . dev " Ċ private Ġconst Ġval ĠDE VELO PER _ WE BS ITE Ġ= Ġ" https :// max si om in . dev /" Ċ Ċ @ Android EntryPoint Ċ class ĠSettings Fragment Ġ: ĠPreference Fragment Compat () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm ViewModel Ġby Ġview Models < Base ViewModel >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Preferences ( savedInstanceState : ĠBundle ?, Ġroot Key : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Preferences From Resource ( R . xml . root _ preferences , Ġroot Key ) ĊĊĠĠĠĠĠĠĠ Ġfind Preference ( R . string . key _ theme ). add On Preference ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Ġ= Ġrequire Activity (). application Ġas ĠApp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp . setup Theme ( it Ġas ĠString ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet ĠonClick Listeners Ġfor Ġall Ġbuttons ĊĠĠĠĠĠĠĠ Ġfind Preference ( R . string . key _ clear _ history ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . IO ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhistory Exists Ġ= Ġm ViewModel . search Dao . get History Length () Ġ> Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( history Exists ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . search Dao . clear History () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast String Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( history Exists ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . history _ cleared ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . empty _ history ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Selectable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . toast ( toast String , ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfind Preference ( R . string . key _ help _ and _ feedback ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Email () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfind Preference ( R . string . key _ share _ this _ app ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshare This App () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfind Preference ( R . string . key _ more _ apps ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmore Apps () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfind Preference ( R . string . key _ app _ version ). summary Ġ= ĠApp . VERSION ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Preference ( key : ĠInt ) Ġ= Ġfind Preference < Preference >( m ViewModel . getString ( key )) !! ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOpen Ġmail Ġclient Ġand Ġwrite Ġletter Ġto Ġme ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsend Email () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( Intent . ACTION _ VIEW , ĠUri . parse (" mailto :$ DE VELO PER _ EMAIL "))) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠActivity NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . toast ( R . string . mail _ client _ not _ found , ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShare Ġlink Ġto Ġ. apk ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshare This App () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= ĠIntent . ACTION _ SEND ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ TEXT , ĠA PK _ LOCATION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" text / plain " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent . create Chooser ( intent , Ġnull )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠActivity NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . toast ( R . string . sm th _ w ent _ wrong , ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmore Apps () Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Activity (). open In Browser ( DE VELO PER _ WE BS ITE ) ĊĠĠĠ Ġ} Ċ } Ċ