aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco/smileessence/view/dialog/EditTweetsPageDialogFragment.kt
blob: 7210a22812fa23a1c4cc2962dc2960e82240373f (plain)
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 androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.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.default().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
        }
    }
}