1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
package net.lacolaco.smileessence.view.dialog
import android.app.DialogFragment
import android.os.Bundle
import android.support.v7.widget.DividerItemDecoration
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.beust.klaxon.JsonObject
import com.beust.klaxon.Parser
import kotlinx.android.synthetic.main.dialog_edit_tweets_page.*
import kotlinx.android.synthetic.main.list_item_simple_text.view.*
import net.lacolaco.smileessence.R
import net.lacolaco.smileessence.World
import net.lacolaco.smileessence.data.PageInfo
import net.lacolaco.smileessence.view.confirm
class EditTweetsPageDialogFragment : DialogFragment() {
private val pageInfo by lazy {
PageInfo.fromJsonObject(Parser().parse(arguments.getString(KEY_PAGE_INFO)) as JsonObject) as
PageInfo.TweetsPageInfo
}
private val patterns: MutableList<String> by lazy {
pageInfo.patternStrings.toMutableList()
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View {
return inflater.inflate(R.layout.dialog_edit_tweets_page, container, false)
}
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
recycler_view.addItemDecoration(DividerItemDecoration(activity, DividerItemDecoration.VERTICAL))
recycler_view.layoutManager = LinearLayoutManager(activity)
recycler_view.adapter = PatternsAdapter()
}
override fun onPause() {
super.onPause()
pageInfo.patternStrings = patterns
}
private inner class PatternsAdapter : RecyclerView.Adapter<PatternsAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
return ViewHolder(layoutInflater.inflate(R.layout.list_item_simple_text, parent, false))
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val itemView = holder.itemView
val pattern = patterns[position]
itemView.list_item_textview.text = pattern
itemView.setOnClickListener {
// TODO
}
itemView.setOnLongClickListener {
confirm("Are you sure you want to remove '$pattern'?") {
val newPosition = patterns.indexOf(pattern)
patterns.removeAt(newPosition)
notifyItemRemoved(newPosition)
}
true
}
}
override fun getItemCount(): Int {
return patterns.size
}
private inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
}
companion object {
private const val KEY_WORLD_USER_ID = "KEY_WORLD_USER_ID"
private const val KEY_PAGE_INFO = "KEY_PAGE_INFO"
fun newInstance(world: World, item: PageInfo.TweetsPageInfo): EditTweetsPageDialogFragment {
val obj = EditTweetsPageDialogFragment()
obj.arguments = Bundle().apply {
putLong(KEY_WORLD_USER_ID, world.id)
putString(KEY_PAGE_INFO, PageInfo.toJsonObject(item).toJsonString())
}
return obj
}
}
}
|