aboutsummaryrefslogtreecommitdiffstats
path: root/app/src
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-10-25 00:54:37 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-10-25 00:54:37 +0900
commit0a6d63b6f02a167ac387f6d04f3a9c5f35a3a902 (patch)
treeccbff11be451240d1ab40974ae00d64a60427c53 /app/src
parent065e7a135b9817b94e397f7c21259699eb3b09be (diff)
downloadSmileEssence-0a6d63b6f02a167ac387f6d04f3a9c5f35a3a902.tar.gz
good bye dm
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/World.kt31
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt1
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/data/Pages.kt20
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt40
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/Entities.kt17
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/Event.kt1
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/IdObject.kt2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt3
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.kt15
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/Messages.kt30
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/Partials.kt31
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/TweetStateFrameLayout.kt9
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/adapter/MessageListAdapter.kt15
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.kt138
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/SendMessageDialogFragment.kt100
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt7
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt4
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/page/MessagesPageFragment.kt70
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/page/TimelinePageFragment.kt3
-rw-r--r--app/src/main/res/color/status_item_header.xml1
-rw-r--r--app/src/main/res/color/status_item_header_light.xml1
-rw-r--r--app/src/main/res/drawable/button_round_blue.xml7
-rw-r--r--app/src/main/res/drawable/button_round_blue_light.xml7
-rw-r--r--app/src/main/res/drawable/button_round_orange.xml7
-rw-r--r--app/src/main/res/drawable/button_round_orange_light.xml7
-rw-r--r--app/src/main/res/drawable/button_round_red.xml7
-rw-r--r--app/src/main/res/drawable/button_round_red_light.xml7
-rw-r--r--app/src/main/res/drawable/tweet_background.xml1
-rw-r--r--app/src/main/res/drawable/tweet_background_light.xml1
-rw-r--r--app/src/main/res/layout/dialog_send_message.xml76
-rw-r--r--app/src/main/res/layout/item_status_base.xml2
-rw-r--r--app/src/main/res/values/attrs.xml1
-rw-r--r--app/src/main/res/values/strings.xml26
33 files changed, 23 insertions, 665 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/World.kt b/app/src/main/java/net/lacolaco/smileessence/World.kt
index f3956a4c..3b9a6c30 100644
--- a/app/src/main/java/net/lacolaco/smileessence/World.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/World.kt
@@ -14,7 +14,10 @@ import com.bumptech.glide.request.transition.Transition
import net.lacolaco.smileessence.activity.MainActivity
import net.lacolaco.smileessence.compat.Twitter4J
import net.lacolaco.smileessence.data.PageInfo
-import net.lacolaco.smileessence.entity.*
+import net.lacolaco.smileessence.entity.Event
+import net.lacolaco.smileessence.entity.SavedSearch
+import net.lacolaco.smileessence.entity.Tweet
+import net.lacolaco.smileessence.entity.User
import net.lacolaco.smileessence.twitter.TwitterTaskException
import net.lacolaco.smileessence.twitter.UserStreamListener
import net.lacolaco.smileessence.twitter.task.*
@@ -28,7 +31,6 @@ import twitter4j.auth.AccessToken
import twitter4j.conf.ConfigurationBuilder
import java.lang.ref.WeakReference
import java.util.*
-import java.util.concurrent.ConcurrentHashMap
import kotlin.coroutines.experimental.suspendCoroutine
/**
@@ -42,11 +44,8 @@ class World private constructor(private val persistentData: PersistentData) {
// Timelines
private val tweets = HashMap<Long, Tweet>()
private val tweetNotifiers = WeakHashMap<Any, (Tweet) -> Unit>()
- // Direct messages
- private val directMessages = ConcurrentHashMap<Long, DirectMessage>()
- private val directMessageNotifiers = WeakHashMap<Any, (DirectMessage) -> Unit>()
// Events
- val events = ArrayList<Event>()
+ private val events = ArrayList<Event>()
private val eventNotifiers = WeakHashMap<Any, (Event) -> Unit>()
// Streaming APIs
private var stream: TwitterStream? = null
@@ -212,25 +211,6 @@ class World private constructor(private val persistentData: PersistentData) {
}
}
- // Direct messages
-
- @Synchronized
- fun addDirectMessageTimeline(key: Any, notify: (DirectMessage) -> Unit) {
- for ((_, message) in directMessages)
- notify(message)
- directMessageNotifiers.put(key, notify)
- }
-
- fun addDirectMessage(entity: DirectMessage) {
- if (directMessages.put(entity.id, entity) == null)
- for ((_, c) in directMessageNotifiers)
- c(entity)
- }
-
- fun addDirectMessage(entities: Iterable<DirectMessage>) {
- entities.forEach { addDirectMessage(it) }
- }
-
// Events
@Synchronized
@@ -369,7 +349,6 @@ class World private constructor(private val persistentData: PersistentData) {
ret.add(PageInfo.ComposePageInfo())
ret.add(PageInfo.TweetsPageInfo("Home", arrayListOf("")))
ret.add(PageInfo.TweetsPageInfo("Mentions", arrayListOf("@$screenName")))
- ret.add(PageInfo.MessagesPageInfo())
ret.add(PageInfo.SearchPageInfo(""))
ret.add(PageInfo.ListPageInfo(null))
return ret
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 5b6b5f84..ee2562f8 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
@@ -22,7 +22,6 @@ import net.lacolaco.smileessence.twitter.TwitterTaskException
import net.lacolaco.smileessence.twitter.task.getTweetAsync
import net.lacolaco.smileessence.twitter.task.getUserAsync
import net.lacolaco.smileessence.util.bg
-import net.lacolaco.smileessence.util.browse
import net.lacolaco.smileessence.util.getMainActivityOrCancel
import net.lacolaco.smileessence.util.launchUi
import net.lacolaco.smileessence.view.DialogHelper
diff --git a/app/src/main/java/net/lacolaco/smileessence/data/Pages.kt b/app/src/main/java/net/lacolaco/smileessence/data/Pages.kt
index ffdf09aa..cc3c1ab1 100644
--- a/app/src/main/java/net/lacolaco/smileessence/data/Pages.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/data/Pages.kt
@@ -40,20 +40,6 @@ sealed class PageInfo(val fragmentClass: Class<out PageFragment<*>>) {
}
}
- class MessagesPageInfo() : PageInfo(MessagesPageFragment::class.java) {
- override val name = "Messages"
-
- override fun describe(): String {
- return ""
- }
-
- constructor(json: JsonObject) : this()
-
- override fun toJson() = json {
- obj()
- }
- }
-
class EventsPageInfo() : PageInfo(EventsPageFragment::class.java) {
override val name = "Events"
@@ -109,13 +95,14 @@ sealed class PageInfo(val fragmentClass: Class<out PageFragment<*>>) {
when (it.string("kind")) {
"compose" -> ComposePageInfo(data)
"tweets" -> TweetsPageInfo(data)
- "messages" -> MessagesPageInfo(data)
"events" -> EventsPageInfo(data)
"search" -> SearchPageInfo(data)
"list" -> ListPageInfo(data)
+ // FIXME: Remove this
+ "messages" -> null
else -> throw RuntimeException("invalid kind")
}
- }
+ }.mapNotNull { it } // FIXME
}
fun stringifyList(input: List<PageInfo>): String {
@@ -124,7 +111,6 @@ sealed class PageInfo(val fragmentClass: Class<out PageFragment<*>>) {
val kind = when (it) {
is ComposePageInfo -> "compose"
is TweetsPageInfo -> "tweets"
- is MessagesPageInfo -> "messages"
is EventsPageInfo -> "events"
is SearchPageInfo -> "search"
is ListPageInfo -> "list"
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt b/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt
deleted file mode 100644
index 5e233e64..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt
+++ /dev/null
@@ -1,40 +0,0 @@
-package net.lacolaco.smileessence.entity
-
-import java.util.*
-
-class DirectMessage private constructor(message: twitter4j.DirectMessage) : IdObject {
- override val id = message.id
- val sender = User.fromTwitter(message.sender)
- val recipient = User.fromTwitter(message.recipient)
- val entities = Entities.fromTwitter(message)
- val text = entities.extractText(message, message.text)
- val createdAt = message.createdAt!!
-
- companion object {
- private val storage = HashMap<Long, DirectMessage>()
-
- @Synchronized
- fun fetch(statusId: Long): DirectMessage? {
- return storage[statusId]
- }
-
- @Synchronized
- fun fromTwitter(st: twitter4j.DirectMessage): DirectMessage {
- var t: DirectMessage? = fetch(st.id)
- if (t == null) {
- t = DirectMessage(st)
- storage.put(st.id, t)
- } else {
- // Update local cache
- User.fromTwitter(st.sender)
- User.fromTwitter(st.recipient)
- }
- return t
- }
-
- @Synchronized
- fun fromTwitter(sts: Iterable<twitter4j.DirectMessage>): List<DirectMessage> {
- return sts.map { fromTwitter(it) }
- }
- }
-}
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/Entities.kt b/app/src/main/java/net/lacolaco/smileessence/entity/Entities.kt
index 0a3579b3..33fc0130 100644
--- a/app/src/main/java/net/lacolaco/smileessence/entity/Entities.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/Entities.kt
@@ -1,15 +1,16 @@
package net.lacolaco.smileessence.entity
-import twitter4j.*
-
+import twitter4j.HashtagEntity
+import twitter4j.MediaEntity
+import twitter4j.URLEntity
+import twitter4j.UserMentionEntity
import java.util.*
class Entities private constructor(
val mentions: List<String>,
val hashtags: List<String>,
val mediaUrls: List<String>,
- val urlsExpanded: List<String>,
- val symbols: List<String>
+ val urlsExpanded: List<String>
) {
fun extractText(status: twitter4j.EntitySupport, text: String): String {
val set = TreeSet<twitter4j.URLEntity> { a, b -> a.start - b.start }
@@ -28,16 +29,12 @@ class Entities private constructor(
mentions = extractMentions(es.userMentionEntities),
hashtags = extractHashtags(es.hashtagEntities),
mediaUrls = extractMediaUrls(es.mediaEntities),
- urlsExpanded = extractExpandedUrls(es.urlEntities),
- symbols = extractSymbols(es.symbolEntities)
+ urlsExpanded = extractExpandedUrls(es.urlEntities)
)
private fun extractMentions(entities: Array<UserMentionEntity>?) =
entities?.map { it.screenName } ?: listOf()
- private fun extractSymbols(entities: Array<SymbolEntity>?) =
- entities?.map { it.text } ?: listOf()
-
private fun extractExpandedUrls(entities: Array<URLEntity>?) =
entities?.map { it.expandedURL } ?: listOf()
@@ -52,6 +49,6 @@ class Entities private constructor(
private fun extractHashtags(entities: Array<HashtagEntity>?) =
entities?.map { it.text } ?: listOf()
- val placeHolder = Entities(listOf(), listOf(), listOf(), listOf(), listOf())
+ val placeHolder = Entities(listOf(), listOf(), listOf(), listOf())
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/Event.kt b/app/src/main/java/net/lacolaco/smileessence/entity/Event.kt
index a4eea800..69b51f21 100644
--- a/app/src/main/java/net/lacolaco/smileessence/entity/Event.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/Event.kt
@@ -17,7 +17,6 @@ class Event constructor(val event: EnumEvent, val source: User, val targetObject
FOLLOWED("Followed by %s"),
BLOCKED("Blocked by %s"),
UNBLOCKED("Unblocked by %s"),
- RECEIVE_MESSAGE("Received a direct message from %s")
}
companion object {
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/IdObject.kt b/app/src/main/java/net/lacolaco/smileessence/entity/IdObject.kt
index 02d0cc90..35e76213 100644
--- a/app/src/main/java/net/lacolaco/smileessence/entity/IdObject.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/IdObject.kt
@@ -1,7 +1,5 @@
package net.lacolaco.smileessence.entity
-import java.util.*
-
interface IdObject {
val id: Long
/*
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 eddaeb7c..373d37dd 100644
--- a/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt
@@ -1,8 +1,7 @@
package net.lacolaco.smileessence.entity
import android.net.Uri
-import twitter4j.*
-
+import twitter4j.Status
import java.util.*
class Tweet private constructor(
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.kt b/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.kt
index f40c1ebf..7a59f945 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.kt
@@ -3,7 +3,6 @@ package net.lacolaco.smileessence.twitter
import net.lacolaco.smileessence.Logger
import net.lacolaco.smileessence.R
import net.lacolaco.smileessence.World
-import net.lacolaco.smileessence.entity.DirectMessage
import net.lacolaco.smileessence.entity.Event
import net.lacolaco.smileessence.entity.Tweet
import net.lacolaco.smileessence.entity.User
@@ -61,11 +60,7 @@ class UserStreamListener(private val world: World) : twitter4j.UserStreamListene
// --------------------- Interface UserStreamListener ---------------------
- override fun onDeletionNotice(directMessageId: Long, userId: Long) {
- // FIXME
- // StatusFilter.getInstance().remove(MessageViewModel.class, directMessageId);
- // DirectMessage.remove(directMessageId);
- }
+ override fun onDeletionNotice(directMessageId: Long, userId: Long) {}
override fun onFriendList(friendIds: LongArray) {}
@@ -93,13 +88,7 @@ class UserStreamListener(private val world: World) : twitter4j.UserStreamListene
override fun onUnfollow(source: twitter4j.User, unfollowedUser: twitter4j.User) {}
- override fun onDirectMessage(directMessage: twitter4j.DirectMessage) {
- val message = DirectMessage.fromTwitter(directMessage)
- world.addDirectMessage(message)
- if (message.recipient === world.user) {
- addToHistory(Event(Event.EnumEvent.RECEIVE_MESSAGE, message.sender))
- }
- }
+ override fun onDirectMessage(directMessage: twitter4j.DirectMessage) {}
override fun onUserListMemberAddition(addedMember: twitter4j.User, listOwner: twitter4j.User, list: twitter4j.UserList) {}
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/Messages.kt b/app/src/main/java/net/lacolaco/smileessence/twitter/task/Messages.kt
deleted file mode 100644
index bdf782a0..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/Messages.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package net.lacolaco.smileessence.twitter.task
-
-import net.lacolaco.smileessence.World
-import net.lacolaco.smileessence.entity.DirectMessage
-import net.lacolaco.smileessence.twitter.TwitterTaskException
-import net.lacolaco.smileessence.util.bg
-
-fun World.createMessageAsync(recipient: Long, text: String) = bg {
- DirectMessage.fromTwitter(TwitterTaskException.wrap {
- twitter.directMessages().sendDirectMessage(recipient, text)
- })
-}
-
-fun World.destroyMessageAsync(id: Long) = bg {
- DirectMessage.fromTwitter(TwitterTaskException.wrap {
- twitter.directMessages().destroyDirectMessage(id)
- })
-}
-
-fun World.getReceivedMessagesAsync(sinceId: Long? = null, maxId: Long? = null) = bg {
- DirectMessage.fromTwitter(TwitterTaskException.wrap {
- twitter.directMessages().getDirectMessages(makePaging(sinceId, maxId))
- })
-}
-
-fun World.getSentMessagesAsync(sinceId: Long? = null, maxId: Long? = null) = bg {
- DirectMessage.fromTwitter(TwitterTaskException.wrap {
- twitter.directMessages().getSentDirectMessages(makePaging(sinceId, maxId))
- })
-}
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 c24eb5cd..3a42af8c 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/Partials.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/Partials.kt
@@ -8,14 +8,12 @@ import com.bumptech.glide.Glide
import kotlinx.android.synthetic.main.item_status_base.view.*
import net.lacolaco.smileessence.R
import net.lacolaco.smileessence.World
-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.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
import net.lacolaco.smileessence.view.dialog.UserDetailDialogFragment
@@ -86,7 +84,6 @@ object Partials {
(view as TweetStateFrameLayout).isMention = tweet.entities.mentions.contains(world.user.screenName)
view.isRetweet = tweet.isRetweet
- view.isDirectMessage = false
view.isMine = tweet.originalTweet.user == world.user
}
@@ -110,32 +107,4 @@ object Partials {
view.imageview_status_favorited.visibility = View.INVISIBLE
}
}
-
- fun getDirectMessageView(directMessage: DirectMessage, world: World, activity: Activity, convertView: View?): View {
- val view = convertView ?: activity.layoutInflater.inflate(R.layout.list_item_status, null)
-
- view.setOnClickListener {
- DialogHelper.showDialog(activity, MessageDetailDialogFragment.newInstance(directMessage))
- }
-
- view.imageview_status_favorited.visibility = View.GONE
- 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 TweetStateFrameLayout).isDirectMessage = true
- view.isMine = directMessage.sender == world.user
-
- updateViewUser(directMessage.sender, activity, view)
-
- view.textview_status_text.text = directMessage.text
- var footerText = directMessage.createdAt.toCompactString()
- if (directMessage.sender == world.user) {
- footerText += " to @${directMessage.recipient.screenName}"
- }
- view.textview_status_footer.text = footerText
-
- return view
- }
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/TweetStateFrameLayout.kt b/app/src/main/java/net/lacolaco/smileessence/view/TweetStateFrameLayout.kt
index 5a971a74..0e4f602e 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/TweetStateFrameLayout.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/TweetStateFrameLayout.kt
@@ -16,13 +16,6 @@ class TweetStateFrameLayout : FrameLayout {
constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) :
super(context, attrs, defStyleAttr)
- var isDirectMessage = false
- set(value) {
- val current = field
- field = value
- if (current != value)
- refreshDrawableState()
- }
var isMention = false
set(value) {
val current = field
@@ -47,8 +40,6 @@ class TweetStateFrameLayout : FrameLayout {
override fun onCreateDrawableState(extraSpace: Int): IntArray {
val add = mutableListOf<Int>()
- if (isDirectMessage)
- add += R.attr.state_tweet_direct_message
if (isRetweet)
add += R.attr.state_tweet_retweet
if (isMention)
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/adapter/MessageListAdapter.kt b/app/src/main/java/net/lacolaco/smileessence/view/adapter/MessageListAdapter.kt
deleted file mode 100644
index 8f9c86e3..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/view/adapter/MessageListAdapter.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package net.lacolaco.smileessence.view.adapter
-
-import android.app.Activity
-import android.view.View
-import android.view.ViewGroup
-import net.lacolaco.smileessence.World
-import net.lacolaco.smileessence.entity.DirectMessage
-import net.lacolaco.smileessence.view.Partials
-
-class MessageListAdapter(private val activity: Activity, private val world: World) :
- OrderedCustomListAdapter<DirectMessage>() {
- override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
- return Partials.getDirectMessageView(getItem(position), world, activity, convertView)
- }
-}
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.kt
deleted file mode 100644
index 233b0850..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.kt
+++ /dev/null
@@ -1,138 +0,0 @@
-package net.lacolaco.smileessence.view.dialog
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import kotlinx.android.synthetic.main.dialog_status_detail.view.*
-import net.lacolaco.smileessence.R
-import net.lacolaco.smileessence.activity.MainActivity
-import net.lacolaco.smileessence.entity.DirectMessage
-import net.lacolaco.smileessence.twitter.TwitterTaskException
-import net.lacolaco.smileessence.twitter.task.destroyMessageAsync
-import net.lacolaco.smileessence.twitter.task.getUserAsync
-import net.lacolaco.smileessence.util.*
-import net.lacolaco.smileessence.view.DialogHelper
-import net.lacolaco.smileessence.view.Partials
-import net.lacolaco.smileessence.view.PopupMenu
-import net.lacolaco.smileessence.view.adapter.MessageListAdapter
-import net.lacolaco.smileessence.view.confirm
-
-class MessageDetailDialogFragment : StackableDialogFragment() {
- private lateinit var message: DirectMessage
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- val found = DirectMessage.fetch(arguments.getLong(KEY_MESSAGE_ID))
- if (found == null) {
- world.notifyError(R.string.notice_error_get_messages)
- dismiss()
- return
- }
- message = found
- }
-
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
- val view = inflater.inflate(R.layout.dialog_status_detail, container, false)
-
- val messageHeader = Partials.getDirectMessageView(message, world, activity, view.detail_current_status)
- messageHeader.isClickable = false
-
- //--- buttons
- view.button_status_detail_reply.setOnClickListener {
- DialogHelper.showDialog(activity, SendMessageDialogFragment.newInstance(message.sender))
- }
- view.button_status_detail_delete.setOnClickListener {
- confirm(R.string.dialog_confirm_commands) {
- launchBg {
- try {
- world.destroyMessageAsync(message.id).await()
- world.notify(R.string.notice_message_delete_succeeded)
- } catch (e: TwitterTaskException) {
- world.notifyError(R.string.notice_message_delete_failed)
- }
- }
- dismiss()
- }
- }
- // -- menu dialog
- view.button_status_detail_menu.setOnClickListener {
- val popup = PopupMenu(activity, view.button_status_detail_menu)
- popup.add(R.string.command_status_copy_text_to_clipboard) {
- SystemServiceHelper.copyToClipboard(activity, "message text", message.text)
- world.notify(R.string.notice_copy_clipboard)
- }
- popup.show()
- }
-
- // -- menu embedded in dialog
- val users = mutableListOf<String>()
- if (message.sender !== message.recipient)
- users += message.recipient.screenName
- users += message.entities.mentions
- for (screenName in users.distinct())
- view.embedded_menu_items.add("@$screenName") {
- val ref = ref(activity as MainActivity)
- launchUi {
- try {
- val user = world.getUserAsync(screenName).await()
- DialogHelper.showDialog(ref.get(), UserDetailDialogFragment.newInstance(user))
- } catch (e: TwitterTaskException) {
- world.notifyError(R.string.notice_error_show_user)
- }
- }
- }
- for (hashtag in message.entities.hashtags)
- view.embedded_menu_items.add("#$hashtag") {
- // XXX
- (activity as MainActivity).openPostPageAndAppendText(" #$hashtag")
- }
- for (url in message.entities.urlsExpanded + message.entities.mediaUrls)
- view.embedded_menu_items.add(url) {
- activity.browse(url)
- }
- if (view.embedded_menu_items.childCount == 0) {
- view.detail_dialog_divider_bottom.visibility = View.GONE
- view.embedded_menu_items.visibility = View.GONE
- }
- view.detail_dialog_divider_top.visibility = View.GONE
- view.button_status_detail_retweet.visibility = View.GONE
- view.button_status_detail_favorite.visibility = View.GONE
-
- val adapter = MessageListAdapter(activity, world)
- view.listview_status_detail_reply_to.adapter = adapter
-
- // TODO: 効率的な探索どうする
- val replyTo: DirectMessage? = null
- // FIXME
- // for (DirectMessage mes : DirectMessage.cached()) {
- // if (message.getId() > mes.getId() &&
- // message.getRecipient() == mes.getSender() &&
- // message.getSender() == mes.getRecipient() &&
- // (replyTo == null || replyTo.getId() < mes.getId())) {
- // replyTo = mes;
- // }
- // }
- if (replyTo != null) {
- view.listview_status_detail_reply_to.visibility = View.VISIBLE
- adapter.add(replyTo)
- adapter.updateForce()
- } else {
- view.listview_status_detail_reply_to.visibility = View.GONE
- }
-
- return view
- }
-
- companion object {
- private val KEY_MESSAGE_ID = "message_id"
-
- fun newInstance(message: DirectMessage): MessageDetailDialogFragment {
- val obj = MessageDetailDialogFragment()
- val args = Bundle()
- args.putLong(KEY_MESSAGE_ID, message.id)
- obj.arguments = args
- return obj
- }
- }
-}
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/SendMessageDialogFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/SendMessageDialogFragment.kt
deleted file mode 100644
index 8a8eda3b..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/SendMessageDialogFragment.kt
+++ /dev/null
@@ -1,100 +0,0 @@
-package net.lacolaco.smileessence.view.dialog
-
-import android.os.Bundle
-import android.support.v4.content.ContextCompat
-import android.text.Editable
-import android.text.TextWatcher
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import com.twitter.Validator
-import kotlinx.android.synthetic.main.dialog_send_message.view.*
-import net.lacolaco.smileessence.R
-import net.lacolaco.smileessence.entity.User
-import net.lacolaco.smileessence.twitter.TwitterTaskException
-import net.lacolaco.smileessence.twitter.task.createMessageAsync
-import net.lacolaco.smileessence.util.SystemServiceHelper
-import net.lacolaco.smileessence.util.launchUi
-
-class SendMessageDialogFragment : StackableDialogFragment(), TextWatcher, View.OnClickListener {
- private lateinit var recipient: User
-
- override fun onClick(v: View) {
- val id = v.id
- when (id) {
- R.id.button_send_message -> {
- sendMessage()
- }
- R.id.button_send_message_delete -> {
- view.edittext_send_message.setText("")
- }
- }
- }
-
- override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
-
- }
-
- override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
- val validator = Validator()
- val remainingCount = 140 - validator.getTweetLength(s.toString())
- view.textview_send_message_count.text = remainingCount.toString()
- if (remainingCount == 140 || remainingCount < 0) {
- view.textview_send_message_count.setTextColor(ContextCompat.getColor(activity, R.color.red))
- } else {
- view.textview_send_message_count.setTextAppearance(activity, android.R.style.TextAppearance_Widget_TextView)
- }
- }
-
- override fun afterTextChanged(s: Editable) {
- }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- val found = User.fetch(arguments.getLong(KEY_RECIPIENT_ID))
- if (found == null) {
- world.notifyError(R.string.notice_error_show_user)
- dismiss()
- return
- }
- recipient = found
- }
-
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
- val view = inflater.inflate(R.layout.dialog_send_message, container, false)
- view.textview_send_message_name.text = "To: @" + recipient.screenName
- view.edittext_send_message.setText("")
- view.edittext_send_message.addTextChangedListener(this)
- view.button_send_message.setOnClickListener(this)
- view.button_send_message_delete.setOnClickListener(this)
- return view
- }
-
- private fun sendMessage() {
- SystemServiceHelper.hideIM(activity, view.edittext_send_message)
- val text = view.edittext_send_message.text.toString()
-
- launchUi {
- try {
- val message = world.createMessageAsync(recipient.id, text).await()
- world.addDirectMessage(message)
- world.notify(R.string.notice_message_send_succeeded)
- dismiss()
- } catch (e: TwitterTaskException) {
- world.notifyError(R.string.notice_message_send_failed, e)
- }
- }
- }
-
- companion object {
- private val KEY_RECIPIENT_ID = "KEY_RECIPIENT_ID"
-
- fun newInstance(recipient: User): SendMessageDialogFragment {
- val obj = SendMessageDialogFragment()
- val args = Bundle()
- args.putLong(KEY_RECIPIENT_ID, recipient.id)
- obj.arguments = args
- return obj
- }
- }
-}
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 9e589176..ea2fa461 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
@@ -74,10 +74,9 @@ class StatusDetailDialogFragment : StackableDialogFragment() {
val builder = StringBuilder()
builder.append("@${originalTweet.user.screenName} ")
- for (screenName in originalTweet.entities.mentions) {
- if (screenName != world.user.screenName)
- builder.append("@$screenName ")
- }
+ originalTweet.entities.mentions
+ .filter { it != world.user.screenName }
+ .forEach { builder.append("@$it ") }
val text = builder.toString()
val selStart = originalTweet.user.screenName.length + 2 // "@" and " "
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 275f4a9c..8ca91d5c 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
@@ -18,7 +18,6 @@ import net.lacolaco.smileessence.twitter.TwitterTaskException
import net.lacolaco.smileessence.twitter.task.*
import net.lacolaco.smileessence.util.browse
import net.lacolaco.smileessence.util.launchUi
-import net.lacolaco.smileessence.view.DialogHelper
import net.lacolaco.smileessence.view.PopupMenu
import net.lacolaco.smileessence.view.adapter.TimelineAdapter
import net.lacolaco.smileessence.view.confirm
@@ -33,9 +32,6 @@ class UserDetailDialogFragment : StackableDialogFragment() {
(activity as MainActivity).openPostPageAndReplyTo(user)
world.notify(R.string.notice_add_to_reply)
}
- popup.add(R.string.command_user_send_message) {
- DialogHelper.showDialog(activity, SendMessageDialogFragment.newInstance(user))
- }
popup.add(R.string.command_user_block) {
confirm(R.string.dialog_confirm_commands) {
launchUi {
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/page/MessagesPageFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/page/MessagesPageFragment.kt
deleted file mode 100644
index 7ca61030..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/view/page/MessagesPageFragment.kt
+++ /dev/null
@@ -1,70 +0,0 @@
-package net.lacolaco.smileessence.view.page
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayout
-import kotlinx.coroutines.experimental.Deferred
-import net.lacolaco.smileessence.R
-import net.lacolaco.smileessence.data.PageInfo
-import net.lacolaco.smileessence.entity.DirectMessage
-import net.lacolaco.smileessence.twitter.TwitterTaskException
-import net.lacolaco.smileessence.twitter.task.getReceivedMessagesAsync
-import net.lacolaco.smileessence.twitter.task.getSentMessagesAsync
-import net.lacolaco.smileessence.util.launchUi
-import net.lacolaco.smileessence.view.Partials
-
-// TODO: Needs rework
-class MessagesPageFragment : RefreshableTimelinePageFragment<DirectMessage, PageInfo.MessagesPageInfo>() {
- override fun refresh() {
- runRefreshTask(world.getReceivedMessagesAsync()) {}
- runRefreshTask(world.getSentMessagesAsync()) {}
- }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- world.addDirectMessageTimeline(this) { message ->
- adapter.sortedList.add(message)
- }
- refresh()
- }
-
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup, savedInstanceState: Bundle?): View {
- return inflater.inflate(R.layout.page_fragment_refreshable_timeline, container, false)
- }
-
- override fun onSwipeDown(view: SwipyRefreshLayout) {
- val sinceId = if (adapter.sortedList.size > 0) adapter.sortedList[0].id else null
- runRefreshTask(world.getReceivedMessagesAsync(sinceId = sinceId)) {
- view.isRefreshing = false
- }
- }
-
- override fun onSwipeUp(view: SwipyRefreshLayout) {
- val maxId = if (adapter.sortedList.size > 0) adapter.sortedList[adapter.sortedList.size - 1].id - 1 else null
- runRefreshTask(world.getReceivedMessagesAsync(maxId = maxId)) {
- view.isRefreshing = false
- }
- }
-
- override fun onBindItemView(item: DirectMessage, itemView: View) {
- Partials.getDirectMessageView(item, world, activity, itemView)
- }
-
- override fun onCreateItemView(parent: ViewGroup): View {
- val layoutInflater = LayoutInflater.from(parent.context)
- return layoutInflater.inflate(R.layout.list_item_status, parent, false)
- }
-
- private fun runRefreshTask(task: Deferred<List<DirectMessage>>, onFinish: () -> Unit) = launchUi {
- try {
- val messages = task.await()
- world.addDirectMessage(messages)
- } catch (e: TwitterTaskException) {
- world.notifyError(R.string.notice_error_get_messages)
- }
- onFinish()
- }
-}
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/page/TimelinePageFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/page/TimelinePageFragment.kt
index 6daa1ac0..bb0026f6 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/page/TimelinePageFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/page/TimelinePageFragment.kt
@@ -61,8 +61,7 @@ abstract class TimelinePageFragment<T : IdObject, out PI : PageInfo> : PageFragm
)
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
- @Suppress("UNCHECKED_CAST")
- onBindItemView(sortedList[position] as T, holder.itemView)
+ onBindItemView(sortedList[position], holder.itemView)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
diff --git a/app/src/main/res/color/status_item_header.xml b/app/src/main/res/color/status_item_header.xml
index e33ab6af..d0293fc8 100644
--- a/app/src/main/res/color/status_item_header.xml
+++ b/app/src/main/res/color/status_item_header.xml
@@ -1,5 +1,4 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:color="@color/md_amber_700" app:state_tweet_mine="true" />
- <item android:color="@color/md_orange_700" app:state_tweet_direct_message="true" />
<item android:color="@color/md_green_700" />
</selector>
diff --git a/app/src/main/res/color/status_item_header_light.xml b/app/src/main/res/color/status_item_header_light.xml
index 89cf4e7b..67cc570b 100644
--- a/app/src/main/res/color/status_item_header_light.xml
+++ b/app/src/main/res/color/status_item_header_light.xml
@@ -1,6 +1,5 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- XXX -->
<item android:color="@color/dark_blue" app:state_tweet_mine="true" />
- <item android:color="@color/orange" app:state_tweet_direct_message="true" />
<item android:color="@color/md_green_800" />
</selector>
diff --git a/app/src/main/res/drawable/button_round_blue.xml b/app/src/main/res/drawable/button_round_blue.xml
deleted file mode 100644
index 7776d8b8..00000000
--- a/app/src/main/res/drawable/button_round_blue.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle">
- <stroke
- android:width="1dp"
- android:color="@android:color/holo_blue_dark" />
- <solid android:color="@color/gray_dark_dark" />
-</shape>
diff --git a/app/src/main/res/drawable/button_round_blue_light.xml b/app/src/main/res/drawable/button_round_blue_light.xml
deleted file mode 100644
index 29c1fb76..00000000
--- a/app/src/main/res/drawable/button_round_blue_light.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle">
- <stroke
- android:width="1dp"
- android:color="@color/white" />
- <solid android:color="@android:color/holo_blue_dark" />
-</shape>
diff --git a/app/src/main/res/drawable/button_round_orange.xml b/app/src/main/res/drawable/button_round_orange.xml
deleted file mode 100644
index 59164de4..00000000
--- a/app/src/main/res/drawable/button_round_orange.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle">
- <stroke
- android:width="1dp"
- android:color="@color/orange" />
- <solid android:color="@color/gray_dark_dark" />
-</shape>
diff --git a/app/src/main/res/drawable/button_round_orange_light.xml b/app/src/main/res/drawable/button_round_orange_light.xml
deleted file mode 100644
index e0f51bae..00000000
--- a/app/src/main/res/drawable/button_round_orange_light.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle">
- <stroke
- android:width="1dp"
- android:color="@color/white" />
- <solid android:color="@color/orange_light" />
-</shape>
diff --git a/app/src/main/res/drawable/button_round_red.xml b/app/src/main/res/drawable/button_round_red.xml
deleted file mode 100644
index 34070912..00000000
--- a/app/src/main/res/drawable/button_round_red.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle">
- <stroke
- android:width="1dp"
- android:color="@android:color/holo_red_dark" />
- <solid android:color="@color/gray_dark_dark" />
-</shape>
diff --git a/app/src/main/res/drawable/button_round_red_light.xml b/app/src/main/res/drawable/button_round_red_light.xml
deleted file mode 100644
index 3647c6d0..00000000
--- a/app/src/main/res/drawable/button_round_red_light.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle">
- <stroke
- android:width="1dp"
- android:color="@color/white" />
- <solid android:color="@android:color/holo_red_dark" />
-</shape>
diff --git a/app/src/main/res/drawable/tweet_background.xml b/app/src/main/res/drawable/tweet_background.xml
index 4fb995ae..f6e5f7a7 100644
--- a/app/src/main/res/drawable/tweet_background.xml
+++ b/app/src/main/res/drawable/tweet_background.xml
@@ -1,5 +1,4 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
- <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" />
diff --git a/app/src/main/res/drawable/tweet_background_light.xml b/app/src/main/res/drawable/tweet_background_light.xml
index e20398a1..6ecbbc2f 100644
--- a/app/src/main/res/drawable/tweet_background_light.xml
+++ b/app/src/main/res/drawable/tweet_background_light.xml
@@ -1,5 +1,4 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
- <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" />
diff --git a/app/src/main/res/layout/dialog_send_message.xml b/app/src/main/res/layout/dialog_send_message.xml
deleted file mode 100644
index 032154ca..00000000
--- a/app/src/main/res/layout/dialog_send_message.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:padding="15dp">
-
- <TextView
- android:id="@+id/textview_send_message_name"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:padding="5dp"
- android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
-
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="1px"
- android:background="?attr/app_divider" />
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="10dp"
- android:layout_marginTop="10dp"
- android:baselineAligned="false"
- android:orientation="horizontal">
-
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1">
-
- <EditText
- android:id="@+id/edittext_send_message"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="top"
- android:inputType="text|textMultiLine"
- android:minHeight="60dp">
-
- <requestFocus />
- </EditText>
- </FrameLayout>
-
- <RelativeLayout
- android:layout_width="70dp"
- android:layout_height="match_parent"
- android:layout_weight="1">
-
- <ImageButton
- android:id="@+id/button_send_message_delete"
- android:layout_width="match_parent"
- android:layout_height="30dp"
- android:layout_alignParentTop="true"
- android:background="?selectableItemBackgroundBorderless"
- android:scaleType="fitCenter"
- android:src="@drawable/ic_clear_black_24dp"
- android:tint="?color_nonactivatable" />
-
- <TextView
- android:id="@+id/textview_send_message_count"
- android:layout_width="match_parent"
- android:layout_height="30dp"
- android:layout_alignParentBottom="true"
- android:freezesText="true"
- android:gravity="center_horizontal|center_vertical"
- android:textAppearance="@android:style/TextAppearance.Widget.TextView" />
- </RelativeLayout>
- </LinearLayout>
-
- <Button
- android:id="@+id/button_send_message"
- android:layout_width="match_parent"
- android:layout_height="40dp"
- android:gravity="center"
- android:text="@string/post_button_send_message" />
-</LinearLayout>
diff --git a/app/src/main/res/layout/item_status_base.xml b/app/src/main/res/layout/item_status_base.xml
index c3f2ab2c..bc52dbcd 100644
--- a/app/src/main/res/layout/item_status_base.xml
+++ b/app/src/main/res/layout/item_status_base.xml
@@ -22,10 +22,10 @@
android:id="@+id/source_user_protected"
android:layout_width="16dp"
android:layout_height="16dp"
+ android:alpha="0.7"
android:contentDescription="@null"
android:src="@drawable/ic_lock_black_24dp"
android:tint="@color/md_grey_900"
- android:alpha="0.7"
app:layout_constraintBottom_toBottomOf="@+id/imageview_status_icon"
app:layout_constraintEnd_toEndOf="@+id/imageview_status_icon" />
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
index c730d570..412b9b43 100644
--- a/app/src/main/res/values/attrs.xml
+++ b/app/src/main/res/values/attrs.xml
@@ -8,7 +8,6 @@
<attr name="color_green_activatable" format="reference" />
<declare-styleable name="TweetStateFrameLayout">
- <attr name="state_tweet_direct_message" format="boolean" />
<attr name="state_tweet_mention" format="boolean" />
<attr name="state_tweet_retweet" format="boolean" />
<attr name="state_tweet_mine" format="boolean" />
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 799d2246..8c4a618b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -6,29 +6,16 @@
<string name="message_oauth_text">Please get PIN code at a URL below, and input it.</string>
<string name="message_oauth_hint">PIN code</string>
<string name="message_oauth_authenticate">Authenticate</string>
- <string name="theme_dark">Dark</string>
- <string name="theme_light">Light</string>
- <string name="page_name_post">Post</string>
- <string name="page_name_home">Home</string>
- <string name="page_name_mentions">Mentions</string>
- <string name="page_name_messages">Messages</string>
- <string name="page_name_history">History</string>
- <string name="page_name_search">Search</string>
- <string name="page_name_list">List</string>
- <string name="actionbar_aclog">Aclog</string>
<string name="error_intent_status_cannot_load">Failed to get tweet</string>
<string name="alert_dialog_ok">OK</string>
<string name="alert_dialog_cancel">Cancel</string>
<string name="post_button_tweet">Tweet</string>
- <string name="post_button_send_message">Send Message</string>
<string name="user_detail_tweets">Tweets</string>
<string name="user_detail_following">Following</string>
<string name="user_detail_followers">Followers</string>
<string name="user_detail_favorites">Favorites</string>
<string name="user_detail_protected">Protected</string>
- <string name="user_detail_follow">Follow</string>
<string name="user_detail_followed_is_me">This is you</string>
- <string name="user_detail_unfollow">Unfollow</string>
<string name="user_detail_followed">Followed</string>
<string name="user_detail_not_followed">Not Followed</string>
<string name="user_detail_loading">Loading</string>
@@ -57,41 +44,28 @@
<string name="notice_unblock_failed">Failed to unblock</string>
<string name="notice_r4s_succeeded">Succeeded to report</string>
<string name="notice_r4s_failed">Failed to report</string>
- <string name="notice_message_delete_succeeded">Succeeded to delete message</string>
- <string name="notice_message_delete_failed">Failed to delete message</string>
- <string name="notice_message_send_succeeded">Succeeded to send the message</string>
- <string name="notice_message_send_failed">Failed to send the message: %s</string>
<string name="notice_stream_connect">Connect to stream</string>
<string name="notice_stream_disconnect">Disconnect from stream</string>
<string name="notice_unfavorite_succeeded">Succeeded to unfavorite</string>
<string name="notice_unfavorite_failed">Failed to unfavorite</string>
<string name="notice_select_image_succeeded">Succeed to select image</string>
<string name="notice_select_image_failed">Failed to select image</string>
- <string name="notice_search_text_empty">Query is empty</string>
<string name="notice_add_to_reply">Added to reply</string>
<string name="notice_copy_clipboard">Copied to clipboard</string>
- <string name="notice_userlist_not_selected">No List is selected</string>
<string name="notice_search_query_deleted">Query was deleted</string>
- <string name="notice_query_is_empty">Query is empty</string>
<string name="notice_query_saved">Query is saved</string>
<string name="notice_error_show_user">Can\'t show this user</string>
- <string name="notice_error_show_status">Can\'t show this status</string>
<string name="notice_error_get_home">Failed to get home timeline</string>
- <string name="notice_error_get_mentions">Failed to get mentions</string>
- <string name="notice_error_get_messages">Failed to get direct messages</string>
<string name="notice_error_authenticate">Failed to authenticate. Please try later again.</string>
<string name="notice_error_authenticate_request">Failed to prepare for authentication. Please check internet access.</string>
<string name="notice_error_search">Failed to search</string>
<string name="command_user_add_to_reply">Add to reply</string>
- <string name="command_user_open_aclog">Open aclog</string>
<string name="command_user_block">Block</string>
<string name="command_user_unblock">Unblock</string>
<string name="command_user_r4s">Report for spam</string>
- <string name="command_user_send_message">Send a direct message</string>
<string name="command_status_copy_text_to_clipboard">Copy to clipboard</string>
<string name="command_status_copy_url_to_clipboard">Copy permalink to clipboard</string>
<string name="command_status_open_in_browser">Open in browser</string>
- <string name="command_status_open_talk_view">Show this talk</string>
<string name="command_status_add_to_reply">Add to reply</string>
<string name="notice_error_get_user_timeline">Failed to get user timeline</string>
<string name="notice_error_get_list">Failed to get list timeline</string>