Dauer eines Einsatzes hinzugefügt

master
Niko Diamadis 6 years ago
parent 158abb4f09
commit a2b3fcee26

@ -61,7 +61,7 @@ dependencies {
implementation 'com.github.cyb3rko:about-icons:1.2.1' implementation 'com.github.cyb3rko:about-icons:1.2.1'
implementation 'com.github.GrenderG:Toasty:1.5.0' implementation 'com.github.GrenderG:Toasty:1.5.0'
implementation 'com.github.medyo:android-about-page:1.3' implementation 'com.github.medyo:android-about-page:1.3'
implementation 'com.google.android.material:material:1.2.1' implementation 'com.google.android.material:material:1.3.0-alpha03'
implementation 'com.google.firebase:firebase-crashlytics-ktx:17.2.2' implementation 'com.google.firebase:firebase-crashlytics-ktx:17.2.2'
implementation 'com.google.firebase:firebase-database-ktx:19.5.1' implementation 'com.google.firebase:firebase-database-ktx:19.5.1'
implementation "com.mikepenz:aboutlibraries:$about_libraries_version" implementation "com.mikepenz:aboutlibraries:$about_libraries_version"

@ -10,10 +10,14 @@ import android.view.View
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.MaterialDialog
import com.google.android.material.datepicker.MaterialDatePicker import com.google.android.material.datepicker.MaterialDatePicker
import com.google.android.material.timepicker.MaterialTimePicker
import com.google.android.material.timepicker.TimeFormat
import com.google.firebase.database.DatabaseReference import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.FirebaseDatabase import com.google.firebase.database.FirebaseDatabase
import es.dmoral.toasty.Toasty import es.dmoral.toasty.Toasty
import kotlinx.android.synthetic.main.activity_einsatz_pusher.* import kotlinx.android.synthetic.main.activity_einsatz_pusher.*
import java.sql.Time
import java.text.DecimalFormat
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
@ -23,6 +27,9 @@ class EinsatzPusher : AppCompatActivity() {
private lateinit var databaseReference: DatabaseReference private lateinit var databaseReference: DatabaseReference
private lateinit var databaseReferenceNew: DatabaseReference private lateinit var databaseReferenceNew: DatabaseReference
private var date = "" private var date = ""
private lateinit var time1: Time
private lateinit var time2: Time
private var duration = ""
private lateinit var location: String private lateinit var location: String
private lateinit var name: String private lateinit var name: String
private val simpleDateFormat = SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY) private val simpleDateFormat = SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY)
@ -42,11 +49,38 @@ class EinsatzPusher : AppCompatActivity() {
val builder = MaterialDatePicker.Builder.datePicker().setTitleText("Datum") val builder = MaterialDatePicker.Builder.datePicker().setTitleText("Datum")
val picker = builder.build() val picker = builder.build()
var builder2 = MaterialTimePicker.Builder().setTimeFormat(TimeFormat.CLOCK_24H)
var picker2 = builder2.setTitleText("Von").build()
var builder3 = MaterialTimePicker.Builder().setTimeFormat(TimeFormat.CLOCK_24H)
var picker3 = builder3.setTitleText("Bis").build()
date_button.setOnClickListener { date_button.setOnClickListener {
picker.addOnPositiveButtonClickListener { picker.addOnPositiveButtonClickListener {
date = simpleDateFormat.format(Date(it)) date = simpleDateFormat.format(Date(it))
date_view.text = Html.fromHtml("<b>Datum:</b><br/>${date}") date_view.text = Html.fromHtml("<b>Datum:</b><br/>${date}")
picker.clearOnPositiveButtonClickListeners()
picker2.show(supportFragmentManager, picker2.tag)
}
picker2.addOnPositiveButtonClickListener {
time1 = Time(0)
time1.hours = picker2.hour
time1.minutes = picker2.minute
picker2.clearOnPositiveButtonClickListeners()
builder2 = MaterialTimePicker.Builder().setTimeFormat(TimeFormat.CLOCK_24H)
picker2 = builder2.setTitleText("Von").build()
picker3.show(supportFragmentManager, picker3.tag)
}
picker3.addOnPositiveButtonClickListener {
time2 = Time(0)
time2.hours = picker3.hour
time2.minutes = picker3.minute
picker3.clearOnPositiveButtonClickListeners()
builder3 = MaterialTimePicker.Builder().setTimeFormat(TimeFormat.CLOCK_24H)
picker3 = builder3.setTitleText("Bis").build()
duration = DecimalFormat("#.#").format((time2.time - time1.time) / 3600 / 1000.toFloat())
duration = duration.replace(",", ".")
duration_view.text = Html.fromHtml("<b>Dauer:</b> $duration Stunden")
} }
picker.show(supportFragmentManager, picker.tag) picker.show(supportFragmentManager, picker.tag)
} }
@ -75,6 +109,7 @@ class EinsatzPusher : AppCompatActivity() {
databaseReferenceNew.child("name").setValue(name) databaseReferenceNew.child("name").setValue(name)
databaseReferenceNew.child("location").setValue(location) databaseReferenceNew.child("location").setValue(location)
databaseReferenceNew.child("date").setValue(date) databaseReferenceNew.child("date").setValue(date)
databaseReferenceNew.child("duration").setValue(duration)
finish() finish()
startActivity(Intent(applicationContext, MainActivity::class.java)) startActivity(Intent(applicationContext, MainActivity::class.java))
} else { } else {
@ -88,6 +123,7 @@ class EinsatzPusher : AppCompatActivity() {
name = intent.extras?.getString("name").toString() name = intent.extras?.getString("name").toString()
location = intent.extras?.getString("location").toString() location = intent.extras?.getString("location").toString()
date = intent.extras?.getString("date").toString() date = intent.extras?.getString("date").toString()
duration = intent.extras?.getString("duration").toString()
} }
private fun restoreInformation() { private fun restoreInformation() {
@ -98,7 +134,10 @@ class EinsatzPusher : AppCompatActivity() {
locationEditText.text = SpannableStringBuilder(location) locationEditText.text = SpannableStringBuilder(location)
} }
if (date != "null") { if (date != "null") {
date_view.text = "Datum:\n$date" date_view.text = Html.fromHtml("<b>Datum:</b><br/>${date}")
}
if (duration != "null") {
duration_view.text = Html.fromHtml("<b>Dauer:</b> $duration Stunden")
} }
if (childKey == "null") { if (childKey == "null") {

@ -1,6 +1,7 @@
package com.cyb3rko.techniklogger package com.cyb3rko.techniklogger
import android.Manifest import android.Manifest
import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.content.SharedPreferences import android.content.SharedPreferences
import android.os.Bundle import android.os.Bundle
@ -38,6 +39,7 @@ class MainActivity : AppCompatActivity() {
private lateinit var sharedPref: SharedPreferences private lateinit var sharedPref: SharedPreferences
private lateinit var sharedPrefEditor: SharedPreferences.Editor private lateinit var sharedPrefEditor: SharedPreferences.Editor
@SuppressLint("SetTextI18n")
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)
@ -68,7 +70,11 @@ class MainActivity : AppCompatActivity() {
onBindBindViewHolder = { vh, _, text -> onBindBindViewHolder = { vh, _, text ->
vh.textView.text = text.text vh.textView.text = text.text
vh.locationView.text = text.location vh.locationView.text = text.location
vh.dateView.text = SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY).format(text.date) if (text.duration != "null") {
vh.dateView.text = "${SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY).format(text.date)}, ${text.duration} h"
} else {
vh.dateView.text = SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY).format(text.date)
}
vh.itemView.setOnClickListener { vh.itemView.setOnClickListener {
ProjectActivityBuilder(applicationContext) ProjectActivityBuilder(applicationContext)
.setKey(text.childKey) .setKey(text.childKey)
@ -81,6 +87,7 @@ class MainActivity : AppCompatActivity() {
intent.putExtra("name", text.text) intent.putExtra("name", text.text)
intent.putExtra("location", text.location) intent.putExtra("location", text.location)
intent.putExtra("date", SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY).format(text.date)) intent.putExtra("date", SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY).format(text.date))
intent.putExtra("duration", text.duration)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(intent) startActivity(intent)
true true
@ -98,7 +105,8 @@ class MainActivity : AppCompatActivity() {
snapshot.key!!, snapshot.key!!,
snapshot.child("name").value.toString(), snapshot.child("name").value.toString(),
snapshot.child("location").value.toString(), snapshot.child("location").value.toString(),
SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY).parse(snapshot.child("date").value.toString())!! SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY).parse(snapshot.child("date").value.toString())!!,
snapshot.child("duration").value.toString(),
) )
) )
data.sortBy { it.date } data.sortBy { it.date }

@ -113,6 +113,7 @@ class ProjectActivity : AppCompatActivity() {
setValueEventListener("name", title_view) setValueEventListener("name", title_view)
setValueEventListener("location", location_view) setValueEventListener("location", location_view)
setValueEventListener("date", date_view) setValueEventListener("date", date_view)
setDurationEventListener()
add_button.setOnClickListener { add_button.setOnClickListener {
val name = getSharedPreferences("Safe", 0).getString("name", "invalid") val name = getSharedPreferences("Safe", 0).getString("name", "invalid")
@ -157,6 +158,21 @@ class ProjectActivity : AppCompatActivity() {
databaseReference.child(childName).addListenerForSingleValueEvent(valueEventListener) databaseReference.child(childName).addListenerForSingleValueEvent(valueEventListener)
} }
private fun setDurationEventListener() {
val valueEventListener = object: ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
val duration = snapshot.value.toString()
if (duration != "null") {
date_view.text = "${date_view.text}, ${snapshot.value.toString()} Stunden"
}
}
override fun onCancelled(error: DatabaseError) {
}
}
databaseReference.child("duration").addListenerForSingleValueEvent(valueEventListener)
}
private fun showDivider() { private fun showDivider() {
divider.visibility = View.VISIBLE divider.visibility = View.VISIBLE
} }

@ -8,6 +8,7 @@ sealed class ProjectViewState {
val childKey: String, val childKey: String,
val text: String, val text: String,
val location: String, val location: String,
val date: Date val date: Date,
val duration: String
) : ProjectViewState() ) : ProjectViewState()
} }

@ -100,6 +100,38 @@
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="25dp"
android:layout_marginEnd="25dp"
android:layout_marginTop="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp">
<TextView
android:id="@+id/duration_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Dauer: ---"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:textAlignment="center"
android:layout_gravity="center_vertical"
android:foregroundGravity="center_vertical"
android:layout_marginStart="20dp"
android:textSize="16sp"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/finished_button" android:id="@+id/finished_button"
android:layout_width="wrap_content" android:layout_width="wrap_content"

@ -59,7 +59,7 @@
android:paddingHorizontal="12dp" android:paddingHorizontal="12dp"
android:paddingVertical="16dp" android:paddingVertical="16dp"
android:textSize="16sp" android:textSize="16sp"
tools:text="01.01.1900" /> tools:text="01.01.1900, 1 Stunde" />
</LinearLayout> </LinearLayout>

@ -40,7 +40,7 @@
android:gravity="end" android:gravity="end"
android:textSize="16sp" android:textSize="16sp"
android:fontFamily="sans-serif-medium" android:fontFamily="sans-serif-medium"
tools:text="01.01.1900" /> tools:text="01.01.1900, 1 h" />
</LinearLayout> </LinearLayout>

Loading…
Cancel
Save