aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-10-21 18:47:29 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-10-21 18:47:29 +0900
commitab3a67f8a8ad5c5367604977964b4689862edea4 (patch)
treec329554053203b0b248cdcced2185270e671df57
parent5ac6ace581471dd0747aff57d976b993d43a6938 (diff)
downloadSmileEssence-ab3a67f8a8ad5c5367604977964b4689862edea4.tar.gz
unyaunya
-rw-r--r--app/build.gradle2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt8
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/util/DateUtils.kt14
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/util/StringUtils.kt30
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/ColoredRelativeLayout.kt49
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/Partials.kt17
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/TweetConstraintLayout.kt (renamed from app/src/main/java/net/lacolaco/smileessence/view/TweetRelativeLayout.kt)15
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt1
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/page/ComposePageFragment.kt3
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/page/EventsPageFragment.kt4
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/page/PageFragment.kt7
-rw-r--r--app/src/main/res/drawable/tweet_background.xml6
-rw-r--r--app/src/main/res/drawable/tweet_background_light.xml6
-rw-r--r--app/src/main/res/layout/dialog_user_detail.xml32
-rw-r--r--app/src/main/res/layout/list_item_status.xml137
-rw-r--r--app/src/main/res/values/attrs.xml9
-rw-r--r--app/src/main/res/values/strings.xml2
-rw-r--r--app/src/main/res/values/styles.xml2
19 files changed, 144 insertions, 202 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 959809d7..be183ffb 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -51,7 +51,7 @@ dependencies {
implementation 'com.android.support:palette-v7:26.1.0'
implementation 'com.android.support:support-v13:26.1.0'
implementation 'com.android.support:design:26.1.0'
- implementation 'com.android.support.constraint:constraint-layout:1.0.2'
+ implementation 'com.android.support.constraint:constraint-layout:1.1.0-beta3'
// Volley
implementation 'com.android.volley:volley:1.0.0@aar'
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 aef46b64..407c75fa 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
@@ -206,15 +206,11 @@ class MainActivity : AppCompatActivity() {
}
override fun onBackPressed() {
- finish()
- }
-
- override fun finish() {
val homeIndex = world.pages.indexOfFirst { it is PageInfo.TweetsPageInfo }
if (viewPager.currentItem != homeIndex)
viewPager.setCurrentItem(homeIndex, true)
else
- confirm(R.string.dialog_confirm_finish_app) { super.finish() }
+ confirm(R.string.dialog_confirm_exit) { finish() }
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
@@ -222,7 +218,7 @@ class MainActivity : AppCompatActivity() {
REQUEST_CODE_MANAGE_PAGES -> {
if (resultCode == RESULT_OK) {
Application.toast("Restarting activity...")
- super.finish()
+ finish()
startActivity(intent)
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/util/DateUtils.kt b/app/src/main/java/net/lacolaco/smileessence/util/DateUtils.kt
new file mode 100644
index 00000000..be06f563
--- /dev/null
+++ b/app/src/main/java/net/lacolaco/smileessence/util/DateUtils.kt
@@ -0,0 +1,14 @@
+package net.lacolaco.smileessence.util
+
+import java.text.SimpleDateFormat
+import java.util.*
+
+fun Date.toCompactString(): String {
+ val current = Calendar.getInstance()
+ val calendar = Calendar.getInstance().apply { time = this@toCompactString }
+ var pattern = "HH:mm:ss"
+ if (calendar.get(Calendar.YEAR) != current.get(Calendar.YEAR) ||
+ calendar.get(Calendar.DAY_OF_YEAR) != current.get(Calendar.DAY_OF_YEAR))
+ pattern = "yyyy-MM-dd $pattern"
+ return SimpleDateFormat(pattern).format(this)
+}
diff --git a/app/src/main/java/net/lacolaco/smileessence/util/StringUtils.kt b/app/src/main/java/net/lacolaco/smileessence/util/StringUtils.kt
deleted file mode 100644
index 4d5f6524..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/util/StringUtils.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package net.lacolaco.smileessence.util
-
-import java.text.SimpleDateFormat
-import java.util.*
-
-object StringUtils {
- fun dateToString(date: Date): String {
- val current = Calendar.getInstance()
- val cal = Calendar.getInstance()
- cal.time = date
-
- return if (isSameYear(current, cal)) {
- if (isSameDay(current, cal)) {
- SimpleDateFormat("HH:mm:ss").format(date)
- } else {
- SimpleDateFormat("MM/dd HH:mm:ss").format(date)
- }
- } else {
- SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(date)
- }
- }
-
- private fun isSameDay(current: Calendar, cal: Calendar): Boolean {
- return cal.get(Calendar.DAY_OF_YEAR) == current.get(Calendar.DAY_OF_YEAR)
- }
-
- private fun isSameYear(current: Calendar, cal: Calendar): Boolean {
- return cal.get(Calendar.YEAR) == current.get(Calendar.YEAR)
- }
-}
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/ColoredRelativeLayout.kt b/app/src/main/java/net/lacolaco/smileessence/view/ColoredRelativeLayout.kt
deleted file mode 100644
index 3e37411d..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/view/ColoredRelativeLayout.kt
+++ /dev/null
@@ -1,49 +0,0 @@
-package net.lacolaco.smileessence.view
-
-import android.content.Context
-import android.graphics.Canvas
-import android.graphics.Paint
-import android.util.AttributeSet
-import android.widget.RelativeLayout
-import net.lacolaco.smileessence.R
-
-// 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
-
- init {
- setWillNotDraw(false)
-
- val ta = context.obtainStyledAttributes(attrs, R.styleable.ColoredRelativeLayout)
- highlightColors[0] = ta.getColor(R.styleable.ColoredRelativeLayout_highlight_none, -1)
- highlightColors[1] = ta.getColor(R.styleable.ColoredRelativeLayout_highlight_type1, -1)
- highlightColors[2] = ta.getColor(R.styleable.ColoredRelativeLayout_highlight_type2, -1)
- highlightColors[3] = ta.getColor(R.styleable.ColoredRelativeLayout_highlight_type3, -1)
- setHighlight(HIGHLIGHT_NONE)
- paint.color = ta.getColor(R.styleable.ColoredRelativeLayout_accent_color, -1)
- paint.style = Paint.Style.STROKE
- paint.strokeWidth = 3f
- ta.recycle()
- }
-
- override fun onDraw(canvas: Canvas) {
- super.onDraw(canvas)
- if (showAccent)
- canvas.drawLine(1f, 0f, 1f, measuredHeight.toFloat(), paint)
- }
-
- fun setAccentVisibility(yes: Boolean) {
- showAccent = yes
- }
-
- fun setHighlight(type: Int) {
- setBackgroundColor(highlightColors[type])
- }
-
- companion object {
- val HIGHLIGHT_NONE = 0
- }
-}
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/Partials.kt b/app/src/main/java/net/lacolaco/smileessence/view/Partials.kt
index 45e5b4f0..eb373f71 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/Partials.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/Partials.kt
@@ -1,7 +1,6 @@
package net.lacolaco.smileessence.view
import android.app.Activity
-import android.content.Context
import android.text.Html
import android.view.View
import android.view.ViewGroup
@@ -13,8 +12,8 @@ import net.lacolaco.smileessence.entity.DirectMessage
import net.lacolaco.smileessence.entity.Tweet
import net.lacolaco.smileessence.entity.User
import net.lacolaco.smileessence.twitter.task.getTweetAsync
-import net.lacolaco.smileessence.util.StringUtils
import net.lacolaco.smileessence.util.launchBg
+import net.lacolaco.smileessence.util.toCompactString
import net.lacolaco.smileessence.view.adapter.UnorderedCustomListAdapter
import net.lacolaco.smileessence.view.dialog.MessageDetailDialogFragment
import net.lacolaco.smileessence.view.dialog.StatusDetailDialogFragment
@@ -28,8 +27,7 @@ object Partials {
DialogHelper.showDialog(activity, StatusDetailDialogFragment.newInstance(tweet))
}
- //FIXME: (view as ColoredRelativeLayout).setAccentVisibility(tweet.user === world.user)
-
+ view.highlight_mine.visibility = if (tweet.user === world.user) View.VISIBLE else View.INVISIBLE
updateViewUser(tweet.originalTweet.user, activity, view)
updateViewBody(tweet, world, activity, view)
updateTweetReactionsViews(tweet, world, view)
@@ -76,13 +74,13 @@ object Partials {
private fun updateViewBody(tweet: Tweet, world: World, activity: Activity, view: View) {
view.textview_status_text.text = tweet.text
- var footerText = StringUtils.dateToString(tweet.originalTweet.createdAt)
+ var footerText = tweet.originalTweet.createdAt.toCompactString()
footerText += " via ${Html.fromHtml(tweet.originalTweet.source)}"
if (tweet.isRetweet)
footerText += " (RT by ${tweet.user.screenName})"
view.textview_status_footer.text = footerText
- (view as TweetRelativeLayout).isMention = tweet.mentions.contains(world.user.screenName)
+ (view as TweetConstraintLayout).isMention = tweet.mentions.contains(world.user.screenName)
view.isRetweet = tweet.isRetweet
view.isDirectMessage = false
}
@@ -119,15 +117,16 @@ object Partials {
view.tweet_favorite_count.visibility = View.GONE
view.imageview_status_retweeted.visibility = View.GONE
view.tweet_retweet_count.visibility = View.GONE
+ view.listview_status_embedded_status.visibility = View.GONE
//view.textview_status_header.setTextColor(getStyledColor(activity, world, R.attr.color_message_text_header))
- (view as TweetRelativeLayout).isDirectMessage = true
+ (view as TweetConstraintLayout).isDirectMessage = true
- //FIXME: (view as ColoredRelativeLayout).setAccentVisibility(directMessage.sender === world.user)
+ view.highlight_mine.visibility = if (directMessage.sender === world.user) View.VISIBLE else View.INVISIBLE
updateViewUser(directMessage.sender, activity, view)
view.textview_status_text.text = directMessage.text
- var footerText = StringUtils.dateToString(directMessage.createdAt)
+ var footerText = directMessage.createdAt.toCompactString()
if (directMessage.sender == world.user) {
footerText += " to @${directMessage.recipient.screenName}"
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/TweetRelativeLayout.kt b/app/src/main/java/net/lacolaco/smileessence/view/TweetConstraintLayout.kt
index 5eab63a4..1f2d473c 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/TweetRelativeLayout.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/TweetConstraintLayout.kt
@@ -1,20 +1,13 @@
package net.lacolaco.smileessence.view
-import android.annotation.TargetApi
import android.content.Context
-import android.os.Build
+import android.support.constraint.ConstraintLayout
import android.util.AttributeSet
-import android.widget.RelativeLayout
import net.lacolaco.smileessence.R
-class TweetRelativeLayout : RelativeLayout {
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
- constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) :
- super(context, attrs, defStyleAttr, defStyleRes)
-
- @JvmOverloads
- constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) :
- super(context, attrs, defStyleAttr)
+class TweetConstraintLayout
+@JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) :
+ ConstraintLayout(context, attrs, defStyleAttr) {
var isDirectMessage = false
set(value) {
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt
index 0d00bef7..787ac314 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt
@@ -1,6 +1,5 @@
package net.lacolaco.smileessence.view.dialog
-import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt
index c0d70a13..770c0c8d 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt
@@ -150,7 +150,7 @@ class UserDetailDialogFragment : StackableDialogFragment() {
v.tabhost.setup()
val tab1 = v.tabhost.newTabSpec("tab1").setContent(R.id.tab1).setIndicator(getString(R.string.user_detail_tab_info))
v.tabhost.addTab(tab1)
- val tab2 = v.tabhost.newTabSpec("tab2").setContent(R.id.tab2).setIndicator(getString(R.string.user_detail_tab_timeline))
+ val tab2 = v.tabhost.newTabSpec("tab2").setContent(R.id.user_detail_refresh_layout).setIndicator(getString(R.string.user_detail_tab_timeline))
v.tabhost.addTab(tab2)
v.tabhost.currentTab = 0
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/page/ComposePageFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/page/ComposePageFragment.kt
index 10f63566..b2c5cb80 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/page/ComposePageFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/page/ComposePageFragment.kt
@@ -20,7 +20,6 @@ import kotlinx.android.parcel.Parcelize
import kotlinx.android.synthetic.main.page_fragment_compose.*
import net.lacolaco.smileessence.Logger
import net.lacolaco.smileessence.R
-import net.lacolaco.smileessence.activity.MainActivity
import net.lacolaco.smileessence.data.PageInfo
import net.lacolaco.smileessence.entity.Tweet
import net.lacolaco.smileessence.entity.User
@@ -184,7 +183,7 @@ class ComposePageFragment : PageFragment<PageInfo.ComposePageInfo>(), TextWatche
world.notifyError(R.string.notice_tweet_failed, e)
}
}
- (activity as MainActivity).openHomePage()
+ mainActivity.openHomePage()
}
button_post_reply_delete.setOnClickListener {
postState.inReplyTo = null
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/page/EventsPageFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/page/EventsPageFragment.kt
index b49f09f4..e52003d9 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/page/EventsPageFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/page/EventsPageFragment.kt
@@ -9,7 +9,7 @@ import net.lacolaco.smileessence.R
import net.lacolaco.smileessence.data.ImageCache
import net.lacolaco.smileessence.data.PageInfo
import net.lacolaco.smileessence.entity.Event
-import net.lacolaco.smileessence.util.StringUtils
+import net.lacolaco.smileessence.util.toCompactString
import net.lacolaco.smileessence.view.DialogHelper
import net.lacolaco.smileessence.view.dialog.UserDetailDialogFragment
@@ -27,7 +27,7 @@ class EventsPageFragment : TimelinePageFragment<Event, PageInfo.EventsPageInfo>(
itemView.imageview_status_icon.setImageUrl(item.source.profileImageUrl, ImageCache.getImageLoader())
itemView.textview_status_header.text = item.formattedString
itemView.textview_status_text.text = item.targetObject?.text ?: ""
- itemView.textview_status_footer.text = StringUtils.dateToString(item.createdAt)
+ itemView.textview_status_footer.text = item.createdAt.toCompactString()
itemView.imageview_status_favorited.visibility = View.INVISIBLE
itemView.tweet_favorite_count.visibility = View.INVISIBLE
itemView.imageview_status_retweeted.visibility = View.INVISIBLE
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/page/PageFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/page/PageFragment.kt
index 9f1f3dca..15ca9449 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/page/PageFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/page/PageFragment.kt
@@ -2,8 +2,12 @@ package net.lacolaco.smileessence.view.page
import android.app.Fragment
import net.lacolaco.smileessence.World
+import net.lacolaco.smileessence.activity.MainActivity
import net.lacolaco.smileessence.data.PageInfo
+/**
+ * Note, PageFragment is always attached to a MainActivity.
+ */
abstract class PageFragment<out T : PageInfo> : Fragment() {
protected val world by lazy {
World[arguments.getLong(KEY_WORLD_USER_ID)]
@@ -13,6 +17,9 @@ abstract class PageFragment<out T : PageInfo> : Fragment() {
world.pages[arguments.getInt(KEY_PAGE_POSITION)] as T
}
+ val mainActivity
+ get() = super.getActivity() as MainActivity
+
// Invoked when user click the refresh button.
open fun refresh() {}
diff --git a/app/src/main/res/drawable/tweet_background.xml b/app/src/main/res/drawable/tweet_background.xml
index 93a8d884..4fb995ae 100644
--- a/app/src/main/res/drawable/tweet_background.xml
+++ b/app/src/main/res/drawable/tweet_background.xml
@@ -1,6 +1,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
- <item app:state_tweet_direct_message="true" android:drawable="@color/md_blue_grey_900" />
- <item app:state_tweet_mention="true" android:drawable="@color/md_brown_850" />
- <item app:state_tweet_retweet="true" android:drawable="@color/md_grey_850" />
+ <item android:drawable="@color/md_blue_grey_900" app:state_tweet_direct_message="true" />
+ <item android:drawable="@color/md_brown_850" app:state_tweet_mention="true" />
+ <item android:drawable="@color/md_grey_850" app:state_tweet_retweet="true" />
<item android:drawable="@color/md_grey_900" />
</selector>
diff --git a/app/src/main/res/drawable/tweet_background_light.xml b/app/src/main/res/drawable/tweet_background_light.xml
index 725e4620..e20398a1 100644
--- a/app/src/main/res/drawable/tweet_background_light.xml
+++ b/app/src/main/res/drawable/tweet_background_light.xml
@@ -1,6 +1,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
- <item app:state_tweet_direct_message="true" android:drawable="@color/orange_light" />
- <item app:state_tweet_mention="true" android:drawable="@color/light_red" />
- <item app:state_tweet_retweet="true" android:drawable="@color/light_blue" />
+ <item android:drawable="@color/orange_light" app:state_tweet_direct_message="true" />
+ <item android:drawable="@color/light_red" app:state_tweet_mention="true" />
+ <item android:drawable="@color/light_blue" app:state_tweet_retweet="true" />
<item android:drawable="@color/md_white_1000" />
</selector>
diff --git a/app/src/main/res/layout/dialog_user_detail.xml b/app/src/main/res/layout/dialog_user_detail.xml
index f369c7ba..645740db 100644
--- a/app/src/main/res/layout/dialog_user_detail.xml
+++ b/app/src/main/res/layout/dialog_user_detail.xml
@@ -110,8 +110,8 @@
<ImageView
android:id="@+id/imageview_user_detail_menu"
- android:layout_width="45dp"
- android:layout_height="45dp"
+ android:layout_width="40dp"
+ android:layout_height="40dp"
android:background="?selectableItemBackgroundBorderless"
android:clickable="true"
android:src="@drawable/ic_more_vert_black_24dp"
@@ -280,27 +280,21 @@
</LinearLayout>
</ScrollView>
- <FrameLayout
- android:id="@+id/tab2"
+ <com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayout
+ android:id="@+id/user_detail_refresh_layout"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ app:srl_direction="both">
- <com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayout
- android:id="@+id/user_detail_refresh_layout"
+ <ListView
+ android:id="@+id/listview_user_detail_timeline"
android:layout_width="match_parent"
android:layout_height="match_parent"
- app:srl_direction="both">
-
- <ListView
- android:id="@+id/listview_user_detail_timeline"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:divider="?attr/color_list_divider"
- android:dividerHeight="1px"
- android:fastScrollEnabled="true"
- android:overScrollMode="never" />
- </com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayout>
- </FrameLayout>
+ android:divider="?attr/color_list_divider"
+ android:dividerHeight="1px"
+ android:fastScrollEnabled="true"
+ android:overScrollMode="never" />
+ </com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
diff --git a/app/src/main/res/layout/list_item_status.xml b/app/src/main/res/layout/list_item_status.xml
index 33f41c7f..4f6346c6 100644
--- a/app/src/main/res/layout/list_item_status.xml
+++ b/app/src/main/res/layout/list_item_status.xml
@@ -1,100 +1,127 @@
-<net.lacolaco.smileessence.view.TweetRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<net.lacolaco.smileessence.view.TweetConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_width="wrap_content"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:descendantFocusability="blocksDescendants"
android:background="?status_item_background"
- android:foreground="?android:attr/selectableItemBackground"
- android:padding="5dp">
- <!-- app:accent_color="?attr/color_status_text_mine" -->
+ android:descendantFocusability="blocksDescendants"
+ android:foreground="?android:attr/selectableItemBackground">
+
+ <FrameLayout
+ android:id="@+id/highlight_mine"
+ android:layout_width="3dp"
+ android:layout_height="0dp"
+ android:background="?color_status_text_mine"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/imageview_status_icon"
android:layout_width="40dp"
android:layout_height="40dp"
- android:layout_alignParentTop="true"
- android:layout_marginRight="5dp" />
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="5dp"
+ android:layout_marginTop="5dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_bias="0.0" />
<TextView
android:id="@+id/textview_status_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_toRightOf="@id/imageview_status_icon"
+ android:layout_marginStart="5dp"
+ android:layout_marginTop="5dp"
android:text="mmmmmmmmmmmmmmm / !!!NAME!!!"
android:textColor="?attr/color_status_text_header"
- android:textSize="@dimen/status_text_size" />
-
- <TextView
- android:id="@+id/textview_status_text"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignLeft="@id/textview_status_header"
- android:layout_alignParentRight="true"
- android:layout_below="@id/textview_status_header"
- android:layout_marginBottom="3dp"
- android:layout_marginTop="1dp"
- android:text="!!!TEXT!!!"
- android:textColor="?attr/color_status_text_normal"
- android:textSize="@dimen/status_text_size" />
+ android:textSize="@dimen/status_text_size"
+ app:layout_constraintStart_toEndOf="@+id/imageview_status_icon"
+ app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textview_status_footer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignLeft="@id/textview_status_header"
- android:layout_below="@id/textview_status_text"
- android:text="2017-01-01 00:00:00 via Twitter Web Client"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="5dp"
+ android:text="2017-01-01 00:00:00 via !!!VIA!!!"
android:textColor="?attr/color_status_text_footer"
- android:textSize="@dimen/status_meta_text_size" />
+ android:textSize="@dimen/status_meta_text_size"
+ app:layout_constraintBottom_toTopOf="@+id/listview_status_embedded_status"
+ app:layout_constraintStart_toEndOf="@+id/imageview_status_icon"
+ app:layout_goneMarginBottom="5dp" />
<ImageView
android:id="@+id/imageview_status_retweeted"
android:layout_width="16dp"
- android:layout_height="wrap_content"
- android:layout_alignBottom="@id/textview_status_footer"
- android:layout_alignTop="@id/textview_status_footer"
- android:layout_toLeftOf="@id/tweet_retweet_count"
+ android:layout_height="0dp"
+ android:layout_marginEnd="0dp"
android:src="@drawable/ic_repeat_black_24dp"
- android:tint="?attr/color_green_activatable" />
+ android:tint="?attr/color_green_activatable"
+ app:layout_constraintBottom_toBottomOf="@+id/textview_status_footer"
+ app:layout_constraintEnd_toStartOf="@+id/tweet_retweet_count"
+ app:layout_constraintTop_toTopOf="@+id/textview_status_footer" />
<TextView
android:id="@+id/tweet_retweet_count"
- android:layout_width="16dp"
- android:layout_height="wrap_content"
- android:layout_alignBottom="@id/textview_status_footer"
- android:layout_alignTop="@id/textview_status_footer"
- android:layout_toLeftOf="@id/imageview_status_favorited"
+ android:layout_width="20dp"
+ android:layout_height="0dp"
+ android:layout_marginEnd="5dp"
android:text="999999"
android:textColor="?attr/color_status_text_footer"
- android:textSize="@dimen/status_meta_text_size" />
+ android:textSize="@dimen/status_meta_text_size"
+ app:layout_constraintBottom_toBottomOf="@+id/textview_status_footer"
+ app:layout_constraintEnd_toStartOf="@+id/imageview_status_favorited"
+ app:layout_constraintTop_toTopOf="@+id/textview_status_footer" />
<ImageView
android:id="@+id/imageview_status_favorited"
android:layout_width="16dp"
- android:layout_height="wrap_content"
- android:layout_alignBottom="@id/textview_status_footer"
- android:layout_alignTop="@id/textview_status_footer"
- android:layout_toLeftOf="@id/tweet_favorite_count"
+ android:layout_height="0dp"
+ android:layout_marginEnd="0dp"
android:src="@drawable/ic_star_black_24dp"
- android:tint="?attr/color_orange_activatable" />
+ android:tint="?attr/color_orange_activatable"
+ app:layout_constraintBottom_toBottomOf="@+id/textview_status_footer"
+ app:layout_constraintEnd_toStartOf="@+id/tweet_favorite_count"
+ app:layout_constraintTop_toTopOf="@+id/textview_status_footer" />
<TextView
android:id="@+id/tweet_favorite_count"
- android:layout_width="16dp"
- android:layout_height="wrap_content"
- android:layout_alignBottom="@id/textview_status_footer"
- android:layout_alignParentRight="true"
- android:layout_alignTop="@id/textview_status_footer"
+ android:layout_width="20dp"
+ android:layout_height="0dp"
+ android:layout_marginEnd="5dp"
android:text="999999"
android:textColor="?attr/color_status_text_footer"
- android:textSize="@dimen/status_meta_text_size" />
+ android:textSize="@dimen/status_meta_text_size"
+ app:layout_constraintBottom_toBottomOf="@+id/textview_status_footer"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toTopOf="@+id/textview_status_footer" />
<net.lacolaco.smileessence.view.ExpandedListView
android:id="@+id/listview_status_embedded_status"
- android:layout_width="match_parent"
+ android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_alignLeft="@id/textview_status_header"
- android:layout_below="@id/textview_status_footer"
- android:layout_marginTop="3dp" />
-</net.lacolaco.smileessence.view.TweetRelativeLayout>
+ android:layout_marginBottom="5dp"
+ android:layout_marginEnd="5dp"
+ android:layout_marginStart="5dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/imageview_status_icon" />
+
+ <TextView
+ android:id="@+id/textview_status_text"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="2dp"
+ android:layout_marginEnd="5dp"
+ android:layout_marginStart="5dp"
+ android:layout_marginTop="1dp"
+ android:text="!!!TEXT!!!"
+ android:textColor="?attr/color_status_text_normal"
+ android:textSize="@dimen/status_text_size"
+ app:layout_constraintBottom_toTopOf="@+id/textview_status_footer"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/imageview_status_icon"
+ app:layout_constraintTop_toBottomOf="@+id/textview_status_header" />
+</net.lacolaco.smileessence.view.TweetConstraintLayout>
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
index e6101a4c..7fc3cf01 100644
--- a/app/src/main/res/values/attrs.xml
+++ b/app/src/main/res/values/attrs.xml
@@ -6,17 +6,10 @@
<attr name="color_status_text_mine" format="color" />
<attr name="color_list_divider" format="color" />
<attr name="color_message_text_header" format="color" />
- <declare-styleable name="ColoredRelativeLayout">
- <attr name="accent_color" format="reference" />
- <attr name="highlight_none" format="reference" />
- <attr name="highlight_type1" format="reference" />
- <attr name="highlight_type2" format="reference" />
- <attr name="highlight_type3" format="reference" />
- </declare-styleable>
<attr name="color_nonactivatable" format="reference" />
<attr name="color_orange_activatable" format="reference" />
<attr name="color_green_activatable" format="reference" />
- <declare-styleable name="TweetRelativeLayout">
+ <declare-styleable name="TweetConstraintLayout">
<attr name="state_tweet_direct_message" format="boolean" />
<attr name="state_tweet_mention" format="boolean" />
<attr name="state_tweet_retweet" format="boolean" />
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7ef10eeb..3501f75f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -48,7 +48,7 @@
<string name="user_detail_tab_info">Info</string>
<string name="user_detail_tab_timeline">Timeline</string>
<string name="dialog_title_add">Add</string>
- <string name="dialog_confirm_finish_app">OK to close?</string>
+ <string name="dialog_confirm_exit">Are you sure you want to exit?</string>
<string name="dialog_confirm_commands">Execute, OK?</string>
<string name="dialog_confirm_remove_profile">Are you sure you want to remove the profile for @%s?</string>
<string name="dialog_confirm_delete_query">Delete this query, OK?</string>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index e7d6a50d..9b15c6cb 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -30,7 +30,7 @@
<item name="color_status_text_normal">@color/gray_dark</item>
<item name="color_status_text_footer">@color/gray_dark_light</item>
<item name="color_status_text_mine">@color/dark_blue</item>
- <item name="color_list_divider">@color/gray_light_light</item>
+ <item name="color_list_divider">#1f000000</item>
<item name="color_message_text_header">@color/orange</item>
<item name="color_nonactivatable">@color/color_nonactivatable_light</item>