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