Hinzufügen von neuem Einsatz ermöglicht

master
Niko Diamadis 6 years ago
parent 588d1fffa7
commit d40965a44c

@ -0,0 +1,70 @@
package com.cyb3rko.techniklogger
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.text.Html
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.datepicker.MaterialDatePicker
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.FirebaseDatabase
import es.dmoral.toasty.Toasty
import kotlinx.android.synthetic.main.activity_einsatz_pusher.*
import java.text.SimpleDateFormat
import java.util.*
class EinsatzPusher : AppCompatActivity() {
private lateinit var databaseReference: DatabaseReference
private var date = ""
private val simpleDateFormat = SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY)
@SuppressLint("SetTextI18n")
@Suppress("DEPRECATION")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_einsatz_pusher)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
databaseReference = FirebaseDatabase.getInstance().getReference("einsätze")
val builder = MaterialDatePicker.Builder.datePicker().setTitleText("Datum")
val picker = builder.build()
date_button.setOnClickListener {
picker.addOnPositiveButtonClickListener {
date = simpleDateFormat.format(Date(it))
date_view.text = Html.fromHtml("<b>Datum:</b><br/>${date}")
}
picker.show(supportFragmentManager, picker.tag)
}
finished_button.setOnClickListener {
val name = nameEditText.text.toString()
val location = locationEditText.text.toString()
if (name != "" && location != "" && date != "") {
val databaseReferenceNew = databaseReference.push()
databaseReferenceNew.child("name").setValue(name)
databaseReferenceNew.child("location").setValue(location)
databaseReferenceNew.child("date").setValue(date)
startActivity(Intent(applicationContext, MainActivity::class.java))
} else {
Toasty.error(applicationContext, "Fülle alle Felder aus")
}
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
when (item.itemId) {
android.R.id.home -> finish()
}
return super.onOptionsItemSelected(item)
}
}

@ -69,7 +69,7 @@ class MainActivity : AppCompatActivity() {
onBindBindViewHolder = { vh, _, text ->
vh.textView.text = text.text
vh.locationView.text = text.location
vh.dateView.text = text.date
vh.dateView.text = SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY).format(text.date)
vh.itemView.setOnClickListener {
ProjectActivityBuilder(applicationContext)
.setKey(text.childKey)
@ -81,33 +81,29 @@ class MainActivity : AppCompatActivity() {
val listener = object: ChildEventListener {
override fun onChildAdded(snapshot: DataSnapshot, previousChildName: String?) {
data.add(data.size, ProjectViewState.ProjectEntry(
try {
data.add(
data.size, ProjectViewState.ProjectEntry(
snapshot.key!!,
snapshot.child("name").value.toString(),
snapshot.child("location").value.toString(),
snapshot.child("date").value.toString())
SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY).parse(snapshot.child("date").value.toString())!!
)
hideProgess()
)
data.sortBy { it.date }
hideProgress()
recycler_view.scheduleLayoutAnimation()
adapter.notifyDataSetChanged()
} catch (exception: Exception) {
}
override fun onChildChanged(snapshot: DataSnapshot, previousChildName: String?) {
}
override fun onChildRemoved(snapshot: DataSnapshot) {
data.remove(ProjectViewState.ProjectEntry(
snapshot.key!!,
snapshot.child("name").value.toString(),
snapshot.child("location").value.toString(),
snapshot.child("date").value.toString())
)
recycler_view.scheduleLayoutAnimation()
adapter.notifyDataSetChanged()
}
override fun onChildChanged(snapshot: DataSnapshot, previousChildName: String?) {}
override fun onChildMoved(snapshot: DataSnapshot, previousChildName: String?) {
}
override fun onChildRemoved(snapshot: DataSnapshot) {}
override fun onChildMoved(snapshot: DataSnapshot, previousChildName: String?) {}
override fun onCancelled(error: DatabaseError) {
Toast.makeText(applicationContext, "Abruf fehlgeschlagen", Toast.LENGTH_SHORT).show()
@ -121,7 +117,14 @@ class MainActivity : AppCompatActivity() {
recycler_view.layoutManager = linearLayoutManager
recycler_view.adapter = adapter
databaseReference.addChildEventListener(listener)
databaseReference.child("einsätze").addChildEventListener(listener)
floatingActionButton.setOnClickListener {
startActivity(Intent(applicationContext, EinsatzPusher::class.java))
finish()
}
updateCheck()
}
private fun showNameDialog() {
@ -139,7 +142,7 @@ class MainActivity : AppCompatActivity() {
} catch (ignored: IndexOutOfBoundsException) {
}
positiveButton {
positiveButton(0, "Speichern") {
sharedPref.edit().putString("name", inputName.toString()).apply()
}
}

@ -1,11 +1,13 @@
package com.cyb3rko.techniklogger.recycler
import java.util.*
sealed class ProjectViewState {
data class ProjectEntry(
val childKey: String,
val text: String,
val location: String,
val date: String
val date: Date
) : ProjectViewState()
}

@ -3,6 +3,7 @@ package com.cyb3rko.techniklogger.recycler
sealed class ProjectTechnikerViewState {
data class ProjectTechniker(
val name: String
val name: String,
val key: String
) : ProjectTechnikerViewState()
}

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.cardview.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:fontFamily="sans-serif-black"
android:layout_marginTop="5dp"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="5dp"
android:text="Einsatz hinzufügen"
android:gravity="center_horizontal" />
</androidx.cardview.widget.CardView>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="25dp"
android:layout_marginEnd="25dp"
android:layout_marginTop="15dp"
app:startIconTintMode="src_in"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
android:hint="Name">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/nameEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="25dp"
android:layout_marginEnd="25dp"
android:layout_marginTop="15dp"
app:startIconTintMode="src_in"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
android:hint="Ort">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/locationEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>
<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/date_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Datum:\n---"
android:textAlignment="center"
android:layout_gravity="center_vertical"
android:foregroundGravity="center_vertical"
android:layout_marginStart="20dp"
android:textSize="16sp"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/date_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:padding="10dp"
android:layout_marginStart="50dp"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:textSize="12dp"
android:text="Datum auswählen" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<com.google.android.material.button.MaterialButton
android:id="@+id/finished_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginStart="25dp"
android:layout_marginEnd="25dp"
android:layout_marginTop="35dp"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:textSize="12dp"
android:text="Fertig" />
</LinearLayout>
Loading…
Cancel
Save