diff options
Diffstat (limited to 'app/src/main/java/net')
23 files changed, 228 insertions, 255 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/IntentRouter.java b/app/src/main/java/net/lacolaco/smileessence/IntentRouter.java index 24af812b..f081f03c 100644 --- a/app/src/main/java/net/lacolaco/smileessence/IntentRouter.java +++ b/app/src/main/java/net/lacolaco/smileessence/IntentRouter.java @@ -134,7 +134,7 @@ public class IntentRouter { } private static void showUserDialog(MainActivity activity, String screenName) { - CommandOpenUserDetail openUserDetail = new CommandOpenUserDetail(activity, screenName, activity.getCurrentAccount()); + CommandOpenUserDetail openUserDetail = new CommandOpenUserDetail(activity, screenName); openUserDetail.execute(); } diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java index 429b09ff..c060c691 100644 --- a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java +++ b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java @@ -298,7 +298,7 @@ public class MainActivity extends Activity { public void openSearchPage(final String query) { SearchFragment fragment = pagerAdapter.getFragment(SearchFragment.class); if (fragment != null) { - fragment.startSearch(getCurrentAccount(), query); + fragment.startSearch(query); openSearchPage(); } } @@ -306,7 +306,7 @@ public class MainActivity extends Activity { public void openUserListPage(String listFullName) { UserListFragment fragment = pagerAdapter.getFragment(UserListFragment.class); if (fragment != null) { - fragment.startUserList(getCurrentAccount(), listFullName); + fragment.startUserList(listFullName); openUserListPage(); } } diff --git a/app/src/main/java/net/lacolaco/smileessence/command/Command.java b/app/src/main/java/net/lacolaco/smileessence/command/Command.java index cd8a3ec9..1be37412 100644 --- a/app/src/main/java/net/lacolaco/smileessence/command/Command.java +++ b/app/src/main/java/net/lacolaco/smileessence/command/Command.java @@ -58,19 +58,19 @@ public abstract class Command implements IViewModel { public static List<Command> getAllCommands(Activity activity) { List<Command> commands = new ArrayList<>(); - commands.addAll(getStatusCommands(activity, null, null)); - commands.addAll(getUserCommands(activity, null, null)); + commands.addAll(getStatusCommands(activity, null)); + commands.addAll(getUserCommands(activity, null)); return commands; } - public static List<Command> getUserCommands(Activity activity, User user, Account account) { + public static List<Command> getUserCommands(Activity activity, User user) { List<Command> commands = new ArrayList<>(); commands.add(new UserCommandReply(activity, user)); commands.add(new UserCommandAddToReply(activity, user)); - commands.add(new UserCommandSendMessage(activity, user, account)); - commands.add(new UserCommandBlock(activity, user, account)); - commands.add(new UserCommandUnblock(activity, user, account)); - commands.add(new UserCommandReportForSpam(activity, user, account)); + commands.add(new UserCommandSendMessage(activity, user)); + commands.add(new UserCommandBlock(activity, user)); + commands.add(new UserCommandUnblock(activity, user)); + commands.add(new UserCommandReportForSpam(activity, user)); commands.add(new UserCommandOpenFavstar(activity, user)); commands.add(new UserCommandOpenAclog(activity, user)); commands.add(new UserCommandOpenTwilog(activity, user)); @@ -78,11 +78,11 @@ public abstract class Command implements IViewModel { return commands; } - public static List<Command> getStatusCommands(Activity activity, Tweet tweet, Account account) { + public static List<Command> getStatusCommands(Activity activity, Tweet tweet) { List<Command> commands = new ArrayList<>(); commands.add(new StatusCommandAddToReply(activity, tweet)); - commands.add(new StatusCommandOpenTalkView(activity, tweet, account)); - commands.add(new StatusCommandFavAndRT(activity, tweet, account)); + commands.add(new StatusCommandOpenTalkView(activity, tweet)); + commands.add(new StatusCommandFavAndRT(activity, tweet)); commands.add(new StatusCommandOpenQuoteDialog(activity, tweet)); commands.add(new StatusCommandShare(activity, tweet)); commands.add(new StatusCommandOpenInBrowser(activity, tweet)); @@ -91,14 +91,14 @@ public abstract class Command implements IViewModel { commands.add(new StatusCommandCopy(activity, tweet)); commands.add(new StatusCommandSearchOnGoogle(activity, tweet)); commands.add(new StatusCommandTofuBuster(activity, tweet)); - commands.add(new StatusCommandNanigaja(activity, tweet, account)); - commands.add(new StatusCommandMakeAnonymous(activity, tweet, account)); - commands.add(new StatusCommandCongratulate(activity, tweet, account)); + commands.add(new StatusCommandNanigaja(activity, tweet)); + commands.add(new StatusCommandMakeAnonymous(activity, tweet)); + commands.add(new StatusCommandCongratulate(activity, tweet)); commands.add(new StatusCommandReview(activity, tweet)); return commands; } - public static List<Command> getMessageCommands(Activity activity, DirectMessage message, Account account) { + public static List<Command> getMessageCommands(Activity activity, DirectMessage message) { List<Command> commands = new ArrayList<>(); commands.add(new MessageCommandShare(activity, message)); commands.add(new MessageCommandCopyTextToClipboard(activity, message)); diff --git a/app/src/main/java/net/lacolaco/smileessence/command/CommandOpenUserDetail.java b/app/src/main/java/net/lacolaco/smileessence/command/CommandOpenUserDetail.java index 4e9f9a85..5349b13a 100644 --- a/app/src/main/java/net/lacolaco/smileessence/command/CommandOpenUserDetail.java +++ b/app/src/main/java/net/lacolaco/smileessence/command/CommandOpenUserDetail.java @@ -27,7 +27,6 @@ package net.lacolaco.smileessence.command; import android.app.Activity; import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.activity.MainActivity; -import net.lacolaco.smileessence.entity.Account; import net.lacolaco.smileessence.notification.NotificationType; import net.lacolaco.smileessence.notification.Notificator; import net.lacolaco.smileessence.twitter.task.ShowUserTask; @@ -42,7 +41,7 @@ public class CommandOpenUserDetail extends Command { // --------------------------- CONSTRUCTORS --------------------------- - public CommandOpenUserDetail(Activity activity, String screenName, Account account) { + public CommandOpenUserDetail(Activity activity, String screenName) { super(-1, activity); this.screenName = screenName; } diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/Account.java b/app/src/main/java/net/lacolaco/smileessence/entity/Account.java index 66d3cfbe..a19fc946 100644 --- a/app/src/main/java/net/lacolaco/smileessence/entity/Account.java +++ b/app/src/main/java/net/lacolaco/smileessence/entity/Account.java @@ -114,7 +114,12 @@ public class Account extends Model { //--- helper methods public boolean canDelete(Tweet tweet) { - return tweet.getUser().getId() == getUserId(); + return tweet.getUser() == getUser(); + } + + public boolean canDelete(DirectMessage message) { + return message.getSender() == getUser() || + message.getRecipient() == getUser(); } public boolean canRetweet(Tweet tweet) { diff --git a/app/src/main/java/net/lacolaco/smileessence/view/SearchFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/SearchFragment.java index 77b5ff13..1442454e 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/SearchFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/SearchFragment.java @@ -54,7 +54,6 @@ import net.lacolaco.smileessence.view.adapter.SearchListAdapter; import net.lacolaco.smileessence.view.dialog.SelectSearchQueryDialogFragment; import net.lacolaco.smileessence.viewmodel.StatusViewModel; import twitter4j.Query; -import twitter4j.Twitter; import java.util.List; @@ -84,7 +83,7 @@ public class SearchFragment extends CustomListFragment<SearchListAdapter> implem final MainActivity activity = (MainActivity) getActivity(); String lastUsedSearchQuery = activity.getLastSearch(); if (!TextUtils.isEmpty(lastUsedSearchQuery)) { - startSearch(activity.getCurrentAccount(), lastUsedSearchQuery); + startSearch(lastUsedSearchQuery); } } @@ -94,7 +93,7 @@ public class SearchFragment extends CustomListFragment<SearchListAdapter> implem public void onClick(View v) { switch (v.getId()) { case R.id.button_search_queries: { - openSearchQueryDialog((MainActivity) getActivity()); + openSearchQueryDialog(); break; } case R.id.button_search_execute: { @@ -135,7 +134,7 @@ public class SearchFragment extends CustomListFragment<SearchListAdapter> implem String queryString = adapter.getQuery(); if (TextUtils.isEmpty(queryString)) { new UIHandler().post(() -> { - notifyTextEmpty(activity); + notifyTextEmpty(); refreshView.onRefreshComplete(); }); return; @@ -172,12 +171,11 @@ public class SearchFragment extends CustomListFragment<SearchListAdapter> implem public void onPullUpToRefresh(final PullToRefreshBase<ListView> refreshView) { final MainActivity activity = (MainActivity) getActivity(); final Account currentAccount = activity.getCurrentAccount(); - Twitter twitter = currentAccount.getTwitter(); final SearchListAdapter adapter = getAdapter(); String queryString = adapter.getQuery(); if (TextUtils.isEmpty(queryString)) { new UIHandler().post(() -> { - notifyTextEmpty(activity); + notifyTextEmpty(); refreshView.onRefreshComplete(); }); return; @@ -239,17 +237,14 @@ public class SearchFragment extends CustomListFragment<SearchListAdapter> implem editText = getEditText(page); editText.setOnFocusChangeListener(this); editText.setText(adapter.getQuery()); - editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { - if (i == EditorInfo.IME_ACTION_SEARCH || - keyEvent != null && - keyEvent.getAction() == KeyEvent.ACTION_DOWN && - keyEvent.getKeyCode() == KeyEvent.KEYCODE_ENTER) { - search(); - } - return true; + editText.setOnEditorActionListener((textView, i, keyEvent) -> { + if (i == EditorInfo.IME_ACTION_SEARCH || + keyEvent != null && + keyEvent.getAction() == KeyEvent.ACTION_DOWN && + keyEvent.getKeyCode() == KeyEvent.KEYCODE_ENTER) { + search(); } + return true; }); editText.setMovementMethod(new ArrowKeyMovementMethod() { @Override @@ -289,16 +284,16 @@ public class SearchFragment extends CustomListFragment<SearchListAdapter> implem imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); } - private void notifyTextEmpty(MainActivity activity) { + private void notifyTextEmpty() { Notificator.getInstance().publish(R.string.notice_search_text_empty); } - private void openSearchQueryDialog(final MainActivity mainActivity) { + private void openSearchQueryDialog() { if (SearchQuery.getAll().size() == 0) { Notificator.getInstance().publish(R.string.notice_no_query_exists); return; } - DialogHelper.showDialog(mainActivity, new SelectSearchQueryDialogFragment() { + DialogHelper.showDialog(getActivity(), new SelectSearchQueryDialogFragment() { @Override protected void executeCommand(Command command) { super.executeCommand(command); @@ -331,7 +326,7 @@ public class SearchFragment extends CustomListFragment<SearchListAdapter> implem } } - public void startSearch(final Account account, final String queryString) { + public void startSearch(final String queryString) { ((MainActivity) getActivity()).setLastSearch(queryString); if (!TextUtils.isEmpty(queryString)) { final SearchListAdapter adapter = getAdapter(); @@ -342,14 +337,14 @@ public class SearchFragment extends CustomListFragment<SearchListAdapter> implem query.setQuery(queryString); query.setCount(((MainActivity) getActivity()).getRequestCountPerPage()); query.setResultType(Query.RECENT); - new SearchTask(account, query) + new SearchTask(((MainActivity) getActivity()).getCurrentAccount(), query) .onDoneUI(queryResult -> { if (queryResult != null) { List<twitter4j.Status> tweets = queryResult.getTweets(); for (int i = tweets.size() - 1; i >= 0; i--) { twitter4j.Status status = tweets.get(i); if (!status.isRetweet()) { - StatusViewModel viewModel = new StatusViewModel(Tweet.fromTwitter(status, account.getUserId())); + StatusViewModel viewModel = new StatusViewModel(Tweet.fromTwitter(status, ((MainActivity) getActivity()).getCurrentAccount().getUserId())); adapter.addToTop(viewModel); StatusFilter.getInstance().filter(viewModel); } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/SettingFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/SettingFragment.java index ce0bcd28..e98a56db 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/SettingFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/SettingFragment.java @@ -95,13 +95,10 @@ public class SettingFragment extends PreferenceFragment implements OnSharedPrefe getString(R.string.dialog_title_about)); DialogHelper.showDialog(getActivity(), informationDialog); } else if (key.contentEquals(getString(R.string.key_setting_clear_account))) { - ConfirmDialogFragment.show(getActivity(), getString(R.string.dialog_confirm_clear_account), new Runnable() { - @Override - public void run() { - Notificator.getInstance().publish(R.string.notice_cleared_account); - Account.deleteAll(); - getActivity().finish(); - } + ConfirmDialogFragment.show(getActivity(), getString(R.string.dialog_confirm_clear_account), () -> { + Notificator.getInstance().publish(R.string.notice_cleared_account); + Account.deleteAll(); + getActivity().finish(); }, false); } else if (key.contentEquals(getString(R.string.key_setting_licenses))) { openLicenseActivity(); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/UserListFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/UserListFragment.java index d3231b4e..2307f4fb 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/UserListFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/UserListFragment.java @@ -75,7 +75,7 @@ public class UserListFragment extends CustomListFragment<UserListListAdapter> im String lastUserList = getMainActivity().getLastUserList(); if (!TextUtils.isEmpty(lastUserList)) { - startUserList(((MainActivity) getActivity()).getCurrentAccount(), lastUserList); + startUserList(lastUserList); } } // --------------------- Interface OnClickListener --------------------- @@ -85,7 +85,7 @@ public class UserListFragment extends CustomListFragment<UserListListAdapter> im int id = v.getId(); switch (id) { case R.id.button_userlist_lists: { - openUserListsDialog(getMainActivity()); + openUserListsDialog(); break; } } @@ -101,7 +101,7 @@ public class UserListFragment extends CustomListFragment<UserListListAdapter> im String listFullName = adapter.getListFullName(); if (TextUtils.isEmpty(listFullName)) { new UIHandler().post(() -> { - notifyTextEmpty(activity); + notifyTextEmpty(); refreshView.onRefreshComplete(); }); return; @@ -130,7 +130,7 @@ public class UserListFragment extends CustomListFragment<UserListListAdapter> im String listFullName = adapter.getListFullName(); if (TextUtils.isEmpty(listFullName)) { new UIHandler().post(() -> { - notifyTextEmpty(activity); + notifyTextEmpty(); refreshView.onRefreshComplete(); }); return; @@ -162,7 +162,7 @@ public class UserListFragment extends CustomListFragment<UserListListAdapter> im public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View page = inflater.inflate(R.layout.fragment_userlist, container, false); PullToRefreshListView listView = getListView(page); - UserListListAdapter adapter = (UserListListAdapter) getAdapter(); + UserListListAdapter adapter = getAdapter(); listView.setAdapter(adapter); listView.setOnScrollListener(this); listView.setOnRefreshListener(this); @@ -182,12 +182,12 @@ public class UserListFragment extends CustomListFragment<UserListListAdapter> im return (ImageButton) page.findViewById(R.id.button_userlist_lists); } - private void notifyTextEmpty(MainActivity activity) { + private void notifyTextEmpty() { Notificator.getInstance().publish(R.string.notice_userlist_not_selected); } - private void openUserListsDialog(final MainActivity mainActivity) { - DialogHelper.showDialog(mainActivity, new SelectUserListDialogFragment() { + private void openUserListsDialog() { + DialogHelper.showDialog(getActivity(), new SelectUserListDialogFragment() { @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); @@ -196,13 +196,13 @@ public class UserListFragment extends CustomListFragment<UserListListAdapter> im }); } - public void startUserList(Account account, String listFullName) { + public void startUserList(String listFullName) { getMainActivity().setLastUserList(listFullName); final UserListListAdapter adapter = getAdapter(); adapter.setListFullName(listFullName); adapter.clear(); adapter.updateForce(); - new UserListStatusesTask(account, listFullName) + new UserListStatusesTask(getMainActivity().getCurrentAccount(), listFullName) .setCount(((MainActivity) getActivity()).getRequestCountPerPage()) .onFail(x -> Notificator.getInstance().publish(R.string.notice_error_get_list, NotificationType.ALERT)) .onDoneUI(tweets -> { diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/ChooseTemplateDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/ChooseTemplateDialogFragment.java index efe2aeab..4e7c6ab9 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/ChooseTemplateDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/ChooseTemplateDialogFragment.java @@ -24,8 +24,6 @@ package net.lacolaco.smileessence.view.dialog; -import android.app.Activity; -import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.command.Command; import net.lacolaco.smileessence.command.post.PostCommandUseTemplate; import net.lacolaco.smileessence.entity.Template; @@ -40,9 +38,7 @@ public class ChooseTemplateDialogFragment extends MenuDialogFragment { @Override protected void setMenuItems(final CustomListAdapter<Command> adapter) { - final MainActivity activity = (MainActivity) getActivity(); - - List<Command> commands = getCommands(activity); + List<Command> commands = getCommands(); for (Command command : commands) { adapter.addToBottom(command); } @@ -51,11 +47,11 @@ public class ChooseTemplateDialogFragment extends MenuDialogFragment { // -------------------------- OTHER METHODS -------------------------- - public List<Command> getCommands(Activity activity) { + public List<Command> getCommands() { ArrayList<Command> list = new ArrayList<>(); List<Template> templates = Template.getAll(); for (Template template : templates) { - list.add(new PostCommandUseTemplate(activity, template)); + list.add(new PostCommandUseTemplate(getActivity(), template)); } return list; } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/HashtagDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/HashtagDialogFragment.java index 9f679879..d705338a 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/HashtagDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/HashtagDialogFragment.java @@ -27,7 +27,6 @@ package net.lacolaco.smileessence.view.dialog; import android.app.Activity; import android.app.Dialog; import android.os.Bundle; -import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.command.Command; import net.lacolaco.smileessence.command.CommandPasteToPost; import net.lacolaco.smileessence.command.CommandSaveAsTemplate; @@ -59,10 +58,8 @@ public class HashtagDialogFragment extends MenuDialogFragment { @Override protected void setMenuItems(final CustomListAdapter<Command> adapter) { - final MainActivity activity = (MainActivity) getActivity(); - String text = getHashtagText(); - List<Command> commands = getCommands(activity, text); + List<Command> commands = getCommands(text); Command.filter(commands); for (Command command : commands) { adapter.addToBottom(command); @@ -79,7 +76,8 @@ public class HashtagDialogFragment extends MenuDialogFragment { // -------------------------- OTHER METHODS -------------------------- - public List<Command> getCommands(Activity activity, String text) { + public List<Command> getCommands(String text) { + Activity activity = getActivity(); ArrayList<Command> commands = new ArrayList<>(); commands.add(new CommandSaveAsTemplate(activity, text)); commands.add(new CommandPasteToPost(activity, text)); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.java index 8a15228d..16385385 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.java @@ -24,7 +24,6 @@ package net.lacolaco.smileessence.view.dialog; -import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.graphics.drawable.ColorDrawable; @@ -74,9 +73,6 @@ public class MessageDetailDialogFragment extends StackableDialogFragment impleme @Override public void onClick(final View v) { - final MainActivity activity = (MainActivity) getActivity(); - final Account account = activity.getCurrentAccount(); - DirectMessage message = DirectMessage.fetch(getMessageID()); if (message != null) { switch (v.getId()) { @@ -85,11 +81,11 @@ public class MessageDetailDialogFragment extends StackableDialogFragment impleme break; } case R.id.button_status_detail_delete: { - deleteMessage(account, message); + deleteMessage(message); break; } case R.id.button_status_detail_menu: { - openMenu(activity); + openMenu(); break; } default: { @@ -113,7 +109,7 @@ public class MessageDetailDialogFragment extends StackableDialogFragment impleme Notificator.getInstance().publish(R.string.notice_error_get_messages); return new DisposeDialog(getActivity()); } - View header = getTitleView(activity, account, selectedMessage); + View header = getTitleView(selectedMessage); ListView listView = (ListView) header.findViewById(R.id.listview_status_detail_reply_to); final MessageListAdapter adapter = new MessageListAdapter(getActivity()); listView.setAdapter(adapter); @@ -160,9 +156,9 @@ public class MessageDetailDialogFragment extends StackableDialogFragment impleme // -------------------------- OTHER METHODS -------------------------- - public void deleteMessage(final Account account, final DirectMessage message) { + public void deleteMessage(final DirectMessage message) { ConfirmDialogFragment.show(getActivity(), getString(R.string.dialog_confirm_commands), () -> { - new DeleteMessageTask(account, message.getId()) + new DeleteMessageTask(((MainActivity) getActivity()).getCurrentAccount(), message.getId()) .onDone(x -> Notificator.getInstance().publish(R.string.notice_message_delete_succeeded)) .onFail(x -> Notificator.getInstance().publish(R.string.notice_message_delete_failed, NotificationType.ALERT)) .execute(); @@ -176,19 +172,20 @@ public class MessageDetailDialogFragment extends StackableDialogFragment impleme DialogHelper.showDialog(getActivity(), dialogFragment); } - private ArrayList<Command> getCommands(Activity activity, DirectMessage message, Account account) { + private ArrayList<Command> getCommands(DirectMessage message) { ArrayList<Command> commands = new ArrayList<>(); // URL for (String url : message.getUrlsExpanded()) { - commands.add(new CommandOpenURL(activity, url)); + commands.add(new CommandOpenURL(getActivity(), url)); } for (String url : message.getMediaUrls()) { - commands.add(new CommandOpenURL(activity, url)); + commands.add(new CommandOpenURL(getActivity(), url)); } return commands; } - private View getTitleView(MainActivity activity, Account account, DirectMessage message) { + private View getTitleView(DirectMessage message) { + MainActivity activity = (MainActivity) getActivity(); View view = activity.getLayoutInflater().inflate(R.layout.dialog_status_detail, null); View messageHeader = view.findViewById(R.id.layout_status_header); MessageViewModel statusViewModel = new MessageViewModel(message); @@ -199,24 +196,19 @@ public class MessageDetailDialogFragment extends StackableDialogFragment impleme ImageButton reply = (ImageButton) view.findViewById(R.id.button_status_detail_reply); reply.setOnClickListener(this); ImageButton delete = (ImageButton) view.findViewById(R.id.button_status_detail_delete); - delete.setVisibility(isDeletable(account, message) ? View.VISIBLE : View.GONE); + delete.setVisibility(activity.getCurrentAccount().canDelete(message) ? View.VISIBLE : View.GONE); delete.setOnClickListener(this); ImageButton menuButton = (ImageButton) view.findViewById(R.id.button_status_detail_menu); menuButton.setOnClickListener(this); LinearLayout commandsLayout = (LinearLayout) view.findViewById(R.id.linearlayout_status_detail_menu); commandsLayout.setClickable(true); // commands - ArrayList<Command> commands = getCommands(activity, message, account); + ArrayList<Command> commands = getCommands(message); Command.filter(commands); for (final Command command : commands) { View commandView = command.getView(activity, activity.getLayoutInflater(), null); commandView.setBackgroundColor(getResources().getColor(R.color.transparent)); - commandView.setOnClickListener(new ListItemClickListener(activity, new Runnable() { - @Override - public void run() { - command.execute(); - } - })); + commandView.setOnClickListener(new ListItemClickListener(activity, command::execute)); commandsLayout.addView(commandView); } // status only parts @@ -227,13 +219,9 @@ public class MessageDetailDialogFragment extends StackableDialogFragment impleme return view; } - private boolean isDeletable(Account account, DirectMessage message) { - return message.getSender().getId() == account.getUserId(); - } - - private void openMenu(MainActivity activity) { + private void openMenu() { MessageMenuDialogFragment fragment = new MessageMenuDialogFragment(); fragment.setMessageID(getMessageID()); - DialogHelper.showDialog(activity, fragment); + DialogHelper.showDialog(getActivity(), fragment); } } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageMenuDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageMenuDialogFragment.java index 07288218..0c96e3ea 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageMenuDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageMenuDialogFragment.java @@ -26,9 +26,7 @@ package net.lacolaco.smileessence.view.dialog; import android.app.Activity; import android.os.Bundle; -import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.command.*; -import net.lacolaco.smileessence.entity.Account; import net.lacolaco.smileessence.entity.DirectMessage; import net.lacolaco.smileessence.view.adapter.CustomListAdapter; @@ -57,12 +55,9 @@ public class MessageMenuDialogFragment extends MenuDialogFragment { @Override protected void setMenuItems(final CustomListAdapter<Command> adapter) { - final MainActivity activity = (MainActivity) getActivity(); - final Account account = activity.getCurrentAccount(); - DirectMessage message = DirectMessage.fetch(getMessageID()); if (message != null) { - List<Command> commands = getCommands(activity, message, account); + List<Command> commands = getCommands(message); Command.filter(commands); for (Command command : commands) { adapter.addToBottom(command); @@ -75,16 +70,17 @@ public class MessageMenuDialogFragment extends MenuDialogFragment { // -------------------------- OTHER METHODS -------------------------- - public void addBottomCommands(Activity activity, DirectMessage message, Account account, ArrayList<Command> commands) { + public void addBottomCommands(DirectMessage message, ArrayList<Command> commands) { + Activity activity = getActivity(); commands.add(new CommandSaveAsTemplate(activity, message.getText())); //User if (message.getSender() != message.getRecipient()) { - commands.add(new CommandOpenUserDetail(activity, message.getRecipient().getScreenName(), account)); + commands.add(new CommandOpenUserDetail(activity, message.getRecipient().getScreenName())); } for (String screenName : message.getMentions()) { - commands.add(new CommandOpenUserDetail(activity, screenName, account)); + commands.add(new CommandOpenUserDetail(activity, screenName)); } - for (Command command : getHashtagCommands(activity, message)) { + for (Command command : getHashtagCommands(message)) { commands.add(command); } // Media @@ -96,18 +92,21 @@ public class MessageMenuDialogFragment extends MenuDialogFragment { } } - public boolean addMainCommands(Activity activity, DirectMessage message, Account account, ArrayList<Command> commands) { - return commands.addAll(Command.getMessageCommands(activity, message, account)); + public boolean addMainCommands(DirectMessage message, ArrayList<Command> commands) { + Activity activity = getActivity(); + return commands.addAll(Command.getMessageCommands(activity, message)); } - public List<Command> getCommands(Activity activity, DirectMessage message, Account account) { + public List<Command> getCommands(DirectMessage message) { + Activity activity = getActivity(); ArrayList<Command> commands = new ArrayList<>(); - addMainCommands(activity, message, account, commands); - addBottomCommands(activity, message, account, commands); + addMainCommands(message, commands); + addBottomCommands(message, commands); return commands; } - private ArrayList<Command> getHashtagCommands(Activity activity, DirectMessage status) { + private ArrayList<Command> getHashtagCommands(DirectMessage status) { + Activity activity = getActivity(); ArrayList<Command> commands = new ArrayList<>(); if (status.getHashtags() != null) { for (String hashtag : status.getHashtags()) { diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/PostMenuDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/PostMenuDialogFragment.java index 2563ad46..6b99d036 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/PostMenuDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/PostMenuDialogFragment.java @@ -26,7 +26,6 @@ package net.lacolaco.smileessence.view.dialog; import android.app.Activity; import net.lacolaco.smileessence.R; -import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.command.Command; import net.lacolaco.smileessence.command.CommandOpenTemplateList; import net.lacolaco.smileessence.command.post.PostCommandMakeAnonymous; @@ -44,9 +43,7 @@ public class PostMenuDialogFragment extends MenuDialogFragment { @Override protected void setMenuItems(final CustomListAdapter<Command> adapter) { - final MainActivity activity = (MainActivity) getActivity(); - - List<Command> commands = getCommands(activity); + List<Command> commands = getCommands(); Command.filter(commands); if (commands.isEmpty()) { Notificator.getInstance().publish(R.string.notice_no_commands_available); @@ -66,7 +63,8 @@ public class PostMenuDialogFragment extends MenuDialogFragment { // -------------------------- OTHER METHODS -------------------------- - public List<Command> getCommands(Activity activity) { + public List<Command> getCommands() { + Activity activity = getActivity(); ArrayList<Command> commands = new ArrayList<>(); commands.add(new CommandOpenTemplateList(activity)); commands.add(new PostCommandMorse(activity)); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/QuoteDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/QuoteDialogFragment.java index 80054abb..0d79e4ce 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/QuoteDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/QuoteDialogFragment.java @@ -26,7 +26,6 @@ package net.lacolaco.smileessence.view.dialog; import android.app.Activity; import android.os.Bundle; -import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.command.Command; import net.lacolaco.smileessence.command.status.StatusCommandTextQuote; import net.lacolaco.smileessence.command.status.StatusCommandURLQuote; @@ -58,11 +57,10 @@ public class QuoteDialogFragment extends MenuDialogFragment { @Override protected void setMenuItems(final CustomListAdapter<Command> adapter) { - final MainActivity activity = (MainActivity) getActivity(); Tweet tweet = Tweet.fetch(getStatusID()); if (tweet != null) { - List<Command> commands = getCommands(activity, tweet); + List<Command> commands = getCommands(tweet); Command.filter(commands); for (Command command : commands) { adapter.addToBottom(command); @@ -75,7 +73,8 @@ public class QuoteDialogFragment extends MenuDialogFragment { // -------------------------- OTHER METHODS -------------------------- - public List<Command> getCommands(Activity activity, Tweet tweet) { + public List<Command> getCommands(Tweet tweet) { + Activity activity = getActivity(); ArrayList<Command> commands = new ArrayList<>(); commands.add(new StatusCommandTextQuote(activity, tweet)); commands.add(new StatusCommandURLQuote(activity, tweet)); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/SelectImageDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/SelectImageDialogFragment.java index 329def30..2d8ecf28 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/SelectImageDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/SelectImageDialogFragment.java @@ -24,6 +24,7 @@ package net.lacolaco.smileessence.view.dialog; +import android.app.Activity; import android.app.Dialog; import android.content.ContentValues; import android.content.Intent; @@ -45,9 +46,7 @@ public class SelectImageDialogFragment extends MenuDialogFragment { @Override protected void setMenuItems(final CustomListAdapter<Command> adapter) { - final MainActivity activity = (MainActivity) getActivity(); - - List<Command> commands = getCommands(activity); + List<Command> commands = getCommands(); Command.filter(commands); for (Command command : commands) { adapter.addToBottom(command); @@ -64,12 +63,13 @@ public class SelectImageDialogFragment extends MenuDialogFragment { // -------------------------- OTHER METHODS -------------------------- - public List<Command> getCommands(final MainActivity activity) { + public List<Command> getCommands() { + Activity activity = getActivity(); ArrayList<Command> commands = new ArrayList<>(); commands.add(new Command(-1, activity) { @Override public boolean execute() { - startGallery(activity); + startGallery(); return true; } @@ -86,7 +86,7 @@ public class SelectImageDialogFragment extends MenuDialogFragment { commands.add(new Command(-1, activity) { @Override public boolean execute() { - startCamera(activity); + startCamera(); return true; } @@ -103,7 +103,8 @@ public class SelectImageDialogFragment extends MenuDialogFragment { return commands; } - private void startCamera(MainActivity activity) { + private void startCamera() { + MainActivity activity = (MainActivity) getActivity(); ContentValues values = new ContentValues(); String filename = System.currentTimeMillis() + ".jpg"; values.put(MediaStore.MediaColumns.TITLE, filename); @@ -118,9 +119,9 @@ public class SelectImageDialogFragment extends MenuDialogFragment { IntentUtils.startActivityForResultIfFound(activity, intent, MainActivity.REQUEST_GET_PICTURE_FROM_CAMERA); } - private void startGallery(MainActivity activity) { + private void startGallery() { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); - IntentUtils.startActivityForResultIfFound(activity, intent, MainActivity.REQUEST_GET_PICTURE_FROM_GALLERY); + IntentUtils.startActivityForResultIfFound(getActivity(), intent, MainActivity.REQUEST_GET_PICTURE_FROM_GALLERY); } } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/SelectSearchQueryDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/SelectSearchQueryDialogFragment.java index df0a399f..24bec636 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/SelectSearchQueryDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/SelectSearchQueryDialogFragment.java @@ -24,6 +24,7 @@ package net.lacolaco.smileessence.view.dialog; +import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.os.Bundle; @@ -50,15 +51,12 @@ public class SelectSearchQueryDialogFragment extends MenuDialogFragment implemen final CommandOpenSearch command = (CommandOpenSearch) parent.getItemAtPosition(position); final CustomListAdapter<Command> adapter = (CustomListAdapter<Command>) parent.getAdapter(); - ConfirmDialogFragment.show(getActivity(), getString(R.string.dialog_confirm_delete_query), new Runnable() { - @Override - public void run() { - adapter.removeItem(command); - adapter.update(); + ConfirmDialogFragment.show(getActivity(), getString(R.string.dialog_confirm_delete_query), () -> { + adapter.removeItem(command); + adapter.update(); - command.getQuery().delete(); - Notificator.getInstance().publish(R.string.notice_search_query_deleted); - } + command.getQuery().delete(); + Notificator.getInstance().publish(R.string.notice_search_query_deleted); }, false); return true; @@ -68,9 +66,7 @@ public class SelectSearchQueryDialogFragment extends MenuDialogFragment implemen @Override protected void setMenuItems(final CustomListAdapter<Command> adapter) { - final MainActivity activity = (MainActivity) getActivity(); - - List<Command> commands = getCommands(activity); + List<Command> commands = getCommands(); Command.filter(commands); for (Command command : commands) { adapter.addToBottom(command); @@ -101,7 +97,8 @@ public class SelectSearchQueryDialogFragment extends MenuDialogFragment implemen // -------------------------- OTHER METHODS -------------------------- - public List<Command> getCommands(final MainActivity activity) { + public List<Command> getCommands() { + Activity activity = getActivity(); ArrayList<Command> commands = new ArrayList<>(); final List<SearchQuery> queries = SearchQuery.getAll(); if (queries != null) { diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/SelectUserListDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/SelectUserListDialogFragment.java index e31f1b28..035c2d41 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/SelectUserListDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/SelectUserListDialogFragment.java @@ -24,10 +24,10 @@ package net.lacolaco.smileessence.view.dialog; +import android.app.Activity; import android.app.Dialog; import android.os.Bundle; import net.lacolaco.smileessence.R; -import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.command.Command; import net.lacolaco.smileessence.command.CommandOpenUserList; import net.lacolaco.smileessence.data.UserListCache; @@ -42,9 +42,7 @@ public class SelectUserListDialogFragment extends MenuDialogFragment { @Override protected void setMenuItems(final CustomListAdapter<Command> adapter) { - final MainActivity activity = (MainActivity) getActivity(); - - List<Command> commands = getCommands(activity); + List<Command> commands = getCommands(); Command.filter(commands); for (Command command : commands) { adapter.addToBottom(command); @@ -61,7 +59,8 @@ public class SelectUserListDialogFragment extends MenuDialogFragment { // -------------------------- OTHER METHODS -------------------------- - public List<Command> getCommands(final MainActivity activity) { + public List<Command> getCommands() { + Activity activity = getActivity(); ArrayList<Command> commands = new ArrayList<>(); final String[] lists = UserListCache.getInstance().getAll(); if (lists != null) { diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/SimpleDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/SimpleDialogFragment.java index 50cfce00..a9853800 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/SimpleDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/SimpleDialogFragment.java @@ -26,7 +26,6 @@ package net.lacolaco.smileessence.view.dialog; import android.app.AlertDialog; import android.app.Dialog; -import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -70,11 +69,8 @@ public class SimpleDialogFragment extends StackableDialogFragment { return new AlertDialog.Builder(getActivity()) .setTitle(title) .setView(contentView) - .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - } + .setPositiveButton(R.string.alert_dialog_ok, (dialog, which) -> { + dialog.dismiss(); }) .create(); } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.java index 8c459cbc..79640608 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.java @@ -24,13 +24,13 @@ package net.lacolaco.smileessence.view.dialog; -import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.view.View; import android.widget.*; +import net.lacolaco.smileessence.Application; import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.command.Command; @@ -43,6 +43,7 @@ import net.lacolaco.smileessence.notification.NotificationType; import net.lacolaco.smileessence.notification.Notificator; import net.lacolaco.smileessence.twitter.TweetBuilder; import net.lacolaco.smileessence.twitter.task.*; +import net.lacolaco.smileessence.util.Themes; import net.lacolaco.smileessence.util.UIObserverBundle; import net.lacolaco.smileessence.view.DialogHelper; import net.lacolaco.smileessence.view.adapter.StatusListAdapter; @@ -78,23 +79,22 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen @Override public void onClick(final View v) { MainActivity activity = (MainActivity) getActivity(); - Account account = activity.getCurrentAccount(); switch (v.getId()) { case R.id.button_status_detail_reply: { - replyToStatus(activity, account, tweet); + replyToStatus(tweet); break; } case R.id.button_status_detail_retweet: { - toggleRetweet(activity, account, tweet); + toggleRetweet(tweet); break; } case R.id.button_status_detail_favorite: { - toggleFavorite(activity, account, tweet); + toggleFavorite(tweet); break; } case R.id.button_status_detail_delete: { - deleteStatus(activity, account, tweet); + deleteStatus(tweet); break; } case R.id.button_status_detail_menu: { @@ -120,7 +120,7 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen MainActivity activity = (MainActivity) getActivity(); Account account = activity.getCurrentAccount(); - View header = getTitleView(activity, account, tweet); + View header = getTitleView(tweet); ListView listView = (ListView) header.findViewById(R.id.listview_status_detail_reply_to); final StatusListAdapter adapter = new StatusListAdapter(getActivity()); @@ -141,7 +141,9 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen return new AlertDialog.Builder(getActivity()).setView(header).create(); } - private View getTitleView(MainActivity activity, Account account, Tweet tweet) { + private View getTitleView(Tweet tweet) { + MainActivity activity = ((MainActivity) getActivity()); + final View view = activity.getLayoutInflater().inflate(R.layout.dialog_status_detail, null); UIObserverBundle bundle = new UIObserverBundle(); view.setTag(bundle); @@ -150,21 +152,21 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen statusHeader.setClickable(false); view.setBackgroundColor(((ColorDrawable) statusHeader.getBackground()).getColor()); - updateViewReactions(view, account, tweet); - updateViewButtons(view, account, tweet); - updateViewMenu(activity, view, account, tweet); + updateViewReactions(view, tweet); + updateViewButtons(view, tweet); + updateViewMenu(view, tweet); bundle.attach(tweet, (x, changes) -> { if (changes.contains(RO.REACTION_COUNT)) - updateViewReactions(view, account,tweet); + updateViewReactions(view, tweet); if (changes.contains(RO.FAVORITERS) || changes.contains(RO.RETWEETERS)) - updateViewButtons(view, account,tweet); + updateViewButtons(view, tweet); }); return view; } - private void updateViewReactions(View view, Account account, Tweet tweet) { + private void updateViewReactions(View view, Tweet tweet) { //--- favs/RTs count ImageView favCountIcon = (ImageView) view.findViewById(R.id.image_status_detail_fav_count); TextView favCountText = (TextView) view.findViewById(R.id.textview_status_detail_fav_count); @@ -189,7 +191,11 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen } } - private void updateViewButtons(View view, Account account, Tweet tweet) { + private void updateViewButtons(View view, Tweet tweet) { + MainActivity activity = ((MainActivity) getActivity()); + int themeResId = ((Application) activity.getApplication()).getThemeResId(); + Account account = activity.getCurrentAccount(); + //--- buttons ImageButton message = (ImageButton) view.findViewById(R.id.button_status_detail_reply); message.setOnClickListener(this); @@ -204,7 +210,7 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen if (tweet.isRetweetedBy(account.getUserId())) { retweet.setImageDrawable(getResources().getDrawable(R.drawable.icon_retweet_on)); } else { - retweet.setImageDrawable(getResources().getDrawable(R.drawable.icon_retweet_off)); + retweet.setImageDrawable(Themes.getStyledDrawable(getActivity(), themeResId, R.attr.icon_retweet_off)); } } @@ -213,7 +219,7 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen if (tweet.isFavoritedBy(account.getUserId())) { favorite.setImageDrawable(getResources().getDrawable(R.drawable.icon_favorite_on)); } else { - favorite.setImageDrawable(getResources().getDrawable(R.drawable.icon_favorite_off)); + retweet.setImageDrawable(Themes.getStyledDrawable(getActivity(), themeResId, R.attr.icon_favorite_off)); } ImageButton delete = (ImageButton) view.findViewById(R.id.button_status_detail_delete); @@ -221,13 +227,14 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen delete.setVisibility(account.canDelete(tweet) ? View.VISIBLE : View.GONE); } - private void updateViewMenu(MainActivity activity, View view, Account account, Tweet tweet) { + private void updateViewMenu(View view, Tweet tweet) { + MainActivity activity = ((MainActivity) getActivity()); //--- menu ImageButton menu = (ImageButton) view.findViewById(R.id.button_status_detail_menu); menu.setOnClickListener(this); LinearLayout commandsLayout = (LinearLayout) view.findViewById(R.id.linearlayout_status_detail_menu); commandsLayout.setClickable(true); - ArrayList<Command> commands = getCommands(activity, tweet, account); + ArrayList<Command> commands = getCommands(tweet); Command.filter(commands); for (final Command command : commands) { View commandView = command.getView(activity, activity.getLayoutInflater(), null); @@ -237,12 +244,14 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen } } - private void confirm(MainActivity activity, Runnable onYes) { - ConfirmDialogFragment.show(activity, getString(R.string.dialog_confirm_commands), onYes); + private void confirm(Runnable onYes) { + ConfirmDialogFragment.show(getActivity(), getString(R.string.dialog_confirm_commands), onYes); } - private void deleteStatus(final MainActivity activity, final Account account, final Tweet tweet) { - confirm(activity, () -> { + private void deleteStatus(final Tweet tweet) { + confirm(() -> { + Account account = ((MainActivity) getActivity()).getCurrentAccount(); + new DeleteStatusTask(account, tweet.getOriginalTweet().getId()) .onDone(t -> Notificator.getInstance().publish(R.string.notice_status_delete_succeeded)) .onFail(e -> Notificator.getInstance().publish(R.string.notice_status_delete_failed, NotificationType.ALERT)) @@ -251,14 +260,14 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen }); } - private ArrayList<Command> getCommands(Activity activity, Tweet tweet, Account account) { + private ArrayList<Command> getCommands(Tweet tweet) { ArrayList<Command> commands = new ArrayList<>(); // URL for (String url : tweet.getUrlsExpanded()) { - commands.add(new CommandOpenURL(activity, url)); + commands.add(new CommandOpenURL(getActivity(), url)); } for (String url : tweet.getMediaUrls()) { - commands.add(new CommandOpenURL(activity, url)); + commands.add(new CommandOpenURL(getActivity(), url)); } return commands; } @@ -269,8 +278,10 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen DialogHelper.showDialog(activity, fragment); } - private void replyToStatus(MainActivity activity, Account account, Tweet tweet) { + private void replyToStatus(Tweet tweet) { + Account account = ((MainActivity) getActivity()).getCurrentAccount(); Tweet originalTweet = tweet.getOriginalTweet(); + TweetBuilder builder = new TweetBuilder(); builder.addScreenName(originalTweet.getUser().getScreenName()); for (String screenName : originalTweet.getMentions()) { @@ -286,10 +297,11 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen .insertText(0, text) .setInReplyToStatusID(originalTweet.getId()) .setSelection(selStart, text.length()) - .commitWithOpen(activity); + .commitWithOpen((MainActivity) getActivity()); } - private void toggleFavorite(MainActivity activity, Account account, Tweet tweet) { + private void toggleFavorite(Tweet tweet) { + Account account = ((MainActivity) getActivity()).getCurrentAccount(); if (tweet.isFavoritedBy(account.getUserId())) { new UnfavoriteTask(account, tweet.getId()) .onDone(x -> Notificator.getInstance().publish(R.string.notice_unfavorite_succeeded)) @@ -303,8 +315,9 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen } } - private void toggleRetweet(final MainActivity activity, final Account account, final Tweet tweet) { - confirm(activity, () -> { + private void toggleRetweet(final Tweet tweet) { + Account account = ((MainActivity) getActivity()).getCurrentAccount(); + confirm(() -> { if (tweet.isRetweetedBy(account.getUserId())) { new DeleteStatusTask(account, tweet.getRetweetIdBy(account.getUserId())) .onDone(t -> Notificator.getInstance().publish(R.string.notice_status_delete_succeeded)) diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusMenuDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusMenuDialogFragment.java index 5d4b2662..97a74789 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusMenuDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusMenuDialogFragment.java @@ -26,9 +26,7 @@ package net.lacolaco.smileessence.view.dialog; import android.app.Activity; import android.os.Bundle; -import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.command.*; -import net.lacolaco.smileessence.entity.Account; import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.view.adapter.CustomListAdapter; @@ -57,12 +55,10 @@ public class StatusMenuDialogFragment extends MenuDialogFragment { // ------------------------ OVERRIDE METHODS ------------------------ @Override protected void setMenuItems(final CustomListAdapter<Command> adapter) { - final MainActivity activity = (MainActivity) getActivity(); - Account account = activity.getCurrentAccount(); Tweet tweet = Tweet.fetch(getStatusID()); if (tweet != null) { - List<Command> commands = getCommands(activity, tweet, account); + List<Command> commands = getCommands(tweet); Command.filter(commands); for (Command command : commands) { adapter.addToBottom(command); @@ -75,14 +71,16 @@ public class StatusMenuDialogFragment extends MenuDialogFragment { // -------------------------- OTHER METHODS -------------------------- - public void addBottomCommands(Activity activity, Tweet tweet, Account account, ArrayList<Command> commands) { + public void addBottomCommands(Tweet tweet, ArrayList<Command> commands) { + Activity activity = getActivity(); + commands.add(new CommandSaveAsTemplate(activity, tweet.getOriginalTweet().getText())); //User - commands.add(new CommandOpenUserDetail(activity, tweet.getUser().getScreenName(), account)); + commands.add(new CommandOpenUserDetail(activity, tweet.getUser().getScreenName())); for (String screenName : new ArrayList<>(new LinkedHashSet<>(tweet.getMentions()))) { // Array#uniq - commands.add(new CommandOpenUserDetail(activity, screenName, account)); + commands.add(new CommandOpenUserDetail(activity, screenName)); } - for (Command command : getHashtagCommands(activity, tweet)) { + for (Command command : getHashtagCommands(tweet)) { commands.add(command); } // Media @@ -94,18 +92,20 @@ public class StatusMenuDialogFragment extends MenuDialogFragment { } } - public boolean addMainCommands(Activity activity, Tweet tweet, Account account, ArrayList<Command> commands) { - return commands.addAll(Command.getStatusCommands(activity, tweet, account)); + public boolean addMainCommands(Tweet tweet, ArrayList<Command> commands) { + Activity activity = getActivity(); + return commands.addAll(Command.getStatusCommands(activity, tweet)); } - public List<Command> getCommands(Activity activity, Tweet tweet, Account account) { + public List<Command> getCommands(Tweet tweet) { ArrayList<Command> commands = new ArrayList<>(); - addMainCommands(activity, tweet, account, commands); - addBottomCommands(activity, tweet, account, commands); + addMainCommands(tweet, commands); + addBottomCommands(tweet, commands); return commands; } - private ArrayList<Command> getHashtagCommands(Activity activity, Tweet tweet) { + private ArrayList<Command> getHashtagCommands(Tweet tweet) { + Activity activity = getActivity(); ArrayList<Command> commands = new ArrayList<>(); for (String hashtag : tweet.getHashtags()) { commands.add(new CommandOpenHashtagDialog(activity, hashtag)); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java index 6cb0393d..a07c73ec 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java @@ -24,7 +24,6 @@ package net.lacolaco.smileessence.view.dialog; -import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.graphics.drawable.Drawable; @@ -105,13 +104,11 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements @Override public void onClick(final View v) { - MainActivity activity = (MainActivity) getActivity(); - Account account = activity.getCurrentAccount(); User user = User.fetch(getUserID()); if (user != null) { switch (v.getId()) { case R.id.imageview_user_detail_menu: { - openUserMenu(activity, user); + openUserMenu(user); break; } case R.id.imageview_user_detail_icon: { @@ -139,7 +136,7 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements break; } case R.id.button_user_detail_follow: { - ConfirmDialogFragment.show(activity, getString(R.string.dialog_confirm_commands), () -> toggleFollowing(user, account, activity)); + ConfirmDialogFragment.show(getActivity(), getString(R.string.dialog_confirm_commands), () -> toggleFollowing(user)); break; } } @@ -191,7 +188,6 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements @Override public Dialog onCreateDialog(Bundle savedInstanceState) { MainActivity activity = (MainActivity) getActivity(); - Account account = activity.getCurrentAccount(); User user = User.fetch(getUserID()); if (user == null) { return new DisposeDialog(activity); @@ -235,7 +231,7 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements tabHost.addTab(tab2); tabHost.setCurrentTab(0); - initUserData(user, account); + initUserData(user); return new AlertDialog.Builder(activity) .setView(v) @@ -243,7 +239,8 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements .create(); } - private void executeUserTimelineTask(final User user, final Account account, final StatusListAdapter adapter) { + private void executeUserTimelineTask(final User user, final StatusListAdapter adapter) { + Account account = ((MainActivity) getActivity()).getCurrentAccount(); tabHost.getTabWidget().getChildTabViewAt(1).setVisibility(View.GONE); new UserTimelineTask(account, user.getId()) .setCount(((MainActivity) getActivity()).getRequestCountPerPage()) @@ -300,15 +297,15 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements ImageCache.getInstance().setImageToView(user.getProfileBannerUrl(), imageViewHeader); } - private void initUserData(User user, final Account account) { + private void initUserData(User user) { updateUserDataBasic(user); updateUserDataDetail(user); MainActivity activity = (MainActivity) getActivity(); adapter = new StatusListAdapter(activity); listViewTimeline.setAdapter(adapter); - executeUserTimelineTask(user, account, adapter); - updateRelationship(activity, user.getId()); + executeUserTimelineTask(user, adapter); + updateRelationship(user.getId()); observerBundle.attach(user, (x, changes) -> { if (changes.contains(RO.BASIC)) @@ -318,9 +315,9 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements }); } - private void lockFollowButton(Activity activity) { + private void lockFollowButton() { buttonFollow.setText(R.string.user_detail_loading); - buttonFollow.setBackground(activity.getResources().getDrawable(R.drawable.button_round_gray)); + buttonFollow.setBackground(getActivity().getResources().getDrawable(R.drawable.button_round_gray)); buttonFollow.setEnabled(false); } @@ -328,7 +325,7 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements new CommandOpenURL(getActivity(), url).execute(); } - private void openUserMenu(final MainActivity activity, final User user) { + private void openUserMenu(final User user) { UserMenuDialogFragment menuFragment = new UserMenuDialogFragment() { @Override protected void executeCommand(Command command) { @@ -337,12 +334,12 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements if (UserDetailDialogFragment.this.isDetached()) { return; } - updateRelationship(activity, user.getId()); + updateRelationship(user.getId()); }, 1000); } }; menuFragment.setUserID(user.getId()); - DialogHelper.showDialog(activity, menuFragment); + DialogHelper.showDialog(getActivity(), menuFragment); } private void setFollowButtonState(boolean isFollowing, Drawable unfollowColor, Drawable followColor) { @@ -352,14 +349,15 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements buttonFollow.setEnabled(true); } - private void toggleFollowing(final User user, final Account account, final Activity activity) { - lockFollowButton(activity); + private void toggleFollowing(final User user) { + Account account = ((MainActivity) getActivity()).getCurrentAccount(); + lockFollowButton(); Boolean isFollowing = buttonFollow.getTag() != null ? (Boolean) buttonFollow.getTag() : false; if (isFollowing) { new UnfollowTask(account, user.getId()) .onDoneUI(result -> { Notificator.getInstance().publish(R.string.notice_unfollow_succeeded); - updateRelationship(activity, user.getId()); + updateRelationship(user.getId()); buttonFollow.setEnabled(true); }) .onFail(x -> @@ -369,7 +367,7 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements new FollowTask(account, user.getId()) .onDoneUI(result -> { Notificator.getInstance().publish(R.string.notice_follow_succeeded); - updateRelationship(activity, user.getId()); + updateRelationship(user.getId()); buttonFollow.setEnabled(true); }) .onFail(x -> Notificator.getInstance().publish(R.string.notice_follow_failed, NotificationType.ALERT)) @@ -400,18 +398,18 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements } } - private void updateRelationship(Activity activity, final long userId) { - MainActivity mainActivity = (MainActivity) activity; + private void updateRelationship(final long userId) { + MainActivity mainActivity = (MainActivity) getActivity(); Account account = mainActivity.getCurrentAccount(); if (userId == account.getUserId()) { textViewFollowed.setText(R.string.user_detail_followed_is_me); buttonFollow.setVisibility(View.GONE); } else { - int theme = ((Application) activity.getApplication()).getThemeResId(); - lockFollowButton(activity); + int theme = ((Application) mainActivity.getApplication()).getThemeResId(); + lockFollowButton(); textViewFollowed.setText(R.string.user_detail_loading); - final Drawable red = Themes.getStyledDrawable(activity, theme, R.attr.button_round_red); - final Drawable blue = Themes.getStyledDrawable(activity, theme, R.attr.button_round_blue); + final Drawable red = Themes.getStyledDrawable(mainActivity, theme, R.attr.button_round_red); + final Drawable blue = Themes.getStyledDrawable(mainActivity, theme, R.attr.button_round_blue); new ShowFriendshipTask(account, userId).onDoneUI(relationship -> { boolean isFollowing = relationship.isSourceFollowingTarget(); boolean isFollowed = relationship.isSourceFollowedByTarget(); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserMenuDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserMenuDialogFragment.java index e4e06409..d5db5f77 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserMenuDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserMenuDialogFragment.java @@ -26,10 +26,8 @@ package net.lacolaco.smileessence.view.dialog; import android.app.Activity; import android.os.Bundle; -import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.command.Command; import net.lacolaco.smileessence.command.CommandSearchOnTwitter; -import net.lacolaco.smileessence.entity.Account; import net.lacolaco.smileessence.entity.User; import net.lacolaco.smileessence.view.adapter.CustomListAdapter; @@ -58,12 +56,9 @@ public class UserMenuDialogFragment extends MenuDialogFragment { @Override protected void setMenuItems(final CustomListAdapter<Command> adapter) { - final MainActivity activity = (MainActivity) getActivity(); - final Account account = activity.getCurrentAccount(); - User user = User.fetch(getUserID()); if (user != null) { - List<Command> commands = getCommands(activity, user, account); + List<Command> commands = getCommands(user); Command.filter(commands); for (Command command : commands) { adapter.addToBottom(command); @@ -76,18 +71,20 @@ public class UserMenuDialogFragment extends MenuDialogFragment { // -------------------------- OTHER METHODS -------------------------- - public boolean addBottomCommands(Activity activity, User user, ArrayList<Command> commands) { + public boolean addBottomCommands(User user, ArrayList<Command> commands) { + Activity activity = getActivity(); return commands.add(new CommandSearchOnTwitter(activity, user.getScreenName())); } - public boolean addMainCommands(Activity activity, User user, Account account, ArrayList<Command> commands) { - return commands.addAll(Command.getUserCommands(activity, user, account)); + public boolean addMainCommands(User user, ArrayList<Command> commands) { + Activity activity = getActivity(); + return commands.addAll(Command.getUserCommands(activity, user)); } - public List<Command> getCommands(Activity activity, User user, Account account) { + public List<Command> getCommands(User user) { ArrayList<Command> commands = new ArrayList<>(); - addMainCommands(activity, user, account, commands); - addBottomCommands(activity, user, commands); + addMainCommands(user, commands); + addBottomCommands(user, commands); return commands; } } diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java index 31991b99..25354b55 100644 --- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java +++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java @@ -36,7 +36,6 @@ import net.lacolaco.smileessence.Application; import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.data.ImageCache; -import net.lacolaco.smileessence.entity.Account; import net.lacolaco.smileessence.entity.RO; import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.preference.UserPreferenceHelper; @@ -107,26 +106,25 @@ public class StatusViewModel implements IViewModel { convertedView.setOnClickListener(new ListItemClickListener(activity, () -> onClick(activity))); - final Account account = ((MainActivity) activity).getCurrentAccount(); - updateViewUser(activity, convertedView, account); - updateViewBody(activity, convertedView, account); - updateViewFavorited(activity, convertedView, account); - updateViewEmbeddeds(activity, convertedView, account, extendStatusURL); + updateViewUser(((MainActivity) activity), convertedView); + updateViewBody(((MainActivity) activity), convertedView); + updateViewFavorited(((MainActivity) activity), convertedView); + updateViewEmbeddeds(((MainActivity) activity), convertedView, extendStatusURL); final View view = convertedView; bundle.attach(tweet, (x, changes) -> { if (changes.contains(RO.FAVORITERS)) - updateViewFavorited(activity, view, account); + updateViewFavorited(((MainActivity) activity), view); }); bundle.attach(tweet.getUser(), (x, changes) -> { if (changes.contains(RO.BASIC)) - updateViewUser(activity, view, account); + updateViewUser(((MainActivity) activity), view); }); return convertedView; } - private void updateViewUser(Activity activity, View convertedView, Account account) { + private void updateViewUser(MainActivity activity, View convertedView) { int textSize = UserPreferenceHelper.getInstance().get(R.string.key_setting_text_size, 10); int nameStyle = UserPreferenceHelper.getInstance().get(R.string.key_setting_namestyle, 0); int theme = ((Application) activity.getApplication()).getThemeResId(); @@ -139,11 +137,11 @@ public class StatusViewModel implements IViewModel { header.setTextSize(textSize); int colorHeader = Themes.getStyledColor(activity, theme, R.attr.color_status_text_header, 0); int colorMineHeader = Themes.getStyledColor(activity, theme, R.attr.color_status_text_mine, 0); - header.setTextColor(tweet.getUser().getId() == account.getUserId() ? colorMineHeader : colorHeader); + header.setTextColor(tweet.getUser() == activity.getCurrentAccount().getUser() ? colorMineHeader : colorHeader); header.setText(NameStyles.getNameString(nameStyle, tweet.getOriginalTweet().getUser())); } - private void updateViewBody(Activity activity, View convertedView, Account account) { + private void updateViewBody(MainActivity activity, View convertedView) { int textSize = UserPreferenceHelper.getInstance().get(R.string.key_setting_text_size, 10); int theme = ((Application) activity.getApplication()).getThemeResId(); @@ -167,7 +165,7 @@ public class StatusViewModel implements IViewModel { if (tweet.isRetweet()) { int colorBgRetweet = Themes.getStyledColor(activity, theme, R.attr.color_status_bg_retweet, 0); convertedView.setBackgroundColor(colorBgRetweet); - } else if (tweet.getOriginalTweet().getMentions().contains(account.getUser().getScreenName())) { + } else if (tweet.getOriginalTweet().getMentions().contains(activity.getCurrentAccount().getUser().getScreenName())) { int colorBgMention = Themes.getStyledColor(activity, theme, R.attr.color_status_bg_mention, 0); convertedView.setBackgroundColor(colorBgMention); } else { @@ -176,12 +174,12 @@ public class StatusViewModel implements IViewModel { } } - private void updateViewFavorited(Activity activity, View convertedView, Account account) { + private void updateViewFavorited(MainActivity activity, View convertedView) { ImageView favorited = (ImageView) convertedView.findViewById(R.id.imageview_status_favorited); - favorited.setVisibility(tweet.isFavoritedBy(account.getUserId()) ? View.VISIBLE : View.GONE); + favorited.setVisibility(tweet.isFavoritedBy(activity.getCurrentAccount().getUserId()) ? View.VISIBLE : View.GONE); } - private void updateViewEmbeddeds(Activity activity, View convertedView, Account account, boolean extendStatusURL) { + private void updateViewEmbeddeds(MainActivity activity, View convertedView, boolean extendStatusURL) { for (BackgroundTask task : lastTasks) { task.cancel(); } @@ -193,7 +191,7 @@ public class StatusViewModel implements IViewModel { if (embeddedStatusIDs.size() > 0) { embeddedStatus.setVisibility(View.VISIBLE); for (long id : embeddedStatusIDs) { - BackgroundTask task = account.fetchTweet(id, embeddedTweet -> { + BackgroundTask task = activity.getCurrentAccount().fetchTweet(id, embeddedTweet -> { if (embeddedTweet != null) { StatusViewModel viewModel = new StatusViewModel(embeddedTweet); View embeddedHolder = viewModel.getView(activity, activity.getLayoutInflater(), null, false); |