/* Ċ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 1 8 ĠB WK ĠTech nik ĠG b R Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . bw k software . android . se async . presentation . navigation Ċ Ċ import Ġandroid . accounts . Account Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġcom . bw k software . android . se async . presentation . R Ċ import Ġcom . bw k software . android . se async . presentation . view . activity . Account Activity Ċ import Ġcom . bw k software . android . se async . presentation . view . fragment .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠNavigator Ġ@ Inject Ġconstructor () Ġ{ ĊĊĠĠĠ Ġfun Ġfind Current Name ( fragment : ĠBase Fragment ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment . child FragmentManager Ġ!= Ġnull Ġ&& Ġfragment . child FragmentManager . back Stack Entry Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Fragment Name Ġ= Ġfragment . child FragmentManager . get Back Stack Entry At ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . child FragmentManager . back Stack Entry Count Ġ- Ġ 1 ). name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Fragment Ġ= Ġfragment . child FragmentManager . find Fragment By Tag ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Fragment Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfind Current Name ( child Fragment Ġas ĠBase Fragment ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment . name () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetName ( context : ĠContext , Ġfragment : ĠBase Fragment , Ġfragment Manager : ĠFragment Manager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġname : ĠString Ġ= Ġfind Current Name ( fragment ) ĊĠĠĠĠĠĠĠ Ġ( context Ġas ? ĠAccount Activity )?. setTitle ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate To Image Viewer ( context : ĠContext , Ġfragment Manager : ĠFragment Manager , Ġaccount : ĠAccount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Id : ĠString , Ġrepo Name : ĠString , Ġdirectory : ĠString , Ġfile : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġimage Viewer Fragment Ġ= ĠImage Viewer Fragment . for Account Repo And Dir ( account , Ġrepo Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Name , Ġdirectory , Ġfile ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġfragment Manager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġ// ĠStore Ġthe ĠFragment Ġin Ġstack ĊĠĠĠĠĠĠĠ Ġtransaction . addTo Back Stack ( Image Viewer Fragment :: class . java . name ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġtransaction . set Custom Animations ( R . anim . enter _ from _ center , R . anim . exit _ from _ center ); ĊĠĠĠĠĠĠĠ Ġtransaction . replace ( R . id . container , Ġimage Viewer Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Viewer Fragment :: class . java . name ). commit () ĊĠĠĠĠĠĠĠ Ġfragment Manager . execute Pending Transactions () ĊĠĠĠĠĠĠĠ ĠsetName ( context , Ġimage Viewer Fragment , Ġfragment Manager ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate To Directory ( context : ĠContext , Ġfragment Manager : ĠFragment Manager , Ġaccount : ĠAccount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Id : ĠString , Ġrepo Name : ĠString , Ġdirectory : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġdirectory Fragment Ġ= ĠDirectory Fragment . for Account Repo And Dir ( account , Ġrepo Id , Ġrepo Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġfragment Manager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġ// ĠStore Ġthe ĠFragment Ġin Ġstack ĊĠĠĠĠĠĠĠ Ġtransaction . addTo Back Stack ( Directory Fragment :: class . java . name ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġtransaction . set Custom Animations ( R . anim . enter _ from _ center , R . anim . exit _ from _ center ); ĊĠĠĠĠĠĠĠ Ġtransaction . replace ( R . id . container , Ġdirectory Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirectory Fragment :: class . java . name ). commit () ĊĠĠĠĠĠĠĠ Ġfragment Manager . execute Pending Transactions () ĊĠĠĠĠĠĠĠ ĠsetName ( context , Ġdirectory Fragment , Ġfragment Manager ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate To Repos View ( context : ĠContext , Ġfragment Manager : ĠFragment Manager , Ġaccount : ĠAccount ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġexercises Fragment Ġ= Ġfragment Manager . find Fragment By Tag ( Repos Fragment :: class . java . name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( exercises Fragment Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexercises Fragment Ġ= ĠRe pos Fragment . for Account ( account ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġfragment Manager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġ// ĠStore Ġthe ĠFragment Ġin Ġstack ĊĠĠĠĠĠĠĠ Ġtransaction . addTo Back Stack ( Repos Fragment :: class . java . name ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġtransaction . set Custom Animations ( R . anim . enter _ from _ center , R . anim . exit _ from _ center ); ĊĠĠĠĠĠĠĠ Ġtransaction . replace ( R . id . container , Ġexercises Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRe pos Fragment :: class . java . name ). commit () ĊĠĠĠĠĠĠĠ Ġfragment Manager . execute Pending Transactions () ĊĊĠĠĠĠĠĠĠ ĠsetName ( context , Ġexercises Fragment Ġas ĠBase Fragment , Ġfragment Manager ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate To Upload s View ( context : ĠContext , Ġfragment Manager : ĠFragment Manager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġexercises Fragment Ġ= Ġfragment Manager . find Fragment By Tag ( Upload s Fragment :: class . java . name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( exercises Fragment Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexercises Fragment Ġ= ĠUp loads Fragment () ĊĊĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġfragment Manager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġ// ĠStore Ġthe ĠFragment Ġin Ġstack ĊĠĠĠĠĠĠĠ Ġtransaction . addTo Back Stack ( Upload s Fragment :: class . java . name ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġtransaction . set Custom Animations ( R . anim . enter _ from _ center , R . anim . exit _ from _ center ); ĊĠĠĠĠĠĠĠ Ġtransaction . replace ( R . id . container , Ġexercises Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUp loads Fragment :: class . java . name ). commit () ĊĠĠĠĠĠĠĠ Ġfragment Manager . execute Pending Transactions () ĊĊĠĠĠĠĠĠĠ ĠsetName ( context , Ġexercises Fragment Ġas ĠBase Fragment , Ġfragment Manager ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate ToAdd Account View ( context : ĠContext , Ġfragment Manager : ĠFragment Manager ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġvar Ġexercises Fragment Ġ= Ġfragment Manager . find Fragment By Tag ( Repos Fragment :: class . java . name ) Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( exercises Fragment Ġ== Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġadd Account Fragment Ġ= ĠAdd Account Fragment . for Empty Account () ĊĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġfragment Manager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġ// ĠStore Ġthe ĠFragment Ġin Ġstack ĊĠĠĠĠĠĠĠ Ġtransaction . addTo Back Stack ( Add Account Fragment :: class . java . name ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġtransaction . set Custom Animations ( R . anim . enter _ from _ center , R . anim . exit _ from _ center ); ĊĠĠĠĠĠĠĠ Ġtransaction . replace ( R . id . container , Ġadd Account Fragment , ĠAdd Account Fragment :: ĊĠĠĠĠĠĠĠ Ġclass . java . name ). commit () ĊĠĠĠĠĠĠĠ Ġfragment Manager . execute Pending Transactions () ĊĊĠĠĠĠĠĠĠ ĠsetName ( context , Ġadd Account Fragment , Ġfragment Manager ) ĊĊĠĠĠ Ġ} Ċ } Ċ