package Ġcom . example . v ino . ui . todos Ċ Ċ import Ġandroid . graphics .* Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . v ino . R Ċ import Ġcom . example . v ino . V ino Application Ċ import Ġcom . example . v ino . databinding . Todo Fragment Collection Object Binding Ċ import Ġcom . example . v ino . model . User ViewModel Ċ import Ġcom . example . v ino . model . User ViewModel Factory Ċ import Ġcom . example . v ino . model . Todo Ċ import Ġcom . example . v ino . network . V ino Api Status Ċ import Ġcom . example . v ino . ui . adapter . ARG _ TODO _ TYPE Ċ import Ġcom . example . v ino . ui . adapter . Todo ListAdapter Ċ import Ġcom . google . android . material . card . Material Card View Ċ import Ġjp . was ab eef . recyclerview . anim ators . Slide In Right Animator Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . util .* Ċ Ċ class ĠTodo List Sub Fragment Ġ: ĠFragment (), ĠTodo ListAdapter . On Todo CheckBox Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġv ino User Model : ĠUser ViewModel Ġby Ġactivity ViewModels Ġ{ ĊĠĠĠĠĠĠĠ ĠUser ViewModel Factory (( require Activity (). application Ġas ĠV ino Application ). repository ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠTodo Fragment Collection Object Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcompleted Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsorted By Date : ĠMutable List < Todo > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠTodo ListAdapter ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompleted Ġ= Ġit . getBoolean ( ARG _ TODO _ TYPE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠTodo Fragment Collection Object Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . progress Circular . show () ĊĠĠĠĠĠĠĠ ĠsetUp RecyclerView () ĊĠĠĠĠĠĠĠ ĠsetUp Connection Image And Text () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Checkbox Click ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġin Ġlocal Ġdatabase Ġset Ġcomplete Ġand Ġmake Ġrequest Ġto Ġset Ġcomplete ĊĠĠĠĠĠĠĠ Ġval Ġtodo Completed Ġ= Ġsorted By Date . remove At ( position ) ĊĠĠĠĠĠĠĠ Ġadapter . notify Item Removed ( position ) ĊĠĠĠĠĠĠĠ Ġv ino User Model . update Todo ( todo Completed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġre cycler Ġview Ġdue Ġdate Ġsticky Ġheaders ĊĠĠĠĠĠĠĠ Ġbinding . todo RecyclerView . visibility Ġ= ĠView . IN VISIBLE Ġ// Ġto Ġshow Ġprogress Ġcircle ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠFix Ġdelete Ġanimation ? ĊĠĠĠĠĠĠĠ Ġbinding . todo RecyclerView . item Animator Ġ= ĠSlide In Right Animator (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Duration Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠTodo ListAdapter ( completed , Ġrequire Context (), Ġthis ) ĊĠĠĠĠĠĠĠ Ġbinding . todo RecyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġbinding . todo RecyclerView . set Has Fixed Size ( true ) ĊĊĠĠĠĠĠĠĠ ĠItem Touch Helper ( item Touch Helper Callback ). attach To RecyclerView ( binding . todo RecyclerView ) Ġ// Ġfor Ġswipe Ġdelete ĊĊĠĠĠĠĠĠĠ Ġif Ġ( completed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobserve Todos ( v ino User Model . complete Todos ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobserve Todos ( v ino User Model . in Complete Todos ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Connection Image And Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġon Ġapi Ġstatus , Ġeither Ġway ĠDONE Ġor ĠERROR , Ġhide Ġloading ĊĠĠĠĠĠĠĠ Ġv ino User Model . api Status . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= ĠV ino Api Status . LOADING ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Circular . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Circular . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== ĠV ino Api Status . LOADING ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . no Todo Text . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . no Todo Image . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== ĠV ino Api Status . ERROR ) Ġ// ĠTODO Ġadd Ġno Ġconnection Ġimage Ġand Ġor Ġtext Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . connection Status Text . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif ĠDONE Ġhide Ġtext ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Todos ( todos For Ob served : ĠLive Data < List < Todo >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġtodos For Ob served . observe ( view Lifecycle Owner , Ġ{ Ġnew Todo List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Todo List . isEmpty () Ġ&& Ġ( v ino User Model . api Status . value Ġ!= ĠV ino Api Status . LOADING )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . no Todo Image . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . no Todo Text . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// ĠTODO Ġchange Ġtext Ġif Ġcomplete Ġvs Ġincomplete ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . no Todo Image . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . no Todo Text . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Todos ( new Todo List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Todos ( todo List : ĠList < Todo >) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . todo RecyclerView . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsorted By Date Ġ= Ġv ino User Model . sort Todo By Date ( todo List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( sorted By Date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO Ġadd Ġvi br ations Ġon Ġdelete ĊĠĠĠ Ġ// Ġswipe Ġleft Ġto Ġdelete ĊĠĠĠ Ġprivate Ġvar Ġitem Touch Helper Callback : ĠItem Touch Helper . Simple Callback Ġ= ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠItem Touch Helper . Simple Callback ( 0 , ĠItem Touch Helper . LEFT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Move ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠRecyclerView . ViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// sorted Todo List . remove At ( view Holder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeleted Todo Ġ= Ġsorted By Date . remove At ( view Holder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify Item Removed ( view Holder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ino User Model . delete Todo ( deleted Todo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Child Draw ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc : ĠCanvas , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd X : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd Y : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction State : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Currently Active : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠviewHolder . item View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcard View Ġ= ĠitemView . findViewById < Material Card View >( R . id . todo _ card _ view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġradius Ġ= Ġ 4 f Ġ* Ġresources . display Metrics . density Ġ// Ġoriginal Ġfor Ġcard Ġview Ġcorners ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dX Ġ< Ġ 0 f ) Ġ// Ġif Ġuser Ġslides Ġto Ġleft , Ġchange Ġto Ġ 0 Ġradius Ġso Ġno Ġround Ġcorners Ġon Ġwhen Ġred Ġdelete Ġbackground Ġvisible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Card View C orners ( card View , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ Ġ// Ġreset Ġto Ġoriginal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Card View C orners ( card View , Ġradius ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= ĠitemView . bottom . toFloat () Ġ- ĠitemView . top . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġheight Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpaint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . color Ġ= ĠColor . parse Color ("# 7 2 2 f 3 7 ") Ġ// Ġwine Ġred ? Ġor Ġuse Ġregular Ġdelete Ġred ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe Ġred Ġdelete Ġbackground ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbackground Ġ= ĠRect F ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . right . toFloat () Ġ+ Ġd X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . top . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . right . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . bottom . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdelete Ġcorners Ġsame Ġas Ġcard Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcorners Ġ= Ġfloat ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , Ġ 0 f , ĠĠ Ġ// ĠTop Ġleft Ġradius Ġin Ġpx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġradius , Ġradius , ĠĠ Ġ// ĠTop Ġright Ġradius Ġin Ġpx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġradius , Ġradius , ĠĠĠĠ Ġ// ĠBottom Ġright Ġradius Ġin Ġpx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , Ġ 0 f ĠĠĠĠĠ Ġ// ĠBottom Ġleft Ġradius Ġin Ġpx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcreate Ġthe Ġround Ġred Ġdelete Ġrectangle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠPath () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath . add Round Rect ( background , Ġcorners , ĠPath . Direction . CW ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdraw Ġon Ġcanvas ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . draw Path ( path , Ġpaint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġget Ġdelete Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= ĠContext Compat . get Drawable ( require Context (), ĠR . drawable . ic _ baseline _ delete _ 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( drawable !!. intrinsic Width , Ġdrawable . intrinsic Height , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . setBounds ( 0 , Ġ 0 , Ġcanvas . width , Ġcanvas . height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . draw ( canvas ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġplace Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Dest Ġ= ĠRect F ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . right . toFloat () Ġ- Ġ 2 Ġ* Ġwidth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . top . toFloat () Ġ+ Ġwidth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . right . toFloat () Ġ- Ġwidth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . bottom . toFloat () Ġ- Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . draw Bitmap ( bitmap , Ġnull , Ġicon Dest , Ġpaint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Child Draw ( c , Ġre cyclerView , ĠviewHolder , Ġd X , Ġd Y , Ġaction State , Ġis Currently Active ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Card View C orners ( card View : ĠMaterial Card View , Ġradius : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard View . shape Appearance Model Ġ= Ġcard View . shape Appearance Model ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Top Right Corner Size ( radius ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Bottom Right Corner Size ( radius ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ }