feat: use AccountSwitcher for open with other account
This commit is contained in:
parent
0d4158a612
commit
f70abbbb73
|
@ -817,15 +817,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||||
UiUtils.enableOptionsMenuIcons(getActivity(), menu, R.id.edit_note);
|
UiUtils.enableOptionsMenuIcons(getActivity(), menu, R.id.edit_note);
|
||||||
}
|
}
|
||||||
boolean hasMultipleAccounts = AccountSessionManager.getInstance().getLoggedInAccounts().size() > 1;
|
boolean hasMultipleAccounts = AccountSessionManager.getInstance().getLoggedInAccounts().size() > 1;
|
||||||
MenuItem openWithAccounts = menu.findItem(R.id.open_with_account);
|
menu.findItem(R.id.open_with_account).setVisible(hasMultipleAccounts);
|
||||||
openWithAccounts.setVisible(hasMultipleAccounts);
|
|
||||||
SubMenu accountsMenu=openWithAccounts.getSubMenu();
|
|
||||||
if(hasMultipleAccounts){
|
|
||||||
accountsMenu.clear();
|
|
||||||
UiUtils.populateAccountsMenu(accountID, accountsMenu, s-> UiUtils.openURL(
|
|
||||||
getActivity(), s.getID(), account.url, false
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isOwnProfile) {
|
if(isOwnProfile) {
|
||||||
if (isInstancePixelfed()) menu.findItem(R.id.scheduled).setVisible(false);
|
if (isInstancePixelfed()) menu.findItem(R.id.scheduled).setVisible(false);
|
||||||
|
@ -962,11 +954,10 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||||
.show();
|
.show();
|
||||||
}
|
}
|
||||||
invalidateOptionsMenu();
|
invalidateOptionsMenu();
|
||||||
}else if(id==R.id.manage_user_lists){
|
}else if(id==R.id.open_with_account){
|
||||||
Bundle args=new Bundle();
|
UiUtils.pickAccount(getActivity(), accountID, R.string.sk_open_with_account, R.drawable.ic_fluent_person_swap_24_regular, session ->UiUtils.openURL(
|
||||||
args.putString("account", accountID);
|
getActivity(), session.getID(), account.url, false
|
||||||
args.putParcelable("targetAccount", Parcels.wrap(account));
|
), null);
|
||||||
Nav.go(getActivity(), AddAccountToListsFragment.class, args);
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -290,6 +290,10 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
|
||||||
Nav.go(item.parentFragment.getActivity(), ListsFragment.class, args);
|
Nav.go(item.parentFragment.getActivity(), ListsFragment.class, args);
|
||||||
}else if(id==R.id.share){
|
}else if(id==R.id.share){
|
||||||
UiUtils.openSystemShareSheet(activity, item.status);
|
UiUtils.openSystemShareSheet(activity, item.status);
|
||||||
|
}else if(id==R.id.open_with_account){
|
||||||
|
UiUtils.pickAccount(item.parentFragment.getActivity(), item.accountID, R.string.sk_open_with_account, R.drawable.ic_fluent_person_swap_24_regular, session ->UiUtils.openURL(
|
||||||
|
item.parentFragment.getActivity(), session.getID(), item.status.url, false
|
||||||
|
), null);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
@ -489,17 +493,6 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
|
||||||
Account account=item.user;
|
Account account=item.user;
|
||||||
Menu menu=optionsMenu.getMenu();
|
Menu menu=optionsMenu.getMenu();
|
||||||
|
|
||||||
MenuItem openWithAccounts = menu.findItem(R.id.open_with_account);
|
|
||||||
SubMenu accountsMenu = openWithAccounts != null ? openWithAccounts.getSubMenu() : null;
|
|
||||||
if (hasMultipleAccounts && accountsMenu != null) {
|
|
||||||
openWithAccounts.setVisible(true);
|
|
||||||
accountsMenu.clear();
|
|
||||||
UiUtils.populateAccountsMenu(item.accountID, accountsMenu, s-> UiUtils.openURL(
|
|
||||||
item.parentFragment.getActivity(), s.getID(), item.status.url, false
|
|
||||||
));
|
|
||||||
} else if (openWithAccounts != null) {
|
|
||||||
openWithAccounts.setVisible(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
String username = account.getShortUsername();
|
String username = account.getShortUsername();
|
||||||
boolean isOwnPost=AccountSessionManager.getInstance().isSelf(item.parentFragment.getAccountID(), account);
|
boolean isOwnPost=AccountSessionManager.getInstance().isSelf(item.parentFragment.getAccountID(), account);
|
||||||
|
|
|
@ -13,7 +13,6 @@ import android.app.ProgressDialog;
|
||||||
import android.content.ActivityNotFoundException;
|
import android.content.ActivityNotFoundException;
|
||||||
import android.content.ClipData;
|
import android.content.ClipData;
|
||||||
import android.content.ClipboardManager;
|
import android.content.ClipboardManager;
|
||||||
import android.content.ClipData;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
@ -38,8 +37,6 @@ import android.os.SystemClock;
|
||||||
import android.os.ext.SdkExtensions;
|
import android.os.ext.SdkExtensions;
|
||||||
import android.provider.MediaStore;
|
import android.provider.MediaStore;
|
||||||
import android.provider.OpenableColumns;
|
import android.provider.OpenableColumns;
|
||||||
import android.system.ErrnoException;
|
|
||||||
import android.system.Os;
|
|
||||||
import android.text.SpannableStringBuilder;
|
import android.text.SpannableStringBuilder;
|
||||||
import android.text.Spanned;
|
import android.text.Spanned;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
@ -51,13 +48,10 @@ import android.transition.Fade;
|
||||||
import android.transition.TransitionManager;
|
import android.transition.TransitionManager;
|
||||||
import android.transition.TransitionSet;
|
import android.transition.TransitionSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Log;
|
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.HapticFeedbackConstants;
|
import android.view.HapticFeedbackConstants;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.Gravity;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.SubMenu;
|
import android.view.SubMenu;
|
||||||
|
@ -67,7 +61,6 @@ import android.view.ViewPropertyAnimator;
|
||||||
import android.view.WindowInsets;
|
import android.view.WindowInsets;
|
||||||
import android.webkit.MimeTypeMap;
|
import android.webkit.MimeTypeMap;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.FrameLayout;
|
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.PopupMenu;
|
import android.widget.PopupMenu;
|
||||||
|
@ -78,10 +71,8 @@ import android.widget.Toast;
|
||||||
import org.joinmastodon.android.E;
|
import org.joinmastodon.android.E;
|
||||||
import org.joinmastodon.android.FileProvider;
|
import org.joinmastodon.android.FileProvider;
|
||||||
import org.joinmastodon.android.GlobalUserPreferences;
|
import org.joinmastodon.android.GlobalUserPreferences;
|
||||||
import org.joinmastodon.android.MainActivity;
|
|
||||||
import org.joinmastodon.android.MastodonApp;
|
import org.joinmastodon.android.MastodonApp;
|
||||||
import org.joinmastodon.android.R;
|
import org.joinmastodon.android.R;
|
||||||
import org.joinmastodon.android.api.CacheController;
|
|
||||||
import org.joinmastodon.android.api.MastodonAPIRequest;
|
import org.joinmastodon.android.api.MastodonAPIRequest;
|
||||||
import org.joinmastodon.android.api.MastodonErrorResponse;
|
import org.joinmastodon.android.api.MastodonErrorResponse;
|
||||||
import org.joinmastodon.android.api.StatusInteractionController;
|
import org.joinmastodon.android.api.StatusInteractionController;
|
||||||
|
@ -95,7 +86,6 @@ import org.joinmastodon.android.api.requests.accounts.RejectFollowRequest;
|
||||||
import org.joinmastodon.android.api.requests.instance.GetInstance;
|
import org.joinmastodon.android.api.requests.instance.GetInstance;
|
||||||
import org.joinmastodon.android.api.requests.lists.DeleteList;
|
import org.joinmastodon.android.api.requests.lists.DeleteList;
|
||||||
import org.joinmastodon.android.api.requests.notifications.DismissNotification;
|
import org.joinmastodon.android.api.requests.notifications.DismissNotification;
|
||||||
import org.joinmastodon.android.api.requests.search.GetSearchResults;
|
|
||||||
import org.joinmastodon.android.api.requests.statuses.CreateStatus;
|
import org.joinmastodon.android.api.requests.statuses.CreateStatus;
|
||||||
import org.joinmastodon.android.api.requests.statuses.DeleteStatus;
|
import org.joinmastodon.android.api.requests.statuses.DeleteStatus;
|
||||||
import org.joinmastodon.android.api.requests.statuses.GetStatusByID;
|
import org.joinmastodon.android.api.requests.statuses.GetStatusByID;
|
||||||
|
@ -126,7 +116,6 @@ import org.joinmastodon.android.model.Hashtag;
|
||||||
import org.joinmastodon.android.model.Relationship;
|
import org.joinmastodon.android.model.Relationship;
|
||||||
import org.joinmastodon.android.model.SearchResults;
|
import org.joinmastodon.android.model.SearchResults;
|
||||||
import org.joinmastodon.android.model.ScheduledStatus;
|
import org.joinmastodon.android.model.ScheduledStatus;
|
||||||
import org.joinmastodon.android.model.SearchResults;
|
|
||||||
import org.joinmastodon.android.model.Searchable;
|
import org.joinmastodon.android.model.Searchable;
|
||||||
import org.joinmastodon.android.model.Status;
|
import org.joinmastodon.android.model.Status;
|
||||||
import org.joinmastodon.android.ui.M3AlertDialogBuilder;
|
import org.joinmastodon.android.ui.M3AlertDialogBuilder;
|
||||||
|
@ -160,7 +149,6 @@ import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
@ -1656,17 +1644,6 @@ public class UiUtils {
|
||||||
return intent;
|
return intent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void populateAccountsMenu(String excludeAccountID, Menu menu, Consumer<AccountSession> onClick) {
|
|
||||||
List<AccountSession> sessions=AccountSessionManager.getInstance().getLoggedInAccounts();
|
|
||||||
sessions.stream().filter(s -> !s.getID().equals(excludeAccountID)).forEach(s -> {
|
|
||||||
String username = "@"+s.self.username+"@"+s.domain;
|
|
||||||
menu.add(username).setOnMenuItemClickListener((c) -> {
|
|
||||||
onClick.accept(s);
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void showFragmentForNotification(Context context, Notification n, String accountID, Bundle extras) {
|
public static void showFragmentForNotification(Context context, Notification n, String accountID, Bundle extras) {
|
||||||
if (extras == null) extras = new Bundle();
|
if (extras == null) extras = new Bundle();
|
||||||
extras.putString("account", accountID);
|
extras.putString("account", accountID);
|
||||||
|
|
|
@ -23,8 +23,6 @@
|
||||||
<!-- <item android:id="@+id/share" android:title="@string/button_share" android:icon="@drawable/ic_fluent_share_24_regular"/>-->
|
<!-- <item android:id="@+id/share" android:title="@string/button_share" android:icon="@drawable/ic_fluent_share_24_regular"/>-->
|
||||||
<item android:id="@+id/copy_link" android:title="@string/sk_copy_link_to_post" android:icon="@drawable/ic_fluent_link_24_regular"/>
|
<item android:id="@+id/copy_link" android:title="@string/sk_copy_link_to_post" android:icon="@drawable/ic_fluent_link_24_regular"/>
|
||||||
<item android:id="@+id/open_in_browser" android:title="@string/open_in_browser" android:icon="@drawable/ic_fluent_globe_24_regular"/>
|
<item android:id="@+id/open_in_browser" android:title="@string/open_in_browser" android:icon="@drawable/ic_fluent_globe_24_regular"/>
|
||||||
<item android:id="@+id/open_with_account" android:title="@string/sk_open_with_account" android:icon="@drawable/ic_fluent_person_swap_24_regular">
|
<item android:id="@+id/open_with_account" android:title="@string/sk_open_with_account" android:icon="@drawable/ic_fluent_person_swap_24_regular"/>
|
||||||
<menu android:id="@+id/accounts" />
|
|
||||||
</item>
|
|
||||||
</group>
|
</group>
|
||||||
</menu>
|
</menu>
|
|
@ -15,8 +15,6 @@
|
||||||
<group android:id="@+id/menu_group3">
|
<group android:id="@+id/menu_group3">
|
||||||
<item android:id="@+id/open_in_browser" android:title="@string/open_in_browser" android:icon="@drawable/ic_fluent_globe_24_regular"/>
|
<item android:id="@+id/open_in_browser" android:title="@string/open_in_browser" android:icon="@drawable/ic_fluent_globe_24_regular"/>
|
||||||
<item android:id="@+id/share" android:title="@string/share_user" android:icon="@drawable/ic_fluent_share_24_regular"/>
|
<item android:id="@+id/share" android:title="@string/share_user" android:icon="@drawable/ic_fluent_share_24_regular"/>
|
||||||
<item android:id="@+id/open_with_account" android:title="@string/sk_open_with_account" android:visible="false" android:icon="@drawable/ic_fluent_person_swap_24_regular">
|
<item android:id="@+id/open_with_account" android:title="@string/sk_open_with_account" android:visible="false" android:icon="@drawable/ic_fluent_person_swap_24_regular"/>
|
||||||
<menu android:id="@+id/accounts" />
|
|
||||||
</item>
|
|
||||||
</group>
|
</group>
|
||||||
</menu>
|
</menu>
|
Loading…
Reference in New Issue