improved video player

fixed some crashes
This commit is contained in:
Mariotaku Lee 2017-02-19 00:51:11 +08:00
parent eebe6508ac
commit 8c85c28e31
No known key found for this signature in database
GPG Key ID: 15C10F89D7C33535
65 changed files with 464 additions and 292 deletions

View File

@ -228,6 +228,7 @@ public class ParcelableMessageConversation implements Parcelable {
}
@StringDef({ConversationType.ONE_TO_ONE, ConversationType.GROUP})
@Retention(RetentionPolicy.SOURCE)
public @interface ConversationType {
String ONE_TO_ONE = "one_to_one";
String GROUP = "group";

View File

@ -35,14 +35,6 @@ public final class ParseUtils implements TwidereConstants {
return parseString(object, null);
}
public static String parseString(final int object) {
return String.valueOf(object);
}
public static String parseString(final long object) {
return String.valueOf(object);
}
public static String parseString(final Object object, final String def) {
if (object == null) return def;
return String.valueOf(object);

View File

@ -94,7 +94,7 @@ class GooglePlayInAppPurchaseActivity : AbsExtraFeaturePurchaseActivity(),
private fun getProductDetailsAndFinish() {
executeAfterFragmentResumed {
val weakThis = WeakReference(it as GooglePlayInAppPurchaseActivity)
val dfRef = WeakReference(ProgressDialogFragment.show(it.supportFragmentManager, TAG_PURCHASE_PROCESS))
ProgressDialogFragment.show(it.supportFragmentManager, TAG_PURCHASE_PROCESS)
task {
val activity = weakThis.get() ?: throw PurchaseException(BILLING_RESPONSE_RESULT_USER_CANCELED)
val productId = activity.productId
@ -114,9 +114,9 @@ class GooglePlayInAppPurchaseActivity : AbsExtraFeaturePurchaseActivity(),
weakThis.get()?.handleError(BILLING_RESPONSE_RESULT_ERROR)
}
}.alwaysUi {
weakThis.get()?.executeAfterFragmentResumed {
val fm = weakThis.get()?.supportFragmentManager
val df = dfRef.get() ?: (fm?.findFragmentByTag(TAG_PURCHASE_PROCESS) as? DialogFragment)
weakThis.get()?.executeAfterFragmentResumed { fragment ->
val fm = fragment.supportFragmentManager
val df = fm?.findFragmentByTag(TAG_PURCHASE_PROCESS) as? DialogFragment
df?.dismiss()
}
}

View File

@ -17,7 +17,7 @@ public class MessagesTabConfiguration extends TabConfiguration {
@NonNull
@Override
public StringHolder getName() {
return StringHolder.resource(R.string.direct_messages);
return StringHolder.resource(R.string.title_direct_messages);
}
@NonNull

View File

@ -32,7 +32,7 @@ public class UriUtils {
}
public static Uri appendQueryParameters(final Uri uri, final String key, long value) {
return appendQueryParameters(uri, key, ParseUtils.parseString(value));
return appendQueryParameters(uri, key, String.valueOf(value));
}
public static Uri appendQueryParameters(final Uri uri, final String key, String value) {
@ -42,7 +42,7 @@ public class UriUtils {
}
public static Uri appendQueryParameters(Uri uri, String key, boolean value) {
return appendQueryParameters(uri, key, ParseUtils.parseString(value));
return appendQueryParameters(uri, key, String.valueOf(value));
}
@Nullable

View File

@ -0,0 +1,156 @@
/*
* Twidere - Twitter client for Android
*
* Copyright (C) 2012-2017 Mariotaku Lee <mariotaku.lee@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.mariotaku.twidere.util.media
import android.media.MediaPlayer
import android.media.MediaPlayer.*
/**
* From https://gist.github.com/danielhawkes/1029568
*
* A wrapper class for [android.media.MediaPlayer].
*
* Encapsulates an instance of MediaPlayer, and makes a record of its internal state accessible via a
* [MediaPlayerWrapper.getState] accessor. Most of the frequently used methods are available, but some still
* need adding.
*
*/
class MediaPlayerWrapper(val player: MediaPlayer) {
var state: State = State.IDLE
private set
var onPreparedListener: OnPreparedListener? = null
var onCompletionListener: OnCompletionListener? = null
var onBufferingUpdateListener: OnBufferingUpdateListener? = null
var onErrorListener: OnErrorListener? = null
var onInfoListener: OnInfoListener? = null
init {
player.setOnPreparedListener { mp ->
state = State.PREPARED
onPreparedListener?.onPrepared(mp)
}
player.setOnCompletionListener { mp ->
state = State.PLAYBACK_COMPLETE
onCompletionListener?.onCompletion(mp)
}
player.setOnBufferingUpdateListener { mp, percent ->
onBufferingUpdateListener?.onBufferingUpdate(mp, percent)
}
player.setOnErrorListener { mp, what, extra ->
state = State.ERROR
return@setOnErrorListener onErrorListener?.onError(mp, what, extra) ?: false
}
player.setOnInfoListener { mp, what, extra ->
return@setOnInfoListener onInfoListener?.onInfo(mp, what, extra) ?: false
}
}
fun setDataSource(path: String) {
if (!state.canSetDataSource) throw illegalState()
player.setDataSource(path)
state = State.INITIALIZED
}
fun prepareAsync() {
if (!state.canPrepare) throw illegalState()
player.prepareAsync()
state = State.PREPARING
}
val isPlaying: Boolean
get() = state.canAccessInfo && player.isPlaying
fun seekTo(msec: Int) {
if (!state.canAccessInfo) throw illegalState()
player.seekTo(msec)
}
fun pause() {
if (!state.canPause) throw illegalState()
player.pause()
state = State.PAUSED
throw illegalState()
}
fun start() {
if (!state.canOperate) throw illegalState()
player.start()
state = State.STARTED
}
fun stop() {
if (!state.canOperate) throw illegalState()
player.stop()
state = State.STOPPED
throw illegalState()
}
fun reset() {
player.reset()
state = State.IDLE
}
fun release() {
player.release()
}
fun setVolume(leftVolume: Float, rightVolume: Float) {
if (!state.canOperate) throw illegalState()
player.setVolume(leftVolume, rightVolume)
}
val currentPosition: Int
get() {
if (!state.canAccessInfo) throw illegalState()
return player.currentPosition
}
val duration: Int
get() {
if (!state.canAccessInfo) throw illegalState()
return player.duration
}
private fun illegalState(): Throwable {
throw IllegalStateException("Illegal state $state")
}
/* METHOD WRAPPING FOR STATE CHANGES */
enum class State(
val canPrepare: Boolean = false,
val canOperate: Boolean = false,
val canPause: Boolean = false,
val canAccessInfo: Boolean = false,
val canSetDataSource: Boolean = false
) {
IDLE(canSetDataSource = true),
ERROR(),
INITIALIZED(canPrepare = true),
PREPARING(),
PREPARED(canAccessInfo = true, canOperate = true),
STARTED(canAccessInfo = true, canOperate = true, canPause = true),
STOPPED(canAccessInfo = true, canPrepare = true),
PLAYBACK_COMPLETE(canAccessInfo = true, canOperate = true),
PAUSED(canAccessInfo = true, canOperate = true, canPause = true)
}
}

View File

@ -339,9 +339,6 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowsInsetsCallback, IContro
LINK_ID_MUTES_USERS -> {
setTitle(R.string.action_twitter_muted_users)
}
LINK_ID_MESSAGES_CONVERSATION -> {
setTitle(R.string.direct_messages)
}
LINK_ID_USER_LIST -> {
setTitle(R.string.user_list)
}
@ -413,7 +410,16 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowsInsetsCallback, IContro
title = getString(R.string.scheduled_statuses)
}
LINK_ID_MESSAGES -> {
title = getString(R.string.direct_messages)
title = getString(R.string.title_direct_messages)
}
LINK_ID_MESSAGES_CONVERSATION -> {
title = getString(R.string.title_direct_messages)
}
LINK_ID_MESSAGES_CONVERSATION_NEW -> {
title = getString(R.string.title_direct_messages_conversation_new)
}
LINK_ID_MESSAGES_CONVERSATION_INFO -> {
title = getString(R.string.title_direct_messages_conversation_info)
}
LINK_ID_INTERACTIONS -> {
title = getString(R.string.interactions)

View File

@ -108,7 +108,7 @@ class PremiumDashboardActivity : BaseActivity() {
if (!BuildConfig.DEBUG) {
return true
}
val dfRef = WeakReference(ProgressDialogFragment.show(supportFragmentManager, "consume_purchase_progress"))
ProgressDialogFragment.show(supportFragmentManager, "consume_purchase_progress")
val weakThis = WeakReference(this)
val recreate = AtomicBoolean()
task {
@ -124,7 +124,7 @@ class PremiumDashboardActivity : BaseActivity() {
}.alwaysUi {
weakThis.get()?.executeAfterFragmentResumed {
val fm = weakThis.get()?.supportFragmentManager
val df = dfRef.get() ?: (fm?.findFragmentByTag("consume_purchase_progress") as? DialogFragment)
val df = fm?.findFragmentByTag("consume_purchase_progress") as? DialogFragment
df?.dismiss()
if (recreate.get()) {
weakThis.get()?.recreate()

View File

@ -410,8 +410,7 @@ class SignInActivity : BaseActivity(), OnClickListener, TextWatcher, APIEditorDi
private fun updateDefaultFeatures() {
val weakThis = WeakReference(this)
val weakDf = WeakReference(ProgressDialogFragment.show(supportFragmentManager,
FRAGMENT_TAG_LOADING_DEFAULT_FEATURES))
ProgressDialogFragment.show(supportFragmentManager, FRAGMENT_TAG_LOADING_DEFAULT_FEATURES)
task {
val activity = weakThis.get() ?: return@task
if (activity.isFinishing) return@task
@ -434,7 +433,7 @@ class SignInActivity : BaseActivity(), OnClickListener, TextWatcher, APIEditorDi
if (activity.isFinishing) return@alwaysUi
activity.executeAfterFragmentResumed { activity ->
val fm = activity.supportFragmentManager
val df = weakDf.get() ?: fm.findFragmentByTag(FRAGMENT_TAG_LOADING_DEFAULT_FEATURES) as? DialogFragment
val df = fm.findFragmentByTag(FRAGMENT_TAG_LOADING_DEFAULT_FEATURES) as? DialogFragment
df?.dismiss()
}
}

View File

@ -54,9 +54,9 @@ class TrendsLocationSelectorActivity : BaseActivity() {
if (savedInstanceState != null) return
val weakThis = WeakReference(this)
val weakPd = WeakReference(ProgressDialogFragment.show(supportFragmentManager, PROGRESS_FRAGMENT_TAG).apply {
ProgressDialogFragment.show(supportFragmentManager, PROGRESS_FRAGMENT_TAG).apply {
isCancelable = false
})
}
task {
val activity = weakThis.get() ?: throw InterruptedException()
val twitter = MicroBlogAPIFactory.getInstance(activity, accountKey)
@ -76,7 +76,8 @@ class TrendsLocationSelectorActivity : BaseActivity() {
}.alwaysUi {
val activity = weakThis.get() ?: return@alwaysUi
activity.executeAfterFragmentResumed { activity ->
val df = weakPd.get() ?: activity.supportFragmentManager.findFragmentByTag(PROGRESS_FRAGMENT_TAG) as? DialogFragment
val fm = activity.supportFragmentManager
val df = fm.findFragmentByTag(PROGRESS_FRAGMENT_TAG) as? DialogFragment
df?.dismiss()
}
}

View File

@ -19,6 +19,8 @@
package org.mariotaku.twidere.activity.iface
import android.os.Handler
import android.os.Looper
import android.support.v4.app.FragmentActivity
import java.util.*
@ -33,6 +35,7 @@ interface IExtendedActivity<out A : FragmentActivity> {
private var fragmentResumed: Boolean = false
private val actionQueue = LinkedList<(A) -> Unit>()
private val handler = Handler(Looper.getMainLooper())
fun dispatchOnPause() {
fragmentResumed = false
@ -49,7 +52,10 @@ interface IExtendedActivity<out A : FragmentActivity> {
var action: ((A) -> Unit)?
do {
action = actionQueue.poll()
action?.invoke(activity)
// Sometimes actions called too fast, so we wait for next loop
handler.post {
action?.invoke(activity)
}
} while (action != null)
}

View File

@ -34,7 +34,7 @@ val ParcelableMessageConversation.timestamp: Long
fun ParcelableMessageConversation.getConversationName(context: Context,
manager: UserColorNameManager, nameFirst: Boolean): Pair<String, String?> {
if (conversation_type == ConversationType.ONE_TO_ONE) {
val user = this.user ?: return Pair(context.getString(R.string.direct_messages), null)
val user = this.user ?: return Pair(context.getString(R.string.title_direct_messages), null)
return Pair(user.name, "@${user.screen_name}")
}
if (conversation_name != null) {

View File

@ -67,7 +67,7 @@ class AddStatusFilterDialogFragment : BaseDialogFragment() {
}
}
}
builder.setTitle(R.string.add_to_filter)
builder.setTitle(R.string.action_add_to_filter)
builder.setMultiChoiceItems(entries, null, null)
builder.setPositiveButton(android.R.string.ok) { dialog, which ->
val alertDialog = dialog as AlertDialog

View File

@ -35,7 +35,7 @@ class AddUserFilterDialogFragment : AbsUserMuteBlockDialogFragment() {
}
override fun getTitle(user: ParcelableUser): String {
return getString(R.string.add_to_filter)
return getString(R.string.action_add_to_filter)
}
override fun performUserAction(user: ParcelableUser, filterEverywhere: Boolean) {

View File

@ -21,17 +21,15 @@ package org.mariotaku.twidere.fragment
import android.os.Bundle
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_URI
import org.mariotaku.twidere.util.ParseUtils
open class BrowserFragment : BaseWebViewFragment() {
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
val args = arguments
val uri = args?.get(EXTRA_URI)
val view = webView!!
view.loadUrl(ParseUtils.parseString(uri, "about:blank"))
view.settings.displayZoomControls = false
webView?.loadUrl(arguments?.get(EXTRA_URI)?.toString() ?: "about:blank")
webView?.settings?.apply {
displayZoomControls = false
}
}

View File

@ -90,7 +90,6 @@ import org.mariotaku.microblog.library.twitter.model.Paging
import org.mariotaku.microblog.library.twitter.model.UserList
import org.mariotaku.twidere.Constants.*
import org.mariotaku.twidere.R
import org.mariotaku.twidere.TwidereConstants
import org.mariotaku.twidere.activity.AccountSelectorActivity
import org.mariotaku.twidere.activity.BaseActivity
import org.mariotaku.twidere.activity.ColorPickerDialogActivity
@ -1622,7 +1621,7 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
val userKey = arguments.getParcelable<UserKey>(EXTRA_USER_KEY)
val accountKey = arguments.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
val builder = AlertDialog.Builder(context)
builder.setTitle(R.string.add_or_remove_from_list)
builder.setTitle(R.string.title_add_or_remove_from_list)
val entries = Array(lists.size) { idx ->
lists[idx].name
}

View File

@ -50,9 +50,11 @@ class VideoPageFragment : CacheDownloadMediaViewerFragment(), IBaseFragment<Vide
private val media: ParcelableMedia? get() = arguments.getParcelable<ParcelableMedia>(EXTRA_MEDIA)
private val accountKey: UserKey get() = arguments.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
private var playAudio: Boolean = false
private var mediaPlayer: MediaPlayer? = null
private var mediaPlayerError: Int = 0
private var playAudio: Boolean = false
private var pausedByUser: Boolean = false
private var positionBackup: Int = -1
private var videoProgressRunnable: VideoPlayProgressRunnable? = null
private var mediaDownloadEvent: MediaDownloadEvent? = null
@ -69,14 +71,17 @@ class VideoPageFragment : CacheDownloadMediaViewerFragment(), IBaseFragment<Vide
val am = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
// Play audio by default if ringer mode on
playAudio = !isMutedByDefault && am.ringerMode == AudioManager.RINGER_MODE_NORMAL
videoProgressRunnable = VideoPlayProgressRunnable(handler, videoViewProgress,
durationLabel, positionLabel, videoView)
if (savedInstanceState != null) {
positionBackup = savedInstanceState.getInt(EXTRA_POSITION)
pausedByUser = savedInstanceState.getBoolean(EXTRA_PAUSED_BY_USER)
playAudio = savedInstanceState.getBoolean(EXTRA_PLAY_AUDIO)
} else {
// Play audio by default if ringer mode on
playAudio = !isMutedByDefault && am.ringerMode == AudioManager.RINGER_MODE_NORMAL
}
videoViewOverlay.setOnClickListener(this)
@ -100,10 +105,9 @@ class VideoPageFragment : CacheDownloadMediaViewerFragment(), IBaseFragment<Vide
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
if (!fromUser) return
val mp = mediaPlayer ?: return
val duration = mp.duration
val duration = videoView.duration
if (duration <= 0) return
mp.seekTo(Math.round(duration * (progress.toFloat() / seekBar.max)))
videoView.seekTo(Math.round(duration * (progress.toFloat() / seekBar.max)))
}
override fun onStartTrackingTouch(seekBar: SeekBar) {
@ -123,9 +127,8 @@ class VideoPageFragment : CacheDownloadMediaViewerFragment(), IBaseFragment<Vide
}
override fun onPause() {
mediaPlayer?.let { mp ->
positionBackup = mp.currentPosition
}
positionBackup = videoView.currentPosition
videoView.pause()
super.onPause()
}
@ -147,6 +150,8 @@ class VideoPageFragment : CacheDownloadMediaViewerFragment(), IBaseFragment<Vide
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt(EXTRA_POSITION, positionBackup)
outState.putBoolean(EXTRA_PAUSED_BY_USER, pausedByUser)
outState.putBoolean(EXTRA_PLAY_AUDIO, playAudio)
}
override fun onViewStateRestored(savedInstanceState: Bundle?) {
@ -211,13 +216,15 @@ class VideoPageFragment : CacheDownloadMediaViewerFragment(), IBaseFragment<Vide
if (userVisibleHint) {
mediaPlayer = mp
mediaPlayerError = 0
mp.setScreenOnWhilePlaying(true)
updateVolume()
mp.isLooping = isLoopEnabled
if (mp.duration > 0 && positionBackup > 0) {
mp.seekTo(positionBackup)
}
mp.start()
if (!pausedByUser) {
mp.start()
pausedByUser = false
}
videoViewProgress.visibility = View.VISIBLE
videoViewProgress.post(videoProgressRunnable)
updatePlayerState()
@ -226,7 +233,6 @@ class VideoPageFragment : CacheDownloadMediaViewerFragment(), IBaseFragment<Vide
}
private fun updateVolume() {
volumeButton.setImageResource(if (playAudio) R.drawable.ic_action_speaker_max else R.drawable.ic_action_speaker_muted)
val mp = mediaPlayer ?: return
try {
@ -259,11 +265,12 @@ class VideoPageFragment : CacheDownloadMediaViewerFragment(), IBaseFragment<Vide
updateVolume()
}
R.id.playPauseButton -> {
val mp = mediaPlayer ?: return
if (mp.isPlaying) {
mp.pause()
if (videoView.isPlaying) {
videoView.pause()
pausedByUser = true
} else {
mp.start()
videoView.start()
pausedByUser = false
}
updatePlayerState()
}
@ -344,37 +351,24 @@ class VideoPageFragment : CacheDownloadMediaViewerFragment(), IBaseFragment<Vide
}
private fun updatePlayerState() {
val mp = mediaPlayer
if (mp != null) {
val playing = mp.isPlaying
playPauseButton.contentDescription = getString(if (playing) R.string.pause else R.string.play)
playPauseButton.setImageResource(if (playing) R.drawable.ic_action_pause else R.drawable.ic_action_play_arrow)
} else {
playPauseButton.contentDescription = getString(R.string.play)
playPauseButton.setImageResource(R.drawable.ic_action_play_arrow)
}
val playing = videoView.isPlaying
playPauseButton.contentDescription = getString(if (playing) R.string.pause else R.string.play)
playPauseButton.setImageResource(if (playing) R.drawable.ic_action_pause else R.drawable.ic_action_play_arrow)
}
private fun pauseVideo(): Boolean {
val mp = mediaPlayer ?: return false
var result = false
if (mp.isPlaying) {
mp.pause()
result = true
}
videoView.pause()
updatePlayerState()
return result
return true
}
private fun resumeVideo(): Boolean {
val mp = mediaPlayer ?: return false
var result = false
if (!mp.isPlaying) {
mp.start()
result = true
if (!pausedByUser) {
videoView.start()
pausedByUser = false
}
updatePlayerState()
return result
return true
}
private class VideoPlayProgressRunnable internal constructor(
@ -432,6 +426,8 @@ class VideoPageFragment : CacheDownloadMediaViewerFragment(), IBaseFragment<Vide
const val EXTRA_LOOP = "loop"
const val EXTRA_DISABLE_CONTROL = "disable_control"
const val EXTRA_DEFAULT_MUTE = "default_mute"
private const val EXTRA_PAUSED_BY_USER = "paused_by_user"
private const val EXTRA_PLAY_AUDIO = "play_audio"
private val SUPPORTED_VIDEO_TYPES: Array<String>
private val FALLBACK_VIDEO_TYPES: Array<String> = arrayOf("video/mp4")

View File

@ -7,12 +7,11 @@ import android.os.Bundle
import android.support.v4.app.DialogFragment
import android.support.v4.app.LoaderManager
import android.support.v4.content.Loader
import android.support.v4.util.ArrayMap
import android.support.v7.app.AlertDialog
import android.support.v7.widget.RecyclerView
import android.view.*
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.widget.CheckBox
import android.widget.CompoundButton
import android.widget.TextView
import android.widget.Toast
import nl.komponents.kovenant.task
@ -20,9 +19,7 @@ import nl.komponents.kovenant.ui.alwaysUi
import org.mariotaku.ktextension.*
import org.mariotaku.twidere.R
import org.mariotaku.twidere.activity.BaseActivity
import org.mariotaku.twidere.adapter.LoadMoreSupportAdapter
import org.mariotaku.twidere.adapter.SelectableUsersAdapter
import org.mariotaku.twidere.adapter.iface.IContentAdapter
import org.mariotaku.twidere.adapter.iface.ILoadMoreSupportAdapter
import org.mariotaku.twidere.adapter.iface.ILoadMoreSupportAdapter.IndicatorPosition
import org.mariotaku.twidere.constant.IntentConstants
@ -35,14 +32,8 @@ import org.mariotaku.twidere.fragment.ProgressDialogFragment
import org.mariotaku.twidere.loader.CursorSupportUsersLoader
import org.mariotaku.twidere.loader.iface.IExtendedLoader
import org.mariotaku.twidere.model.ParcelableUser
import org.mariotaku.twidere.model.UserKey
import org.mariotaku.twidere.util.DataStoreUtils
import org.mariotaku.twidere.util.ThemeUtils
import org.mariotaku.twidere.util.support.ViewSupport
import org.mariotaku.twidere.view.holder.LoadIndicatorViewHolder
import org.mariotaku.twidere.view.holder.SimpleUserViewHolder
import java.lang.ref.WeakReference
import kotlin.collections.set
/**
* Created by mariotaku on 2016/12/26.
@ -196,15 +187,15 @@ abstract class BaseFiltersImportFragment : AbsContentListRecyclerViewFragment<Se
return@mapNotNull user
}
selectedUsers.forEach { it.is_filtered = true }
val weakDf = WeakReference(ProgressDialogFragment.show(childFragmentManager, "import_progress"))
ProgressDialogFragment.show(childFragmentManager, "import_progress")
val weakThis = WeakReference(this)
task {
val context = weakThis.get()?.context ?: return@task
DataStoreUtils.addToFilter(context, selectedUsers, filterEverywhere)
}.alwaysUi {
executeAfterFragmentResumed(true) {
val fm = weakThis.get()?.fragmentManager ?: return@executeAfterFragmentResumed
val df = weakDf.get() ?: fm.findFragmentByTag("import_progress") as? DialogFragment
executeAfterFragmentResumed(true) { fragment ->
val fm = fragment.fragmentManager
val df = fm.findFragmentByTag("import_progress") as? DialogFragment
df?.dismiss()
}
weakThis.get()?.adapter?.notifyDataSetChanged()
@ -224,7 +215,7 @@ abstract class BaseFiltersImportFragment : AbsContentListRecyclerViewFragment<Se
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val builder = AlertDialog.Builder(context)
builder.setTitle(R.string.add_to_filter)
builder.setTitle(R.string.action_add_to_filter)
builder.setView(R.layout.dialog_block_mute_filter_user_confirm)
builder.setPositiveButton(android.R.string.ok, this)
builder.setNegativeButton(android.R.string.cancel, null)

View File

@ -134,13 +134,12 @@ class FiltersSubscriptionsFragment : BaseFragment(), LoaderManager.LoaderCallbac
}
R.id.refresh -> {
executeAfterFragmentResumed { fragment ->
val dfRef = WeakReference(ProgressDialogFragment.show(fragment.childFragmentManager,
FRAGMENT_TAG_RREFRESH_FILTERS))
ProgressDialogFragment.show(fragment.childFragmentManager, FRAGMENT_TAG_RREFRESH_FILTERS)
val task = RefreshFiltersSubscriptionsTask(fragment.context)
val fragmentRef = WeakReference(fragment)
task.callback = {
fragmentRef.get()?.executeAfterFragmentResumed { fragment ->
val df = dfRef.get() ?: fragment.childFragmentManager.findFragmentByTag(FRAGMENT_TAG_RREFRESH_FILTERS) as? DialogFragment
val df = fragment.childFragmentManager.findFragmentByTag(FRAGMENT_TAG_RREFRESH_FILTERS) as? DialogFragment
df?.dismiss()
}
}

View File

@ -105,6 +105,7 @@ class MessagesConversationFragment : AbsContentListRecyclerViewFragment<Messages
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
setHasOptionsMenu(true)
val account = this.account ?: run {
activity?.finish()
return
@ -193,6 +194,21 @@ class MessagesConversationFragment : AbsContentListRecyclerViewFragment<Messages
return ConversationLoader(context, accountKey, conversationId)
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.menu_messages_conversation, menu)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.info -> {
val intent = IntentUtils.messageConversationInfo(accountKey, conversationId)
startActivity(intent)
return true
}
}
return false
}
override fun onLoaderReset(loader: Loader<List<ParcelableMessage>?>) {
adapter.setData(null, null)
}

View File

@ -104,7 +104,7 @@ class ExtensionsListLoader(
val packageName: String,
val label: CharSequence,
val description: CharSequence?,
val icon: Drawable,
val icon: Drawable?,
val permissions: Array<String>?,
val settings: String?
) {

View File

@ -150,10 +150,10 @@
<string name="add_account">اضافة حساب</string>
<string name="add_host_mapping">إضافة مضيف رسم الخرائط</string>
<string name="add_image">إضافة صورة</string>
<string name="add_member">إضافة عضو</string>
<string name="add_tab">إضافة لسان</string>
<string name="add_to_filter">إضافة إلى لائحة الكتم</string>
<string name="add_to_list">إضافة إلى القائمة</string>
<string name="action_add_member">إضافة عضو</string>
<string name="action_add_tab">إضافة لسان</string>
<string name="action_add_to_filter">إضافة إلى لائحة الكتم</string>
<string name="action_add_to_list">إضافة إلى القائمة</string>
<string name="added_user_to_list">أُضيف <xliff:g id="user">%1$s</xliff:g> إلى قائمة "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">و <xliff:g id="count">%d</xliff:g> أخرون</string>
<string name="api_url_format">صيغة رابط الAPI</string>
@ -221,7 +221,7 @@
<string name="destroy_status">حذف تغريدة</string>
<string name="destroy_status_confirm_message">هل تريد حذف هذه التغريدة؟</string>
<string name="developed_by">طوّره</string>
<string name="direct_messages">الرسائل</string>
<string name="title_direct_messages">الرسائل</string>
<string name="discard">تجاهل</string>
<string name="display_sensitive_contents">عرض المحتويات الحساسة</string>
<string name="display_sensitive_contents_summary">عرض المحتويات الحساسة دون إشعار في الخط الزمني</string>

View File

@ -177,10 +177,10 @@
<string name="add_account">Amestar cuenta</string>
<string name="add_host_mapping">Amiestu de mapéu d\'agospiu</string>
<string name="add_image">Amestar imaxe</string>
<string name="add_member">Amestar miembros</string>
<string name="add_tab">Amestar llingüeta</string>
<string name="add_to_filter">Amestar a Peñeres</string>
<string name="add_to_list">Amestar al llistáu</string>
<string name="action_add_member">Amestar miembros</string>
<string name="action_add_tab">Amestar llingüeta</string>
<string name="action_add_to_filter">Amestar a Peñeres</string>
<string name="action_add_to_list">Amestar al llistáu</string>
<string name="added_user_to_list">Amestóse a <xliff:g id="user">%1$s</xliff:g> al llistáu «<xliff:g id="list">%2$s</xliff:g>».</string>
<string name="and_N_more">y <xliff:g id="count">%d</xliff:g> más</string>
<string name="api_url_format">Formatu d\'URL d\'API</string>
@ -266,7 +266,7 @@
<string name="destroy_status">Desaniciar tuit</string>
<string name="destroy_status_confirm_message">¿Desaniciar esti tuit?</string>
<string name="developed_by">Desendolcáu por</string>
<string name="direct_messages">Mensaxes</string>
<string name="title_direct_messages">Mensaxes</string>
<string name="discard">Descartar</string>
<string name="display_sensitive_contents">Amosar conteníu sensible</string>
<string name="display_sensitive_contents_summary">Amuesa na llinia temporal conteníos sensibles ensin avisar</string>

View File

@ -152,10 +152,10 @@
<string name="add_account">Afegeix un compte</string>
<string name="add_host_mapping">Afegeix una associació de servidor</string>
<string name="add_image">Afegeix una imatge</string>
<string name="add_member">Afegeix un membre</string>
<string name="add_tab">Afegeix una pestanya</string>
<string name="add_to_filter">Afegeix al filtre</string>
<string name="add_to_list">Afegeix a la llista</string>
<string name="action_add_member">Afegeix un membre</string>
<string name="action_add_tab">Afegeix una pestanya</string>
<string name="action_add_to_filter">Afegeix al filtre</string>
<string name="action_add_to_list">Afegeix a la llista</string>
<string name="added_user_to_list">S\'ha afegit l\'usuari <xliff:g id="user">%1$s</xliff:g> a la llista «<xliff:g id="list">%2$s</xliff:g>».</string>
<string name="and_N_more">i <xliff:g id="count">%d</xliff:g> més</string>
<string name="api_url_format">Format de la URL de l\'API</string>
@ -241,7 +241,7 @@
<string name="destroy_status">Esborra la piulada</string>
<string name="destroy_status_confirm_message">Voleu esborrar aquesta piulada?</string>
<string name="developed_by">Desenvolupat per</string>
<string name="direct_messages">Missatges</string>
<string name="title_direct_messages">Missatges</string>
<string name="direct_messages_next">Següent missatge directe</string>
<string name="discard">Descarta</string>
<string name="display_sensitive_contents">Mostra continguts sensibles</string>

View File

@ -73,11 +73,11 @@
<string name="action_view_map">Mapa</string>
<string name="add_account">Přidat účet</string>
<string name="add_image">Přidat obrázek</string>
<string name="add_member">Přidat člena</string>
<string name="add_or_remove_from_list">Přidat nebo odstranit ze seznamu</string>
<string name="add_tab">Přidat záložku</string>
<string name="add_to_filter">Přidat do filtru</string>
<string name="add_to_list">Přidat do seznamu</string>
<string name="action_add_member">Přidat člena</string>
<string name="title_add_or_remove_from_list">Přidat nebo odstranit ze seznamu</string>
<string name="action_add_tab">Přidat záložku</string>
<string name="action_add_to_filter">Přidat do filtru</string>
<string name="action_add_to_list">Přidat do seznamu</string>
<string name="api_url_format">Formát adresy URL rozhraní API</string>
<string name="app_description">Vaše vlastní Twitter aplikace</string>
<!-- App name, normally you don't need to translate this. -->
@ -122,7 +122,7 @@
<string name="destroy_status">Odstranit tweet</string>
<string name="destroy_status_confirm_message">Odstranit tento tweet?</string>
<string name="developed_by">Vytvořeno</string>
<string name="direct_messages">Zprávy</string>
<string name="title_direct_messages">Zprávy</string>
<string name="discard">Zahodit</string>
<string name="dns_server">DNS Server</string>
<string name="dns_server_summary">Nastavit DNS Server pro síťové požadavky.</string>

View File

@ -77,8 +77,8 @@
<string name="action_view_map">Kort</string>
<string name="add_account">Tilføj konto</string>
<string name="add_image">Tilføj billede</string>
<string name="add_member">Tilføj medlem</string>
<string name="add_tab">Tilføj fane</string>
<string name="action_add_member">Tilføj medlem</string>
<string name="action_add_tab">Tilføj fane</string>
<!-- App name, normally you don't need to translate this. -->
<string name="auth_type_basic">Basik</string>
<string name="auth_type_oauth">OAuth</string>
@ -98,7 +98,7 @@
<string name="count_label_retweets">Retweeter</string>
<string name="default_api_settings">Standard API indstillinger</string>
<string name="default_api_settings_summary">Disse indstillinger gælder kun for brugere der er logget ind fornyeligt</string>
<string name="direct_messages">Beskeder</string>
<string name="title_direct_messages">Beskeder</string>
<string name="discard">Kasser</string>
<string name="edit_api">Redigere API</string>
<string name="edit_tab">Rediger fane</string>

View File

@ -178,11 +178,11 @@
<string name="add_account">Konto hinzufügen</string>
<string name="add_host_mapping">Füge host mapping hinzu</string>
<string name="add_image">Bild hinzufügen</string>
<string name="add_member">Mitglied hinzufügen</string>
<string name="add_or_remove_from_list">Zu Liste hinzufügen oder löschen</string>
<string name="add_tab">Tab hinzufügen</string>
<string name="add_to_filter">Zum Filter hinzufügen</string>
<string name="add_to_list">Zur Liste hinzufügen</string>
<string name="action_add_member">Mitglied hinzufügen</string>
<string name="title_add_or_remove_from_list">Zu Liste hinzufügen oder löschen</string>
<string name="action_add_tab">Tab hinzufügen</string>
<string name="action_add_to_filter">Zum Filter hinzufügen</string>
<string name="action_add_to_list">Zur Liste hinzufügen</string>
<string name="added_user_to_list"><xliff:g id="user">%1$s</xliff:g> wurde zur Liste "<xliff:g id="list">%2$s</xliff:g>\" hinzugefügt.</string>
<string name="and_N_more">und <xliff:g id="count">%d</xliff:g> weitere</string>
<string name="api_url_format">API URL Format</string>
@ -269,7 +269,7 @@
<string name="destroy_status">Tweet löschen</string>
<string name="destroy_status_confirm_message">Diesen Tweet löschen?</string>
<string name="developed_by">Entwickelt von</string>
<string name="direct_messages">Nachrichten</string>
<string name="title_direct_messages">Nachrichten</string>
<string name="direct_messages_next">nächste DM</string>
<string name="discard">Verwerfen</string>
<string name="display_sensitive_contents">Heiklen Inhalt anzeigen</string>

View File

@ -175,11 +175,11 @@
<string name="add_account">Añadir cuenta</string>
<string name="add_host_mapping">Añadir asignación de host</string>
<string name="add_image">Añadir imagen</string>
<string name="add_member">Agregar un miembro</string>
<string name="add_or_remove_from_list">Añadir o eliminar de la lista</string>
<string name="add_tab">Agregar pestaña</string>
<string name="add_to_filter">Añadir a filtros</string>
<string name="add_to_list">Añadir a la lista</string>
<string name="action_add_member">Agregar un miembro</string>
<string name="title_add_or_remove_from_list">Añadir o eliminar de la lista</string>
<string name="action_add_tab">Agregar pestaña</string>
<string name="action_add_to_filter">Añadir a filtros</string>
<string name="action_add_to_list">Añadir a la lista</string>
<string name="added_user_to_list">Agregado <xliff:g id="user">%1$s</xliff:g> a la lista "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">y <xliff:g id="count">%d</xliff:g> más</string>
<string name="api_url_format">Formato URL de la API</string>
@ -265,7 +265,7 @@
<string name="destroy_status">Borrar tweet</string>
<string name="destroy_status_confirm_message">¿Borrar este tweet?</string>
<string name="developed_by">Desarrollado por</string>
<string name="direct_messages">Mensajes</string>
<string name="title_direct_messages">Mensajes</string>
<string name="direct_messages_next">Siguiente MD</string>
<string name="discard">Descartar</string>
<string name="display_sensitive_contents">Mostrar contenido sensible</string>

View File

@ -159,11 +159,11 @@
<string name="add_account">افزودن حساب</string>
<string name="add_host_mapping">افزودن مسیردهی میزبان</string>
<string name="add_image">افزودن تصویر</string>
<string name="add_member">افزودن عضو</string>
<string name="add_or_remove_from_list">افزودن یا برداشتن از فهرست</string>
<string name="add_tab">افزودن برگه</string>
<string name="add_to_filter">افزودن به پالایه</string>
<string name="add_to_list">افزودن به فهرست</string>
<string name="action_add_member">افزودن عضو</string>
<string name="title_add_or_remove_from_list">افزودن یا برداشتن از فهرست</string>
<string name="action_add_tab">افزودن برگه</string>
<string name="action_add_to_filter">افزودن به پالایه</string>
<string name="action_add_to_list">افزودن به فهرست</string>
<string name="added_user_to_list"><xliff:g id="user">%1$s</xliff:g> را به فهرست «<xliff:g id="list">%2$s</xliff:g>» افزود.</string>
<string name="and_N_more">و <xliff:g id="count">%d</xliff:g> بیش‌تر</string>
<string name="api_url_format">قالب نشانی API</string>
@ -249,7 +249,7 @@
<string name="destroy_status">حذف توییت</string>
<string name="destroy_status_confirm_message">این توییت حذف شود؟</string>
<string name="developed_by">توسعه‌یافته توسّط</string>
<string name="direct_messages">پیام‌ها</string>
<string name="title_direct_messages">پیام‌ها</string>
<string name="direct_messages_next">پیام مستقیم بعدی</string>
<string name="discard">دور انداختن</string>
<string name="display_sensitive_contents">نمایش محتوای حسّاسیت‌برانگیز</string>

View File

@ -157,10 +157,10 @@
<string name="add_account">Lisää tili</string>
<string name="add_host_mapping">Lisää host mapping</string>
<string name="add_image">Lisää kuva</string>
<string name="add_member">Lisää jäsen</string>
<string name="add_tab">Lisää välilehti</string>
<string name="add_to_filter">Lisää suodattimeen</string>
<string name="add_to_list">Lisää listaan</string>
<string name="action_add_member">Lisää jäsen</string>
<string name="action_add_tab">Lisää välilehti</string>
<string name="action_add_to_filter">Lisää suodattimeen</string>
<string name="action_add_to_list">Lisää listaan</string>
<string name="added_user_to_list">Lisättiin <xliff:g id="user">%1$s</xliff:g> listalle "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">ja <xliff:g id="count">%d</xliff:g> muuta</string>
<string name="api_url_format">API-URL:n muoto</string>
@ -245,7 +245,7 @@
<string name="destroy_status">Poista twiitti</string>
<string name="destroy_status_confirm_message">Poistetaanko tämä twiitti?</string>
<string name="developed_by">Kehittäjä</string>
<string name="direct_messages">Viestit</string>
<string name="title_direct_messages">Viestit</string>
<string name="direct_messages_next">DM seuraavaksi</string>
<string name="discard">Hylkää</string>
<string name="display_sensitive_contents">Näytä arkaluontoinen materiaali</string>

View File

@ -178,11 +178,11 @@
<string name="add_account">Ajouter un compte</string>
<string name="add_host_mapping">Ajouter un hôte personnalisé</string>
<string name="add_image">Ajouter une image</string>
<string name="add_member">Ajouter un membre</string>
<string name="add_or_remove_from_list">Ajouter ou supprimer de la liste</string>
<string name="add_tab">Ajouter un onglet</string>
<string name="add_to_filter">Ajouter au filtre</string>
<string name="add_to_list">Ajouter à la liste</string>
<string name="action_add_member">Ajouter un membre</string>
<string name="title_add_or_remove_from_list">Ajouter ou supprimer de la liste</string>
<string name="action_add_tab">Ajouter un onglet</string>
<string name="action_add_to_filter">Ajouter au filtre</string>
<string name="action_add_to_list">Ajouter à la liste</string>
<string name="added_user_to_list">Utilisateur <xliff:g id="user">%1$s</xliff:g> ajouté à la liste "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">et encore <xliff:g id="count">%d</xliff:g></string>
<string name="api_url_format">Format de l\'adresse API</string>
@ -269,7 +269,7 @@
<string name="destroy_status">Supprimer ce tweet</string>
<string name="destroy_status_confirm_message">Supprimer ce tweet ?</string>
<string name="developed_by">Développé par</string>
<string name="direct_messages">Messages</string>
<string name="title_direct_messages">Messages</string>
<string name="direct_messages_next">DM suivant</string>
<string name="discard">Supprimer</string>
<string name="display_sensitive_contents">Afficher le contenu qui peut être sensible</string>

View File

@ -153,10 +153,10 @@
<string name="add_account">Engadir conta</string>
<string name="add_host_mapping">Engadir host mapping</string>
<string name="add_image">Engadir imaxe</string>
<string name="add_member">Engadir membro</string>
<string name="add_tab">Engadir tab.</string>
<string name="add_to_filter">Engadir a filtro</string>
<string name="add_to_list">Engadir á lista</string>
<string name="action_add_member">Engadir membro</string>
<string name="action_add_tab">Engadir tab.</string>
<string name="action_add_to_filter">Engadir a filtro</string>
<string name="action_add_to_list">Engadir á lista</string>
<string name="added_user_to_list">Engadiches a <xliff:g id="user">%1$s</xliff:g> á lista "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">e <xliff:g id="count">%d</xliff:g> máis</string>
<string name="api_url_format">Formato URL API</string>
@ -242,7 +242,7 @@
<string name="destroy_status">Eliminar chío</string>
<string name="destroy_status_confirm_message">Eliminar este chío?</string>
<string name="developed_by">Desenrolado por</string>
<string name="direct_messages">Mensaxes</string>
<string name="title_direct_messages">Mensaxes</string>
<string name="direct_messages_next">DM next</string>
<string name="discard">Descartar</string>
<string name="display_sensitive_contents">Amosar contidos sensibles</string>

View File

@ -123,10 +123,10 @@
<string name="add_account">Dodaj račun</string>
<string name="add_host_mapping">Dodaj mapiranje domaćina</string>
<string name="add_image">Dodaj sliku</string>
<string name="add_member">Dodaj člana</string>
<string name="add_tab">Dodaj tab</string>
<string name="add_to_filter">Dodaj u filter</string>
<string name="add_to_list">Dodaj na listu</string>
<string name="action_add_member">Dodaj člana</string>
<string name="action_add_tab">Dodaj tab</string>
<string name="action_add_to_filter">Dodaj u filter</string>
<string name="action_add_to_list">Dodaj na listu</string>
<string name="added_user_to_list">Dodano <xliff:g id="user">%1$s</xliff:g> na listu "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">i <xliff:g id="count">%d</xliff:g> više</string>
<string name="api_url_format">API URL Format</string>
@ -196,7 +196,7 @@
<string name="destroy_status">Obriši tweet</string>
<string name="destroy_status_confirm_message">Obrisati ovaj tweet?</string>
<string name="developed_by">Razvio</string>
<string name="direct_messages">Poruke</string>
<string name="title_direct_messages">Poruke</string>
<string name="discard">Odbaci</string>
<string name="display_sensitive_contents">Prikaži osvjetljive sadržaje</string>
<string name="display_sensitive_contents_summary">Prikaži osjetljive sadržaje bez obavijesti u timelineu</string>

View File

@ -164,10 +164,10 @@
<string name="add_account">Fiók hozzáadása</string>
<string name="add_host_mapping">Host hozzárendelés hozzáadása</string>
<string name="add_image">Kép hozzáadása</string>
<string name="add_member">Tag hozzáadása</string>
<string name="add_tab">Fül hozzáadása</string>
<string name="add_to_filter">Hozzáadás a szűrőhöz</string>
<string name="add_to_list">Hozzáadás a listához</string>
<string name="action_add_member">Tag hozzáadása</string>
<string name="action_add_tab">Fül hozzáadása</string>
<string name="action_add_to_filter">Hozzáadás a szűrőhöz</string>
<string name="action_add_to_list">Hozzáadás a listához</string>
<string name="added_user_to_list"><xliff:g id="user">%1$s</xliff:g> hozzáadva a listához: "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">és még <xliff:g id="count">%d</xliff:g> elem</string>
<string name="api_url_format">API URL formátum</string>
@ -252,7 +252,7 @@
<string name="destroy_status">Tweet törlése</string>
<string name="destroy_status_confirm_message">Ennek a tweetnek a törlése?</string>
<string name="developed_by">Fejlesztő:</string>
<string name="direct_messages">Üzenetek</string>
<string name="title_direct_messages">Üzenetek</string>
<string name="discard">Elvetés</string>
<string name="display_sensitive_contents">Érzékeny információk megjelenítése</string>
<string name="display_sensitive_contents_summary">Érzékeny információk megjelenítése a kezdőlapon figyelmeztetés nélkül</string>

View File

@ -171,11 +171,11 @@
<string name="add_account">Tambah akun</string>
<string name="add_host_mapping">Tambah pemetaan host</string>
<string name="add_image">Tambahkan gambar</string>
<string name="add_member">Tambah Anggota</string>
<string name="add_or_remove_from_list">Tambah atau hapus dari daftar</string>
<string name="add_tab">Tambah tab</string>
<string name="add_to_filter">Tambahkan ke penyaringan</string>
<string name="add_to_list">Masukkan ke daftar</string>
<string name="action_add_member">Tambah Anggota</string>
<string name="title_add_or_remove_from_list">Tambah atau hapus dari daftar</string>
<string name="action_add_tab">Tambah tab</string>
<string name="action_add_to_filter">Tambahkan ke penyaringan</string>
<string name="action_add_to_list">Masukkan ke daftar</string>
<string name="added_user_to_list">Menambahkan <xliff:g id="user">%1$s</xliff:g> ke daftar "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">dan <xliff:g id="count">%d</xliff:g> lebih lagi</string>
<string name="api_url_format">Format URL API</string>
@ -261,7 +261,7 @@
<string name="destroy_status">Hapus tweet</string>
<string name="destroy_status_confirm_message">Hapus tweet ini?</string>
<string name="developed_by">Dikelola oleh</string>
<string name="direct_messages">Pesan</string>
<string name="title_direct_messages">Pesan</string>
<string name="direct_messages_next">DM selanjutnya</string>
<string name="discard">Buang</string>
<string name="display_sensitive_contents">Tampilkan konten yang sensitif.</string>

View File

@ -152,11 +152,11 @@
<string name="add_account">Aggiungi account</string>
<string name="add_host_mapping">Aggiungi mappatura host</string>
<string name="add_image">Aggiungi immagine</string>
<string name="add_member">Aggiungi iscritto</string>
<string name="add_or_remove_from_list">Aggiungi o rimuovi dalla lista</string>
<string name="add_tab">Aggiungi tab</string>
<string name="add_to_filter">Aggiungi a filtro</string>
<string name="add_to_list">Aggiungi alla lista</string>
<string name="action_add_member">Aggiungi iscritto</string>
<string name="title_add_or_remove_from_list">Aggiungi o rimuovi dalla lista</string>
<string name="action_add_tab">Aggiungi tab</string>
<string name="action_add_to_filter">Aggiungi a filtro</string>
<string name="action_add_to_list">Aggiungi alla lista</string>
<string name="added_user_to_list">Aggiunto <xliff:g id="user">%1$s</xliff:g> alla lista "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">e altri <xliff:g id="count">%d</xliff:g></string>
<string name="api_url_format">Formato API URL</string>
@ -241,7 +241,7 @@
<string name="destroy_status">Elimina tweet</string>
<string name="destroy_status_confirm_message">Eliminare questo tweet?</string>
<string name="developed_by">Sviluppato da</string>
<string name="direct_messages">Messaggi</string>
<string name="title_direct_messages">Messaggi</string>
<string name="direct_messages_next">DM successivo</string>
<string name="discard">Scarta</string>
<string name="display_sensitive_contents">Mostra contenuti sensibili</string>

View File

@ -107,9 +107,9 @@
<string name="activity_joined_twitter_multi"><xliff:g id="user">%1$s</xliff:g> ו-<xliff:g id="other">%2$s</xliff:g> הצטרפו לטוויטר.</string>
<string name="add_account">הוסף חשבון</string>
<string name="add_image">הוסף תמונה</string>
<string name="add_member">הוסף משתמש</string>
<string name="add_tab">הוסף כרטיסייה</string>
<string name="add_to_list">הוסף לרשימה</string>
<string name="action_add_member">הוסף משתמש</string>
<string name="action_add_tab">הוסף כרטיסייה</string>
<string name="action_add_to_list">הוסף לרשימה</string>
<string name="added_user_to_list">המשתמש <xliff:g id="user">%1$s</xliff:g> נוסף לרשימה "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">ועוד <xliff:g id="count">%d</xliff:g></string>
<string name="api_url_format">פורמט URL של הAPI</string>
@ -154,7 +154,7 @@
<string name="destroy_status">מחק ציוץ</string>
<string name="destroy_status_confirm_message">האם למחוק את הציוץ הזה?</string>
<string name="developed_by">פותח ע\"י</string>
<string name="direct_messages">הודעות</string>
<string name="title_direct_messages">הודעות</string>
<string name="display_sensitive_contents">הצג תוכן רגיש</string>
<string name="display_sensitive_contents_summary">הצג תוכן רגיש ללא הודעה מוקדמת בציר הזמן</string>
<string name="dns_server">שרת DNS</string>

View File

@ -178,11 +178,11 @@
<string name="add_account">アカウントを追加</string>
<string name="add_host_mapping">ホストマッピングを追加</string>
<string name="add_image">画像を追加</string>
<string name="add_member">ユーザーを追加</string>
<string name="add_or_remove_from_list">リストから追加または削除する</string>
<string name="add_tab">タブを追加</string>
<string name="add_to_filter">フィルタに追加</string>
<string name="add_to_list">リストに追加</string>
<string name="action_add_member">ユーザーを追加</string>
<string name="title_add_or_remove_from_list">リストから追加または削除する</string>
<string name="action_add_tab">タブを追加</string>
<string name="action_add_to_filter">フィルタに追加</string>
<string name="action_add_to_list">リストに追加</string>
<string name="added_user_to_list"><xliff:g id="user">%1$s</xliff:g>さんをリスト"<xliff:g id="list">%2$s</xliff:g>\"に追加しました。</string>
<string name="and_N_more"><xliff:g id="count">%d</xliff:g></string>
<string name="api_url_format">API URL の形式</string>
@ -269,7 +269,7 @@
<string name="destroy_status">ツイートの削除</string>
<string name="destroy_status_confirm_message">このツイートを削除しますか?</string>
<string name="developed_by">開発者</string>
<string name="direct_messages">メッセージ</string>
<string name="title_direct_messages">メッセージ</string>
<string name="direct_messages_next">DM next</string>
<string name="discard">破棄</string>
<string name="display_sensitive_contents">不適切な内容を表示</string>

View File

@ -152,10 +152,10 @@
<string name="add_account">계정 추가</string>
<string name="add_host_mapping">호스트 매핑 추가</string>
<string name="add_image">이미지 추가</string>
<string name="add_member">멤버 추가</string>
<string name="add_tab">탭 추가</string>
<string name="add_to_filter">필터에 추가</string>
<string name="add_to_list">리스트에 추가</string>
<string name="action_add_member">멤버 추가</string>
<string name="action_add_tab">탭 추가</string>
<string name="action_add_to_filter">필터에 추가</string>
<string name="action_add_to_list">리스트에 추가</string>
<string name="added_user_to_list"><xliff:g id="user">%1$s</xliff:g>님을 "<xliff:g id="list">%2$s</xliff:g>\" 리스트에 추가하였습니다.</string>
<string name="and_N_more"><xliff:g id="count">%d</xliff:g>개 이상</string>
<string name="api_url_format">API 주소 형식</string>
@ -242,7 +242,7 @@
<string name="destroy_status">트윗 지우기</string>
<string name="destroy_status_confirm_message">이 트윗을 지울까요?</string>
<string name="developed_by">개발자</string>
<string name="direct_messages">쪽지</string>
<string name="title_direct_messages">쪽지</string>
<string name="discard">지우기</string>
<string name="display_sensitive_contents">민감한 콘텐츠 표시</string>
<string name="display_sensitive_contents_summary">타임라인에서 경고 없이 민감한 콘텐츠 표시</string>

View File

@ -58,7 +58,7 @@
<!-- [noun] Count label for retweets, e.g. (N retweets)-->
<string name="default_account">Akaun lalai</string>
<string name="default_ringtone">Nada dering lalai</string>
<string name="direct_messages">Mesej</string>
<string name="title_direct_messages">Mesej</string>
<string name="edit_api">Olah API</string>
<string name="edit_tab">Sunting tab</string>
<string name="error_message">Ralat: <xliff:g id="message">%s</xliff:g></string>

View File

@ -153,11 +153,11 @@
<string name="add_account">Account toevoegen</string>
<string name="add_host_mapping">Voeg host toewijzing toe</string>
<string name="add_image">Afbeelding toevoegen</string>
<string name="add_member">Voeg lid toe</string>
<string name="add_or_remove_from_list">Toevoegen of verwijderen uit lijst</string>
<string name="add_tab">Voeg een tabblad toe</string>
<string name="add_to_filter">Voeg toe aan filter</string>
<string name="add_to_list">Toevoegen aan lijst</string>
<string name="action_add_member">Voeg lid toe</string>
<string name="title_add_or_remove_from_list">Toevoegen of verwijderen uit lijst</string>
<string name="action_add_tab">Voeg een tabblad toe</string>
<string name="action_add_to_filter">Voeg toe aan filter</string>
<string name="action_add_to_list">Toevoegen aan lijst</string>
<string name="added_user_to_list"><xliff:g id="user">%1$s</xliff:g> toegevoegd aan lijst \'\'<xliff:g id="list">%2$s</xliff:g>\'\'.</string>
<string name="and_N_more">en <xliff:g id="count">%d</xliff:g> meer</string>
<string name="api_url_format">API URL-formaat</string>
@ -241,7 +241,7 @@
<string name="destroy_status">Tweet verwijderen</string>
<string name="destroy_status_confirm_message">Deze tweet verwijderen?</string>
<string name="developed_by">Ontworpen door</string>
<string name="direct_messages">Berichten</string>
<string name="title_direct_messages">Berichten</string>
<string name="direct_messages_next">Volgende DM</string>
<string name="discard">Verwerp</string>
<string name="display_sensitive_contents">Toon gevoelige inhoud</string>

View File

@ -139,10 +139,10 @@
<string name="add_account">Legg til konto</string>
<string name="add_host_mapping">Legg til vertskobling</string>
<string name="add_image">Legg til bilde</string>
<string name="add_member">Legg til medlem</string>
<string name="add_tab">Legg til fane</string>
<string name="add_to_filter">Legg til filter</string>
<string name="add_to_list">Legg til listen</string>
<string name="action_add_member">Legg til medlem</string>
<string name="action_add_tab">Legg til fane</string>
<string name="action_add_to_filter">Legg til filter</string>
<string name="action_add_to_list">Legg til listen</string>
<string name="added_user_to_list">La <xliff:g id="user">%1$s</xliff:g> til listen «<xliff:g id="list">%2$s</xliff:g>».</string>
<string name="and_N_more">og <xliff:g id="count">%d</xliff:g> flere</string>
<string name="api_url_format">API-URL-format</string>
@ -221,7 +221,7 @@
<string name="destroy_status">Slett tweet</string>
<string name="destroy_status_confirm_message">Slette denne tweeten?</string>
<string name="developed_by">Utviklet av</string>
<string name="direct_messages">Meldinger</string>
<string name="title_direct_messages">Meldinger</string>
<string name="discard">Forkast</string>
<string name="display_sensitive_contents">Vis sensitivt innhold</string>
<string name="display_sensitive_contents_summary">Vis sensitivt innhold i tidslinjen uten forvarsel</string>

View File

@ -109,10 +109,10 @@
<string name="add_account">Dodaj konto</string>
<string name="add_host_mapping">Dodaj mapowanie hosta</string>
<string name="add_image">Dodaj obraz</string>
<string name="add_member">Dodaj członka</string>
<string name="add_tab">Dodaj zakładkę</string>
<string name="add_to_filter">Dodaj do filtra</string>
<string name="add_to_list">Dodaj do listy</string>
<string name="action_add_member">Dodaj członka</string>
<string name="action_add_tab">Dodaj zakładkę</string>
<string name="action_add_to_filter">Dodaj do filtra</string>
<string name="action_add_to_list">Dodaj do listy</string>
<string name="added_user_to_list">Dodano <xliff:g id="user">%1$s</xliff:g> do listy "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">oraz <xliff:g id="count">%d</xliff:g> więcej</string>
<string name="api_url_format">Format API URL</string>
@ -176,7 +176,7 @@
<string name="destroy_status">Usuń tweet</string>
<string name="destroy_status_confirm_message">Usunąć ten tweet?</string>
<string name="developed_by">Rozwijana przez</string>
<string name="direct_messages">Wiadomości</string>
<string name="title_direct_messages">Wiadomości</string>
<string name="discard">Zrezygnuj</string>
<string name="display_sensitive_contents">Wyświetlaj wrażliwą zawartość</string>
<string name="display_sensitive_contents_summary">Wyświetlaj wrażliwą zawartość bez powiadomienia w strumieniu</string>

View File

@ -159,10 +159,10 @@
<string name="add_account">Adicionar uma conta</string>
<string name="add_host_mapping">Adicionar mapeamento de hosts</string>
<string name="add_image">Adicionar imagem</string>
<string name="add_member">Adicionar membro</string>
<string name="add_tab">Adicionar aba</string>
<string name="add_to_filter">Adicionar filtro</string>
<string name="add_to_list">Adicionar à lista</string>
<string name="action_add_member">Adicionar membro</string>
<string name="action_add_tab">Adicionar aba</string>
<string name="action_add_to_filter">Adicionar filtro</string>
<string name="action_add_to_list">Adicionar à lista</string>
<string name="added_user_to_list"><xliff:g id="user">%1$s</xliff:g> foi adicionado à lista "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">e <xliff:g id="count">%d</xliff:g> mais</string>
<string name="api_url_format">Formato da URL da API</string>
@ -248,7 +248,7 @@
<string name="destroy_status">Excluir tweet</string>
<string name="destroy_status_confirm_message">Excluir este tweet?</string>
<string name="developed_by">Desenvolvido por</string>
<string name="direct_messages">Mensagens</string>
<string name="title_direct_messages">Mensagens</string>
<string name="discard">Descartar</string>
<string name="display_sensitive_contents">Exibir conteúdos sensíveis</string>
<string name="display_sensitive_contents_summary">Exibir conteúdo sensível sem avisar</string>

View File

@ -173,11 +173,11 @@
<string name="add_account">Добавить учетную запись</string>
<string name="add_host_mapping">Добавить перенаправление узлов</string>
<string name="add_image">Добавить изображение</string>
<string name="add_member">Добавить пользователя</string>
<string name="add_or_remove_from_list">Добавить или удалить из списка</string>
<string name="add_tab">Добавить вкладку</string>
<string name="add_to_filter">Добавить в фильтр</string>
<string name="add_to_list">Добавить в список</string>
<string name="action_add_member">Добавить пользователя</string>
<string name="title_add_or_remove_from_list">Добавить или удалить из списка</string>
<string name="action_add_tab">Добавить вкладку</string>
<string name="action_add_to_filter">Добавить в фильтр</string>
<string name="action_add_to_list">Добавить в список</string>
<string name="added_user_to_list">Добавлен <xliff:g id="user">%1$s</xliff:g> в список "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">и еще <xliff:g id="count">%d</xliff:g></string>
<string name="api_url_format">Формат API URL</string>
@ -263,7 +263,7 @@
<string name="destroy_status">Удалить твит</string>
<string name="destroy_status_confirm_message">Удалить этот твит?</string>
<string name="developed_by">Разработано</string>
<string name="direct_messages">Сообщения</string>
<string name="title_direct_messages">Сообщения</string>
<string name="direct_messages_next">Следующая DM</string>
<string name="discard">Отменить</string>
<string name="display_sensitive_contents">Показывать особый контент</string>

View File

@ -139,10 +139,10 @@
<string name="add_account">Lägg till konto</string>
<string name="add_host_mapping">Lägg till värdmappning</string>
<string name="add_image">Lägg till bild</string>
<string name="add_member">Lägg till medlem</string>
<string name="add_tab">Lägg till flik</string>
<string name="add_to_filter">Lägg till i filter</string>
<string name="add_to_list">Lägg till i listan</string>
<string name="action_add_member">Lägg till medlem</string>
<string name="action_add_tab">Lägg till flik</string>
<string name="action_add_to_filter">Lägg till i filter</string>
<string name="action_add_to_list">Lägg till i listan</string>
<string name="and_N_more">och <xliff:g id="count">%d</xliff:g> mer</string>
<string name="api_url_format">API URL-format</string>
<string name="app_description">Din egna Twitter-app</string>
@ -182,7 +182,7 @@
<string name="destroy_saved_search_confirm_message">Ta bort den sparade sökningen \"<xliff:g id="name">%s</xliff:g>\"? Du kan spara den här sökningen på nytt senare.</string>
<string name="destroy_status">Ta bort tweet</string>
<string name="destroy_status_confirm_message">Ta bort det här tweetet?</string>
<string name="direct_messages">Meddelande</string>
<string name="title_direct_messages">Meddelande</string>
<string name="discard">Avbryt</string>
<string name="display_sensitive_contents">Visa känsligt innehåll</string>
<string name="display_sensitive_contents_summary">Visa känsligt innehåll utan notis i tidslinjen</string>

View File

@ -155,11 +155,11 @@
<string name="add_account">เพิ่มบัญชี</string>
<string name="add_host_mapping">เพิ่มการกำหนดโฮสต์</string>
<string name="add_image">เพิ่มรูปภาพ</string>
<string name="add_member">เพิ่มสมาชิก</string>
<string name="add_or_remove_from_list">เพิ่มหรือลบออกจากรายการ</string>
<string name="add_tab">เพิ่มแถบ</string>
<string name="add_to_filter">เพิ่มไปยังตัวกรอง</string>
<string name="add_to_list">เพิ่มไปยังรายการ</string>
<string name="action_add_member">เพิ่มสมาชิก</string>
<string name="title_add_or_remove_from_list">เพิ่มหรือลบออกจากรายการ</string>
<string name="action_add_tab">เพิ่มแถบ</string>
<string name="action_add_to_filter">เพิ่มไปยังตัวกรอง</string>
<string name="action_add_to_list">เพิ่มไปยังรายการ</string>
<string name="added_user_to_list">เพิ่ม <xliff:g id="user">%1$s</xliff:g> เข้าสู่ลิสต์ <xliff:g id="list">%2$s</xliff:g> แล้ว</string>
<string name="and_N_more">และอีก <xliff:g id="count">%d</xliff:g></string>
<string name="api_url_format">รูปแบบ URL ของ API</string>
@ -245,7 +245,7 @@
<string name="destroy_status">ลบทวีต</string>
<string name="destroy_status_confirm_message">ลบทวีตนี้หรือไม่</string>
<string name="developed_by">พัฒนาโดย</string>
<string name="direct_messages">ข้อความส่วนตัว</string>
<string name="title_direct_messages">ข้อความส่วนตัว</string>
<string name="direct_messages_next">ข้อความถัดไป</string>
<string name="discard">โยนทิ้ง</string>
<string name="display_sensitive_contents">แสดงเนื้อหาที่อ่อนไหว</string>

View File

@ -154,11 +154,11 @@
<string name="add_account">Hesap ekle</string>
<string name="add_host_mapping">Sunucu haritalama ekle</string>
<string name="add_image">Resim ekle</string>
<string name="add_member">Üye ekle</string>
<string name="add_or_remove_from_list">Listeye ekle veya sil</string>
<string name="add_tab">Sekme ekle</string>
<string name="add_to_filter">Filtre ekle</string>
<string name="add_to_list">Listeye ekle</string>
<string name="action_add_member">Üye ekle</string>
<string name="title_add_or_remove_from_list">Listeye ekle veya sil</string>
<string name="action_add_tab">Sekme ekle</string>
<string name="action_add_to_filter">Filtre ekle</string>
<string name="action_add_to_list">Listeye ekle</string>
<string name="added_user_to_list"><xliff:g id="user">%1$s</xliff:g> listeye eklendi "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">ve <xliff:g id="count">%d</xliff:g> daha</string>
<string name="api_url_format">API URL Format</string>
@ -244,7 +244,7 @@
<string name="destroy_status">Tweeti sil</string>
<string name="destroy_status_confirm_message">Bu tweeti sil?</string>
<string name="developed_by">Tarafından geliştirildi</string>
<string name="direct_messages">Mesajlar</string>
<string name="title_direct_messages">Mesajlar</string>
<string name="direct_messages_next">sonraki DM</string>
<string name="discard">Yoksay</string>
<string name="display_sensitive_contents">Hassas içeriği görüntüle</string>

View File

@ -155,11 +155,11 @@
<string name="add_account">Додати профіль</string>
<string name="add_host_mapping">Додати перенаправлення вузлів</string>
<string name="add_image">Додати зображення</string>
<string name="add_member">Додати користувача</string>
<string name="add_or_remove_from_list">Додати або вилучити зі списку</string>
<string name="add_tab">Додати вкладку</string>
<string name="add_to_filter">Додати до фільтру</string>
<string name="add_to_list">Додати до списку</string>
<string name="action_add_member">Додати користувача</string>
<string name="title_add_or_remove_from_list">Додати або вилучити зі списку</string>
<string name="action_add_tab">Додати вкладку</string>
<string name="action_add_to_filter">Додати до фільтру</string>
<string name="action_add_to_list">Додати до списку</string>
<string name="added_user_to_list">Додано <xliff:g id="user">%1$s</xliff:g> до списку "<xliff:g id="list">%2$s</xliff:g>\".</string>
<string name="and_N_more">і ще <xliff:g id="count">%d</xliff:g></string>
<string name="api_url_format">Формат API URL</string>
@ -245,7 +245,7 @@
<string name="destroy_status">Видалення твіту</string>
<string name="destroy_status_confirm_message">Видалити цей твіт?</string>
<string name="developed_by">Розробник</string>
<string name="direct_messages">Повідомлення</string>
<string name="title_direct_messages">Повідомлення</string>
<string name="direct_messages_next">наступне ПП</string>
<string name="discard">Скасувати</string>
<string name="display_sensitive_contents">Завжди показувати делікатний вміст</string>

View File

@ -178,11 +178,11 @@
<string name="add_account">添加帐号</string>
<string name="add_host_mapping">添加主机名映射</string>
<string name="add_image">添加图片</string>
<string name="add_member">添加成员</string>
<string name="add_or_remove_from_list">从列表中添加或删除</string>
<string name="add_tab">添加标签页</string>
<string name="add_to_filter">添加到过滤器</string>
<string name="add_to_list">添加到列表</string>
<string name="action_add_member">添加成员</string>
<string name="title_add_or_remove_from_list">从列表中添加或删除</string>
<string name="action_add_tab">添加标签页</string>
<string name="action_add_to_filter">添加到过滤器</string>
<string name="action_add_to_list">添加到列表</string>
<string name="added_user_to_list"><xliff:g id="user">%1$s</xliff:g> 被添加到了列表 “<xliff:g id="list">%2$s</xliff:g></string>
<string name="and_N_more">和其他 <xliff:g id="count">%d</xliff:g></string>
<string name="api_url_format">API URL 格式</string>
@ -269,7 +269,7 @@
<string name="destroy_status">删除推文</string>
<string name="destroy_status_confirm_message">删除这条推文吗?</string>
<string name="developed_by">开发者</string>
<string name="direct_messages">私信</string>
<string name="title_direct_messages">私信</string>
<string name="direct_messages_next">DM next</string>
<string name="discard">舍弃</string>
<string name="display_sensitive_contents">显示敏感内容</string>

View File

@ -178,11 +178,11 @@
<string name="add_account">新增帳號</string>
<string name="add_host_mapping">新增主機名對應</string>
<string name="add_image">新增圖片</string>
<string name="add_member">新增成員</string>
<string name="add_or_remove_from_list">從列表新增或移除</string>
<string name="add_tab">新增標籤頁</string>
<string name="add_to_filter">新增到過濾器</string>
<string name="add_to_list">新增到列表</string>
<string name="action_add_member">新增成員</string>
<string name="title_add_or_remove_from_list">從列表新增或移除</string>
<string name="action_add_tab">新增標籤頁</string>
<string name="action_add_to_filter">新增到過濾器</string>
<string name="action_add_to_list">新增到列表</string>
<string name="added_user_to_list"><xliff:g id="user">%1$s</xliff:g> 被新增到了 "<xliff:g id="list">%2$s</xliff:g>\" 列表</string>
<string name="and_N_more">和其他<xliff:g id="count">%d</xliff:g></string>
<string name="api_url_format">API URL 格式</string>
@ -268,7 +268,7 @@
<string name="destroy_status">刪除推文</string>
<string name="destroy_status_confirm_message">刪除這條推文嗎?</string>
<string name="developed_by">開發者</string>
<string name="direct_messages">私信</string>
<string name="title_direct_messages">私信</string>
<string name="direct_messages_next">下一則私訊</string>
<string name="discard">捨棄</string>
<string name="display_sensitive_contents">顯示敏感內容</string>

View File

@ -178,11 +178,11 @@
<string name="add_account">新增帳號</string>
<string name="add_host_mapping">新增主機名對應</string>
<string name="add_image">新增圖片</string>
<string name="add_member">新增成員</string>
<string name="add_or_remove_from_list">從列表新增或移除</string>
<string name="add_tab">新增標籤頁</string>
<string name="add_to_filter">新增到過濾器</string>
<string name="add_to_list">新增到列表</string>
<string name="action_add_member">新增成員</string>
<string name="title_add_or_remove_from_list">從列表新增或移除</string>
<string name="action_add_tab">新增標籤頁</string>
<string name="action_add_to_filter">新增到過濾器</string>
<string name="action_add_to_list">新增到列表</string>
<string name="added_user_to_list"><xliff:g id="user">%1$s</xliff:g> 被新增到了 "<xliff:g id="list">%2$s</xliff:g>\" 列表</string>
<string name="and_N_more">和其他<xliff:g id="count">%d</xliff:g></string>
<string name="api_url_format">API URL 格式</string>
@ -268,7 +268,7 @@
<string name="destroy_status">刪除推文</string>
<string name="destroy_status_confirm_message">刪除這條推文嗎?</string>
<string name="developed_by">開發者</string>
<string name="direct_messages">私信</string>
<string name="title_direct_messages">私信</string>
<string name="direct_messages_next">下一則私訊</string>
<string name="discard">捨棄</string>
<string name="display_sensitive_contents">顯示敏感內容</string>

View File

@ -17,12 +17,12 @@
android:id="@+id/mute_submenu"
android:icon="@drawable/ic_action_speaker_muted"
app:showAsAction="ifRoom"
android:title="@string/add_to_filter">
android:title="@string/action_add_to_filter">
<menu>
<item
android:id="@id/mute_user"
android:icon="@drawable/ic_action_speaker_muted"
android:title="@string/add_to_filter"/>
android:title="@string/action_add_to_filter"/>
<item
android:icon="@drawable/ic_action_cancel"
android:title="@android:string/cancel"/>

View File

@ -17,7 +17,7 @@
<item
android:id="@id/add_to_filter"
android:icon="@drawable/ic_action_speaker_muted"
android:title="@string/add_to_filter"/>
android:title="@string/action_add_to_filter"/>
<item
android:id="@+id/mute_users"
android:enabled="@bool/debug"

View File

@ -4,7 +4,7 @@
<item
android:id="@id/add"
android:icon="@drawable/ic_action_add"
android:title="@string/add_member"/>
android:title="@string/action_add_member"/>
<item
android:id="@id/delete"
android:icon="@drawable/ic_action_delete"

View File

@ -14,7 +14,7 @@
<item
android:id="@id/messages"
android:icon="@drawable/ic_action_message"
android:title="@string/direct_messages"/>
android:title="@string/title_direct_messages"/>
<item
android:id="@id/favorites"
android:enabled="false"

View File

@ -6,7 +6,7 @@
<item
android:id="@+id/add_submenu"
android:icon="@drawable/ic_action_add"
android:title="@string/add_tab"
android:title="@string/action_add_tab"
app:showAsAction="always">
<menu/>
</item>

View File

@ -32,7 +32,7 @@
<item
android:id="@id/add_to_filter"
android:icon="@drawable/ic_action_speaker_muted"
android:title="@string/add_to_filter"/>
android:title="@string/action_add_to_filter"/>
<item
android:id="@+id/mute_users"
android:enabled="@bool/debug"

View File

@ -18,6 +18,11 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<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/info"
android:icon="@drawable/ic_action_info"
android:title="@string/action_conversation_info"
app:showAsAction="always"/>
</menu>

View File

@ -22,7 +22,7 @@
<item
android:id="@id/add"
android:icon="@drawable/ic_action_add"
android:title="@string/add_member" />
android:title="@string/action_add_member" />
<item
android:id="@id/delete"
android:icon="@drawable/ic_action_delete"

View File

@ -15,7 +15,7 @@
<item
android:id="@id/add_to_list"
android:icon="@drawable/ic_action_add_to_list"
android:title="@string/add_to_list"/>
android:title="@string/action_add_to_list"/>
<item
android:id="@id/set_color"
android:icon="@drawable/ic_action_color_palette"
@ -51,7 +51,7 @@
android:id="@id/add_to_filter"
android:checkable="true"
android:icon="@drawable/ic_action_speaker_muted"
android:title="@string/add_to_filter"/>
android:title="@string/action_add_to_filter"/>
<item
android:id="@id/mute_user"
android:checkable="true"

View File

@ -15,6 +15,10 @@
<!-- [verb] Add mute filter rule -->
<string name="action_add_filter_rule">Add rule</string>
<string name="action_add_filters_subscription">Add subscription</string>
<string name="action_add_member">Add member</string>
<string name="action_add_tab">Add tab</string>
<string name="action_add_to_filter">Add to filter</string>
<string name="action_add_to_list">Add to list</string>
<string name="action_adding_member">adding member</string>
<!-- [verb] Action for blocking user -->
<string name="action_block">Block</string>
@ -25,6 +29,7 @@
<string name="action_center">Center</string>
<string name="action_clear">Clear</string>
<string name="action_compose">Compose</string>
<string name="action_conversation_info">Conversation info</string>
<string name="action_create_conversation">Create conversation</string>
<string name="action_creating_list">creating list</string>
<!-- [verb] Action for deleting a file or a twitter object like tweet-->
@ -187,11 +192,6 @@
<string name="add_account">Add account</string>
<string name="add_host_mapping">Add host mapping</string>
<string name="add_image">Add image</string>
<string name="add_member">Add member</string>
<string name="add_or_remove_from_list">Add or remove from list</string>
<string name="add_tab">Add tab</string>
<string name="add_to_filter">Add to filter</string>
<string name="add_to_list">Add to list</string>
<string name="added_user_to_list">Added <xliff:g id="user">%1$s</xliff:g> to list \"<xliff:g id="list">%2$s</xliff:g>\".</string>
@ -223,8 +223,6 @@
<string name="block_user_confirm_message">Block <xliff:g example="Username" id="name">%s</xliff:g>? This user won\'t be able to follow you, mention you or send you direct messages.</string>
<string name="both">Both</string>
<string name="bug_reports">Bug reports</string>
<string name="bug_reports_summary">Powered by Fabric</string>
@ -325,9 +323,6 @@
<string name="developed_by">Developed by</string>
<string name="direct_messages">Messages</string>
<string name="direct_messages_next">DM next</string>
<string name="discard">Discard</string>
<string name="display_sensitive_contents">Display sensitive contents</string>
@ -717,6 +712,9 @@
<string name="notification_ringtone">Ringtone</string>
<string name="notification_status">New tweet by <xliff:g id="user">%s</xliff:g></string>
<string name="notification_status_multiple">New Tweet by <xliff:g id="user">%1$s</xliff:g> and <xliff:g id="count">%2$d</xliff:g> others</string>
<string name="notification_type_home">Home</string>
<string name="notification_type_interactions">Interactions</string>
<string name="notification_type_messages">Messages</string>
<string name="notifications">Notifications</string>
<string name="notifications_type">Notifications type</string>
@ -880,6 +878,10 @@
<string name="refresh_interval">Refresh interval</string>
<string name="refresh_on_start">Refresh on start</string>
<string name="refresh_on_start_summary">Refresh timeline and mentions on start.</string>
<string name="refresh_type_home">Home</string>
<string name="refresh_type_interactions">Interactions</string>
<string name="refresh_type_messages">Messages</string>
<string name="refresh_type_trends">Trends</string>
<string name="register">Register</string>
@ -1082,11 +1084,15 @@
<string name="title_about">About</string>
<string name="title_accounts">Accounts</string>
<string name="title_add_or_remove_from_list">Add or remove from list</string>
<string name="title_block_user">Block <xliff:g id="name">%s</xliff:g></string>
<string name="title_blocked_users">Blocked users</string>
<string name="title_browser_sign_in">Browser sign in</string>
<string name="title_compose">Compose</string>
<string name="title_dialog_sync_connect_to">Connect to…</string>
<string name="title_direct_messages">Messages</string>
<string name="title_direct_messages_conversation_info">Conversation info</string>
<string name="title_direct_messages_conversation_new">New conversation</string>
<string name="title_drafts">Drafts</string>
<string name="title_edit_details">Edit details</string>
<string name="title_edit_profile">Edit profile</string>
@ -1105,6 +1111,7 @@
<string name="title_likes">Likes</string>
<string name="title_manage_filter_subscriptions">Filter subscriptions</string>
<string name="title_mentions">Mentions</string>
<string name="title_message_conversation_info">Conversation info</string>
<string name="title_nicknames">Nicknames</string>
<string name="title_open_source_license">Open source license</string>
<string name="title_premium_features_name">Twidere ∞</string>

View File

@ -26,21 +26,21 @@
android:title="@string/notifications_type">
<org.mariotaku.twidere.preference.NotificationTypePreference
android:key="notification_type_home"
android:title="@string/title_home"
android:title="@string/notification_type_home"
app:dependencyKey="home_timeline_notification"
app:dependencyValueDefault="false"
app:dependencyValues="@array/dependency_values_true"
app:notificationType="none"/>
<org.mariotaku.twidere.preference.NotificationTypePreference
android:key="notification_type_mentions"
android:title="@string/interactions"
android:title="@string/notification_type_interactions"
app:dependencyKey="mentions_notification"
app:dependencyValueDefault="false"
app:dependencyValues="@array/dependency_values_true"
app:notificationType="vibration|light"/>
<org.mariotaku.twidere.preference.NotificationTypePreference
android:key="notification_type_direct_messages"
android:title="@string/direct_messages"
android:title="@string/notification_type_messages"
app:dependencyKey="direct_messages_notification"
app:dependencyValueDefault="false"
app:dependencyValues="@array/dependency_values_true"

View File

@ -10,19 +10,19 @@
<SwitchPreferenceCompat
android:defaultValue="false"
android:key="auto_refresh_home_timeline"
android:title="@string/title_home"/>
android:title="@string/refresh_type_home"/>
<SwitchPreferenceCompat
android:defaultValue="true"
android:key="auto_refresh_mentions"
android:title="@string/title_mentions"/>
android:title="@string/refresh_type_interactions"/>
<SwitchPreferenceCompat
android:defaultValue="true"
android:key="auto_refresh_direct_messages"
android:title="@string/direct_messages"/>
android:title="@string/refresh_type_messages"/>
<SwitchPreferenceCompat
android:defaultValue="false"
android:key="auto_refresh_trends"
android:title="@string/trends"/>
android:title="@string/refresh_type_trends"/>
</org.mariotaku.twidere.preference.TintedPreferenceCategory>
<!--<org.mariotaku.twidere.preference.TintedPreferenceCategory-->

View File

@ -14,7 +14,7 @@
android:title="@string/search"/>
<org.mariotaku.twidere.preference.KeyboardShortcutPreference
android:action="message"
android:title="@string/direct_messages"/>
android:title="@string/title_direct_messages"/>
</org.mariotaku.twidere.preference.TintedPreferenceCategory>
<org.mariotaku.twidere.preference.TintedPreferenceCategory