package Ġio . github . tak us an 2 3 . pho transfer . ui . screen Ċ Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . remember Scroll State Ċ import Ġandroidx . compose . foundation . vertical Scroll Ċ import Ġandroidx . compose . material . Divider Ċ import Ġandroidx . compose . material 3 . Experimental Material 3 Api Ċ import Ġandroidx . compose . material 3 . Large Top AppBar Ċ import Ġandroidx . compose . material 3 . Sca ffold Ċ import Ġandroidx . compose . material 3 . Text Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . platform . Local Context Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . datastore . preferences . core . Preferences Ċ import Ġandroidx . datastore . preferences . core . edit Ċ import Ġio . github . tak us an 2 3 . pho transfer . R Ċ import Ġio . github . tak us an 2 3 . pho transfer . network . Network Service Discovery Ċ import Ġio . github . tak us an 2 3 . pho transfer . setting . Setting Key Object Ċ import Ġio . github . tak us an 2 3 . pho transfer . setting . data Store Ċ import Ġio . github . tak us an 2 3 . pho transfer . tool . Work Manager Tool Ċ import Ġio . github . tak us an 2 3 . pho transfer . ui . component .* Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /** Ċ Ġ* Ġ ãĤ¯ ãĥ©ãĤ¤ ãĤ¢ ãĥ³ãĥĪ ãĥ Ľ ãĥ¼ãĥł çĶ» éĿ¢ Ċ Ġ* Ċ Ġ* Ġ@ param Ġon Navigate Ġ çĶ» éĿ¢ éģ · ç§» ãģĹãģ¦ ãģ » ãģĹãģĦ ãģ¨ ãģį ãģ« åĳ¼ ãģ° ãĤĮãĤĭ Ċ Ġ* Ġ*/ Ċ @ Opt In ( Experimental Material 3 Api :: class ) Ċ @ Composable Ċ fun ĠClient Home Screen ( on Navigate : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġcontext Ġ= ĠLocal Context . current ĊĠĠĠ Ġval Ġdata Store Ġ= Ġcontext . data Store . data . collect As State ( initial Ġ= Ġnull ) ĊĠĠĠ Ġ// ĠãĤµ ãĥ¼ãĥĲãĥ¼ æ¤ ľç´¢ ĊĠĠĠ Ġval Ġserver Find Flow Ġ= Ġremember Ġ{ ĠNetwork Service Discovery ( context ). find Server Or Get Latest Server () Ġ} ĊĠĠĠ Ġval Ġserver Info Ġ= Ġserver Find Flow . collect As State ( initial Ġ= Ġnull ) ĊĊĠĠĠ Ġ// ĠWork Manager ï¼Ī å®ļ æľŁ å®Łè¡Į ãģĻãĤĭ ãĤĦ ãģ¤ ï¼ī çĻ»éĮ² ï¼Ī ãĤĤ ãģĹãģ ı ãģ¯ è§£ éĻ¤ ï¼ī ãģĻãĤĭ ãĢĤ DataStore ãĤĴ çĽ £ è¦ĸ ãģĹãģ¦ ĊĠĠĠ ĠLa unched Effect ( key 1 Ġ= ĠUnit , Ġblock Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . data Store . data . collect Ġ{ Ġpreference Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Running Ġ= Ġpreference [ Setting Key Object . IS _ RUNNING ] Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Require Ch arging Ġ= Ġpreference [ Setting Key Object . SETTING _ TRANSFER _ REQUIRE _ CHAR GING ] Ġ?: Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinterval Minute Ġ= Ġpreference [ Setting Key Object . CLIENT _ TRANSFER _ INTERVAL _ MINUTE ] Ġ?: ĠSetting Key Object . DEFAULT _ CLIENT _ TRANSFER _ INTERVAL _ MINUTE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isRunning ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Manager Tool . register Repeat ( context , Ġis Require Ch arging , Ġinterval Minute ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Manager Tool . un Register Repeat ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ ĠScaffold ( ĊĠĠĠĠĠĠĠ Ġtop Bar Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLarge Top AppBar ( title Ġ= Ġ{ ĠText ( text Ġ= Ġstring Resource ( id Ġ= ĠR . string . client _ home _ title )) Ġ}) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġcontent Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. vertical Scroll ( remember Scroll State ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( modifier Ġ= ĠModifier . padding ( start Ġ= Ġ 1 0 . dp , Ġend Ġ= Ġ 1 0 . dp )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæľī åĬ¹ ãĢģ çĦ¡ åĬ¹ ãĤ¹ ãĤ¤ ãĥĥ ãĥģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClient Enable Switch ( data Store Ġ= Ġdata Store . value ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . padding ( top Ġ= Ġ 2 0 . dp )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( server Info . value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤµ ãĥ¼ãĥĲãĥ¼ / è» ¢ éĢģ åħĪ Ġæ ĥ ħ åł± ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClient Server Info ( server Info Data Ġ= Ġserver Info . value !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĨĻ çľŁ è» ¢ éĢģ ãĥľ ãĤ¿ ãĥ³ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManual Upload Button ( server Info Data Ġ= Ġserver Info . value !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠServer NotFound Info () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider ( modifier Ġ= ĠModifier . padding ( top Ġ= Ġ 1 0 . dp , Ġbottom Ġ= Ġ 1 0 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è» ¢ éĢģ çĶ» éĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClient One Shot Transfer Button ( data Store Ġ= Ġdata Store . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åħħ éĽ» ä¸Ń ãģ® ãģ¿ è» ¢ éĢģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Transfer Ch arging ( data Store Ġ= Ġdata Store . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å®ļ æľŁ å®Łè¡Į ãģ® éĸĵ éļĶ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClient Transfer Interval ( data Store Ġ= Ġdata Store . value ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider ( modifier Ġ= ĠModifier . padding ( top Ġ= Ġ 1 0 . dp , Ġbottom Ġ= Ġ 1 0 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġãģĵãģ® ãĤ¢ãĥĹãĥª ãģ«ãģ¤ãģĦãģ¦ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHome Screen K ono App Button ( onClick Ġ= Ġ{ Ġon Navigate ( Navigation Link List . K ono App Screen ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ãĥ©ãĤ¤ ãĤ» ãĥ³ãĤ¹ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLicense Button ( onClick Ġ= Ġ{ Ġon Navigate ( Navigation Link List . License Screen ) Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ Ċ } Ċ Ċ /** Ċ Ġ* Ġ ãĤ¯ ãĥ©ãĤ¤ ãĤ¢ ãĥ³ãĥĪ å®Łè¡Į ãĥľ ãĤ¿ ãĥ³ ï¼Ī Work Manager ãģ«ãĤĪ ãĤĭ å®ļ æľŁ å®Łè¡Į ï¼ī Ċ Ġ* Ċ Ġ* Ġ@ param Ġdata Store ĠData Store Ċ Ġ* Ġ*/ Ċ @ Composable Ċ fun ĠClient Enable Switch ( data Store : ĠPreferences ?) Ġ{ ĊĠĠĠ Ġval Ġscope Ġ= Ġremember Coroutine Scope () ĊĠĠĠ Ġval Ġcontext Ġ= ĠLocal Context . current ĊĠĠĠ Ġval Ġis Running Ġ= Ġdata Store ?. get ( Setting Key Object . IS _ RUNNING ) Ġ?: Ġfalse ĊĊĠĠĠ ĠLabel Switch ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġif Ġ( isRunning ) Ġstring Resource ( id Ġ= ĠR . string . running _ client ) Ġelse Ġstring Resource ( id Ġ= ĠR . string . client _ disable _ title ), ĊĠĠĠĠĠĠĠ Ġis Enable Ġ= Ġis Running , ĊĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ Ġis Enable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . data Store . edit Ġ{ Ġit [ Setting Key Object . IS _ RUNNING ] Ġ= Ġis Enable Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ