package Ġnet . sa os hy ant . Life . activity Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Coordinator Layout Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . design . widget . Tab Layout Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġandroid . support . v 4 . app . Fragment Pager Adapter Ċ import Ġandroid . support . v 4 . view . ViewPager Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view .* Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . TextView Ċ import Ġcom . android . vol ley . Request Ċ import Ġcom . android . vol ley . Response Ċ import Ġcom . android . vol ley . toolbox . Network ImageView Ċ import Ġcom . android . vol ley . toolbox . String Request Ċ import Ġnet . sa os hy ant . Life . R Ċ import Ġnet . sa os hy ant . Life . app . Database Handler Ċ import Ġnet . sa os hy ant . Life . app . My Application Ċ import Ġnet . sa os hy ant . Life . fragments . Home Fragment Ċ import Ġnet . sa os hy ant . Life . fragments . People Fragment Ċ import Ġnet . sa os hy ant . Life . fragments . Search Fragment Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġjava . util .* ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĊĠĠĠ Ġprivate Ġvar Ġdialog : ĠDialog ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtab Layout : ĠTab Layout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcoord inator Layout : ĠCoord inator Layout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpeople Fragment : ĠPeople Fragment ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsearch Fragment : ĠSearch Fragment ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġhome Fragment : ĠHome Fragment ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġimg Edit : ĠImage Button ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġimg Notification : ĠImage Button ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġimg Profile : ĠImage Button ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġcoord inator Layout Ġ= ĠfindViewById ( R . id . coordinator Layout ) Ċ // ĠĠĠĠĠĠĠ ĠP us he . initialize ( this , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. setIcon ( R . mip map . ic _ launcher ) ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġthis . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġinflater . inflate ( R . layout . toolbar , Ġnull ) ĊĠĠĠĠĠĠĠ Ġimg Edit Ġ= Ġv . findViewById ( R . id . img _ edit _ profile ) ĊĠĠĠĠĠĠĠ Ġimg Notification Ġ= Ġv . findViewById ( R . id . img _ notification ) ĊĠĠĠĠĠĠĠ Ġimg Profile Ġ= Ġv . findViewById ( R . id . img _ profile ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. custom View Ġ= Ġv ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Show Home Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Show Title Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Show Custom Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsetup Toolbar () ĊĊĠĠĠĠĠĠĠ Ġval Ġview Pager Ġ= ĠfindViewById < ViewPager >( R . id . view pager ) ĊĠĠĠĠĠĠĠ Ġsetup ViewPager ( view Pager ) ĊĠĠĠĠĠĠĠ Ġview Pager . currentItem Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġview Pager . off screen Page Limit Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġtab Layout Ġ= ĠfindViewById ( R . id . tabs ) ĊĠĠĠĠĠĠĠ Ġtab Layout !!. setup With ViewPager ( view Pager ) ĊĠĠĠĠĠĠĠ Ġsetup Tab Icons () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Toolbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġimg Edit !!. setOnClickListener Ġ{ ĠstartActivity For Result ( Intent ( this @ MainActivity , ĠEdit Profile :: class . java ), Ġ 1 1 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġimg Notification !!. setOnClickListener Ġ{ ĠstartActivity ( Intent ( this @ MainActivity , ĠNotification :: class . java )) Ġ} ĊĠĠĠĠĠĠĠ Ġimg Profile !!. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb 1 Ġ= ĠDatabase Handler ( application Context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġdb 1 . user Details ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ MainActivity , ĠProfile :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" id ", Ġuser [" id No "]. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" name ", Ġuser [" real name "]. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" profile Image ", Ġuser [" profile Image "]. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Tab Icons () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtab People Ġ= ĠLayoutInflater . from ( this ). inflate ( R . layout . custom _ tab , Ġnull ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġtab People . set Compound Draw ables With Intr insic Bounds ( 0 , ĠR . drawable . ic _ people _ white , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtab Layout !!. get Tab At ( 0 ) !!. custom View Ġ= Ġtab People ĊĠĠĠĠĠĠĠ Ġval Ġtab My Life Ġ= ĠLayoutInflater . from ( this ). inflate ( R . layout . custom _ tab , Ġnull ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġtab My Life . set Compound Draw ables With Intr insic Bounds ( 0 , ĠR . drawable . ic _ home , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtab Layout !!. get Tab At ( 1 ) !!. custom View Ġ= Ġtab My Life ĊĠĠĠĠĠĠĠ Ġval Ġtab Search Ġ= ĠLayoutInflater . from ( this ). inflate ( R . layout . custom _ tab , Ġnull ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġtab Search . set Compound Draw ables With Intr insic Bounds ( 0 , ĠR . drawable . ic _ search _ white , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtab Layout !!. get Tab At ( 2 ) !!. custom View Ġ= Ġtab Search ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ ĠTextView Ġtab A then a Ġ= Ġ( TextView ) ĠLayoutInflater . from ( this ). inflate ( R . layout . custom _ tab , Ġnull ); ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġtab A then a . set Compound Draw ables With Intr insic Bounds ( 0 , ĠR . drawable . ic _ mic _ none _ white , Ġ 0 , Ġ 0 ); ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġtab Layout . get Tab At ( 3 ). set Custom View ( tab A then a ); ĊĠĠĠĠĠĠĠ Ġtab Layout !!. add On Tab Selected Listener ( object Ġ: ĠTab Layout . On Tab Selected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Selected ( tab : ĠTab Layout . Tab ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Un selected ( tab : ĠTab Layout . Tab ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Re selected ( tab : ĠTab Layout . Tab ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( tab . position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġpeople Fragment !!. goTo Top () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġhome Fragment !!. goTo Top () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġsearch Fragment !!. goTo Top () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġsetup ViewPager ( view Pager : ĠView Pager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠView Pager Adapter ( support FragmentManager ) ĊĠĠĠĠĠĠĠ Ġpeople Fragment Ġ= ĠPeople Fragment () ĊĠĠĠĠĠĠĠ Ġadapter . add Frag ( people Fragment !! , Ġ"") ĊĠĠĠĠĠĠĠ Ġhome Fragment Ġ= ĠHome Fragment () ĊĠĠĠĠĠĠĠ Ġadapter . add Frag ( home Fragment !! , Ġ"") ĊĠĠĠĠĠĠĠ Ġsearch Fragment Ġ= ĠSearch Fragment () ĊĠĠĠĠĠĠĠ Ġadapter . add Frag ( search Fragment !! , Ġ"") ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġadapter . add Frag ( new ĠA then a Fragment (), Ġ""); ĊĠĠĠĠĠĠĠ Ġview Pager . adapter Ġ= Ġadapter ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠView Pager Adapter Ġinternal Ġconstructor ( manager : ĠFragment Manager ) Ġ: ĠFragment Pager Adapter ( manager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Fragment List Ġ= ĠArrayList < Fragment >() ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Fragment Title List Ġ= ĠArrayList < String >() ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠFragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Fragment List [ position ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Fragment List . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġadd Frag ( fragment : ĠFragment , Ġtitle : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Fragment List . add ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Fragment Title List . add ( title ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Page Title ( position : ĠInt ): ĠCharSequence ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Fragment Title List [ position ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Username ( edit Text : ĠEditText ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb 1 Ġ= ĠDatabase Handler ( application Context ) ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġdb 1 . user Details ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠHashMap < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġparams [" tag "] Ġ= Ġ" username " ĊĠĠĠĠĠĠĠ Ġparams [" id "] Ġ= Ġuser [" id No "]. or Empty () ĊĠĠĠĠĠĠĠ Ġparams [" code "] Ġ= Ġuser [" code "]. or Empty () ĊĠĠĠĠĠĠĠ Ġval Ġstr Req Ġ= Ġobject Ġ: ĠString Request ( Request . Method . POST , Ġ" http :// sa os hy ant . net / Life / getUsername . php ", ĠResponse . Listener Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// response Ġfrom Ġthe Ġserver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . e (" username : Ġ", Ġresponse ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Obj Ġ= ĠJSONObject ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfeed Array Ġ= Ġresponse Obj . get JSONArray (" user ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfeed Obj Ġ= Ġfeed Array . get ( 0 ) Ġas ĠJSONObject ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( feed Obj . getInt (" success ") Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . setText ( feed Obj . getString (" username ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( coordinator Layout !! , ĠR . string . error problem , ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ĠToast . makeText ( getApplicationContext (), Ġ" Error 2 : Ġ" Ġ+ Ġe . getMessage (), ĠToast . LENGTH _ LONG ). show (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Error Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ĠLog . e ( TAG , Ġ" Error 1 : Ġ" Ġ+ Ġerror . getMessage ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( coordinator Layout !! , ĠR . string . error con ection , ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( com . android . vol ley . Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Headers (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠHashMap < String , ĠString >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [" Authorization : ĠBasic "] Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġparams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Params (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog . e ( TAG , Ġ" Post ing Ġparams : Ġ" Ġ+ Ġparams . toString ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġparams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠAdding Ġrequest Ġto Ġrequest Ġqueue ĊĠĠĠĠĠĠĠ ĠMy Application . instance !!. addTo Request Queue ( str Req ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Username ( username : ĠString , Ġbutton : ĠButton ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb 1 Ġ= ĠDatabase Handler ( application Context ) ĊĠĠĠĠĠĠĠ Ġval Ġuser : ĠHashMap < String , ĠString > ĊĠĠĠĠĠĠĠ Ġuser Ġ= Ġdb 1 . user Details ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠHashMap < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġparams [" tag "] Ġ= Ġ" username " ĊĠĠĠĠĠĠĠ Ġparams [" id "] Ġ= Ġuser [" id No "]. or Empty () ĊĠĠĠĠĠĠĠ Ġparams [" code "] Ġ= Ġuser [" code "]. or Empty () ĊĠĠĠĠĠĠĠ Ġparams [" username "] Ġ= Ġusername ĊĠĠĠĠĠĠĠ Ġval Ġstr Req Ġ= Ġobject Ġ: ĠString Request ( Request . Method . POST , Ġ" http :// sa os hy ant . net / Life / set Username . php ", ĠResponse . Listener Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// response Ġfrom Ġthe Ġserver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠ ĠLog . e (" a : Ġ", Ġresponse ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Obj Ġ= ĠJSONObject ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfeed Array Ġ= Ġresponse Obj . get JSONArray (" user ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfeed Obj Ġ= Ġfeed Array . get ( 0 ) Ġas ĠJSONObject ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( feed Obj . getString (" success ") Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġfeed Obj . getString (" success ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Integer . parseInt ( res ) Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( coordinator Layout !! , ĠR . string . success , ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog !!. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Integer . parseInt ( res ) Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( coordinator Layout !! , ĠR . string . username Already Taken , ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( coordinator Layout !! , ĠR . string . error problem , ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Toast . makeText ( getApplicationContext (), Ġ" Error 2 : Ġ" Ġ+ Ġe . getMessage (), ĠToast . LENGTH _ LONG ). show (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Error Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ĠLog . e ( TAG , Ġ" Error 1 : Ġ" Ġ+ Ġerror . getMessage ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Toast . makeText ( getApplicationContext (), Ġ" Error 1 : Ġconnection Ġerror ", ĠToast . LENGTH _ SHORT ). show (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠPass ing Ġuser Ġparameters Ġto Ġour Ġserver ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Params (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog . e ( TAG , Ġ" Post ing Ġparams : Ġ" Ġ+ Ġparams . toString ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġparams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠAdding Ġrequest Ġto Ġrequest Ġqueue ĊĠĠĠĠĠĠĠ ĠMy Application . instance !!. addTo Request Queue ( str Req ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġmenu ; Ġthis Ġadds Ġitems Ġto Ġthe Ġaction Ġbar Ġif Ġit Ġis Ġpresent . ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . itemId ĊĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ username Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Ġ= ĠDialog ( this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog !!. set ContentView ( R . layout . dialog _ username ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext view Ġ= Ġdialog !!. findViewById < TextView >( R . id . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext view . setText ( R . string . error Username ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġed t Username Ġ= Ġdialog !!. findViewById < EditText >( R . id . ed t _ username ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Username ( ed t Username ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog !!. setTitle ( R . string . logout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġyes Ġ= Ġdialog !!. findViewById < Button >( R . id . yes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġno Ġ= Ġdialog !!. findViewById < Button >( R . id . no ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyes . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( ed t Username . text . toString (). length Ġ> Ġ 4 ) Ġand Ġ( ed t Username . text . toString (). length Ġ< Ġ 2 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! ed t Username . text . toString (). matches ("[ A - Za - z 0 - 9 _ ]+ ". to Regex ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġed t Username . error Ġ= ĠgetString ( R . string . invalid _ username ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġed t Username . error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyes . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Username ( ed t Username . text . toString (), Ġyes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġed t Username . error Ġ= ĠgetString ( R . string . at _ least ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno . setOnClickListener Ġ{ Ġdialog !!. dismiss () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog !!. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ about Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this @ MainActivity , ĠAbout :: class . java )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ policies Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this @ MainActivity , ĠP olicies :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ logout Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Ġ= ĠDialog ( this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog !!. set ContentView ( R . layout . dialog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext view Ġ= Ġdialog !!. findViewById < TextView >( R . id . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext view . setText ( R . string . logout error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog !!. setTitle ( R . string . logout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġyes Ġ= Ġdialog !!. findViewById < Button >( R . id . yes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġno Ġ= Ġdialog !!. findViewById < Button >( R . id . no ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyes . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb 1 Ġ= ĠDatabase Handler ( application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb 1 . reset Tables () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( application Context , ĠMain :: class . java ). add Flags ( Intent . FLAG _ ACTIVITY _ CLEAR _ TOP )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno . setOnClickListener Ġ{ Ġdialog !!. dismiss () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog !!. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( findViewById < Network ImageView >( R . id . new ImageView ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork ImageView Ġ= ĠfindViewById < Network ImageView >( R . id . new ImageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network ImageView . visibility Ġ== ĠView . VISIBLE ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork ImageView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( back _ pressed Ġ+ Ġ 2 0 0 0 Ġ> ĠSystem . currentTimeMillis ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( coordinator Layout !! , ĠR . string . on back , ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġback _ pressed Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( back _ pressed Ġ+ Ġ 2 0 0 0 Ġ> ĠSystem . currentTimeMillis ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( coordinator Layout !! , ĠR . string . on back , ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġback _ pressed Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprotected Ġfun Ġget Location On Screen ( m EditText : ĠEditText ): ĠRect Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Rect Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĠInt Array ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġm EditText . getLocation On Screen ( location ) ĊĊĠĠĠĠĠĠĠ Ġm Rect . left Ġ= Ġlocation [ 0 ] ĊĠĠĠĠĠĠĠ Ġm Rect . top Ġ= Ġlocation [ 1 ] ĊĠĠĠĠĠĠĠ Ġm Rect . right Ġ= Ġlocation [ 0 ] Ġ+ Ġm EditText . width ĊĠĠĠĠĠĠĠ Ġm Rect . bottom Ġ= Ġlocation [ 1 ] Ġ+ Ġm EditText . height ĊĊĠĠĠĠĠĠĠ Ġreturn Ġm Rect ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispatch Touch Event ( ev : ĠMotion Event ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġhandle Return Ġ= Ġsuper . dispatch Touch Event ( ev ) ĊĠĠĠĠĠĠĠ Ġif Ġ( findViewById < Network ImageView >( R . id . new ImageView ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork ImageView Ġ= ĠfindViewById < Network ImageView >( R . id . new ImageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork ImageView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġcurrent Focus ĊĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġev . x . toInt () ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġev . y . toInt () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( view Ġis ĠEditText ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinner View Ġ= Ġcurrent Focus ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ev . action Ġ== ĠMotion Event . ACTION _ UP Ġ&& Ġ! getLocation On Screen ( inner View Ġas ĠEditText ). contains ( x , Ġy )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . hide Soft Input From Window ( window . current Focus !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. window Token , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġhandle Return ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ!= Ġ- 1 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĊ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 1 Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhome Fragment !!. update List ( data !!. getString Extra (" name "), Ġdata . getString Extra (" profile Image ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpeople Fragment !!. update List ( data . getString Extra (" name "), Ġdata . getString Extra (" profile Image ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Fragment !!. update List ( data . getString Extra (" name "), Ġdata . getString Extra (" profile Image ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġback _ pressed : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġ} Ċ Ċ } Ċ