improved link handler

This commit is contained in:
Mariotaku Lee 2017-02-19 17:41:14 +08:00
parent 8c85c28e31
commit 1cac394c27
No known key found for this signature in database
GPG Key ID: 15C10F89D7C33535
47 changed files with 150 additions and 71 deletions

View File

@ -317,6 +317,7 @@ public interface TwidereDataStore {
String TYPE_USER = "user"; String TYPE_USER = "user";
String TYPE_SEARCH_HISTORY = "search_history"; String TYPE_SEARCH_HISTORY = "search_history";
String TYPE_SCREEN_NAME = "screen_name"; String TYPE_SCREEN_NAME = "screen_name";
String TYPE_MESSAGE = "message";
} }
} }

View File

@ -251,7 +251,7 @@
</activity> </activity>
<activity <activity
android:name=".activity.QuickSearchBarActivity" android:name=".activity.QuickSearchBarActivity"
android:label="@string/search" android:label="@string/title_search"
android:launchMode="singleTop" android:launchMode="singleTop"
android:theme="@style/Theme.Twidere.QuickSearchBar" android:theme="@style/Theme.Twidere.QuickSearchBar"
android:windowSoftInputMode="adjustResize"> android:windowSoftInputMode="adjustResize">

View File

@ -24,7 +24,7 @@ public class SearchTabConfiguration extends TabConfiguration {
@NonNull @NonNull
@Override @Override
public StringHolder getName() { public StringHolder getName() {
return StringHolder.resource(R.string.search); return StringHolder.resource(R.string.action_search);
} }
@NonNull @NonNull

View File

@ -41,7 +41,7 @@ public class KeyboardShortcutsHandler implements KeyboardShortcutConstants {
static { static {
sActionLabelMap.put(ACTION_COMPOSE, R.string.action_compose); sActionLabelMap.put(ACTION_COMPOSE, R.string.action_compose);
sActionLabelMap.put(ACTION_SEARCH, R.string.search); sActionLabelMap.put(ACTION_SEARCH, R.string.action_search);
sActionLabelMap.put(ACTION_MESSAGE, R.string.new_direct_message); sActionLabelMap.put(ACTION_MESSAGE, R.string.new_direct_message);
sActionLabelMap.put(ACTION_HOME_ACCOUNTS_DASHBOARD, R.string.open_accounts_dashboard); sActionLabelMap.put(ACTION_HOME_ACCOUNTS_DASHBOARD, R.string.open_accounts_dashboard);
sActionLabelMap.put(ACTION_STATUS_REPLY, R.string.action_reply); sActionLabelMap.put(ACTION_STATUS_REPLY, R.string.action_reply);

View File

@ -0,0 +1,47 @@
/*
* 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.activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.View;
import org.mariotaku.twidere.activity.LinkHandlerActivity;
import org.mariotaku.twidere.fragment.iface.IToolBarSupportFragment;
/**
* Created by mariotaku on 2017/2/19.
*/
public class LinkHandlerFragmentLifecycleCallbacks {
public static FragmentManager.FragmentLifecycleCallbacks get(final LinkHandlerActivity activity) {
final FragmentManager fm = activity.getSupportFragmentManager();
return fm.new FragmentLifecycleCallbacks() {
@Override
public void onFragmentViewCreated(final FragmentManager fm1, final Fragment f, final View v, final Bundle savedInstanceState) {
if (f instanceof IToolBarSupportFragment) {
activity.setSupportActionBar(((IToolBarSupportFragment) f).getToolbar());
}
}
};
}
}

View File

@ -28,6 +28,7 @@ import android.net.Uri
import android.os.BadParcelableException import android.os.BadParcelableException
import android.os.Bundle import android.os.Bundle
import android.support.v4.app.Fragment import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager.FragmentLifecycleCallbacks
import android.support.v4.app.NavUtils import android.support.v4.app.NavUtils
import android.support.v4.view.WindowCompat import android.support.v4.view.WindowCompat
import android.support.v7.widget.Toolbar import android.support.v7.widget.Toolbar
@ -64,6 +65,7 @@ import org.mariotaku.twidere.model.analyzer.PurchaseFinished
import org.mariotaku.twidere.util.* import org.mariotaku.twidere.util.*
import org.mariotaku.twidere.util.KeyboardShortcutsHandler.KeyboardShortcutCallback import org.mariotaku.twidere.util.KeyboardShortcutsHandler.KeyboardShortcutCallback
import org.mariotaku.twidere.util.Utils.LINK_ID_FILTERS_IMPORT_BLOCKS import org.mariotaku.twidere.util.Utils.LINK_ID_FILTERS_IMPORT_BLOCKS
import org.mariotaku.twidere.util.activity.LinkHandlerFragmentLifecycleCallbacks
import org.mariotaku.twidere.util.linkhandler.TwidereLinkMatcher import org.mariotaku.twidere.util.linkhandler.TwidereLinkMatcher
import org.mariotaku.twidere.util.theme.getCurrentThemeResource import org.mariotaku.twidere.util.theme.getCurrentThemeResource
@ -76,6 +78,7 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowsInsetsCallback, IContro
private var actionBarHeight: Int = 0 private var actionBarHeight: Int = 0
private var subtitle: CharSequence? = null private var subtitle: CharSequence? = null
private var hideOffsetNotSupported: Boolean = false private var hideOffsetNotSupported: Boolean = false
private lateinit var fragmentLifecycleCallbacks: FragmentLifecycleCallbacks
override val currentVisibleFragment: Fragment? override val currentVisibleFragment: Fragment?
get() = supportFragmentManager.findFragmentByTag("content_fragment") get() = supportFragmentManager.findFragmentByTag("content_fragment")
@ -86,6 +89,9 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowsInsetsCallback, IContro
controlBarShowHideHelper = ControlBarShowHideHelper(this) controlBarShowHideHelper = ControlBarShowHideHelper(this)
multiSelectHandler.dispatchOnCreate() multiSelectHandler.dispatchOnCreate()
fragmentLifecycleCallbacks = LinkHandlerFragmentLifecycleCallbacks.get(this)
supportFragmentManager.registerFragmentLifecycleCallbacks(fragmentLifecycleCallbacks, false)
val uri = intent.data ?: run { val uri = intent.data ?: run {
finish() finish()
return return
@ -147,6 +153,11 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowsInsetsCallback, IContro
} }
} }
override fun onDestroy() {
supportFragmentManager.unregisterFragmentLifecycleCallbacks(fragmentLifecycleCallbacks)
super.onDestroy()
}
override fun onStart() { override fun onStart() {
super.onStart() super.onStart()
multiSelectHandler.dispatchOnStart() multiSelectHandler.dispatchOnStart()

View File

@ -7,7 +7,6 @@ import android.os.Bundle
import android.support.v4.app.Fragment import android.support.v4.app.Fragment
import android.support.v4.app.FragmentActivity import android.support.v4.app.FragmentActivity
import android.support.v4.view.ViewPager.OnPageChangeListener import android.support.v4.view.ViewPager.OnPageChangeListener
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar import android.support.v7.widget.Toolbar
import android.view.KeyEvent import android.view.KeyEvent
import android.view.LayoutInflater import android.view.LayoutInflater
@ -41,7 +40,6 @@ abstract class AbsToolbarTabPagesFragment : BaseFragment(), RefreshScrollTopInte
private lateinit var pagerAdapter: SupportTabsAdapter private lateinit var pagerAdapter: SupportTabsAdapter
override val toolbar: Toolbar override val toolbar: Toolbar
get() = toolbarContainer.toolbar get() = toolbarContainer.toolbar
private var mControlBarHeight: Int = 0
override fun onActivityCreated(savedInstanceState: Bundle?) { override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState) super.onActivityCreated(savedInstanceState)
@ -103,15 +101,6 @@ abstract class AbsToolbarTabPagesFragment : BaseFragment(), RefreshScrollTopInte
return inflater!!.inflate(R.layout.fragment_toolbar_tab_pages, container, false) return inflater!!.inflate(R.layout.fragment_toolbar_tab_pages, container, false)
} }
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val host = host
if (host is AppCompatActivity) {
host.setSupportActionBar(toolbar)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
val o = pagerAdapter.instantiateItem(viewPager, viewPager.currentItem) val o = pagerAdapter.instantiateItem(viewPager, viewPager.currentItem)
if (o is Fragment) { if (o is Fragment) {
@ -150,7 +139,6 @@ abstract class AbsToolbarTabPagesFragment : BaseFragment(), RefreshScrollTopInte
} }
override fun onControlBarOffsetChanged(activity: IControlBarActivity, offset: Float) { override fun onControlBarOffsetChanged(activity: IControlBarActivity, offset: Float) {
mControlBarHeight = activity.controlBarHeight
} }
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {

View File

@ -1044,14 +1044,6 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
return true return true
} }
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val host = host
if (host is AppCompatActivity) {
host.setSupportActionBar(toolbar)
}
}
override fun handleKeyboardShortcutSingle(handler: KeyboardShortcutsHandler, keyCode: Int, event: KeyEvent, metaState: Int): Boolean { override fun handleKeyboardShortcutSingle(handler: KeyboardShortcutsHandler, keyCode: Int, event: KeyEvent, metaState: Int): Boolean {
if (handleFragmentKeyboardShortcutSingle(handler, keyCode, event, metaState)) return true if (handleFragmentKeyboardShortcutSingle(handler, keyCode, event, metaState)) return true
val action = handler.getKeyAction(CONTEXT_TAG_NAVIGATION, keyCode, event, metaState) val action = handler.getKeyAction(CONTEXT_TAG_NAVIGATION, keyCode, event, metaState)

View File

@ -25,16 +25,19 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.support.v4.app.FragmentActivity
import android.support.v4.app.LoaderManager import android.support.v4.app.LoaderManager
import android.support.v4.content.Loader import android.support.v4.content.Loader
import android.support.v7.widget.FixedLinearLayoutManager import android.support.v7.widget.FixedLinearLayoutManager
import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView import android.support.v7.widget.RecyclerView
import android.support.v7.widget.Toolbar
import android.view.* import android.view.*
import android.widget.Toast import android.widget.Toast
import com.squareup.otto.Subscribe import com.squareup.otto.Subscribe
import kotlinx.android.synthetic.main.activity_premium_dashboard.* import kotlinx.android.synthetic.main.activity_premium_dashboard.*
import kotlinx.android.synthetic.main.fragment_messages_conversation.* import kotlinx.android.synthetic.main.fragment_messages_conversation.*
import kotlinx.android.synthetic.main.fragment_messages_conversation.view.*
import org.mariotaku.abstask.library.TaskStarter import org.mariotaku.abstask.library.TaskStarter
import org.mariotaku.kpreferences.get import org.mariotaku.kpreferences.get
import org.mariotaku.ktextension.empty import org.mariotaku.ktextension.empty
@ -59,6 +62,7 @@ import org.mariotaku.twidere.extension.model.isOfficial
import org.mariotaku.twidere.extension.model.readOnly import org.mariotaku.twidere.extension.model.readOnly
import org.mariotaku.twidere.fragment.AbsContentListRecyclerViewFragment import org.mariotaku.twidere.fragment.AbsContentListRecyclerViewFragment
import org.mariotaku.twidere.fragment.EditAltTextDialogFragment import org.mariotaku.twidere.fragment.EditAltTextDialogFragment
import org.mariotaku.twidere.fragment.iface.IToolBarSupportFragment
import org.mariotaku.twidere.loader.ObjectCursorLoader import org.mariotaku.twidere.loader.ObjectCursorLoader
import org.mariotaku.twidere.model.* import org.mariotaku.twidere.model.*
import org.mariotaku.twidere.model.ParcelableMessageConversation.ConversationType import org.mariotaku.twidere.model.ParcelableMessageConversation.ConversationType
@ -81,7 +85,8 @@ import org.mariotaku.twidere.view.holder.compose.MediaPreviewViewHolder
import java.util.concurrent.atomic.AtomicReference import java.util.concurrent.atomic.AtomicReference
class MessagesConversationFragment : AbsContentListRecyclerViewFragment<MessagesConversationAdapter>(), class MessagesConversationFragment : AbsContentListRecyclerViewFragment<MessagesConversationAdapter>(),
LoaderManager.LoaderCallbacks<List<ParcelableMessage>?>, EditAltTextDialogFragment.EditAltTextCallback { IToolBarSupportFragment, LoaderManager.LoaderCallbacks<List<ParcelableMessage>?>,
EditAltTextDialogFragment.EditAltTextCallback {
private lateinit var mediaPreviewAdapter: MediaPreviewAdapter private lateinit var mediaPreviewAdapter: MediaPreviewAdapter
private val accountKey: UserKey get() = arguments.getParcelable(EXTRA_ACCOUNT_KEY) private val accountKey: UserKey get() = arguments.getParcelable(EXTRA_ACCOUNT_KEY)
@ -103,6 +108,14 @@ class MessagesConversationFragment : AbsContentListRecyclerViewFragment<Messages
override val reachingStart: Boolean override val reachingStart: Boolean
get() = super.reachingEnd get() = super.reachingEnd
override val controlBarHeight: Int
get() = toolbar.height
override var controlBarOffset: Float = 1f
override val toolbar: Toolbar
get() = conversationContainer.toolbar
override fun onActivityCreated(savedInstanceState: Bundle?) { override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState) super.onActivityCreated(savedInstanceState)
setHasOptionsMenu(true) setHasOptionsMenu(true)
@ -190,6 +203,10 @@ class MessagesConversationFragment : AbsContentListRecyclerViewFragment<Messages
return inflater.inflate(R.layout.fragment_messages_conversation, container, false) return inflater.inflate(R.layout.fragment_messages_conversation, container, false)
} }
override fun setupWindow(activity: FragmentActivity): Boolean {
return false
}
override fun onCreateLoader(id: Int, args: Bundle?): Loader<List<ParcelableMessage>?> { override fun onCreateLoader(id: Int, args: Bundle?): Loader<List<ParcelableMessage>?> {
return ConversationLoader(context, accountKey, conversationId) return ConversationLoader(context, accountKey, conversationId)
} }
@ -415,9 +432,9 @@ class MessagesConversationFragment : AbsContentListRecyclerViewFragment<Messages
activity.title = conversation.getConversationName(context, userColorNameManager, activity.title = conversation.getConversationName(context, userColorNameManager,
preferences[nameFirstKey]).first preferences[nameFirstKey]).first
val readOnly = conversation.readOnly val readOnly = conversation.readOnly
addMedia.isEnabled = readOnly addMedia.isEnabled = !readOnly
sendMessage.isEnabled = readOnly sendMessage.isEnabled = !readOnly
editText.isEnabled = readOnly editText.isEnabled = !readOnly
} }
internal class AddMediaTask( internal class AddMediaTask(

View File

@ -29,7 +29,6 @@ import org.mariotaku.twidere.TwidereConstants.*
import org.mariotaku.twidere.model.UserKey import org.mariotaku.twidere.model.UserKey
import org.mariotaku.twidere.provider.TwidereDataStore.* import org.mariotaku.twidere.provider.TwidereDataStore.*
import org.mariotaku.twidere.util.SQLiteDatabaseWrapper import org.mariotaku.twidere.util.SQLiteDatabaseWrapper
import org.mariotaku.twidere.util.TwidereQueryBuilder
import org.mariotaku.twidere.util.UserColorNameManager import org.mariotaku.twidere.util.UserColorNameManager
import org.mariotaku.twidere.util.Utils import org.mariotaku.twidere.util.Utils
import java.util.regex.Pattern import java.util.regex.Pattern

View File

@ -683,7 +683,7 @@
<string name="saved_searches_already_saved_hint">Quiciabes yá guardesti esta gueta</string> <string name="saved_searches_already_saved_hint">Quiciabes yá guardesti esta gueta</string>
<string name="scheduled_statuses">Tuits planificaos</string> <string name="scheduled_statuses">Tuits planificaos</string>
<string name="scrapyard">Bagul d\'axustes</string> <string name="scrapyard">Bagul d\'axustes</string>
<string name="search">Guetar</string> <string name="action_search">Guetar</string>
<string name="search_hint">Gueta tuits o usuarios</string> <string name="search_hint">Gueta tuits o usuarios</string>
<string name="search_hint_users">Guetar usuarios</string> <string name="search_hint_users">Guetar usuarios</string>
<string name="search_statuses">Guetar tuits</string> <string name="search_statuses">Guetar tuits</string>

View File

@ -612,7 +612,7 @@
<string name="saved_searches_already_saved_hint">Potser ja heu desat aquesta cerca</string> <string name="saved_searches_already_saved_hint">Potser ja heu desat aquesta cerca</string>
<string name="scheduled_statuses">Piulades programades</string> <string name="scheduled_statuses">Piulades programades</string>
<string name="scrapyard">Caixa d\'eines</string> <string name="scrapyard">Caixa d\'eines</string>
<string name="search">Cerca</string> <string name="action_search">Cerca</string>
<string name="search_hint">Cerca piulades o usuaris</string> <string name="search_hint">Cerca piulades o usuaris</string>
<string name="search_statuses">Cerca Piulades</string> <string name="search_statuses">Cerca Piulades</string>
<string name="search_type_statuses">Piulades</string> <string name="search_type_statuses">Piulades</string>

View File

@ -295,7 +295,7 @@
<string name="same_oauth_signing_url">Použít stejnou adresu URL pro přihlášení OAuth</string> <string name="same_oauth_signing_url">Použít stejnou adresu URL pro přihlášení OAuth</string>
<string name="save_to_gallery">Uložit do galerie</string> <string name="save_to_gallery">Uložit do galerie</string>
<string name="saved_searches">Uložená hledání</string> <string name="saved_searches">Uložená hledání</string>
<string name="search">Hledat</string> <string name="action_search">Hledat</string>
<string name="search_hint">Hledat Tweety nebo uživatele</string> <string name="search_hint">Hledat Tweety nebo uživatele</string>
<string name="search_statuses">Hledat Tweety</string> <string name="search_statuses">Hledat Tweety</string>
<string name="search_type_statuses">Tweety</string> <string name="search_type_statuses">Tweety</string>

View File

@ -210,7 +210,7 @@
<string name="retweeted_by_name_with_count">Retweetet af <xliff:g id="user_name">%1$s</xliff:g> og <xliff:g id="retweet_count">%2$d</xliff:g> andre</string> <string name="retweeted_by_name_with_count">Retweetet af <xliff:g id="user_name">%1$s</xliff:g> og <xliff:g id="retweet_count">%2$d</xliff:g> andre</string>
<string name="ringtone">Ringetone</string> <string name="ringtone">Ringetone</string>
<string name="saved_searches">Gemte søgninger</string> <string name="saved_searches">Gemte søgninger</string>
<string name="search">Søg</string> <string name="action_search">Søg</string>
<string name="search_hint">Søg tweets eller brugere</string> <string name="search_hint">Søg tweets eller brugere</string>
<string name="search_statuses">Søg i tweets</string> <string name="search_statuses">Søg i tweets</string>
<string name="search_type_statuses">Tweets</string> <string name="search_type_statuses">Tweets</string>

View File

@ -714,7 +714,7 @@
<string name="saved_searches_already_saved_hint">Vielleicht hast du diese Suche bereits gespeichert</string> <string name="saved_searches_already_saved_hint">Vielleicht hast du diese Suche bereits gespeichert</string>
<string name="scheduled_statuses">Geplante Tweets</string> <string name="scheduled_statuses">Geplante Tweets</string>
<string name="scrapyard">Schrottplatz</string> <string name="scrapyard">Schrottplatz</string>
<string name="search">Suchen</string> <string name="action_search">Suchen</string>
<string name="search_hint">Tweets oder Benutzer suchen</string> <string name="search_hint">Tweets oder Benutzer suchen</string>
<string name="search_hint_users">Benutzer suchen</string> <string name="search_hint_users">Benutzer suchen</string>
<string name="search_statuses">Tweets suchen</string> <string name="search_statuses">Tweets suchen</string>

View File

@ -109,7 +109,7 @@
<string name="retweeted_by_name">Έγινε ρετουϊτ από <xliff:g id="user_name">%s</xliff:g></string> <string name="retweeted_by_name">Έγινε ρετουϊτ από <xliff:g id="user_name">%s</xliff:g></string>
<string name="retweeted_by_name_with_count">Έγινε ρετουϊτ από <xliff:g id="user_name">%1$s</xliff:g> και <xliff:g id="retweet_count">%2$d</xliff:g> άλλους</string> <string name="retweeted_by_name_with_count">Έγινε ρετουϊτ από <xliff:g id="user_name">%1$s</xliff:g> και <xliff:g id="retweet_count">%2$d</xliff:g> άλλους</string>
<string name="same_oauth_signing_url">Χρησιμοποίησε ίδιο URL για εισαγωγή OAuth</string> <string name="same_oauth_signing_url">Χρησιμοποίησε ίδιο URL για εισαγωγή OAuth</string>
<string name="search">Αναζήτηση</string> <string name="action_search">Αναζήτηση</string>
<string name="search_type_statuses">Tweets</string> <string name="search_type_statuses">Tweets</string>
<string name="search_type_users">Χρήστες</string> <string name="search_type_users">Χρήστες</string>
<string name="select_account">Επιλογή λογαριασμού</string> <string name="select_account">Επιλογή λογαριασμού</string>

View File

@ -705,7 +705,7 @@
<string name="saved_searches_already_saved_hint">Quizá ya hayas guardado esta búsqueda</string> <string name="saved_searches_already_saved_hint">Quizá ya hayas guardado esta búsqueda</string>
<string name="scheduled_statuses">Planificación de tweets</string> <string name="scheduled_statuses">Planificación de tweets</string>
<string name="scrapyard">Más ajustes</string> <string name="scrapyard">Más ajustes</string>
<string name="search">Búsqueda</string> <string name="action_search">Búsqueda</string>
<string name="search_hint">Búsqueda de tweets o usuarios</string> <string name="search_hint">Búsqueda de tweets o usuarios</string>
<string name="search_hint_users">Buscar usuarios</string> <string name="search_hint_users">Buscar usuarios</string>
<string name="search_statuses">Buscar Tweets</string> <string name="search_statuses">Buscar Tweets</string>

View File

@ -633,7 +633,7 @@
<string name="saved_searches_already_saved_hint">احتمالاً از پیش این جست‌‌وجو را ذخیره کرده‌اید</string> <string name="saved_searches_already_saved_hint">احتمالاً از پیش این جست‌‌وجو را ذخیره کرده‌اید</string>
<string name="scheduled_statuses">تویتت‌های زمان‌بندی شده</string> <string name="scheduled_statuses">تویتت‌های زمان‌بندی شده</string>
<string name="scrapyard">ظاهر</string> <string name="scrapyard">ظاهر</string>
<string name="search">جست‌وجو</string> <string name="action_search">جست‌وجو</string>
<string name="search_hint">جست‌وجوی توییت‌ها یا کاربران</string> <string name="search_hint">جست‌وجوی توییت‌ها یا کاربران</string>
<string name="search_statuses">جست‌وجوی توییت‌ها</string> <string name="search_statuses">جست‌وجوی توییت‌ها</string>
<string name="search_type_statuses">توییت‌ها</string> <string name="search_type_statuses">توییت‌ها</string>

View File

@ -602,7 +602,7 @@
<string name="saved_searches_already_saved_hint">Kenties olet jo tallentanut tämän haun</string> <string name="saved_searches_already_saved_hint">Kenties olet jo tallentanut tämän haun</string>
<string name="scheduled_statuses">Ajoitetut twiitit</string> <string name="scheduled_statuses">Ajoitetut twiitit</string>
<string name="scrapyard">Romuvarasto</string> <string name="scrapyard">Romuvarasto</string>
<string name="search">Hae</string> <string name="action_search">Hae</string>
<string name="search_hint">Hae twiittejä tai käyttäjiä</string> <string name="search_hint">Hae twiittejä tai käyttäjiä</string>
<string name="search_statuses">Hae twiittejä</string> <string name="search_statuses">Hae twiittejä</string>
<string name="search_type_statuses">Twiitit</string> <string name="search_type_statuses">Twiitit</string>

View File

@ -714,7 +714,7 @@
<string name="saved_searches_already_saved_hint">Vous avez certainement déjà enregistré cette recherche</string> <string name="saved_searches_already_saved_hint">Vous avez certainement déjà enregistré cette recherche</string>
<string name="scheduled_statuses">Tweets programmés</string> <string name="scheduled_statuses">Tweets programmés</string>
<string name="scrapyard">Divers</string> <string name="scrapyard">Divers</string>
<string name="search">Rechercher</string> <string name="action_search">Rechercher</string>
<string name="search_hint">Rechercher des tweets ou des utilisateurs</string> <string name="search_hint">Rechercher des tweets ou des utilisateurs</string>
<string name="search_hint_users">Rechercher des utilisateurs</string> <string name="search_hint_users">Rechercher des utilisateurs</string>
<string name="search_statuses">Rechercher des tweets</string> <string name="search_statuses">Rechercher des tweets</string>

View File

@ -611,7 +611,7 @@
<string name="saved_searches_already_saved_hint">Se cadra xa tes gardada esta busca</string> <string name="saved_searches_already_saved_hint">Se cadra xa tes gardada esta busca</string>
<string name="scheduled_statuses">Chíos programados</string> <string name="scheduled_statuses">Chíos programados</string>
<string name="scrapyard">Scrapyard</string> <string name="scrapyard">Scrapyard</string>
<string name="search">Buscar</string> <string name="action_search">Buscar</string>
<string name="search_hint">Buscar chíos ou usuarios</string> <string name="search_hint">Buscar chíos ou usuarios</string>
<string name="search_statuses">Buscar chíos</string> <string name="search_statuses">Buscar chíos</string>
<string name="search_type_statuses">Chíos</string> <string name="search_type_statuses">Chíos</string>

View File

@ -501,7 +501,7 @@
<string name="saved_searches">Spremljene pretrage</string> <string name="saved_searches">Spremljene pretrage</string>
<string name="scheduled_statuses">Planirani tweetovi</string> <string name="scheduled_statuses">Planirani tweetovi</string>
<string name="scrapyard">Reciklažno dvorište</string> <string name="scrapyard">Reciklažno dvorište</string>
<string name="search">Pretraži</string> <string name="action_search">Pretraži</string>
<string name="search_hint">Pretraži tweetove ili korisnike</string> <string name="search_hint">Pretraži tweetove ili korisnike</string>
<string name="search_statuses">Pretraži Tweetove</string> <string name="search_statuses">Pretraži Tweetove</string>
<string name="search_type_statuses">Tweetovi</string> <string name="search_type_statuses">Tweetovi</string>

View File

@ -613,7 +613,7 @@
<string name="saved_searches_already_saved_hint">Talán egyszer már mentetted ezt a keresést</string> <string name="saved_searches_already_saved_hint">Talán egyszer már mentetted ezt a keresést</string>
<string name="scheduled_statuses">Időzített tweet-ek</string> <string name="scheduled_statuses">Időzített tweet-ek</string>
<string name="scrapyard">Szemetes</string> <string name="scrapyard">Szemetes</string>
<string name="search">Keresés</string> <string name="action_search">Keresés</string>
<string name="search_hint">Keresés tweetek és felhasználók között</string> <string name="search_hint">Keresés tweetek és felhasználók között</string>
<string name="search_statuses">Tweetek keresése</string> <string name="search_statuses">Tweetek keresése</string>
<string name="search_type_statuses">Tweet</string> <string name="search_type_statuses">Tweet</string>

View File

@ -688,7 +688,7 @@
<string name="saved_searches_already_saved_hint">Mungkin anda sudah menyimpan pencarian ini</string> <string name="saved_searches_already_saved_hint">Mungkin anda sudah menyimpan pencarian ini</string>
<string name="scheduled_statuses">Tweet terjadwal</string> <string name="scheduled_statuses">Tweet terjadwal</string>
<string name="scrapyard">Scrapyard</string> <string name="scrapyard">Scrapyard</string>
<string name="search">Pencarian</string> <string name="action_search">Pencarian</string>
<string name="search_hint">Pencarian tweets atau pengguna</string> <string name="search_hint">Pencarian tweets atau pengguna</string>
<string name="search_statuses">Cari Kicauan</string> <string name="search_statuses">Cari Kicauan</string>
<string name="search_type_statuses">Kicauan</string> <string name="search_type_statuses">Kicauan</string>

View File

@ -601,7 +601,7 @@
<string name="saved_searches_already_saved_hint">Forse hai già salvato questa ricerca</string> <string name="saved_searches_already_saved_hint">Forse hai già salvato questa ricerca</string>
<string name="scheduled_statuses">Tweet schedulati</string> <string name="scheduled_statuses">Tweet schedulati</string>
<string name="scrapyard">Discarica</string> <string name="scrapyard">Discarica</string>
<string name="search">Cerca</string> <string name="action_search">Cerca</string>
<string name="search_hint">Cerca tweets o utenti</string> <string name="search_hint">Cerca tweets o utenti</string>
<string name="search_statuses">Ricerca tweet</string> <string name="search_statuses">Ricerca tweet</string>
<string name="search_type_statuses">Tweet</string> <string name="search_type_statuses">Tweet</string>

View File

@ -716,7 +716,7 @@
<string name="saved_searches_already_saved_hint">おそらく、既にこの検索は保存されています</string> <string name="saved_searches_already_saved_hint">おそらく、既にこの検索は保存されています</string>
<string name="scheduled_statuses">定期ツイート</string> <string name="scheduled_statuses">定期ツイート</string>
<string name="scrapyard">ゴミ置き場</string> <string name="scrapyard">ゴミ置き場</string>
<string name="search">検索</string> <string name="action_search">検索</string>
<string name="search_hint">ツイートかユーザーの検索</string> <string name="search_hint">ツイートかユーザーの検索</string>
<string name="search_hint_users">ユーザー検索</string> <string name="search_hint_users">ユーザー検索</string>
<string name="search_statuses">ツイートの検索</string> <string name="search_statuses">ツイートの検索</string>

View File

@ -618,7 +618,7 @@
<string name="saved_searches_already_saved_hint">이 검색을 이미 저장한 것 같습니다.</string> <string name="saved_searches_already_saved_hint">이 검색을 이미 저장한 것 같습니다.</string>
<string name="scheduled_statuses">예약 트윗</string> <string name="scheduled_statuses">예약 트윗</string>
<string name="scrapyard">폐기된 설정</string> <string name="scrapyard">폐기된 설정</string>
<string name="search">검색</string> <string name="action_search">검색</string>
<string name="search_hint">트윗이나 사용자 검색</string> <string name="search_hint">트윗이나 사용자 검색</string>
<string name="search_statuses">트윗 검색</string> <string name="search_statuses">트윗 검색</string>
<string name="search_type_statuses">트윗</string> <string name="search_type_statuses">트윗</string>

View File

@ -620,7 +620,7 @@
<string name="saved_searches_already_saved_hint">Misschien had je deze zoekopdracht al bewaard</string> <string name="saved_searches_already_saved_hint">Misschien had je deze zoekopdracht al bewaard</string>
<string name="scheduled_statuses">Ingeplande tweets</string> <string name="scheduled_statuses">Ingeplande tweets</string>
<string name="scrapyard">Schroothoop</string> <string name="scrapyard">Schroothoop</string>
<string name="search">Zoeken</string> <string name="action_search">Zoeken</string>
<string name="search_hint">Zoek tweets of gebruikers</string> <string name="search_hint">Zoek tweets of gebruikers</string>
<string name="search_statuses">Zoek Tweets</string> <string name="search_statuses">Zoek Tweets</string>
<string name="search_type_statuses">Tweets</string> <string name="search_type_statuses">Tweets</string>

View File

@ -535,7 +535,7 @@
<string name="saved_searches">Lagrede søk</string> <string name="saved_searches">Lagrede søk</string>
<string name="scheduled_statuses">Planlagte tweets</string> <string name="scheduled_statuses">Planlagte tweets</string>
<string name="scrapyard">Diverse</string> <string name="scrapyard">Diverse</string>
<string name="search">Søk</string> <string name="action_search">Søk</string>
<string name="search_hint">Søk tweets eller brukere</string> <string name="search_hint">Søk tweets eller brukere</string>
<string name="search_statuses">Søk tweets</string> <string name="search_statuses">Søk tweets</string>
<string name="search_type_statuses">Tweets</string> <string name="search_type_statuses">Tweets</string>

View File

@ -436,7 +436,7 @@
<string name="same_oauth_signing_url">Użyj tego samego adresu do logowania przez OAuth</string> <string name="same_oauth_signing_url">Użyj tego samego adresu do logowania przez OAuth</string>
<string name="save_to_gallery">Zapisz w galerii</string> <string name="save_to_gallery">Zapisz w galerii</string>
<string name="saved_searches">Zapisane wyniki wyszukiwania</string> <string name="saved_searches">Zapisane wyniki wyszukiwania</string>
<string name="search">Szukaj</string> <string name="action_search">Szukaj</string>
<string name="search_hint">Szukaj tweetów lub użytkowników</string> <string name="search_hint">Szukaj tweetów lub użytkowników</string>
<string name="search_statuses">Szukaj tweetów</string> <string name="search_statuses">Szukaj tweetów</string>
<string name="search_type_statuses">Tweety</string> <string name="search_type_statuses">Tweety</string>

View File

@ -624,7 +624,7 @@
<string name="saved_searches_already_saved_hint">Talvez você já tenha salvo esta busca</string> <string name="saved_searches_already_saved_hint">Talvez você já tenha salvo esta busca</string>
<string name="scheduled_statuses">Tweets agendados</string> <string name="scheduled_statuses">Tweets agendados</string>
<string name="scrapyard">Interface</string> <string name="scrapyard">Interface</string>
<string name="search">Procurar</string> <string name="action_search">Procurar</string>
<string name="search_hint">Procurar por tweets ou usuários</string> <string name="search_hint">Procurar por tweets ou usuários</string>
<string name="search_statuses">Buscar Tweets</string> <string name="search_statuses">Buscar Tweets</string>
<string name="search_type_statuses">Tweets</string> <string name="search_type_statuses">Tweets</string>

View File

@ -50,7 +50,7 @@
<!-- Normally you don't need to translate this --> <!-- Normally you don't need to translate this -->
<string name="provider_default">Twidere</string> <string name="provider_default">Twidere</string>
<!-- Fanfou is a Chinese micro blogging website http://fanfou.com/ --> <!-- Fanfou is a Chinese micro blogging website http://fanfou.com/ -->
<string name="search">Căutare</string> <string name="action_search">Căutare</string>
<string name="settings">Configurări</string> <string name="settings">Configurări</string>
<string name="sign_in">Autentificare</string> <string name="sign_in">Autentificare</string>
<string name="sign_up">Inregistrare</string> <string name="sign_up">Inregistrare</string>

View File

@ -691,7 +691,7 @@
<string name="saved_searches_already_saved_hint">Возможно, вы уже сохранили этот поиск</string> <string name="saved_searches_already_saved_hint">Возможно, вы уже сохранили этот поиск</string>
<string name="scheduled_statuses">Запланированные твиты</string> <string name="scheduled_statuses">Запланированные твиты</string>
<string name="scrapyard">Прочие настройки вида</string> <string name="scrapyard">Прочие настройки вида</string>
<string name="search">Поиск</string> <string name="action_search">Поиск</string>
<string name="search_hint">Поиск твитов или пользователей</string> <string name="search_hint">Поиск твитов или пользователей</string>
<string name="search_statuses">Найти твиты</string> <string name="search_statuses">Найти твиты</string>
<string name="search_type_statuses">Твиты</string> <string name="search_type_statuses">Твиты</string>

View File

@ -367,7 +367,7 @@
<string name="safety">Säkerhet</string> <string name="safety">Säkerhet</string>
<string name="same_oauth_signing_url">Använd samma URL för OAuth-signering</string> <string name="same_oauth_signing_url">Använd samma URL för OAuth-signering</string>
<string name="saved_searches">Sparade sökningar</string> <string name="saved_searches">Sparade sökningar</string>
<string name="search">Sök</string> <string name="action_search">Sök</string>
<string name="search_hint">Sök efter tweets eller användare</string> <string name="search_hint">Sök efter tweets eller användare</string>
<string name="search_statuses">Sök tweets</string> <string name="search_statuses">Sök tweets</string>
<string name="search_type_statuses">Tweets</string> <string name="search_type_statuses">Tweets</string>

View File

@ -622,7 +622,7 @@
<string name="saved_searches_already_saved_hint">คุณได้บันทึกผลการค้นหานี้ไปก่อนแล้ว</string> <string name="saved_searches_already_saved_hint">คุณได้บันทึกผลการค้นหานี้ไปก่อนแล้ว</string>
<string name="scheduled_statuses">ทวีตตั้งเวลาส่ง</string> <string name="scheduled_statuses">ทวีตตั้งเวลาส่ง</string>
<string name="scrapyard">กองขยะ</string> <string name="scrapyard">กองขยะ</string>
<string name="search">ค้นหา</string> <string name="action_search">ค้นหา</string>
<string name="search_hint">ค้นหาทวีตหรือผู้ใช้</string> <string name="search_hint">ค้นหาทวีตหรือผู้ใช้</string>
<string name="search_statuses">ค้นหาทวีต</string> <string name="search_statuses">ค้นหาทวีต</string>
<string name="search_type_statuses">ทวีต</string> <string name="search_type_statuses">ทวีต</string>

View File

@ -621,7 +621,7 @@
<string name="saved_searches_already_saved_hint">Belki de zaten bu arama kaydedilmiştir</string> <string name="saved_searches_already_saved_hint">Belki de zaten bu arama kaydedilmiştir</string>
<string name="scheduled_statuses">Zamanlanmış tweetler</string> <string name="scheduled_statuses">Zamanlanmış tweetler</string>
<string name="scrapyard">Scrapyard</string> <string name="scrapyard">Scrapyard</string>
<string name="search">Ara</string> <string name="action_search">Ara</string>
<string name="search_hint">Tweet yada kullanıcı ara</string> <string name="search_hint">Tweet yada kullanıcı ara</string>
<string name="search_statuses">Tweet/ler ara</string> <string name="search_statuses">Tweet/ler ara</string>
<string name="search_type_statuses">Tweetler</string> <string name="search_type_statuses">Tweetler</string>

View File

@ -622,7 +622,7 @@
<string name="saved_searches_already_saved_hint">Мабуть ви вже зберегли цей пошуковий запит</string> <string name="saved_searches_already_saved_hint">Мабуть ви вже зберегли цей пошуковий запит</string>
<string name="scheduled_statuses">Заплановані твіти</string> <string name="scheduled_statuses">Заплановані твіти</string>
<string name="scrapyard">Смітник</string> <string name="scrapyard">Смітник</string>
<string name="search">Пошук</string> <string name="action_search">Пошук</string>
<string name="search_hint">Пошук твітів або користувачів</string> <string name="search_hint">Пошук твітів або користувачів</string>
<string name="search_statuses">Пошук твітів</string> <string name="search_statuses">Пошук твітів</string>
<string name="search_type_statuses">Твіти</string> <string name="search_type_statuses">Твіти</string>

View File

@ -718,7 +718,7 @@
<string name="saved_searches_already_saved_hint">您可能已经保存过这个搜索了</string> <string name="saved_searches_already_saved_hint">您可能已经保存过这个搜索了</string>
<string name="scheduled_statuses">被排期推文</string> <string name="scheduled_statuses">被排期推文</string>
<string name="scrapyard">垃圾场</string> <string name="scrapyard">垃圾场</string>
<string name="search">搜索</string> <string name="action_search">搜索</string>
<string name="search_hint">搜索推文或用户</string> <string name="search_hint">搜索推文或用户</string>
<string name="search_hint_users">搜索用户</string> <string name="search_hint_users">搜索用户</string>
<string name="search_statuses">搜索推文</string> <string name="search_statuses">搜索推文</string>

View File

@ -714,7 +714,7 @@
<string name="saved_searches_already_saved_hint">可能您已經保存了這個搜尋</string> <string name="saved_searches_already_saved_hint">可能您已經保存了這個搜尋</string>
<string name="scheduled_statuses">被排期推文</string> <string name="scheduled_statuses">被排期推文</string>
<string name="scrapyard">垃圾場</string> <string name="scrapyard">垃圾場</string>
<string name="search">搜尋</string> <string name="action_search">搜尋</string>
<string name="search_hint">搜尋推文或使用者</string> <string name="search_hint">搜尋推文或使用者</string>
<string name="search_hint_users">搜尋使用者</string> <string name="search_hint_users">搜尋使用者</string>
<string name="search_statuses">搜尋推文</string> <string name="search_statuses">搜尋推文</string>

View File

@ -714,7 +714,7 @@
<string name="saved_searches_already_saved_hint">可能您已經保存了這個搜尋</string> <string name="saved_searches_already_saved_hint">可能您已經保存了這個搜尋</string>
<string name="scheduled_statuses">被排期推文</string> <string name="scheduled_statuses">被排期推文</string>
<string name="scrapyard">垃圾場</string> <string name="scrapyard">垃圾場</string>
<string name="search">搜尋</string> <string name="action_search">搜尋</string>
<string name="search_hint">搜尋推文或使用者</string> <string name="search_hint">搜尋推文或使用者</string>
<string name="search_hint_users">搜尋使用者</string> <string name="search_hint_users">搜尋使用者</string>
<string name="search_statuses">搜尋推文</string> <string name="search_statuses">搜尋推文</string>

View File

@ -53,7 +53,7 @@
android:layout_weight="0" android:layout_weight="0"
android:background="?selectableItemBackground" android:background="?selectableItemBackground"
android:color="?menuIconColor" android:color="?menuIconColor"
android:contentDescription="@string/search" android:contentDescription="@string/action_search"
android:src="@drawable/ic_action_search" android:src="@drawable/ic_action_search"
tools:tint="?menuIconColor"/> tools:tint="?menuIconColor"/>
</LinearLayout> </LinearLayout>

View File

@ -32,7 +32,8 @@
layout="@layout/fragment_content_recyclerview" layout="@layout/fragment_content_recyclerview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_above="@+id/inputPanel"/> android:layout_above="@+id/inputPanel"
android:layout_below="@+id/toolbar"/>
<View <View
android:id="@+id/inputPanelShadowCompat" android:id="@+id/inputPanelShadowCompat"
@ -157,4 +158,21 @@
</org.mariotaku.messagebubbleview.library.MessageBubbleView> </org.mariotaku.messagebubbleview.library.MessageBubbleView>
</RelativeLayout> </RelativeLayout>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:layout_alignParentTop="true"
android:background="?colorToolbar"
android:elevation="@dimen/toolbar_elevation"
app:popupTheme="?actionBarPopupTheme"
tools:elevation="0dp"/>
<View
android:id="@+id/windowOverlay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"
android:background="?android:windowContentOverlay"/>
</RelativeLayout> </RelativeLayout>

View File

@ -61,7 +61,7 @@
android:layout_width="@dimen/element_size_normal" android:layout_width="@dimen/element_size_normal"
android:layout_height="@dimen/element_size_normal" android:layout_height="@dimen/element_size_normal"
android:layout_gravity="end|center_vertical" android:layout_gravity="end|center_vertical"
android:contentDescription="@string/search" android:contentDescription="@string/action_search"
android:scaleType="centerInside" android:scaleType="centerInside"
android:src="@drawable/ic_action_search" android:src="@drawable/ic_action_search"
app:backgroundTintMode="src_atop"/> app:backgroundTintMode="src_atop"/>

View File

@ -6,7 +6,7 @@
<item <item
android:id="@id/search" android:id="@id/search"
android:icon="@drawable/ic_action_search" android:icon="@drawable/ic_action_search"
android:title="@string/search"/> android:title="@string/action_search"/>
<item <item
android:id="@id/interactions" android:id="@id/interactions"
android:icon="@drawable/ic_action_notification" android:icon="@drawable/ic_action_notification"

View File

@ -23,6 +23,11 @@
<item <item
android:id="@+id/info" android:id="@+id/info"
android:icon="@drawable/ic_action_info" android:icon="@drawable/ic_action_info"
android:title="@string/action_conversation_info" android:title="@string/action_conversation_info"/>
app:showAsAction="always"/> <item
android:id="@+id/search"
android:enabled="@bool/debug"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
android:visible="@bool/debug"/>
</menu> </menu>

View File

@ -90,6 +90,7 @@
<!-- [verb] Save settings/files etc. --> <!-- [verb] Save settings/files etc. -->
<string name="action_save">Save</string> <string name="action_save">Save</string>
<string name="action_saving_search">saving search</string> <string name="action_saving_search">saving search</string>
<string name="action_search">Search</string>
<string name="action_select_all">Select all</string> <string name="action_select_all">Select all</string>
<string name="action_select_none">Select none</string> <string name="action_select_none">Select none</string>
<string name="action_select_user">Select user</string> <string name="action_select_user">Select user</string>
@ -942,7 +943,6 @@
<string name="scrapyard">Scrapyard</string> <string name="scrapyard">Scrapyard</string>
<string name="search">Search</string>
<string name="search_hint">Search tweets or users</string> <string name="search_hint">Search tweets or users</string>
<string name="search_hint_users">Search users</string> <string name="search_hint_users">Search users</string>
<string name="search_statuses">Search Tweets</string> <string name="search_statuses">Search Tweets</string>
@ -1115,6 +1115,7 @@
<string name="title_nicknames">Nicknames</string> <string name="title_nicknames">Nicknames</string>
<string name="title_open_source_license">Open source license</string> <string name="title_open_source_license">Open source license</string>
<string name="title_premium_features_name">Twidere ∞</string> <string name="title_premium_features_name">Twidere ∞</string>
<string name="title_search">Search</string>
<string name="title_select_users">Select users</string> <string name="title_select_users">Select users</string>
<string name="title_set_nickname">Set nickname</string> <string name="title_set_nickname">Set nickname</string>
<string name="title_status">Tweet</string> <string name="title_status">Tweet</string>

View File

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