This commit is contained in:
Tucan444 2021-04-30 07:48:07 +02:00
parent bc03d7fbdf
commit 2a547d3bd9
11 changed files with 244 additions and 186 deletions

@ -88,136 +88,11 @@ class MainActivity : AppCompatActivity() {
super.onResume()
// server communication
val dataReceiver0: (String) -> Unit = { data0: String ->
val dataReceiver1: (String) -> Unit = { data1: String ->
val json = JsonManager(this, data1, "JSONObject")
val names = json.currentJsonObject!!.names()
try {
names?.let {
mainFragmentHost.childFragmentManager.fragments[0]?.let {
if (it is homeFragment) {
LabeledValuesSupplier.wipeData()
for (n in 0 until names.length()) {
val labeledValue = LabeledValue(names[n].toString(), json.getAttributeContent(names[n].toString()))
if (!LabeledValuesSupplier.checkIfContains(labeledValue)) {
LabeledValuesSupplier.appendLabeledValue(labeledValue)
}
}
it.labeled_values_recycler_view.post {
val layoutManager = LinearLayoutManager(it.requireContext())
layoutManager.orientation = LinearLayoutManager.VERTICAL
it.labeled_values_recycler_view.layoutManager = layoutManager
val adapter = LabeledValuesAdapter(it.requireContext(), LabeledValuesSupplier.labeledValues)
it.labeled_values_recycler_view.adapter = adapter
}
}
}
}
} catch (e: Throwable) { println("[debug] Exception in main activity, sensors connection : $e") }
}
if (!ServerManagement.serverManager.checkIfConnectionAlreadyExists("sensorsConnection")){
ServerManagement.serverManager.addReceiverConnection(dataReceiver1, this, "sensorsConnection", data0.toInt(), ServerManagement.sensors_keyword)
}
// getting other needed information
val dataReceiver2: (String) -> Unit = {data1: String ->
var json = JsonManager(this, data1)
json = JsonManager(this, json.findJsonObjectByAttribute("ID", data0.toInt()), "JSONObject") // todo doesnt return correct result
val positionsList = json.getAttributeContent("location").split(",")
MapManagement.connectedServerPosition = LatLng(positionsList[0].toDouble(), positionsList[1].toDouble())
}
if (!ServerManagement.serverManager.checkIfConnectionAlreadyExists("mapConnection")){
ServerManagement.serverManager.addReceiverConnection(dataReceiver2, this, "mapConnection", data0.toInt(), "", "GET_WHOLE_ARRAY")
}
val dataReceiver3: (String) -> Unit = { data1: String ->
val json = JsonManager(this, data1)
json.findJsonObjectByAttribute("ID", data0.toInt())
fun updateFileViewsRecyclerView(fragment: Fragment) {
try {
fragment.homeFragmentInnerFragment?.let {
it.file_views_recycler_view.post {
val layoutManager = LinearLayoutManager(fragment.requireContext())
layoutManager.orientation = LinearLayoutManager.VERTICAL
it.file_views_recycler_view.layoutManager = layoutManager
val adapter = FileViewsAdapter(fragment.requireContext(), FileViewsSupplier.fileViews)
it.file_views_recycler_view.adapter = adapter
}
}
} catch (e: Throwable) { println("[debug] e1 that i couldnt fix so try catch Exception: $e") }
}
try {
mainFragmentHost.childFragmentManager.fragments[0]?.let {
when (it) {
is homeFragment -> {
json.getAttributeContent("files")
for (n in 0 until json.currentJsonAttribute1!!.length()) {
val fileInfo = JsonManagerLite(json.getAttributeContentByPath("files/$n"), "JSONObject")
val filetype = fileInfo.getAttributeContentByPath("format").split(".")[1]
val filename = fileInfo.getAttributeContentByPath("name")
val fileDescription = fileInfo.getAttributeContentByPath("description")
// handling text
if ("txt json".contains(filetype)) {
val fileView = FileView(filetype, filename, fileDescription, "$data0|||||$filename.$filetype")
if (!FileViewsSupplier.checkIfContains(fileView)) {
FileViewsSupplier.appendFileView(fileView)
updateFileViewsRecyclerView(it)
}
}
// handling images
if ("jpg png".contains(filetype)) {
val fileView = FileView(filetype, filename, fileDescription, null, "$data0|||||$filename.$filetype")
if (!FileViewsSupplier.checkIfContains(fileView)) {
FileViewsSupplier.appendFileView(fileView)
updateFileViewsRecyclerView(it)
}
}
// handling pdf files
if ("pdf".contains(filetype)) {
val fileView = FileView(filetype, filename, fileDescription, null, null, "${ServerManagement.baseUrl}files/$data0/$filename.$filetype")
if (!FileViewsSupplier.checkIfContains(fileView)) {
FileViewsSupplier.appendFileView(fileView)
updateFileViewsRecyclerView(it)
}
}
}
}
}
}
} catch (e: Throwable) { println("[debug] Exception in main activity, files data request : $e") }
}
ServerManagement.serverManager.addReceiverConnection(dataReceiver3, this, "fileViewsConnection", data0.toInt(), "", "GET_WHOLE_ARRAY")
}
ServerManagement.serverManager.getData(dataReceiver0, this, 0, "", "connected_id", 3)
connectExploreFragmentAdapterModel()
}
override fun onPause() {
PlaceSupplier.saveToCache(this)
ServerManagement.serverManager.deleteConnection("sensorsConnection")
ServerManagement.serverManager.deleteConnection("mapConnection")
ServerManagement.serverManager.deleteConnection("fileViewsConnection")
ServerManagement.serverManager.deleteConnection("exploreListConnection")
super.onPause()
}

@ -97,7 +97,6 @@ class chatFragment : Fragment(R.layout.fragment_chat) {
MessagesSupplier.clearWaitingMessages()
for (i in 0 until length) {
println("message at index n: ${json.getAttributeContentByPath("data/$i")}")
val jsonOfMessage = JsonManager(requireContext(), json.getAttributeContentByPath("data/$i"), "JSONObject")
val message = Message(jsonOfMessage.getAttributeContent("sender"),
jsonOfMessage.getAttributeContent("message"),

@ -5,11 +5,23 @@ import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import androidx.navigation.Navigation
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.wikispot.GeneralVariables
import com.example.wikispot.MapManagement
import com.example.wikispot.R
import com.example.wikispot.ServerManagement
import com.example.wikispot.adapters.FileViewsAdapter
import com.example.wikispot.adapters.LabeledValuesAdapter
import com.example.wikispot.modelClasses.JsonManager
import com.example.wikispot.modelClasses.JsonManagerLite
import com.example.wikispot.modelsForAdapters.FileView
import com.example.wikispot.modelsForAdapters.FileViewsSupplier
import com.example.wikispot.modelsForAdapters.LabeledValue
import com.example.wikispot.modelsForAdapters.LabeledValuesSupplier
import com.google.android.gms.maps.model.LatLng
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.fragment_home.*
import kotlinx.android.synthetic.main.fragment_info.*
import kotlinx.android.synthetic.main.fragment_info.view.*
@ -30,7 +42,11 @@ class homeFragment : Fragment(R.layout.fragment_home) {
super.onResume()
// connecting to server
val dataReceiver: (String) -> Unit = {data: String ->
val serverConnectorThread = Thread(ServerConnector())
serverConnectorThread.start()
val dataReceiver0: (String) -> Unit = { data: String ->
try {
val json = JsonManager(requireContext(), data)
@ -82,15 +98,153 @@ class homeFragment : Fragment(R.layout.fragment_home) {
} catch (e: Throwable) { println(e) }
}
ServerManagement.serverManager.getData(dataReceiver, requireContext(), 0, "", "GET_WHOLE_ARRAY", 4)
val dataReceiver1: (String) -> Unit = {connectedId: String ->
ServerManagement.connectedServerId = connectedId.toInt()
}
ServerManagement.serverManager.getData(dataReceiver0, requireContext(), 0, "", "GET_WHOLE_ARRAY", 4)
ServerManagement.serverManager.getData(dataReceiver1, requireContext(), 0, "", "connected_id", 3)
}
override fun onPause() {
super.onPause()
ServerManagement.serverManager.deleteConnection("sensorsConnection")
ServerManagement.serverManager.deleteConnection("mapConnection")
ServerManagement.serverManager.deleteConnection("fileViewsConnection")
saveCache()
}
private fun tryConnectingToServer() {
ServerManagement.connectedServerId?.let{ connectedServerId: Int ->
context?.let {
val dataReceiver1: (String) -> Unit = { data1: String ->
try {
val json = JsonManager(requireContext(), data1, "JSONObject")
val names = json.currentJsonObject!!.names()
names?.let {
LabeledValuesSupplier.wipeData()
for (n in 0 until names.length()) {
val labeledValue = LabeledValue(names[n].toString(), json.getAttributeContent(names[n].toString()))
if (!LabeledValuesSupplier.checkIfContains(labeledValue)) {
LabeledValuesSupplier.appendLabeledValue(labeledValue)
}
}
labeled_values_recycler_view.post {
val layoutManager = LinearLayoutManager(requireContext())
layoutManager.orientation = LinearLayoutManager.VERTICAL
labeled_values_recycler_view.layoutManager = layoutManager
val adapter = LabeledValuesAdapter(requireContext(), LabeledValuesSupplier.labeledValues)
labeled_values_recycler_view.adapter = adapter
}
}
} catch (e: Throwable) { println("[debug] Exception in main activity, sensors connection : $e") }
}
if (!ServerManagement.serverManager.checkIfConnectionAlreadyExists("sensorsConnection")){
ServerManagement.serverManager.addReceiverConnection(dataReceiver1, requireContext(), "sensorsConnection", connectedServerId, ServerManagement.sensors_keyword)
}
// getting other needed information
val dataReceiver2: (String) -> Unit = {data1: String ->
context?.let {
var json = JsonManager(requireContext(), data1)
json = JsonManager(requireContext(), json.findJsonObjectByAttribute("ID", connectedServerId), "JSONObject") // todo doesnt return correct result
val positionsList = json.getAttributeContent("location").split(",")
MapManagement.connectedServerPosition = LatLng(positionsList[0].toDouble(), positionsList[1].toDouble())
}
}
if (!ServerManagement.serverManager.checkIfConnectionAlreadyExists("mapConnection")){
ServerManagement.serverManager.addReceiverConnection(dataReceiver2, requireContext(), "mapConnection", connectedServerId, "", "GET_WHOLE_ARRAY")
}
val dataReceiver3: (String) -> Unit = { data1: String ->
fun updateFileViewsRecyclerView(fragment: Fragment) {
try {
fragment.context?.let {
fragment.homeFragmentInnerFragment?.let {
it.file_views_recycler_view.post {
val layoutManager = LinearLayoutManager(fragment.requireContext())
layoutManager.orientation = LinearLayoutManager.VERTICAL
it.file_views_recycler_view.layoutManager = layoutManager
val adapter = FileViewsAdapter(fragment.requireContext(), FileViewsSupplier.fileViews)
it.file_views_recycler_view.adapter = adapter
}
}
}
} catch (e: Throwable) { println("[debug] e1 that i couldnt fix so try catch Exception: $e") }
}
try {
val json = JsonManager(requireContext(), data1)
json.findJsonObjectByAttribute("ID", connectedServerId)
json.getAttributeContent("files")
for (n in 0 until json.currentJsonAttribute1!!.length()) {
val fileInfo = JsonManagerLite(json.getAttributeContentByPath("files/$n"), "JSONObject")
val filetype = fileInfo.getAttributeContentByPath("format").split(".")[1]
val filename = fileInfo.getAttributeContentByPath("name")
val fileDescription = fileInfo.getAttributeContentByPath("description")
// handling text
if ("txt json".contains(filetype)) {
val fileView = FileView(filetype, filename, fileDescription, "$connectedServerId|||||$filename.$filetype")
if (!FileViewsSupplier.checkIfContains(fileView)) {
FileViewsSupplier.appendFileView(fileView)
updateFileViewsRecyclerView(this)
}
}
// handling images
if ("jpg png".contains(filetype)) {
val fileView = FileView(filetype, filename, fileDescription, null, "$connectedServerId|||||$filename.$filetype")
if (!FileViewsSupplier.checkIfContains(fileView)) {
FileViewsSupplier.appendFileView(fileView)
updateFileViewsRecyclerView(this)
}
}
// handling pdf files
if ("pdf".contains(filetype)) {
val fileView = FileView(filetype, filename, fileDescription, null, null, "${ServerManagement.baseUrl}files/$connectedServerId/$filename.$filetype")
if (!FileViewsSupplier.checkIfContains(fileView)) {
FileViewsSupplier.appendFileView(fileView)
updateFileViewsRecyclerView(this)
}
}
}
} catch (e: Throwable) { println("[debug] Exception in home fragment, files data request : $e") }
}
if (!ServerManagement.serverManager.checkIfConnectionAlreadyExists("fileViewsConnection")) {
ServerManagement.serverManager.addReceiverConnection(dataReceiver3, requireContext(), "fileViewsConnection", connectedServerId, "", "GET_WHOLE_ARRAY")
}
}
}
}
inner class ServerConnector(private val numberOfAttempts: Int=3): Runnable {
override fun run() {
for (n in 0 until numberOfAttempts) {
tryConnectingToServer()
Thread.sleep(1000)
}
}
}
private fun loadCache() {}
private fun saveCache() {}

@ -31,7 +31,7 @@ class infoFragment : Fragment(R.layout.fragment_info) {
var location: LatLng? = null
var phoneNumber: Int? = null
var email: String? = null
var executeLoadFuntion = false
var executeLoadFunction = false
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
@ -42,17 +42,21 @@ class infoFragment : Fragment(R.layout.fragment_info) {
updateFileViewsRecyclerView()
try {
executeLoadFuntion = args.executeLoadFuntion
} catch (e: Throwable) { println("[debug] Exception in Info Fragment while getting args: $e") }
executeLoadFunction = args.executeLoadFuntion
} catch (e: Throwable) {
if (!e.toString().contains("has null arguments")){
println("[debug] Exception in Info Fragment while getting args: $e")
}
}
if (executeLoadFuntion) {
if (executeLoadFunction) {
load()
} else {
getContactInfoFromGeneralVariables()
}
locationBtn.setOnClickListener {
if (executeLoadFuntion) {
if (executeLoadFunction) {
if (location != null) {
val action = infoFragmentDirections.infoFragmentToMapFragment(location!!)
Navigation.findNavController(it).navigate(action)
@ -243,7 +247,9 @@ class infoFragment : Fragment(R.layout.fragment_info) {
phoneNumber?.let {
try {
phoneBtn.post {
phoneBtn.visibility = View.VISIBLE
phoneBtn?.let {
phoneBtn.visibility = View.VISIBLE
}
}
} catch (e: Throwable) { println("[debug] Exception in checkContactInformation: $e") }
}
@ -251,7 +257,9 @@ class infoFragment : Fragment(R.layout.fragment_info) {
email?.let {
try {
emailBtn.post {
emailBtn.visibility = View.VISIBLE
emailBtn?.let {
emailBtn.visibility = View.VISIBLE
}
}
} catch (e: Throwable) { println("[debug] Exception in checkContactInformation: $e") }
}

@ -87,14 +87,12 @@ class mapFragment : Fragment(), GoogleMap.OnMarkerClickListener {
CustomBackstackVariables.infoFragmentBackDestination = "mapFragment"
MapManagement.lastCoordinates = marker.position
ServerManagement.selectedServerId = PlaceSupplier.places[n]!!.id!!
val action = mapFragmentDirections.mapFragmentToInfoFragment()
val action = mapFragmentDirections.mapFragmentToInfoFragment(true)
Navigation.findNavController(navControllerView).navigate(action)
}
}
}
lastClickedMarkerTitle = marker.title
println("[debug] marker title ${marker.title}")
println(System.currentTimeMillis())
}
return false
}

@ -206,36 +206,51 @@ class ServerManager {
fun deleteConnection(connectionName: String, connectionType: String = "any") { // other types are any, activity and view
if ((connectionType == "any") or (connectionType == "receiver")) {
val indexesToRemove = mutableListOf<Int>()
for (i in 0 until receiverConnections.size) { // checking in connections
try {
if (receiverConnections[i].connectionName == connectionName) {
receiverConnections[i].running = false
receiverConnections.removeAt(i)
indexesToRemove.add(i)
}
} catch (e: Throwable) { println("In deleteConnection: $e") }
}
for (i in 0 until indexesToRemove.size) {
receiverConnections.removeAt(indexesToRemove[i] - i)
}
}
if ((connectionType == "any") or (connectionType == "view")) {
val indexesToRemove = mutableListOf<Int>()
for (i in 0 until viewConnections.size) { // checking in connections
try {
if (viewConnections[i].connectionName == connectionName) {
viewConnections[i].running = false
viewConnections.removeAt(i)
indexesToRemove.add(i)
}
} catch (e: Throwable) { println("In deleteConnection: $e") }
}
for (i in 0 until indexesToRemove.size) {
viewConnections.removeAt(indexesToRemove[i] - i)
}
}
if ((connectionType == "any") or (connectionType == "chat")) {
val indexesToRemove = mutableListOf<Int>()
for (i in 0 until chatConnections.size) { // checking in connections
try {
if (chatConnections[i].connectionName == connectionName) {
chatConnections[i].running = false
chatConnections.removeAt(i)
indexesToRemove.add(i)
}
} catch (e: Throwable) { println("In deleteConnection: $e") }
}
for (i in 0 until indexesToRemove.size) {
chatConnections.removeAt(indexesToRemove[i] - i)
}
}
}

@ -37,6 +37,7 @@ object ServerManagement {
const val dataRequestOnAttemptWait: Long = 2000
const val imageRequestOnAttemptWait: Long = 2000
var baseUrl = "http://192.168.1.156:8000/"
var connectedServerId: Int? = null
var selectedServerId = 0
const val sensors_keyword = "_[{(S,e,n,s,o,r,s)}]_"

@ -4,6 +4,7 @@
<gradient
android:centerY="0.7"
android:centerX="1.1"
android:startColor="?attr/settingsFragmentGradientStartColor"
android:centerColor="?attr/settingsFragmentGradientCenterColor"
android:endColor="?attr/settingsFragmentGradientEndColor"

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="?attr/exploreFragmentListItemBackgroundColor"
android:layout_margin="5dp"
card_view:cardCornerRadius="10dp">
android:backgroundTint="?attr/exploreFragmentListItemBackgroundColor"
card_view:cardCornerRadius="10dp"
card_view:cardElevation="4dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
@ -30,9 +30,9 @@
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginTop="8dp"
android:textColor="?attr/generalTextColor"
android:textSize="20sp"
android:textStyle="bold"
android:textColor="?attr/generalTextColor"
card_view:layout_constraintStart_toEndOf="@+id/item_img"
card_view:layout_constraintTop_toTopOf="parent"
tools:text="Title" />

@ -48,9 +48,6 @@
<action
android:id="@+id/mapFragment_to_infoFragment"
app:destination="@id/infoFragment" >
<argument
android:name="loadAutomatically"
android:defaultValue="true" />
</action>
<argument
android:name="loadLastCoordinates"

@ -13,7 +13,7 @@
<color name="secondaryVariant">#F48FB1</color>
<color name="onSecondary">@color/black</color>
<color name="textOnTextBgColor">#fff</color>
<color name="textOnTextBgColor">#E6FFFFFF</color>
<color name="generalIconsColor">#89000000</color>
<color name="generalTextColor">#89000000</color>
<color name="secondaryTextColor">#96262626</color>
@ -38,7 +38,7 @@
<color name="exploreFragmentGradientStartColor" >#A1DEFC</color>
<color name="exploreFragmentGradientCenterColor" >#A5CBFF</color>
<color name="exploreFragmentGradientEndColor" >#F9B6F6</color>
<color name="exploreFragmentListItemBackgroundColor">#fff</color>
<color name="exploreFragmentListItemBackgroundColor">#FBF1FF</color>
<color name="homeFragmentGradientStartColor" >#83E1FF</color>
<color name="homeFragmentGradientCenterColor" >#9EC6FF</color>
@ -57,9 +57,15 @@
<color name="debugFragmentBg">#FF7272</color>
<color name="contrastingGradientStartColor">#C4FFA5</color>
<color name="contrastingGradientCenterColor">#D1FBA0</color>
<color name="contrastingGradientEndColor">#F6FEBA</color>
<!--
<color name="contrastingGradientStartColor">#99B0E4FE</color>
<color name="contrastingGradientCenterColor">#66B6E6EE</color>
<color name="contrastingGradientEndColor">#99C0D4FB</color> -->
<color name="contrastingGradientStartColor">#99C8FCFF</color>
<color name="contrastingGradientCenterColor">#99CCF7FF</color>
<color name="contrastingGradientEndColor">#99E7EFFF</color>
@ -72,53 +78,57 @@
<color name="secondaryVariantDark">#F48FB1</color>
<color name="onSecondaryDark">@color/black</color>
<color name="textOnTextBgColorDark">#F2F2F2</color>
<color name="generalIconsColorDark">#CCC5C5C5</color>
<color name="generalTextColorDark">#D6D6D6</color>
<color name="secondaryTextColorDark">#F0F5F5F5</color>
<color name="textOnTextBgColorDark">#E7E7E7</color>
<color name="generalIconsColorDark">#CCBEBEBE</color>
<color name="generalTextColorDark">#CCCCCC</color>
<color name="secondaryTextColorDark">#CDE0DFDF</color>
<color name="bottomNavBarCheckedItemColorDark">#4343E6</color>
<color name="bottomNavBarItemColorDark">#0C16AA</color>
<color name="bottomNavBarRippleColorDark">#604B4B4B</color>
<color name="bottomNavBarCheckedItemColorDark">#F76751F8</color>
<color name="bottomNavBarItemColorDark">#F75241C2</color>
<color name="bottomNavBarRippleColorDark">#26644F69</color>
<color name="statusBarColorDark">#EC000000</color>
<color name="textBackgroundGradientStartColorDark" >#A3422392</color>
<color name="textBackgroundGradientEndColorDark" >#9451357D</color>
<color name="textBackgroundGradientStartColorDark" >#80AC78C4</color>
<color name="textBackgroundGradientEndColorDark" >#80855C95</color>
<color name="bottomNavBarGradientStartColorDark" >#0F0F1C</color>
<color name="bottomNavBarGradientEndColorDark" >#0F0B15</color>
<color name="bottomNavBarGradientStartColorDark" >#33284E</color>
<color name="bottomNavBarGradientEndColorDark" >#302444</color>
<color name="fileViewBackgroundColorDark">#2643386A</color>
<color name="messageBackgroundColorDark">#2643386A</color>
<color name="fileViewBackgroundColorDark">#4D473D6A</color>
<color name="messageBackgroundColorDark">#2DC39CE1</color>
<color name="debugFragmentBgDark">#6F3131</color>
<color name="chatFragmentGradientStartColorDark" >#36135C</color>
<color name="chatFragmentGradientCenterColorDark" >#06134B</color>
<color name="chatFragmentGradientEndColorDark" >#030729</color>
<color name="chatFragmentBgStrokeColorDark" >#191021</color>
<color name="chatFragmentGradientStartColorDark" >#4D306D</color>
<color name="chatFragmentGradientCenterColorDark" >#222D54</color>
<color name="chatFragmentGradientEndColorDark" >#1D2043</color>
<color name="chatFragmentBgStrokeColorDark" >#221934</color>
<color name="chatFragmentWriteBarBgColorDark">#BF323232</color>
<color name="exploreFragmentGradientStartColorDark" >#091121</color>
<color name="exploreFragmentGradientCenterColorDark" >#08133A</color>
<color name="exploreFragmentGradientEndColorDark" >#FA2D1148</color>
<color name="exploreFragmentListItemBackgroundColorDark">#1B1A1F</color>
<color name="exploreFragmentGradientStartColorDark" >#1E293E</color>
<color name="exploreFragmentGradientCenterColorDark" >#212C51</color>
<color name="exploreFragmentGradientEndColorDark" >#FA452862</color>
<color name="exploreFragmentListItemBackgroundColorDark">#323251</color>
.
<color name="homeFragmentGradientStartColorDark" >#001132</color>
<color name="homeFragmentGradientCenterColorDark" >#0B204A</color>
<color name="homeFragmentGradientEndColorDark" >#36054F</color>
<color name="homeFragmentGradientStartColorDark" >#263863</color>
<color name="homeFragmentGradientCenterColorDark" >#1F2360</color>
<color name="homeFragmentGradientEndColorDark" >#452159</color>
<color name="settingsFragmentGradientStartColorDark" >#2D145B</color>
<color name="settingsFragmentGradientCenterColorDark" >#140945</color>
<color name="settingsFragmentGradientEndColorDark" >#0F1237</color>
<color name="settingsFragmentGradientStartColorDark" >#4B3377</color>
<color name="settingsFragmentGradientCenterColorDark" >#352C5B</color>
<color name="settingsFragmentGradientEndColorDark" >#2B2E5C</color>
<color name="infoFragmentGradientStartColorDark" >#380B4B</color>
<color name="infoFragmentGradientCenterColorDark" >#0E1A33</color>
<color name="infoFragmentGradientEndColorDark" >#0B1D4B</color>
<color name="infoFragmentGradientStartColorDark" >#542766</color>
<color name="infoFragmentGradientCenterColorDark" >#1A294A</color>
<color name="infoFragmentGradientEndColorDark" >#2A3B65</color>
<color name="contrastingGradientStartColorDark">#8833374A</color>
<color name="contrastingGradientStartColorDark">#8842475F</color>
<color name="contrastingGradientCenterColorDark">#79454D78</color>
<color name="contrastingGradientEndColorDark">#6F363F67</color>
<!--<color name="contrastingGradientStartColorDark">#8833374A</color>
<color name="contrastingGradientCenterColorDark">#7932395E</color>
<color name="contrastingGradientEndColorDark">#6F252D4E</color>
<color name="contrastingGradientEndColorDark">#6F252D4E</color> -->
<!--