mirror of
https://github.com/TwidereProject/Twidere-Android
synced 2025-02-17 04:00:48 +01:00
finished account selection in dashboard, but will redesign lately
This commit is contained in:
parent
5fc7b03a7c
commit
2be77fd05d
@ -40,6 +40,7 @@ import android.support.v4.util.Pair;
|
|||||||
import android.support.v4.view.MenuItemCompat;
|
import android.support.v4.view.MenuItemCompat;
|
||||||
import android.support.v7.internal.view.SupportMenuInflater;
|
import android.support.v7.internal.view.SupportMenuInflater;
|
||||||
import android.support.v7.widget.ActionMenuView;
|
import android.support.v7.widget.ActionMenuView;
|
||||||
|
import android.support.v7.widget.ActionMenuView.OnMenuItemClickListener;
|
||||||
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.RecyclerView.Adapter;
|
import android.support.v7.widget.RecyclerView.Adapter;
|
||||||
@ -47,6 +48,7 @@ import android.support.v7.widget.RecyclerView.ViewHolder;
|
|||||||
import android.view.ContextThemeWrapper;
|
import android.view.ContextThemeWrapper;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -55,13 +57,13 @@ import android.widget.CompoundButton.OnCheckedChangeListener;
|
|||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.ListAdapter;
|
import android.widget.ListAdapter;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.Switch;
|
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.commonsware.cwac.merge.MergeAdapter;
|
import com.commonsware.cwac.merge.MergeAdapter;
|
||||||
import com.nostra13.universalimageloader.core.assist.FailReason;
|
import com.nostra13.universalimageloader.core.assist.FailReason;
|
||||||
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
|
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.mariotaku.twidere.R;
|
import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.activity.FiltersActivity;
|
import org.mariotaku.twidere.activity.FiltersActivity;
|
||||||
import org.mariotaku.twidere.activity.SettingsActivity;
|
import org.mariotaku.twidere.activity.SettingsActivity;
|
||||||
@ -86,6 +88,8 @@ import org.mariotaku.twidere.util.content.SupportFragmentReloadCursorObserver;
|
|||||||
import org.mariotaku.twidere.view.ShapedImageView;
|
import org.mariotaku.twidere.view.ShapedImageView;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import static org.mariotaku.twidere.util.Utils.openUserFavorites;
|
import static org.mariotaku.twidere.util.Utils.openUserFavorites;
|
||||||
import static org.mariotaku.twidere.util.Utils.openUserLists;
|
import static org.mariotaku.twidere.util.Utils.openUserLists;
|
||||||
@ -117,6 +121,7 @@ public class AccountsDashboardFragment extends BaseSupportListFragment implement
|
|||||||
|
|
||||||
private Context mThemedContext;
|
private Context mThemedContext;
|
||||||
private ImageLoaderWrapper mImageLoader;
|
private ImageLoaderWrapper mImageLoader;
|
||||||
|
private SupportAccountActionProvider mAccountActionProvider;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
|
public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
|
||||||
@ -173,8 +178,10 @@ public class AccountsDashboardFragment extends BaseSupportListFragment implement
|
|||||||
@Override
|
@Override
|
||||||
public void onLoadFinished(final Loader<Cursor> loader, final Cursor data) {
|
public void onLoadFinished(final Loader<Cursor> loader, final Cursor data) {
|
||||||
final Menu menu = mAccountsToggleMenu.getMenu();
|
final Menu menu = mAccountsToggleMenu.getMenu();
|
||||||
final SupportAccountActionProvider provider = (SupportAccountActionProvider) MenuItemCompat.getActionProvider(menu.findItem(MENU_SELECT_ACCOUNT));
|
mAccountActionProvider = (SupportAccountActionProvider) MenuItemCompat.getActionProvider(menu.findItem(MENU_SELECT_ACCOUNT));
|
||||||
|
mAccountActionProvider.setExclusive(false);
|
||||||
final ArrayList<ParcelableAccount> accounts = new ArrayList<>();
|
final ArrayList<ParcelableAccount> accounts = new ArrayList<>();
|
||||||
|
final Set<Long> activatedIds = new HashSet<>();
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
data.moveToFirst();
|
data.moveToFirst();
|
||||||
final Indices indices = new Indices(data);
|
final Indices indices = new Indices(data);
|
||||||
@ -182,8 +189,11 @@ public class AccountsDashboardFragment extends BaseSupportListFragment implement
|
|||||||
while (!data.isAfterLast()) {
|
while (!data.isAfterLast()) {
|
||||||
final ParcelableAccount account = new ParcelableAccount(data, indices);
|
final ParcelableAccount account = new ParcelableAccount(data, indices);
|
||||||
accounts.add(account);
|
accounts.add(account);
|
||||||
if (defaultId < 0 && account.is_activated) {
|
if (account.is_activated) {
|
||||||
defaultId = account.account_id;
|
if (defaultId < 0) {
|
||||||
|
defaultId = account.account_id;
|
||||||
|
}
|
||||||
|
activatedIds.add(account.account_id);
|
||||||
}
|
}
|
||||||
data.moveToNext();
|
data.moveToNext();
|
||||||
}
|
}
|
||||||
@ -191,7 +201,9 @@ public class AccountsDashboardFragment extends BaseSupportListFragment implement
|
|||||||
mAccountsAdapter.setSelectedAccountId(mPreferences.getLong(KEY_DEFAULT_ACCOUNT_ID, defaultId));
|
mAccountsAdapter.setSelectedAccountId(mPreferences.getLong(KEY_DEFAULT_ACCOUNT_ID, defaultId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
provider.setAccounts(accounts.toArray(new ParcelableAccount[accounts.size()]));
|
mAccountActionProvider.setAccounts(accounts.toArray(new ParcelableAccount[accounts.size()]));
|
||||||
|
mAccountActionProvider.setSelectedAccountIds(ArrayUtils.toPrimitive(activatedIds.toArray(new Long[activatedIds.size()])));
|
||||||
|
|
||||||
mAccountsAdapter.changeCursor(data);
|
mAccountsAdapter.changeCursor(data);
|
||||||
updateAccountOptionsSeparatorLabel();
|
updateAccountOptionsSeparatorLabel();
|
||||||
updateDefaultAccountState();
|
updateDefaultAccountState();
|
||||||
@ -212,12 +224,6 @@ public class AccountsDashboardFragment extends BaseSupportListFragment implement
|
|||||||
final OptionItem option = (OptionItem) item;
|
final OptionItem option = (OptionItem) item;
|
||||||
switch (option.id) {
|
switch (option.id) {
|
||||||
case MENU_SEARCH: {
|
case MENU_SEARCH: {
|
||||||
// final FragmentActivity a = getActivity();
|
|
||||||
// if (a instanceof HomeActivity) {
|
|
||||||
// ((HomeActivity) a).openSearchView(account);
|
|
||||||
// } else {
|
|
||||||
// getActivity().onSearchRequested();
|
|
||||||
// }
|
|
||||||
final Intent intent = new Intent(getActivity(), QuickSearchBarActivity.class);
|
final Intent intent = new Intent(getActivity(), QuickSearchBarActivity.class);
|
||||||
intent.putExtra(EXTRA_ACCOUNT_ID, account.account_id);
|
intent.putExtra(EXTRA_ACCOUNT_ID, account.account_id);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
@ -347,6 +353,19 @@ public class AccountsDashboardFragment extends BaseSupportListFragment implement
|
|||||||
mAccountsToggleMenu = (ActionMenuView) mAccountSelectorView.findViewById(R.id.toggle_menu);
|
mAccountsToggleMenu = (ActionMenuView) mAccountSelectorView.findViewById(R.id.toggle_menu);
|
||||||
final SupportMenuInflater menuInflater = new SupportMenuInflater(context);
|
final SupportMenuInflater menuInflater = new SupportMenuInflater(context);
|
||||||
menuInflater.inflate(R.menu.action_dashboard_timeline_toggle, mAccountsToggleMenu.getMenu());
|
menuInflater.inflate(R.menu.action_dashboard_timeline_toggle, mAccountsToggleMenu.getMenu());
|
||||||
|
mAccountsToggleMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
|
if (item.getGroupId() != SupportAccountActionProvider.MENU_GROUP) return false;
|
||||||
|
final ParcelableAccount[] accounts = mAccountActionProvider.getAccounts();
|
||||||
|
final ParcelableAccount account = accounts[item.getOrder()];
|
||||||
|
final ContentValues values = new ContentValues();
|
||||||
|
values.put(Accounts.IS_ACTIVATED, !account.is_activated);
|
||||||
|
final String where = Accounts.ACCOUNT_ID + " = " + account.account_id;
|
||||||
|
mResolver.update(Accounts.CONTENT_URI, values, where, null);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
mAccountProfileContainer.setOnClickListener(this);
|
mAccountProfileContainer.setOnClickListener(this);
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ import android.view.MenuItem;
|
|||||||
import android.view.SubMenu;
|
import android.view.SubMenu;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.mariotaku.twidere.TwidereConstants;
|
import org.mariotaku.twidere.TwidereConstants;
|
||||||
import org.mariotaku.twidere.model.ParcelableAccount;
|
import org.mariotaku.twidere.model.ParcelableAccount;
|
||||||
|
|
||||||
@ -17,7 +18,8 @@ public class AccountActionProvider extends ActionProvider implements TwidereCons
|
|||||||
|
|
||||||
private ParcelableAccount[] mAccounts;
|
private ParcelableAccount[] mAccounts;
|
||||||
|
|
||||||
private long mAccountId;
|
private long[] mAccountIds;
|
||||||
|
private boolean mExclusive;
|
||||||
|
|
||||||
public AccountActionProvider(final Context context, final ParcelableAccount[] accounts) {
|
public AccountActionProvider(final Context context, final ParcelableAccount[] accounts) {
|
||||||
super(context);
|
super(context);
|
||||||
@ -45,27 +47,38 @@ public class AccountActionProvider extends ActionProvider implements TwidereCons
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPrepareSubMenu(final SubMenu subMenu) {
|
public void onPrepareSubMenu(final SubMenu subMenu) {
|
||||||
if (mAccounts == null) return;
|
|
||||||
subMenu.removeGroup(MENU_GROUP);
|
subMenu.removeGroup(MENU_GROUP);
|
||||||
for (final ParcelableAccount account : mAccounts) {
|
if (mAccounts == null) return;
|
||||||
final MenuItem item = subMenu.add(MENU_GROUP, Menu.NONE, 0, account.name);
|
for (int i = 0, j = mAccounts.length; i < j; i++) {
|
||||||
|
final ParcelableAccount account = mAccounts[i];
|
||||||
|
final MenuItem item = subMenu.add(MENU_GROUP, Menu.NONE, i, account.name);
|
||||||
final Intent intent = new Intent();
|
final Intent intent = new Intent();
|
||||||
intent.putExtra(EXTRA_ACCOUNT, account);
|
intent.putExtra(EXTRA_ACCOUNT, account);
|
||||||
item.setIntent(intent);
|
item.setIntent(intent);
|
||||||
}
|
}
|
||||||
subMenu.setGroupCheckable(MENU_GROUP, true, true);
|
subMenu.setGroupCheckable(MENU_GROUP, true, mExclusive);
|
||||||
|
if (mAccountIds == null) return;
|
||||||
for (int i = 0, j = subMenu.size(); i < j; i++) {
|
for (int i = 0, j = subMenu.size(); i < j; i++) {
|
||||||
final MenuItem item = subMenu.getItem(i);
|
final MenuItem item = subMenu.getItem(i);
|
||||||
final Intent intent = item.getIntent();
|
final Intent intent = item.getIntent();
|
||||||
final ParcelableAccount account = intent.getParcelableExtra(EXTRA_ACCOUNT);
|
final ParcelableAccount account = intent.getParcelableExtra(EXTRA_ACCOUNT);
|
||||||
if (account.account_id == mAccountId) {
|
if (ArrayUtils.contains(mAccountIds, account.account_id)) {
|
||||||
item.setChecked(true);
|
item.setChecked(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAccountId(final long accountId) {
|
public boolean isExclusive() {
|
||||||
mAccountId = accountId;
|
return mExclusive;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setExclusive(boolean exclusive) {
|
||||||
|
mExclusive = exclusive;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSelectedAccountIds(final long... accountIds) {
|
||||||
|
mAccountIds = accountIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ import android.view.MenuItem;
|
|||||||
import android.view.SubMenu;
|
import android.view.SubMenu;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.mariotaku.twidere.TwidereConstants;
|
import org.mariotaku.twidere.TwidereConstants;
|
||||||
import org.mariotaku.twidere.model.ParcelableAccount;
|
import org.mariotaku.twidere.model.ParcelableAccount;
|
||||||
|
|
||||||
@ -36,18 +37,32 @@ public class SupportAccountActionProvider extends ActionProvider implements Twid
|
|||||||
|
|
||||||
private ParcelableAccount[] mAccounts;
|
private ParcelableAccount[] mAccounts;
|
||||||
|
|
||||||
private long mAccountId;
|
private long[] mAccountIds;
|
||||||
private boolean mExclusive;
|
private boolean mExclusive;
|
||||||
|
|
||||||
public SupportAccountActionProvider(final Context context, final ParcelableAccount[] accounts) {
|
public SupportAccountActionProvider(final Context context, final ParcelableAccount[] accounts) {
|
||||||
super(context);
|
super(context);
|
||||||
mAccounts = accounts;
|
setAccounts(accounts);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SupportAccountActionProvider(final Context context) {
|
public SupportAccountActionProvider(final Context context) {
|
||||||
this(context, ParcelableAccount.getAccounts(context, false, false));
|
this(context, ParcelableAccount.getAccounts(context, false, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ParcelableAccount[] getAccounts() {
|
||||||
|
return mAccounts;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onPerformDefaultAction() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isExclusive() {
|
||||||
|
return mExclusive;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasSubMenu() {
|
public boolean hasSubMenu() {
|
||||||
return true;
|
return true;
|
||||||
@ -62,33 +77,33 @@ public class SupportAccountActionProvider extends ActionProvider implements Twid
|
|||||||
mAccounts = accounts;
|
mAccounts = accounts;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setExclusive(boolean exclusive) {
|
|
||||||
mExclusive = exclusive;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPrepareSubMenu(final SubMenu subMenu) {
|
public void onPrepareSubMenu(final SubMenu subMenu) {
|
||||||
if (mAccounts == null) return;
|
|
||||||
subMenu.removeGroup(MENU_GROUP);
|
subMenu.removeGroup(MENU_GROUP);
|
||||||
for (final ParcelableAccount account : mAccounts) {
|
if (mAccounts == null) return;
|
||||||
final MenuItem item = subMenu.add(MENU_GROUP, Menu.NONE, 0, account.name);
|
for (int i = 0, j = mAccounts.length; i < j; i++) {
|
||||||
|
final ParcelableAccount account = mAccounts[i];
|
||||||
|
final MenuItem item = subMenu.add(MENU_GROUP, Menu.NONE, i, account.name);
|
||||||
final Intent intent = new Intent();
|
final Intent intent = new Intent();
|
||||||
intent.putExtra(EXTRA_ACCOUNT, account);
|
intent.putExtra(EXTRA_ACCOUNT, account);
|
||||||
item.setIntent(intent);
|
item.setIntent(intent);
|
||||||
}
|
}
|
||||||
subMenu.setGroupCheckable(MENU_GROUP, true, mExclusive);
|
subMenu.setGroupCheckable(MENU_GROUP, true, mExclusive);
|
||||||
|
if (mAccountIds == null) return;
|
||||||
for (int i = 0, j = subMenu.size(); i < j; i++) {
|
for (int i = 0, j = subMenu.size(); i < j; i++) {
|
||||||
final MenuItem item = subMenu.getItem(i);
|
final MenuItem item = subMenu.getItem(i);
|
||||||
final Intent intent = item.getIntent();
|
if (ArrayUtils.contains(mAccountIds, mAccounts[i].account_id)) {
|
||||||
final ParcelableAccount account = intent.getParcelableExtra(EXTRA_ACCOUNT);
|
|
||||||
if (account.account_id == mAccountId) {
|
|
||||||
item.setChecked(true);
|
item.setChecked(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAccountId(final long accountId) {
|
public void setExclusive(boolean exclusive) {
|
||||||
mAccountId = accountId;
|
mExclusive = exclusive;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSelectedAccountIds(final long... accountIds) {
|
||||||
|
mAccountIds = accountIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -182,7 +182,7 @@ public class MultiSelectEventHandler implements Constants, ActionMode.Callback,
|
|||||||
final ParcelableAccount account = intent.getParcelableExtra(EXTRA_ACCOUNT);
|
final ParcelableAccount account = intent.getParcelableExtra(EXTRA_ACCOUNT);
|
||||||
mMultiSelectManager.setAccountId(account.account_id);
|
mMultiSelectManager.setAccountId(account.account_id);
|
||||||
if (mAccountActionProvider != null) {
|
if (mAccountActionProvider != null) {
|
||||||
mAccountActionProvider.setAccountId(account.account_id);
|
mAccountActionProvider.setSelectedAccountIds(account.account_id);
|
||||||
}
|
}
|
||||||
mode.invalidate();
|
mode.invalidate();
|
||||||
}
|
}
|
||||||
@ -193,7 +193,7 @@ public class MultiSelectEventHandler implements Constants, ActionMode.Callback,
|
|||||||
public boolean onCreateActionMode(final ActionMode mode, final Menu menu) {
|
public boolean onCreateActionMode(final ActionMode mode, final Menu menu) {
|
||||||
mode.getMenuInflater().inflate(R.menu.action_multi_select_contents, menu);
|
mode.getMenuInflater().inflate(R.menu.action_multi_select_contents, menu);
|
||||||
mAccountActionProvider = (AccountActionProvider) menu.findItem(MENU_SELECT_ACCOUNT).getActionProvider();
|
mAccountActionProvider = (AccountActionProvider) menu.findItem(MENU_SELECT_ACCOUNT).getActionProvider();
|
||||||
mAccountActionProvider.setAccountId(mMultiSelectManager.getFirstSelectAccountId());
|
mAccountActionProvider.setSelectedAccountIds(mMultiSelectManager.getFirstSelectAccountId());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@id/select_account"
|
android:id="@id/select_account"
|
||||||
android:icon="@drawable/ic_action_user"
|
android:icon="@drawable/ic_action_more_vertical"
|
||||||
android:title="@string/select_account"
|
android:title="@string/select_account"
|
||||||
app:actionProviderClass="org.mariotaku.twidere.menu.SupportAccountActionProvider"
|
app:actionProviderClass="org.mariotaku.twidere.menu.SupportAccountActionProvider"
|
||||||
app:showAsAction="always"/>
|
app:showAsAction="always"/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user