package Ġnet . t nose . app . tris quel Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . Radio Group Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġkotlinx . android . synt hetic . main . activity _ edit _ camera .* Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONException Ċ import Ġjava . util .* Ċ import Ġjava . util . regex . Pattern Ċ Ċ class ĠEdit Camera Activity Ġ: ĠAppCompatActivity (), ĠAbstract Dialog Fragment . Callback Ġ{ ĊĠĠĠ Ġval ĠDIALOG _ CUSTOM _ SHUT TER _ SPEED S Ġ= Ġ 1 0 0 ĊĠĠĠ Ġprivate Ġvar Ġid : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġtype : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcreated : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġformat Adapter : ĠArray Adapter < CharSequence >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġss Adapter One : ĠArray Adapter < CharSequence >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġss Adapter Half : ĠArray Adapter < CharSequence >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġss Adapter One Third : ĠArray Adapter < CharSequence >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġss Custom Steps : ĠArrayList < String > Ġ= Ġarray ListOf () ĊĠĠĠ Ġprivate Ġvar Ġfs Adapter : ĠF Step Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġis Dirty : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Res umed : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġuser Is Interact ing Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġprevious Checked Ss Steps Ġ= Ġ- 1 ĊĊĠĠĠ Ġprivate Ġval Ġsh utter Speed Range Ok : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfast est SS Ġ= ĠUtil . string ToDouble Sh utter Speed ( spinner _ fast est _ ss !!. text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġslow est SS Ġ= ĠUtil . string ToDouble Sh utter Speed ( spinner _ slow est _ ss !!. text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( fast est SS Ġ== Ġ 0 . 0 Ġ|| Ġslow est SS Ġ== Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfast est SS Ġ<= Ġslow est SS ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġf ocal Length Ok : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! edit _ focal _ length _ fl c !!. text . toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġzoom Ġ= ĠPattern . compile ("( \\ d ++) -( \\ d ++) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġm Ġ= Ġzoom . matcher ( edit _ focal _ length _ fl c !!. text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m . find ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprime Ġ= ĠPattern . compile ("( \\ d ++) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Ġ= Ġprime . matcher ( edit _ focal _ length _ fl c !!. text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m . find ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġval Ġis Data Changed : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġss Gr ain Size : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( radio _ stop _ one !!. isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( radio _ stop _ half !!. isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( radio _ stop _ one _ third !!. isChecked ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// Ġcustom ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġradio _ stop _ one !!. isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġradio _ stop _ half !!. isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġradio _ stop _ one _ third !!. isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġradio _ stop _ custom !!. isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh utter _ speed s " ãģ¯ ãģ¾ ãģł å¯¾ å¿ľ ãģĹãģªãģĦ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġdata : ĠIntent ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCamera Spec ( id , Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( created . isNotEmpty ()) Ġcreated Ġelse ĠUtil . date ToString UTC ( Date ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtil . date ToString UTC ( Date ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ mount !!. text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ manufacturer !!. text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ model !!. text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ format !!. position , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss Gr ain Size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtil . string ToDouble Sh utter Speed ( spinner _ fast est _ ss !!. text . toString ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtil . string ToDouble Sh utter Speed ( spinner _ slow est _ ss !!. text . toString ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck _ bul b _ available !!. isChecked , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss Custom Steps . map { ĠUtil . string ToDouble Sh utter Speed ( it ). toString () Ġ}. join ToString ("," ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ ev _ gr ain _ size !!. selected Item Position Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ ev _ width !!. selected Item Position Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . putExtra (" cam eras pec ", Ġc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= ĠLens Spec (- 1 , Ġ"", Ġid , Ġedit _ manufacturer !!. text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ lens _ name _ fl c !!. text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ focal _ length _ fl c !!. text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfs Adapter !!. f Steps String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . putExtra (" fixed _ lens ", Ġl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh Sh utter Speed Spin ners () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( radio _ stop _ one !!. isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ fast est _ ss !!. setAdapter < Array Adapter < CharSequence >>( ss Adapter One ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ slow est _ ss !!. setAdapter < Array Adapter < CharSequence >>( ss Adapter One ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( radio _ stop _ half !!. isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ fast est _ ss !!. setAdapter < Array Adapter < CharSequence >>( ss Adapter Half ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ slow est _ ss !!. setAdapter < Array Adapter < CharSequence >>( ss Adapter Half ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( radio _ stop _ one _ third !!. isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ fast est _ ss !!. setAdapter < Array Adapter < CharSequence >>( ss Adapter One Third ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ slow est _ ss !!. setAdapter < Array Adapter < CharSequence >>( ss Adapter One Third ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Ss Adapter Ġ= ĠArray Adapter < String >( this , Ġandroid . R . layout . simple _ spinner _ item , Ġss Custom Steps ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ fast est _ ss !!. setAdapter ( custom Ss Adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ slow est _ ss !!. setAdapter ( custom Ss Adapter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdo Sh utter Speed Validation (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġret Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġfast est SS Ġ= ĠUtil . string ToDouble Sh utter Speed ( spinner _ fast est _ ss !!. text . toString ()) ĊĠĠĠĠĠĠĠ Ġval Ġslow est SS Ġ= ĠUtil . string ToDouble Sh utter Speed ( spinner _ slow est _ ss !!. text . toString ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( fast est SS Ġ== Ġ 0 . 0 Ġ|| Ġslow est SS Ġ== Ġ 0 . 0 ) Ġ{ Ġ// æľª è¨Ńå®ļ ãģª ãģłãģĳ ãģª ãģ®ãģ§ ãĤ¨ãĥ© ãĥ¼ è¡¨ç¤º ãģ«ãģ¯ ãģĹãģªãģĦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ fast est _ ss !!. error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ slow est _ ss !!. error Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( fast est SS Ġ> Ġslow est SS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ fast est _ ss !!. error Ġ= ĠgetString ( R . string . error _ ss _ in consistent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ slow est _ ss !!. error Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ fast est _ ss !!. error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ slow est _ ss !!. error Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġret ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġload Data ( data : ĠIntent , Ġdao : ĠTr is quel Dao , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġdata . getInt Extra (" id ", Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġthis . id Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġdata . getInt Extra (" type ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġthis . type Ġ= Ġtype ĊĊĠĠĠĠĠĠĠ Ġif ( type Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ< Ġ 0 ) ĠsetTitle ( R . string . title _ activity _ reg _ cam _ and _ lens ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠĠĠĠĠĠĠ ĠsetTitle ( R . string . title _ activity _ edit _ cam _ and _ lens ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ mount !!. visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout _ fl c !!. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfs Adapter Ġ= ĠF Step Adapter ( this ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ< Ġ 0 ) ĠsetTitle ( R . string . title _ activity _ reg _ cam ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠĠĠĠĠĠĠ ĠsetTitle ( R . string . title _ activity _ edit _ cam ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif ( id Ġ>= Ġ 0 Ġ&& ĠsavedInstanceState Ġ== Ġnull ) Ġ{ Ġ// æĹ¢ åŃĺ ãĥĩãĥ¼ãĤ¿ ãĤĴ éĸĭ ãģį ãģŁ ãģ¦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġdao . get Camera ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġl : ĠLens Spec ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( type Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl Ġ= Ġdao . get Lens ( dao . get Fixed Lens Id By Body ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfs Adapter !!. setChecked State ( l !!. f Steps ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ lens _ name _ fl c !!. setText ( l . model Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ focal _ length _ fl c !!. setText ( l . focal Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . created Ġ= ĠUtil . date ToString UTC ( c !!. created ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ mount !!. setText ( c . mount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ manufacturer !!. setText ( c . manufacturer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ model !!. setText ( c . model Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c . format Ġ< Ġ 0 ) Ġc . format Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ format !!. position Ġ= Ġc . format ĊĠĠĠĠĠĠĠĠĠĠĠ Ġss Gr ain Size Ġ= Ġc . sh utter Speed Gr ain Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Checked Ss Steps Ġ= Ġss Gr ain Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġss Custom Steps Ġ= ĠArrayList ( c . sh utter Speed Steps . map Ġ{ ĠUtil . double ToString Sh utter Speed ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ fast est _ ss !!. setText ( Util . double ToString Sh utter Speed ( c . fast est Sh utter Speed !! )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ slow est _ ss !!. setText ( Util . double ToString Sh utter Speed ( c . slow est Sh utter Speed !! )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck _ bul b _ available !!. isChecked Ġ= Ġc . bul b Available ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ ev _ gr ain _ size !!. setSelection ( c . ev Gr ain Size Ġ- Ġ 1 , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ ev _ width !!. setSelection ( c . ev Width Ġ- Ġ 1 , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} else Ġif ( savedInstanceState Ġ!= Ġnull ){ Ġ// å¾ © å¸ ° ãĥĩãĥ¼ãĤ¿ ãģĤãĤĬ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfs Adapter !!. setChecked State ( savedInstanceState . getString (" F Steps String ") ? :" ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// EditText ãģ¯ åĭ Ŀ æīĭ ãģ« å¾ © åħĥ ãģĻãĤĭ ãģ®ãģ§ åĩ¦çĲĨ ä¸įè¦ģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// edit _ lens _ name _ fl c !!. setText ( savedInstanceState . getString (" fixed lens _ name ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// edit _ focal _ length _ fl c !!. setText ( savedInstanceState . getString (" fixed lens _ focal _ length ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . created Ġ= ĠsavedInstanceState . getString (" created ") ?: "" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ mount !!. setText ( savedInstanceState . getString (" mount ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ manufacturer !!. setText ( savedInstanceState . getString (" manufacturer ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ model !!. setText ( savedInstanceState . getString (" model _ name ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ format !!. position Ġ= ĠsavedInstanceState . getInt (" format _ position ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġss Gr ain Size Ġ= ĠsavedInstanceState . getInt (" ss _ gr ain _ size ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Checked Ss Steps Ġ= ĠsavedInstanceState . getInt (" previous _ checked _ ss _ steps ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġss Custom Steps Ġ= ĠsavedInstanceState . getString ArrayList (" ss _ custom _ steps ") Ġ?: Ġarray ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ fast est _ ss !!. setText ( savedInstanceState . getString (" fast est _ ss ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ slow est _ ss !!. setText ( savedInstanceState . getString (" slow est _ ss ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck _ bul b _ available !!. isChecked Ġ= ĠsavedInstanceState . getBoolean (" bul b _ available ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ ev _ gr ain _ size !!. setSelection ( savedInstanceState . getInt (" ev _ gr ain _ size ") Ġ- Ġ 1 , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ ev _ width !!. setSelection ( savedInstanceState . getInt (" ev _ width ") Ġ- Ġ 1 , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} else { Ġ// æľª åħ¥åĬĽ éĸĭ ãģį ãģŁ ãģ¦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . created Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Checked Ss Steps Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== Ġ 1 ) Ġgrid view !!. adapter Ġ= Ġfs Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġset Event Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġedit _ mount !!. add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġedit _ mount !!. on ItemClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġparent , Ġview , Ġposition , Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġedit _ manufacturer !!. add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġedit _ model !!. add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( edit _ model !!. text . toString () Ġ== Ġ" jenkins ush i ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ Edit Camera Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . google _ maps _ key ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġspinner _ format !!. add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġradio _ stop _ custom . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( previous Checked Ss Steps Ġ== Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠSh utter Speed Custom ize Dialog Fragment . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( DIALOG _ CUSTOM _ SHUT TER _ SPEED S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// fragment . arguments ?. put Int (" id ", Ġitem . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" title ", ĠgetString ( R . string . title _ dialog _ custom _ ss )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" message ", ĠgetString ( R . string . msg _ dialog _ custom _ ss )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault _ value Ġ= Ġif ( ss Custom Steps . size Ġ== Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString Array ( R . array . sh utter _ speed s _ one ). join ToString ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss Custom Steps . join ToString ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" default _ value ", Ġdefault _ value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . show On ( this , Ġ" dialog ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrg Ġ= ĠfindViewById < Radio Group >( R . id . radio group _ ss _ stop ) ĊĠĠĠĠĠĠĠ Ġrg . setOn Checked ChangeListener Ġ{ Ġgroup , Ġchecked Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( checked Id Ġ== ĠR . id . radio _ stop _ custom ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠSh utter Speed Custom ize Dialog Fragment . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( DIALOG _ CUSTOM _ SHUT TER _ SPEED S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// fragment . arguments ?. put Int (" id ", Ġitem . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" title ", ĠgetString ( R . string . title _ dialog _ custom _ ss )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" message ", ĠgetString ( R . string . msg _ dialog _ custom _ ss )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault _ value Ġ= Ġif ( ss Custom Steps . size Ġ== Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString Array ( R . array . sh utter _ speed s _ one ). join ToString ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss Custom Steps . join ToString ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" default _ value ", Ġdefault _ value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . show On ( this , Ġ" dialog ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Checked Ss Steps Ġ= Ġss Gr ain Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Sh utter Speed Spin ners () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġspinner _ fast est _ ss !!. on ItemClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġparent , Ġview , Ġposition , Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Sh utter Speed Validation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġspinner _ slow est _ ss !!. on ItemClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġparent , Ġview , Ġposition , Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Sh utter Speed Validation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcheck _ bul b _ available !!. setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġspinner _ ev _ gr ain _ size !!. on ItemSelected Listener Ġ= Ġobject Ġ: ĠAdapter View . On ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( parent : ĠAdapter View < *> ?, Ġview : ĠView ?, Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View < *> ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġspinner _ ev _ width !!. on ItemSelected Listener Ġ= Ġobject Ġ: ĠAdapter View . On ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( parent : ĠAdapter View < *> ?, Ġview : ĠView ?, Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View < *> ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġedit _ focal _ length _ fl c !!. add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġedit _ lens _ name _ fl c !!. add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġgrid view !!. on ItemClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġparent , Ġview , Ġposition , Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġcan Save (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcamera Ok : ĠBoolean ĊĠĠĠĠĠĠĠ Ġval Ġlens Ok : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ// ãĥŀ ãĤ¦ ãĥ³ãĥĪ ãģĮ ç©º ãģ§ ãģªãģĦ ĊĠĠĠĠĠĠĠ Ġ// ãĥ¢ ãĥĩ ãĥ« åĲį ãģĮ ç©º ãģ§ ãģªãģĦ ĊĠĠĠĠĠĠĠ Ġ// ãĤ· ãĥ£ ãĥĥ ãĤ¿ ãĥ¼ãĤ¹ ãĥĶ ãĥ¼ãĥī ãĥ¬ ãĥ³ ãĤ¸ ãģĮ è¨Ńå®ļ ãģķãĤĮ ãģ¦ãģĦ ãģ¦ åĨħå®¹ ãģ« çŁ Ľ çĽ ¾ ãģĮ ãģªãģĦ ĊĠĠĠĠĠĠĠ Ġcamera Ok Ġ= Ġ( type Ġ== Ġ 1 Ġ|| Ġtype Ġ== Ġ 0 Ġ&& Ġedit _ mount !!. text . isNotEmpty ()) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( edit _ model !!. text ?. isNotEmpty () Ġ?: Ġfalse ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsh utter Speed Range Ok ĊĊĠĠĠĠĠĠĠ Ġ// ãĥ¬ ãĥ³ ãĤº ä»ĺ ãģį ãĥ¢ ãĥĩ ãĥ«ãģ® åł´åĲĪ ĊĠĠĠĠĠĠĠ Ġ// çĦ ¦ çĤ¹ è·Ŀ éĽ ¢ ãģĮ è¨Ńå®ļ ãģķãĤĮãģ¦ãģĦãĤĭ ĊĠĠĠĠĠĠĠ Ġ// F åĢ¤ ãĥªãĤ¹ãĥĪ ãģ« å°ĳ ãģªãģı ãģ¨ ãĤĤ 1 ãģ¤ ãĥģ ãĤ§ ãĥĥãĤ¯ ãģĮ åħ¥ ãģ£ ãģ¦ãģĦãĤĭ ĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlens Ok Ġ= Ġf ocal Length Ok Ġ&& Ġ! fs Adapter !!. f Steps String . isEmpty () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlens Ok Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcamera Ok Ġ&& Ġlens Ok ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon User Interaction () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on User Interaction () ĊĠĠĠĠĠĠĠ Ġuser Is Interact ing Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġis Res umed Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Res umed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ edit _ camera ) ĊĊĠĠĠĠĠĠĠ Ġval Ġaction Bar Ġ= Ġsupport ActionBar ĊĠĠĠĠĠĠĠ Ġaction Bar !!. set Display Home As Up Enabled ( true ) ĊĊĠĠĠĠĠĠĠ Ġss Adapter One Ġ= ĠArray Adapter . createFrom Resource ( this , ĠR . array . sh utter _ speed s _ one , Ġandroid . R . layout . simple _ spinner _ item ) ĊĠĠĠĠĠĠĠ Ġss Adapter Half Ġ= ĠArray Adapter . createFrom Resource ( this , ĠR . array . sh utter _ speed s _ half , Ġandroid . R . layout . simple _ spinner _ item ) ĊĠĠĠĠĠĠĠ Ġss Adapter One Third Ġ= ĠArray Adapter . createFrom Resource ( this , ĠR . array . sh utter _ speed s _ one _ third , Ġandroid . R . layout . simple _ spinner _ item ) ĊĊĠĠĠĠĠĠĠ Ġss Adapter One !!. set DropDown View Resource ( android . R . layout . simple _ spinner _ dropdown _ item ) ĊĠĠĠĠĠĠĠ Ġss Adapter Half !!. set DropDown View Resource ( android . R . layout . simple _ spinner _ dropdown _ item ) ĊĠĠĠĠĠĠĠ Ġss Adapter One Third !!. set DropDown View Resource ( android . R . layout . simple _ spinner _ dropdown _ item ) ĊĊĠĠĠĠĠĠĠ Ġspinner _ fast est _ ss !!. setAdapter < Array Adapter < CharSequence >>( ss Adapter One ) ĊĠĠĠĠĠĠĠ Ġspinner _ slow est _ ss !!. setAdapter < Array Adapter < CharSequence >>( ss Adapter One ) ĊĊĠĠĠĠĠĠĠ Ġspinner _ fast est _ ss !!. set Helper Text ( getString ( R . string . label _ sh utter _ speed _ fast est )) ĊĠĠĠĠĠĠĠ Ġspinner _ slow est _ ss !!. set Helper Text ( getString ( R . string . label _ sh utter _ speed _ slow est )) ĊĊĠĠĠĠĠĠĠ Ġformat Adapter Ġ= ĠArray Adapter . createFrom Resource ( this , ĠR . array . film _ formats , Ġandroid . R . layout . simple _ spinner _ item ) ĊĠĠĠĠĠĠĠ Ġformat Adapter !!. set DropDown View Resource ( android . R . layout . simple _ spinner _ dropdown _ item ) ĊĠĠĠĠĠĠĠ Ġspinner _ format !!. setAdapter < Array Adapter < CharSequence >>( format Adapter ) ĊĠĠĠĠĠĠĠ Ġspinner _ format !!. position Ġ= ĠFil m Format . FULL _ FRAME . ordinal ĊĊĠĠĠĠĠĠĠ Ġval Ġmanufacturer _ adapter Ġ= Ġget Suggest List Pref (" camera _ manufacturer ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . array . camera _ manufacturer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . layout . simple _ dropdown _ item _ 1 line ) ĊĠĠĠĠĠĠĠ Ġedit _ manufacturer !!. setAdapter ( manufacturer _ adapter ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmount _ adapter Ġ= Ġget Suggest List Pref (" camera _ mount s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . array . camera _ mount s , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . layout . simple _ dropdown _ item _ 1 line ) ĊĠĠĠĠĠĠĠ Ġedit _ mount !!. setAdapter ( mount _ adapter ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġintent ĊĊĠĠĠĠĠĠĠ Ġval Ġdao Ġ= ĠTr is quel Dao ( application Context ) ĊĠĠĠĠĠĠĠ Ġdao . connection () ĊĠĠĠĠĠĠĠ Ġload Data ( data , Ġdao , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġdao . close () ĊĠĠĠĠĠĠĠ Ġset Event Listeners () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Dirty Ġ= ĠsavedInstanceState . getBoolean (" is Dirty ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Dirty Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( fs Adapter Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout State . putString (" F Steps String ", Ġfs Adapter !!. f Steps String ) ĊĠĠĠĠĠĠĠ Ġout State . put Boolean (" is Dirty ", Ġis Dirty ) ĊĠĠĠĠĠĠĠ Ġout State . putString (" created ", Ġthis . created ) ĊĠĠĠĠĠĠĠ Ġout State . putString (" mount ", Ġedit _ mount !!. text . toString ()) ĊĠĠĠĠĠĠĠ Ġout State . putString (" manufacturer ", Ġedit _ manufacturer !!. text . toString ()) ĊĠĠĠĠĠĠĠ Ġout State . putString (" model _ name ", Ġedit _ model !!. text . toString ()) ĊĠĠĠĠĠĠĠ Ġout State . put Int (" format _ position ", Ġspinner _ format !!. position ) ĊĠĠĠĠĠĠĠ Ġout State . put Int (" ss _ gr ain _ size ", Ġss Gr ain Size ) ĊĠĠĠĠĠĠĠ Ġout State . put Int (" previous _ checked _ ss _ steps ", Ġprevious Checked Ss Steps ) ĊĠĠĠĠĠĠĠ Ġout State . putString ArrayList (" ss _ custom _ steps ", Ġss Custom Steps ) ĊĠĠĠĠĠĠĠ Ġout State . putString (" fast est _ ss ", Ġspinner _ fast est _ ss !!. text . toString ()) ĊĠĠĠĠĠĠĠ Ġout State . putString (" slow est _ ss ", Ġspinner _ slow est _ ss !!. text . toString ()) ĊĠĠĠĠĠĠĠ Ġout State . put Boolean (" bul b _ available ", Ġcheck _ bul b _ available !!. isChecked ) ĊĠĠĠĠĠĠĠ Ġout State . put Int (" ev _ gr ain _ size ", Ġspinner _ ev _ gr ain _ size !!. selected Item Position Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġout State . put Int (" ev _ width ", Ġspinner _ ev _ width !!. selected Item Position Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġget Suggest List Pref ( pref key : ĠString , Ġdef R sc Id : ĠInt , Ġresource : ĠInt ): ĠArray Adapter < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpref Ġ= ĠPreference Manager . getDefault SharedPreferences ( application Context ) ĊĠĠĠĠĠĠĠ Ġval Ġpref str Ġ= Ġpref . getString ( pref key , Ġ" [] ") ĊĠĠĠĠĠĠĠ Ġval Ġstr Array Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġval Ġdef R sc Ġ= Ġresources . getString Array ( def R sc Id ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarray Ġ= ĠJSONArray ( pref str ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġarray . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array . add ( array . getString ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdef R sc . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( str Array . contains ( def R sc [ i ])) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array . add ( def R sc [ i ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠArray Adapter < String >( this , Ġresource , Ġstr Array ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġsave Suggest List Pref ( pref key : ĠString , Ġdef R sc Id : ĠInt , ĠnewValue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( newValue . isEmpty ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġpref Ġ= ĠPreference Manager . getDefault SharedPreferences ( application Context ) ĊĠĠĠĠĠĠĠ Ġval Ġpref str Ġ= Ġpref . getString ( pref key , Ġ" [] ") ĊĠĠĠĠĠĠĠ Ġval Ġstr Array Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġval Ġdef R sc Ġ= Ġresources . getString Array ( def R sc Id ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarray Ġ= ĠJSONArray ( pref str ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġarray . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array . add ( array . getString ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( str Array . indexOf ( newValue ) Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array . remove At ( str Array . indexOf ( newValue )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstr Array . add ( 0 , ĠnewValue ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdef R sc . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( str Array . contains ( def R sc [ i ])) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array . add ( def R sc [ i ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠJSONArray ( str Array ) ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= Ġpref . edit () ĊĠĠĠĠĠĠĠ Ġe . putString ( pref key , Ġresult . toString ()) ĊĠĠĠĠĠĠĠ Ġe . apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Dialog Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 1 Ġ-> Ġif Ġ( result Code Ġ== ĠDialog Interface . BUTTON _ POSITIVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Data Ġ= Ġthis . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġresult Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Suggest List Pref (" camera _ manufacturer ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . array . camera _ manufacturer , Ġedit _ manufacturer !!. text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Suggest List Pref (" camera _ mount s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . array . camera _ mount s , Ġedit _ mount !!. text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( result Code Ġ== ĠDialog Interface . BUTTON _ NEGATIVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ C ANCE LED , ĠIntent ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 2 Ġ-> Ġif Ġ( result Code Ġ== ĠDialog Interface . BUTTON _ POSITIVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġdo Ġnothing Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( result Code Ġ== ĠDialog Interface . BUTTON _ NEGATIVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ C ANCE LED , ĠIntent ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDIALOG _ CUSTOM _ SHUT TER _ SPEED S Ġ-> Ġif Ġ( result Code Ġ== ĠDialog Interface . BUTTON _ POSITIVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList ( data . getString Extra (" value "). split ("\ n "). sorted By Ġ{ ĠUtil . string ToDouble Sh utter Speed ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss Custom Steps Ġ= Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Sh utter Speed Spin ners () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Checked Ss Steps Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Res umed ) Ġis Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( result Code Ġ== ĠDialog Interface . BUTTON _ NEGATIVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss Gr ain Size Ġ= Ġprevious Checked Ss Steps ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Dialog Cancelled ( request Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( request Code ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDIALOG _ CUSTOM _ SHUT TER _ SPEED S Ġ-> Ġss Gr ain Size Ġ= Ġprevious Checked Ss Steps ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġon Dialog Result ( request Code , ĠDialog Interface . BUTTON _ NE UT R AL , Ġnull ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Dirty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ C ANCE LED , ĠIntent ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( can Save ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠYes No Dialog Fragment . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( 1 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" message ", ĠgetString ( R . string . msg _ save _ or _ discard _ data )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" positive ", ĠgetString ( R . string . save )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" negative ", ĠgetString ( R . string . discard )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . show On ( this , Ġ" dialog ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠYes No Dialog Fragment . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( 1 0 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" message ", ĠgetString ( R . string . msg _ continue _ editing _ or _ discard _ data )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" positive ", ĠgetString ( R . string . continue _ editing )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" negative ", ĠgetString ( R . string . discard )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . show On ( this , Ġ" dialog ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ save Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Suggest List Pref (" camera _ manufacturer ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . array . camera _ manufacturer , Ġedit _ manufacturer !!. text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Suggest List Pref (" camera _ mount s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . array . camera _ mount s , Ġedit _ mount !!. text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . save , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . menu _ save ). isEnabled Ġ= Ġcan Save () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Dirty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ C ANCE LED , ĠIntent ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( can Save ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠYes No Dialog Fragment . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( 1 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" message ", ĠgetString ( R . string . msg _ save _ or _ discard _ data )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" positive ", ĠgetString ( R . string . save )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" negative ", ĠgetString ( R . string . discard )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . show On ( this , Ġ" dialog ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠYes No Dialog Fragment . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( 1 0 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" message ", ĠgetString ( R . string . msg _ continue _ editing _ or _ discard _ data )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" positive ", ĠgetString ( R . string . continue _ editing )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments ?. putString (" negative ", ĠgetString ( R . string . discard )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . show On ( this , Ġ" dialog ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ