package Ġcom . j kan tech . jad on otes . ui . views Ċ Ċ // import Ġkotlinx . android . synt hetic . main . activity _ kan inda .* Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġcom . j kan tech . jad on otes . MainActivity Ċ import Ġcom . j kan tech . jad on otes . R Ċ import Ġcom . j kan tech . jad on otes . ui . utils . My Preferences Ċ import Ġkotlinx . android . synt hetic . main . activity _ settings .* Ċ import Ġkotlinx . android . synt hetic . main . cont aint _ settings .* Ċ import Ġjava . util .* Ċ /** Ċ Ġ* ĠCreated Ġby ĠJon as ĠK an inda Ġon Ġ 1 0 / 0 7 / 2 0 2 0 . Ċ Ġ*/ Ċ class ĠSettings Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġvar Ġapp Theme = 2 ĊĠĠĠĠ Ġlateinit Ġvar Ġshared Preferences : ĠSharedPreferences ĊĠĠĠĠ Ġprivate Ġval Ġtheme Key Ġ= Ġ" current Theme " ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĊĠĠĠĠĠĠĠ Ġapp Theme = ĠMy Preferences ( this ). dark Mode ĊĠĠĠĠĠĠĠ Ġshared Preferences Ġ= Ġget SharedPreferences ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Theme Pref ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext . MODE _ PRIVATE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġapply Style () ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ settings ) ĊĠĠĠĠĠĠĠ Ġtitle = getString ( R . string . action _ settings ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ ĠObjects . requireNonNull ( support ActionBar )?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĊĊĠĠĠĠĠĠĠ Ġcheck Theme () ĊĊĊĠĠĠĠĠĠĠ Ġcard _ theme . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchoose Theme Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcard _ style . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// choose Style Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Color Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchoose Theme Dialog (){ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder = AlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġbuilder . setTitle ( getString ( R . string . app aren ce _ mode )) ĊĠĠĠĠĠĠĠ Ġval Ġres = resources ĊĠĠĠĠĠĠĠ Ġval Ġthemes = res . getString Array ( R . array . theme _ mode ) ĊĊĠĠĠĠĠĠĠ Ġbuilder . set Single Choice Items ( themes , My Preferences ( this ). dark Mode ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( which ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ NO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Preferences ( this ). dark Mode = 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . apply Day Night () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ YES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Preferences ( this ). dark Mode = 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . apply Day Night () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ FOLLOW _ SYSTEM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Preferences ( this ). dark Mode = 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . apply Day Night () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( getString ( R . string . action _ ann uler ), DialogInterface . OnClickListener Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġdialog = builder . create () ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Resource As Color ") ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcheck Theme () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( My Preferences ( this ). dark Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ NO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme _ mode . text Ġ= ĠgetString ( R . string . day mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . apply Day Night () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ YES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme _ mode . text Ġ= ĠgetString ( R . string . night _ mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . apply Day Night () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ FOLLOW _ SYSTEM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme _ mode . text Ġ= ĠgetString ( R . string . mode _ auto ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . apply Day Night () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ/* ĊĊĠĠĠ Ġprivate Ġfun Ġget Pro (){ ĊĠĠĠĠĠĠĠ Ġtoast (" P asse z Ġau ĠPremium Ġpour Ġutiliser Ġce Ġbe au Ġstyle ") ĊĠĠĠ Ġ} ĊĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġprivate Ġfun Ġtheme Color Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠDialog ( this ) ĊĠĠĠĠĠĠĠ Ġdialog . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow ?. setBackground Drawable ( Color Drawable ( Color . TRANSP ARENT )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . theme _ color _ dialog ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Cancel able ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtheme 1 = dialog . findViewById < Image Button >( R . id ._ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtheme 2 = dialog . findViewById < Image Button >( R . id ._ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtheme 3 = dialog . findViewById < Image Button >( R . id ._ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtheme 4 = dialog . findViewById < Image Button >( R . id ._ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstyle value = 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchecked Item = shared Preferences . getInt ( theme Key , style value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtheme 1 . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checked Item == 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences . edit (). put Int ( theme Key , Ġ 0 ). apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Intent Ġ= ĠIntent ( this @ Settings Activity , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Intent . putExtra ( theme Key , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġr Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( r Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtheme 2 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checked Item == 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences . edit (). put Int ( theme Key , Ġ 1 ). apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Intent Ġ= ĠIntent ( this @ Settings Activity , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Intent . putExtra ( theme Key , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġr Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( r Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtheme 3 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checked Item == 2 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences . edit (). put Int ( theme Key , Ġ 2 ). apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Intent Ġ= ĠIntent ( this @ Settings Activity , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Intent . putExtra ( theme Key , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġr Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( r Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtheme 4 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checked Item == 3 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences . edit (). put Int ( theme Key , Ġ 3 ). apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Intent Ġ= ĠIntent ( this @ Settings Activity , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Intent . putExtra ( theme Key , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġr Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( r Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĊ ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġapply Style () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( shared Preferences . getInt ( theme Key , Ġ 0 )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġtheme . apply Style ( R . style . Theme _ J ado Notes , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġtheme . apply Style ( R . style . Theme 1 , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġtheme . apply Style ( R . style . Theme 2 , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġtheme . apply Style ( R . style . Theme 3 , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfinish () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . finish () ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . anim . activity _ fade _ in _ animation , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . anim . activity _ fade _ out _ animation ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊ Ċ } ĊĊĊ