diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-07 16:07:41 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-07 16:07:41 +0900 |
commit | 49274234f89edda9080275a4677f01db10385152 (patch) | |
tree | 4d421a3212ca003d2c025a60b782a2d663cefa30 | |
parent | 2caa5df5991f4733262ab6f419e25a8efce68542 (diff) | |
download | SmileEssence-49274234f89edda9080275a4677f01db10385152.tar.gz |
Application.currentWorld simplify
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 { |