use of com.owncloud.android.ui.asynctasks.NotificationExecuteActionTask in project android by nextcloud.
the class NotificationListAdapter method setButtons.
public void setButtons(NotificationViewHolder holder, Notification notification) {
// add action buttons
holder.binding.buttons.removeAllViews();
MaterialButton button;
Resources resources = notificationsActivity.getResources();
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(resources.getDimensionPixelOffset(R.dimen.standard_half_margin), 0, resources.getDimensionPixelOffset(R.dimen.standard_half_margin), 0);
int primaryColor = ThemeColorUtils.primaryColor(notificationsActivity);
List<Action> overflowActions = new ArrayList<>();
if (notification.getActions().size() > 2) {
for (Action action : notification.getActions()) {
if (action.primary) {
button = new MaterialButton(notificationsActivity);
button.setAllCaps(false);
button.setText(action.label);
button.setCornerRadiusResource(R.dimen.button_corner_radius);
button.setLayoutParams(params);
button.setGravity(Gravity.CENTER);
button.setOnClickListener(v -> {
setButtonEnabled(holder, false);
if (ACTION_TYPE_WEB.equals(action.type)) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(action.link));
notificationsActivity.startActivity(intent);
} else {
new NotificationExecuteActionTask(client, holder, notification, notificationsActivity).execute(action);
}
});
ThemeButtonUtils.colorPrimaryButton(button, notificationsActivity);
holder.binding.buttons.addView(button);
} else {
overflowActions.add(action);
}
}
// further actions
button = new MaterialButton(notificationsActivity);
button.setBackgroundColor(resources.getColor(R.color.grey_200));
button.setTextColor(primaryColor);
button.setAllCaps(false);
button.setText(R.string.more);
button.setCornerRadiusResource(R.dimen.button_corner_radius);
button.setLayoutParams(params);
button.setGravity(Gravity.CENTER);
MaterialButton finalButton = button;
button.setOnClickListener(v -> {
PopupMenu popup = new PopupMenu(notificationsActivity, finalButton);
for (Action action : overflowActions) {
popup.getMenu().add(action.label).setOnMenuItemClickListener(item -> {
setButtonEnabled(holder, false);
if (ACTION_TYPE_WEB.equals(action.type)) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(action.link));
notificationsActivity.startActivity(intent);
} else {
new NotificationExecuteActionTask(client, holder, notification, notificationsActivity).execute(action);
}
return true;
});
}
popup.show();
});
holder.binding.buttons.addView(button);
} else {
for (Action action : notification.getActions()) {
button = new MaterialButton(notificationsActivity);
if (action.primary) {
ThemeButtonUtils.colorPrimaryButton(button, notificationsActivity);
} else {
button.setBackgroundColor(resources.getColor(R.color.grey_200));
button.setTextColor(primaryColor);
}
button.setAllCaps(false);
button.setText(action.label);
button.setCornerRadiusResource(R.dimen.button_corner_radius);
button.setLayoutParams(params);
button.setGravity(Gravity.CENTER);
button.setOnClickListener(v -> {
setButtonEnabled(holder, false);
if (ACTION_TYPE_WEB.equals(action.type)) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(action.link));
notificationsActivity.startActivity(intent);
} else {
new NotificationExecuteActionTask(client, holder, notification, notificationsActivity).execute(action);
}
});
holder.binding.buttons.addView(button);
}
}
}
Aggregations