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_SEARCH_HISTORY = "search_history";
String TYPE_SCREEN_NAME = "screen_name";
String TYPE_MESSAGE = "message";
}
}

View File

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

View File

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

View File

@ -41,7 +41,7 @@ public class KeyboardShortcutsHandler implements KeyboardShortcutConstants {
static {
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_HOME_ACCOUNTS_DASHBOARD, R.string.open_accounts_dashboard);
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.Bundle
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager.FragmentLifecycleCallbacks
import android.support.v4.app.NavUtils
import android.support.v4.view.WindowCompat
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.KeyboardShortcutsHandler.KeyboardShortcutCallback
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.theme.getCurrentThemeResource
@ -76,6 +78,7 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowsInsetsCallback, IContro
private var actionBarHeight: Int = 0
private var subtitle: CharSequence? = null
private var hideOffsetNotSupported: Boolean = false
private lateinit var fragmentLifecycleCallbacks: FragmentLifecycleCallbacks
override val currentVisibleFragment: Fragment?
get() = supportFragmentManager.findFragmentByTag("content_fragment")
@ -86,6 +89,9 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowsInsetsCallback, IContro
controlBarShowHideHelper = ControlBarShowHideHelper(this)
multiSelectHandler.dispatchOnCreate()
fragmentLifecycleCallbacks = LinkHandlerFragmentLifecycleCallbacks.get(this)
supportFragmentManager.registerFragmentLifecycleCallbacks(fragmentLifecycleCallbacks, false)
val uri = intent.data ?: run {
finish()
return
@ -147,6 +153,11 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowsInsetsCallback, IContro
}
}
override fun onDestroy() {
supportFragmentManager.unregisterFragmentLifecycleCallbacks(fragmentLifecycleCallbacks)
super.onDestroy()
}
override fun onStart() {
super.onStart()
multiSelectHandler.dispatchOnStart()

View File

@ -7,7 +7,6 @@ import android.os.Bundle
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentActivity
import android.support.v4.view.ViewPager.OnPageChangeListener
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar
import android.view.KeyEvent
import android.view.LayoutInflater
@ -41,7 +40,6 @@ abstract class AbsToolbarTabPagesFragment : BaseFragment(), RefreshScrollTopInte
private lateinit var pagerAdapter: SupportTabsAdapter
override val toolbar: Toolbar
get() = toolbarContainer.toolbar
private var mControlBarHeight: Int = 0
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
@ -103,15 +101,6 @@ abstract class AbsToolbarTabPagesFragment : BaseFragment(), RefreshScrollTopInte
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?) {
val o = pagerAdapter.instantiateItem(viewPager, viewPager.currentItem)
if (o is Fragment) {
@ -150,7 +139,6 @@ abstract class AbsToolbarTabPagesFragment : BaseFragment(), RefreshScrollTopInte
}
override fun onControlBarOffsetChanged(activity: IControlBarActivity, offset: Float) {
mControlBarHeight = activity.controlBarHeight
}
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
@ -212,14 +200,14 @@ abstract class AbsToolbarTabPagesFragment : BaseFragment(), RefreshScrollTopInte
}
override fun isKeyboardShortcutHandled(handler: KeyboardShortcutsHandler, keyCode: Int,
event: KeyEvent, metaState: Int): Boolean {
event: KeyEvent, metaState: Int): Boolean {
if (isFragmentKeyboardShortcutHandled(handler, keyCode, event, metaState)) return true
val action = handler.getKeyAction(CONTEXT_TAG_NAVIGATION, keyCode, event, metaState)
return ACTION_NAVIGATION_PREVIOUS_TAB == action || ACTION_NAVIGATION_NEXT_TAB == action
}
override fun handleKeyboardShortcutRepeat(handler: KeyboardShortcutsHandler, keyCode: Int,
repeatCount: Int, event: KeyEvent, metaState: Int): Boolean {
repeatCount: Int, event: KeyEvent, metaState: Int): Boolean {
return handleFragmentKeyboardShortcutRepeat(handler, keyCode, repeatCount, event, metaState)
}
@ -227,7 +215,7 @@ abstract class AbsToolbarTabPagesFragment : BaseFragment(), RefreshScrollTopInte
get() = currentVisibleFragment
private fun handleFragmentKeyboardShortcutRepeat(handler: KeyboardShortcutsHandler, keyCode: Int,
repeatCount: Int, event: KeyEvent, metaState: Int): Boolean {
repeatCount: Int, event: KeyEvent, metaState: Int): Boolean {
val fragment = keyboardShortcutRecipient
if (fragment is KeyboardShortcutCallback) {
return fragment.handleKeyboardShortcutRepeat(handler, keyCode,
@ -237,7 +225,7 @@ abstract class AbsToolbarTabPagesFragment : BaseFragment(), RefreshScrollTopInte
}
private fun handleFragmentKeyboardShortcutSingle(handler: KeyboardShortcutsHandler, keyCode: Int,
event: KeyEvent, metaState: Int): Boolean {
event: KeyEvent, metaState: Int): Boolean {
val fragment = keyboardShortcutRecipient
if (fragment is KeyboardShortcutCallback) {
return fragment.handleKeyboardShortcutSingle(handler, keyCode,
@ -247,7 +235,7 @@ abstract class AbsToolbarTabPagesFragment : BaseFragment(), RefreshScrollTopInte
}
private fun isFragmentKeyboardShortcutHandled(handler: KeyboardShortcutsHandler, keyCode: Int,
event: KeyEvent, metaState: Int): Boolean {
event: KeyEvent, metaState: Int): Boolean {
val fragment = keyboardShortcutRecipient
if (fragment is KeyboardShortcutCallback) {
return fragment.isKeyboardShortcutHandled(handler, keyCode,

View File

@ -1044,14 +1044,6 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
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 {
if (handleFragmentKeyboardShortcutSingle(handler, keyCode, event, metaState)) return true
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.net.Uri
import android.os.Bundle
import android.support.v4.app.FragmentActivity
import android.support.v4.app.LoaderManager
import android.support.v4.content.Loader
import android.support.v7.widget.FixedLinearLayoutManager
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import android.support.v7.widget.Toolbar
import android.view.*
import android.widget.Toast
import com.squareup.otto.Subscribe
import kotlinx.android.synthetic.main.activity_premium_dashboard.*
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.kpreferences.get
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.fragment.AbsContentListRecyclerViewFragment
import org.mariotaku.twidere.fragment.EditAltTextDialogFragment
import org.mariotaku.twidere.fragment.iface.IToolBarSupportFragment
import org.mariotaku.twidere.loader.ObjectCursorLoader
import org.mariotaku.twidere.model.*
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
class MessagesConversationFragment : AbsContentListRecyclerViewFragment<MessagesConversationAdapter>(),
LoaderManager.LoaderCallbacks<List<ParcelableMessage>?>, EditAltTextDialogFragment.EditAltTextCallback {
IToolBarSupportFragment, LoaderManager.LoaderCallbacks<List<ParcelableMessage>?>,
EditAltTextDialogFragment.EditAltTextCallback {
private lateinit var mediaPreviewAdapter: MediaPreviewAdapter
private val accountKey: UserKey get() = arguments.getParcelable(EXTRA_ACCOUNT_KEY)
@ -103,6 +108,14 @@ class MessagesConversationFragment : AbsContentListRecyclerViewFragment<Messages
override val reachingStart: Boolean
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?) {
super.onActivityCreated(savedInstanceState)
setHasOptionsMenu(true)
@ -190,6 +203,10 @@ class MessagesConversationFragment : AbsContentListRecyclerViewFragment<Messages
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>?> {
return ConversationLoader(context, accountKey, conversationId)
}
@ -415,9 +432,9 @@ class MessagesConversationFragment : AbsContentListRecyclerViewFragment<Messages
activity.title = conversation.getConversationName(context, userColorNameManager,
preferences[nameFirstKey]).first
val readOnly = conversation.readOnly
addMedia.isEnabled = readOnly
sendMessage.isEnabled = readOnly
editText.isEnabled = readOnly
addMedia.isEnabled = !readOnly
sendMessage.isEnabled = !readOnly
editText.isEnabled = !readOnly
}
internal class AddMediaTask(

View File

@ -29,7 +29,6 @@ import org.mariotaku.twidere.TwidereConstants.*
import org.mariotaku.twidere.model.UserKey
import org.mariotaku.twidere.provider.TwidereDataStore.*
import org.mariotaku.twidere.util.SQLiteDatabaseWrapper
import org.mariotaku.twidere.util.TwidereQueryBuilder
import org.mariotaku.twidere.util.UserColorNameManager
import org.mariotaku.twidere.util.Utils
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="scheduled_statuses">Tuits planificaos</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_users">Guetar usuarios</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="scheduled_statuses">Piulades programades</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_statuses">Cerca 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="save_to_gallery">Uložit do galerie</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_statuses">Hledat 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="ringtone">Ringetone</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_statuses">Søg i 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="scheduled_statuses">Geplante Tweets</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_users">Benutzer 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_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="search">Αναζήτηση</string>
<string name="action_search">Αναζήτηση</string>
<string name="search_type_statuses">Tweets</string>
<string name="search_type_users">Χρήστες</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="scheduled_statuses">Planificación de tweets</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_users">Buscar usuarios</string>
<string name="search_statuses">Buscar Tweets</string>

View File

@ -633,7 +633,7 @@
<string name="saved_searches_already_saved_hint">احتمالاً از پیش این جست‌‌وجو را ذخیره کرده‌اید</string>
<string name="scheduled_statuses">تویتت‌های زمان‌بندی شده</string>
<string name="scrapyard">ظاهر</string>
<string name="search">جست‌وجو</string>
<string name="action_search">جست‌وجو</string>
<string name="search_hint">جست‌وجوی توییت‌ها یا کاربران</string>
<string name="search_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="scheduled_statuses">Ajoitetut twiitit</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_statuses">Hae twiittejä</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="scheduled_statuses">Tweets programmés</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_users">Rechercher des utilisateurs</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="scheduled_statuses">Chíos programados</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_statuses">Buscar 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="scheduled_statuses">Planirani tweetovi</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_statuses">Pretraži Tweetove</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="scheduled_statuses">Időzített tweet-ek</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_statuses">Tweetek keresése</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="scheduled_statuses">Tweet terjadwal</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_statuses">Cari 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="scheduled_statuses">Tweet schedulati</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_statuses">Ricerca 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="scheduled_statuses">定期ツイート</string>
<string name="scrapyard">ゴミ置き場</string>
<string name="search">検索</string>
<string name="action_search">検索</string>
<string name="search_hint">ツイートかユーザーの検索</string>
<string name="search_hint_users">ユーザー検索</string>
<string name="search_statuses">ツイートの検索</string>

View File

@ -618,7 +618,7 @@
<string name="saved_searches_already_saved_hint">이 검색을 이미 저장한 것 같습니다.</string>
<string name="scheduled_statuses">예약 트윗</string>
<string name="scrapyard">폐기된 설정</string>
<string name="search">검색</string>
<string name="action_search">검색</string>
<string name="search_hint">트윗이나 사용자 검색</string>
<string name="search_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="scheduled_statuses">Ingeplande tweets</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_statuses">Zoek 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="scheduled_statuses">Planlagte tweets</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_statuses">Søk 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="save_to_gallery">Zapisz w galerii</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_statuses">Szukaj tweetów</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="scheduled_statuses">Tweets agendados</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_statuses">Buscar Tweets</string>
<string name="search_type_statuses">Tweets</string>

View File

@ -50,7 +50,7 @@
<!-- Normally you don't need to translate this -->
<string name="provider_default">Twidere</string>
<!-- 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="sign_in">Autentificare</string>
<string name="sign_up">Inregistrare</string>

View File

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

View File

@ -367,7 +367,7 @@
<string name="safety">Säkerhet</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="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_statuses">Sök 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="scheduled_statuses">ทวีตตั้งเวลาส่ง</string>
<string name="scrapyard">กองขยะ</string>
<string name="search">ค้นหา</string>
<string name="action_search">ค้นหา</string>
<string name="search_hint">ค้นหาทวีตหรือผู้ใช้</string>
<string name="search_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="scheduled_statuses">Zamanlanmış tweetler</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_statuses">Tweet/ler ara</string>
<string name="search_type_statuses">Tweetler</string>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -32,7 +32,8 @@
layout="@layout/fragment_content_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/inputPanel"/>
android:layout_above="@+id/inputPanel"
android:layout_below="@+id/toolbar"/>
<View
android:id="@+id/inputPanelShadowCompat"
@ -157,4 +158,21 @@
</org.mariotaku.messagebubbleview.library.MessageBubbleView>
</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>

View File

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

View File

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

View File

@ -23,6 +23,11 @@
<item
android:id="@+id/info"
android:icon="@drawable/ic_action_info"
android:title="@string/action_conversation_info"
app:showAsAction="always"/>
android:title="@string/action_conversation_info"/>
<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>

View File

@ -90,6 +90,7 @@
<!-- [verb] Save settings/files etc. -->
<string name="action_save">Save</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_none">Select none</string>
<string name="action_select_user">Select user</string>
@ -942,7 +943,6 @@
<string name="scrapyard">Scrapyard</string>
<string name="search">Search</string>
<string name="search_hint">Search tweets or users</string>
<string name="search_hint_users">Search users</string>
<string name="search_statuses">Search Tweets</string>
@ -1115,6 +1115,7 @@
<string name="title_nicknames">Nicknames</string>
<string name="title_open_source_license">Open source license</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_set_nickname">Set nickname</string>
<string name="title_status">Tweet</string>

View File

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