package Ġpicker . ug ur tek bas . com . Picker Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . text . format . DateFormat Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġpicker . ug ur tek bas . com . library . R Ċ import Ġjava . util .* Ċ import Ġkotlin . math .* ĊĊ Ċ interface ĠTime Changed Listener Ġ{ ĊĠĠĠ Ġfun Ġtime Changed ( date : ĠDate ?) Ċ } Ċ Ċ class ĠP icker Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext ?, ĊĠĠĠĠĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠCard View ( context !! , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġpaint : ĠPaint ĊĠĠĠ Ġprivate Ġval Ġrect F : ĠRect F ĊĠĠĠ Ġprivate Ġval Ġdial X fer Mode : ĠX fer mode Ġ= ĠPort er D uff X fer mode ( Port er D uff . Mode . DST _ IN ) ĊĠĠĠ Ġprivate Ġvar Ġmin Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġlocal radius Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġdial Radius Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġoffset Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġs lop X Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġs lop Y Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġdial X Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġdial Y Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġhour Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġcurrent Min Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġvar Ġprevious Hour Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar ĠtextColor Ġ= ĠColor . BLACK ĊĠĠĠ Ġprivate Ġvar Ġclock Color Ġ= ĠColor . parse Color ("# 0 f 9 2 8 0 ") ĊĠĠĠ Ġprivate Ġvar Ġdial Color Ġ= ĠColor . parse Color ("# FF 9 F 5 B ") ĊĠĠĠ Ġprivate Ġvar Ġcanvas Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠ Ġprivate Ġvar Ġtrack Size Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġdial Radius DP Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġangle : ĠDouble ĊĠĠĠ Ġprivate Ġvar Ġdegrees Ġ= Ġ 0 . 0 ĊĠĠĠ Ġprivate Ġvar Ġis Moving Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġam Pm : ĠBoolean ĊĠĠĠ Ġvar Ġhour Format : ĠBoolean ĊĠĠĠ Ġprivate Ġvar Ġfirst Run Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġmanual Adjust Ġ= Ġfalse ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTo Ġenable Ġadjust ing Ġtime Ġby Ġtouch ing Ġon Ġclock 's Ġdial ĊĠĠĠĠ Ġ* Ġ@ param Ġdial Adjust ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Dial Adjust Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġh Str : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġam PM : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġam Pm Str ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġvar Ġam Pm Str : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġtime Listener : ĠTime Changed Listener ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġshow Text : Boolean Ġ= Ġfalse ĊĠĠĠ Ġvar Ġicon Bitmap : Bitmap ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġicon Size : Int Ġ= Ġ 4 8 ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAN _ HOUR _ AS _ MIN UTES Ġ= Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠA _ DAY _ AS _ HOUR S Ġ= Ġ 2 4 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠHAL F _ DAY _ AS _ HOUR S Ġ= Ġ 1 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAM Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPM Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Layer Type ( LAYER _ TYPE _ SOFTWARE , Ġnull ) ĊĠĠĠĠĠĠĠ Ġpaint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġpaint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġpaint . stroke Cap Ġ= ĠPaint . Cap . ROUND ĊĠĠĠĠĠĠĠ Ġpaint . textAlign Ġ= ĠPaint . Align . CENTER ĊĠĠĠĠĠĠĠ Ġrect F Ġ= ĠRect F () ĊĠĠĠĠĠĠĠ Ġangle Ġ= Ġ- Math . PI Ġ/ Ġ 2 Ġ+ Ġ. 0 0 1 ĊĠĠĠĠĠĠĠ Ġhour Format Ġ= ĠDate Format . is 2 4 Hour Format ( getContext ()) ĊĠĠĠĠĠĠĠ Ġam Pm Ġ= ĠCalendar . getInstance ()[ Calendar . AM _ PM ] Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġload App Theme Defaults () ĊĠĠĠĠĠĠĠ Ġload Attributes ( attrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġdefault Ġtheme Ġattributes Ġfor Ġpicker ĊĠĠĠĠ Ġ* ĠThese Ġwill Ġbe Ġused Ġif Ġpicker 's Ġattributes Ġaren 't Ġset ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress Lint (" ResourceType ") ĊĠĠĠ Ġprivate Ġfun Ġload App Theme Defaults () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtyped Value Ġ= ĠTyped Value () ĊĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġcontext . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Value . data , Ġint ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . attr . textColor Primary Inverse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . attr . textColor Primary , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . attr . color Control Normal ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġset Dial Color ( typed Array . getColor ( 0 , Ġdial Color )) ĊĠĠĠĠĠĠĠ Ġset TextColor ( typed Array . getColor ( 1 , ĠtextColor )) ĊĠĠĠĠĠĠĠ Ġset Clock Color ( typed Array . getColor ( 2 , Ġclock Color )) ĊĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġpicker 's Ġattributes Ġfrom Ġxml Ġfile ĊĠĠĠĠ Ġ* Ġ@ param Ġattrs ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġload Attributes ( attrs : ĠAttributeSet ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( attrs Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Picker ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( typed Array . getColor ( R . style able . Picker _ textColor , ĠtextColor )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Dial Color ( typed Array . getColor ( R . style able . Picker _ dial Color , Ġdial Color )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Clock Color ( typed Array . getColor ( R . style able . Picker _ clock Color , Ġclock Color )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Canvas Color ( typed Array . getColor ( R . style able . Picker _ canvas Color , Ġcanvas Color )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhour Format Ġ= Ġtyped Array . getBoolean ( R . style able . Picker _ hour Format , Ġhour Format ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Track Size ( typed Array . get Dimension Pixel Size ( R . style able . Picker _ track Size , Ġtrack Size )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Dial Radius DP ( typed Array . get Dimension Pixel Size ( R . style able . Picker _ dial Radius , Ġdial Radius DP )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon draw Ġ= Ġ Ġtyped Array . get Drawable ( R . style able . Picker _ track Icon Bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( icon draw != null ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Bitmap Ġ= Ġicon draw . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap : ĠBitmap Ġ= ĠBitmap . create Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . Config . ARGB _ 8 8 8 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setBounds ( 0 , Ġ 0 , Ġcanvas . width , Ġcanvas . height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . draw ( canvas ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠOut Of Memory Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Size Ġ= Ġ Ġtyped Array . getInteger ( R . style able . Picker _ track Icon Size , icon Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setEnabled ( enabled ) ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= ĠMeasure Spec . getSize ( width Measure Spec ). toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= ĠMeasure Spec . getSize ( height Measure Spec ). toFloat () ĊĠĠĠĠĠĠĠ Ġmin Ġ= Ġmin ( width , Ġheight ) ĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( min . toInt (), Ġmin . toInt ()) ĊĠĠĠĠĠĠĠ Ġoffset Ġ= Ġmin Ġ* Ġ 0 . 5 f ĊĠĠĠĠĠĠĠ Ġval Ġpadding Ġ= Ġmin Ġ/ Ġ 2 0 ĊĠĠĠĠĠĠĠ Ġlocal radius Ġ= Ġmin Ġ/ Ġ 2 Ġ- Ġpadding Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġset Dial Radius DP ( dial Radius DP ) ĊĠĠĠĠĠĠĠ Ġdial Radius Ġ= Ġdial Radius DP . toFloat () ĊĠĠĠĠĠĠĠ Ġrect F [- local radius , Ġ- local radius , Ġlocal radius ] Ġ= Ġlocal radius ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġcanvas . translate ( offset , Ġoffset ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Color ( canvas Color ) ĊĠĠĠĠĠĠĠ Ġif Ġ( first Run ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Min Ġ= Ġcal [ Calendar . MINUTE ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhour Ġ= Ġcal [ Calendar . HOUR _ OF _ DAY ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Time ( hour , Ġcurrent Min ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Rad Ġto ĠDe g ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdegrees Ġ= Ġ( Math . to Degrees ( angle ) Ġ+ Ġ 9 0 ) Ġ% Ġ 3 6 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdegrees Ġ= Ġ( degrees Ġ+ Ġ 3 6 0 ) Ġ% Ġ 3 6 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// get ĠAM / PM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hour Format ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Ġ= Ġdegrees . toInt () Ġ/ Ġ 1 5 Ġ% ĠA _ DAY _ AS _ HOUR S ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠWhen Ġminutes Ġare Ġset Ġprogram matically , Ġbecause Ġof Ġrounding Ġissues , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġnew Ġvalue Ġof Ġminutes Ġmight Ġbe Ġdifferent Ġthan Ġthe Ġone Ġis Ġset . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠTo Ġavoid Ġthat Ġif Ġstatement Ġchecks Ġif Ġtime Ġsetting Ġis Ġdone Ġprogram matically Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġby Ġtouch Ġgest ures . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( manual Adjust ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Min Ġ= Ġ( degrees Ġ* Ġ 4 ). toInt () Ġ% ĠAN _ HOUR _ AS _ MIN UTES ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanual Adjust Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġam PM Ġ= Ġif Ġ( current Min Ġ< Ġ 1 0 ) Ġ" 0 " Ġ+ Ġcurrent Min Ġelse Ġcurrent Min . toString () Ġ+ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġam Pm Str Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( manual Adjust ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// get ĠMin utes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Min Ġ= Ġ( degrees Ġ* Ġ 2 ). toInt () Ġ% ĠAN _ HOUR _ AS _ MIN UTES ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanual Adjust Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Ġ= Ġdegrees . toInt () Ġ/ Ġ 3 0 Ġ% ĠHAL F _ DAY _ AS _ HOUR S ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hour Ġ== Ġ 0 ) Ġhour Ġ= ĠHAL F _ DAY _ AS _ HOUR S ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġam PM Ġ= Ġif Ġ( current Min Ġ< Ġ 1 0 ) Ġ" 0 " Ġ+ Ġcurrent Min Ġelse Ġcurrent Min . toString () Ġ+ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// AM - PM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hour Ġ== Ġ 1 2 Ġ&& Ġprevious Hour Ġ== Ġ 1 1 Ġ|| Ġhour Ġ== Ġ 1 1 Ġ&& Ġprevious Hour Ġ== Ġ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġam Pm Ġ= Ġ! am Pm ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġam Pm Str Ġ= Ġif Ġ( am Pm ) Ġ" AM " Ġelse Ġ" PM " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprevious Hour Ġ= Ġhour ĊĠĠĠĠĠĠ Ġif ( show Text ) Ġwith ( paint ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠtextColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġif Ġ( isEnabled ) Ġpaint . alpha Ġelse Ġ 7 7 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġmin Ġ/ Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// the Ġtext Ġwhich Ġshows Ġtime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh Str Ġ= Ġif Ġ( hour Ġ< Ġ 1 0 ) Ġ" 0 $ hour " Ġelse Ġhour . toString () Ġ+ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Format Ġ= Ġ Ġcurrent Min . let { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it Ġ< Ġ 1 0 ) Ġ" 0 $ it " Ġelse Ġit . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ("$ h Str :$ min Format ", Ġ 0 f , Ġpaint . text Size Ġ/ Ġ 4 , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġmin Ġ/ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( am Pm Str !! , Ġ 0 f , Ġpaint . text Size Ġ* Ġ 2 , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// clock s Ġdial ĊĠĠĠĠĠĠĠ Ġwith ( paint ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Track Size ( track Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġtrack Size . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġclock Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġif Ġ( isEnabled ) Ġpaint . alpha Ġelse Ġ 7 7 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw O val ( rect F , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// small Ġcircle Ġt Ġadjust Ġtime ĊĠĠĠĠĠĠĠ Ġwith ( paint ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Pointer Position ( angle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxfer mode Ġ= Ġdial X fer Mode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( dial X , Ġdial Y , Ġdial Radius , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġdial Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġif Ġ( isEnabled ) Ġpaint . alpha Ġelse Ġ 7 7 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxfer mode Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( dial X , Ġdial Y , Ġdial Radius , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Bitmap ?. let { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( icon Bitmap !! , dial X -( icon Size / 2 ), dial Y -( icon Size / 2 ), paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isEnabled ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġmanual Adjust Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġparent . request Dis allow Intercept Touch Event ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġpos X Ġ= Ġevent . x Ġ- Ġoffset ĊĠĠĠĠĠĠĠ Ġval Ġpos Y Ġ= Ġevent . y Ġ- Ġoffset ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Pointer Position ( angle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pos X Ġ>= Ġdial X Ġ- Ġdial Radius Ġ&& Ġpos X Ġ<= Ġdial X Ġ+ Ġdial Radius Ġ&& Ġpos Y Ġ>= Ġdial Y Ġ- Ġdial Radius Ġ&& Ġpos Y Ġ<= Ġdial Y Ġ+ Ġdial Radius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs lop X Ġ= Ġpos X Ġ- Ġdial X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs lop Y Ġ= Ġpos Y Ġ- Ġdial Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Moving Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Dial Adjust ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx S qr Ġ= Ġpos X . toDouble (). pow ( 2 . 0 ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy S qr Ġ= Ġpos Y . toDouble (). pow ( 2 . 0 ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdistance Ġ= ĠMath . sqrt ( x S qr Ġ+ Ġy S qr . toDouble ()). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// check Ġif Ġtouched Ġpoint Ġis Ġon Ġdial ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( distance Ġ<= Ġlocal radius Ġ+ Ġtrack Size Ġ&& Ġdistance Ġ>= Ġlocal radius Ġ- Ġtrack Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġangle Ġ= Ġatan 2 ( pos Y . toDouble (), Ġpos X . toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Listener ?. time Changed ( time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . request Dis allow Intercept Touch Event ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġif Ġ( is Moving ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġangle Ġ= Ġatan 2 ( pos Y Ġ- Ġs lop Y . toDouble (), Ġpos X Ġ- Ġs lop X . toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Listener ?. time Changed ( time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . request Dis allow Intercept Touch Event ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Moving Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ CANCEL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalculate Pointer Position ( angle : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdial X Ġ= Ġ( local radius Ġ* Ġcos ( angle )). toFloat () ĊĠĠĠĠĠĠĠ Ġdial Y Ġ= Ġ( local radius Ġ* Ġsin ( angle )). toFloat () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// PM ĊĠĠĠ Ġval Ġcurrent Hour : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent Hour Ġ= Ġhour ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( hour Format ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Hour ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( am Pm ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Hour Ġ== Ġ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Hour Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// PM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Hour Ġ< Ġ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Hour Ġ+= Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Hour ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset TextColor ( textColor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . textColor Ġ= ĠtextColor ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Clock Color ( clock Color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . clock Color Ġ= Ġclock Color ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Dial Color ( dial Color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . dial Color Ġ= Ġdial Color ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Canvas Color ( canvas Color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . canvas Color Ġ= Ġcanvas Color ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTo Ġset Ġdial 's Ġsize ĊĠĠĠĠ Ġ* Ġ@ param Ġin Track Size ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Track Size ( in Track Size : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// track 's Ġdefault Ġsize ĊĠĠĠĠĠĠĠ Ġtrack Size Ġ= Ġif Ġ( in Track Size Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( min Ġ/ Ġ 2 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( dial Radius DP Ġ> Ġ 0 Ġ&& Ġin Track Size Ġ> Ġ 2 Ġ* Ġdial Radius DP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( min Ġ/ Ġ 2 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Track Size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTo Ġset Ġadj uster 's Ġsize ĊĠĠĠĠ Ġ* Ġ@ param Ġin Dial Radius DP ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Dial Radius DP ( in Dial Radius DP : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// adj uster 's Ġdefault Ġsize ĊĠĠĠĠĠĠĠ Ġdial Radius DP Ġ= Ġif Ġ( in Dial Radius DP Ġ<= Ġ 0 Ġ|| Ġin Dial Radius DP Ġ> Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( local radius Ġ/ Ġ 7 ). toInt () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Dial Radius DP ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtime : ĠDate ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtmp Ġ= Ġhour ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! am Pm ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tmp Ġ< Ġ 1 2 ) Ġtmp Ġ+= Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tmp Ġ== Ġ 1 2 ) Ġtmp Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar [ Calendar . HOUR _ OF _ DAY ] Ġ= Ġtmp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar [ Calendar . MINUTE ] Ġ= Ġcurrent Min ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcalendar . time ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġused Ġto Ġset Ġpicker 's Ġtime ĊĠĠĠĠ Ġ* Ġ@ param Ġhour ĊĠĠĠĠ Ġ* Ġ@ param Ġminute ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Time ( hour : ĠInt , Ġminute : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( is Time Valid ( hour , Ġminute , Ġtrue )) Ġ{ Ġresources . getString ( R . string . out Of Range Exception Message ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTo Ġhandle ĠAM / PM Ġdecision Ġwhen Ġtime Ġis Ġset ĊĠĠĠĠĠĠĠ Ġif Ġ( am Pm Ġ&& Ġhour Ġ> Ġ 1 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġam Pm Ġ= Ġ! am Pm ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! am Pm Ġ&& Ġ( hour Ġ< ĠHAL F _ DAY _ AS _ HOUR S Ġ|| Ġhour Ġ== ĠA _ DAY _ AS _ HOUR S )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġam Pm Ġ= Ġ! am Pm ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinit Time ( hour , Ġminute ) ĊĠĠĠĠĠĠĠ Ġthis . invalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġused Ġto Ġset Ġpicker 's Ġtime Ġwith ĠAM / PM Ġvalue ĊĠĠĠĠ Ġ* Ġ@ param Ġhour ĊĠĠĠĠ Ġ* Ġ@ param Ġminute ĊĠĠĠĠ Ġ* Ġ@ param Ġm idd ay ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Time ( hour : ĠInt , Ġminute : ĠInt , Ġm idd ay : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( is Time Valid ( hour , Ġminute , Ġfalse )) Ġ{ Ġresources . getString ( R . string . out Of Range Exception Message 2 ) Ġ} ĊĠĠĠĠĠĠĠ Ġhour Format Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġam Pm Ġ= Ġm idd ay ĊĠĠĠĠĠĠĠ Ġinit Time ( hour , Ġminute ) ĊĠĠĠĠĠĠĠ Ġthis . invalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġused Ġto Ġset Ġpicker 's Ġtime Ġwith Ġcalendar Ġobject ĊĠĠĠĠ Ġ* Ġ@ param Ġin Calendar ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Time ( in Calendar : ĠCalendar ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm idd ay Ġ= Ġin Calendar [ Calendar . AM _ PM ] Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġthis . setTime ( in Calendar [ Calendar . HOUR ], Ġin Calendar [ Calendar . MINUTE ], Ġm idd ay ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġused Ġto Ġinitialize Ġpicker 's Ġtime ĊĠĠĠĠ Ġ* Ġ@ param Ġhour ĊĠĠĠĠ Ġ* Ġ@ param Ġminutes ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Time ( hour : ĠInt , Ġminutes : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġhour Ġ= Ġhour ĊĠĠĠĠĠĠĠ Ġthis . hour Ġ= Ġhour ĊĠĠĠĠĠĠĠ Ġcurrent Min Ġ= Ġminutes ĊĠĠĠĠĠĠĠ Ġfirst Run Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġam PM Ġ= Ġif Ġ( minutes Ġ< Ġ 1 0 ) Ġ" 0 $ minutes " Ġelse Ġminutes . toString () Ġ+ Ġ"" ĊĠĠĠĠĠĠĠ Ġif Ġ( hour Format ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġam Pm Str Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdegrees Ġ= Ġhour Ġ% ĠA _ DAY _ AS _ HOUR S Ġ* Ġ 1 5 Ġ+ Ġ( minutes Ġ% ĠAN _ HOUR _ AS _ MIN UTES Ġ/ Ġ 4 ). toDouble () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hour Ġ== Ġ 0 ) Ġhour Ġ= ĠHAL F _ DAY _ AS _ HOUR S ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hour Ġ== Ġ 1 2 Ġ&& Ġprevious Hour Ġ== Ġ 1 1 Ġ|| Ġhour Ġ== Ġ 1 1 Ġ&& Ġprevious Hour Ġ== Ġ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġam Pm Ġ= Ġ! am Pm ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġam Pm Str Ġ= Ġif Ġ( am Pm ) Ġ" AM " Ġelse Ġ" PM " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdegrees Ġ= Ġhour Ġ% ĠHAL F _ DAY _ AS _ HOUR S Ġ* Ġ 3 0 Ġ+ Ġ( minutes Ġ% ĠAN _ HOUR _ AS _ MIN UTES Ġ/ Ġ 2 ). toDouble () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġangle Ġ= ĠMath . to Radians ( degrees ) Ġ- ĠMath . PI Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġfirst Run Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġif Ġtime Ġvalues Ġare Ġbetween Ġvalid Ġrange ĊĠĠĠĠ Ġ* Ġ@ param Ġhour ĊĠĠĠĠ Ġ* Ġ@ param Ġminute ĊĠĠĠĠ Ġ* Ġ@ param Ġis 2 4 Hour Ġif Ġtime Ġis Ġset Ġas Ġ 2 4 hour Ġformat ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġvalue Ġis Ġvalid , Ġfalse Ġotherwise ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġis Time Valid ( hour : ĠInt , Ġminute : ĠInt , Ġis 2 4 Hour : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is 2 4 Hour ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( hour Ġin Ġ 0 .. A _ DAY _ AS _ HOUR S Ġ&& Ġminute Ġ>= Ġ 0 Ġ&& Ġminute Ġ<= ĠAN _ HOUR _ AS _ MIN UTES ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( hour Ġin Ġ 0 .. HALF _ DAY _ AS _ HOUR S Ġ&& Ġminute Ġ>= Ġ 0 Ġ&& Ġminute Ġ<= ĠAN _ HOUR _ AS _ MIN UTES ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ