package Ġcom . dub ed iv ine . samples . features . add Question Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . support . v 7 . widget . Card View Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . util . Log Ċ import Ġandroid . view .* Ċ import Ġandroid . widget .* Ċ import Ġcom . dub ed iv ine . samples . R Ċ import Ġcom . dub ed iv ine . samples . data . local . Preferences Helper Ċ import Ġcom . dub ed iv ine . samples . data . model . Media Ċ import Ġcom . dub ed iv ine . samples . data . model . Question Ċ import Ġcom . dub ed iv ine . samples . data . model . Tag Ċ import Ġcom . dub ed iv ine . samples . features . base . Base Activity Ċ import Ġcom . dub ed iv ine . samples . features . detail . Detail Activity Ċ import Ġcom . dub ed iv ine . samples . util . Basic Utils Ċ import Ġcom . dub ed iv ine . samples . util . Basic Utils . get Real Path From URI Ċ import Ġcom . dub ed iv ine . samples . util . sn ack Ċ import Ġd roid ninja . file picker . File Picker Builder Ċ import Ġd roid ninja . file picker . File Picker Const Ċ import Ġkotlinx . android . synt hetic . main . activity _ add _ question .* Ċ import Ġkotlinx . android . synt hetic . main . content _ fab _ add .* Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠAdd Question Activity Ġ: ĠBase Activity (), ĠAdd Question M vp View Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġm Add Question Presenter : ĠAdd Question Presenter ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtags Suggestions Adapter : ĠArray Adapter < String > ĊĠĠĠ Ġprivate Ġvar Ġtags Suggestions View : ĠView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtags Suggestion ListView : ĠListView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpop Up Window : ĠPopup Window ĊĠĠĠ Ġprivate Ġvar Ġmedia Files : ĠMap < Char , ĠList < String >> ? Ġ= Ġnull Ġ// Maps Ġmedia Ġtype Ġto ĠFiles ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprog : ĠProgress Dialog ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Pref : ĠPreferences Helper ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġactivity Component (). inject ( this ) ĊĠĠĠĠĠĠĠ Ġm Add Question Presenter . attach View ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġaction Bar Ġ= Ġsupport ActionBar ĊĠĠĠĠĠĠĠ Ġaction Bar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġm Pref Ġ= ĠPreferences Helper ( this ) ĊĠĠĠĠĠĠĠ ĠBasic Utils . check External ReadWrite Permissions ( this , ĠMY _ PERMISSION S _ REQUEST _ READ _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠ Ġtags Suggestions Adapter Ġ= ĠArray Adapter ( this @ Add Question Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . layout . simple _ spinner _ item ) ĊĠĠĠĠĠĠĠ Ġtags Suggestions View Ġ= Ġget In fl ated Tags Suggestion View () ĊĠĠĠĠĠĠĠ Ġtags Suggestion ListView Ġ= Ġtags Suggestions View !!. findViewById ( R . id . tags _ suggestion _ list view ) ĊĠĠĠĠĠĠĠ Ġpop Up Window Ġ= ĠPopup Window ( this ) Ġ// https :// www . google . com / search ? client = ubuntu & channel = fs & q = android + popup + window + relative + to + the + cour sor & ie = utf - 8 & oe = utf - 8 ĊĠĠĠĠĠĠĠ Ġconfigure Pop Up Window ( pop Up Window , Ġtags Suggestions View !! ) ĊĠĠĠĠĠĠĠ Ġprog Ġ= ĠProgress Dialog ( this ) ĊĠĠĠĠĠĠĠ Ġq _ add . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ Ġ Ġ// Ġits Ġa Ġsingleton Ġso Ġgood ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtag StartIndex Ġ= Ġ 0 Ġ// Ġassume Ġthat Ġthe Ġtag Ġstarts Ġat Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtag Stop Index Ġ= Ġ 0 Ġ// Ġassume Ġthat Ġthe Ġtag Ġstop Ġat Ġ 0 Ġmeaning Ġno Ġtag , Ġbasic Ġmath !! Ġh ah aha ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Typing Hash Tag Ġ= Ġfalse Ġ// init ally Ġassume Ġthe Ġthe Ġperson Ġis Ġ Ġtyping Ġany Ġhash Ġtags ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( after Change : ĠEdit able ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( p 0 : ĠCharSequence ?, Ġp 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġall Ġof Ġthese Ġcomputation Ġshould Ġbe Ġdone Ġon Ġby Ġthe Ġpresenter Ġa Ġso Ġthat Ġwe Ġjust Ġdisplay Ġthe Ġresults ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( text : ĠCharSequence ?, Ġnum Chars : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text !!. isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text . last () Ġ== Ġ'# ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" start Ġtyping Ġhash Ġtag Ġbro : Ġ$ text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Typing Hash Tag Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag StartIndex Ġ= Ġnum Chars ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text . last () Ġ== Ġ' Ġ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" we Ġhave Ġstopped Ġtyping Ġthe Ġtags Ġ$ text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Typing Hash Tag Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Stop Index Ġ= Ġnum Chars ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop Up Window . dismiss () ĠĠ Ġ// Ġdismiss Ġthe Ġpopup Ġwindow Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Typing Hash Tag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" this Ġis Ġthe Ġhas Ġtag Ġdw ag Ġ$ text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// get Ġthe Ġtags Ġsuggestion Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( num Chars Ġ>= Ġtag StartIndex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Ġ= Ġtext . sub Sequence ( tag StartIndex , Ġtext . last Index Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" the Ġactual Ġtag Ġis : Ġ$ tag ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Add Question Presenter . getTag Suggestion ( tag , Ġtag StartIndex , Ġtext . last Index Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" this Ġis Ġthe Ġnormal Ġtext : Ġ$ text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstop Ġthe Ġsuggestion Ġor Ġdisconnect Ġthe Ġadapter Ġwhat Ġyou Ġthink ! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbtn _ add _ files . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Picker Builder . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMax Count ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Activity Theme ( R . style . App Theme _ No ActionBar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. pick File ( this ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbtn _ add _ video . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtake Video Intent Ġ= ĠIntent ( Media Store . ACTION _ VIDEO _ CAPTURE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtake Video Intent . putExtra ( Media Store . EXTRA _ DURATION _ LIMIT , Ġ 6 0 ) Ġ// Ġyou Ġhave Ġone Ġmin Ġto Ġsay Ġwhat Ġever Ġyou Ġwant ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtake Video Intent . putExtra ( Media Store . EXTRA _ VIDEO _ QUAL ITY , Ġ 0 ) Ġ// Ġyou Ġhave Ġone Ġmin Ġto Ġsay Ġwhat Ġever Ġyou Ġwant ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġthe Ġcamera Ġexists ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( take Video Intent . resolve Activity ( package Manager ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Ġthe Ġdata Ġis Ġ${ take Video Intent . data }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( take Video Intent , ĠREQUEST _ VIDEO _ CAPTURE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbtn _ add _ picture . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Picker Builder . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMax Count ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show G ifs ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Activity Theme ( R . style . App Theme _ No ActionBar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. pick Photo ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfab _ add . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublish New Question () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġlayout : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . layout . activity _ add _ question ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" the Ġuser Ġhas Ġbeen Ġdestroyed Ġboss ") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// https :// stackoverflow . com / questions / 2 3 4 6 4 2 3 2 / how - would - you - create - a - popover - view - in - android - like - facebook - comments ĊĠĠĠ Ġoverride Ġfun Ġshow Tags Suggestion ( tags : ĠList < Tag >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Word : ĠCharSequence , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag StartIndex : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Stop Index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtags Suggestions Adapter . clear () ĊĠĠĠĠĠĠĠ Ġfor Ġ( tag Ġin Ġtags ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtags Suggestions Adapter . add ( tag . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtags Suggestion ListView ?. on ItemClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġadapter , Ġp 1 , Ġposition , Ġp 3 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġword To Replace Ġ= Ġadapter ?. getItem At Position ( position ) Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// should Ġdo Ġa Ġcheck Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq _ add . text . replace ( tag StartIndex , Ġtag Stop Index , Ġ"# $ word To Replace Ġ") Ġ// Ġthere Ġis Ġa Ġproblem Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpop Up Window . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtags Suggestion ListView ?. adapter Ġ= Ġtags Suggestions Adapter ĊĠĠĠĠĠĠĠ Ġval Ġ( x , Ġy ) Ġ= Ġget The X And Y For Word ( q _ add , Ġtyped Word ) ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" the Ġx Ġand Ġy Ġare Ġ Ġ($ x , Ġ$ y )") ĊĠĠĠĠĠĠĠ Ġpop Up Window . show At Location ( q _ add , ĠGr avity . TOP , Ġx , Ġy ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget ProgressBar Instance ( title : ĠString , Ġmsg : ĠString ): ĠProgress Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġprog . setMessage ( msg ) ĊĠĠĠĠĠĠĠ Ġprog . setTitle ( title ) ĊĠĠĠĠĠĠĠ Ġreturn Ġprog ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Progress ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget ProgressBar Instance (" As king Ġquestion ", Ġ" Please Ġwait Ġasking Ġquestion ...") ĊĠĠĠĠĠĠĠ Ġif Ġ( show ) Ġprog . show () Ġelse Ġprog . dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Progress ( show : ĠBoolean , Ġmsg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprog Ġ= Ġget ProgressBar Instance (" Att aching Ġfiles ", Ġ" Now Ġsaving Ġattached Ġquestion Ġfile ( s ). , Ġjust Ġa Ġsec ...") ĊĠĠĠĠĠĠĠ Ġif Ġ( show ) Ġprog . show () Ġelse Ġprog . dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Question ( entity : ĠQuestion ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠDetail Activity . getStart Intent ( this , Ġentity ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Tag Suggestion Progress ( show : ĠBoolean ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġtoast (" Suggest ing Ġtags ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Error ( error : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( error . message Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ack ( error . message !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġerror . printStackTrace () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" the Ġresult Ġis Ġ${ intent ?. data }") ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( add _ q _ linear layout . child Count Ġ== Ġ 0 ) Ġ{ Ġ// enable Ġall Ġthe Ġbutton Ġif Ġthe Ġitem Ġare Ġremoved Ġto Ġ 0 Ġmeaning Ġhere Ġin Ġthe Ġfollowing Ġswitches Ġwe Ġmodify Ġthis Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Add Buttons ( is Pic Ġ= Ġtrue , Ġis V id Ġ= Ġtrue , Ġis Files Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġq _ add . hint Ġ= Ġ" You Ġcan Ġjust Ġtype Ġyour Ġquestion Ġhere , Ġlike Ġyou Ġdo Ġon Ġgoogle , Ġno Ġneed Ġto Ġg reet Ġwe Ġare Ġall Ġhere Ġto Ġget Ġanswers Ġ: )" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess The Input Request ( request Code , Ġintent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess The Input Request ( request Code : ĠInt , Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ VIDEO _ CAPTURE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent ?. data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġq _ add . hint Ġ= Ġ" describe Ġyour Ġquestion Ġand Ġadd Ġa Ġtag Ġto Ġthe Ġattached Ġvideo Ġso Ġthat Ġpeople Ġcan Ġfind Ġit \ n # math 1 b Ġ# drawing Graphs " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Add Buttons ( is V id Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( add _ q _ linear layout . child Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ack (" You Ġcan Ġonly Ġadd Ġone Ġvideo . Ġpress ĠX Ġto Ġremove Ġthe Ġpreviously Ġadd Ġvideo Ġto Ġadd Ġanother Ġone ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvid Uri Ġ= Ġintent . data !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvid Url Ġ= Ġget Real Path From URI ( vid Uri , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Add Buttons ( false ) Ġ// Ġdisable Ġthe Ġadd Ġbuttons ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġq _ vid . set Video URI ( intent . data !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Initializing ĠVideo Ġmedia ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( vid Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" the Ġpath Ġis Ġ$ vid Url ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// creating Ġthe Ġfile Ġview Ġinstance Ġthat Ġshows Ġthe Ġvideo Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn File : ĠCard View Ġ= ĠBasic Utils . getFile View Instance ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia ( file . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . length (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia . VIDEO _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . absolute Path ), Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" the Ġclicked Ġfile Ġis Ġ$ it ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Sheet Dialog Fragment Ġ= ĠVideo View Fragment . newInstance ( vid _ url . path ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Sheet Dialog Fragment . show ( support FragmentManager , Ġbottom Sheet Dialog Fragment . tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvid Intent Ġ= ĠIntent ( Intent . ACTION _ VIEW , Ġvid Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvid Intent . setData And Type ( vid Uri , Ġ" video /* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( vid Intent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . parent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . parent Ġas ĠViewGroup ). remove View ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif H ori Item View IsEmpty Enable All Add Buttons () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd _ q _ linear layout . addView ( btn File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Files Ġ= Ġif Ġ( add _ q _ linear layout . child Count Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Map Of ( Media . VIDEO _ TYPE Ġto ĠlistOf ( vid Url )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ Ġ// nothing ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Picker Const . REQUEST _ CODE _ PH OTO Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġq _ add . hint Ġ= Ġ" describe Ġyour Ġquestion Ġand Ġadd Ġa Ġtag Ġto Ġthe Ġattached Ġphoto Ġso Ġthat Ġpeople Ġcan Ġfind Ġit \ n # math 1 b Ġ# drawing Graphs " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Add Buttons ( is Pic Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphotos Paths Ġ= Ġintent . getString ArrayList Extra ( File Picker Const . KEY _ SELECTED _ MEDIA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" the Ġdata Ġthat Ġwe Ġgot : ĠPh otos Ġ$ photos Paths ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphotos Paths . forEach ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl (" Hello ĠFrom ĠTim ber Ġthe Ġpath Ġis Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Preview Instance Ġ= ĠBasic Utils . getImage Preview Instance ( this @ Add Question Activity , Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . parent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . parent Ġas ĠViewGroup ). remove View ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif H ori Item View IsEmpty Enable All Add Buttons () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd _ q _ linear layout . addView ( image Preview Instance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Files Ġ= Ġhash Map Of ( Media . PI CTURE _ TYPE Ġto Ġphotos Paths ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Picker Const . REQUEST _ CODE _ DOC Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġq _ add . hint Ġ= Ġ" describe Ġyour Ġquestion Ġand Ġadd Ġa Ġtag Ġto Ġthe Ġattached Ġdocument Ġso Ġthat Ġpeople Ġcan Ġfind Ġit \ n # math 1 b Ġ# drawing Graphs " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Add Buttons ( is Files Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphotos Paths Ġ= Ġintent . getString ArrayList Extra ( File Picker Const . KEY _ SELECTED _ DOCS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" the Ġdata Ġthat Ġwe Ġgot Ġ${ intent . getString ArrayList Extra ( File Picker Const . KEY _ SELECTED _ MEDIA )} ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphotos Paths . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Hello Ġthe Ġfile Ġhas Ġbeen Ġselected Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile View Instance Ġ= ĠBasic Utils . getFile View Instance ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia ( it . substring After Last ("/ "), Ġ 0 , ĠMedia . DOCS _ TYPE , Ġit ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġ_ Ġ-> Ġ}, Ġ// not Ġrequire Ġbut Ġlooks Ġgreat Ġ;) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . parent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . parent Ġas ĠViewGroup ). remove View ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif H ori Item View IsEmpty Enable All Add Buttons () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd _ q _ linear layout . addView ( file View Instance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Files Ġ= Ġhash Map Of ( Media . DOCS _ TYPE Ġto Ġphotos Paths ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpublish New Question () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// get Ġthe Ġquestion Ġtext ĊĠĠĠĠĠĠĠ Ġ// create Ġfiles Ġfrom Ġthe Ġpaths Ġsend Ġthem Ġto Ġpresenter ĊĠĠĠĠĠĠĠ Ġ// Ġpresenter Ġwill Ġupload Ġto Ġserver ĊĠĠĠĠĠĠĠ Ġval Ġdocs List Paths Ġ= Ġmedia Files ?. get ( Media . DOCS _ TYPE ) ĊĠĠĠĠĠĠĠ Ġval Ġvideo List Paths Ġ= Ġmedia Files ?. get ( Media . VIDEO _ TYPE ) ĊĠĠĠĠĠĠĠ Ġval Ġpictures List Paths Ġ= Ġmedia Files ?. get ( Media . PI CTURE _ TYPE ) ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" The Ġvalues Ġare : Ġ" Ġ+ Ġmedia Files ?. values ?. toString ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġquestion Body Ġ= Ġq _ add . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġquestion Title Ġ= Ġq _ add _ title . text . toString () ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquestion Title . isBlank () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ack (" Please Ġadd Ġa Ġbrief Ġtitle Ġabout Ġyour Ġquestion ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquestion Body . isBlank () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ack (" You Ġdid Ġnot Ġtype Ġthe Ġactual Ġquestion ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBasic Utils . text Has No Tags ( question Body ) Ġ-> Ġ{ Ġ Ġ// Ġthe Ġlast Ġ&& Ġis Ġnot Ġrequired Ġjust Ġfor Ġclear ity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ack (" describe Ġyour Ġquestion Ġand Ġplease Ġadd Ġat Ġleast Ġone Ġtag Ġto Ġthis Ġquestion Ġso Ġthat Ġpeople Ġcan Ġfind Ġit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ(_, Ġtags ) Ġ= ĠBasic Utils . get Clean Text And Tags ( question Body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquestion To Post Ġ= ĠQuestion ( question Title , Ġquestion Body , Ġ 0 , Ġtags . map Ġ{ ĠTag ( it , ĠDate ()) Ġ}, ĠQuestion . TYPE _ Q ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( docs List Paths Ġ!= Ġnull Ġ&& Ġdocs List Paths . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Add Question Presenter . publish New Question ( question To Post , Ġdocs List Paths ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( video List Paths Ġ!= Ġnull Ġ&& Ġvideo List Paths . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Add Question Presenter . publish New Question ( question To Post , Ġvideo List Paths ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( pictures List Paths Ġ!= Ġnull Ġ&& Ġpictures List Paths . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Add Question Presenter . publish New Question ( question To Post , Ġpictures List Paths ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( question Body . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Add Question Presenter . publish New Question ( question To Post ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ack (" Please Ġalso Ġadd Ġa Ġquestion Ġbody ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġenable Add Buttons ( is Pic : ĠBoolean Ġ= Ġfalse , Ġis V id : ĠBoolean Ġ= Ġfalse , Ġis Files : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbtn _ add _ picture . isEnabled Ġ= Ġis Pic ĊĠĠĠĠĠĠĠ Ġbtn _ add _ video . isEnabled Ġ= Ġis V id ĊĠĠĠĠĠĠĠ Ġbtn _ add _ files . isEnabled Ġ= Ġis Files ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġif H ori Item View IsEmpty Enable All Add Buttons () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( add _ q _ linear layout . child Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Add Buttons ( true , Ġtrue , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq _ add . hint Ġ= Ġ" You Ġcan Ġjust Ġtype Ġyour Ġquestion Ġhere , Ġlike Ġyou Ġdo Ġon Ġgoogle , Ġno Ġneed Ġto Ġg reet Ġwe Ġare Ġall Ġhere Ġto Ġget Ġanswers Ġ: )" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// todo : Ġle aking Ġmemory Ġis Ġhere ĊĠĠĠ Ġprivate Ġfun Ġconfigure Pop Up Window ( pop Up Window : ĠPopup Window , Ġtags Suggestions View : ĠView ): ĠPopup Window Ġ{ ĊĠĠĠĠĠĠĠ Ġpop Up Window . content View Ġ= Ġtags Suggestions View ĊĠĠĠĠĠĠĠ Ġpop Up Window . height Ġ= ĠWindow Manager . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠ Ġpop Up Window . width Ġ= ĠWindow Manager . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠ Ġpop Up Window . is Focus able Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġpop Up Window . is Outside Touchable Ġ= Ġtrue Ċ Ċ // ĠĠĠĠĠĠĠ Ġpop Up Window . setBackground Drawable (( android . R . drawable . spinner _ dropdown _ background )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġpop Up Window ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget The X And Y For Word ( textView : ĠEditText , Ġtext : ĠCharSequence ): ĠPair < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbounds Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġval Ġtp aint Ġ= ĠtextView . paint ĊĠĠĠĠĠĠĠ Ġtp aint . getText Bounds ( text . toString (), Ġ 0 , Ġtext . length , Ġbounds ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġbounds . height () ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġbounds . width () ĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( width , Ġheight ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġget Display (): ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Ġ= Ġthis . window Manager . default Display ĊĠĠĠĠĠĠĠ Ġval Ġpoint Ġ= ĠPoint () ĊĠĠĠĠĠĠĠ Ġdisplay . getSize ( point ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpoint ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget In fl ated Tags Suggestion View (): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġget System Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . activity _ popup _ tag _ suggestion , Ġnull ) ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ"__ Add Question Activity " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREQUEST _ VIDEO _ CAPTURE Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMY _ PERMISSION S _ REQUEST _ READ _ EXTERNAL _ STORAGE Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġfun Ġget Start Intent ( context : ĠContext ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIntent ( context , ĠAdd Question Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ