diff options
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.kt | 37 |
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) |