Skip to content

Commit 9310ae9

Browse files
author
TranquilRock
committed
Fix manage display and add delete func
1 parent 17dc387 commit 9310ae9

File tree

8 files changed

+65
-30
lines changed

8 files changed

+65
-30
lines changed

app/src/main/java/com/tranquilrock/androidscript/activity/ManageActivity.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
package com.tranquilrock.androidscript.activity
22

33
import android.content.Intent
4+
import android.graphics.Bitmap
45
import android.os.Bundle
56
import android.webkit.MimeTypeMap
67
import android.widget.Toast
78
import androidx.activity.result.ActivityResult
89
import androidx.activity.result.contract.ActivityResultContracts
910
import androidx.appcompat.app.AppCompatActivity
11+
import androidx.recyclerview.widget.DividerItemDecoration
12+
import androidx.recyclerview.widget.LinearLayoutManager
1013
import com.tranquilrock.androidscript.App
14+
import com.tranquilrock.androidscript.component.manage.ManageAdapter
1115
import com.tranquilrock.androidscript.databinding.ActivityManageBinding
1216
import com.tranquilrock.androidscript.feature.InternalStorageUser
1317
import com.tranquilrock.androidscript.feature.InternalStorageUser.Companion.IMAGE_UPLOAD_EXTENSION
18+
import com.tranquilrock.androidscript.utils.ResourceRemover
1419

1520
// TODO recycler view to list images with remove button
1621
class ManageActivity : AppCompatActivity(), InternalStorageUser {
@@ -34,6 +39,28 @@ class ManageActivity : AppCompatActivity(), InternalStorageUser {
3439
scriptClass = intent.getStringExtra(App.SCRIPT_TYPE_KEY)!!
3540
}
3641

42+
override fun onResume() {
43+
super.onResume()
44+
// TODO on item add instead of all from scratch?
45+
val data = mutableListOf<Pair<String, Bitmap?>>()
46+
for (script in getScriptList(this, scriptClass)) {
47+
data.add(Pair(script, null))
48+
}
49+
for (imageName in getImageList(this, scriptClass)) {
50+
data.add(Pair(imageName, getImage(this, scriptClass, imageName)))
51+
}
52+
53+
binding.manageResourceGrid.run {
54+
layoutManager = LinearLayoutManager(this@ManageActivity)
55+
adapter = ManageAdapter(data, ResourceRemover(this@ManageActivity, scriptClass))
56+
addItemDecoration(
57+
DividerItemDecoration(
58+
this@ManageActivity, DividerItemDecoration.VERTICAL
59+
)
60+
)
61+
}
62+
}
63+
3764
private var uploadImage = registerForActivityResult(
3865
ActivityResultContracts.StartActivityForResult()
3966
) { result: ActivityResult ->

app/src/main/java/com/tranquilrock/androidscript/component/manage/ManageAdapter.kt

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.tranquilrock.androidscript.component.manage
22

33
import android.graphics.Bitmap
4+
import android.util.Log
45
import android.view.LayoutInflater
56
import android.view.View
67
import android.view.ViewGroup
@@ -11,7 +12,8 @@ import com.tranquilrock.androidscript.utils.ResourceRemover
1112
import java.lang.RuntimeException
1213

1314
class ManageAdapter(
14-
private val data: List<Pair<String, Bitmap?>>, private val resourceRemover: ResourceRemover
15+
private val data: MutableList<Pair<String, Bitmap?>>,
16+
private val resourceRemover: ResourceRemover
1517
) : RecyclerView.Adapter<ManageViewHolder>() {
1618

1719
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ManageViewHolder {
@@ -20,37 +22,43 @@ class ManageAdapter(
2022
ManageResourceBlockBinding.inflate(
2123
LayoutInflater.from(
2224
parent.context
23-
)
25+
), parent, false
2426
)
2527
)
2628

2729
0 -> ManageViewHolder.ScriptViewHolder(
2830
ManageScriptBlockBinding.inflate(
2931
LayoutInflater.from(
3032
parent.context
31-
)
33+
), parent, false
3234
)
3335
)
3436

3537
else -> throw RuntimeException("Impossible")
3638
}
37-
3839
}
3940

4041
override fun getItemCount(): Int = data.size
4142

4243
override fun onBindViewHolder(holder: ManageViewHolder, position: Int) {
43-
holder.display(data[position].first,
44-
data[position].second,
45-
when (getItemViewType(position)) {
46-
1 -> View.OnClickListener { resourceRemover.removeImage(data[position].first) }
47-
0 -> View.OnClickListener {
48-
resourceRemover.removeImage(
49-
data[position].first
50-
)
51-
}
52-
else -> View.OnClickListener { }
53-
})
44+
val (fileName, image) = data[position]
45+
when (getItemViewType(position)) {
46+
1 -> holder.display(
47+
fileName, image
48+
) {
49+
data.removeAt(holder.adapterPosition)
50+
resourceRemover.removeImage(fileName)
51+
notifyItemRemoved(holder.adapterPosition)
52+
}
53+
54+
0 -> holder.display(
55+
fileName, null
56+
) {
57+
data.removeAt(holder.adapterPosition)
58+
resourceRemover.removeScript(fileName)
59+
notifyItemRemoved(holder.adapterPosition)
60+
}
61+
}
5462
}
5563

5664
override fun getItemViewType(position: Int): Int {

app/src/main/java/com/tranquilrock/androidscript/component/manage/ManageViewHolder.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ import android.graphics.Bitmap
44
import android.view.View
55
import android.view.View.OnClickListener
66
import androidx.recyclerview.widget.RecyclerView
7+
import com.tranquilrock.androidscript.R
78
import com.tranquilrock.androidscript.databinding.ManageResourceBlockBinding
89
import com.tranquilrock.androidscript.databinding.ManageScriptBlockBinding
910

10-
abstract class ManageViewHolder(view: View) : RecyclerView.ViewHolder(view) {
11+
abstract class ManageViewHolder(val view: View) : RecyclerView.ViewHolder(view) {
1112
abstract fun display(fileName: String, image: Bitmap?, removeCallback: OnClickListener)
1213

1314
class ImageViewHolder(private val binding: ManageResourceBlockBinding) :
@@ -23,7 +24,9 @@ abstract class ManageViewHolder(view: View) : RecyclerView.ViewHolder(view) {
2324
class ScriptViewHolder(private val binding: ManageScriptBlockBinding) :
2425
ManageViewHolder(binding.root) {
2526
override fun display(fileName: String, image: Bitmap?, removeCallback: OnClickListener) {
26-
binding.manageImageTitle.text = fileName
27+
binding.manageImageTitle.text = String.format(
28+
view.context.resources.getString(R.string.manage_script_title), fileName
29+
)
2730
binding.manageDelete.setOnClickListener(removeCallback)
2831
}
2932
}

app/src/main/java/com/tranquilrock/androidscript/feature/InternalStorageUser.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ interface InternalStorageUser {
144144
}?.map { a -> a.removeSuffix(SCRIPT_FILE_TYPE) } ?: emptyList()
145145
}
146146

147+
147148
// =============================================================================================
148149

149150
/**

app/src/main/res/layout/activity_manage.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
android:layout_width="match_parent"
2323
android:layout_height="200dp"
2424
android:layout_gravity="center"
25-
2625
app:layout_constraintBottom_toTopOf="@id/manage_add"
2726
app:layout_constraintEnd_toEndOf="parent"
2827
app:layout_constraintStart_toStartOf="parent"

app/src/main/res/layout/manage_resource_block.xml

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
<androidx.constraintlayout.widget.ConstraintLayout
1212
android:layout_width="match_parent"
13-
android:layout_height="155dp"
13+
android:layout_height="wrap_content"
1414
android:background="#5A5AAD">
1515

1616
<androidx.constraintlayout.widget.ConstraintLayout
@@ -53,19 +53,15 @@
5353
<ImageView
5454
android:id="@+id/manage_image"
5555
android:layout_width="match_parent"
56-
android:layout_height="100dp"
56+
android:layout_height="50dp"
57+
android:layout_marginStart="20dp"
58+
android:layout_marginTop="5dp"
59+
android:layout_marginEnd="20dp"
60+
android:contentDescription="@string/image_resource"
5761
card_view:layout_constraintBottom_toBottomOf="parent"
5862
card_view:layout_constraintEnd_toEndOf="parent"
5963
card_view:layout_constraintStart_toStartOf="parent"
60-
card_view:layout_constraintTop_toBottomOf="@id/manage_info"
61-
android:contentDescription="@string/image_resource" />
62-
<!-- <include-->
63-
<!-- android:id="@+id/buttons"-->
64-
<!-- layout="@layout/edit_component_switch"-->
65-
<!-- card_view:layout_constraintBottom_toBottomOf="parent"-->
66-
<!-- card_view:layout_constraintEnd_toEndOf="parent"-->
67-
<!-- card_view:layout_constraintStart_toEndOf="@id/"-->
68-
<!-- card_view:layout_constraintTop_toTopOf="parent" />-->
64+
card_view:layout_constraintTop_toBottomOf="@id/manage_info" />
6965

7066
</androidx.constraintlayout.widget.ConstraintLayout>
7167

app/src/main/res/layout/manage_script_block.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010

1111
<androidx.constraintlayout.widget.ConstraintLayout
12-
android:layout_width="match_parent"
12+
android:layout_width="400dp"
1313
android:layout_height="60dp"
1414
android:background="#5A5AAD">
1515

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
<string name="floating_widget_run">Run</string>
3232
<string name="floating_widget_close">Close</string>
3333
<string name="image_resource">Image Resource</string>
34+
<string name="manage_script_title">Script File: %1$s</string>
3435
<!-- Strings used for fragments for navigation -->
3536

3637
</resources>

0 commit comments

Comments
 (0)