From 636aac983d81247a565db16fb5b72715d36b1a84 Mon Sep 17 00:00:00 2001 From: ibrahimcanerdogan Date: Sun, 15 Oct 2023 22:22:27 +0300 Subject: [PATCH 1/4] Other-Armor design completed. --- .idea/deploymentTargetDropDown.xml | 17 +++++ app/src/main/AndroidManifest.xml | 14 ++-- .../valorantguideapp/view/MainActivity.kt | 2 +- .../view/fragment/OtherFragment.kt | 60 ----------------- .../view/fragment/other/OtherArmorActivity.kt | 27 ++++++++ .../view/fragment/other/OtherFragment.kt | 40 +++++++++++ app/src/main/res/drawable-hdpi/icon_armor.png | Bin 0 -> 2218 bytes app/src/main/res/drawable-mdpi/icon_armor.png | Bin 0 -> 1385 bytes .../main/res/drawable-xhdpi/icon_armor.png | Bin 0 -> 3103 bytes .../main/res/drawable-xxhdpi/icon_armor.png | Bin 0 -> 5559 bytes .../main/res/drawable-xxxhdpi/icon_armor.png | Bin 0 -> 2783 bytes app/src/main/res/drawable/example_armor.png | Bin 0 -> 8403 bytes app/src/main/res/drawable/icon_flip.xml | 5 ++ .../main/res/layout/activity_other_armor.xml | 28 ++++++++ app/src/main/res/layout/fragment_other.xml | 60 ++++++++++++++--- app/src/main/res/layout/item_other_armor.xml | 63 ++++++++++++++++++ .../main/res/navigation/navigation_graph.xml | 2 +- app/src/main/res/values/themes.xml | 6 ++ 18 files changed, 247 insertions(+), 77 deletions(-) create mode 100644 .idea/deploymentTargetDropDown.xml delete mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/OtherFragment.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/other/OtherArmorActivity.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/other/OtherFragment.kt create mode 100644 app/src/main/res/drawable-hdpi/icon_armor.png create mode 100644 app/src/main/res/drawable-mdpi/icon_armor.png create mode 100644 app/src/main/res/drawable-xhdpi/icon_armor.png create mode 100644 app/src/main/res/drawable-xxhdpi/icon_armor.png create mode 100644 app/src/main/res/drawable-xxxhdpi/icon_armor.png create mode 100644 app/src/main/res/drawable/example_armor.png create mode 100644 app/src/main/res/drawable/icon_flip.xml create mode 100644 app/src/main/res/layout/activity_other_armor.xml create mode 100644 app/src/main/res/layout/item_other_armor.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..a73bd72 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08f3824..9f51f22 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,9 +2,10 @@ - - + + + + + android:exported="true" + android:theme="@style/Theme.ValorantGuideApp.Splash"> diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/MainActivity.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/MainActivity.kt index 935be97..0acc46e 100644 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/MainActivity.kt +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/MainActivity.kt @@ -8,7 +8,7 @@ import com.ibrahimcanerdogan.valorantguideapp.R import com.ibrahimcanerdogan.valorantguideapp.databinding.ActivityMainBinding import com.ibrahimcanerdogan.valorantguideapp.view.fragment.AgentFragment import com.ibrahimcanerdogan.valorantguideapp.view.fragment.MapsFragment -import com.ibrahimcanerdogan.valorantguideapp.view.fragment.OtherFragment +import com.ibrahimcanerdogan.valorantguideapp.view.fragment.other.OtherFragment import com.ibrahimcanerdogan.valorantguideapp.view.fragment.WeaponFragment import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/OtherFragment.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/OtherFragment.kt deleted file mode 100644 index 15bb401..0000000 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/OtherFragment.kt +++ /dev/null @@ -1,60 +0,0 @@ -package com.ibrahimcanerdogan.valorantguideapp.view.fragment - -import android.os.Bundle -import androidx.fragment.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import com.ibrahimcanerdogan.valorantguideapp.R - -// TODO: Rename parameter arguments, choose names that match -// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER -private const val ARG_PARAM1 = "param1" -private const val ARG_PARAM2 = "param2" - -/** - * A simple [Fragment] subclass. - * Use the [OtherFragment.newInstance] factory method to - * create an instance of this fragment. - */ -class OtherFragment : Fragment() { - // TODO: Rename and change types of parameters - private var param1: String? = null - private var param2: String? = null - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - arguments?.let { - param1 = it.getString(ARG_PARAM1) - param2 = it.getString(ARG_PARAM2) - } - } - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_other, container, false) - } - - companion object { - /** - * Use this factory method to create a new instance of - * this fragment using the provided parameters. - * - * @param param1 Parameter 1. - * @param param2 Parameter 2. - * @return A new instance of fragment OtherFragment. - */ - // TODO: Rename and change types and number of parameters - @JvmStatic - fun newInstance(param1: String, param2: String) = - OtherFragment().apply { - arguments = Bundle().apply { - putString(ARG_PARAM1, param1) - putString(ARG_PARAM2, param2) - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/other/OtherArmorActivity.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/other/OtherArmorActivity.kt new file mode 100644 index 0000000..3683ee8 --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/other/OtherArmorActivity.kt @@ -0,0 +1,27 @@ + +package com.ibrahimcanerdogan.valorantguideapp.view.fragment.other + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.view.MenuItem +import com.ibrahimcanerdogan.valorantguideapp.R +import com.ibrahimcanerdogan.valorantguideapp.databinding.ActivityOtherArmorBinding + +class OtherArmorActivity : AppCompatActivity() { + private lateinit var binding: ActivityOtherArmorBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityOtherArmorBinding.inflate(layoutInflater) + setContentView(binding.root) + setSupportActionBar(binding.toolbar) + supportActionBar?.setDisplayHomeAsUpEnabled(true) + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + if(item.itemId == android.R.id.home) { + finish() + } + return super.onOptionsItemSelected(item) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/other/OtherFragment.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/other/OtherFragment.kt new file mode 100644 index 0000000..24e221d --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/other/OtherFragment.kt @@ -0,0 +1,40 @@ +package com.ibrahimcanerdogan.valorantguideapp.view.fragment.other + +import android.content.Intent +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.ibrahimcanerdogan.valorantguideapp.databinding.FragmentOtherBinding + + +class OtherFragment : Fragment() { + + private var _binding: FragmentOtherBinding? = null + private val binding get() = _binding!! + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = FragmentOtherBinding.inflate(inflater, container, false) + + binding.apply { + llArmor.setOnClickListener { + val intent = Intent(activity, OtherArmorActivity::class.java) + startActivity(intent) + } + } + + return binding.root + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } + companion object { + private val TAG = "OtherFragment" + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/icon_armor.png b/app/src/main/res/drawable-hdpi/icon_armor.png new file mode 100644 index 0000000000000000000000000000000000000000..9119155fd8975fd41b7f7b2ed27f93a514970c1d GIT binary patch literal 2218 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 r=~hX*w}j~37EAFu00000NkvXXu0mjfFTAPv literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/icon_armor.png b/app/src/main/res/drawable-xhdpi/icon_armor.png new file mode 100644 index 0000000000000000000000000000000000000000..3a3b9e32ae3eea44f3743ec6e69b7267fa952c59 GIT binary patch literal 3103 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/icon_armor.png b/app/src/main/res/drawable-xxhdpi/icon_armor.png new file mode 100644 index 0000000000000000000000000000000000000000..be2f568f257ae217ae38ceebe363249443212bf6 GIT binary patch literal 5559 zcmV;o6-erdP)W|0<27hMD>+62ui&e&snJTH>sL!_Rgkwm@48QXc- zdW~o7@pv8@lJ|W7;ydSFiPXsUXq@q5>I3|7E~%Nt{muXXo$q`aAwF53tWVaXy0A7Z za49Fy%n5Ad1U0h)8(9H&-^d88JtqF&Ez}bX#e>VkUaT>o#{|}M0_zz;421!$Wdtri z!Jxd@$apZ37LWA8rL4fEwASU}J~W4USI)u4r#)EB`Dra}U?Xi%Gvmin!h=hXJ8sIb z`V_>KVS&|Q@yIP)R?hHZ?K1)|sc6N}9R3O}<^CPbToujSFVW1t<>(jK$X2nD{Womn zzJg{ZrXaoYI|8d2FIGM!9*Kp^PYPUmg5Bf6<*Zk^VeU6MUf)17cM+FzKr;ti%IdvG zSzyCeW)^Fizs1X+@u}#o=Db+Tc+eaaAKQhWWdtA?h7T`gbi_7tU!-QX%wVX=%68Dq z*=Xh@npwg|miG6JjKoI9ruA$G>sequ1FU7Lv^MkySk0(tWTXr>xm$m*?)ls!tRjN%<(f(GYi_t5^ZF7hu$-w^(>JFL$sdhU_B$T#*oqy ztLg7yB^k!bpuozY56fu}R-O{Hnh_t#g{6eRoaGc;j?yqkN?=7D*IL>vn__hj!{6I+Hx3-1B5{+ zIg!%et)_{=&}!OwPIs_61X>xgu`=|(SWZ8IrL@3eQeY+H!E&k(i%AdGQi9e}0xPM9 z1mTi$guqKVfy-_~m-V2@1yU7VE}C9dU$`c$r}^hkqM7|RHM3V#oU~IqPK54pOnYev zH)j)gV=9KL6Hz68=I`2zgW4?&ZDk0wIz&n<{5jph$`F*6hpu3G@Sm`ldJ?Nyf#sAy zV?bab<)y`x4~>);jid)l10FO61?H0iO9KM)DS`Qc2LQt_x}FxKc8240ysGPEhd9j~ z1LISrnf)|2vVVh(><_V#yVi9AN#bI=?!Zy?ME}fQP2=s^1YRGHVz(B-mAWH-u0_;$ zuh%1ZdnOKhNrTd07|;-5Svg43@}SMnSRMqH2Crgy@P}ARevKBBzee+e0*eeQrQNlZ z6bjHnQV@ThA5zas#{q@4Awg?twPR`6i&us%T+XG?9DW=d+0UVw`4ehp|DHCoKR`2E zM>G4&gClw0F$xHDvE}+fDmLpG>@`xjHWAwg^Ljms*K4dukFL}#>{cyY8;@ddZa}+* zowPhiEG!QZv6co|9WY3x6zdmQOx4jy{Q!;B-=UHG6D$vW4voRbF`rCfIbqS9_^Aw^zwZY-HQoF%Y-x>IxS|xn>thiGiS^c044uW46RSax212xyA_hZCDM^c|HZ2ZHa6I|X zvKp);t3!=c3ystsHIf}HBpa9?_$_u1<_EmT0p!;a%6{8{!M%!xvat_lzgOWSm?Lx; zjO!RKws#hi$_cw;48eh+p1Yw$4peo(@b^{yd8cCGYAuS}vk4HtI73-XxguH|BnCna zeojd=k~SJi-U$m1sD-2}8w&%x|FaV_|1kjN{KWO8nH$kZbM`Jaa-@swej}%%qa&nT zqTSL3hEJor3n^Tm>~|cY;dHyB8;W+yfn%;HIj}13Zeh1<;f;C}doC!)E!1EoS;RXS z)PjQJ>`9`90m3{hc^C6ZV18i4aghH(95mv@r{y+t92G9KO71c2I)#6}mVv!IguVGB z-kgZ-gSm1ThV#7(;{eDZC>3j8yWP*_u+kf~DDH3}pC9On6fGnVG(P}RZW#b6C`rQH zKnwhL<`W~BPY5~|ppA^*xj~PpmtN1b+$L@xhB}Q7oYGzz#GUyhZp_4Wl-!qg;Osl& z9w-bUax|2()@~(?D-IBr`~8(t7`vq~c1FXvTCs3rJcc{dakMXL7^?2Lk(y^vNq~#J z0yEIUT!KH3U~WKQE^!P%>sde6xwpxVI51ioga+a|5dC^s<>pAQIiuD4T zjkjTWp{1|{%(|(?@U^P7gcFpQg%efq?Q|i_Q z2ILmlhZC6t^}0iW*mubR6c-5ZJI-g`6`*q=+^ls2iu2y03vtke_y}Ey3%YPDKtq14 z4hgIbjW8Ijq+8JUARaT|)=V7R{F0RqCNe$lDBkOmoqQLRdy6L)gj!Pj$?Z?)YXqX{K&ZKfszlY{VnsC`fNKuTFdW|FEqndgtR<)WLDT&sG~F*~`Z$1=2K}@&$oq)CB@edTiy_~lZ%*}Nn_q}sbEG@& zFEaN)abk0nJ9K2UBkqB6F66*CfUSQHeC){FQ$xDk;l@M*33fs02EvZ%f^s(4^&G<1 zX(wVc{R~7oh^As~ITeLH75$by6%}$SdK^H5el>Y(41QDJlm|Ns5RVI%260!{r^b|x)Hj?PvQ(o3zWgnw)P+zN*LOH!-Xk*mP!7lC{5!;@3&eJpGh8qV#u>eD zp9$@Yzhgi0d{A^D|zHU!Mggp`MI|iVn4-KB*CcjFJouL!t+yJifiRH%R zR}dNHjH95qkvV$=jMLg3E)*At(u=$YvGt;fD`$hSC!%nm5KTs;RiCRRU z9y!Lybul4Od_w=~cp z<}Vj%F6mLfV4F++xtiV1DfbY~C3sv3$#p0n)=~L@BEwLWx}lt67%mhIM15vJFPPYU zF$lXJVb?&8TMUOJf38O$>ybZ`^@x!5i0628R2_;7%*O>9@hIjK*Yp%F!44udQ<)pU z+qEdR_~p+XeY!l1$hhusA@o8qvHb#r(SK(1c@sAZVGz4TDZ+4w*hzKk8cl>EvK|&R z9zHf7L343|$v{#Wc8r3?L}W-2^znvLU5E!q>8eISS3aqP&L_v#2J{GHNs zTI`-%#SoyK!(bdp$~lnL@L$^1kdR}czE15J$NQ0xrYwQEArBUZ1!nrsswv!sej77! z9z5|}MO^~lEQYap%5BcNfV{8B7*1q*#SU?yY&t+#4Cl3z2Ckh6YA6hY!Hk7LV047lu{R#_p!`1J@WQkuXeQ>N=@<`{zCbhmZ9S1wLnl%<8v4AfgalPX z9#no6fM%isQ#`Zn_s~>a$m!UB=t*3xqlZuZB&TA;F5>%+hI7!U-Ctzh4T^S*>yjQQ zCkl3a(XAqE3k34YHW3ke#tJg9{Qs=oq2?vm3nk3Ag` zvSvo)RIH(=aj_0x0Es7bQ&DwWzFoE)cN{q7y(4n~rQ03+(n<=7*{f$wY(C4+2DY9x zu=$LEoB5y%huuQFcfo1MN?$~lO(8462QSR;wDuYaA*cI&axx}pvj30dRIH_L$5T;B zQ&GMt6VF%pyBnjHdP$DZ14riMVJHSRpVcrFkp1TXUVA2h8)t*yTBG4`q!>y_QYFZ6 z_NW~CLs>P2tOk91byGZ)b@i2D(V33=Y#vcgM!v1jBW(heN{jme5qrpVYpQO+SM2RpJHge(Pr+%EaVof)6NXjq`|klf=gTr`E8usk#s z5~y019FI&ovz4|pN+7;9^W~7c*tgCHHKhGwdURxthGOhXL(y==?|6S8b}NW)o0!FZeshLEGC zuU&b_&N;m7NlVD_h?mC&cHMePj$1!>E`=TCAnszF3nJ=a+$@Bg)8?RlD7SP)M(M-> z7!Ab*qa(%p&2uK8!8mXf7>44)`K4Vle?yL%LY7RgJ^BH|;YAY>2E_8&b&GGrUyyZc z%K_6?H|JWIxRd2}A2kbmJmh~)$HN7pT*FWtcXUH}?WYDdStks<`g8!><Fqci@y5 zj!9H9Nj;a$Ht{}cZrTOo_w15_8SxBtCmkzEg@^+&&n~Y$@d_tg*#5W4{rBW z<2DwCT?wfI%MkWK9fHDo?P9qWAcMFV#a62Ew_A>z$pUtOT zFn(-4?N_eZJ`uoet~Y!#X)x>-lB3Ekl15!P<~R!GWAQ{6VN3s$EDj{@ALA-Iwz-vG8_vqU5209!mF1`wg zNi=GZ14PoONwR1_7L5}q2P_&j6r6S`AnZ~=d?XiYL2juafd7USf;W%fmEU8;@c@0Xcr8} zH7*#A6vHqj6^)K|P2deG2L2l7P0^|Zgd8AdNY`GBwsj}RbUCQ zL)v@3&rA8h*Ja+n!J@qX8|_iiXXkywF8X{p=NEXvCvf`y{|nE@dZ83lztW!jju3Vs z;FD(!(J30Dofm!WqUh@s`UK_s*kL|=`7Z>1oDewu2)pLpmYp{Q literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/icon_armor.png b/app/src/main/res/drawable-xxxhdpi/icon_armor.png new file mode 100644 index 0000000000000000000000000000000000000000..afd8b30bb961bf6dae7cef4f5b2980d6892f2085 GIT binary patch literal 2783 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/example_armor.png b/app/src/main/res/drawable/example_armor.png new file mode 100644 index 0000000000000000000000000000000000000000..aac76e48396e7532c5a64e20f05342d372d3b939 GIT binary patch literal 8403 zcmb7qbyQSe)b^dAbLbLqC=nz?q(c}=kRFgmP>}AB96}gLQMwVS0SW0I5eX>~=^8~q zX(Wc8m*4vS{?@zR`_H*&tsVECea>^9efD{!ud6{t&PEOZ0F{;|!VmyJ*RLRel=!-_ z^e%U}ZlFFYTE?W;PYCH#Gyre|T8Ib6fw|jx!Bt%Se#=U+H3P`ho(FD2Nj7lN2L?29 zx_MvS-w?YAr_ebKQpbV42%0~^iEsn>N`qu1SmgCP<%p>|Uc-+@JWdh3)Zf&dc;kPS zY?(XJ&qk~&zu_}0-QnYt@#ob@`Y`vAFFtuf$>G?0_n+diltjBkd$1xlGI@D%vGrVT zyWygaJThxP&WFFHnVmP9o74+X?u)ckRLYob2ob zYqqHKoeMcn4}8I4_}Jx*DWVmaCFM^=oJ3dbUKB^--MN(czyzOJQtic48QksM&trA} zP89F~Ehg#XE7(pf+!KLdI(K?Ap1#m$ALzV-zabsFy!h|O!t&1`r{}flm^YbkPHNHl>LW>urh~EbF#?)1alFm0suW3-Tdq2U+t0wYjCL zrsB~r7R;gasOZdnKCH&NkYf!;x1B<4^RBJTqgeN=a~Ag&PX_7RaDD)mxldGx$pB@n zwEa`+_l~vk;9P{-x=qoe*1rGNh#>KtNTxv#*!WG>ir-aRv8bVF-SR;y&@_MCdAN|e zpa-hiuJThC)&t=o;p7*8$s=u5(QNzx6+|ETHBxESnS?XsK`mkK60dJHTA_O)9>i>T_Xp7}j1ofZ7O z@A|up-4Yf;L3ZQ{D6X;p1n$)fB_;`yVw-)Wuq?thWB-Xq0*}9w@uZIL3T5`poV-XE zrDnYxj!jAMSaVmN)+r*XeccY~vwguI0BLg|2a9dIuq-yx0n|}sC|DdB_8TmPsztfb zb|u_Cbo58kILT`bQGhcZ!XhE@(yhk`2Cx&e)ZZn``ERkMWkrwZJh_48x6E&GzJonE z_fw}ty7jFHFSANNjDrCM=I8vD536ND6l8F=k##e?KNd6}HjJE{(MoyUUtNHUaQfAz zy7kR2#a#WgB-?uSLZr(fhZ+*hgRqV7Hcg|)1_A2q?o26BMFPP&?Ibf37XyS=)R1-{ zjiZntUbiLyIe8EfPHLI#6NcilDtlBG0fEh$HJt?K04(*MiD(Wo1v4Zb)a>crigy_8 zVZJOV04ah(tPx#YLCa=ZKPfj$X1i!l`mrQlTGEbG^7%c_+!t9FRHl>cTdZTqP<2em z@89yeg1q$SJdvT`>Fol)%uwPJj=gs5CH$Y|%E5a-Dp?qyl;1ta)y`HBOA5e0%2d73 zPL$o6zs8{|H9o*1q*>k=&^_ypAyv*RZh1Td{yx z$sO_!Uw{giJ2N6WM2#sO=m0_~0jO4A62bK_m3l#c@3wIYcDo{^x z?PVk*+cx*;oqb%M*LalC#v)&a(TF%l>5agNKjclUPbraIfcAzOe6CV^{VS_TY#aEd zObn?(bDlRx1qguj-_S-zcH=arei2Jk9)UURiSQ8`4TD!Ez^C_j z|Epe&)A?uBn`%$}4$Z6+c~fO6UgtJ}^%20xm`bnMnf$IgUF3=ynd?2q4B*`mHsoPgv_;!uZ&^VJS zU(7{~JHC*7_iCH(xKq(V@(nfUAq-WJAioU7K2ClNLN|^ZH~gD@bf;e~{v}lE-47%p ztPnE>uF?C!X&;jCj^vyF%7X9&>frb6LyKfkhs>v=u527zU*Ic7RCDcu!@2r%nXA}Y zXkqjdWpdC-4s=?qZ>T9u=rdF4*GDLEFGV!OtyACs@iO9w9%Az?@X^%e?4nV}}Jz_|)6Tfdrxc4b+eLFAcO$*Qdml*&$VTGN(N9Xn`ynPGz{?7a)RB8_r zuJfv!O1dn+{w^lOirdd7Bxvfb>U9hlBkGXo(j~}D_msQ14a32uLQ@%(3C;}ivtq5J zk~nuj1F1OqI>8?8lN;V%?;p*&z*>`?h_qv^DFAR-Y!*==?Yh=}t@eq6x2I=J!DXQ1 z2NtebBJN%()gT~J$Sk*B7kl55swok)ZhAoIXEiZD)Zei074TZNvIvX)dk9w9F8cWS zw#cMZ8W$&@t(A5;&DeaG|B68FRBGQ#(l#dQD zRrFdC=p@IsJ$TQF&I`z!3q#GTzFWA;6+|l!Qxru@0uK~f;Xs^E{>0Uv9OvPB$-OHi zr7i5_NsqtZ%lk=dbC+xDk91F0OnUOCwXyxq(`LJ2o1xZhX$sNR6f%kRUo6GzzS1z0 z1};6II`(+EVD)F_#dHO<8QXao6>by0BmC*}CzwooS}+yX?hjiG%a^Zr03#7*MH-HO z;nnLi8WA*nE$e>238U?Be`)CffE!zi&KZTY^Nc3*O;%$UN^=6v-~)`}&h{(Q7aqJ5~=c#hK8jzY*}b6Qc;B?U0o^ zku1lULhv#9Tn{9ZtQb;;yf$Z|^e5#aY;?Y3eDC#p33!bjDej)k;zi3hTu^z~Q>-}5 z%!@e>;|>mEY$-WjF8RVng1O=5#r=Qv8rpxmJ|8vW_PEDPsimpoXU8xkjwK-jh+T z$mX=p*7-VORclBsEj>12J86}g{L5%}`V!=XMm6Ay+~Yloce6cXOb0RdR}y<7oG8y2 zO;LW-_OAh#FQurBY(24y+|VOQ5P|B%WN9ro3U?Rua&%?)Y3rlokqkTCB)7e{DeL`o zIWLb~w9Ln;KKZnlz~Q3c@ci~0LbUb#yaAH9@+W~+z=hiH)4JYt3WB0nNnsl=eh(uQ zM~~7h8p$J<|Ie{4sM+`)v*7JI`MhhW@_fZOmph5FhC9+=h1NfdPm{K~Z3n7GZYpS) zxlC6syUBS?G?aLQo+<1)qT}m2@>lQA3efaZ(;GqWcvC}`GI4AM4^pYKj3yUgYa%Bk zt?b`$?EfL$C;fM!qA!6Eg-?kkMMiQBVh_LTw%bTH ze^+R{OX`plz~=CbiJAe`hLhrth*F!j*nR~89$HgzVsU>!At@d9ZI40a(`3S*W;e#X z+1+bS9|w{Q75I^jo&QDq__+FF=KGoLMVamZM8ApAd9imw+uXEwh!b+lct%HBiMa=5 zQ;dZ&yk*Db>~uMmTld~D3ynM^n=HxctQXN{g#lz%;4OEV@?3D0ax`qY;4zWyBBMu%9Pt zp@V7=`#x5Zmy}3>t<}x zLHNfHSi%3%eO@Lg(Zl~)!CH+F)jevHm1jhuKk`VkK;<>#1LA6xyjyjpOeo9VwWpiy z+Zw1FaBpP<=kDp!7dV{e-1?I){O;nY@-RMMg2pxl{H>q4iA~TMddLUXKy|jR@bj${ zj0FF^l4HdHya$q-pxlz=FUpQ6h!M+5|E~gr=a`))N+j@g6LccFWpGwQ6%f;M^baZ0 zd|TAgd1LI?*!D=bi1wH^f=RR6sy*!THH&s5v8~W$@AK@d!{=X_HJzivx%ZFe-l!y= zdk%}@J(KIas){$M8<~_1xwP*9;h85vA6UoDfnu)6*pRGgfcL2GJ(wF#19ZRnmn}gn zCpsSsTv*cJS=e{C{r^}k6885V+fL$->#8<*HGVdn2z*)06ha1CAl7u%RN zNXBN3YyxucNFac>%k{`Ax?0)T65su?y}IJ!c{2XPdtbu=WkeD<7qK^ z;9&#yWN0>QkZ9j(NKFZ^?BZ%E9y$+E#D;2W6pMs zk5s-6WlalW&K!`Jq}94BWu9a2wK3v;<$&?B6^2FGXEzos6+e(zJkS0P(~dmSS<(Cg zPKhkV5M-YOtF&q$n zGMJgia#!`3tH8D6_iIXZ^3>m@a=a?Aspz*0iC|k4i~oY^^@6)D2#iOtBMwQub)SU>v(^GiZrxzsY%5SxQ^@~cGphu~7b3qFnwB+?_?rVs9X0Y12YJh+ zt?CwSOejp#CCA=hQW!8p(eU@76{mMHaS17Q-doBxx|dX$eO?w_c~0vK+2tu%+j_H7 z^I?Bw-1iP}w13D^EwFd>n&K3P1LfYXR*P$P5CnUcV6GnTsK4)J4;;-svpNQjPo4E1 zFyp)Sp+g0FW#SdpL^ulJvG8WH6CPxz8FGH7%zcgdMB1I}lhD<3Iw7F!Z_WM1pbqL2 zeAfKyZ1%yNU2gvM&kviBvp*-7?mI5de>6Z!VKzpvTwc}PA&T!hUl>frPtOoSX5z6` zq}&_FZf973aiNr9aWfiyYMnP{YkeuD@Alu2j9C(y=u?S{vSuqkO=I8Dh7V}2j z{e=0`G&{lT%64%!4F#r-|>mUTR zHQD*fB&e%k0-Ke=Ho`frVSIEtcgbXYM2!s1!CXCGkr}Pn@Nim^3d>W9uYL7l!*w$j z6QtUE5R!(mF55i+%!<6+MxUofV8R~HlVPuWuho5D{P2^oX9gpu&7C?-!6PDvK~@_A zlDg21Q34|VoU8IinMFg5-j(V5N3N4--<=I>VXp7TS9?D*kDH2;OR)8>4yU5nJhm?H zy%uyXsqCrcLk{BT+Pu9Hq~A`d6?0g%f2z9ilp{Jyu&Pnpb1JniMGN&qjxRMS!sL74y*_3Gecg zEkFU?m@c1}W9_Bc;g2TYYCbx6(GaTGO&u+K+i>Amyz*WuHc{gn*~Q+=UGn4NvpvpSgjG>-o2oG;UF)xfLIa$G82voj zZFpT{okfpLKLW-JA4J~dR*BycbTYNQt@5zBrui^P^AHXw&fqOtTC{F;k}8W@-Sun5 z?Yg}fD=jnS>q`bt$7xPKtR+j2ye}ZvWxC8kA_7Y>N%Jy30*{XL>$_6FLYB`DRjU0a z_ytKci~Mpg+-SY8jcsluxSS2JKenSOlu@7CO76r)wRO0fFoXTcrTO4xs0`VbFx@5) z!8@ja@ND$P1Wnq@q}*=BrDbY)bp7O4cU61t6;?2>PUHzb;S0%vmimj ze&Z@&Lw|{%X2tbhb{Adjam63;*|5!FP=7-KJkFj18o5by;T&HuuaV_*`sJtFKFi;H z)7v&?8Hz;QjS@FZCM_Dim>-h%%|L*Ya!j?Xz&6!cI_LZZ$>0~u#fgRA=;>hDpN$C}h<=|AH-+@VJ1%uIj?^ecXki!A z`6ue??h>zyF3gg7JOy-RJ+b@IlDU6{na7>*oyPNu3U96IbX9MK`{f(N$WF$S&}%gR zA+MQyJQeVIJtcpqo+cwk{!8P-MTVyh0xj!*-Tq7*HuJv|>=uu7+c)RlbI zXa`K+|AP@Z@|zSp&J!l6Vaxl>`o&XHLx@tJjq zbFVKbr&XZs2SSMI3bH=@WqV%yS|2h%e zJLq(|H>)qKUaXDJ;f4nJywmpvJTuB_NkBKivs-d7eeVI{N@{PySBXQj?#+-L@Ojk( zKDr&mh=cDYWts z_*ycoC)r&0ve(+*c`w#D*$y?ij}(9+NjG`{8baIb*dEsVvCeBa4t-vlWYl+XcdAsT zFU-I1z<#?#Ya(Ci7F_DIjlOJ3zMdrR?sM4bZp)Igvnz|3RX&A$O*|*I@&9oPVDA;X z=*_9J0nUg7OatgaAF1GDX0Z(+Fos* z)4gOJiBZJzhxgJRsEeN!xl`N(>(354`|)KTo6P>~#4;|alNf2(k%DU}x%6i#I5PKt zFg*L*_gL6>IJ)bVV`CZwyYwb1v{L+f2n4`zZ&CrMn-+}Zr1JXQ?~KQH!;Q&eRtO#& z^XEcLA5^{pJKc&>pLJfD!I)%$|A6iO%Pf*FlpHr*NZ+f zZ}MjM9C;1DbP*@NW`r%+FcTW;QWo&_!i;4hu^KU{AvP94`1t zGGT}8vRX(^CVKNYdFu2DTS;}cQ{KC#L(B&9{g9FEdyNPp7}=eTtRL179e*eQV}JW# zL!nqxuhWH(>%J1BS+UFu^Kz*_jt%b_(W2g;2o~b)K4A@8siZU8VXB{?+(0*JFQQPM z8eE)RwtEdc%Fb}x2cParOE;;>hT7^0(IFRs1&C!{`yKis84)GOMK;>kV;b%^ z=3$XMSvhx+!>2rAAWh{*P~npwqQN7lE7!ef<_HM3|E|=t+gmrztS{(lS(JkiNDr|4 z5y8EhtJzVJeMI3>6!*~C6zQkYtk|trMe+><_okgGXurYpG-Y+v17YV;d?>77gj}TJ zu-^75W<=81!b~j>2K&~hAZToYxWZ6=1!kwGB*A*$$KGlbmrF3@a&*##WCI9WRn*}< zAExW$HPr5@{WqE4L4~IwS2Uh=Xk(Xy?Nh$qC3S@&j73B&ih_-6_PXBIX2kV#A>@4R zkgSeVSr0uxhP#0xs-5$C9lyZ3wP= zuLQWhtQO3FKM8SO*7C_G@WB6Z)i*qioT250T#fk4q??rwf_$#RvgYPXq3MWeJah-- zKdo3W7hrewL0?2!ZCSBS7ch2{!oCavBh*{-IZK|xzhG*E|J(>I|WqFzWu5KWwU^%oMYaySOTr_ z(Id=RhPh&yOaGnLf}AG_#C~wGg2~S5GViO<)`E;D3Dn3-*c}V#@F`WXY8WDql;i8x zAEA9!KNl9t&wuEUYDkZXRr{TZtlTbH|J5*&7;!=4qjVK0Hg{RfyAX4JmmIr-X}g1$ z5KGW9qK{B~@jW+uW@aM+R)h(TP;$S(uk|)pm~OP{Aawb=y2g2$=sXeV0R?QM!otRN z#DZJWp0Lz&V`R%PH77ihc+7@_x-Qol8ca%ID1PLb ztvvU}cy;_vPR5w`Sbt_=z}&_Jxx5D!UZ3N|D0vc`H9Z?KocRWTJ2GdDU6QHqhSHF> zps-Q!_1%E5|Ly{8Vs?NlnZ0C`6vX3*s}n4rn6s2ava@G!74%Tl{%IzllVH}je}66T<)i literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/icon_flip.xml b/app/src/main/res/drawable/icon_flip.xml new file mode 100644 index 0000000..f16a1b0 --- /dev/null +++ b/app/src/main/res/drawable/icon_flip.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/activity_other_armor.xml b/app/src/main/res/layout/activity_other_armor.xml new file mode 100644 index 0000000..b3b2e52 --- /dev/null +++ b/app/src/main/res/layout/activity_other_armor.xml @@ -0,0 +1,28 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_other.xml b/app/src/main/res/layout/fragment_other.xml index d4fc107..6912c15 100644 --- a/app/src/main/res/layout/fragment_other.xml +++ b/app/src/main/res/layout/fragment_other.xml @@ -1,19 +1,57 @@ - + android:orientation="vertical" + tools:context=".view.fragment.other.OtherFragment"> - - + android:layout_height="50dp" /> - \ No newline at end of file + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_other_armor.xml b/app/src/main/res/layout/item_other_armor.xml new file mode 100644 index 0000000..2177fea --- /dev/null +++ b/app/src/main/res/layout/item_other_armor.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/navigation_graph.xml b/app/src/main/res/navigation/navigation_graph.xml index bf91a07..b1b2f55 100644 --- a/app/src/main/res/navigation/navigation_graph.xml +++ b/app/src/main/res/navigation/navigation_graph.xml @@ -17,7 +17,7 @@ tools:layout="@layout/fragment_maps" /> \ No newline at end of file From 8968b273715dbfc9d62888090930b2a34ef2bc5d Mon Sep 17 00:00:00 2001 From: ibrahimcanerdogan Date: Mon, 16 Oct 2023 21:46:22 +0300 Subject: [PATCH 2/4] Other-Armor code completed. --- .../data/database/Converters.kt | 17 ++++++ .../data/database/ValorantDatabase.kt | 9 ++- .../data/database/other/ArmorDao.kt | 18 ++++++ .../data/model/other/armor/Armor.kt | 10 ++++ .../data/model/other/armor/ArmorData.kt | 22 ++++++++ .../data/model/other/armor/ArmorShopData.kt | 15 +++++ .../data/remote/APIService.kt | 4 ++ .../other/armor/ArmorRepositoryImpl.kt | 53 ++++++++++++++++++ .../armor/datasource/ArmorLocalDataSource.kt | 11 ++++ .../armor/datasource/ArmorRemoteDataSource.kt | 10 ++++ .../ArmorLocalDataSourceImpl.kt | 20 +++++++ .../ArmorRemoteDataSourceImpl.kt | 16 ++++++ .../repository/other/armor/ArmorRepository.kt | 10 ++++ .../domain/usecase/map/GetMapUseCase.kt | 1 - .../usecase/other/armor/GetArmorUseCase.kt | 15 +++++ .../valorantguideapp/util/AnimationUtil.kt | 23 ++++++++ .../view/adapter/other/armor/ArmorAdapter.kt | 43 +++++++++++++++ .../adapter/other/armor/ArmorViewHolder.kt | 29 ++++++++++ .../view/dependencyinjection/AdapterModule.kt | 7 +++ .../dependencyinjection/DatabaseModule.kt | 7 +++ .../view/dependencyinjection/FactoryModule.kt | 14 +++++ .../dependencyinjection/LocalDataModule.kt | 11 ++++ .../dependencyinjection/RemoteDataModule.kt | 10 ++++ .../dependencyinjection/RepositoryModule.kt | 13 +++++ .../view/dependencyinjection/UseCaseModule.kt | 10 ++++ .../view/fragment/other/OtherArmorActivity.kt | 55 ++++++++++++++++++- .../viewmodel/other/armor/ArmorViewModel.kt | 36 ++++++++++++ .../other/armor/ArmorViewModelFactory.kt | 20 +++++++ .../main/res/layout/activity_other_armor.xml | 13 ++++- app/src/main/res/layout/fragment_other.xml | 1 + app/src/main/res/layout/item_other_armor.xml | 26 +++++---- 31 files changed, 531 insertions(+), 18 deletions(-) create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/database/other/ArmorDao.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/model/other/armor/Armor.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/model/other/armor/ArmorData.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/model/other/armor/ArmorShopData.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/ArmorRepositoryImpl.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasource/ArmorLocalDataSource.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasource/ArmorRemoteDataSource.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasourceImpl/ArmorLocalDataSourceImpl.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasourceImpl/ArmorRemoteDataSourceImpl.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/domain/repository/other/armor/ArmorRepository.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/domain/usecase/other/armor/GetArmorUseCase.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/adapter/other/armor/ArmorAdapter.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/adapter/other/armor/ArmorViewHolder.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/viewmodel/other/armor/ArmorViewModel.kt create mode 100644 app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/viewmodel/other/armor/ArmorViewModelFactory.kt diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/database/Converters.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/database/Converters.kt index 6e243a7..0b32bb9 100644 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/database/Converters.kt +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/database/Converters.kt @@ -12,6 +12,7 @@ import com.ibrahimcanerdogan.valorantguideapp.data.model.agent.AgentVoiceLine import com.ibrahimcanerdogan.valorantguideapp.data.model.map.MapCallout import com.ibrahimcanerdogan.valorantguideapp.data.model.map.MapData import com.ibrahimcanerdogan.valorantguideapp.data.model.map.MapLocation +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.ArmorShopData import com.ibrahimcanerdogan.valorantguideapp.data.model.weapon.WeaponData import com.ibrahimcanerdogan.valorantguideapp.data.model.weapon.shop.WeaponShop import com.ibrahimcanerdogan.valorantguideapp.data.model.weapon.skin.SkinChroma @@ -251,4 +252,20 @@ class Converters { fun toWeaponShop(json: String): WeaponShop? { return gson.fromJson(json, WeaponShop::class.java) } + + // OTHER + + // Armor + + @TypeConverter + fun fromArmorShopData(armorShopData: ArmorShopData?): String { + return gson.toJson(armorShopData) + } + + @TypeConverter + fun toArmorShopData(data: String): ArmorShopData? { + val listType = object : TypeToken() {}.type + return gson.fromJson(data, listType) + } + } \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/database/ValorantDatabase.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/database/ValorantDatabase.kt index 42fe276..3967007 100644 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/database/ValorantDatabase.kt +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/database/ValorantDatabase.kt @@ -5,21 +5,26 @@ import androidx.room.RoomDatabase import androidx.room.TypeConverters import com.ibrahimcanerdogan.valorantguideapp.data.database.agent.AgentDao import com.ibrahimcanerdogan.valorantguideapp.data.database.map.MapDao +import com.ibrahimcanerdogan.valorantguideapp.data.database.other.ArmorDao import com.ibrahimcanerdogan.valorantguideapp.data.database.weapon.WeaponDao import com.ibrahimcanerdogan.valorantguideapp.data.model.agent.AgentData import com.ibrahimcanerdogan.valorantguideapp.data.model.map.MapData +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.ArmorData import com.ibrahimcanerdogan.valorantguideapp.data.model.weapon.WeaponData @Database( - entities = [AgentData::class, MapData::class, WeaponData::class], - version = 7, + entities = [AgentData::class, MapData::class, WeaponData::class, ArmorData::class], + version = 8, exportSchema = false ) @TypeConverters(Converters::class) abstract class ValorantDatabase : RoomDatabase(){ + abstract fun agentDao() : AgentDao abstract fun mapDao() : MapDao abstract fun weaponDao() : WeaponDao + + abstract fun armorDao() : ArmorDao } \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/database/other/ArmorDao.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/database/other/ArmorDao.kt new file mode 100644 index 0000000..4400adc --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/database/other/ArmorDao.kt @@ -0,0 +1,18 @@ +package com.ibrahimcanerdogan.valorantguideapp.data.database.other + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.ArmorData + +@Dao +interface ArmorDao { + + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun saveArmorDatabase(listMapData: List) + + @Query("SELECT * FROM armor_data") + fun getArmorListDatabase(): List + +} \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/model/other/armor/Armor.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/model/other/armor/Armor.kt new file mode 100644 index 0000000..b380354 --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/model/other/armor/Armor.kt @@ -0,0 +1,10 @@ +package com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor + +import com.google.gson.annotations.SerializedName + +data class Armor( + @SerializedName("status") + val status: Int, + @SerializedName("data") + val armors: List +) \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/model/other/armor/ArmorData.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/model/other/armor/ArmorData.kt new file mode 100644 index 0000000..fcfc642 --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/model/other/armor/ArmorData.kt @@ -0,0 +1,22 @@ +package com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor + +import androidx.room.Entity +import androidx.room.PrimaryKey +import com.google.gson.annotations.SerializedName + +@Entity( + tableName = "armor_data" +) +data class ArmorData( + @PrimaryKey + @SerializedName("uuid") + val uuid: String, + @SerializedName("displayName") + val armorDisplayName: String, + @SerializedName("description") + val armorDescription: String, + @SerializedName("displayIcon") + val armorDisplayIcon: String, + @SerializedName("shopData") + val armorShopData: ArmorShopData? +) \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/model/other/armor/ArmorShopData.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/model/other/armor/ArmorShopData.kt new file mode 100644 index 0000000..48907d9 --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/model/other/armor/ArmorShopData.kt @@ -0,0 +1,15 @@ +package com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor + +import androidx.room.PrimaryKey +import com.google.gson.annotations.SerializedName + +data class ArmorShopData( + @PrimaryKey(autoGenerate = true) + val armorShopId : Int, + @SerializedName("cost") + val armorShopCost: Int, + @SerializedName("category") + val armorShopCategory: String, + @SerializedName("categoryText") + val armorShopCategoryText: String +) \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/remote/APIService.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/remote/APIService.kt index 437af62..7d59644 100644 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/remote/APIService.kt +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/remote/APIService.kt @@ -2,6 +2,7 @@ package com.ibrahimcanerdogan.valorantguideapp.data.remote import com.ibrahimcanerdogan.valorantguideapp.data.model.agent.Agent import com.ibrahimcanerdogan.valorantguideapp.data.model.map.Map +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.Armor import com.ibrahimcanerdogan.valorantguideapp.data.model.weapon.Weapon import retrofit2.Response import retrofit2.http.GET @@ -15,4 +16,7 @@ interface APIService { @GET("v1/weapons") suspend fun getWeaponRemote() : Response + + @GET("v1/gear") + suspend fun getArmorRemote() : Response } \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/ArmorRepositoryImpl.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/ArmorRepositoryImpl.kt new file mode 100644 index 0000000..84d3c41 --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/ArmorRepositoryImpl.kt @@ -0,0 +1,53 @@ +package com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor + +import android.util.Log +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.Armor +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.ArmorData +import com.ibrahimcanerdogan.valorantguideapp.data.repository.map.MapRepositoryImpl +import com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.datasource.ArmorLocalDataSource +import com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.datasource.ArmorRemoteDataSource +import com.ibrahimcanerdogan.valorantguideapp.domain.repository.other.armor.ArmorRepository +import com.ibrahimcanerdogan.valorantguideapp.util.Resource +import retrofit2.Response +import javax.inject.Inject + +class ArmorRepositoryImpl @Inject constructor( + private val armorRemoteDataSource: ArmorRemoteDataSource, + private val armorLocalDataSource: ArmorLocalDataSource +) : ArmorRepository { + + override suspend fun getAllArmorsFromRepository(): Resource> { + return getArmorDataFromDatabase() + } + + private suspend fun getArmorDataFromDatabase() : Resource> { + lateinit var listArmorData: Resource> + try { + listArmorData = armorLocalDataSource.getArmorDataFromLocal() + } catch (e : Exception) { + Log.e(TAG, e.message.toString()) + } + + if (listArmorData.data!!.isNotEmpty()) { + return listArmorData + } else { + listArmorData = responseToResource(armorRemoteDataSource.getArmorFromRemote()) + armorLocalDataSource.saveArmorDataToLocal(listArmorData.data!!) + } + + return listArmorData + } + + private fun responseToResource(response: Response):Resource>{ + if(response.isSuccessful){ + response.body()?.let {result-> + return Resource.Success(result.armors) + } + } + return Resource.Error(response.message()) + } + + companion object { + private val TAG = MapRepositoryImpl::class.java.toString() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasource/ArmorLocalDataSource.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasource/ArmorLocalDataSource.kt new file mode 100644 index 0000000..0dd4c77 --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasource/ArmorLocalDataSource.kt @@ -0,0 +1,11 @@ +package com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.datasource + +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.ArmorData +import com.ibrahimcanerdogan.valorantguideapp.util.Resource + +interface ArmorLocalDataSource { + + suspend fun saveArmorDataToLocal(listArmorData: List) + + suspend fun getArmorDataFromLocal() : Resource> +} \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasource/ArmorRemoteDataSource.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasource/ArmorRemoteDataSource.kt new file mode 100644 index 0000000..7dd8285 --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasource/ArmorRemoteDataSource.kt @@ -0,0 +1,10 @@ +package com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.datasource + +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.Armor +import retrofit2.Response + +interface ArmorRemoteDataSource { + + suspend fun getArmorFromRemote() : Response + +} \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasourceImpl/ArmorLocalDataSourceImpl.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasourceImpl/ArmorLocalDataSourceImpl.kt new file mode 100644 index 0000000..f4097fa --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasourceImpl/ArmorLocalDataSourceImpl.kt @@ -0,0 +1,20 @@ +package com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.datasourceImpl + +import com.ibrahimcanerdogan.valorantguideapp.data.database.other.ArmorDao +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.ArmorData +import com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.datasource.ArmorLocalDataSource +import com.ibrahimcanerdogan.valorantguideapp.util.Resource +import javax.inject.Inject + +class ArmorLocalDataSourceImpl @Inject constructor( + private val armorDao: ArmorDao +) : ArmorLocalDataSource { + + override suspend fun saveArmorDataToLocal(listArmorData: List) { + return armorDao.saveArmorDatabase(listArmorData) + } + + override suspend fun getArmorDataFromLocal(): Resource> { + return Resource.Success(armorDao.getArmorListDatabase()) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasourceImpl/ArmorRemoteDataSourceImpl.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasourceImpl/ArmorRemoteDataSourceImpl.kt new file mode 100644 index 0000000..66e074c --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/data/repository/other/armor/datasourceImpl/ArmorRemoteDataSourceImpl.kt @@ -0,0 +1,16 @@ +package com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.datasourceImpl + +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.Armor +import com.ibrahimcanerdogan.valorantguideapp.data.remote.APIService +import com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.datasource.ArmorRemoteDataSource +import retrofit2.Response +import javax.inject.Inject + +class ArmorRemoteDataSourceImpl @Inject constructor( + private val apiService: APIService +) : ArmorRemoteDataSource { + + override suspend fun getArmorFromRemote(): Response { + return apiService.getArmorRemote() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/domain/repository/other/armor/ArmorRepository.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/domain/repository/other/armor/ArmorRepository.kt new file mode 100644 index 0000000..0035066 --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/domain/repository/other/armor/ArmorRepository.kt @@ -0,0 +1,10 @@ +package com.ibrahimcanerdogan.valorantguideapp.domain.repository.other.armor + +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.ArmorData +import com.ibrahimcanerdogan.valorantguideapp.util.Resource + +interface ArmorRepository { + + suspend fun getAllArmorsFromRepository() : Resource> + +} \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/domain/usecase/map/GetMapUseCase.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/domain/usecase/map/GetMapUseCase.kt index 622587e..ee34358 100644 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/domain/usecase/map/GetMapUseCase.kt +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/domain/usecase/map/GetMapUseCase.kt @@ -1,6 +1,5 @@ package com.ibrahimcanerdogan.valorantguideapp.domain.usecase.map -import com.ibrahimcanerdogan.valorantguideapp.data.model.agent.AgentData import com.ibrahimcanerdogan.valorantguideapp.data.model.map.MapData import com.ibrahimcanerdogan.valorantguideapp.domain.repository.map.MapRepository import com.ibrahimcanerdogan.valorantguideapp.util.Resource diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/domain/usecase/other/armor/GetArmorUseCase.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/domain/usecase/other/armor/GetArmorUseCase.kt new file mode 100644 index 0000000..ceb484d --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/domain/usecase/other/armor/GetArmorUseCase.kt @@ -0,0 +1,15 @@ +package com.ibrahimcanerdogan.valorantguideapp.domain.usecase.other.armor + +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.ArmorData +import com.ibrahimcanerdogan.valorantguideapp.domain.repository.other.armor.ArmorRepository +import com.ibrahimcanerdogan.valorantguideapp.util.Resource +import javax.inject.Inject + +class GetArmorUseCase @Inject constructor( + private val armorRepository: ArmorRepository +) { + + suspend fun execute() : Resource> { + return armorRepository.getAllArmorsFromRepository() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/util/AnimationUtil.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/util/AnimationUtil.kt index c4f4604..7d8a34a 100644 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/util/AnimationUtil.kt +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/util/AnimationUtil.kt @@ -1,5 +1,11 @@ package com.ibrahimcanerdogan.valorantguideapp.util +import android.animation.Animator +import android.animation.AnimatorListenerAdapter +import android.animation.ObjectAnimator +import android.view.View +import android.view.animation.AccelerateInterpolator +import android.view.animation.DecelerateInterpolator import android.widget.ImageView object AnimationUtil { @@ -9,4 +15,21 @@ object AnimationUtil { if (isDown) imageView.animate().rotation(0f).start() else imageView.animate().rotation(90f).start() } + + fun flipAnimation(flipView: View, animView: View) { + val animation1 = ObjectAnimator.ofFloat(flipView, "scaleX", 1f, 0f) + val animation2 = ObjectAnimator.ofFloat(flipView, "scaleX", 0f, 1f) + + animation1.interpolator = DecelerateInterpolator() + animation2.interpolator = AccelerateInterpolator() + + animation1.addListener(object : AnimatorListenerAdapter() { + override fun onAnimationEnd(animation: Animator) { + super.onAnimationEnd(animation) + if (animView.visibility == View.INVISIBLE) animView.visibility = View.VISIBLE else animView.visibility = View.INVISIBLE + animation2.start() + } + }) + animation1.start() + } } \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/adapter/other/armor/ArmorAdapter.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/adapter/other/armor/ArmorAdapter.kt new file mode 100644 index 0000000..94ea5f6 --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/adapter/other/armor/ArmorAdapter.kt @@ -0,0 +1,43 @@ +package com.ibrahimcanerdogan.valorantguideapp.view.adapter.other.armor + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.AsyncListDiffer +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.RecyclerView +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.ArmorData +import com.ibrahimcanerdogan.valorantguideapp.databinding.ItemOtherArmorBinding + +class ArmorAdapter : RecyclerView.Adapter(){ + + private val diffUtil = object : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: ArmorData, newItem: ArmorData): Boolean { + return oldItem.uuid == newItem.uuid + } + + override fun areContentsTheSame(oldItem: ArmorData, newItem: ArmorData): Boolean { + return oldItem == newItem + } + } + + private val differ = AsyncListDiffer(this, diffUtil) + + fun setData(newList : List) { + differ.submitList(newList) + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ArmorViewHolder { + val binding = ItemOtherArmorBinding.inflate(LayoutInflater.from(parent.context), parent, false) + return ArmorViewHolder(binding) + } + + override fun getItemCount(): Int { + return differ.currentList.size + } + + override fun onBindViewHolder(holder: ArmorViewHolder, position: Int) { + differ.currentList[position]?.let { + holder.bind(it) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/adapter/other/armor/ArmorViewHolder.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/adapter/other/armor/ArmorViewHolder.kt new file mode 100644 index 0000000..7603f55 --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/adapter/other/armor/ArmorViewHolder.kt @@ -0,0 +1,29 @@ +package com.ibrahimcanerdogan.valorantguideapp.view.adapter.other.armor + +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.ArmorData +import com.ibrahimcanerdogan.valorantguideapp.databinding.ItemOtherArmorBinding +import com.ibrahimcanerdogan.valorantguideapp.util.AnimationUtil + +class ArmorViewHolder( + private val binding: ItemOtherArmorBinding, +) : RecyclerView.ViewHolder(binding.root) { + + fun bind(armorData: ArmorData){ + Glide.with(binding.root.context) + .load(armorData.armorDisplayIcon) + .into(binding.itemArmorDisplayIcon) + + binding.apply { + itemArmorDisplayName.text = armorData.armorDisplayName + itemArmorDisplayDesc.text = armorData.armorDescription + itemArmorCost.text = "Cost: ${armorData.armorShopData?.armorShopCost}" + + // Flip Card + cardItemArmor.setOnClickListener { + AnimationUtil.flipAnimation(it, itemArmorLinearLayoutInfo) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/AdapterModule.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/AdapterModule.kt index f13b041..70503b3 100644 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/AdapterModule.kt +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/AdapterModule.kt @@ -2,6 +2,7 @@ package com.ibrahimcanerdogan.valorantguideapp.view.dependencyinjection import com.ibrahimcanerdogan.valorantguideapp.view.adapter.agent.AgentAdapter import com.ibrahimcanerdogan.valorantguideapp.view.adapter.map.MapAdapter +import com.ibrahimcanerdogan.valorantguideapp.view.adapter.other.armor.ArmorAdapter import com.ibrahimcanerdogan.valorantguideapp.view.adapter.weapon.WeaponAdapter import com.ibrahimcanerdogan.valorantguideapp.view.adapter.weapon.WeaponDamageRangeAdapter import dagger.Module @@ -38,4 +39,10 @@ class AdapterModule { return WeaponDamageRangeAdapter() } + @Singleton + @Provides + fun provideArmorAdapter() : ArmorAdapter { + return ArmorAdapter() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/DatabaseModule.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/DatabaseModule.kt index a4ab4f9..89c2d7a 100644 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/DatabaseModule.kt +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/DatabaseModule.kt @@ -5,6 +5,7 @@ import androidx.room.Room import com.ibrahimcanerdogan.valorantguideapp.data.database.ValorantDatabase import com.ibrahimcanerdogan.valorantguideapp.data.database.agent.AgentDao import com.ibrahimcanerdogan.valorantguideapp.data.database.map.MapDao +import com.ibrahimcanerdogan.valorantguideapp.data.database.other.ArmorDao import com.ibrahimcanerdogan.valorantguideapp.data.database.weapon.WeaponDao import com.ibrahimcanerdogan.valorantguideapp.util.AppConstant import dagger.Module @@ -42,4 +43,10 @@ class DatabaseModule { fun provideWeaponDao(valorantDatabase: ValorantDatabase) : WeaponDao { return valorantDatabase.weaponDao() } + + @Singleton + @Provides + fun provideArmorDao(valorantDatabase: ValorantDatabase) : ArmorDao { + return valorantDatabase.armorDao() + } } \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/FactoryModule.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/FactoryModule.kt index e9afbba..b2324f6 100644 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/FactoryModule.kt +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/FactoryModule.kt @@ -3,9 +3,11 @@ package com.ibrahimcanerdogan.valorantguideapp.view.dependencyinjection import android.app.Application import com.ibrahimcanerdogan.valorantguideapp.domain.usecase.agent.GetAgentUseCase import com.ibrahimcanerdogan.valorantguideapp.domain.usecase.map.GetMapUseCase +import com.ibrahimcanerdogan.valorantguideapp.domain.usecase.other.armor.GetArmorUseCase import com.ibrahimcanerdogan.valorantguideapp.domain.usecase.weapon.GetWeaponUseCase import com.ibrahimcanerdogan.valorantguideapp.view.viewmodel.agent.AgentViewModelFactory import com.ibrahimcanerdogan.valorantguideapp.view.viewmodel.map.MapViewModelFactory +import com.ibrahimcanerdogan.valorantguideapp.view.viewmodel.other.armor.ArmorViewModelFactory import com.ibrahimcanerdogan.valorantguideapp.view.viewmodel.weapon.WeaponViewModelFactory import dagger.Module import dagger.Provides @@ -52,4 +54,16 @@ class FactoryModule { getWeaponUseCase ) } + + @Singleton + @Provides + fun provideArmorViewModelFactory( + application: Application, + getArmorUseCase: GetArmorUseCase + ) : ArmorViewModelFactory { + return ArmorViewModelFactory( + application, + getArmorUseCase + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/LocalDataModule.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/LocalDataModule.kt index 4b1f5e0..07a400d 100644 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/LocalDataModule.kt +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/LocalDataModule.kt @@ -2,11 +2,14 @@ package com.ibrahimcanerdogan.valorantguideapp.view.dependencyinjection import com.ibrahimcanerdogan.valorantguideapp.data.database.agent.AgentDao import com.ibrahimcanerdogan.valorantguideapp.data.database.map.MapDao +import com.ibrahimcanerdogan.valorantguideapp.data.database.other.ArmorDao import com.ibrahimcanerdogan.valorantguideapp.data.database.weapon.WeaponDao import com.ibrahimcanerdogan.valorantguideapp.data.repository.agent.datasource.AgentLocalDataSource import com.ibrahimcanerdogan.valorantguideapp.data.repository.agent.datasourceImpl.AgentLocalDataSourceImpl import com.ibrahimcanerdogan.valorantguideapp.data.repository.map.datasource.MapLocalDataSource import com.ibrahimcanerdogan.valorantguideapp.data.repository.map.datasourceImpl.MapLocalDataSourceImpl +import com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.datasource.ArmorLocalDataSource +import com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.datasourceImpl.ArmorLocalDataSourceImpl import com.ibrahimcanerdogan.valorantguideapp.data.repository.weapon.datasource.WeaponLocalDataSource import com.ibrahimcanerdogan.valorantguideapp.data.repository.weapon.datasourceImpl.WeaponLocalDataSourceImpl import dagger.Module @@ -42,4 +45,12 @@ class LocalDataModule { ): WeaponLocalDataSource { return WeaponLocalDataSourceImpl(weaponDao) } + + @Singleton + @Provides + fun provideArmorLocalDataSource( + armorDao: ArmorDao + ): ArmorLocalDataSource { + return ArmorLocalDataSourceImpl(armorDao) + } } \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/RemoteDataModule.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/RemoteDataModule.kt index a729913..2d3a41a 100644 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/RemoteDataModule.kt +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/RemoteDataModule.kt @@ -5,6 +5,8 @@ import com.ibrahimcanerdogan.valorantguideapp.data.repository.agent.datasource.A import com.ibrahimcanerdogan.valorantguideapp.data.repository.agent.datasourceImpl.AgentRemoteDataSourceImpl import com.ibrahimcanerdogan.valorantguideapp.data.repository.map.datasource.MapRemoteDataSource import com.ibrahimcanerdogan.valorantguideapp.data.repository.map.datasourceImpl.MapRemoteDataSourceImpl +import com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.datasource.ArmorRemoteDataSource +import com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.datasourceImpl.ArmorRemoteDataSourceImpl import com.ibrahimcanerdogan.valorantguideapp.data.repository.weapon.datasource.WeaponRemoteDataSource import com.ibrahimcanerdogan.valorantguideapp.data.repository.weapon.datasourceImpl.WeaponRemoteDataSourceImpl import dagger.Module @@ -40,4 +42,12 @@ class RemoteDataModule { ) : WeaponRemoteDataSource { return WeaponRemoteDataSourceImpl(apiService) } + + @Singleton + @Provides + fun provideArmorRemoteDataSource( + apiService: APIService + ) : ArmorRemoteDataSource { + return ArmorRemoteDataSourceImpl(apiService) + } } \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/RepositoryModule.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/RepositoryModule.kt index a0414df..023ab03 100644 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/RepositoryModule.kt +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/RepositoryModule.kt @@ -6,11 +6,15 @@ import com.ibrahimcanerdogan.valorantguideapp.data.repository.agent.datasource.A import com.ibrahimcanerdogan.valorantguideapp.data.repository.map.MapRepositoryImpl import com.ibrahimcanerdogan.valorantguideapp.data.repository.map.datasource.MapLocalDataSource import com.ibrahimcanerdogan.valorantguideapp.data.repository.map.datasource.MapRemoteDataSource +import com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.ArmorRepositoryImpl +import com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.datasource.ArmorLocalDataSource +import com.ibrahimcanerdogan.valorantguideapp.data.repository.other.armor.datasource.ArmorRemoteDataSource import com.ibrahimcanerdogan.valorantguideapp.data.repository.weapon.WeaponRepositoryImpl import com.ibrahimcanerdogan.valorantguideapp.data.repository.weapon.datasource.WeaponLocalDataSource import com.ibrahimcanerdogan.valorantguideapp.data.repository.weapon.datasource.WeaponRemoteDataSource import com.ibrahimcanerdogan.valorantguideapp.domain.repository.agent.AgentRepository import com.ibrahimcanerdogan.valorantguideapp.domain.repository.map.MapRepository +import com.ibrahimcanerdogan.valorantguideapp.domain.repository.other.armor.ArmorRepository import com.ibrahimcanerdogan.valorantguideapp.domain.repository.weapon.WeaponRepository import dagger.Module import dagger.Provides @@ -48,4 +52,13 @@ class RepositoryModule { ) : WeaponRepository { return WeaponRepositoryImpl(weaponRemoteDataSource, weaponLocalDataSource) } + + @Singleton + @Provides + fun provideArmorRepository( + armorRemoteDataSource: ArmorRemoteDataSource, + armorLocalDataSource: ArmorLocalDataSource + ) : ArmorRepository { + return ArmorRepositoryImpl(armorRemoteDataSource, armorLocalDataSource) + } } \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/UseCaseModule.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/UseCaseModule.kt index e73f135..d286945 100644 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/UseCaseModule.kt +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/dependencyinjection/UseCaseModule.kt @@ -2,9 +2,11 @@ package com.ibrahimcanerdogan.valorantguideapp.view.dependencyinjection import com.ibrahimcanerdogan.valorantguideapp.domain.repository.agent.AgentRepository import com.ibrahimcanerdogan.valorantguideapp.domain.repository.map.MapRepository +import com.ibrahimcanerdogan.valorantguideapp.domain.repository.other.armor.ArmorRepository import com.ibrahimcanerdogan.valorantguideapp.domain.repository.weapon.WeaponRepository import com.ibrahimcanerdogan.valorantguideapp.domain.usecase.agent.GetAgentUseCase import com.ibrahimcanerdogan.valorantguideapp.domain.usecase.map.GetMapUseCase +import com.ibrahimcanerdogan.valorantguideapp.domain.usecase.other.armor.GetArmorUseCase import com.ibrahimcanerdogan.valorantguideapp.domain.usecase.weapon.GetWeaponUseCase import dagger.Module import dagger.Provides @@ -39,4 +41,12 @@ class UseCaseModule { ) : GetWeaponUseCase { return GetWeaponUseCase(weaponRepository) } + + @Singleton + @Provides + fun provideGetArmorUseCase( + armorRepository: ArmorRepository + ) : GetArmorUseCase { + return GetArmorUseCase(armorRepository) + } } \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/other/OtherArmorActivity.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/other/OtherArmorActivity.kt index 3683ee8..98914a5 100644 --- a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/other/OtherArmorActivity.kt +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/fragment/other/OtherArmorActivity.kt @@ -4,18 +4,71 @@ package com.ibrahimcanerdogan.valorantguideapp.view.fragment.other import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.MenuItem -import com.ibrahimcanerdogan.valorantguideapp.R +import android.view.View +import android.widget.Toast +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.ibrahimcanerdogan.valorantguideapp.databinding.ActivityOtherArmorBinding +import com.ibrahimcanerdogan.valorantguideapp.util.Resource +import com.ibrahimcanerdogan.valorantguideapp.view.adapter.other.armor.ArmorAdapter +import com.ibrahimcanerdogan.valorantguideapp.view.viewmodel.other.armor.ArmorViewModel +import com.ibrahimcanerdogan.valorantguideapp.view.viewmodel.other.armor.ArmorViewModelFactory +import dagger.hilt.android.AndroidEntryPoint +import javax.inject.Inject +@AndroidEntryPoint class OtherArmorActivity : AppCompatActivity() { private lateinit var binding: ActivityOtherArmorBinding + @Inject + lateinit var factory: ArmorViewModelFactory + @Inject + lateinit var armorAdapter: ArmorAdapter + + private val viewModel by lazy { + ViewModelProvider(this, factory).get(ArmorViewModel::class.java) + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityOtherArmorBinding.inflate(layoutInflater) setContentView(binding.root) setSupportActionBar(binding.toolbar) supportActionBar?.setDisplayHomeAsUpEnabled(true) + + binding.recyclerViewOtherArmor.apply { + layoutManager = LinearLayoutManager(this.context) + adapter = armorAdapter + } + + setArmorData() + } + + private fun setArmorData() { + viewModel.getAllArmorData() + viewModel.armorData.observe(this) { response -> + when(response) { + is Resource.Success -> { + setProgressBar(false) + response.data.let { listMapData -> + armorAdapter.setData(listMapData!!) + } + } + is Resource.Error -> { + setProgressBar(false) + response.message?.let { errorMessage -> + Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show() + println("An error occurred : $errorMessage") + } + } + is Resource.Loading -> { + setProgressBar(true) + } + } + } + } + + private fun setProgressBar(isShown : Boolean) { + binding.progressIndicator.visibility = if (isShown) View.VISIBLE else View.GONE } override fun onOptionsItemSelected(item: MenuItem): Boolean { diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/viewmodel/other/armor/ArmorViewModel.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/viewmodel/other/armor/ArmorViewModel.kt new file mode 100644 index 0000000..173f023 --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/viewmodel/other/armor/ArmorViewModel.kt @@ -0,0 +1,36 @@ +package com.ibrahimcanerdogan.valorantguideapp.view.viewmodel.other.armor + +import android.app.Application +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.viewModelScope +import com.ibrahimcanerdogan.valorantguideapp.data.model.other.armor.ArmorData +import com.ibrahimcanerdogan.valorantguideapp.domain.usecase.other.armor.GetArmorUseCase +import com.ibrahimcanerdogan.valorantguideapp.util.Resource +import com.ibrahimcanerdogan.valorantguideapp.view.viewmodel.BaseViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import javax.inject.Inject + +@HiltViewModel +class ArmorViewModel @Inject constructor( + private val app: Application, + private val getArmorUseCase: GetArmorUseCase +) : BaseViewModel(app) { + + private var armor = MutableLiveData>>() + val armorData : LiveData>> + get() = armor + + fun getAllArmorData() = viewModelScope.launch(Dispatchers.IO) { + armor.postValue(Resource.Loading()) + + try { + val apiResult = getArmorUseCase.execute() + armor.postValue(apiResult) + } catch (e : Exception) { + armor.postValue(Resource.Error(e.message.toString())) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/viewmodel/other/armor/ArmorViewModelFactory.kt b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/viewmodel/other/armor/ArmorViewModelFactory.kt new file mode 100644 index 0000000..955076b --- /dev/null +++ b/app/src/main/java/com/ibrahimcanerdogan/valorantguideapp/view/viewmodel/other/armor/ArmorViewModelFactory.kt @@ -0,0 +1,20 @@ +package com.ibrahimcanerdogan.valorantguideapp.view.viewmodel.other.armor + +import android.app.Application +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import com.ibrahimcanerdogan.valorantguideapp.domain.usecase.other.armor.GetArmorUseCase +import javax.inject.Inject + +class ArmorViewModelFactory @Inject constructor( + private val application: Application, + private val getArmorUseCase: GetArmorUseCase +) : ViewModelProvider.Factory { + + override fun create(modelClass: Class): T { + return ArmorViewModel( + application, + getArmorUseCase + ) as T + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_other_armor.xml b/app/src/main/res/layout/activity_other_armor.xml index b3b2e52..eebc8cb 100644 --- a/app/src/main/res/layout/activity_other_armor.xml +++ b/app/src/main/res/layout/activity_other_armor.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_other.xml b/app/src/main/res/layout/fragment_other.xml index 6912c15..0242a27 100644 --- a/app/src/main/res/layout/fragment_other.xml +++ b/app/src/main/res/layout/fragment_other.xml @@ -30,6 +30,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" + android:paddingStart="10dp" android:orientation="horizontal"> + app:strokeWidth="1dp" + app:strokeColor="@color/ValorantWhite"> + + - - + android:background="@drawable/transparent_to_black_rtl"> Date: Mon, 16 Oct 2023 22:06:43 +0300 Subject: [PATCH 3/4] Other background added. --- .idea/deploymentTargetDropDown.xml | 4 ++-- .../main/res/drawable-hdpi/background_dark.jpg | Bin 0 -> 7849 bytes .../main/res/drawable-mdpi/background_dark.jpg | Bin 0 -> 4425 bytes .../main/res/drawable-xhdpi/background_dark.jpg | Bin 0 -> 11328 bytes .../res/drawable-xxhdpi/background_dark.jpg | Bin 0 -> 19885 bytes .../res/drawable-xxxhdpi/background_dark.jpg | Bin 0 -> 71641 bytes app/src/main/res/layout/fragment_other.xml | 13 ++++++------- 7 files changed, 8 insertions(+), 9 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/background_dark.jpg create mode 100644 app/src/main/res/drawable-mdpi/background_dark.jpg create mode 100644 app/src/main/res/drawable-xhdpi/background_dark.jpg create mode 100644 app/src/main/res/drawable-xxhdpi/background_dark.jpg create mode 100644 app/src/main/res/drawable-xxxhdpi/background_dark.jpg diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index a73bd72..5e18e85 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -7,11 +7,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/background_dark.jpg b/app/src/main/res/drawable-hdpi/background_dark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..657a4fa34c5a81675cfa98031a5e1b0c0ed6a7d4 GIT binary patch literal 7849 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 tUaq&M8Zc<@jj(ByS7VyCZZEjuf`EQ7TfI|QP literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/background_dark.jpg b/app/src/main/res/drawable-xhdpi/background_dark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9fc92282289e509532b3ec7aa15f0a585ac0292c GIT binary patch literal 11328 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/background_dark.jpg b/app/src/main/res/drawable-xxxhdpi/background_dark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34ae80bb505b2b9cd14bb73d28173ae4bb249f90 GIT binary patch literal 71641 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/fragment_other.xml b/app/src/main/res/layout/fragment_other.xml index 0242a27..d07aa98 100644 --- a/app/src/main/res/layout/fragment_other.xml +++ b/app/src/main/res/layout/fragment_other.xml @@ -1,22 +1,21 @@ - - + android:layout_height="match_parent" + android:background="@drawable/background_dark" /> + android:orientation="vertical" + android:layout_marginTop="50dp"> - \ No newline at end of file + \ No newline at end of file From 65b490e8707ecab6962eb641cc3be63d7a0cdb9c Mon Sep 17 00:00:00 2001 From: ibrahimcanerdogan Date: Mon, 16 Oct 2023 22:09:21 +0300 Subject: [PATCH 4/4] Version number increased. --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a85e913..edb9e29 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,8 +6,8 @@ plugins { } def versionMajor = 1 -def versionMinor = 1 -def versionPatch = 0 +def versionMinor = 2 +def versionPatch = 1 android { namespace 'com.ibrahimcanerdogan.valorantguideapp'