Skip to content

Commit

Permalink
Allow adding and removing tags
Browse files Browse the repository at this point in the history
  • Loading branch information
bubelov committed Oct 25, 2022
1 parent 3ea990a commit 7e67a29
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 5 deletions.
10 changes: 8 additions & 2 deletions app/src/main/kotlin/tags/TagView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@ class TagView : LinearLayout {
WidgetTagBinding.inflate(LayoutInflater.from(context), this, true)
}

var onDeleteListener: OnDeleteListener? = null

init {
binding.name.text = null
binding.value.text = null
binding.delete.setOnClickListener { onDeleteListener?.onDelete(this) }
}

fun getValue(): Pair<String, String> {
Expand All @@ -33,4 +34,9 @@ class TagView : LinearLayout {
binding.name.setText(name)
binding.value.setText(value)
}

fun interface OnDeleteListener {

fun onDelete(sender: TagView)
}
}
18 changes: 17 additions & 1 deletion app/src/main/kotlin/tags/TagsFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,16 @@ class TagsFragment : Fragment() {

binding.toolbar.setNavigationOnClickListener { findNavController().popBackStack() }

binding.toolbar.setOnMenuItemClickListener { item ->
if (item.itemId == R.id.action_add_tag) {
val tagView = TagView(requireContext())
tagView.onDeleteListener = TagView.OnDeleteListener { binding.tagsContainer -= it }
binding.tagsContainer += tagView
}

true
}

val elementId = TagsFragmentArgs.fromBundle(requireArguments()).elementId

if (elementId.split(":").first() != "node") {
Expand All @@ -80,6 +90,7 @@ class TagsFragment : Fragment() {
for (entry in tags) {
val tagView = TagView(requireContext())
tagView.setValue(entry.key, entry.value.jsonPrimitive.content)
tagView.onDeleteListener = TagView.OnDeleteListener { binding.tagsContainer -= it }
binding.tagsContainer += tagView
}

Expand Down Expand Up @@ -142,8 +153,13 @@ class TagsFragment : Fragment() {
val nodeVer = element.osm_json["version"]!!.jsonPrimitive.long

val tagsString =
binding.tagsContainer.children.filterIsInstance<TagView>().map {
binding.tagsContainer.children.filterIsInstance<TagView>().mapNotNull {
val value = it.getValue()

if (value.first.isBlank() || value.second.isBlank()) {
return@mapNotNull null
}

"""<tag k="${value.first}" v="${value.second}" />"""
}.toList().joinToString("\n")

Expand Down
6 changes: 4 additions & 2 deletions app/src/main/res/layout/fragment_tags.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:menu="@menu/tags"
app:navigationIcon="?attr/homeAsUpIndicator"
tools:title="Satoshi Bar" />

Expand All @@ -25,8 +26,7 @@
android:id="@+id/tagsContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="16dp" />
android:orientation="vertical" />

</ScrollView>

Expand All @@ -35,6 +35,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:paddingTop="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toTopOf="@id/upload">

Expand All @@ -52,6 +53,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginBottom="8dp"
android:text="@string/upload"
app:layout_constraintBottom_toBottomOf="parent" />

Expand Down
15 changes: 15 additions & 0 deletions app/src/main/res/layout/widget_tag.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_weight="1">

<com.google.android.material.textfield.TextInputEditText
Expand Down Expand Up @@ -35,5 +36,19 @@

</com.google.android.material.textfield.TextInputLayout>

<ImageView
android:id="@+id/delete"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:background="?selectableItemBackgroundBorderless"
android:clickable="true"
android:contentDescription="@string/delete_tag"
android:focusable="true"
android:padding="4dp"
android:src="@drawable/baseline_remove_24" />

</LinearLayout>

10 changes: 10 additions & 0 deletions app/src/main/res/menu/tags.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
android:id="@+id/action_add_tag"
android:icon="@drawable/baseline_add_24"
android:title="@string/add_tag"
app:showAsAction="ifRoom" />

</menu>
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@
<string name="failed_to_create_a_changeset">Failed to create a changeset</string>
<string name="failed_to_update_tags">Failed to update tags</string>
<string name="ways_and_relations_are_not_supported">Ways and relations aren\'t supported</string>
<string name="add_tag">Add tag</string>
<string name="delete_tag">Delete tag</string>
<plurals name="d_changes">
<item quantity="zero">%d changes</item>
<item quantity="one">%d change</item>
Expand Down

0 comments on commit 7e67a29

Please sign in to comment.