package Ġcom . dp . log cat app . fragments . settings Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 1 4 . preference . Multi Select List Preference Ċ import Ġandroid . support . v 7 . preference . List Preference Ċ import Ġandroid . support . v 7 . preference . Preference Ċ import Ġandroid . support . v 7 . preference . Preference Fragment Compat Ċ import Ġcom . dp . log cat . Log cat Ċ import Ġcom . dp . log cat app . Build Config Ċ import Ġcom . dp . log cat app . R Ċ import Ġcom . dp . log cat app . util . Preference Keys Ċ import Ġcom . dp . log cat app . util . is Dark Theme On Ċ import Ġcom . dp . log cat app . util . restart App Ċ import Ġcom . dp . log cat app . util . show Toast Ċ import Ġjava . text . NumberFormat Ċ Ċ class ĠSettings Fragment Ġ: ĠPreference Fragment Compat () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠSettings Fragment :: class . qualified Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Preferences ( savedInstanceState : ĠBundle ?, Ġroot Key : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Preferences From Resource ( R . xml . settings ) ĊĠĠĠĠĠĠĠ Ġsetup Appearance Category () ĊĠĠĠĠĠĠĠ Ġsetup Log cat Category () ĊĠĠĠĠĠĠĠ Ġsetup About Category () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Appearance Category () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshared Prefs Ġ= Ġpreference Screen . shared Preferences ĊĠĠĠĠĠĠĠ Ġval Ġtheme Pref Ġ= Ġfind Preference ( Preference Keys . Appearance . KEY _ THEME ) Ġas ĠList Preference ĊĠĠĠĠĠĠĠ Ġval Ġuse Black Theme Pref Ġ= Ġfind Preference ( Preference Keys . Appearance . KEY _ USE _ BLACK _ THEME ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcurr Theme Ġ= Ġshared Prefs . getString ( Preference Keys . Appearance . KEY _ THEME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Keys . Appearance . Default . THEME ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( curr Theme ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Keys . Appearance . Theme . AUTO , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Keys . Appearance . Theme . DARK Ġ-> Ġuse Black Theme Pref . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġuse Black Theme Pref . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtheme Pref Entries Ġ= Ġresources . getString Array ( R . array . pref _ appearance _ theme _ entries ) ĊĠĠĠĠĠĠĠ Ġtheme Pref . summary Ġ= Ġtheme Pref Entries [ curr Theme . toInt ()] ĊĊĠĠĠĠĠĠĠ Ġtheme Pref . on Preference ChangeListener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference . On Preference ChangeListener Ġ{ Ġpreference , ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference . summary Ġ= Ġtheme Pref Entries [( newValue Ġas ĠString ). toInt ()] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. restart App () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġuse Black Theme Pref . on Preference ChangeListener Ġ= ĠPreference ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. On Preference ChangeListener Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity !!. is Dark Theme On ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. restart App () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Log cat Category () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpref Poll Interval Ġ= Ġfind Preference ( Preference Keys . Log cat . KEY _ POLL _ INTERVAL ) ĊĠĠĠĠĠĠĠ Ġval Ġpref Buffers Ġ= Ġfind Preference ( Preference Keys . Log cat . KEY _ BUFFER S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġas ĠMulti Select List Preference ĊĠĠĠĠĠĠĠ Ġval Ġpref Max Logs Ġ= Ġfind Preference ( Preference Keys . Log cat . KEY _ MAX _ LOG S ) ĊĊĠĠĠĠĠĠĠ Ġpref Poll Interval . summary Ġ= Ġpreference Screen . shared Preferences ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getString ( Preference Keys . Log cat . KEY _ POLL _ INTERVAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Keys . Log cat . Default . POLL _ INTERVAL ) Ġ+ Ġ" Ġms " ĊĊĠĠĠĠĠĠĠ Ġpref Poll Interval . on Preference ChangeListener Ġ= ĠPreference ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. On Preference ChangeListener Ġ{ Ġpreference , ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠnewValue . toString (). trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnum Ġ= Ġv . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( num Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. show Toast ( getString ( R . string . value _ must _ be _ greater _ than _ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference . summary Ġ= Ġ"$ v Ġms " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. show Toast ( getString ( R . string . value _ must _ be _ a _ positive _ integer )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġavailable Buffers Ġ= ĠLog cat . AVAILABLE _ BUFFER S ĊĠĠĠĠĠĠĠ Ġval Ġdefault Buffers Ġ= ĠPreference Keys . Log cat . Default . BUFFER S ĊĠĠĠĠĠĠĠ Ġif Ġ( available Buffers . isNotEmpty () Ġ&& Ġdefault Buffers . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Values Ġ= Ġpreference Screen . shared Preferences ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getString Set ( Preference Keys . Log cat . KEY _ BUFFER S , Ġdefault Buffers ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto Summary Ġ= Ġ{ Ġvalues : ĠSet < String > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . map Ġ{ Ġe Ġ-> Ġavailable Buffers [ e . toInt ()] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Buffers . entries Ġ= Ġavailable Buffers . copyOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Values Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġavailable Buffers . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry Values Ġ+= Ġi . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Buffers . entry Values Ġ= Ġentry Values . to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Buffers . summary Ġ= Ġto Summary ( buffer Values ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" unchecked _ cast ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Buffers . on Preference ChangeListener Ġ= ĠPreference ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. On Preference ChangeListener Ġ{ Ġpreference , ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmp Ġ= Ġpreference Ġas ĠMulti Select List Preference ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠnewValue Ġas ĠSet < String > ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( values . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmp . summary Ġ= Ġto Summary ( values ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Buffers . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmax Logs Ġ= Ġpreference Screen . shared Preferences . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Keys . Log cat . KEY _ MAX _ LOG S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Keys . Log cat . Default . MAX _ LOG S ĊĠĠĠĠĠĠĠ Ġ). trim (). toInt () ĊĊĠĠĠĠĠĠĠ Ġpref Max Logs . summary Ġ= ĠNumber Format . getInstance (). format ( max Logs ) ĊĠĠĠĠĠĠĠ Ġpref Max Logs . on Preference ChangeListener Ġ= ĠPreference ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. On Preference ChangeListener Ġcallback @ Ġ{ Ġpreference , ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠoldValue Ġ= Ġpreference Screen . shared Preferences . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Keys . Log cat . KEY _ MAX _ LOG S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Keys . Log cat . Default . MAX _ LOG S ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). trim (). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Max Logs Ġ= Ġ( newValue Ġas ĠString ). trim (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Max Logs Ġ== ĠoldValue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ callback Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Max Logs Ġ< Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. show Toast ( getString ( R . string . cannot _ be _ less _ than _ 1 0 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ callback Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference . summary Ġ= ĠNumber Format . getInstance (). format ( new Max Logs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. show Toast ( getString ( R . string . not _ a _ valid _ number )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup About Category () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpref About Ġ= Ġfind Preference ( Preference Keys . About . KEY _ VERSION _ NAME ) ĊĠĠĠĠĠĠĠ Ġpref About . summary Ġ= Ġ" Version Ġ${ Build Config . VERSION _ NAME }" ĊĊĠĠĠĠĠĠĠ Ġval Ġpref GitHub Page Ġ= Ġfind Preference ( Preference Keys . About . KEY _ GITHUB _ PAGE ) ĊĠĠĠĠĠĠĠ Ġpref GitHub Page . setOn Preference ClickListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" https :// github . com / dar sh an par aj uli / Log cat Reader " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ