use of android.support.v7.widget.helper.ItemTouchHelper.START in project Slide by ccrama.
the class CommentAdapter method setCommentStateHighlighted.
public void setCommentStateHighlighted(final CommentViewHolder holder, final Comment n, final CommentNode baseNode, boolean isReplying, boolean animate) {
if (currentlySelected != null && currentlySelected != holder) {
setCommentStateUnhighlighted(currentlySelected, currentBaseNode, true);
}
if (mContext instanceof BaseActivity) {
((BaseActivity) mContext).setShareUrl("https://reddit.com" + submission.getPermalink() + n.getFullName() + "?context=3");
}
// and expand to show all children comments
if (SettingValues.swap && holder.firstTextView.getVisibility() == View.GONE && !isReplying) {
hiddenPersons.remove(n.getFullName());
unhideAll(baseNode, holder.getAdapterPosition() + 1);
if (toCollapse.contains(n.getFullName()) && SettingValues.collapseComments) {
setViews(n.getDataNode().get("body_html").asText(), submission.getSubredditName(), holder);
}
CommentAdapterHelper.hideChildrenObject(holder.childrenNumber);
holder.commentOverflow.setVisibility(View.VISIBLE);
toCollapse.remove(n.getFullName());
} else {
currentlySelected = holder;
currentBaseNode = baseNode;
int color = Palette.getColor(n.getSubredditName());
currentSelectedItem = n.getFullName();
currentNode = baseNode;
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
resetMenu(holder.menuArea, false);
final View baseView = (SettingValues.rightHandedCommentMenu) ? inflater.inflate(R.layout.comment_menu_right_handed, holder.menuArea) : inflater.inflate(R.layout.comment_menu, holder.menuArea);
if (!isReplying) {
baseView.setVisibility(View.GONE);
if (animate) {
expand(baseView);
} else {
baseView.setVisibility(View.VISIBLE);
final int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
final int heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
baseView.measure(widthSpec, heightSpec);
View l2 = baseView.findViewById(R.id.replyArea) == null ? baseView.findViewById(R.id.innerSend) : baseView.findViewById(R.id.replyArea);
final int widthSpec2 = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
final int heightSpec2 = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
l2.measure(widthSpec2, heightSpec2);
ViewGroup.LayoutParams layoutParams = baseView.getLayoutParams();
layoutParams.height = baseView.getMeasuredHeight() - l2.getMeasuredHeight();
baseView.setLayoutParams(layoutParams);
}
}
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) holder.itemView.getLayoutParams();
params.setMargins(0, 0, 0, 0);
holder.itemView.setLayoutParams(params);
View reply = baseView.findViewById(R.id.reply);
View send = baseView.findViewById(R.id.send);
final View menu = baseView.findViewById(R.id.menu);
final View replyArea = baseView.findViewById(R.id.replyArea);
final View more = baseView.findViewById(R.id.more);
final ImageView upvote = (ImageView) baseView.findViewById(R.id.upvote);
final ImageView downvote = (ImageView) baseView.findViewById(R.id.downvote);
View discard = baseView.findViewById(R.id.discard);
final EditText replyLine = (EditText) baseView.findViewById(R.id.replyLine);
final Comment comment = baseNode.getComment();
if (ActionStates.getVoteDirection(comment) == VoteDirection.UPVOTE) {
upvote.setColorFilter(holder.textColorUp, PorterDuff.Mode.MULTIPLY);
} else if (ActionStates.getVoteDirection(comment) == VoteDirection.DOWNVOTE) {
downvote.setColorFilter(holder.textColorDown, PorterDuff.Mode.MULTIPLY);
} else {
downvote.clearColorFilter();
upvote.clearColorFilter();
}
{
final ImageView mod = (ImageView) baseView.findViewById(R.id.mod);
try {
if (UserSubscriptions.modOf.contains(submission.getSubredditName())) {
// todo
mod.setVisibility(View.GONE);
} else {
mod.setVisibility(View.GONE);
}
} catch (Exception e) {
Log.d(LogUtil.getTag(), "Error loading mod " + e.toString());
}
}
if (UserSubscriptions.modOf != null && UserSubscriptions.modOf.contains(submission.getSubredditName().toLowerCase(Locale.ENGLISH))) {
baseView.findViewById(R.id.mod).setVisibility(View.VISIBLE);
final Map<String, Integer> reports = comment.getUserReports();
final Map<String, String> reports2 = comment.getModeratorReports();
if (reports.size() + reports2.size() > 0) {
((ImageView) baseView.findViewById(R.id.mod)).setColorFilter(ContextCompat.getColor(mContext, R.color.md_red_300), PorterDuff.Mode.SRC_ATOP);
} else {
((ImageView) baseView.findViewById(R.id.mod)).setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
}
baseView.findViewById(R.id.mod).setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
CommentAdapterHelper.showModBottomSheet(CommentAdapter.this, mContext, baseNode, comment, holder, reports, reports2);
}
});
} else {
baseView.findViewById(R.id.mod).setVisibility(View.GONE);
}
final ImageView edit = (ImageView) baseView.findViewById(R.id.edit);
if (Authentication.name != null && Authentication.name.toLowerCase(Locale.ENGLISH).equals(comment.getAuthor().toLowerCase(Locale.ENGLISH)) && Authentication.didOnline) {
edit.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
CommentAdapterHelper.doCommentEdit(CommentAdapter.this, mContext, fm, baseNode, baseNode.isTopLevel() ? submission.getSelftext() : baseNode.getParent().getComment().getBody(), holder);
}
});
} else {
edit.setVisibility(View.GONE);
}
final ImageView delete = (ImageView) baseView.findViewById(R.id.delete);
if (Authentication.name != null && Authentication.name.toLowerCase(Locale.ENGLISH).equals(comment.getAuthor().toLowerCase(Locale.ENGLISH)) && Authentication.didOnline) {
delete.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
CommentAdapterHelper.deleteComment(CommentAdapter.this, mContext, baseNode, holder);
}
});
} else {
delete.setVisibility(View.GONE);
}
if (Authentication.isLoggedIn && !submission.isArchived() && !submission.isLocked() && !deleted.contains(n.getFullName()) && !comment.getAuthor().equals("[deleted]") && Authentication.didOnline) {
if (isReplying) {
baseView.setVisibility(View.VISIBLE);
final int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
final int heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
baseView.measure(widthSpec, heightSpec);
View l2 = baseView.findViewById(R.id.replyArea) == null ? baseView.findViewById(R.id.innerSend) : baseView.findViewById(R.id.replyArea);
final int widthSpec2 = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
final int heightSpec2 = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
l2.measure(widthSpec2, heightSpec2);
RelativeLayout.LayoutParams params2 = (RelativeLayout.LayoutParams) baseView.getLayoutParams();
params2.height = RelativeLayout.LayoutParams.WRAP_CONTENT;
params2.addRule(RelativeLayout.BELOW, R.id.commentOverflow);
baseView.setLayoutParams(params2);
replyArea.setVisibility(View.VISIBLE);
menu.setVisibility(View.GONE);
currentlyEditing = replyLine;
currentlyEditing.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
mPage.fastScroll.setVisibility(View.GONE);
if (mPage.fab != null) {
mPage.fab.setVisibility(View.GONE);
}
mPage.overrideFab = true;
} else if (SettingValues.fastscroll) {
mPage.fastScroll.setVisibility(View.VISIBLE);
if (mPage.fab != null) {
mPage.fab.setVisibility(View.VISIBLE);
}
mPage.overrideFab = false;
}
}
});
final TextView profile = (TextView) baseView.findViewById(R.id.profile);
changedProfile = Authentication.name;
profile.setText("/u/" + changedProfile);
profile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final HashMap<String, String> accounts = new HashMap<>();
for (String s : Authentication.authentication.getStringSet("accounts", new HashSet<String>())) {
if (s.contains(":")) {
accounts.put(s.split(":")[0], s.split(":")[1]);
} else {
accounts.put(s, "");
}
}
final ArrayList<String> keys = new ArrayList<>(accounts.keySet());
final int i = keys.indexOf(changedProfile);
AlertDialogWrapper.Builder builder = new AlertDialogWrapper.Builder(mContext);
builder.setTitle(R.string.sorting_choose);
builder.setSingleChoiceItems(keys.toArray(new String[keys.size()]), i, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changedProfile = keys.get(which);
profile.setText("/u/" + changedProfile);
}
});
builder.alwaysCallSingleChoiceCallback();
builder.setNegativeButton(R.string.btn_cancel, null);
builder.show();
}
});
replyLine.requestFocus();
InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
currentlyEditingId = n.getFullName();
replyLine.setText(backedText);
replyLine.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
backedText = s.toString();
}
@Override
public void afterTextChanged(Editable s) {
}
});
editingPosition = holder.getAdapterPosition();
}
reply.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
expandAndSetParams(baseView);
// If the base theme is Light or Sepia, tint the Editor actions to be white
if (SettingValues.currentTheme == 1 || SettingValues.currentTheme == 5) {
((ImageView) replyArea.findViewById(R.id.savedraft)).setColorFilter(Color.WHITE);
((ImageView) replyArea.findViewById(R.id.draft)).setColorFilter(Color.WHITE);
((ImageView) replyArea.findViewById(R.id.imagerep)).setColorFilter(Color.WHITE);
((ImageView) replyArea.findViewById(R.id.link)).setColorFilter(Color.WHITE);
((ImageView) replyArea.findViewById(R.id.bold)).setColorFilter(Color.WHITE);
((ImageView) replyArea.findViewById(R.id.italics)).setColorFilter(Color.WHITE);
((ImageView) replyArea.findViewById(R.id.bulletlist)).setColorFilter(Color.WHITE);
((ImageView) replyArea.findViewById(R.id.numlist)).setColorFilter(Color.WHITE);
((ImageView) replyArea.findViewById(R.id.draw)).setColorFilter(Color.WHITE);
((ImageView) replyArea.findViewById(R.id.quote)).setColorFilter(Color.WHITE);
((ImageView) replyArea.findViewById(R.id.size)).setColorFilter(Color.WHITE);
((ImageView) replyArea.findViewById(R.id.strike)).setColorFilter(Color.WHITE);
((TextView) replyArea.findViewById(R.id.author)).setTextColor(Color.WHITE);
replyLine.getBackground().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
}
replyArea.setVisibility(View.VISIBLE);
menu.setVisibility(View.GONE);
currentlyEditing = replyLine;
DoEditorActions.doActions(currentlyEditing, replyArea, fm, (Activity) mContext, comment.getBody(), getParents(baseNode));
currentlyEditing.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
mPage.fastScroll.setVisibility(View.GONE);
if (mPage.fab != null)
mPage.fab.setVisibility(View.GONE);
mPage.overrideFab = true;
} else if (SettingValues.fastscroll) {
mPage.fastScroll.setVisibility(View.VISIBLE);
if (mPage.fab != null)
mPage.fab.setVisibility(View.VISIBLE);
mPage.overrideFab = false;
}
}
});
final TextView profile = (TextView) baseView.findViewById(R.id.profile);
changedProfile = Authentication.name;
profile.setText("/u/" + changedProfile);
profile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final HashMap<String, String> accounts = new HashMap<>();
for (String s : Authentication.authentication.getStringSet("accounts", new HashSet<String>())) {
if (s.contains(":")) {
accounts.put(s.split(":")[0], s.split(":")[1]);
} else {
accounts.put(s, "");
}
}
final ArrayList<String> keys = new ArrayList<>(accounts.keySet());
final int i = keys.indexOf(changedProfile);
AlertDialogWrapper.Builder builder = new AlertDialogWrapper.Builder(mContext);
builder.setTitle(R.string.sorting_choose);
builder.setSingleChoiceItems(keys.toArray(new String[keys.size()]), i, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changedProfile = keys.get(which);
profile.setText("/u/" + changedProfile);
}
});
builder.alwaysCallSingleChoiceCallback();
builder.setNegativeButton(R.string.btn_cancel, null);
builder.show();
}
});
replyLine.requestFocus();
InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
currentlyEditingId = n.getFullName();
replyLine.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
backedText = s.toString();
}
@Override
public void afterTextChanged(Editable s) {
}
});
editingPosition = holder.getAdapterPosition();
}
});
send.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
currentlyEditingId = "";
backedText = "";
doShowMenu(baseView);
if (SettingValues.fastscroll) {
mPage.fastScroll.setVisibility(View.VISIBLE);
if (mPage.fab != null)
mPage.fab.setVisibility(View.VISIBLE);
mPage.overrideFab = false;
}
dataSet.refreshLayout.setRefreshing(true);
if (currentlyEditing != null) {
String text = currentlyEditing.getText().toString();
new ReplyTaskComment(n, baseNode, holder, changedProfile).execute(text);
currentlyEditing = null;
editingPosition = -1;
}
// Hide soft keyboard
View view = ((Activity) mContext).getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
});
discard.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
currentlyEditing = null;
editingPosition = -1;
currentlyEditingId = "";
backedText = "";
mPage.overrideFab = false;
View view = ((Activity) mContext).getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
doShowMenu(baseView);
}
});
} else {
if (reply.getVisibility() == View.VISIBLE) {
reply.setVisibility(View.GONE);
}
if ((submission.isArchived() || deleted.contains(n.getFullName()) || comment.getAuthor().equals("[deleted]")) && Authentication.isLoggedIn && Authentication.didOnline && upvote.getVisibility() == View.VISIBLE) {
upvote.setVisibility(View.GONE);
}
if ((submission.isArchived() || deleted.contains(n.getFullName()) || comment.getAuthor().equals("[deleted]")) && Authentication.isLoggedIn && Authentication.didOnline && downvote.getVisibility() == View.VISIBLE) {
downvote.setVisibility(View.GONE);
}
}
more.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
CommentAdapterHelper.showOverflowBottomSheet(CommentAdapter.this, mContext, holder, baseNode);
}
});
upvote.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
setCommentStateUnhighlighted(holder, comment, baseNode, true);
if (ActionStates.getVoteDirection(comment) == VoteDirection.UPVOTE) {
new Vote(v, mContext).execute(n);
ActionStates.setVoteDirection(comment, VoteDirection.NO_VOTE);
doScoreText(holder, n, CommentAdapter.this);
upvote.clearColorFilter();
} else {
new Vote(true, v, mContext).execute(n);
ActionStates.setVoteDirection(comment, VoteDirection.UPVOTE);
// reset colour
downvote.clearColorFilter();
doScoreText(holder, n, CommentAdapter.this);
upvote.setColorFilter(holder.textColorUp, PorterDuff.Mode.MULTIPLY);
}
}
});
downvote.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
setCommentStateUnhighlighted(holder, comment, baseNode, true);
if (ActionStates.getVoteDirection(comment) == VoteDirection.DOWNVOTE) {
new Vote(v, mContext).execute(n);
ActionStates.setVoteDirection(comment, VoteDirection.NO_VOTE);
doScoreText(holder, n, CommentAdapter.this);
downvote.clearColorFilter();
} else {
new Vote(false, v, mContext).execute(n);
ActionStates.setVoteDirection(comment, VoteDirection.DOWNVOTE);
// reset colour
upvote.clearColorFilter();
doScoreText(holder, n, CommentAdapter.this);
downvote.setColorFilter(holder.textColorDown, PorterDuff.Mode.MULTIPLY);
}
}
});
menu.setBackgroundColor(color);
replyArea.setBackgroundColor(color);
if (!isReplying) {
menu.setVisibility(View.VISIBLE);
replyArea.setVisibility(View.GONE);
}
holder.itemView.findViewById(R.id.background).setBackgroundColor(Color.argb(50, Color.red(color), Color.green(color), Color.blue(color)));
}
}
use of android.support.v7.widget.helper.ItemTouchHelper.START in project vlc-android by videolan.
the class MainActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!VLCInstance.testCompatibleCPU(this)) {
finish();
return;
}
Permissions.checkReadStoragePermission(this, false);
/**
* Start initializing the UI **
*/
setContentView(R.layout.main);
mDrawerLayout = (HackyDrawerLayout) findViewById(R.id.root_container);
setupNavigationView();
initAudioPlayerContainerActivity();
if (savedInstanceState != null) {
final FragmentManager fm = getSupportFragmentManager();
mCurrentFragment = fm.getFragment(savedInstanceState, "current_fragment");
// Restore fragments stack
restoreFragmentsStack(savedInstanceState, fm);
mCurrentFragmentId = savedInstanceState.getInt("current", mSettings.getInt("fragment_id", R.id.nav_video));
} else {
if (getIntent().getBooleanExtra(Constants.EXTRA_UPGRADE, false)) {
/*
* The sliding menu is automatically opened when the user closes
* the info dialog. If (for any reason) the dialog is not shown,
* open the menu after a short delay.
*/
mActivityHandler.postDelayed(new Runnable() {
@Override
public void run() {
mDrawerLayout.openDrawer(mNavigationView);
}
}, 500);
}
reloadPreferences();
}
/* Set up the action bar */
prepareActionBar();
/* Set up the sidebar click listener
* no need to invalidate menu for now */
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) {
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
final Fragment current = getCurrentFragment();
if (current instanceof MediaBrowserFragment)
((MediaBrowserFragment) current).setReadyToDisplay(true);
}
// Hack to make navigation drawer browsable with DPAD.
// see https://code.google.com/p/android/issues/detail?id=190975
// and http://stackoverflow.com/a/34658002/3485324
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
if (mNavigationView.requestFocus())
((NavigationMenuView) mNavigationView.getFocusedChild()).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
}
};
// Set the drawer toggle as the DrawerListener
mDrawerLayout.setDrawerListener(mDrawerToggle);
// set a custom shadow that overlays the main content when the drawer opens
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
/* Reload the latest preferences */
mScanNeeded = savedInstanceState == null && mSettings.getBoolean("auto_rescan", true);
mExtensionsManager = ExtensionsManager.getInstance();
mMediaLibrary = VLCApplication.getMLInstance();
}
use of android.support.v7.widget.helper.ItemTouchHelper.START in project Slide by ccrama.
the class MultiredditView method onCreateView.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_verticalcontent, container, false);
rv = v.findViewById(R.id.vertical_content);
final RecyclerView.LayoutManager mLayoutManager = createLayoutManager(getNumColumns(getResources().getConfiguration().orientation));
rv.setLayoutManager(mLayoutManager);
if (SettingValues.fab) {
fab = v.findViewById(R.id.post_floating_action_button);
if (SettingValues.fabType == Constants.FAB_POST) {
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final ArrayList<String> subs = new ArrayList<>();
for (MultiSubreddit s : posts.multiReddit.getSubreddits()) {
subs.add(s.getDisplayName());
}
new MaterialDialog.Builder(getActivity()).title(R.string.multi_submit_which_sub).items(subs).itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
Intent i = new Intent(getActivity(), Submit.class);
i.putExtra(Submit.EXTRA_SUBREDDIT, subs.get(which));
startActivity(i);
}
}).show();
}
});
} else {
fab.setImageResource(R.drawable.hide);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!Reddit.fabClear) {
new AlertDialogWrapper.Builder(getActivity()).setTitle(R.string.settings_fabclear).setMessage(R.string.settings_fabclear_msg).setPositiveButton(R.string.btn_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Reddit.colors.edit().putBoolean(SettingValues.PREF_FAB_CLEAR, true).apply();
Reddit.fabClear = true;
clearSeenPosts(false);
}
}).show();
} else {
clearSeenPosts(false);
}
}
});
fab.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (!Reddit.fabClear) {
new AlertDialogWrapper.Builder(getActivity()).setTitle(R.string.settings_fabclear).setMessage(R.string.settings_fabclear_msg).setPositiveButton(R.string.btn_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Reddit.colors.edit().putBoolean(SettingValues.PREF_FAB_CLEAR, true).apply();
Reddit.fabClear = true;
clearSeenPosts(true);
}
}).show();
} else {
clearSeenPosts(true);
}
/*
ToDo Make a sncakbar with an undo option of the clear all
View.OnClickListener undoAction = new View.OnClickListener() {
@Override
public void onClick(View v) {
adapter.dataSet.posts = original;
for(Submission post : adapter.dataSet.posts){
if(HasSeen.getSeen(post.getFullName()))
Hidden.undoHidden(post);
}
}
};*/
Snackbar s = Snackbar.make(rv, getResources().getString(R.string.posts_hidden_forever), Snackbar.LENGTH_LONG);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
return false;
}
});
}
} else {
v.findViewById(R.id.post_floating_action_button).setVisibility(View.GONE);
}
refreshLayout = v.findViewById(R.id.activity_main_swipe_refresh_layout);
/**
* If using List view mode, we need to remove the start margin from the SwipeRefreshLayout.
* The scrollbar style of "outsideInset" creates a 4dp padding around it. To counter this,
* change the scrollbar style to "insideOverlay" when list view is enabled.
* To recap: this removes the margins from the start/end so list view is full-width.
*/
if (SettingValues.defaultCardView == CreateCardView.CardEnum.LIST) {
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
params.setMarginStart(0);
}
rv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
refreshLayout.setLayoutParams(params);
}
List<MultiReddit> multireddits;
if (profile.isEmpty()) {
multireddits = UserSubscriptions.multireddits;
} else {
multireddits = UserSubscriptions.public_multireddits.get(profile);
}
if ((multireddits != null) && !multireddits.isEmpty()) {
refreshLayout.setColorSchemeColors(Palette.getColors(multireddits.get(id).getDisplayName(), getActivity()));
}
// If we use 'findViewById(R.id.header).getMeasuredHeight()', 0 is always returned.
// So, we estimate the height of the header in dp
refreshLayout.setProgressViewOffset(false, Constants.TAB_HEADER_VIEW_OFFSET - Constants.PTR_OFFSET_TOP, Constants.TAB_HEADER_VIEW_OFFSET + Constants.PTR_OFFSET_BOTTOM);
refreshLayout.post(new Runnable() {
@Override
public void run() {
refreshLayout.setRefreshing(true);
}
});
if ((multireddits != null) && !multireddits.isEmpty()) {
posts = new MultiredditPosts(multireddits.get(id).getDisplayName(), profile);
adapter = new MultiredditAdapter(getActivity(), posts, rv, refreshLayout, this);
rv.setAdapter(adapter);
rv.setItemAnimator(new SlideUpAlphaAnimator());
posts.loadMore(getActivity(), this, true, adapter);
refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
posts.loadMore(getActivity(), MultiredditView.this, true, adapter);
// TODO catch errors
}
});
if (fab != null) {
fab.show();
}
rv.addOnScrollListener(new ToolbarScrollHideHandler((Toolbar) (getActivity()).findViewById(R.id.toolbar), getActivity().findViewById(R.id.header)) {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
visibleItemCount = rv.getLayoutManager().getChildCount();
totalItemCount = rv.getLayoutManager().getItemCount();
int[] firstVisibleItems;
firstVisibleItems = ((CatchStaggeredGridLayoutManager) rv.getLayoutManager()).findFirstVisibleItemPositions(null);
if (firstVisibleItems != null && firstVisibleItems.length > 0) {
for (int firstVisibleItem : firstVisibleItems) {
pastVisiblesItems = firstVisibleItem;
if (SettingValues.scrollSeen && pastVisiblesItems > 0 && SettingValues.storeHistory) {
HasSeen.addSeenScrolling(posts.posts.get(pastVisiblesItems - 1).getFullName());
}
}
}
if (!posts.loading) {
if ((visibleItemCount + pastVisiblesItems) + 5 >= totalItemCount && !posts.nomore) {
posts.loading = true;
posts.loadMore(getActivity(), MultiredditView.this, false, adapter);
}
}
if (recyclerView.getScrollState() == RecyclerView.SCROLL_STATE_DRAGGING) {
diff += dy;
} else {
diff = 0;
}
if (fab != null) {
if (dy <= 0 && fab.getId() != 0 && SettingValues.fab) {
if (recyclerView.getScrollState() != RecyclerView.SCROLL_STATE_DRAGGING || diff < -fab.getHeight() * 2)
fab.show();
} else {
fab.hide();
}
}
}
});
}
return v;
}
use of android.support.v7.widget.helper.ItemTouchHelper.START in project NiceMusic by lizixian18.
the class BannerLayoutManager method layoutItems.
private void layoutItems(RecyclerView.Recycler recycler) {
detachAndScrapAttachedViews(recycler);
// make sure that current position start from 0 to 1
final int currentPos = mReverseLayout ? -getCurrentPositionOffset() : getCurrentPositionOffset();
int start = currentPos - mLeftItems;
int end = currentPos + mRightItems;
// handle max visible count
if (useMaxVisibleCount()) {
boolean isEven = mMaxVisibleItemCount % 2 == 0;
if (isEven) {
int offset = mMaxVisibleItemCount / 2;
start = currentPos - offset + 1;
end = currentPos + offset + 1;
} else {
int offset = (mMaxVisibleItemCount - 1) / 2;
start = currentPos - offset;
end = currentPos + offset + 1;
}
}
final int itemCount = getItemCount();
if (!mInfinite) {
if (start < 0) {
start = 0;
if (useMaxVisibleCount())
end = mMaxVisibleItemCount;
}
if (end > itemCount)
end = itemCount;
}
float lastOrderWeight = Float.MIN_VALUE;
for (int i = start; i < end; i++) {
if (useMaxVisibleCount() || !removeCondition(getProperty(i) - mOffset)) {
// start and end base on current position,
// so we need to calculate the adapter position
int adapterPosition = i;
if (i >= itemCount) {
adapterPosition %= itemCount;
} else if (i < 0) {
int delta = (-adapterPosition) % itemCount;
if (delta == 0)
delta = itemCount;
adapterPosition = itemCount - delta;
}
final View scrap = recycler.getViewForPosition(adapterPosition);
measureChildWithMargins(scrap, 0, 0);
resetViewProperty(scrap);
// we need i to calculate the real offset of current view
final float targetOffset = getProperty(i) - mOffset;
layoutScrap(scrap, targetOffset);
final float orderWeight = mEnableBringCenterToFront ? setViewElevation(scrap, targetOffset) : adapterPosition;
if (orderWeight > lastOrderWeight) {
addView(scrap);
} else {
addView(scrap, 0);
}
lastOrderWeight = orderWeight;
}
}
}
use of android.support.v7.widget.helper.ItemTouchHelper.START in project Applozic-Android-SDK by AppLozic.
the class MobiComConversationFragment method onCreateView.
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View list = inflater.inflate(R.layout.mobicom_message_list, container, false);
recyclerView = (RecyclerView) list.findViewById(R.id.messageList);
linearLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setHasFixedSize(true);
recyclerViewPositionHelper = new RecyclerViewPositionHelper(recyclerView, linearLayoutManager);
((ConversationActivity) getActivity()).setChildFragmentLayoutBGToTransparent();
// listView.setDivider(null);
messageList = new ArrayList<Message>();
multimediaPopupGrid = (GridView) list.findViewById(R.id.mobicom_multimedia_options1);
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
toolbar = (Toolbar) getActivity().findViewById(R.id.my_toolbar);
toolbar.setClickable(true);
mainEditTextLinearLayout = (LinearLayout) list.findViewById(R.id.main_edit_text_linear_layout);
individualMessageSendLayout = (LinearLayout) list.findViewById(R.id.individual_message_send_layout);
slideImageView = (ImageView) list.findViewById(R.id.slide_image_view);
sendButton = (ImageButton) individualMessageSendLayout.findViewById(R.id.conversation_send);
recordButton = (ImageButton) individualMessageSendLayout.findViewById(R.id.record_button);
mainEditTextLinearLayout = (LinearLayout) list.findViewById(R.id.main_edit_text_linear_layout);
audioRecordFrameLayout = (FrameLayout) list.findViewById(R.id.audio_record_frame_layout);
messageTemplateView = (RecyclerView) list.findViewById(R.id.mobicomMessageTemplateView);
Configuration config = getResources().getConfiguration();
recordButtonWeakReference = new WeakReference<ImageButton>(recordButton);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
if (config.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
sendButton.setScaleX(-1);
mainEditTextLinearLayout.setBackgroundResource(R.drawable.applozic_chat_left_icon);
audioRecordFrameLayout.setBackgroundResource(R.drawable.applozic_chat_left_icon);
slideImageView.setImageResource(R.drawable.slide_arrow_right);
}
}
extendedSendingOptionLayout = (LinearLayout) list.findViewById(R.id.extended_sending_option_layout);
attachmentLayout = (RelativeLayout) list.findViewById(R.id.attachment_layout);
isTyping = (TextView) list.findViewById(R.id.isTyping);
contextFrameLayout = (FrameLayout) list.findViewById(R.id.contextFrameLayout);
contextSpinner = (Spinner) list.findViewById(R.id.spinner_show);
slideTextLinearlayout = (LinearLayout) list.findViewById(R.id.slide_LinearLayout);
errorEditTextView = (EditText) list.findViewById(R.id.error_edit_text_view);
audioRecordIconImageView = (ImageView) list.findViewById(R.id.audio_record_icon_image_view);
recordTimeTextView = (TextView) list.findViewById(R.id.recording_time_text_view);
mDetector = new GestureDetectorCompat(getContext(), this);
adapterView = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long l) {
if (conversations != null && conversations.size() > 0) {
Conversation conversation = conversations.get(pos);
BroadcastService.currentConversationId = conversation.getId();
if (onSelected) {
currentConversationId = conversation.getId();
if (messageList != null) {
messageList.clear();
}
downloadConversation = new DownloadConversation(recyclerView, true, 1, 0, 0, contact, channel, conversation.getId());
downloadConversation.execute();
}
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
};
mediaUploadProgressBar = (ProgressBar) attachmentLayout.findViewById(R.id.media_upload_progress_bar);
emoticonsFrameLayout = (FrameLayout) list.findViewById(R.id.emojicons_frame_layout);
emoticonsBtn = (ImageButton) list.findViewById(R.id.emoticons_btn);
if (emojiIconHandler == null && emoticonsBtn != null) {
emoticonsBtn.setVisibility(View.GONE);
}
replayRelativeLayout = (RelativeLayout) list.findViewById(R.id.reply_message_layout);
messageTextView = (TextView) list.findViewById(R.id.messageTextView);
galleryImageView = (ImageView) list.findViewById(R.id.imageViewForPhoto);
nameTextView = (TextView) list.findViewById(R.id.replyNameTextView);
attachReplyCancelLayout = (ImageButton) list.findViewById(R.id.imageCancel);
imageViewRLayout = (RelativeLayout) list.findViewById(R.id.imageViewRLayout);
imageViewForAttachmentType = (ImageView) list.findViewById(R.id.imageViewForAttachmentType);
spinnerLayout = inflater.inflate(R.layout.mobicom_message_list_header_footer, null);
infoBroadcast = (TextView) spinnerLayout.findViewById(R.id.info_broadcast);
spinnerLayout.setVisibility(View.GONE);
emptyTextView = (TextView) list.findViewById(R.id.noConversations);
emptyTextView.setTextColor(Color.parseColor(alCustomizationSettings.getNoConversationLabelTextColor().trim()));
emoticonsBtn.setOnClickListener(this);
// listView.addHeaderView(spinnerLayout);
sentIcon = getResources().getDrawable(R.drawable.applozic_ic_action_message_sent);
deliveredIcon = getResources().getDrawable(R.drawable.applozic_ic_action_message_delivered);
// listView.setLongClickable(true);
recordButton.setVisibility(alCustomizationSettings.isRecordButton() && (contact != null || channel != null && !Channel.GroupType.OPEN.getValue().equals(channel.getType())) ? View.VISIBLE : View.GONE);
sendButton.setVisibility(alCustomizationSettings.isRecordButton() && (contact != null || channel != null && !Channel.GroupType.OPEN.getValue().equals(channel.getType())) ? View.GONE : View.VISIBLE);
GradientDrawable bgShape = (GradientDrawable) sendButton.getBackground();
bgShape.setColor(Color.parseColor(alCustomizationSettings.getSendButtonBackgroundColor().trim()));
GradientDrawable bgShapeRecordButton = (GradientDrawable) recordButton.getBackground();
bgShapeRecordButton.setColor(Color.parseColor(alCustomizationSettings.getSendButtonBackgroundColor().trim()));
attachButton = (ImageButton) individualMessageSendLayout.findViewById(R.id.attach_button);
sendType = (Spinner) extendedSendingOptionLayout.findViewById(R.id.sendTypeSpinner);
messageEditText = (EditText) individualMessageSendLayout.findViewById(R.id.conversation_message);
messageEditText.setTextColor(Color.parseColor(alCustomizationSettings.getMessageEditTextTextColor()));
messageEditText.setHintTextColor(Color.parseColor(alCustomizationSettings.getMessageEditTextHintTextColor()));
userNotAbleToChatLayout = (LinearLayout) list.findViewById(R.id.user_not_able_to_chat_layout);
userNotAbleToChatTextView = (TextView) userNotAbleToChatLayout.findViewById(R.id.user_not_able_to_chat_textView);
userNotAbleToChatTextView.setTextColor(Color.parseColor(alCustomizationSettings.getUserNotAbleToChatTextColor()));
if (channel != null && channel.isDeleted()) {
userNotAbleToChatTextView.setText(R.string.group_has_been_deleted_text);
}
bottomlayoutTextView = (TextView) list.findViewById(R.id.user_not_able_to_chat_textView);
if (!TextUtils.isEmpty(defaultText)) {
messageEditText.setText(defaultText);
defaultText = "";
}
scheduleOption = (Button) extendedSendingOptionLayout.findViewById(R.id.scheduleOption);
mediaContainer = (ImageView) attachmentLayout.findViewById(R.id.media_container);
attachedFile = (TextView) attachmentLayout.findViewById(R.id.attached_file);
ImageView closeAttachmentLayout = (ImageView) attachmentLayout.findViewById(R.id.close_attachment_layout);
swipeLayout = (SwipeRefreshLayout) list.findViewById(R.id.swipe_container);
swipeLayout.setColorScheme(android.R.color.holo_blue_bright, android.R.color.holo_green_light, android.R.color.holo_orange_light, android.R.color.holo_red_light);
// listView.setMessageEditText(messageEditText);
ArrayAdapter<CharSequence> sendTypeAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.send_type_options, R.layout.mobiframework_custom_spinner);
sendTypeAdapter.setDropDownViewResource(R.layout.mobiframework_custom_spinner);
sendType.setAdapter(sendTypeAdapter);
t = new CountDownTimer(Long.MAX_VALUE, 1000) {
@Override
public void onTick(long millisUntilFinished) {
count++;
seconds = count;
if (seconds == 60) {
minutes++;
count = 0;
seconds = 0;
}
if (minutes == 60) {
minutes = 0;
count = 0;
}
if (count % 2 == 0) {
audioRecordIconImageView.setVisibility(VISIBLE);
audioRecordIconImageView.setImageResource(R.drawable.applozic_audio_record);
} else {
audioRecordIconImageView.setVisibility(View.INVISIBLE);
}
recordTimeTextView.setText(String.format("%02d:%02d", minutes, seconds));
}
@Override
public void onFinish() {
count = 0;
}
};
recordButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
mDetector.onTouchEvent(motionEvent);
if (motionEvent.getAction() == MotionEvent.ACTION_UP && longPress) {
isToastVisible = true;
errorEditTextView.setVisibility(View.GONE);
errorEditTextView.requestFocus();
errorEditTextView.setError(null);
startedDraggingX = -1;
audioRecordFrameLayout.setVisibility(View.GONE);
mainEditTextLinearLayout.setVisibility(View.VISIBLE);
applozicAudioRecordManager.sendAudio();
t.cancel();
longPress = false;
messageEditText.requestFocus();
seconds = 0;
minutes = 0;
count = 0;
} else if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
float x = motionEvent.getX();
if (x < -distCanMove) {
count = 0;
t.cancel();
audioRecordIconImageView.setImageResource(R.drawable.applozic_audio_delete);
recordTimeTextView.setVisibility(View.GONE);
applozicAudioRecordManager.cancelAudio();
messageEditText.requestFocus();
}
x = x + ApplozicAudioRecordAnimation.getX(recordButton);
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideTextLinearlayout.getLayoutParams();
if (startedDraggingX != -1) {
float dist = (x - startedDraggingX);
params.leftMargin = dp(30) + (int) dist;
slideTextLinearlayout.setLayoutParams(params);
float alpha = 1.0f + dist / distCanMove;
if (alpha > 1) {
alpha = 1;
} else if (alpha < 0) {
alpha = 0;
}
ApplozicAudioRecordAnimation.setAlpha(slideTextLinearlayout, alpha);
}
if (x <= ApplozicAudioRecordAnimation.getX(slideTextLinearlayout) + slideTextLinearlayout.getWidth() + dp(30)) {
if (startedDraggingX == -1) {
startedDraggingX = x;
distCanMove = (audioRecordFrameLayout.getMeasuredWidth() - slideTextLinearlayout.getMeasuredWidth() - dp(48)) / 2.0f;
if (distCanMove <= 0) {
distCanMove = dp(80);
} else if (distCanMove > dp(80)) {
distCanMove = dp(80);
}
}
}
if (params.leftMargin > dp(30)) {
params.leftMargin = dp(30);
slideTextLinearlayout.setLayoutParams(params);
ApplozicAudioRecordAnimation.setAlpha(slideTextLinearlayout, 1);
startedDraggingX = -1;
}
}
view.onTouchEvent(motionEvent);
return true;
}
});
scheduleOption.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ConversationScheduler conversationScheduler = new ConversationScheduler();
conversationScheduler.setScheduleOption(scheduleOption);
conversationScheduler.setScheduledTimeHolder(scheduledTimeHolder);
conversationScheduler.setCancelable(false);
conversationScheduler.show(getActivity().getSupportFragmentManager(), "conversationScheduler");
}
});
messageEditText.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
// EmojiconHandler.addEmojis(getActivity(), messageEditText.getText(), Utils.dpToPx(30));
// TODO: write code to emoticons .....
}
public void afterTextChanged(Editable s) {
try {
if (!TextUtils.isEmpty(s.toString()) && s.toString().trim().length() > 0 && !typingStarted) {
// Log.i(TAG, "typing started event...");
typingStarted = true;
handleSendAndRecordButtonView(true);
if (contact != null || channel != null && !Channel.GroupType.OPEN.getValue().equals(channel.getType()) || contact != null) {
Intent intent = new Intent(getActivity(), ApplozicMqttIntentService.class);
intent.putExtra(ApplozicMqttIntentService.CHANNEL, channel);
intent.putExtra(ApplozicMqttIntentService.CONTACT, contact);
intent.putExtra(ApplozicMqttIntentService.TYPING, typingStarted);
ApplozicMqttIntentService.enqueueWork(getActivity(), intent);
}
} else if (s.toString().trim().length() == 0 && typingStarted) {
// Log.i(TAG, "typing stopped event...");
typingStarted = false;
handleSendAndRecordButtonView(false);
if (contact != null || channel != null && !Channel.GroupType.OPEN.getValue().equals(channel.getType()) || contact != null) {
Intent intent = new Intent(getActivity(), ApplozicMqttIntentService.class);
intent.putExtra(ApplozicMqttIntentService.CHANNEL, channel);
intent.putExtra(ApplozicMqttIntentService.CONTACT, contact);
intent.putExtra(ApplozicMqttIntentService.TYPING, typingStarted);
ApplozicMqttIntentService.enqueueWork(getActivity(), intent);
}
}
} catch (Exception e) {
}
// sendButton.setVisibility((s == null || s.toString().trim().length() == 0) && TextUtils.isEmpty(filePath) ? View.GONE : View.VISIBLE);
// attachButton.setVisibility(s == null || s.toString().trim().length() == 0 ? View.VISIBLE : View.GONE);
}
});
messageEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
emoticonsFrameLayout.setVisibility(View.GONE);
}
});
if (channel != null && Channel.GroupType.OPEN.getValue().equals(channel.getType())) {
attachButton.setVisibility(View.GONE);
messageEditText.setPadding(20, 0, 0, 0);
}
attachReplyCancelLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
messageMetaData = null;
replayRelativeLayout.setVisibility(View.GONE);
}
});
messageEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
if (typingStarted) {
if (contact != null || channel != null && !Channel.GroupType.OPEN.getValue().equals(channel.getType()) || contact != null) {
Intent intent = new Intent(getActivity(), ApplozicMqttIntentService.class);
intent.putExtra(ApplozicMqttIntentService.CHANNEL, channel);
intent.putExtra(ApplozicMqttIntentService.CONTACT, contact);
intent.putExtra(ApplozicMqttIntentService.TYPING, typingStarted);
ApplozicMqttIntentService.enqueueWork(getActivity(), intent);
}
}
emoticonsFrameLayout.setVisibility(View.GONE);
multimediaPopupGrid.setVisibility(View.GONE);
}
}
});
messageEditText.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
Utils.toggleSoftKeyBoard(getActivity(), true);
return true;
}
return false;
}
});
recordButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!isToastVisible && !typingStarted) {
vibrate();
errorEditTextView.requestFocus();
errorEditTextView.setError(getResources().getString(R.string.hold_to_record_release_to_send));
isToastVisible = true;
new CountDownTimer(3000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
errorEditTextView.setError(null);
messageEditText.requestFocus();
isToastVisible = false;
}
}.start();
} else {
errorEditTextView.setError(null);
isToastVisible = false;
}
emoticonsFrameLayout.setVisibility(View.GONE);
sendMessage();
handleSendAndRecordButtonView(false);
errorEditTextView.setVisibility(View.VISIBLE);
}
});
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
emoticonsFrameLayout.setVisibility(View.GONE);
sendMessage();
if (contact != null && !contact.isBlocked() || channel != null) {
handleSendAndRecordButtonView(false);
}
}
});
closeAttachmentLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
filePath = null;
if (previewThumbnail != null) {
previewThumbnail.recycle();
}
attachmentLayout.setVisibility(View.GONE);
}
});
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
if (recyclerDetailConversationAdapter != null) {
recyclerDetailConversationAdapter.contactImageLoader.setPauseWork(newState == RecyclerView.SCROLL_STATE_DRAGGING);
}
}
@Override
public void onScrolled(final RecyclerView recyclerView, int dx, int dy) {
// super.onScrolled(recyclerView, dx, dy);
if (loadMore) {
int topRowVerticalPosition = (recyclerView == null || recyclerView.getChildCount() == 0) ? 0 : recyclerView.getChildAt(0).getTop();
swipeLayout.setEnabled(topRowVerticalPosition >= 0);
}
}
});
toolbar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (channel != null) {
if (channel.isDeleted()) {
return;
}
if (alCustomizationSettings.isGroupInfoScreenVisible() && !Channel.GroupType.GROUPOFTWO.getValue().equals(channel.getType()) && !Channel.GroupType.OPEN.getValue().equals(channel.getType())) {
Intent channelInfo = new Intent(getActivity(), ChannelInfoActivity.class);
channelInfo.putExtra(ChannelInfoActivity.CHANNEL_KEY, channel.getKey());
startActivity(channelInfo);
} else if (Channel.GroupType.GROUPOFTWO.getValue().equals(channel.getType()) && alCustomizationSettings.isUserProfileFragment()) {
UserProfileFragment userProfileFragment = (UserProfileFragment) UIService.getFragmentByTag(getActivity(), ConversationUIService.USER_PROFILE_FRAMENT);
if (userProfileFragment == null) {
String userId = ChannelService.getInstance(getActivity()).getGroupOfTwoReceiverUserId(channel.getKey());
if (!TextUtils.isEmpty(userId)) {
Contact newcContact = appContactService.getContactById(userId);
userProfileFragment = new UserProfileFragment();
Bundle bundle = new Bundle();
bundle.putSerializable(ConversationUIService.CONTACT, newcContact);
userProfileFragment.setArguments(bundle);
ConversationActivity.addFragment(getActivity(), userProfileFragment, ConversationUIService.USER_PROFILE_FRAMENT);
}
}
}
} else {
if (alCustomizationSettings.isUserProfileFragment()) {
UserProfileFragment userProfileFragment = (UserProfileFragment) UIService.getFragmentByTag(getActivity(), ConversationUIService.USER_PROFILE_FRAMENT);
if (userProfileFragment == null) {
userProfileFragment = new UserProfileFragment();
Bundle bundle = new Bundle();
bundle.putSerializable(ConversationUIService.CONTACT, contact);
userProfileFragment.setArguments(bundle);
ConversationActivity.addFragment(getActivity(), userProfileFragment, ConversationUIService.USER_PROFILE_FRAMENT);
}
}
}
}
});
recyclerView.setLongClickable(true);
// Adding fragment for emoticons...
// //Fragment emojiFragment = new EmojiconsFragment(this, this);
// Fragment emojiFragment = new EmojiconsFragment();
// FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
// transaction.add(R.id.emojicons_frame_layout, emojiFragment).commit();
messageTemplate = alCustomizationSettings.getMessageTemplate();
if (messageTemplate != null && messageTemplate.isEnabled()) {
templateAdapter = new MobicomMessageTemplateAdapter(messageTemplate);
MobicomMessageTemplateAdapter.MessageTemplateDataListener listener = new MobicomMessageTemplateAdapter.MessageTemplateDataListener() {
@Override
public void onItemSelected(String message) {
final Message lastMessage = !messageList.isEmpty() ? messageList.get(messageList.size() - 1) : null;
if ((messageTemplate.getTextMessageList() != null && !messageTemplate.getTextMessageList().getMessageList().isEmpty() && messageTemplate.getTextMessageList().isSendMessageOnClick() && "text".equals(getMessageType(lastMessage))) || (messageTemplate.getImageMessageList() != null && !messageTemplate.getImageMessageList().getMessageList().isEmpty() && messageTemplate.getImageMessageList().isSendMessageOnClick() && "image".equals(getMessageType(lastMessage))) || (messageTemplate.getVideoMessageList() != null && !messageTemplate.getVideoMessageList().getMessageList().isEmpty() && messageTemplate.getVideoMessageList().isSendMessageOnClick() && "video".equals(getMessageType(lastMessage))) || (messageTemplate.getLocationMessageList() != null && !messageTemplate.getLocationMessageList().getMessageList().isEmpty() && messageTemplate.getLocationMessageList().isSendMessageOnClick() && "location".equals(getMessageType(lastMessage))) || (messageTemplate.getContactMessageList() != null && !messageTemplate.getContactMessageList().getMessageList().isEmpty() && messageTemplate.getContactMessageList().isSendMessageOnClick() && "contact".equals(getMessageType(lastMessage))) || (messageTemplate.getAudioMessageList() != null && !messageTemplate.getAudioMessageList().getMessageList().isEmpty() && messageTemplate.getAudioMessageList().isSendMessageOnClick() && "audio".equals(getMessageType(lastMessage))) || messageTemplate.getSendMessageOnClick()) {
sendMessage(message);
}
if (messageTemplate.getHideOnSend()) {
AlMessageMetadataUpdateTask.MessageMetadataListener listener1 = new AlMessageMetadataUpdateTask.MessageMetadataListener() {
@Override
public void onSuccess(Context context, String message) {
templateAdapter.setMessageList(new HashMap<String, String>());
templateAdapter.notifyDataSetChanged();
}
@Override
public void onFailure(Context context, String error) {
}
};
if (lastMessage != null) {
Map<String, String> metadata = lastMessage.getMetadata();
metadata.put("isDoneWithClicking", "true");
lastMessage.setMetadata(metadata);
new AlMessageMetadataUpdateTask(getContext(), lastMessage.getKeyString(), lastMessage.getMetadata(), listener1).execute();
}
}
final Intent intent = new Intent();
intent.setAction("com.applozic.mobicomkit.TemplateMessage");
intent.putExtra("templateMessage", message);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
getActivity().sendBroadcast(intent);
}
};
templateAdapter.setOnItemSelected(listener);
LinearLayoutManager horizontalLayoutManagaer = new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false);
messageTemplateView.setLayoutManager(horizontalLayoutManagaer);
messageTemplateView.setAdapter(templateAdapter);
}
createTemplateMessages();
return list;
}
Aggregations