diff options
author | Allan Wang <me@allanwang.ca> | 2017-06-03 14:00:04 -0700 |
---|---|---|
committer | Allan Wang <me@allanwang.ca> | 2017-06-03 14:00:04 -0700 |
commit | 1ae19368bc6819fbb1f7a6337a5003dad44f7556 (patch) | |
tree | deba69564ff6fb492413540b41da0def0d189852 | |
parent | 35185958b077880465696d686bd797895cd3ebd4 (diff) | |
download | frost-1ae19368bc6819fbb1f7a6337a5003dad44f7556.tar.gz frost-1ae19368bc6819fbb1f7a6337a5003dad44f7556.tar.bz2 frost-1ae19368bc6819fbb1f7a6337a5003dad44f7556.zip |
move activity instance creators to ContextUtils
-rw-r--r-- | .idea/gradle.xml | 6 | ||||
-rw-r--r-- | .idea/misc.xml | 29 | ||||
-rw-r--r-- | .idea/modules.xml | 2 | ||||
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/LoginActivity.kt | 16 | ||||
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt | 25 | ||||
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt | 5 | ||||
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/WebOverlayActivity.kt | 20 | ||||
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/utils/ContextUtils.kt | 40 | ||||
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/web/FrostChromeClient.kt | 2 |
9 files changed, 101 insertions, 44 deletions
diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 76a4349c..7ac24c77 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -5,6 +5,12 @@ <GradleProjectSettings> <option name="distributionType" value="DEFAULT_WRAPPED" /> <option name="externalProjectPath" value="$PROJECT_DIR$" /> + <option name="modules"> + <set> + <option value="$PROJECT_DIR$" /> + <option value="$PROJECT_DIR$/app" /> + </set> + </option> <option name="resolveModulePerSourceSet" value="false" /> </GradleProjectSettings> </option> diff --git a/.idea/misc.xml b/.idea/misc.xml index b099fe54..8449ce70 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> + <component name="EntryPointsManager"> + <entry_points version="2.0" /> + </component> <component name="MarkdownProjectSettings"> <PreviewSettings splitEditorLayout="SPLIT" splitEditorPreview="PREVIEW" useGrayscaleRendering="false" zoomFactor="1.25" maxImageWidth="0" showGitHubPageIfSynced="false" allowBrowsingInPreview="false" synchronizePreviewPosition="true" highlightPreviewType="LINE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true" verticallyAlignSourceAndPreviewSyncPosition="true" showSearchHighlightsInPreview="true" showSelectionInPreview="true"> <PanelProvider> @@ -68,6 +71,30 @@ <textMaps /> </LinkMapSettings> </component> + <component name="NullableNotNullManager"> + <option name="myDefaultNullable" value="android.support.annotation.Nullable" /> + <option name="myDefaultNotNull" value="android.support.annotation.NonNull" /> + <option name="myNullables"> + <value> + <list size="4"> + <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" /> + <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" /> + <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" /> + <item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" /> + </list> + </value> + </option> + <option name="myNotNulls"> + <value> + <list size="4"> + <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" /> + <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" /> + <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" /> + <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" /> + </list> + </value> + </option> + </component> <component name="ProjectInspectionProfilesVisibleTreeState"> <entry key="Project Default"> <profile-state> @@ -94,7 +121,7 @@ <ConfirmationsSetting value="0" id="Add" /> <ConfirmationsSetting value="0" id="Remove" /> </component> - <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" default="true" assert-keyword="true" jdk-15="true"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <output url="file://$PROJECT_DIR$/build/classes" /> </component> <component name="ProjectType"> diff --git a/.idea/modules.xml b/.idea/modules.xml index 6bf90181..3c64fcbf 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -3,6 +3,8 @@ <component name="ProjectModuleManager"> <modules> <module fileurl="file://$PROJECT_DIR$/Frost-for-Facebook.iml" filepath="$PROJECT_DIR$/Frost-for-Facebook.iml" /> + <module fileurl="file://$PROJECT_DIR$/Frost-for-Facebook.iml" filepath="$PROJECT_DIR$/Frost-for-Facebook.iml" /> + <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> </modules> </component> </project>
\ No newline at end of file diff --git a/app/src/main/kotlin/com/pitchedapps/frost/LoginActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/LoginActivity.kt index 410e2e1d..8fca271a 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/LoginActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/LoginActivity.kt @@ -1,9 +1,11 @@ package com.pitchedapps.frost +import android.app.Activity import android.content.Context import android.content.Intent import android.graphics.drawable.Drawable import android.os.Bundle +import android.os.Handler import android.support.v4.app.ActivityOptionsCompat import android.support.v4.content.ContextCompat import android.support.v4.widget.SwipeRefreshLayout @@ -24,6 +26,8 @@ import com.pitchedapps.frost.facebook.FbTab import com.pitchedapps.frost.facebook.PROFILE_PICTURE_URL import com.pitchedapps.frost.utils.L import com.pitchedapps.frost.utils.bindView +import com.pitchedapps.frost.utils.cookies +import com.pitchedapps.frost.utils.launchNewTask import com.pitchedapps.frost.views.fadeIn import com.pitchedapps.frost.views.fadeOut import com.pitchedapps.frost.views.setTextWithFade @@ -55,11 +59,14 @@ class LoginActivity : AppCompatActivity() { val usernameObservable = SingleSubject.create<String>()!! companion object { - fun newInstance(context: Context) { + const val EXTRA_COOKIES = "extra_cookies" + fun newInstance(context: Context, cookies: ArrayList<CookieModel> = arrayListOf()) { val intent = Intent(context, LoginActivity::class.java) - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_NEW_TASK) + intent.putExtra(EXTRA_COOKIES, cookies) val bundle = ActivityOptionsCompat.makeCustomAnimation(context, R.anim.slide_in_right, R.anim.slide_out_right).toBundle() ContextCompat.startActivity(context, intent, bundle) + if (context is Activity) context.finish() } } @@ -101,6 +108,11 @@ class LoginActivity : AppCompatActivity() { L.d("Zip done") if (!foundImage) L.e("Could not get profile photo; Invalid id?\n\t$cookie") textview.setTextWithFade(String.format(getString(R.string.welcome), name), duration = 500) + Handler().postDelayed({ + val cookies = cookies() + cookies.add(cookie) + launchNewTask(MainActivity::class.java, cookies) + }, 1000) } loadProfile(cookie.id) loadUsername(cookie) diff --git a/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt index 223384c1..536deab9 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt @@ -1,7 +1,5 @@ package com.pitchedapps.frost -import android.app.Activity -import android.content.Intent import android.os.Bundle import android.support.design.widget.FloatingActionButton import android.support.design.widget.Snackbar @@ -30,9 +28,7 @@ import com.pitchedapps.frost.facebook.FbTab import com.pitchedapps.frost.facebook.PROFILE_PICTURE_URL import com.pitchedapps.frost.fragments.BaseFragment import com.pitchedapps.frost.fragments.WebFragment -import com.pitchedapps.frost.utils.Changelog -import com.pitchedapps.frost.utils.bindView -import com.pitchedapps.frost.utils.toDrawable +import com.pitchedapps.frost.utils.* import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -46,24 +42,13 @@ class MainActivity : AppCompatActivity() { val tabs: TabLayout by bindView(R.id.tabs) lateinit var drawer: Drawer lateinit var drawerHeader: AccountHeader - lateinit var cookies: ArrayList<CookieModel> - - companion object { - const val EXTRA_COOKIES = "extra_cookies" - fun launch(activity: Activity, cookies: List<CookieModel>) { - val intent = (Intent(activity, MainActivity::class.java)) - intent.putParcelableArrayListExtra(EXTRA_COOKIES, ArrayList(cookies)) - activity.startActivity(intent) - activity.finish() - } - } + val cookies = cookies() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) ButterKnife.bind(this) setSupportActionBar(toolbar) - cookies = intent.extras.getParcelableArrayList<CookieModel>(EXTRA_COOKIES) adapter = SectionsPagerAdapter(supportFragmentManager, loadFbTabs()) viewPager.adapter = adapter viewPager.offscreenPageLimit = 5 @@ -108,7 +93,7 @@ class MainActivity : AppCompatActivity() { } onProfileChanged { _, profile, current -> if (current) WebOverlayActivity.newInstance(this@MainActivity, FbTab.PROFILE) - else switchUser(profile.name.text, -1) + else switchUser(profile.name.text) false } } @@ -128,7 +113,7 @@ class MainActivity : AppCompatActivity() { iicon = item.icon identifier = item.titleId.toLong() onClick { _ -> - WebOverlayActivity.newInstance(this@MainActivity, item.url) + launchWebOverlay(item.url) false } } @@ -145,7 +130,7 @@ class MainActivity : AppCompatActivity() { // finish() } R.id.action_changelog -> Changelog.show(this) - R.id.action_call -> LoginActivity.newInstance(this) + R.id.action_call -> launchNewTask(LoginActivity::class.java) R.id.action_db -> adapter.pages.saveAsync(this) R.id.action_restart -> { finish(); diff --git a/app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt index 5d7d145f..a10372d4 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt @@ -5,6 +5,7 @@ import android.support.v7.app.AppCompatActivity import com.pitchedapps.frost.dbflow.loadFbCookiesAsync import com.pitchedapps.frost.utils.L import com.pitchedapps.frost.utils.Prefs +import com.pitchedapps.frost.utils.launchNewTask /** * Created by Allan Wang on 2017-05-28. @@ -18,13 +19,13 @@ class StartActivity : AppCompatActivity() { loadFbCookiesAsync { cookies -> L.d("Cookies loaded ${System.currentTimeMillis()} $cookies") - val sorted = cookies.toMutableList() + val sorted = ArrayList(cookies) val current = cookies.filter { it.id == Prefs.userId } if (current.isNotEmpty()) { sorted.remove(current[0]) sorted.add(0, current[0]) } - MainActivity.launch(this, sorted) + launchNewTask(MainActivity::class.java, sorted) } } }
\ No newline at end of file diff --git a/app/src/main/kotlin/com/pitchedapps/frost/WebOverlayActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/WebOverlayActivity.kt index 9f6169cf..b7062ead 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/WebOverlayActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/WebOverlayActivity.kt @@ -1,16 +1,12 @@ package com.pitchedapps.frost -import android.content.Context -import android.content.Intent import android.os.Bundle -import android.support.v4.app.ActivityOptionsCompat -import android.support.v4.content.ContextCompat import android.support.v7.app.AppCompatActivity import android.support.v7.widget.Toolbar import butterknife.ButterKnife import com.jude.swipbackhelper.SwipeBackHelper -import com.pitchedapps.frost.facebook.FbTab import com.pitchedapps.frost.utils.bindView +import com.pitchedapps.frost.utils.url import com.pitchedapps.frost.web.FrostWebView @@ -22,24 +18,12 @@ class WebOverlayActivity : AppCompatActivity() { val toolbar: Toolbar by bindView(R.id.toolbar) val frostWeb: FrostWebView by bindView(R.id.frost_webview) - companion object { - private const val ARG_URL = "arg_url" - fun newInstance(context: Context, url: String) { - val intent = Intent(context, WebOverlayActivity::class.java) - intent.putExtra(ARG_URL, url) - val bundle = ActivityOptionsCompat.makeCustomAnimation(context, R.anim.slide_in_right, R.anim.slide_out_right).toBundle() - ContextCompat.startActivity(context, intent, bundle) - } - - fun newInstance(context: Context, url: FbTab) = newInstance(context, url.url) - } - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_web_overlay) ButterKnife.bind(this) setSupportActionBar(toolbar) - frostWeb.baseUrl = intent.extras.getString(ARG_URL) + frostWeb.baseUrl = url() SwipeBackHelper.onCreate(this) SwipeBackHelper.getCurrentPage(this) .setSwipeBackEnable(true) diff --git a/app/src/main/kotlin/com/pitchedapps/frost/utils/ContextUtils.kt b/app/src/main/kotlin/com/pitchedapps/frost/utils/ContextUtils.kt new file mode 100644 index 00000000..1f0eb5d3 --- /dev/null +++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/ContextUtils.kt @@ -0,0 +1,40 @@ +package com.pitchedapps.frost.utils + +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.support.v4.app.ActivityOptionsCompat +import android.support.v4.content.ContextCompat +import com.pitchedapps.frost.R +import com.pitchedapps.frost.WebOverlayActivity +import com.pitchedapps.frost.dbflow.CookieModel +import com.pitchedapps.frost.facebook.FbTab + +/** + * Created by Allan Wang on 2017-06-03. + */ +private const val EXTRA_COOKIES = "extra_cookies" +private const val ARG_URL = "arg_url" + +fun Activity.launchNewTask(clazz: Class<out Activity>, cookieList: ArrayList<CookieModel> = arrayListOf()) { + val intent = (Intent(this, clazz)) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_NEW_TASK) + intent.putParcelableArrayListExtra(EXTRA_COOKIES, cookieList) + startActivity(intent) + finish() +} + +fun Activity.cookies(): ArrayList<CookieModel> { + return intent.extras?.getParcelableArrayList<CookieModel>(EXTRA_COOKIES) ?: arrayListOf() +} + +fun Context.launchWebOverlay(url: String) { + val intent = Intent(this, WebOverlayActivity::class.java) + intent.putExtra(ARG_URL, url) + val bundle = ActivityOptionsCompat.makeCustomAnimation(this, R.anim.slide_in_right, R.anim.slide_out_right).toBundle() + ContextCompat.startActivity(this, intent, bundle) +} + +fun WebOverlayActivity.url(): String { + return intent.extras?.getString(ARG_URL) ?: FbTab.FEED.url +}
\ No newline at end of file diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostChromeClient.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostChromeClient.kt index 4cd90d7b..fe3c92e8 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostChromeClient.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostChromeClient.kt @@ -17,7 +17,7 @@ class FrostChromeClient(val progressObservable: Subject<Int>) : WebChromeClient( override fun onReceivedTitle(view: WebView?, title: String?) { super.onReceivedTitle(view, title) - L.d("Title $title") + L.v("Title $title") } override fun onProgressChanged(view: WebView, newProgress: Int) { |