diff --git a/app/src/main/java/com/cyb3rko/techniklogger/EinsatzPusher.kt b/app/src/main/java/com/cyb3rko/techniklogger/EinsatzPusher.kt
new file mode 100644
index 0000000..1711e73
--- /dev/null
+++ b/app/src/main/java/com/cyb3rko/techniklogger/EinsatzPusher.kt
@@ -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("Datum:
${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)
+ }
+}
diff --git a/app/src/main/java/com/cyb3rko/techniklogger/MainActivity.kt b/app/src/main/java/com/cyb3rko/techniklogger/MainActivity.kt
index 4ecefd6..16c95e3 100644
--- a/app/src/main/java/com/cyb3rko/techniklogger/MainActivity.kt
+++ b/app/src/main/java/com/cyb3rko/techniklogger/MainActivity.kt
@@ -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(
- snapshot.key!!,
- snapshot.child("name").value.toString(),
- snapshot.child("location").value.toString(),
- snapshot.child("date").value.toString())
- )
- hideProgess()
- recycler_view.scheduleLayoutAnimation()
- adapter.notifyDataSetChanged()
+ try {
+ data.add(
+ data.size, ProjectViewState.ProjectEntry(
+ snapshot.key!!,
+ snapshot.child("name").value.toString(),
+ snapshot.child("location").value.toString(),
+ SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY).parse(snapshot.child("date").value.toString())!!
+ )
+ )
+ data.sortBy { it.date }
+ hideProgress()
+ recycler_view.scheduleLayoutAnimation()
+ adapter.notifyDataSetChanged()
+ } catch (exception: Exception) {
+ }
+
}
- override fun onChildChanged(snapshot: DataSnapshot, previousChildName: String?) {
- }
+ 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 onChildRemoved(snapshot: DataSnapshot) {}
- override fun onChildMoved(snapshot: DataSnapshot, previousChildName: String?) {
- }
+ 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()
}
}
diff --git a/app/src/main/java/com/cyb3rko/techniklogger/recycler/ProjectEntryViewState.kt b/app/src/main/java/com/cyb3rko/techniklogger/recycler/ProjectEntryViewState.kt
index 14be22b..37822ec 100644
--- a/app/src/main/java/com/cyb3rko/techniklogger/recycler/ProjectEntryViewState.kt
+++ b/app/src/main/java/com/cyb3rko/techniklogger/recycler/ProjectEntryViewState.kt
@@ -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()
}
diff --git a/app/src/main/java/com/cyb3rko/techniklogger/recycler/ProjectTechnikerViewState.kt b/app/src/main/java/com/cyb3rko/techniklogger/recycler/ProjectTechnikerViewState.kt
index f92991f..b1a9d2d 100644
--- a/app/src/main/java/com/cyb3rko/techniklogger/recycler/ProjectTechnikerViewState.kt
+++ b/app/src/main/java/com/cyb3rko/techniklogger/recycler/ProjectTechnikerViewState.kt
@@ -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()
}
diff --git a/app/src/main/res/layout/activity_einsatz_pusher.xml b/app/src/main/res/layout/activity_einsatz_pusher.xml
new file mode 100644
index 0000000..c9c7ca8
--- /dev/null
+++ b/app/src/main/res/layout/activity_einsatz_pusher.xml
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file