From 259ac5875ef0bbf65090fc7f6e72242ba38c9060 Mon Sep 17 00:00:00 2001 From: Kaushik Akula Date: Sun, 27 Oct 2024 02:45:32 -0400 Subject: [PATCH 1/2] Working homepage toolbar --- .../labs/pennmobile/HomeSlidingToolbar.kt | 142 ++++++++++++++++++ .../pennapps/labs/pennmobile/MainActivity.kt | 1 + .../home/classes/HomeSlidingToolbarElement.kt | 10 ++ .../pennmobile/home/fragments/HomeFragment.kt | 43 ++++++ .../more/fragments/SupportFragment.kt | 2 +- .../drawable/ic_course_schedule_square.png | Bin 0 -> 2359 bytes .../main/res/drawable/ic_dining_square.png | Bin 0 -> 1170 bytes .../src/main/res/drawable/ic_gsr_square.png | Bin 0 -> 944 bytes .../main/res/drawable/ic_laundry_square.png | Bin 0 -> 1662 bytes .../res/drawable/ic_penn_events_square.png | Bin 0 -> 2776 bytes .../res/drawable/ic_poll_history_square.png | Bin 0 -> 662 bytes PennMobile/src/main/res/drawable/img.png | Bin 0 -> 1760 bytes .../src/main/res/layout/fragment_home.xml | 8 + PennMobile/src/main/res/values/colors.xml | 1 + 14 files changed, 206 insertions(+), 1 deletion(-) create mode 100644 PennMobile/src/main/java/com/pennapps/labs/pennmobile/HomeSlidingToolbar.kt create mode 100644 PennMobile/src/main/java/com/pennapps/labs/pennmobile/home/classes/HomeSlidingToolbarElement.kt create mode 100644 PennMobile/src/main/res/drawable/ic_course_schedule_square.png create mode 100644 PennMobile/src/main/res/drawable/ic_dining_square.png create mode 100644 PennMobile/src/main/res/drawable/ic_gsr_square.png create mode 100644 PennMobile/src/main/res/drawable/ic_laundry_square.png create mode 100644 PennMobile/src/main/res/drawable/ic_penn_events_square.png create mode 100644 PennMobile/src/main/res/drawable/ic_poll_history_square.png create mode 100644 PennMobile/src/main/res/drawable/img.png diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/HomeSlidingToolbar.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/HomeSlidingToolbar.kt new file mode 100644 index 000000000..2e70369e0 --- /dev/null +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/HomeSlidingToolbar.kt @@ -0,0 +1,142 @@ +// fragments/HomeSlidingToolbar.kt +package com.pennapps.labs.pennmobile.fragments + +import android.content.Context +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.preference.PreferenceManager +import com.pennapps.labs.pennmobile.R +import com.pennapps.labs.pennmobile.data_classes.HomeSlidingToolbarElement +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.text.style.TextAlign + +val homeSlidingToolbarItems = listOf( + HomeSlidingToolbarElement( + iconRes = R.drawable.ic_dining_square, + title = "Dining", + ), + HomeSlidingToolbarElement( + iconRes = R.drawable.ic_gsr_square, + title = "GSR", + ), + HomeSlidingToolbarElement( + iconRes = R.drawable.ic_laundry_square, + title = "Laundry", + ), + HomeSlidingToolbarElement( + iconRes = R.drawable.ic_news2, + title = "News", + ), + HomeSlidingToolbarElement( + iconRes = R.drawable.ic_contacts2, + title = "Contacts", // TODO Confirm rename from Penn Contacts + ), + HomeSlidingToolbarElement( + iconRes = R.drawable.ic_fitness2, + title = "Fitness", + ), +) + +@Composable +fun HomeSlidingToolbar(context: Context = LocalContext.current, onFeatureClick: (Int) -> Unit) { + val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context) + val firstName = sharedPreferences.getString(context.getString(R.string.first_name), null) ?: "Guest" + val textColor = if (isSystemInDarkTheme()) { + colorResource(id = R.color.color_primary_light) + } else { + colorResource(id = R.color.color_primary_dark) + } + + Column( + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Spacer(Modifier.padding(10.dp)) + Text( + text = "Welcome, $firstName!", + fontSize = 24.sp, + color = textColor, + fontWeight = FontWeight.Bold, + ) + Spacer(Modifier.padding(10.dp)) + LazyRow { + item{ + Spacer(modifier = Modifier.width(8.dp)) + } + items(homeSlidingToolbarItems.size) { index -> + HomeSlidingToolbarItem(index, onFeatureClick) + } + item{ + Spacer(modifier = Modifier.width(8.dp)) + } + } + } +} + +@Composable +fun HomeSlidingToolbarItem( + index: Int, + onFeatureClick: (Int) -> Unit +) { + val feature = homeSlidingToolbarItems[index] + val lastPaddingEnd = if (index == homeSlidingToolbarItems.size - 1) 12.dp else 0.dp + + // Set the textColor and backgroundColor + val textColor = colorResource(R.color.gray) + val backgroundColor = if (isSystemInDarkTheme()) { + colorResource(id = R.color.color_background_dark) + } else { + colorResource(id = R.color.color_background) + } + + Box( + modifier = Modifier + .padding(6.dp) + .shadow(8.dp, RoundedCornerShape(20.dp)), + contentAlignment = Alignment.TopCenter + ) { + Column( + modifier = Modifier + .clip(RoundedCornerShape(20.dp)) + .background(backgroundColor) + .clickable { onFeatureClick(index) } + .size(90.dp, 130.dp) + .padding(8.dp), + verticalArrangement = Arrangement.Top, + horizontalAlignment = Alignment.CenterHorizontally + ) { + // Icon Container + Image( + painter = painterResource(id = feature.iconRes), + contentDescription = feature.title, + modifier = Modifier + .padding(top = 8.dp) + .size(70.dp) + .align(Alignment.CenterHorizontally) + ) + Spacer(modifier = Modifier.height(15.dp)) + Text( + text = feature.title, + color = textColor, + fontWeight = FontWeight.Bold, + fontSize = 13.sp, + textAlign = TextAlign.Center + ) + } + } +} diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/MainActivity.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/MainActivity.kt index 493db3634..96e3b50f1 100644 --- a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/MainActivity.kt +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/MainActivity.kt @@ -325,6 +325,7 @@ class MainActivity : AppCompatActivity() { val HOME_ID = R.id.nav_home val GSR_ID = R.id.nav_gsr val DINING_ID = R.id.nav_dining + val LAUNDRY_ID = R.id.nav_laundry private var mStudentLife: StudentLife? = null private var mPlatform: Platform? = null diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/home/classes/HomeSlidingToolbarElement.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/home/classes/HomeSlidingToolbarElement.kt new file mode 100644 index 000000000..c75e67844 --- /dev/null +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/home/classes/HomeSlidingToolbarElement.kt @@ -0,0 +1,10 @@ +package com.pennapps.labs.pennmobile.data_classes + +import androidx.annotation.DrawableRes +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector + +data class HomeSlidingToolbarElement( + @DrawableRes val iconRes: Int, + val title: String, +) diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/home/fragments/HomeFragment.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/home/fragments/HomeFragment.kt index 1b2ae300e..9ad629a91 100644 --- a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/home/fragments/HomeFragment.kt +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/home/fragments/HomeFragment.kt @@ -28,6 +28,9 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.Locale +import com.pennapps.labs.pennmobile.fragments.HomeSlidingToolbar +import androidx.fragment.app.FragmentTransaction +import com.pennapps.labs.pennmobile.adapters.MainPagerAdapter class HomeFragment : Fragment() { private lateinit var mActivity: MainActivity @@ -86,6 +89,14 @@ class HomeFragment : Fragment() { set to View.VISIBLE instead of View.INVISIBLE and hide loadingPanel */ toolbar = mActivity.findViewById(R.id.toolbar) + + // Set up the ComposeView + binding.composeToolbar.setContent { + HomeSlidingToolbar { index -> + handleFeatureClick(index) + } + } + binding.homeCellsRv.layoutManager = LinearLayoutManager( context, @@ -125,6 +136,38 @@ class HomeFragment : Fragment() { getHomePage() } + private fun handleFeatureClick(index: Int) { + when (index) { + 0 -> mActivity.setTab(MainActivity.DINING_ID) + 1 -> mActivity.setTab(MainActivity.GSR_ID) + 2 -> mActivity.setTab(MainActivity.LAUNDRY_ID) + 3 -> { + mActivity.supportFragmentManager + .beginTransaction() + .replace(R.id.content_frame, NewsFragment()) + .addToBackStack(null) + .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) + .commit() + } + 4 -> { + mActivity.supportFragmentManager + .beginTransaction() + .replace(R.id.content_frame, SupportFragment()) + .addToBackStack(null) + .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) + .commit() + } + 5 -> { + mActivity.supportFragmentManager + .beginTransaction() + .replace(R.id.content_frame, PottruckFragment()) + .addToBackStack(null) + .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) + .commit() + } + } + } + private fun getOnline(): Boolean { // displays banner if not connected if (!isOnline(context)) { diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/more/fragments/SupportFragment.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/more/fragments/SupportFragment.kt index 0b5b0dc9e..d087ac6d3 100644 --- a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/more/fragments/SupportFragment.kt +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/more/fragments/SupportFragment.kt @@ -20,7 +20,7 @@ class SupportFragment : ListFragment() { private lateinit var toolbar: Toolbar override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) + super.onCreate( savedInstanceState) mActivity = activity as MainActivity mActivity.closeKeyboard() diff --git a/PennMobile/src/main/res/drawable/ic_course_schedule_square.png b/PennMobile/src/main/res/drawable/ic_course_schedule_square.png new file mode 100644 index 0000000000000000000000000000000000000000..d8189770bac63f420fba925d76a46c94d5bec80f GIT binary patch literal 2359 zcmV-73CQ+|P)>>4L&3;mTe<46opgq*r zTn!s=nlvqt_R_RS6DM&HE3srdmaN6vC~M_DoSB#Jdn9F&LsFJ!Mo#4U38aR6?+y8W z@7v#_f&%{h>YH5w3uhEqrvYVH2+;*agy>quo`kRfHA@#U1!4@U^>#96Ui$sHmlnBI z;iq%2zWIzL#2+BUS$ergiKq`ELeSrNMN?mU`7b{mRsQ<&g>IpS{shJP1vLlpXd?%q zTvROmw*jGrUj(ePdsk(4gdmxZvj~RXQ%Qu#raYSJQv<57tkbH1H4GnR5KxCzdhUXc zGLZUos(F{}qZH(x!m4j{t3vfjsR5su8rT(LRMJ)sz)i!V2$KQ?McKhBLzKn zH1@#}fag#U3W-nBRKr69;7xhm>ye3YBNLG ziv=&?IWYk(fP;tIar6g6h%|)|Z3*K)i&v4`)VCeW5)zICaqQF}hE6<=Y$gXia}`sg z%P`FC$2)=Ns-%+WN1MY4MFLU{8loX+L5+N(*mf*SlonLc)D|J%NhCD{gqCW8~-1c)pQoSrDeXWVuF6h(x~U z@P4#)H%paaNm*Ig#LbW9Y<(#gK}%aBM!x?fG_AVO@-(l#Hw8VFtI}#=fNW0J6K#@| zR6L87xeY8#uENkwxB*v)X>O0=_z#EBf23Qgj8+JbZhyXr8z0}X^`{~j*_sAC^V}h* zT5WBf8C$|~GHV}Ce~%A!V(8m_@|q;`!?&E7yU z&1e6c#N_C_G~@?*_hFE}M@vT(gU5TZ7E9v#2h&nAA9!wXfTp%6`bknaPRS&7T>i%x zX2zGK)G+uttl4u^UU5C6WA?^!-GGhf)k2?9cM~+x*cK`B`xl;AdW4x59bQFI@K)PJv9g)F7Wzv8 z5aM220c>NY#}<(wBh2?~CkN2b=&VZXNMcwGf}#8^a#<5*&aOA6Wzy#1m9WF!$SimycH^4nEJX7>@?~Py z7L$1YZ{rA2aJR9Xgh7+dPptk}ri~|j{r@wFO|L^w=de1rDeqY|-*PdH+J#(+CTEb; z#NslMl+_=Bg0yTm6Dqt46UlfQ$??>^{`WzuQ|t;cl7<2gTaMyBv*dEmQn=oQ1lzC2 z)PQRe!;8pn`(c3%uA8}~Yct^->EzFj;9)^gwS4C75?mvO1FLU-w;x{xgs42B2Ao-m zJ!xau#XBuS>`7u|eMUGV#uIC4QTV?wxq|p=x;#k~kY$O3hdL-^4^evxOH->bD^{0B zbR29!dru223ilUouOdmgP^p{diHE{L^ii%Bs8Aa>ytyaDa5>=0zrMii&1K5E?|n^P zL^hD8et8Vt{cV_^Si!p&uTm;umR0yH>Ui|j0FHMxAxp{W$M4+00`)D;t(cew%GJ*F zoJ8yXMz{^n{HsaPE=vv-Ubf!j$?*GJ!Q1LX5|K|lMMXa=pMX+c#O*9qiXv?H@(O-{ zR|7sVHQ*Cd1D@F!u9>j?C_Oj888yFO^rZZs?T2NQd!^E1R`FgOmz1ZI!e*P?geS!C zCRzW;L4?UAS0>Sotqo|R0y=w`4%)IEINC!+F2lBW)P1O(I8~*4?;Gwyq}g5~2C?(N+CXtt~%#q(;Q9m|tHAHiea z*pJxE8vc86ly(@h<^9N}u!^1d@l%qe%YPr2n|GyP8^ila&;RNKItvAPH{l5}T*BPE zo1~qClx^QA8_93AFw(SpxIz6`YRbn8Y*M)!>;b zv3M($XM~ES+Txqay%T_C{gjHWl^SP_WFL>poPHcr13ob|@bxFgoA}Nf8^fv}X%5Si zRF%dd91X}iio7Nd6>V;yK(73B5PKXR&qKK_OdEAFz!T*LD-hP8g}gD7j_%6k1CBwo zib4?wczj-F`$zvkj*-C z(e<*Q9i}0MMVIX;D$t*JzLC0;>M(>d^p8iXw24 zxp?IqaZ+q}{dX6-Q+ntOIq%a@#4wc&I;k>8)$BbR>sai4NK?r9C}WzYyw#uw-uU&o dpUA!7F9DO-h+GTj((wQQ002ovPDHLkV1l2Qa_|5E literal 0 HcmV?d00001 diff --git a/PennMobile/src/main/res/drawable/ic_dining_square.png b/PennMobile/src/main/res/drawable/ic_dining_square.png new file mode 100644 index 0000000000000000000000000000000000000000..11d524a8bb45147bad10b0d3f1982782445d1dd8 GIT binary patch literal 1170 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT1|$ph9<=}|&H|6fVg?3oVGw3ym^DWND9BhG zjYYZDi*-uW3=h_8Vsb*<)+==WJkauP7Cm+&%=r^nI&ErA!=v6QF+rKLuYcf?dBLXKHGKtZcHudRIjo1pEFQm&Su(RY;l$Ee z&5HVN5}de@SVmK;w_;2<_qB&yC-l}IdiBF(P3_NTtNQ~&S!HbM*`~D}Q!w8DKt|hA zwE5Dl$sb;St={0e|HMM?uaBg(H`x5)Tya6^%);)k0rzfk*aYo*`s33J3!Oa`TP;sG zO^IDs&XzmZg6p$?oYnDFx1tnPj+{HAd*ITC83M0VLgF%u?4o~KY}CBwr#Rm$^=xlI z<<^(-ffG797ATvqx16|u>GlidDa+T_6dWz{s%2E1*mgNUQ7P4W&Ecs6x!H|-`BoY{ z)$R3qYv7)+?#Af}oXy3uiycKn1^h!4X4{#Nt^2=K4B9s_XQsMU4_8 zRCwwVTUK+JrX0F)DB-7l`?2B|4QC##oV88&`I(h-lV$DMF1~*4z2|l41*r$8o_*De zbXs__B~or~LCh+xmz^)0a<5HF;=Z^+k1daP&x1+tSzQNnWLqtD9XmZ$>K-ZZ8M3`&wrU0 zc)hymaL^-0re?9u0<9;rJw%S(bbKz!<96!%@$#ORM5X>&AbN)`?k*vK~wl zcav@U`|^t;P*`url~)BjVm4=Ai~GD(?5Jo9YpjI$D&ED~9t)J+o=@j5Ia0CT=Bh(Q zg}h78bb*TwcRsl-P(HSIx5o;vy>C`JY1{}tS^v>%=lc!&_DzhP?G>^xKX*;uZ?)qA z{3;hLkA12T*OEW{y}AElBOmvK{#fG*$J_dEXC1t}cTdpfYPS9Z$DcgY^nPsrhUss& z*4#L^)du&heI_RF@w-*IzOX7wH)L%G*Sz_^@)S2nz0lpZd~&>__^qscj>rFG1vd%0 z;Y0$*<}o?*<+P;FyvyFU)}Xp&eX4HF1RpLQ=?x)Pr>iS`7a6DCzQD=GKKrJv(_~Ne zpT~q^Yo#BF6h1NFnIOH@G-Zua;*u_IX`u#kk*&Zmy-|Nd@T2e ZIoH#H@A&QS!N4Mf!PC{xWt~$(69AZt3VHwl literal 0 HcmV?d00001 diff --git a/PennMobile/src/main/res/drawable/ic_gsr_square.png b/PennMobile/src/main/res/drawable/ic_gsr_square.png new file mode 100644 index 0000000000000000000000000000000000000000..f3f4c481ca73cfcd93e733ff0fb3585fbf2e2807 GIT binary patch literal 944 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT1|$ph9<=}|#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=G`DAk4@xYmNj11GB5Ai(^Pd+}k<6KEjS74a--%259KAJI-=j zqSmy9X`)(?@SA^QNTx+kO@^ zZhfBph2zTXc{k_p4=UFgl`dG*6sN6=HGLN&}GNx*}Lsnb!x zkVA#7@rc3%2^OJdpx_dJ&QqIZbtb$|`8P*r+RUV|5r4>I{pNu3@CDc9Pr zNHlw1oGiBAd}dCV_LX(AhuQD%N?89T@08)58P^sTip`tXILRhsha1>2j;{*-zWgM4 z;%~26%5$%bWLLpi*<13o;>WM1%~+rbdozgPp|T5j1| z@v5`yN=1d+y00WJ4S0O0Tkmm4<{LQy@8z4ybB(zNpZ{($aeS>e74lbjW3gV z?*A)&U(p%C`QU|Q$@E2Uzuw*w+o@mt;m4uo^*7FZ?$=x3-gWHpNx=ZIpy)GUP48+1 zF&(?WqI_AO(>#W*O-4?qmi|4*9-zk1e^+diOZwxo`O7h8icZ!!TD>xbGBlYLNy4ed4O4m-_ yIO+Su%-}iNhuP)j($|Z=3pEa2bHPC3H*fTV6m`X-o2tNE#^CAd=d#Wzp$Pz{x2P8Y literal 0 HcmV?d00001 diff --git a/PennMobile/src/main/res/drawable/ic_laundry_square.png b/PennMobile/src/main/res/drawable/ic_laundry_square.png new file mode 100644 index 0000000000000000000000000000000000000000..a4dc924e59e34db5b73f23ca4b542675ed41e826 GIT binary patch literal 1662 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 literal 0 HcmV?d00001 diff --git a/PennMobile/src/main/res/drawable/img.png b/PennMobile/src/main/res/drawable/img.png new file mode 100644 index 0000000000000000000000000000000000000000..3fc917aef4d73ce93178a52b9b151dc0dda36cc9 GIT binary patch literal 1760 zcmb7_d05iv7RM2b5Ty__aT#&R4J@!l$I%kOOtirjx4EfA8?NQ9&}2%uk-3D|vb1o? zWu&AiN5|#@ z8qfxNhb?}>ItG!j#=m02j?w*Vg9`%O(>z5BueG#xx%iPt+igjwZFr-{=aoZmW2#*? zRkgl($|*)hm$PD|b21|Aj^*cp`<0(5?b8W$telA{0z=2>A5W@l-z3K`nyjx2scxGa z8}2bJI1}j6vUt3U>}?J%se*l#vD$cd)nM0TPP|i67R%gvDK#GcYB_7@dPJ!((XD>W zrz=dq3MzC^1%KYJI9KW`MPRirqYI=c$cqQ}Hl}aeCp#@Tf@hBerujA;irU+b3cCb& zrXxVP0}Byul*vs^kk>07VYnl9eGjO30Mf1b);nj@u$1uS7U(vZo&|$y1`*K@zyL@e z0cpr05O;Glux2`b8h;^`7f=ym>{c|h{ILkXb!z_F$Vk85*5AMSUUO?tn#rI-sZP}q zrrRIGF0xl&a>xJtmW9u#?529ou~?h$74z%VgfVVn`)1*IAIx8iEYNd%9riFa*+Lnk z%#NtM`03Icroy4Dt>UTdn@7XU4Odgj32hHcoioEU`^B$5)0(q z^Sjn2Gw1Y0(CR>o>*>Z!0TQsC#fVneA2BZd5@dKRw1(I|$Np25aP8ZENn!=9q4-_@ z(`*Wzw2!@16q%@0_J**7di*N%xWZ{aY3Z$$T9c+A^SK%@7pNt0l4Y}&DYD1{FU?5I z8cl;76^w2=+~w0X`k^#w`VU!dqyC^&mmZ7;6#6D}BmY#eT&dSC7tyuG0Yq23btEgp z>ML6`xG%)ce5M9Jq)nFaFX-CLsUH6a(o?>t{iFcFZLok#nKwBrF1do}y0zBx$^PnZ zbY~P78mz+)H=fCJ7^J;A^ZJ*ZlxW44oGd$LkKz-Y`xjLMw1M{zQAGZ~fS!`x&DCG# zhirb^9u>)L9Q_jodi7pw&x5z@;M#h)qGy6{P&bjDQ{P2hKg-WQfB6T`8jhBOgDmH) z*-)un`DZkzHGH?M&L2>2O+WKhIzpEMw?lM0311Fz+`3|wp15Y(0w~}5%QT@3 zD3cxaJ(@}GP)E(9>9x&i&w7@1)P72mB*WDL!ZJkM!;Zb+F@?xvS>g5)g+ zfSyXEry|8-LWNL0>;tBGi`*Suyy-OEl9Uc8ptiVzdVe)nm8W&;7xg41Z9 zLe_a8v`MXMcUp>x+n|J*4IyniG7lb<^Irz2B}xFE&T_t8VO@M6+44rKsLdwMe3;P) zi_QzL5QYAM(xmhJ_u~p#V^#C6mSkx?1d2j1PeqyHr1j;OZrq{CTkPe-$i4zexRD)? zAL*4v;8s}i_%Dw$wV73+ie3-g&`-^izgAU*0ilbI;-dj*SVFhX1uaG$EIL0J{lw%i za_Ilj>%dU)wr&=Zdxx-CwF(05Rh^5wSXW)U^hE=7VB<(g@J5-7(+($#ak$$#!5xE` zT~T*a(=4>DmMY^r;2`B`e9}Sy+WP_m(*1x#N*PdNJB^X`L+tD;)6^qQZTPYWG2nYU zxc03l!66Mt&6@3lh;5j&4J_dPcuIX|$P|1SW(c_=L@f)GoPw;5(#cQRs)?z+e5`_K oMis?B5^uQNe=|t=8TW5YwrbGZ + + + diff --git a/PennMobile/src/main/res/values/colors.xml b/PennMobile/src/main/res/values/colors.xml index 8613609bb..797db6121 100644 --- a/PennMobile/src/main/res/values/colors.xml +++ b/PennMobile/src/main/res/values/colors.xml @@ -44,6 +44,7 @@ #f4b400 #FFFFFF + #1b1b1b #8BC34A #F44336 From 7246a0669be22bdbe7c8172bbac60be1adfb03d7 Mon Sep 17 00:00:00 2001 From: Akula112233 Date: Sun, 28 Sep 2025 14:47:38 -0400 Subject: [PATCH 2/2] ktlint format --- .../labs/pennmobile/home/fragments/HomeFragment.kt | 7 ++++--- .../labs/pennmobile/more/fragments/SupportFragment.kt | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/home/fragments/HomeFragment.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/home/fragments/HomeFragment.kt index 9ad629a91..7ba11ad31 100644 --- a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/home/fragments/HomeFragment.kt +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/home/fragments/HomeFragment.kt @@ -9,6 +9,7 @@ import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentTransaction import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope @@ -20,17 +21,17 @@ import com.pennapps.labs.pennmobile.R import com.pennapps.labs.pennmobile.api.OAuth2NetworkManager import com.pennapps.labs.pennmobile.components.collapsingtoolbar.ToolbarBehavior import com.pennapps.labs.pennmobile.databinding.FragmentHomeBinding +import com.pennapps.labs.pennmobile.fragments.HomeSlidingToolbar +import com.pennapps.labs.pennmobile.gsr.fragments.PottruckFragment import com.pennapps.labs.pennmobile.home.HomepageViewModel import com.pennapps.labs.pennmobile.home.adapters.HomeAdapter import com.pennapps.labs.pennmobile.isOnline +import com.pennapps.labs.pennmobile.more.fragments.SupportFragment import com.pennapps.labs.pennmobile.utils.Utils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.Locale -import com.pennapps.labs.pennmobile.fragments.HomeSlidingToolbar -import androidx.fragment.app.FragmentTransaction -import com.pennapps.labs.pennmobile.adapters.MainPagerAdapter class HomeFragment : Fragment() { private lateinit var mActivity: MainActivity diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/more/fragments/SupportFragment.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/more/fragments/SupportFragment.kt index d087ac6d3..0b5b0dc9e 100644 --- a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/more/fragments/SupportFragment.kt +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/more/fragments/SupportFragment.kt @@ -20,7 +20,7 @@ class SupportFragment : ListFragment() { private lateinit var toolbar: Toolbar override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate( savedInstanceState) + super.onCreate(savedInstanceState) mActivity = activity as MainActivity mActivity.closeKeyboard()