package Ġcom . p uk kol . launcher . data . model Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . util . Size Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ import Ġcom . p uk kol . launcher . R Ċ import Ġcom . p uk kol . launcher . data . local . db . DB Item Profile Ċ import Ġcom . p uk kol . launcher . ui . home . desktop . Cell Container Ċ import Ġcom . p uk kol . launcher . ui . home . desktop . Desktop Fragment Ċ import Ġcom . p uk kol . launcher . ui . home . desktop . Dock View Ċ import Ġcom . p uk kol . launcher . ui . item view . Folder Drawable Ċ import Ġcom . p uk kol . launcher . ui . item view . Item App View Ċ import Ġcom . p uk kol . launcher . util . Display Ċ import Ġcom . p uk kol . launcher . util . Tool Ċ import Ġcom . p uk kol . launcher . view util . Constraint Layout View Ċ import Ġio . code tail . widget . Re veal LinearLayout Ċ Ċ /** Ċ Ġ* ĠItem Ġmodel Ġrepresents Ġa Ġdata Ġstructure Ġof Ġevery ĠType Ġ@ App Ġthat Ġis Ġbeen Ġdisplay Ġon Ġthe Ġscreen , Ċ Ġ* Ġto Ġdraw Ġthe Ġcorrect Ġtype ĠItem ĠApp Ġon Ġthe Ġscreen Ġ: Ċ Ġ* Ġ- ĠApp Ċ Ġ* Ġ- ĠFolder Ċ Ġ* Ġ- ĠWidget Host Ġetc . Ċ Ġ* Ċ Ġ* Ġ@ Author ĠN ie k ĠT u yt el Ġ( Ok ido ) Ċ Ġ*/ Ċ abstract Ġclass ĠItem Ġ: ĠConstraint Layout View Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDR AG _ THRESHOLD Ġ= ĠDisplay . dp 2 px ( 1 0 f ) ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREMOVE _ P ADDING _ ON _ SCALE Ġ= Ġ 2 . 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠP ADDING _ LEFT Ġ= ĠDisplay . dp 2 px ( 2 0 f ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠP ADDING _ TOP Ġ= ĠDisplay . dp 2 px ( 2 0 f ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠP ADDING _ RIGHT Ġ= ĠDisplay . dp 2 px ( 2 0 f ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠP ADDING _ BOTTOM Ġ= ĠDisplay . dp 2 px ( 2 0 f ) ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMAX _ FOLDER _ INDEX Ġ= Ġ 1 2 ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġget Min Size ( context : ĠContext , Ġis Dock Item : ĠBoolean ): ĠSize Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpadding Start Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . app _ padding _ start ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpadding Top Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . app _ padding _ top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpadding End Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . app _ padding _ end ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpadding Bottom Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . app _ padding _ bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Width Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . app _ icon _ width ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Height Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . app _ icon _ height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmarginTop Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . app _ margin _ label _ top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel Size Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . app _ text _ size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel Height Ġ= ĠDisplay . sp 2 px ( label Size . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġpadding Start Ġ+ Ġicon Width Ġ+ Ġpadding End ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġheight Ġ= Ġpadding Top Ġ+ Ġicon Height Ġ+ ĠmarginTop Ġ+ Ġlabel Height Ġ+ Ġpadding Bottom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Dock Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ-= Ġlabel Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSize ( width , Ġheight ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠType Ġ{ ĊĠĠĠĠĠĠĠ ĠAPP , ĠF OLDER , ĠSH ORT CUT , ĠW ID GET Ġ// Ġ, ĊĠĠĠĠĠĠĠ Ġ// ĠEMPTY ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠLocation Ġ{ ĊĠĠĠĠĠĠĠ ĠMENU , ĠF OLDER , ĠDES K TOP , ĠDO CK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġitem ĊĠĠĠ Ġprivate Ġvar Ġm Page Current Stored : ĠAny ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġpage Current Event : ĠAny ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġparent Position : ĠPoint ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġchild Position : ĠPoint ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġparent Size : ĠSize ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġchild Size : ĠSize ? Ġ= Ġnull ĊĠĠĠ Ġabstract Ġfun Ġset Item View () ĊĠĠĠ Ġabstract Ġfun Ġupdate View () ĊĠĠĠ Ġabstract Ġval ĠcurrentPage : ĠAny ? ĊĠĠĠ Ġabstract Ġval Ġpage Index : ĠInt ĊĊĠĠĠ Ġ// Ġapp Ġspecifications ĊĠĠĠ Ġvar Ġbitmap Icon : ĠBitmap ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġdrawable Icon : ĠFolder Drawable ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġopen Ġvar Ġlabel Ġ= Ġ"" ĊĠĠĠ Ġvar Ġtype : ĠType ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġlocation : ĠLocation ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ* ĊĠĠĠ Ġ*/ Ġ Ġvar ĠID Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġicon Width Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġicon Height Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġlabel Color : ĠInt ĊĠĠĠ Ġvar Ġlabel Visible Ġ= Ġtrue ĊĊĠĠĠ Ġ// Ġfolder ĊĠĠĠ Ġvar Ġfolder Apps Ġ: ĠArrayList < App >? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġapp ĊĠĠĠ Ġvar Ġapp : ĠApp ? Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠĠĠĠĠ Ġlabel Color Ġ= ĠColor . WHITE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġconstructor ( desktop Fragment : ĠDesktop Fragment , Ġcursor : ĠCursor , Ġlayout : ĠAny ?) Ġ: Ġsuper ( desktop Fragment . require Context ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Location Ġ= Ġcursor . getString ( cursor . getColumnIndex ( DB Item Profile . Table . COLUMN _ LOCATION )) ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Type Ġ= Ġcursor . getString ( cursor . getColumnIndex ( DB Item Profile . Table . COLUMN _ TYPE )) ĊĠĠĠĠĠĠĠ Ġval Ġcolumn ID Ġ= Ġcursor . getString ( cursor . getColumnIndex ( DB Item Profile . Table . COLUMN _ TIME )) ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Parent X Ġ= Ġcursor . getString ( cursor . getColumnIndex ( DB Item Profile . Table . COLUMN _ PARENT _ X )) ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Parent Y Ġ= Ġcursor . getString ( cursor . getColumnIndex ( DB Item Profile . Table . COLUMN _ PARENT _ Y )) ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Child X Ġ= Ġcursor . getString ( cursor . getColumnIndex ( DB Item Profile . Table . COLUMN _ CHILD _ X )) ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Child Y Ġ= Ġcursor . getString ( cursor . getColumnIndex ( DB Item Profile . Table . COLUMN _ CHILD _ Y )) ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Parent Width Ġ= Ġcursor . getString ( cursor . getColumnIndex ( DB Item Profile . Table . COLUMN _ PARENT _ WIDTH )) ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Parent Height Ġ= Ġcursor . getString ( cursor . getColumnIndex ( DB Item Profile . Table . COLUMN _ PARENT _ HEIGHT )) ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Child Width Ġ= Ġcursor . getString ( cursor . getColumnIndex ( DB Item Profile . Table . COLUMN _ CHILD _ WIDTH )) ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Child Height Ġ= Ġcursor . getString ( cursor . getColumnIndex ( DB Item Profile . Table . COLUMN _ CHILD _ HEIGHT )) ĊĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= Ġcursor . getString ( cursor . getColumnIndex ( DB Item Profile . Table . COLUMN _ LABEL )) ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠType . valueOf ( column Type ) ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĠLocation . valueOf ( column Location ) ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcolumn ID . toInt () ĊĠĠĠĠĠĠĠ Ġval Ġparent Point Ġ= ĠPoint ( column Parent X . toInt (), Ġcolumn Parent Y . toInt ()) ĊĠĠĠĠĠĠĠ Ġval Ġchild Point Ġ= ĠPoint ( column Child X . toInt (), Ġcolumn Child Y . toInt ()) ĊĠĠĠĠĠĠĠ Ġval Ġparent Size Ġ= ĠSize ( column Parent Width . toInt (), Ġcolumn Parent Height . toInt ()) ĊĠĠĠĠĠĠĠ Ġval Ġchild Size Ġ= ĠSize ( column Child Width . toInt (), Ġcolumn Child Height . toInt ()) ĊĠĠĠĠĠĠĠ Ġset Page Current Event ( layout , Ġlocation ) ĊĠĠĠĠĠĠĠ Ġthis . type Ġ= Ġtype ĊĠĠĠĠĠĠĠ ĠID Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġthis . label Ġ= Ġlabel ĊĠĠĠĠĠĠĠ Ġlabel Color Ġ= Ġif Ġ( location Ġ== ĠLocation . FOLDER ) ĠColor . BLACK Ġelse ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġlabel Visible Ġ= Ġlocation Ġ!= ĠLocation . DO CK ĊĠĠĠĠĠĠĠ Ġparent Position Ġ= Ġparent Point ĊĠĠĠĠĠĠĠ Ġchild Position Ġ= Ġchild Point ĊĠĠĠĠĠĠĠ Ġthis . parent Size Ġ= Ġparent Size ĊĠĠĠĠĠĠĠ Ġthis . child Size Ġ= Ġchild Size ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġm Position Parent Ġ= Ġnew ĠPoint ( 0 , Ġ 0 ); Ċ // ĠĠĠĠĠĠĠ Ġm Position Child Ġ= Ġnew ĠPoint ( 0 , Ġ 0 ); Ċ // ĠĠĠĠĠĠĠ Ġm Size Parent Ġ= Ġnew ĠSize ( 1 , Ġ 1 ); Ċ // ĠĠĠĠĠĠĠ Ġm Size Child Ġ= Ġget Cell Px Size (); ĊĠĠĠĠĠĠĠ Ġicon Width Ġ= Ġthis . resources . get Dimension Pixel Size ( R . dim en . app _ icon _ width ) ĊĠĠĠĠĠĠĠ Ġicon Height Ġ= Ġthis . resources . get Dimension Pixel Size ( R . dim en . app _ icon _ height ) ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠViewGroup . LayoutParams ( ViewGroup . LayoutParams . WRAP _ CONTENT , ĠViewGroup . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġthis . layout Params Ġ= Ġparams ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( obj : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( obj Ġis ĠItem App View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠID Ġ== Ġobj . ID ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( obj Ġis ĠItem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠID Ġ== Ġobj . ID ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Parent Size ( width : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġparent Size Ġ= ĠSize ( width , Ġheight ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġparent Border : ĠRect ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġborder Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġborder . left Ġ= Ġparent Position !!. x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġborder . top Ġ= Ġparent Position !!. y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġborder . right Ġ= Ġparent Position !!. x Ġ+ Ġparent Size !!. width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġborder . bottom Ġ= Ġparent Position !!. y Ġ+ Ġparent Size !!. height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġborder ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġfun Ġset Child Position ( x : ĠInt , Ġy : ĠInt ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġchild Position Ġ= ĠPoint ( x , Ġy ) Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġchild Border : ĠRect ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġborder Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġborder . left Ġ= Ġchild Position !!. x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġborder . top Ġ= Ġchild Position !!. y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġborder . right Ġ= Ġchild Position !!. x Ġ+ Ġchild Size !!. width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġborder . bottom Ġ= Ġchild Position !!. y Ġ+ Ġchild Size !!. height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġborder ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Page Current Stored ( page Object : ĠAny ?, Ġlocation : ĠLocation ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Page Current Stored Ġ= Ġpage Object ĊĠĠĠĠĠĠĠ Ġpage Current Event Ġ= Ġm Page Current Stored ĊĠĠĠĠĠĠĠ Ġthis . location Ġ= Ġlocation ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Page Current Event ( page : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation Ġ= Ġwhen Ġ( page ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDock View Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠItem . Location . DO CK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Container Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠItem . Location . DE SK TOP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLinearLayout Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠItem . Location . FOLDER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠItem . Location . DE SK TOP ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Page Current Event ( page , Ġlocation ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Page Current Event ( page Object : ĠAny ?, Ġlocation : ĠLocation ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġpage Current Event Ġ= Ġpage Object ĊĠĠĠĠĠĠĠ Ġset Page Current Stored ( page Current Event , Ġlocation ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġset Bitmap Icon ( icon : ĠBitmap ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbitmap Icon Ġ= ĠTool . resize Bitmap ( icon , Ġicon Width , Ġicon Height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Drawable Icon ( folder : ĠFolder Drawable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbitmap Icon Ġ= ĠTool . resize Bitmap ( folder . icon , Ġicon Width , Ġicon Height ) ĊĠĠĠĠĠĠĠ Ġdrawable Icon Ġ= Ġfolder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Item View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠDesktop Ġ& ĠDock ĠView ĊĠĠĠĠĠĠĠ Ġif Ġ( m Page Current Stored Ġis ĠCell Container ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( m Page Current Stored Ġas ĠCell Container ). removeItem ( this ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( m Page Current Stored Ġis ĠRe veal LinearLayout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( m Page Current Stored Ġas ĠRe veal LinearLayout ). remove View ( this ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( m Page Current Stored Ġis ĠViewGroup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( m Page Current Stored Ġas ĠViewGroup ). remove View ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Folder Item ( target : ĠApp ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( folder Apps Ġ!= Ġnull Ġ&& Ġfolder Apps !!. isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Apps !!. remove ( target ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthreshold Ġwhen Ġyou Ġdrag Ġthe ĊĠĠĠĠ Ġ* Ġitem Ġthan Ġignore Ġthe Ġaction Ġunt ill ĊĠĠĠĠ Ġ* Ġhe Ġpass Ġthe Ġthreshold Ġborder ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Outside Threshold ( f inger : ĠPoint ?, ĠstartPosition : ĠPoint ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( f inger Ġ== Ġnull Ġ|| ĠstartPosition Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft ĠĠĠ Ġ= Ġ( start Position . x Ġ- ĠDR AG _ THRESHOLD ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop ĠĠĠĠ Ġ= Ġ( start Position . y Ġ- ĠDR AG _ THRESHOLD ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright ĠĠ Ġ= Ġ( start Position . x Ġ+ ĠDR AG _ THRESHOLD ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Ġ Ġ= Ġ( start Position . y Ġ+ ĠDR AG _ THRESHOLD ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(( f inger . x Ġin Ġleft .. right ) Ġ&& Ġ( f inger . y Ġin Ġtop .. bottom )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Outside Threshold () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġremove Ġcurrent Ġview ĊĠĠĠĠĠĠĠ Ġremove Item View () ĊĠĠĠĠĠĠĠ Ġset Page Current Event ( currentPage , Ġlocation ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Border Occup ied Guard ( remove Border : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġpage Current Event Ġas ĠCell Container ? ĊĠĠĠĠĠĠĠ Ġval Ġborder Ġ= Ġparent Border ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġparent Size ĊĠĠĠĠĠĠĠ Ġval Ġcell Item Ġ= Ġpage !!. getItem ( border ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġoccupied Ġsecurity ĊĠĠĠĠĠĠĠ Ġif Ġ( cell Item Ġ!= Ġnull Ġ&& Ġcell Item . type Ġ== ĠType . WIDGET ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! page . isEmpty Span ( border )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpoint Ġ= Ġsize ?. let Ġ{ Ġpage . get Empty Span ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Position Ġ= Ġpoint ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! remove Border ) Ġreturn ĊĠĠĠĠĠĠĠ Ġpage . on Remove Border Parent () ĊĠĠĠ Ġ}// Ġ 1 Ġcell Ġsize ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġall Ġfor Ġcell Ġand Ġpixel ĊĠĠĠĠ Ġ* Ġcalculations Ġbased Ġon Ġhis Ġcurrent ĊĠĠĠĠ Ġ* ĠCell Container Ġ( located Ġpage ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcell Px Size : ĠSize ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ== ĠType . WIDGET Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġparent Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Size Ġ= Ġ( page Current Event Ġas ĠCell Container ?) !!. cell Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSize ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcell Size . width Ġ* Ġsize !!. width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcell Size . height Ġ* Ġsize . height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Current Event Ġ! is ĠCell Container Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 1 Ġcell Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( page Current Event Ġas ĠCell Container ). cell Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}// Ġmore Ġpages Ġon Ġthe ĠY - axis , Ġget ĠY Ġof Ġdock ĊĠĠĠ Ġ// ĠMenu Ġ& ĠFolder ĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊ ĊĊĊĊ ĊĊĊĊĠĠĠ Ġfun ĠgetParent F inger ( f inger : ĠPoint , Ġpage Ġ: ĠCell Container ) Ġ: ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġborder Position Ġ= ĠPoint ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( parent Position !!. x Ġ* Ġpage . cell Width ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( parent Position !!. y Ġ* Ġpage . cell Height ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPoint ( f inger . x Ġ- Ġborder Position . x , Ġfinger . y Ġ- Ġborder Position . y ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Child F inger ( parent F inger Ġ: ĠPoint ): ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPoint ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent F inger . x Ġ- Ġchild Position !!. x , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent F inger . y Ġ- Ġchild Position !!. y ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġin Ġpixels ĊĠĠĠ Ġfun Ġget Point Child Layout ( page : ĠCell Container ) Ġ: ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpoint Parent Ġ= Ġget Point Parent Layout ( page ) ĊĠĠĠĠĠĠĠ Ġreturn ĠPoint ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoint Parent . x Ġ+ Ġchild Position !!. x , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoint Parent . y Ġ+ Ġchild Position !!. y ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġin Ġpixels ĊĠĠĠ Ġfun Ġget Point Child Parent () Ġ: ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġchild Position !! ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġin Ġpixels ĊĠĠĠ Ġfun Ġget Size Child () Ġ: ĠSize Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġchild Size !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġabsolute Ġpixel Ġvalues Ġof Ġ[ child Position ] Ġ& Ġ[ child Size ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Child Border ( page : ĠCell Container ): ĠRect Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchild Point Ġ Ġ= Ġget Point Child Layout ( page ) ĊĠĠĠĠĠĠĠ Ġval Ġchild Size ĠĠ Ġ= Ġget Size Child () ĊĠĠĠĠĠĠĠ Ġval Ġchild Border Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġchild Border . left ĠĠĠ Ġ= Ġchild Point . x ĊĠĠĠĠĠĠĠ Ġchild Border . top ĠĠĠĠ Ġ= Ġchild Point . y ĊĠĠĠĠĠĠĠ Ġchild Border . right ĠĠ Ġ= Ġchild Point . x Ġ+ Ġchild Size . width ĊĠĠĠĠĠĠĠ Ġchild Border . bottom Ġ Ġ= Ġchild Point . y Ġ+ Ġchild Size . height ĊĊĠĠĠĠĠĠĠ Ġreturn Ġchild Border ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġabsolute Ġpixel Ġvalues Ġof Ġ[ parent Position ] Ġ& Ġ[ parent Size ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetParent Border ( page : ĠCell Container ): ĠRect Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Point Ġ Ġ= Ġget Point Parent Layout ( page ) ĊĠĠĠĠĠĠĠ Ġval Ġparent Size ĠĠ Ġ= Ġget Size Parent ( page ) ĊĠĠĠĠĠĠĠ Ġval Ġparent Border Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġparent Border . left ĠĠĠ Ġ= Ġparent Point . x ĊĠĠĠĠĠĠĠ Ġparent Border . top ĠĠĠĠ Ġ= Ġparent Point . y ĊĠĠĠĠĠĠĠ Ġparent Border . right ĠĠ Ġ= Ġparent Point . x Ġ+ Ġparent Size . width ĊĠĠĠĠĠĠĠ Ġparent Border . bottom Ġ Ġ= Ġparent Point . y Ġ+ Ġparent Size . height ĊĊĠĠĠĠĠĠĠ Ġreturn Ġparent Border ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġabsolute Ġcell Ġvalues Ġof Ġ[ parent Position ] Ġ& Ġ[ parent Size ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Parent Border ( cell Border : ĠRect ) Ġ{ ĊĠĠĠĠĠĠĠ Ġparent Position Ġ= ĠPoint ( cell Border . left , Ġcell Border . top ) ĊĠĠĠĠĠĠĠ Ġparent Size Ġ= ĠSize ( cell Border . width (), Ġcell Border . height ()) ĊĠĠĠ Ġ} ĊĊĊĊĊ ĊĊĠĠĠ Ġfun Ġset Child Position ( f inger : ĠPoint , Ġfinger Child : ĠPoint , Ġpage : ĠCell Container ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Border Ġ= ĠgetParent Border ( page ) ĊĠĠĠĠĠĠĠ Ġval Ġfinger Parent Ġ= ĠPoint ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinger . x Ġ- Ġparent Border . left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinger . y Ġ- Ġparent Border . top ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġchild Position !!. x Ġ= Ġ( f inger Parent . x Ġ- Ġfinger Child . x ) ĊĠĠĠĠĠĠĠ Ġchild Position !!. y Ġ= Ġ( f inger Parent . y Ġ- Ġfinger Child . y ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġbelow Ġok ĊĊĊĠĠĠ Ġfun Ġget F inger Parent ( f inger : ĠPoint ) Ġ: ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġpage Current Event Ġas ĠCell Container ĊĊĠĠĠĠĠĠĠ Ġval Ġparent Point Ġ Ġ= Ġget Point Parent Layout ( page ) ĊĠĠĠĠĠĠĠ Ġreturn ĠPoint ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinger . x Ġ- Ġparent Point . x , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinger . y Ġ- Ġparent Point . y ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget F inger Child ( f inger Parent : ĠPoint , Ġstart Child Parent : ĠPoint ) Ġ: ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPoint ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinger Parent . x Ġ- Ġstart Child Parent . x , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinger Parent . y Ġ- Ġstart Child Parent . y ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Point Parent Layout ( page : ĠCell Container ) Ġ: ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPoint ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Position !!. x Ġ* Ġpage . cell Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Position !!. y Ġ* Ġpage . cell Height ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġin Ġpixels ĊĠĠĠ Ġfun Ġget Size Parent ( page : ĠCell Container ) Ġ: ĠSize Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSize ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Size !!. width Ġ* Ġpage . cell Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Size !!. height Ġ* Ġpage . cell Height ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊ Ċ // Ċ // ĠĠĠ Ġfun Ġget F inger Parent ( f inger : ĠPoint , Ġpage Ġ: ĠCell Container ) Ġ: ĠPoint Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġparent Border Ġ= ĠgetParent Border ( page ) Ċ // ĠĠĠĠĠĠĠ Ġreturn ĠPoint ( f inger . x Ġ- Ġparent Border . left , Ġfinger . y Ġ- Ġparent Border . top ) Ċ // ĠĠĠ Ġ} ĊĊĊĊĊĊĊĊ ĊĊĊĊĊ ĊĊĠĠĠ Ġ// ĠDock ĊĠĠĠ Ġfun Ġget Child Parent () Ġ: ĠPoint Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMenu Ġ& ĠFolder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent Position !!. x Ġ== Ġ- 1 Ġ&& Ġparent Position !!. y Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPoint ( Ġthis . width Ġ/ Ġ 2 , Ġthis . height Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġitem Parent X Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġitem Parent Y Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġpage Current Event Ġas ĠCell Container ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDock ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location Ġ== ĠLocation . DO CK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpagination Height Ġ= Ġthis . resources . get Dimension Pixel Size ( R . dim en . page _ indicator _ height ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmore Ġpages Ġon Ġthe ĠY - axis , Ġget ĠY Ġof Ġdock ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Parent Y Ġ+= Ġpage . y . toInt () Ġ- Ġpagination Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Parent X Ġ+= Ġparent Position !!. x Ġ* Ġpage . cell Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Parent Y Ġ+= Ġparent Position !!. y Ġ* Ġpage . cell Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPoint ( item Parent X , Ġitem Parent Y ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Cell Ce il X ( px : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġpage Current Event Ġas ĠCell Container ? ĊĠĠĠĠĠĠĠ Ġreturn ĠMath . ceil ( px Ġ/ Ġpage !!. cell Width . toDouble ()). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Cell Ce il Y ( px : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġpage Current Event Ġas ĠCell Container ? ĊĠĠĠĠĠĠĠ Ġreturn ĠMath . ceil ( px Ġ/ Ġpage !!. cell Height . toDouble ()). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Pixel X ( cell : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġpage Current Event Ġas ĠCell Container ? ĊĠĠĠĠĠĠĠ Ġreturn Ġcell Ġ* Ġpage !!. cell Width ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Pixel Y ( cell : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġpage Current Event Ġas ĠCell Container ? ĊĠĠĠĠĠĠĠ Ġreturn Ġcell Ġ* Ġpage !!. cell Height ĊĠĠĠ Ġ} Ċ Ċ }