aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-10-07 16:07:41 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-10-07 16:07:41 +0900
commit49274234f89edda9080275a4677f01db10385152 (patch)
tree4d421a3212ca003d2c025a60b782a2d663cefa30
parent2caa5df5991f4733262ab6f419e25a8efce68542 (diff)
downloadSmileEssence-49274234f89edda9080275a4677f01db10385152.tar.gz
Application.currentWorld simplify
-rw-r--r--app/app.iml16
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/Application.kt34
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/IntentRouter.kt12
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt58
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/ManageAccountsActivity.kt1
5 files changed, 36 insertions, 85 deletions
diff --git a/app/app.iml b/app/app.iml
index 97c0a10b..dfa253ae 100644
--- a/app/app.iml
+++ b/app/app.iml
@@ -55,6 +55,7 @@
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/kapt/debugUnitTest" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/kapt/debugAndroidTest" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
@@ -63,7 +64,6 @@
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/kapt/debugUnitTest" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
@@ -85,13 +85,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
@@ -99,6 +92,13 @@
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
diff --git a/app/src/main/java/net/lacolaco/smileessence/Application.kt b/app/src/main/java/net/lacolaco/smileessence/Application.kt
index 796d3984..a2b39e14 100644
--- a/app/src/main/java/net/lacolaco/smileessence/Application.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/Application.kt
@@ -32,16 +32,10 @@ import com.squareup.leakcanary.LeakCanary
import io.fabric.sdk.android.Fabric
import net.lacolaco.smileessence.data.Account
import net.lacolaco.smileessence.data.OrmaHolder
-import net.lacolaco.smileessence.logging.Logger
import java.lang.ref.WeakReference
import java.util.HashMap
-/**
- * プロセスと同期しているオブジェクト
- * 現在のテーマのリソース ID と現在のアカウント(およびアカウント変更イベントリスナー)を保持します
- * MainActivity の onCreate で resetState を呼び、保持しているデータを破棄すること
- */
class Application : android.app.Application() {
override fun onCreate() {
super.onCreate()
@@ -60,12 +54,8 @@ class Application : android.app.Application() {
@Deprecated("")
lateinit var instance: Application
private set
- private var lastWorld: WeakReference<World>? = null
private val worlds = HashMap<Long, WeakReference<World>>() // XXX
-
- // --------------------- get instance ---------------------
-
fun toast(@StringRes id: Int) {
Toast.makeText(instance, id, Toast.LENGTH_LONG).show()
}
@@ -74,28 +64,12 @@ class Application : android.app.Application() {
Toast.makeText(instance, text, Toast.LENGTH_LONG).show()
}
- val currentWorld: World?
- get() {
- val w0 = if (lastWorld != null) lastWorld!!.get() else null
- if (w0 != null)
- return w0
- for (ww in worlds.values) {
- val w = ww.get()
- if (w != null)
- return w
- }
- return null
- }
+ var currentWorld: World? = null
fun getWorld(id: Long): World {
- val ww0 = worlds[id]
- if (ww0 != null) {
- val w0 = ww0.get()
- if (w0 != null) {
- lastWorld = ww0
- return w0
- }
- }
+ val w0 = worlds[id]?.get()
+ if (w0 != null)
+ return w0
val w = World(Account.get(id))
val ww = WeakReference(w)
worlds.put(id, ww)
diff --git a/app/src/main/java/net/lacolaco/smileessence/IntentRouter.kt b/app/src/main/java/net/lacolaco/smileessence/IntentRouter.kt
index e5f9d0ce..2c202f37 100644
--- a/app/src/main/java/net/lacolaco/smileessence/IntentRouter.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/IntentRouter.kt
@@ -86,7 +86,10 @@ object IntentRouter {
}
val statusMatcher = TWITTER_STATUS_PATTERN.matcher(uri.path)
if (statusMatcher.find()) {
- showStatusDialog(activity, java.lang.Long.parseLong(statusMatcher.group(1)))
+ Tweet.fetchTask(java.lang.Long.parseLong(statusMatcher.group(1)), activity.world.account)
+ .onDoneUI { tweet -> DialogHelper.showDialog(activity, StatusDetailDialogFragment.newInstance(tweet)) }
+ .onFail { x -> Application.toast(R.string.error_intent_status_cannot_load) }
+ .execute()
return
}
val userMatcher = TWITTER_USER_PATTERN.matcher(uri.path)
@@ -120,13 +123,6 @@ object IntentRouter {
return result
}
- private fun showStatusDialog(activity: Activity, id: Long) {
- Tweet.fetchTask(id, Application.currentWorld!!.account)
- .onDoneUI { tweet -> DialogHelper.showDialog(activity, StatusDetailDialogFragment.newInstance(tweet)) }
- .onFail { x -> Application.toast(R.string.error_intent_status_cannot_load) }
- .execute()
- }
-
private fun showUserDialog(activity: MainActivity, screenName: String) {
val openUserDetail = CommandOpenUserDetail(activity, screenName)
openUserDetail.execute()
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
index 2fc0f8f7..450009c2 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
@@ -57,8 +57,8 @@ class MainActivity : Activity(), ViewPager.OnPageChangeListener {
val userId = java.lang.Long.parseLong(userIdValue)
Application.getWorld(userId)
}
- private lateinit var pagerAdapter: PageListAdapter
- private lateinit var currentAccountIconImageView: ImageView
+ private val pagerAdapter by lazy { PageListAdapter(this) }
+ private val currentAccountIconImageView by lazy { findViewById(android.R.id.home) as ImageView }
private fun setSelectedPageIndex(position: Int, smooth: Boolean = true) {
viewPager.setCurrentItem(position, smooth)
@@ -106,6 +106,12 @@ class MainActivity : Activity(), ViewPager.OnPageChangeListener {
}
}
+ private fun setTitle() {
+ title = String.format("%s / %s", world.account.user.screenName, pagerAdapter.getName(viewPager.currentItem))
+ val label = getString(R.string.app_name) + " - @" + world.account.user.screenName
+ setTaskDescription(ActivityManager.TaskDescription(label))
+ }
+
// ------------------------ OVERRIDE METHODS ------------------------
override fun onBackPressed() {
@@ -123,7 +129,15 @@ class MainActivity : Activity(), ViewPager.OnPageChangeListener {
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when (requestCode) {
- REQUEST_GET_PICTURE_FROM_GALLERY -> getImageUri(requestCode, resultCode, data)
+ REQUEST_GET_PICTURE_FROM_GALLERY -> {
+ if (resultCode != Activity.RESULT_OK) {
+ Logger.error(requestCode)
+ world.notifyError(R.string.notice_select_image_failed)
+ finish()
+ return
+ }
+ openPostPageWithImage(data!!.data)
+ }
}
}
@@ -139,11 +153,8 @@ class MainActivity : Activity(), ViewPager.OnPageChangeListener {
setTheme(if (account.themeIndex == 0) R.style.theme_dark else R.style.theme_light)
setContentView(R.layout.layout_main)
-
- pagerAdapter = PageListAdapter(this)
viewPager.addOnPageChangeListener(this)
actionBar.setDisplayHomeAsUpEnabled(true)
- currentAccountIconImageView = findViewById(android.R.id.home) as ImageView
currentAccountIconImageView.scaleType = ImageView.ScaleType.FIT_XY
// TODO: tab order?
@@ -177,7 +188,6 @@ class MainActivity : Activity(), ViewPager.OnPageChangeListener {
// update actionbar
val update = {
setTitle()
- updateActionBarTitle()
val newUrl = user.profileImageUrl
if (newUrl != null) {
BitmapURLTask(newUrl, currentAccountIconImageView).execute()
@@ -203,19 +213,13 @@ class MainActivity : Activity(), ViewPager.OnPageChangeListener {
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
- private fun setTitle() {
- val label = getString(R.string.app_name) + " - @" + world.account.user.screenName
- val desc = ActivityManager.TaskDescription(label)
- setTaskDescription(desc)
- }
-
override fun onDestroy() {
- super.onDestroy()
currentUserBundle.detachAll()
Crouton.cancelAllCroutons()
// Workaround for LeakCanary
fixCroutonLeak()
Logger.debug("onDestroy")
+ super.onDestroy()
}
private fun fixCroutonLeak() {
@@ -230,7 +234,6 @@ class MainActivity : Activity(), ViewPager.OnPageChangeListener {
} catch (e: Exception) {
Logger.error("crouton fix error: " + e)
}
-
}
@@ -272,6 +275,7 @@ class MainActivity : Activity(), ViewPager.OnPageChangeListener {
override fun onResume() {
Logger.debug("onResume")
super.onResume()
+ Application.currentWorld = world
world.setMainActivityActive(true)
}
@@ -281,33 +285,11 @@ class MainActivity : Activity(), ViewPager.OnPageChangeListener {
override fun onPageSelected(position: Int) {
Logger.debug("Page selected: " + position)
- updateActionBarTitle()
+ setTitle()
}
override fun onPageScrollStateChanged(state: Int) {}
- // -------------------------- OTHER METHODS --------------------------
-
- private fun getImageUri(requestCode: Int, resultCode: Int, data: Intent?) {
- if (resultCode != Activity.RESULT_OK) {
- Logger.error(requestCode)
- world.notifyError(R.string.notice_select_image_failed)
- finish()
- return
- }
- openPostPageWithImage(data!!.data)
- }
-
- private fun updateActionBarTitle() {
- val actionBar = actionBar
- val currentAccount = world.account
- if (actionBar != null) {
- val screenName = currentAccount.user.screenName
- val pageTitle = pagerAdapter.getName(viewPager.currentItem)
- title = String.format("%s / %s", screenName, pageTitle)
- }
- }
-
companion object {
val REQUEST_GET_PICTURE_FROM_GALLERY = 11
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/ManageAccountsActivity.kt b/app/src/main/java/net/lacolaco/smileessence/activity/ManageAccountsActivity.kt
index cddad891..e1240a76 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/ManageAccountsActivity.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/ManageAccountsActivity.kt
@@ -149,7 +149,6 @@ class ManageAccountsActivity : Activity(), AdapterView.OnItemClickListener, Adap
private fun safeFinish() {
val currentWorld = Application.currentWorld
-
if (currentWorld != null) {
goToWorld(currentWorld)
} else {