Search in sources :

Example 1 with NotificationExecuteActionTask

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);
        }
    }
}
Also used : Action(com.owncloud.android.lib.resources.notifications.models.Action) NotificationExecuteActionTask(com.owncloud.android.ui.asynctasks.NotificationExecuteActionTask) ArrayList(java.util.ArrayList) Intent(android.content.Intent) Resources(android.content.res.Resources) MaterialButton(com.google.android.material.button.MaterialButton) LinearLayout(android.widget.LinearLayout) PopupMenu(androidx.appcompat.widget.PopupMenu)

Aggregations

Intent (android.content.Intent)1 Resources (android.content.res.Resources)1 LinearLayout (android.widget.LinearLayout)1 PopupMenu (androidx.appcompat.widget.PopupMenu)1 MaterialButton (com.google.android.material.button.MaterialButton)1 Action (com.owncloud.android.lib.resources.notifications.models.Action)1 NotificationExecuteActionTask (com.owncloud.android.ui.asynctasks.NotificationExecuteActionTask)1 ArrayList (java.util.ArrayList)1