Skip to content

Commit 02b9dbb

Browse files
authored
Merge pull request #51 from JLindemann42/development
2.4.0
2 parents aab7982 + 50b2539 commit 02b9dbb

File tree

10 files changed

+152
-58
lines changed

10 files changed

+152
-58
lines changed

app/build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ android {
1515
lint {
1616
baseline = file("lint-baseline.xml")
1717
}
18-
compileSdkVersion 34
19-
buildToolsVersion "34.0.0"
18+
compileSdkVersion 35
19+
buildToolsVersion "35.0.0"
2020
defaultConfig {
2121
applicationId "com.jlindemann.science"
2222
minSdkVersion 23
23-
targetSdkVersion 34
24-
versionCode 84
25-
versionName "2.3.0"
23+
targetSdkVersion 35
24+
versionCode 86
25+
versionName "2.4.0"
2626
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2727
}
2828
buildTypes {

app/src/main/assets/lithium.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
{
33
"element_code": "AApc4YAhpQABJGKpZZZ",
44
"wikilink": "https://en.wikipedia.org/wiki/Lithium",
5-
"link": "https://www.power-technology.com/wp-content/uploads/sites/7/2019/11/lithium.png",
5+
"link": "https://upload.wikimedia.org/wikipedia/commons/2/21/Limetal.JPG",
66
"description": "Lithium (from Greek: λίθος, romanized: lithos, lit. 'stone') is a chemical element with the symbol Li and atomic number 3. It is a soft, silvery-white alkali metal. Under standard conditions, it is the lightest metal and the lightest solid element. Like all alkali metals, lithium is highly reactive and flammable, and must be stored in mineral oil. When cut, it exhibits a metallic luster, but moist air corrodes it quickly to a dull silvery gray, then black tarnish. It never occurs freely in nature, but only in (usually ionic) compounds, such as pegmatitic minerals, which were once the main source of lithium. Due to its solubility as an ion, it is present in ocean water and is commonly obtained from brines. Lithium metal is isolated electrolytically from a mixture of lithium chloride and potassium chloride.",
77

88
"element": "Lithium",

app/src/main/java/com/jlindemann/science/activities/settings/ProActivity.kt

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import kotlinx.coroutines.Dispatchers
4545
import kotlinx.coroutines.launch
4646
import kotlinx.coroutines.withContext
4747
import org.json.JSONObject
48+
import java.io.IOException
4849
import java.util.concurrent.Executors
4950

5051

@@ -97,7 +98,12 @@ class ProActivity : BaseActivity(), BillingClientStateListener {
9798
this.onBackPressed()
9899
}
99100
findViewById<TextView>(R.id.buy_btn).setOnClickListener {
100-
launchBillingFlow(productDetailList[0])
101+
try {
102+
launchBillingFlow(productDetailList[0])
103+
}
104+
catch (e: IOException) {
105+
ToastUtil.showToast(this, "Try again")
106+
}
101107
}
102108
val purchasesUpdateListener =
103109
PurchasesUpdatedListener { billingResult, purchases ->
@@ -227,7 +233,7 @@ class ProActivity : BaseActivity(), BillingClientStateListener {
227233
{ billingResult ->
228234
when (val responseCode = billingResult.responseCode) {
229235
BillingClient.BillingResponseCode.OK -> {
230-
showMemberInfo()
236+
showMemberInfo() //purschase accepted
231237
}
232238
else -> {
233239
ToastUtil.showToast(this@ProActivity, "Error")
@@ -244,25 +250,30 @@ class ProActivity : BaseActivity(), BillingClientStateListener {
244250
}
245251

246252
private fun launchBillingFlow(productDetails: ProductDetails) {
247-
val productDetailsParamsList =
248-
listOf(
249-
BillingFlowParams.ProductDetailsParams.newBuilder()
250-
.setProductDetails(productDetails)
251-
.build()
252-
)
253-
val billingFlowParams = BillingFlowParams.newBuilder()
254-
.setProductDetailsParamsList(productDetailsParamsList)
255-
.build()
256-
if (billingClient?.isReady == false) {
257-
ToastUtil.showToast(this, "Billing client not ready, try again!")
258-
}
259-
val billingResult = billingClient?.launchBillingFlow(this, billingFlowParams)
260-
261-
when (val responseCode = billingResult?.responseCode) {
262-
BillingClient.BillingResponseCode.OK -> {
263-
val proPref = ProVersion(this@ProActivity)
264-
var proPrefValue = proPref.getValue()
253+
try {
254+
val productDetailsParamsList =
255+
listOf(
256+
BillingFlowParams.ProductDetailsParams.newBuilder()
257+
.setProductDetails(productDetails)
258+
.build()
259+
)
260+
val billingFlowParams = BillingFlowParams.newBuilder()
261+
.setProductDetailsParamsList(productDetailsParamsList)
262+
.build()
263+
if (billingClient?.isReady == false) {
264+
ToastUtil.showToast(this, "Billing client not ready, try again!")
265265
}
266+
val billingResult = billingClient?.launchBillingFlow(this, billingFlowParams)
267+
268+
when (val responseCode = billingResult?.responseCode) {
269+
BillingClient.BillingResponseCode.OK -> {
270+
val proPref = ProVersion(this@ProActivity)
271+
var proPrefValue = proPref.getValue()
272+
}
273+
}
274+
}
275+
catch (e: IOException) {
276+
ToastUtil.showToast(this, "Try again")
266277
}
267278
}
268279

app/src/main/java/com/jlindemann/science/activities/tables/PoissonActivity.kt

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.jlindemann.science.activities.tables
22

33
import android.content.Context
44
import android.content.res.Configuration
5+
import android.graphics.ColorMatrixColorFilter
56
import android.os.Bundle
67
import android.os.Handler
78
import android.text.Editable
@@ -13,29 +14,36 @@ import android.widget.Button
1314
import android.widget.EditText
1415
import android.widget.FrameLayout
1516
import android.widget.ImageButton
17+
import android.widget.ImageView
1618
import android.widget.LinearLayout
19+
import android.widget.ProgressBar
1720
import android.widget.TextView
21+
import androidx.cardview.widget.CardView
22+
import androidx.constraintlayout.widget.ConstraintLayout
1823
import androidx.recyclerview.widget.LinearLayoutManager
1924
import androidx.recyclerview.widget.RecyclerView
2025
import com.jlindemann.science.R
2126
import com.jlindemann.science.activities.BaseActivity
2227
import com.jlindemann.science.adapter.ElectrodeAdapter
28+
import com.jlindemann.science.adapter.EquationsAdapter
2329
import com.jlindemann.science.adapter.PoissonAdapter
2430
import com.jlindemann.science.animations.Anim
2531
import com.jlindemann.science.model.Dictionary
2632
import com.jlindemann.science.model.DictionaryModel
33+
import com.jlindemann.science.model.Equation
2734
import com.jlindemann.science.model.Poisson
2835
import com.jlindemann.science.model.PoissonModel
2936
import com.jlindemann.science.preferences.DictionaryPreferences
3037
import com.jlindemann.science.preferences.PoissonPreferences
3138
import com.jlindemann.science.preferences.ProVersion
3239
import com.jlindemann.science.preferences.ThemePreference
40+
import com.jlindemann.science.utils.ToastUtil
3341
import com.jlindemann.science.utils.Utils
3442
import java.util.*
3543
import kotlin.collections.ArrayList
3644

3745

38-
class PoissonActivity : BaseActivity() {
46+
class PoissonActivity : BaseActivity(), PoissonAdapter.OnPoissonClickListener {
3947
private var poissonList = ArrayList<Poisson>()
4048
var mAdapter = PoissonAdapter(poissonList, this, this)
4149

@@ -62,6 +70,8 @@ class PoissonActivity : BaseActivity() {
6270
clickSearch()
6371
chipListeners(itempoi, recyclerView)
6472
findViewById<Button>(R.id.clear_btn).visibility = View.GONE
73+
findViewById<FrameLayout>(R.id.poi_det_inc_background).setOnClickListener { hideInfoPanel() }
74+
findViewById<ImageButton>(R.id.close_detail_poisson_btn).setOnClickListener { hideInfoPanel() }
6575

6676
findViewById<FrameLayout>(R.id.view_poi).systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
6777
findViewById<ImageButton>(R.id.back_btn_poi).setOnClickListener {
@@ -100,6 +110,28 @@ class PoissonActivity : BaseActivity() {
100110
})
101111
}
102112

113+
//Overrides the clickListener from PoissonAdapter to show InfoPanel when clicking on elments
114+
override fun poissonClickListener(item: Poisson, position: Int) {
115+
showInfoPanel(item.name, item.start, item.end, item.type)
116+
}
117+
118+
//Show the info panel with detailed information about poisson interavls for materials
119+
private fun showInfoPanel(title: String, start: Double, end: Double, type: String) {
120+
Anim.fadeIn(findViewById<ConstraintLayout>(R.id.poi_det_inc), 150)
121+
findViewById<FrameLayout>(R.id.poi_det_inc_background).visibility = View.VISIBLE
122+
123+
findViewById<ProgressBar>(R.id.pb_poisson_detail).progress = (start*100*2).toInt() //*2 as 100% is 0.5
124+
findViewById<ProgressBar>(R.id.pb_poisson_detail).secondaryProgress = (end*100*2).toInt() //*2 as 100% is 0.5
125+
findViewById<TextView>(R.id.detail_poisson_title).text = title
126+
}
127+
128+
//function for hiding info panel
129+
private fun hideInfoPanel() {
130+
Anim.fadeOutAnim(findViewById<ConstraintLayout>(R.id.poi_det_inc), 150)
131+
findViewById<FrameLayout>(R.id.poi_det_inc_background).visibility = View.GONE
132+
}
133+
134+
//Filters the listView by different sorts of material by using the PoissonPreference to filter by the stringValue.
103135
private fun filter(text: String, list: ArrayList<Poisson>, recyclerView: RecyclerView) {
104136
val filteredList: ArrayList<Poisson> = ArrayList()
105137
for (item in list) {
@@ -198,6 +230,14 @@ class PoissonActivity : BaseActivity() {
198230
findViewById<Button>(R.id.clear_btn).visibility = View.GONE
199231
}
200232
}
233+
234+
//handle back action
235+
override fun onBackPressed() {
236+
if (findViewById<CardView>(R.id.poi_det_inc).visibility == View.VISIBLE) {
237+
hideInfoPanel()
238+
return
239+
} else { super.onBackPressed() }
240+
}
201241
}
202242

203243

app/src/main/java/com/jlindemann/science/adapter/PoissonAdapter.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@ import androidx.core.content.ContextCompat
99
import androidx.recyclerview.widget.RecyclerView
1010
import com.jlindemann.science.R
1111
import com.jlindemann.science.activities.tables.PoissonActivity
12+
import com.jlindemann.science.model.Equation
1213
import com.jlindemann.science.model.Poisson
1314
import com.jlindemann.science.model.Series
1415

1516
class PoissonAdapter(var list: ArrayList<Poisson>, var clickListener: PoissonActivity, val context: Context) : RecyclerView.Adapter<PoissonAdapter.ViewHolder>() {
1617
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
17-
holder.initialize(list[position], context)
18+
holder.initialize(list[position], clickListener, context)
1819
}
1920

2021
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
@@ -34,7 +35,7 @@ class PoissonAdapter(var list: ArrayList<Poisson>, var clickListener: PoissonAct
3435
private val textViewBetween = itemView.findViewById(R.id.tv_poi_between) as TextView
3536
private val textViewType = itemView.findViewById(R.id.tv_poi_type) as TextView
3637

37-
fun initialize(item: Poisson, context: Context) {
38+
fun initialize(item: Poisson, action: OnPoissonClickListener, context: Context) {
3839
textViewName.text = item.name
3940
textViewName.text = item.name.capitalize()
4041
textViewShort.text = item.name.substring(0,2)
@@ -57,7 +58,9 @@ class PoissonAdapter(var list: ArrayList<Poisson>, var clickListener: PoissonAct
5758
itemView.foreground = ContextCompat.getDrawable(context, R.drawable.toast_card_ripple)
5859
itemView.isClickable = true
5960
itemView.isFocusable = true
60-
61+
itemView.setOnClickListener {
62+
action.poissonClickListener(item, adapterPosition)
63+
}
6164
}
6265
}
6366

@@ -66,6 +69,10 @@ class PoissonAdapter(var list: ArrayList<Poisson>, var clickListener: PoissonAct
6669
notifyDataSetChanged()
6770
}
6871

72+
interface OnPoissonClickListener {
73+
fun poissonClickListener(item: Poisson, position: Int)
74+
}
75+
6976
}
7077

7178

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
package com.jlindemann.science.model
22

3-
data class Poisson(val name: String, val start: Number, val end: Number, val type: String)
3+
data class Poisson(val name: String, val start: Double, val end: Double, val type: String)
44

app/src/main/res/layout/activity_poisson.xml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,23 @@
278278
layout="@layout/detail_poisson"
279279
android:layout_width="match_parent"
280280
android:layout_height="match_parent"
281-
android:visibility="gone" />
281+
android:layout_marginStart="30dp"
282+
android:layout_marginTop="130dp"
283+
android:layout_marginEnd="30dp"
284+
android:layout_marginBottom="130dp"
285+
android:elevation="112dp"
286+
android:visibility="gone"
287+
app:layout_constraintBottom_toBottomOf="parent"
288+
app:layout_constraintEnd_toEndOf="parent"
289+
app:layout_constraintStart_toStartOf="parent"
290+
app:layout_constraintTop_toTopOf="parent" />
291+
292+
<FrameLayout
293+
android:id="@+id/poi_det_inc_background"
294+
android:layout_width="match_parent"
295+
android:layout_height="match_parent"
296+
android:alpha="0.6"
297+
android:visibility="gone"
298+
android:background="@color/colorLightText" />
282299

283300
</androidx.constraintlayout.widget.ConstraintLayout>

0 commit comments

Comments
 (0)