aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-10-14 23:18:53 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-10-14 23:18:53 +0900
commit185b378cd15472609af2578e17f707fdb471e986 (patch)
treeed6bfcb252659b864f0d8e8d50fb7a439f1e6693
parent9620d8e7dcbdd7a6111a4f54818233aac02d417c (diff)
downloadSmileEssence-185b378cd15472609af2578e17f707fdb471e986.tar.gz
compat work
-rw-r--r--app/build.gradle16
-rw-r--r--app/src/main/AndroidManifest.xml1
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/World.kt22
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/EditExtractionActivity.kt13
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/LicenseActivity.kt14
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt53
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/ManageAccountsActivity.kt16
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/OAuthActivity.kt11
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/SettingActivity.kt9
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/data/Account.kt3
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/data/DbHelper.kt3
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/data/ExtractionWord.kt2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt9
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/preference/UserPreferenceHelper.kt4
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/ColoredRelativeLayout.kt5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/Confirmation.kt8
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/PopupMenu.kt2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/SettingFragment.kt2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/ThreeStateButton.kt4
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/ToggleableImageButton.kt4
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/adapter/PageListAdapter.kt97
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/DisposeDialog.kt10
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/StackableDialogFragment.kt5
-rw-r--r--app/src/main/res/drawable/button_selector_transparent.xml14
-rw-r--r--app/src/main/res/layout/dialog_menu_list.xml9
-rw-r--r--app/src/main/res/layout/dialog_user_detail.xml10
-rw-r--r--app/src/main/res/layout/fragment_post.xml4
-rw-r--r--app/src/main/res/layout/layout_edit_list.xml16
-rw-r--r--app/src/main/res/layout/layout_license.xml14
-rw-r--r--app/src/main/res/layout/layout_main.xml7
-rw-r--r--app/src/main/res/layout/layout_manage_accounts.xml18
-rw-r--r--app/src/main/res/layout/layout_setting.xml14
-rw-r--r--app/src/main/res/menu/edit_list.xml5
-rw-r--r--app/src/main/res/menu/main.xml9
-rw-r--r--app/src/main/res/values/keys.xml1
-rw-r--r--app/src/main/res/values/strings.xml3
-rw-r--r--app/src/main/res/values/styles.xml21
-rw-r--r--build.gradle2
38 files changed, 253 insertions, 207 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 41d95778..d492e245 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -7,7 +7,7 @@ android {
buildToolsVersion "26.0.2"
defaultConfig {
applicationId "jp.rhe.smileessence3"
- minSdkVersion 23
+ minSdkVersion 19
targetSdkVersion 26
versionName "git -C ${rootDir} describe --tags --long --dirty --always".execute().text.trim()
@@ -39,18 +39,13 @@ dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:0.19.1'
implementation 'com.android.support:support-core-ui:26.1.0'
- implementation 'com.android.support:support-v13:26.1.0'
+ implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:palette-v7:26.1.0'
+ implementation 'com.android.support:design:26.1.0'
// Volley
implementation 'com.android.volley:volley:1.0.0@aar'
- // Crouton
- implementation('de.keyboardsurfer.android.widget:crouton:1.8.5@aar') {
- // exclusion is not necessary, but generally a good idea.
- exclude group: 'com.google.android', module: 'support-v4'
- }
-
// SwipyRefreshLayout
implementation 'com.github.omadahealth:swipy:1.2.3@aar'
@@ -62,10 +57,9 @@ dependencies {
implementation 'org.twitter4j:twitter4j-media-support:4.0.6'
implementation 'org.twitter4j:twitter4j-stream:4.0.6'
-
// LeakCanary
- debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.4'
- releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
+ debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
+ releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
}
kotlin {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 62acb2db..5c4c86a3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -97,7 +97,6 @@
android:configChanges="keyboardHidden|orientation"
android:excludeFromRecents="false"
android:label="@string/activity_authenticate"
- android:launchMode="singleTask"
android:parentActivityName=".activity.ManageAccountsActivity" />
</application>
</manifest>
diff --git a/app/src/main/java/net/lacolaco/smileessence/World.kt b/app/src/main/java/net/lacolaco/smileessence/World.kt
index 7b980cd6..4c38c653 100644
--- a/app/src/main/java/net/lacolaco/smileessence/World.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/World.kt
@@ -2,9 +2,8 @@ package net.lacolaco.smileessence
import android.content.Intent
import android.support.annotation.StringRes
-import de.keyboardsurfer.android.widget.crouton.Configuration
-import de.keyboardsurfer.android.widget.crouton.Crouton
-import de.keyboardsurfer.android.widget.crouton.Style
+import android.support.design.widget.Snackbar
+import kotlinx.android.synthetic.main.layout_main.*
import net.lacolaco.smileessence.activity.MainActivity
import net.lacolaco.smileessence.compat.Twitter4J
import net.lacolaco.smileessence.data.Account
@@ -225,16 +224,9 @@ class World(val account: Account) {
} else {
UIHandler().post {
if (isMainActivityActive) {
- Logger.debug(String.format("notify(crouton): %s", text))
- val conf = Configuration.Builder()
- conf.setDuration(NOTIFICATION_DURATION)
- val bstyle = Style.Builder()
- bstyle.setConfiguration(conf.build())
- bstyle.setBackgroundColorValue(if (type == NotificationType.ALERT)
- Style.holoRedLight
- else
- Style.holoBlueLight)
- Crouton.makeText(activity, text, bstyle.build()).show()
+ // TODO: Make errors distinguishable
+ Logger.debug("notify(snackbar): $text")
+ Snackbar.make(activity.viewPager, text, Snackbar.LENGTH_SHORT).show()
} else {
Logger.debug(String.format("notify(toast): %s", text))
Application.toast(text)
@@ -247,8 +239,4 @@ class World(val account: Account) {
INFO,
ALERT
}
-
- companion object {
- private val NOTIFICATION_DURATION = 1000
- }
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/EditExtractionActivity.kt b/app/src/main/java/net/lacolaco/smileessence/activity/EditExtractionActivity.kt
index 317d782b..506178ad 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/EditExtractionActivity.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/EditExtractionActivity.kt
@@ -1,9 +1,8 @@
package net.lacolaco.smileessence.activity
-import android.app.Activity
-import android.app.AlertDialog
import android.os.Bundle
-import android.support.v4.app.NavUtils
+import android.support.v7.app.AlertDialog
+import android.support.v7.app.AppCompatActivity
import android.text.TextUtils
import android.view.*
import android.widget.AbsListView
@@ -13,10 +12,9 @@ import kotlinx.android.synthetic.main.list_item_simple_text.view.*
import kotlinx.android.synthetic.main.part_edittext.view.*
import net.lacolaco.smileessence.R
import net.lacolaco.smileessence.data.ExtractionWord
-import net.lacolaco.smileessence.logging.Logger
import net.lacolaco.smileessence.view.adapter.UnorderedCustomListAdapter
-class EditExtractionActivity : Activity() {
+class EditExtractionActivity : AppCompatActivity() {
private val adapter by lazy {
object : UnorderedCustomListAdapter<ExtractionWord>() {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
@@ -28,9 +26,10 @@ class EditExtractionActivity : Activity() {
}
override fun onCreate(savedInstanceState: Bundle?) {
- Logger.debug("onCreate")
super.onCreate(savedInstanceState)
setContentView(R.layout.layout_edit_list)
+ setSupportActionBar(toolbar)
+ supportActionBar!!.setDisplayHomeAsUpEnabled(true)
adapter.addAll(ExtractionWord.cached())
adapter.update()
@@ -97,7 +96,7 @@ class EditExtractionActivity : Activity() {
dialog.show()
}
android.R.id.home -> {
- NavUtils.navigateUpFromSameTask(this)
+ finish()
return true
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/LicenseActivity.kt b/app/src/main/java/net/lacolaco/smileessence/activity/LicenseActivity.kt
index 1c71ef17..b166d1af 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/LicenseActivity.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/LicenseActivity.kt
@@ -1,33 +1,27 @@
package net.lacolaco.smileessence.activity
-import android.app.Activity
import android.os.Bundle
-import android.support.v4.app.NavUtils
+import android.support.v7.app.AppCompatActivity
import android.view.MenuItem
import android.widget.TextView
import kotlinx.android.synthetic.main.layout_license.*
import net.lacolaco.smileessence.R
import java.util.*
-class LicenseActivity : Activity() {
-
- // --------------------- GETTER / SETTER METHODS ---------------------
-
+class LicenseActivity : AppCompatActivity() {
private val fileNames: List<String>
get() {
val apacheFiles = ArrayList<String>()
apacheFiles.add(getString(R.string.library_name_twitter4j))
- apacheFiles.add(getString(R.string.library_name_crouton))
apacheFiles.add(getString(R.string.library_name_volley))
apacheFiles.add(getString(R.string.library_name_twitter_text))
return apacheFiles
}
- // ------------------------ OVERRIDE METHODS ------------------------
-
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.layout_license)
+ setSupportActionBar(toolbar)
setFiles()
}
@@ -35,7 +29,7 @@ class LicenseActivity : Activity() {
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> {
- NavUtils.navigateUpFromSameTask(this)
+ finish()
return true
}
}
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 983da6cf..f75f88a4 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
@@ -1,22 +1,20 @@
package net.lacolaco.smileessence.activity
-import android.app.Activity
import android.app.ActivityManager
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.drawable.BitmapDrawable
-import android.graphics.drawable.ColorDrawable
import android.net.Uri
import android.os.Bundle
import android.provider.MediaStore
import android.support.v4.view.ViewPager
+import android.support.v7.app.AppCompatActivity
import android.support.v7.graphics.Palette
import android.text.TextUtils
import android.view.Menu
import android.view.MenuItem
import android.view.WindowManager
-import de.keyboardsurfer.android.widget.crouton.Crouton
import kotlinx.android.synthetic.main.layout_main.*
import net.lacolaco.smileessence.Application
import net.lacolaco.smileessence.R
@@ -38,7 +36,7 @@ import java.io.InputStream
import java.net.URL
import java.util.regex.Pattern
-class MainActivity : Activity(), ViewPager.OnPageChangeListener {
+class MainActivity : AppCompatActivity(), ViewPager.OnPageChangeListener {
val world: World by lazy {
val uri = intent.data ?: throw IllegalStateException("[BUG] data not set")
val userIdValue = uri.getQueryParameter("user_id") ?: throw IllegalStateException("[BUG] user_id not set")
@@ -94,8 +92,10 @@ 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, null, world.account.themeColor))
- window.statusBarColor = world.account.themeColor
+ if (android.os.Build.VERSION.SDK_INT >= 21) {
+ setTaskDescription(ActivityManager.TaskDescription(label, null, world.account.themeColor))
+ window.statusBarColor = world.account.themeColor
+ }
launchBg { world.account.syncProfileAndSaveIfNecessary() }
if (!world.account.user.profileImageUrl.startsWith("http"))
@@ -129,7 +129,7 @@ class MainActivity : Activity(), ViewPager.OnPageChangeListener {
val dPalette = bg { Palette.from(bitmap).generate() }
val scaledBitmap = dScaledBitmap.await()
- actionBar.setHomeAsUpIndicator(BitmapDrawable(resources, scaledBitmap))
+ toolbar.navigationIcon = BitmapDrawable(resources, scaledBitmap)
val palette = dPalette.await()
val swatch = if (world.account.useDarkTheme)
@@ -139,11 +139,14 @@ class MainActivity : Activity(), ViewPager.OnPageChangeListener {
if (swatch == null) {
Logger.info("Unable to get a theme color of @${world.account.user.screenName}")
} else {
- actionBar.setBackgroundDrawable(ColorDrawable(swatch.rgb))
- window.statusBarColor = swatch.rgb
- setTaskDescription(ActivityManager.TaskDescription(label, bitmap, swatch.rgb))
+ //actionBar.setBackgroundDrawable(ColorDrawable(swatch.rgb))
+ toolbar.setBackgroundColor(swatch.rgb)
+ if (android.os.Build.VERSION.SDK_INT >= 21) {
+ window.statusBarColor = swatch.rgb
+ setTaskDescription(ActivityManager.TaskDescription(label, bitmap, swatch.rgb))
+ }
world.account.themeColor = swatch.rgb
- launchBg { world.account.save() }
+ //launchBg { world.account.save() }
}
}
}
@@ -229,7 +232,7 @@ class MainActivity : Activity(), ViewPager.OnPageChangeListener {
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when (requestCode) {
REQUEST_GET_PICTURE_FROM_GALLERY -> {
- if (resultCode != Activity.RESULT_OK) {
+ if (resultCode != RESULT_OK) {
Logger.error(requestCode)
world.notifyError(R.string.notice_select_image_failed)
finish()
@@ -250,9 +253,10 @@ class MainActivity : Activity(), ViewPager.OnPageChangeListener {
val account = world.account
setTheme(if (account.useDarkTheme) R.style.theme_dark else R.style.theme_light)
setContentView(R.layout.layout_main)
+ setSupportActionBar(toolbar)
viewPager.addOnPageChangeListener(this)
- actionBar.setDisplayHomeAsUpEnabled(true)
+ //actionBar.setDisplayHomeAsUpEnabled(true)
// TODO: tab order?
val args = Bundle()
@@ -303,29 +307,6 @@ class MainActivity : Activity(), ViewPager.OnPageChangeListener {
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
- override fun onDestroy() {
- Crouton.cancelAllCroutons()
- // Workaround for LeakCanary
- fixCroutonLeak()
- Logger.debug("onDestroy")
- super.onDestroy()
- }
-
- private fun fixCroutonLeak() {
- try {
- val klass = Class.forName("de.keyboardsurfer.android.widget.crouton.DefaultAnimationsBuilder")
- val slideInDownAnimation = klass.getDeclaredField("slideInDownAnimation")
- slideInDownAnimation.isAccessible = true
- slideInDownAnimation.set(null, null)
- val slideOutUpAnimation = klass.getDeclaredField("slideOutUpAnimation")
- slideOutUpAnimation.isAccessible = true
- slideOutUpAnimation.set(null, null)
- } catch (e: Exception) {
- Logger.error("crouton fix error: " + e)
- }
- }
-
-
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.main, menu)
return true
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 d53e94a7..5bf1b5f3 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/ManageAccountsActivity.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/ManageAccountsActivity.kt
@@ -1,19 +1,19 @@
package net.lacolaco.smileessence.activity
-import android.app.Activity
import android.content.ComponentName
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Bundle
import android.os.Process
+import android.support.v7.app.AppCompatActivity
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.BaseAdapter
-import kotlinx.android.synthetic.main.layout_edit_list.*
+import kotlinx.android.synthetic.main.layout_manage_accounts.*
import kotlinx.android.synthetic.main.list_item_account.view.*
import net.lacolaco.smileessence.Application
import net.lacolaco.smileessence.R
@@ -26,7 +26,7 @@ import net.lacolaco.smileessence.util.launchUi
import net.lacolaco.smileessence.view.confirm
import java.util.*
-class ManageAccountsActivity : Activity() {
+class ManageAccountsActivity : AppCompatActivity() {
private val adapter by lazy { EditAccountsAdapter() }
private lateinit var receivedIntent: Intent
@@ -48,7 +48,8 @@ class ManageAccountsActivity : Activity() {
return
}
- setContentView(R.layout.layout_edit_list)
+ setContentView(R.layout.layout_manage_accounts)
+ setSupportActionBar(toolbar)
listview_edit_list.adapter = adapter
listview_edit_list.setOnItemClickListener { adapterView: AdapterView<*>, view1: View, i: Int, l: Long ->
@@ -115,7 +116,8 @@ class ManageAccountsActivity : Activity() {
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
- R.id.menu_edit_list_add -> startActivityForResult(Intent(this, OAuthActivity::class.java), REQUEST_OAUTH)
+ R.id.menu_edit_list_add ->
+ startActivityForResult(Intent(this, OAuthActivity::class.java), REQUEST_OAUTH)
android.R.id.home -> safeFinish()
else -> return super.onOptionsItemSelected(item)
}
@@ -131,7 +133,7 @@ class ManageAccountsActivity : Activity() {
if (currentWorld != null) {
goToWorld(currentWorld)
} else {
- setResult(Activity.RESULT_CANCELED)
+ setResult(RESULT_CANCELED)
finish()
}
}
@@ -142,7 +144,7 @@ class ManageAccountsActivity : Activity() {
}
private fun receiveOAuth(requestCode: Int, resultCode: Int, data: Intent?) {
- if (resultCode == Activity.RESULT_OK) {
+ if (resultCode == RESULT_OK) {
launchUi {
data!!
adapter.add(bg {
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/OAuthActivity.kt b/app/src/main/java/net/lacolaco/smileessence/activity/OAuthActivity.kt
index 334c84cc..21fe612f 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/OAuthActivity.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/OAuthActivity.kt
@@ -1,8 +1,8 @@
package net.lacolaco.smileessence.activity
-import android.app.Activity
import android.content.Intent
import android.os.Bundle
+import android.support.v7.app.AppCompatActivity
import android.text.Editable
import android.text.TextWatcher
import kotlinx.android.synthetic.main.layout_oauth.*
@@ -14,7 +14,7 @@ import net.lacolaco.smileessence.util.launchUi
import twitter4j.TwitterFactory
import twitter4j.auth.RequestToken
-class OAuthActivity : Activity(), TextWatcher {
+class OAuthActivity : AppCompatActivity(), TextWatcher {
private var token: String? = null
private var tokenSecret: String? = null
@@ -38,10 +38,11 @@ class OAuthActivity : Activity(), TextWatcher {
intent.putExtra(KEY_TOKEN_SECRET, accessToken.tokenSecret)
intent.putExtra(KEY_USER_ID, accessToken.userId)
intent.putExtra(KEY_SCREEN_NAME, accessToken.screenName)
- setResult(Activity.RESULT_OK, intent)
+ setResult(RESULT_OK, intent)
} catch (e: Exception) {
+ e.printStackTrace()
Application.toast(R.string.notice_error_authenticate)
- setResult(Activity.RESULT_CANCELED)
+ setResult(RESULT_CANCELED)
}
finish()
}
@@ -63,7 +64,7 @@ class OAuthActivity : Activity(), TextWatcher {
} catch (e: Exception) {
Logger.error(e)
Application.toast(R.string.notice_error_authenticate_request)
- setResult(Activity.RESULT_CANCELED)
+ setResult(RESULT_CANCELED)
finish()
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/SettingActivity.kt b/app/src/main/java/net/lacolaco/smileessence/activity/SettingActivity.kt
index d7f1101f..47f44dd0 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/SettingActivity.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/SettingActivity.kt
@@ -1,21 +1,22 @@
package net.lacolaco.smileessence.activity
-import android.app.Activity
import android.os.Bundle
-import android.support.v4.app.NavUtils
+import android.support.v7.app.AppCompatActivity
import android.view.MenuItem
+import kotlinx.android.synthetic.main.layout_setting.*
import net.lacolaco.smileessence.R
-class SettingActivity : Activity() {
+class SettingActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.layout_setting)
+ setSupportActionBar(toolbar)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> {
- NavUtils.navigateUpFromSameTask(this)
+ finish()
return true
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/data/Account.kt b/app/src/main/java/net/lacolaco/smileessence/data/Account.kt
index b5327d5a..d9efd4b9 100644
--- a/app/src/main/java/net/lacolaco/smileessence/data/Account.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/data/Account.kt
@@ -2,6 +2,7 @@ package net.lacolaco.smileessence.data
import android.content.ContentValues
import net.lacolaco.smileessence.entity.User
+import net.lacolaco.smileessence.logging.Logger
import twitter4j.Twitter
import twitter4j.TwitterFactory
import twitter4j.TwitterStream
@@ -86,6 +87,7 @@ class Account private constructor(
}
}
}
+ Logger.error(cache.size)
}
fun register(token: String, tokenSecret: String, userId: Long, screenName: String): Account {
@@ -108,6 +110,7 @@ class Account private constructor(
values.put("theme", account.themeIndex)
values.put("theme_color", account.themeColor)
db.insertOrThrow("accounts", null, values)
+ Logger.error(cache.size)
}
cache[userId] = account
diff --git a/app/src/main/java/net/lacolaco/smileessence/data/DbHelper.kt b/app/src/main/java/net/lacolaco/smileessence/data/DbHelper.kt
index 7fe81e66..772ff959 100644
--- a/app/src/main/java/net/lacolaco/smileessence/data/DbHelper.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/data/DbHelper.kt
@@ -7,7 +7,7 @@ import android.database.sqlite.SQLiteOpenHelper
class DbHelper private constructor(context: Context) :
SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
override fun onCreate(db: SQLiteDatabase) {
- // Schema v0
+ // Schema v1
db.execSQL("""
CREATE TABLE accounts (
id INTEGER PRIMARY KEY,
@@ -18,6 +18,7 @@ class DbHelper private constructor(context: Context) :
theme INTEGER NOT NULL
)
""")
+ onUpgrade(db, 1, DATABASE_VERSION)
}
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
diff --git a/app/src/main/java/net/lacolaco/smileessence/data/ExtractionWord.kt b/app/src/main/java/net/lacolaco/smileessence/data/ExtractionWord.kt
index 7c1e1384..7f541c4b 100644
--- a/app/src/main/java/net/lacolaco/smileessence/data/ExtractionWord.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/data/ExtractionWord.kt
@@ -11,7 +11,7 @@ class ExtractionWord private constructor(val patternString: String) {
fun remove() {
DbHelper.instance.writableDatabase.use { db ->
if (db.delete("extraction_words", "pattern_string = ?", arrayOf(patternString)) == 0)
- throw IllegalStateException("Could not remove patternString=${patternString} from extraction_words")
+ throw IllegalStateException("Could not remove patternString=$patternString from extraction_words")
}
cache!!.remove(this)
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt b/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt
index fbb45641..17ee6799 100644
--- a/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt
@@ -17,10 +17,11 @@ class Tweet private constructor(st: twitter4j.Status, myUserId: Long) : EntitySu
val isRetweet = retweetedTweet != null
val originalTweet = retweetedTweet ?: this
val text: String = retweetedTweet?.text ?: extractText(st, false)
- val inReplyToStatusId: Long? =
- if (isRetweet) retweetedTweet!!.inReplyToStatusId
- else if (st.inReplyToStatusId != -1L) st.inReplyToStatusId
- else null
+ val inReplyToStatusId: Long? = when {
+ isRetweet -> retweetedTweet!!.inReplyToStatusId
+ st.inReplyToStatusId != -1L -> st.inReplyToStatusId
+ else -> null
+ }
var favoriteCount: Int = st.favoriteCount
get() = retweetedTweet?.favoriteCount ?: field
private set
diff --git a/app/src/main/java/net/lacolaco/smileessence/preference/UserPreferenceHelper.kt b/app/src/main/java/net/lacolaco/smileessence/preference/UserPreferenceHelper.kt
index 4f175026..23bae89e 100644
--- a/app/src/main/java/net/lacolaco/smileessence/preference/UserPreferenceHelper.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/preference/UserPreferenceHelper.kt
@@ -9,10 +9,6 @@ class UserPreferenceHelper private constructor() {
private val preferences: SharedPreferences
get() = PreferenceManager.getDefaultSharedPreferences(Application.instance)
- // --------------------- HELPER METHODS ---------------------
- val themeIndex: Int
- get() = get(R.string.key_setting_theme, 0)
-
val textSize: Int
get() = get(R.string.key_setting_text_size, 10)
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/ColoredRelativeLayout.kt b/app/src/main/java/net/lacolaco/smileessence/view/ColoredRelativeLayout.kt
index 5d15c2bc..3e37411d 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/ColoredRelativeLayout.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/ColoredRelativeLayout.kt
@@ -7,8 +7,9 @@ import android.util.AttributeSet
import android.widget.RelativeLayout
import net.lacolaco.smileessence.R
-
-class ColoredRelativeLayout @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0) : RelativeLayout(context, attrs, defStyleAttr, defStyleRes) {
+// XXX: 4th argument defStyleRes: Int = 0 isn't available in API 19
+class ColoredRelativeLayout @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) :
+ RelativeLayout(context, attrs, defStyleAttr) {
private val paint = Paint()
private val highlightColors = IntArray(4)
private var showAccent = false
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/Confirmation.kt b/app/src/main/java/net/lacolaco/smileessence/view/Confirmation.kt
index 6d25db2e..40e0e3fa 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/Confirmation.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/Confirmation.kt
@@ -1,11 +1,11 @@
package net.lacolaco.smileessence.view
-import android.app.Activity
-import android.app.AlertDialog
import android.app.Fragment
+import android.support.v7.app.AlertDialog
+import android.support.v7.app.AppCompatActivity
import net.lacolaco.smileessence.R
-fun Activity.confirm(resId: Int, vararg rest: Any, onOk: () -> Unit) {
+fun AppCompatActivity.confirm(resId: Int, vararg rest: Any, onOk: () -> Unit) {
val dialog = AlertDialog.Builder(this)
.setTitle(getString(resId, *rest))
.setPositiveButton(R.string.alert_dialog_ok) { _, _ -> onOk() }
@@ -15,4 +15,4 @@ fun Activity.confirm(resId: Int, vararg rest: Any, onOk: () -> Unit) {
}
fun Fragment.confirm(resId: Int, vararg rest: Any, onOk: () -> Unit) =
- activity.confirm(resId, rest = *rest, onOk = onOk)
+ (activity as AppCompatActivity).confirm(resId, rest = *rest, onOk = onOk)
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/PopupMenu.kt b/app/src/main/java/net/lacolaco/smileessence/view/PopupMenu.kt
index 794f77fd..bb765792 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/PopupMenu.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/PopupMenu.kt
@@ -5,7 +5,7 @@ import android.view.MenuItem
import android.view.View
class PopupMenu(context: Context, anchor: View) {
- private val popupMenu = android.widget.PopupMenu(context, anchor)
+ private val popupMenu = android.support.v7.widget.PopupMenu(context, anchor)
private val menuItems = LinkedHashMap<MenuItem, (MenuItem) -> Unit>()
init {
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/SettingFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/SettingFragment.kt
index 019e02b5..c2aa6ec0 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/SettingFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/SettingFragment.kt
@@ -1,6 +1,5 @@
package net.lacolaco.smileessence.view
-import android.app.AlertDialog
import android.content.Intent
import android.content.SharedPreferences
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
@@ -9,6 +8,7 @@ import android.preference.EditTextPreference
import android.preference.ListPreference
import android.preference.Preference
import android.preference.PreferenceFragment
+import android.support.v7.app.AlertDialog
import android.text.TextUtils
import kotlinx.android.synthetic.main.dialog_app_info.view.*
import net.lacolaco.smileessence.Application
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/ThreeStateButton.kt b/app/src/main/java/net/lacolaco/smileessence/view/ThreeStateButton.kt
index 0f496385..8e516c36 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/ThreeStateButton.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/ThreeStateButton.kt
@@ -2,11 +2,11 @@ package net.lacolaco.smileessence.view
import android.content.Context
import android.graphics.drawable.Drawable
+import android.support.v7.widget.AppCompatButton
import android.util.AttributeSet
-import android.widget.Button
import net.lacolaco.smileessence.R
-class ThreeStateButton @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = android.R.attr.buttonStyle, defStyleRes: Int = 0) : Button(context, attrs, defStyleAttr, defStyleRes) {
+class ThreeStateButton @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = android.R.attr.buttonStyle) : AppCompatButton(context, attrs, defStyleAttr) {
var state = STATE_OFF
set(s) {
field = s
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/ToggleableImageButton.kt b/app/src/main/java/net/lacolaco/smileessence/view/ToggleableImageButton.kt
index f83bcf56..cb1fd60e 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/ToggleableImageButton.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/ToggleableImageButton.kt
@@ -2,11 +2,13 @@ package net.lacolaco.smileessence.view
import android.content.Context
import android.graphics.drawable.Drawable
+import android.support.v7.widget.AppCompatButton
+import android.support.v7.widget.AppCompatImageButton
import android.util.AttributeSet
import android.widget.ImageButton
import net.lacolaco.smileessence.R
-class ToggleableImageButton @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = android.R.attr.imageButtonStyle, defStyleRes: Int = 0) : ImageButton(context, attrs, defStyleAttr, defStyleRes) {
+class ToggleableImageButton @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = android.R.attr.imageButtonStyle) : AppCompatImageButton(context, attrs, defStyleAttr) {
private val onSrc: Drawable
private val offSrc: Drawable
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/adapter/PageListAdapter.kt b/app/src/main/java/net/lacolaco/smileessence/view/adapter/PageListAdapter.kt
index 2e739faa..452eb3f6 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/adapter/PageListAdapter.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/adapter/PageListAdapter.kt
@@ -1,18 +1,27 @@
package net.lacolaco.smileessence.view.adapter
+import android.app.Fragment
+import android.app.FragmentManager
+import android.app.FragmentTransaction
import android.os.Bundle
-import android.support.v13.app.FragmentPagerAdapter
+import android.support.v4.view.PagerAdapter
+import android.view.View
+import android.view.ViewGroup
+import net.lacolaco.smileessence.BuildConfig
import net.lacolaco.smileessence.activity.MainActivity
import net.lacolaco.smileessence.logging.Logger
import net.lacolaco.smileessence.view.page.PageFragment
import java.lang.ref.WeakReference
import java.util.*
-class PageListAdapter(_activity: MainActivity) : FragmentPagerAdapter(_activity.fragmentManager) {
+class PageListAdapter(_activity: MainActivity) : PagerAdapter() {
+ private val mFragmentManager: FragmentManager = _activity.fragmentManager
+ private var mCurTransaction: FragmentTransaction? = null
+ private var mCurrentPrimaryItem: Fragment? = null
private val pages = ArrayList<PageInfo>()
private val fragmentCache = HashMap<Int, WeakReference<PageFragment>>()
- @Synchronized override fun getItem(position: Int): PageFragment {
+ @Synchronized fun getItem(position: Int): PageFragment {
val pf: PageFragment
val info = pages[position]
try {
@@ -38,24 +47,11 @@ class PageListAdapter(_activity: MainActivity) : FragmentPagerAdapter(_activity.
return pages.size
}
- fun addPage(klass: Class<out PageFragment>, name: String, args: Bundle) {
- this.addPage(klass, name, args, true)
- }
-
fun addPage(klass: Class<out PageFragment>, name: String, args: Bundle, notifyChanged: Boolean) {
pages.add(PageInfo(klass, name, args))
if (notifyChanged) notifyDataSetChanged()
}
- @Synchronized
- fun removePage(position: Int): Boolean {
- //if (removePageWithoutNotify(position)) {
- // refreshListNavigation();
- // return true;
- //}
- return pages.removeAt(position) != null // TODO
- }
-
fun getName(pos: Int): String {
return pages[pos].name
}
@@ -71,4 +67,73 @@ class PageListAdapter(_activity: MainActivity) : FragmentPagerAdapter(_activity.
}
private class PageInfo internal constructor(val fragmentClass: Class<out PageFragment>, val name: String, val args: Bundle)
+
+ override fun startUpdate(container: ViewGroup) {
+ assert(container.id != View.NO_ID)
+ }
+
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ if (mCurTransaction == null) {
+ mCurTransaction = mFragmentManager.beginTransaction()
+ }
+
+ val itemId = position.toLong()
+
+ // Do we already have this fragment?
+ val name = "android:switcher:${container.id}:$itemId"
+ var fragment: Fragment? = mFragmentManager.findFragmentByTag(name)
+ if (fragment != null) {
+ if (BuildConfig.DEBUG)
+ Logger.verbose("Attaching item #$itemId: f=$fragment")
+ mCurTransaction!!.attach(fragment)
+ } else {
+ fragment = getItem(position)
+ if (BuildConfig.DEBUG)
+ Logger.verbose("Adding item #$itemId: f=$fragment")
+ mCurTransaction!!.add(container.id, fragment, "android:switcher:${container.id}:$itemId")
+ }
+ if (fragment !== mCurrentPrimaryItem) {
+ fragment.setMenuVisibility(false)
+ fragment.userVisibleHint = false
+ }
+
+ return fragment
+ }
+
+ override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
+ if (mCurTransaction == null) {
+ mCurTransaction = mFragmentManager.beginTransaction()
+ }
+ if (BuildConfig.DEBUG)
+ Logger.verbose("Detaching item #" + position + ": f=" + `object`
+ + " v=" + (`object` as Fragment).view)
+ mCurTransaction!!.detach(`object` as Fragment)
+ }
+
+ override fun setPrimaryItem(container: ViewGroup, position: Int, `object`: Any) {
+ val fragment = `object` as Fragment?
+ if (fragment !== mCurrentPrimaryItem) {
+ if (mCurrentPrimaryItem != null) {
+ mCurrentPrimaryItem!!.setMenuVisibility(false)
+ mCurrentPrimaryItem!!.userVisibleHint = false
+ }
+ if (fragment != null) {
+ fragment.setMenuVisibility(true)
+ fragment.userVisibleHint = true
+ }
+ mCurrentPrimaryItem = fragment
+ }
+ }
+
+ override fun finishUpdate(container: ViewGroup) {
+ if (mCurTransaction != null) {
+ mCurTransaction!!.commitAllowingStateLoss()
+ mCurTransaction = null
+ mFragmentManager.executePendingTransactions()
+ }
+ }
+
+ override fun isViewFromObject(view: View, `object`: Any): Boolean {
+ return (`object` as Fragment).view === view
+ }
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/DisposeDialog.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/DisposeDialog.kt
deleted file mode 100644
index f827536c..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/DisposeDialog.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package net.lacolaco.smileessence.view.dialog
-
-import android.app.Dialog
-import android.content.Context
-
-class DisposeDialog(context: Context) : Dialog(context) {
- override fun show() {
- dismiss()
- }
-}
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StackableDialogFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StackableDialogFragment.kt
index 244d1e5b..28fc27be 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StackableDialogFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StackableDialogFragment.kt
@@ -3,6 +3,7 @@ package net.lacolaco.smileessence.view.dialog
import android.app.Dialog
import android.app.DialogFragment
import android.os.Bundle
+import android.support.v7.app.AppCompatDialog
import android.view.Window
import net.lacolaco.smileessence.World
import net.lacolaco.smileessence.activity.MainActivity
@@ -14,8 +15,8 @@ import net.lacolaco.smileessence.view.DialogHelper
* Shows a dialog with no title by default.
*/
open class StackableDialogFragment : DialogFragment() {
- override fun onCreateDialog(savedInstanceState: Bundle?): Dialog? {
- return Dialog(activity).apply { requestWindowFeature(Window.FEATURE_NO_TITLE) }
+ override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+ return AppCompatDialog(activity).apply { requestWindowFeature(Window.FEATURE_NO_TITLE) }
}
override fun dismiss() {
diff --git a/app/src/main/res/drawable/button_selector_transparent.xml b/app/src/main/res/drawable/button_selector_transparent.xml
deleted file mode 100644
index 98181935..00000000
--- a/app/src/main/res/drawable/button_selector_transparent.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_enabled="false">
- <color android:color="@color/gray_dark" />
- </item>
- <item android:state_enabled="true" android:state_pressed="true">
- <color android:color="@color/metro_blue" />
- </item>
- <item android:state_enabled="true" android:state_pressed="false">
- <color android:color="@color/transparent" />
- </item>
- <item android:state_enabled="true">
- <color android:color="@color/transparent" />
- </item>
-</selector>
diff --git a/app/src/main/res/layout/dialog_menu_list.xml b/app/src/main/res/layout/dialog_menu_list.xml
deleted file mode 100644
index 324e18e0..00000000
--- a/app/src/main/res/layout/dialog_menu_list.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <ListView
- android:id="@+id/listview_dialog_menu_list"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" />
-</FrameLayout>
diff --git a/app/src/main/res/layout/dialog_user_detail.xml b/app/src/main/res/layout/dialog_user_detail.xml
index 6a300d60..49126825 100644
--- a/app/src/main/res/layout/dialog_user_detail.xml
+++ b/app/src/main/res/layout/dialog_user_detail.xml
@@ -79,7 +79,7 @@
android:layout_height="wrap_content"
android:clickable="true"
android:text="screen_name"
- android:textColor="?android:attr/colorAccent"
+ android:textColor="?colorAccent"
android:textSize="16sp" />
<TextView
@@ -142,7 +142,7 @@
android:clickable="true"
android:gravity="center_horizontal"
android:text="0"
- android:textColor="?android:attr/colorAccent"
+ android:textColor="?colorAccent"
android:textSize="20sp" />
<TextView
@@ -153,7 +153,7 @@
android:clickable="true"
android:gravity="center_horizontal"
android:text="0"
- android:textColor="?android:attr/colorAccent"
+ android:textColor="?colorAccent"
android:textSize="20sp" />
<TextView
@@ -164,7 +164,7 @@
android:clickable="true"
android:gravity="center_horizontal"
android:text="0"
- android:textColor="?android:attr/colorAccent"
+ android:textColor="?colorAccent"
android:textSize="20sp" />
<TextView
@@ -175,7 +175,7 @@
android:clickable="true"
android:gravity="center_horizontal"
android:text="0"
- android:textColor="?android:attr/colorAccent"
+ android:textColor="?colorAccent"
android:textSize="20sp" />
</TableRow>
diff --git a/app/src/main/res/layout/fragment_post.xml b/app/src/main/res/layout/fragment_post.xml
index 611a4026..a87b5365 100644
--- a/app/src/main/res/layout/fragment_post.xml
+++ b/app/src/main/res/layout/fragment_post.xml
@@ -11,7 +11,7 @@
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:elevation="2dp"
- android:background="?android:colorBackgroundFloating">
+ android:background="?colorBackgroundFloating">
<include
android:id="@+id/layout_post_reply_status"
@@ -41,7 +41,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top"
- android:textAppearance="@android:style/TextAppearance.Material.Large"
+ android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:inputType="text|textMultiLine"
android:minHeight="60dp">
diff --git a/app/src/main/res/layout/layout_edit_list.xml b/app/src/main/res/layout/layout_edit_list.xml
index c326e412..e8aca0f7 100644
--- a/app/src/main/res/layout/layout_edit_list.xml
+++ b/app/src/main/res/layout/layout_edit_list.xml
@@ -1,10 +1,18 @@
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <android.support.v7.widget.Toolbar
+ android:id="@+id/toolbar"
+ android:layout_width="match_parent"
+ android:layout_height="?attr/actionBarSize"
+ android:background="?attr/colorPrimary"
+ android:elevation="4dp" />
<ListView
android:id="@+id/listview_edit_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:fastScrollEnabled="true"></ListView>
-</FrameLayout>
+ android:fastScrollEnabled="true" />
+</LinearLayout>
diff --git a/app/src/main/res/layout/layout_license.xml b/app/src/main/res/layout/layout_license.xml
index 7cd11d55..52c0fefb 100644
--- a/app/src/main/res/layout/layout_license.xml
+++ b/app/src/main/res/layout/layout_license.xml
@@ -1,6 +1,14 @@
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <android.support.v7.widget.Toolbar
+ android:id="@+id/toolbar"
+ android:layout_width="match_parent"
+ android:layout_height="?attr/actionBarSize"
+ android:background="?attr/colorPrimary"
+ android:elevation="4dp" />
<ScrollView
android:layout_width="match_parent"
@@ -50,4 +58,4 @@
</FrameLayout>
</LinearLayout>
</ScrollView>
-</FrameLayout>
+</LinearLayout>
diff --git a/app/src/main/res/layout/layout_main.xml b/app/src/main/res/layout/layout_main.xml
index 12904065..dbe1fc77 100644
--- a/app/src/main/res/layout/layout_main.xml
+++ b/app/src/main/res/layout/layout_main.xml
@@ -4,6 +4,13 @@
android:layout_height="match_parent"
android:orientation="vertical">
+ <android.support.v7.widget.Toolbar
+ android:id="@+id/toolbar"
+ android:layout_width="match_parent"
+ android:layout_height="?attr/actionBarSize"
+ android:background="?attr/colorPrimary"
+ android:elevation="4dp" />
+
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/layout_manage_accounts.xml b/app/src/main/res/layout/layout_manage_accounts.xml
new file mode 100644
index 00000000..e8aca0f7
--- /dev/null
+++ b/app/src/main/res/layout/layout_manage_accounts.xml
@@ -0,0 +1,18 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <android.support.v7.widget.Toolbar
+ android:id="@+id/toolbar"
+ android:layout_width="match_parent"
+ android:layout_height="?attr/actionBarSize"
+ android:background="?attr/colorPrimary"
+ android:elevation="4dp" />
+
+ <ListView
+ android:id="@+id/listview_edit_list"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:fastScrollEnabled="true" />
+</LinearLayout>
diff --git a/app/src/main/res/layout/layout_setting.xml b/app/src/main/res/layout/layout_setting.xml
index b0885afe..51ef6f20 100644
--- a/app/src/main/res/layout/layout_setting.xml
+++ b/app/src/main/res/layout/layout_setting.xml
@@ -1,10 +1,18 @@
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <android.support.v7.widget.Toolbar
+ android:id="@+id/toolbar"
+ android:layout_width="match_parent"
+ android:layout_height="?attr/actionBarSize"
+ android:background="?attr/colorPrimary"
+ android:elevation="4dp" />
<fragment
android:id="@+id/fragment_setting"
android:name="net.lacolaco.smileessence.view.SettingFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
-</FrameLayout>
+</LinearLayout>
diff --git a/app/src/main/res/menu/edit_list.xml b/app/src/main/res/menu/edit_list.xml
index 42109149..8a41e7cb 100644
--- a/app/src/main/res/menu/edit_list.xml
+++ b/app/src/main/res/menu/edit_list.xml
@@ -1,7 +1,8 @@
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_edit_list_delete"
android:icon="@android:drawable/ic_menu_delete"
- android:showAsAction="always"
+ app:showAsAction="always"
android:title="Delete" />
</menu>
diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml
index 9b0210fc..eea3bbb5 100644
--- a/app/src/main/res/menu/main.xml
+++ b/app/src/main/res/menu/main.xml
@@ -1,16 +1,17 @@
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/actionbar_setting"
android:icon="@drawable/icon_settings"
- android:showAsAction="never"
+ app:showAsAction="never"
android:title="@string/actionbar_setting" />
<item
android:id="@+id/actionbar_edit_extraction"
- android:showAsAction="never"
+ app:showAsAction="never"
android:title="@string/actionbar_edit_extraction" />
<item
android:id="@+id/actionbar_aclog"
android:icon="@drawable/icon_website"
- android:showAsAction="never"
+ app:showAsAction="never"
android:title="@string/actionbar_aclog" />
</menu>
diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml
index 19965c3e..e17ba426 100644
--- a/app/src/main/res/values/keys.xml
+++ b/app/src/main/res/values/keys.xml
@@ -1,6 +1,5 @@
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="key_setting_text_size">textSize</string>
- <string name="key_setting_show_confirm_dialog">confirm</string>
<string name="key_setting_theme">theme</string>
<string name="key_setting_application_information">appInfo</string>
<string name="key_setting_licenses">licenseNotice</string>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 31f9adec..f1c33e49 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -6,7 +6,6 @@
<string name="app_thanks_to">Thanks to</string>
<string name="thanks_to">miz_hi, yaplus, firstspring1845, ahiru3net, unyuho123, karno, ret156, vividtomato_, hoyo203, brsywe, NTTrf, mikamikafever</string>
<string name="library_name_twitter4j">twitter4j</string>
- <string name="library_name_crouton">Crouton</string>
<string name="library_name_volley">Volley</string>
<string name="library_name_twitter_text">twitter-text</string>
<string name="activity_setting">App Setting</string>
@@ -61,12 +60,10 @@
<string name="user_detail_loading">Loading</string>
<string name="user_detail_tab_info">Info</string>
<string name="user_detail_tab_timeline">Timeline</string>
- <string name="dialog_title_about">About</string>
<string name="dialog_title_add">Add</string>
<string name="dialog_confirm_finish_app">OK to close?</string>
<string name="dialog_confirm_commands">Execute, OK?</string>
<string name="dialog_confirm_clear_account">Are you sure you want to remove this account @%s?</string>
- <string name="dialog_title_select_userlist">Select a list</string>\
<string name="dialog_confirm_delete_query">Delete this query, OK?</string>
<string name="notice_favorite_succeeded">Succeeded to favorite</string>
<string name="notice_favorite_failed">Failed to favorite</string>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index d30b8244..62286a83 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,11 +1,12 @@
<resources>
- <style name="theme_dark" parent="android:Theme.Material">
- <item name="android:dialogTheme">@style/SE.DialogTheme</item>
-
+ <style name="theme_dark" parent="Theme.AppCompat.NoActionBar">
<item name="android:colorBackground">@color/md_grey_900</item>
- <item name="android:colorBackgroundFloating">@color/md_grey_850</item>
- <item name="android:colorAccent">@color/md_blue_A200</item>
- <item name="android:colorPrimary">@color/md_purple_400</item>
+ <item name="android:windowBackground">@color/md_grey_900</item>
+ <item name="colorBackgroundFloating">@color/md_grey_850</item>
+ <item name="colorAccent">@color/md_blue_A200</item>
+ <item name="colorPrimary">@color/md_purple_400</item>
+
+ <item name="dialogTheme">@style/SE.DialogTheme</item>
<item name="color_status_text_header">@color/md_green_700</item>
<item name="color_status_text_normal">#ffffffff</item>
@@ -40,8 +41,10 @@
<item name="icon_save">@drawable/icon_save_white</item>
</style>
- <style name="theme_light" parent="android:Theme.Material.Light.DarkActionBar">
- <item name="android:dialogTheme">@style/SE.DialogTheme</item>
+ <style name="theme_light" parent="Theme.AppCompat.Light.NoActionBar">
+ <item name="dialogTheme">@style/SE.DialogTheme</item>
+
+
<item name="icon_post_delete">@drawable/icon_delete</item>
<item name="icon_post_picture">@drawable/icon_picture</item>
<item name="icon_post_row">@drawable/icon_row</item>
@@ -73,7 +76,7 @@
<item name="icon_save">@drawable/icon_save</item>
</style>
- <style name="SE.DialogTheme" parent="android:ThemeOverlay.Material.Dialog">
+ <style name="SE.DialogTheme" parent="ThemeOverlay.AppCompat.Dialog">
<item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
</style>
diff --git a/build.gradle b/build.gradle
index b234098e..3f35586f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.0.0-beta7'
+ classpath 'com.android.tools.build:gradle:3.0.0-rc1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}