aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco/smileessence/activity/ManagePagesActivity.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence/activity/ManagePagesActivity.kt')
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/ManagePagesActivity.kt37
1 files changed, 17 insertions, 20 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/ManagePagesActivity.kt b/app/src/main/java/net/lacolaco/smileessence/activity/ManagePagesActivity.kt
index 75560f40..11019e72 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/ManagePagesActivity.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/ManagePagesActivity.kt
@@ -20,7 +20,7 @@ class ManagePagesActivity : AppCompatActivity() {
private val world by lazy {
World[intent.getLongExtra(INTENT_KEY_WORLD_ID, -1)]
}
- private lateinit var pages: MutableList<PageInfo>
+ private var changed = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -28,16 +28,14 @@ class ManagePagesActivity : AppCompatActivity() {
setContentView(R.layout.activity_page_manage)
setSupportActionBar(toolbar)
- pages = PageInfo.parseList(if (savedInstanceState == null)
- PageInfo.stringifyList(world.pages)
- else
- savedInstanceState.getString(KEY_SAVED_PAGES)
- ).toMutableList()
+ if (savedInstanceState != null)
+ changed = savedInstanceState.getBoolean(KEY_IS_CHANGED)
fab.setOnClickListener {
+ changed = true
val item = PageInfo.TweetsPageInfo("Tweets", listOf())
- pages.add(item)
- recycler_view.adapter.notifyItemInserted(pages.size - 1)
+ world.pages.add(item)
+ recycler_view.adapter.notifyItemInserted(world.pages.size - 1)
openItemEditor(item)
}
val helper = ItemTouchHelper(object : ItemTouchHelper.Callback() {
@@ -66,15 +64,12 @@ class ManagePagesActivity : AppCompatActivity() {
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
- outState.putString(KEY_SAVED_PAGES, PageInfo.stringifyList(pages))
+ outState.putBoolean(KEY_IS_CHANGED, changed)
}
override fun finish() {
// MainActivity will restart itself on RESULT_OK
- if (PageInfo.stringifyList(world.pages) == PageInfo.stringifyList(pages))
- setResult(RESULT_CANCELED)
- else
- setResult(RESULT_OK)
+ setResult(if (changed) RESULT_OK else RESULT_CANCELED)
super.finish()
}
@@ -84,12 +79,12 @@ class ManagePagesActivity : AppCompatActivity() {
companion object {
val INTENT_KEY_WORLD_ID = "WORLD_ID"
- private val KEY_SAVED_PAGES = "SAVED_PAGES"
+ private val KEY_IS_CHANGED = "IS_CHANGED"
}
private inner class PagesAdapter : RecyclerView.Adapter<PagesAdapter.ViewHolder>() {
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
- val item = pages[position]
+ val item = world.pages[position]
val view = holder.itemView
view.page_kind_text_view.text = item.name
view.page_name_text_view.text = item.describe()
@@ -101,7 +96,7 @@ class ManagePagesActivity : AppCompatActivity() {
}
override fun getItemCount(): Int {
- return pages.size
+ return world.pages.size
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
@@ -109,16 +104,18 @@ class ManagePagesActivity : AppCompatActivity() {
}
fun move(before: Int, after: Int): Boolean {
- val item = pages.removeAt(before)
- pages.add(after, item)
+ changed = true
+ val item = world.pages.removeAt(before)
+ world.pages.add(after, item)
notifyItemMoved(before, after)
return true
}
fun remove(position: Int) {
- pages.removeAt(position)
+ changed = true
+ world.pages.removeAt(position)
notifyItemRemoved(position)
- notifyItemRangeChanged(position, pages.size)
+ notifyItemRangeChanged(position, world.pages.size)
}
private inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)