navigate to opened tweet in tweet view
This commit is contained in:
parent
c245c05c56
commit
ed80e534cc
|
@ -64,6 +64,7 @@ import android.text.style.URLSpan;
|
|||
import android.view.Gravity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
@ -101,6 +102,7 @@ import org.mariotaku.twidere.util.LinkCreator;
|
|||
import org.mariotaku.twidere.util.MathUtils;
|
||||
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||
import org.mariotaku.twidere.util.MediaLoadingHandler;
|
||||
import org.mariotaku.twidere.util.MenuUtils;
|
||||
import org.mariotaku.twidere.util.RecyclerViewNavigationHelper;
|
||||
import org.mariotaku.twidere.util.RecyclerViewUtils;
|
||||
import org.mariotaku.twidere.util.StatusActionModeCallback;
|
||||
|
@ -272,6 +274,7 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
|
|||
@Override
|
||||
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
setHasOptionsMenu(true);
|
||||
final View view = getView();
|
||||
if (view == null) throw new AssertionError();
|
||||
final Context context = view.getContext();
|
||||
|
@ -577,6 +580,32 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
|
|||
//TODO show errors
|
||||
setState(STATE_ERROR);
|
||||
}
|
||||
invalidateOptionsMenu();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.current_status: {
|
||||
if (mStatusAdapter.getStatus() != null) {
|
||||
final int position = mStatusAdapter.getFirstPositionOfItem(StatusAdapter.ITEM_IDX_STATUS);
|
||||
mRecyclerView.smoothScrollToPosition(position);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPrepareOptionsMenu(Menu menu) {
|
||||
MenuUtils.setMenuItemAvailability(menu, R.id.current_status, mStatusAdapter.getStatus() != null);
|
||||
super.onPrepareOptionsMenu(menu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||
inflater.inflate(R.menu.menu_status, menu);
|
||||
}
|
||||
|
||||
private void setConversation(List<ParcelableStatus> data) {
|
||||
|
@ -923,7 +952,7 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
|
|||
final StatusFragment fragment = adapter.getFragment();
|
||||
final FragmentActivity activity = fragment.getActivity();
|
||||
final MenuInflater inflater = activity.getMenuInflater();
|
||||
inflater.inflate(R.menu.menu_status, menuBar.getMenu());
|
||||
inflater.inflate(R.menu.menu_detail_status, menuBar.getMenu());
|
||||
ThemeUtils.wrapMenuIcon(menuBar, MENU_GROUP_STATUS_SHARE);
|
||||
mediaPreviewLoad.setOnClickListener(this);
|
||||
profileContainer.setOnClickListener(this);
|
||||
|
|
|
@ -43,20 +43,20 @@ public class SquareImageView extends ImageView {
|
|||
final int width = MeasureSpec.getSize(widthMeasureSpec), height = MeasureSpec.getSize(heightMeasureSpec);
|
||||
final ViewGroup.LayoutParams lp = getLayoutParams();
|
||||
if (lp.height == ViewGroup.LayoutParams.MATCH_PARENT && lp.width == ViewGroup.LayoutParams.WRAP_CONTENT) {
|
||||
super.onMeasure(heightMeasureSpec, heightMeasureSpec);
|
||||
setMeasuredDimension(height, height);
|
||||
super.onMeasure(makeSpec(heightMeasureSpec, MeasureSpec.EXACTLY), makeSpec(heightMeasureSpec, MeasureSpec.EXACTLY));
|
||||
} else if (lp.width == ViewGroup.LayoutParams.MATCH_PARENT && lp.height == ViewGroup.LayoutParams.WRAP_CONTENT) {
|
||||
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
|
||||
setMeasuredDimension(width, width);
|
||||
super.onMeasure(makeSpec(widthMeasureSpec, MeasureSpec.EXACTLY), makeSpec(widthMeasureSpec, MeasureSpec.EXACTLY));
|
||||
} else {
|
||||
if (width > height) {
|
||||
super.onMeasure(heightMeasureSpec, heightMeasureSpec);
|
||||
setMeasuredDimension(height, height);
|
||||
super.onMeasure(makeSpec(heightMeasureSpec, MeasureSpec.EXACTLY), makeSpec(heightMeasureSpec, MeasureSpec.EXACTLY));
|
||||
} else {
|
||||
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
|
||||
setMeasuredDimension(width, width);
|
||||
super.onMeasure(makeSpec(widthMeasureSpec, MeasureSpec.EXACTLY), makeSpec(widthMeasureSpec, MeasureSpec.EXACTLY));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static int makeSpec(int spec, int mode) {
|
||||
return MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(spec), mode);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@id/reply"
|
||||
android:icon="@drawable/ic_action_reply"
|
||||
android:title="@string/reply"
|
||||
app:showAsAction="always" />
|
||||
<item
|
||||
android:id="@id/retweet"
|
||||
android:icon="@drawable/ic_action_retweet"
|
||||
android:title="@string/retweet"
|
||||
app:showAsAction="always" />
|
||||
<item
|
||||
android:id="@id/favorite"
|
||||
android:icon="@drawable/ic_action_star"
|
||||
android:title="@string/favorite"
|
||||
app:showAsAction="always" />
|
||||
<item
|
||||
android:id="@id/share"
|
||||
android:icon="@drawable/ic_action_share"
|
||||
android:title="@string/share"
|
||||
app:actionProviderClass="org.mariotaku.twidere.menu.SupportStatusShareProvider"
|
||||
app:showAsAction="always" />
|
||||
<item
|
||||
android:id="@id/copy"
|
||||
android:icon="@drawable/ic_action_copy"
|
||||
android:title="@android:string/copy" />
|
||||
<item
|
||||
android:id="@id/translate"
|
||||
android:icon="@drawable/ic_action_translate"
|
||||
android:title="@string/translate" />
|
||||
<item
|
||||
android:id="@id/add_to_filter"
|
||||
android:icon="@drawable/ic_action_speaker_muted"
|
||||
android:title="@string/add_to_filter" />
|
||||
<item
|
||||
android:id="@id/set_color"
|
||||
android:icon="@drawable/ic_action_color_palette"
|
||||
android:title="@string/set_color" />
|
||||
<item
|
||||
android:id="@id/set_nickname"
|
||||
android:icon="@drawable/ic_action_edit"
|
||||
android:title="@string/set_nickname" />
|
||||
<item
|
||||
android:id="@id/delete"
|
||||
android:icon="@drawable/ic_action_delete"
|
||||
android:title="@string/delete"
|
||||
android:visible="false" />
|
||||
<item
|
||||
android:id="@id/open_with_account"
|
||||
android:icon="@drawable/ic_action_accounts"
|
||||
android:title="@string/open_with_account" />
|
||||
|
||||
</menu>
|
|
@ -1,56 +1,27 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Twidere - Twitter client for Android
|
||||
~
|
||||
~ Copyright (C) 2012-2015 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/>.
|
||||
-->
|
||||
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<item
|
||||
android:id="@id/reply"
|
||||
android:icon="@drawable/ic_action_reply"
|
||||
android:title="@string/reply"
|
||||
app:showAsAction="always"/>
|
||||
<item
|
||||
android:id="@id/retweet"
|
||||
android:icon="@drawable/ic_action_retweet"
|
||||
android:title="@string/retweet"
|
||||
app:showAsAction="always"/>
|
||||
<item
|
||||
android:id="@id/favorite"
|
||||
android:icon="@drawable/ic_action_star"
|
||||
android:title="@string/favorite"
|
||||
app:showAsAction="always"/>
|
||||
<item
|
||||
android:id="@id/share"
|
||||
android:icon="@drawable/ic_action_share"
|
||||
android:title="@string/share"
|
||||
app:actionProviderClass="org.mariotaku.twidere.menu.SupportStatusShareProvider"
|
||||
app:showAsAction="always"/>
|
||||
<item
|
||||
android:id="@id/copy"
|
||||
android:icon="@drawable/ic_action_copy"
|
||||
android:title="@android:string/copy"/>
|
||||
<item
|
||||
android:id="@id/translate"
|
||||
android:icon="@drawable/ic_action_translate"
|
||||
android:title="@string/translate"/>
|
||||
<item
|
||||
android:id="@id/add_to_filter"
|
||||
android:icon="@drawable/ic_action_speaker_muted"
|
||||
android:title="@string/add_to_filter"/>
|
||||
<item
|
||||
android:id="@id/set_color"
|
||||
android:icon="@drawable/ic_action_color_palette"
|
||||
android:title="@string/set_color"/>
|
||||
<item
|
||||
android:id="@id/set_nickname"
|
||||
android:icon="@drawable/ic_action_edit"
|
||||
android:title="@string/set_nickname"/>
|
||||
<item
|
||||
android:id="@id/delete"
|
||||
android:icon="@drawable/ic_action_delete"
|
||||
android:title="@string/delete"
|
||||
android:visible="false"/>
|
||||
<item
|
||||
android:id="@id/open_with_account"
|
||||
android:icon="@drawable/ic_action_accounts"
|
||||
android:title="@string/open_with_account"/>
|
||||
|
||||
android:id="@+id/current_status"
|
||||
android:icon="@drawable/ic_action_twitter"
|
||||
android:title="@string/current_status"
|
||||
app:showAsAction="always" />
|
||||
</menu>
|
|
@ -796,4 +796,5 @@
|
|||
<string name="user_mentioned_you"><xliff:g id="name">%s</xliff:g> mentioned you</string>
|
||||
<string name="cant_load_all_replies_message">Can\'t load all replies. <a href=\"#dialog\";>Why?</a></string>
|
||||
<string name="cant_load_all_replies_explanation">Due to Twitter\'s limitation to third party twitter apps, Twidere has no access to replies to a tweet, there\'s no guarantee that Twidere can load all replies to a tweet.</string>
|
||||
<string name="current_status">Current tweet</string>
|
||||
</resources>
|
Loading…
Reference in New Issue