Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java146
1 files changed, 57 insertions, 89 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java
index 65c4c4169..c6f5434f6 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java
@@ -17,7 +17,6 @@ import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.ImageView;
import android.widget.LinearLayout;
-import android.widget.TextView;
import android.widget.TimePicker;
import androidx.annotation.NonNull;
@@ -27,11 +26,9 @@ import androidx.core.graphics.drawable.DrawableCompat;
import androidx.fragment.app.Fragment;
import com.google.android.material.chip.Chip;
-import com.google.android.material.chip.ChipGroup;
import com.google.android.material.snackbar.Snackbar;
import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
import com.nextcloud.android.sso.exceptions.NoCurrentAccountSelectedException;
-import com.yydcdut.markdown.MarkdownEditText;
import com.yydcdut.markdown.MarkdownProcessor;
import com.yydcdut.markdown.syntax.edit.EditFactory;
@@ -42,18 +39,14 @@ import java.util.Date;
import java.util.Locale;
import java.util.Objects;
-import butterknife.BindDrawable;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.Unbinder;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.FragmentCardEditTabDetailsBinding;
import it.niedermann.nextcloud.deck.model.Card;
import it.niedermann.nextcloud.deck.model.Label;
import it.niedermann.nextcloud.deck.model.User;
import it.niedermann.nextcloud.deck.model.full.FullCard;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
-import it.niedermann.nextcloud.deck.ui.widget.DelayedAutoCompleteTextView;
import it.niedermann.nextcloud.deck.util.ColorUtil;
import it.niedermann.nextcloud.deck.util.DimensionUtil;
import it.niedermann.nextcloud.deck.util.MarkDownUtil;
@@ -68,8 +61,11 @@ import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.NO_LOCAL_ID;
public class CardDetailsFragment extends Fragment implements DatePickerDialog.OnDateSetListener,
TimePickerDialog.OnTimeSetListener {
+
private static final String TAG = CardDetailsFragment.class.getCanonicalName();
+ private FragmentCardEditTabDetailsBinding binding;
+
private boolean canEdit = false;
private FullCard fullCard;
private SyncManager syncManager;
@@ -78,30 +74,9 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
private String baseUrl;
private int avatarSize;
private LinearLayout.LayoutParams avatarLayoutParams;
- private Unbinder unbinder;
private CardDetailsListener cardDetailsListener;
private Activity activity;
- @BindView(R.id.description)
- MarkdownEditText description;
- @BindView(R.id.people)
- DelayedAutoCompleteTextView people;
- @BindView(R.id.labels)
- DelayedAutoCompleteTextView labels;
- @BindView(R.id.peopleList)
- LinearLayout peopleList;
- @BindView(R.id.dueDateDate)
- TextView dueDate;
- @BindView(R.id.dueDateTime)
- TextView dueDateTime;
- @BindView(R.id.clearDueDate)
- ImageView clearDueDate;
- @BindView(R.id.labelsGroup)
- ChipGroup labelsGroup;
-
- @BindDrawable(R.drawable.ic_close_circle_grey600)
- Drawable closeCircleDrawable;
-
public CardDetailsFragment() {
}
@@ -137,8 +112,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.fragment_card_edit_tab_details, container, false);
- unbinder = ButterKnife.bind(this, view);
+ binding = FragmentCardEditTabDetailsBinding.inflate(inflater, container, false);
dateFormat = android.text.format.DateFormat.getDateFormat(activity);
Bundle args = getArguments();
@@ -159,7 +133,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
} else {
observeOnce(syncManager.getCardByLocalId(accountId, localId), CardDetailsFragment.this, (next) -> {
fullCard = next;
- description.setText(fullCard.getCard().getDescription());
+ binding.description.setText(fullCard.getCard().getDescription());
setupView(accountId, boardId, canEdit);
});
}
@@ -175,7 +149,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
DeckLog.logError(e);
}
- return view;
+ return binding.getRoot();
}
private void setupView(long accountId, long boardId, boolean canEdit) {
@@ -188,15 +162,15 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
private void setupDescription() {
if (canEdit) {
MarkdownProcessor markdownProcessor = new MarkdownProcessor(requireContext());
- markdownProcessor.config(MarkDownUtil.getMarkDownConfiguration(description.getContext()).build());
+ markdownProcessor.config(MarkDownUtil.getMarkDownConfiguration(binding.description.getContext()).build());
markdownProcessor.factory(EditFactory.create());
- markdownProcessor.live(description);
- description.addTextChangedListener(new TextWatcher() {
+ markdownProcessor.live(binding.description);
+ binding.description.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (fullCard != null) {
- cardDetailsListener.onDescriptionChanged(description.getText().toString());
- fullCard.getCard().setDescription(description.getText().toString());
+ cardDetailsListener.onDescriptionChanged(binding.description.getText().toString());
+ fullCard.getCard().setDescription(binding.description.getText().toString());
}
}
@@ -209,7 +183,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
}
});
} else {
- description.setEnabled(false);
+ binding.description.setEnabled(false);
}
}
@@ -253,18 +227,18 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
private void setupDueDate() {
if (this.fullCard.getCard().getDueDate() != null) {
- dueDate.setText(dateFormat.format(this.fullCard.getCard().getDueDate()));
- dueDateTime.setText(dueTime.format(this.fullCard.getCard().getDueDate()));
- clearDueDate.setVisibility(View.VISIBLE);
+ binding.dueDateDate.setText(dateFormat.format(this.fullCard.getCard().getDueDate()));
+ binding.dueDateTime.setText(dueTime.format(this.fullCard.getCard().getDueDate()));
+ binding.clearDueDate.setVisibility(View.VISIBLE);
} else {
- clearDueDate.setVisibility(View.GONE);
- dueDate.setText(null);
- dueDateTime.setText(null);
+ binding.clearDueDate.setVisibility(View.GONE);
+ binding.dueDateDate.setText(null);
+ binding.dueDateTime.setText(null);
}
if (canEdit) {
- dueDate.setOnClickListener(v -> {
+ binding.dueDateDate.setOnClickListener(v -> {
if (fullCard != null && fullCard.getCard() != null) {
createDatePickerDialogFromDate(activity, this, fullCard.getCard().getDueDate()).show();
} else {
@@ -272,7 +246,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
}
});
- dueDateTime.setOnClickListener(v -> {
+ binding.dueDateTime.setOnClickListener(v -> {
if (fullCard != null && fullCard.getCard() != null) {
createTimePickerDialogFromDate(activity, this, fullCard.getCard().getDueDate()).show();
} else {
@@ -280,56 +254,56 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
}
});
- clearDueDate.setOnClickListener(v -> {
+ binding.clearDueDate.setOnClickListener(v -> {
cardDetailsListener.onDueDateChanged(null);
- dueDate.setText(null);
- dueDateTime.setText(null);
+ binding.dueDateDate.setText(null);
+ binding.dueDateTime.setText(null);
fullCard.getCard().setDueDate(null);
- clearDueDate.setVisibility(View.GONE);
+ binding.clearDueDate.setVisibility(View.GONE);
});
} else {
- dueDate.setEnabled(false);
- dueDateTime.setEnabled(false);
- clearDueDate.setVisibility(View.GONE);
+ binding.dueDateDate.setEnabled(false);
+ binding.dueDateTime.setEnabled(false);
+ binding.clearDueDate.setVisibility(View.GONE);
}
}
private void setupLabels(long accountId, long boardId, boolean canEdit) {
- labelsGroup.removeAllViews();
+ binding.labelsGroup.removeAllViews();
if (canEdit) {
Long localCardId = fullCard.getCard().getLocalId();
localCardId = localCardId == null ? -1 : localCardId;
- labels.setAdapter(new LabelAutoCompleteAdapter(this, activity, accountId, boardId, localCardId));
- labels.setOnItemClickListener((adapterView, view, position, id) -> {
+ binding.labels.setAdapter(new LabelAutoCompleteAdapter(this, activity, accountId, boardId, localCardId));
+ binding.labels.setOnItemClickListener((adapterView, view, position, id) -> {
Label label = (Label) adapterView.getItemAtPosition(position);
if (LabelAutoCompleteAdapter.CREATE_ID == label.getLocalId()) {
Label newLabel = new Label(label);
- newLabel.setTitle(((LabelAutoCompleteAdapter) labels.getAdapter()).getLastFilterText());
+ newLabel.setTitle(((LabelAutoCompleteAdapter) binding.labels.getAdapter()).getLastFilterText());
newLabel.setLocalId(null);
observeOnce(syncManager.createLabel(accountId, newLabel, boardId), CardDetailsFragment.this, createdLabel -> {
newLabel.setLocalId(createdLabel.getLocalId());
cardDetailsListener.onLabelAdded(createdLabel);
- labelsGroup.addView(createChipFromLabel(newLabel));
- labelsGroup.setVisibility(View.VISIBLE);
+ binding.labelsGroup.addView(createChipFromLabel(newLabel));
+ binding.labelsGroup.setVisibility(View.VISIBLE);
});
} else {
cardDetailsListener.onLabelAdded(label);
- labelsGroup.addView(createChipFromLabel(label));
- labelsGroup.setVisibility(View.VISIBLE);
+ binding.labelsGroup.addView(createChipFromLabel(label));
+ binding.labelsGroup.setVisibility(View.VISIBLE);
}
- labels.setText("");
+ binding.labels.setText("");
});
} else {
- labels.setEnabled(false);
+ binding.labels.setEnabled(false);
}
if (fullCard.getLabels() != null && fullCard.getLabels().size() > 0) {
for (Label label : fullCard.getLabels()) {
- labelsGroup.addView(createChipFromLabel(label));
+ binding.labelsGroup.addView(createChipFromLabel(label));
}
- labelsGroup.setVisibility(View.VISIBLE);
+ binding.labelsGroup.setVisibility(View.VISIBLE);
} else {
- labelsGroup.setVisibility(View.INVISIBLE);
+ binding.labelsGroup.setVisibility(View.INVISIBLE);
}
}
@@ -338,10 +312,10 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
Chip chip = new Chip(activity);
chip.setText(label.getTitle());
if (canEdit) {
- chip.setCloseIcon(closeCircleDrawable);
+ chip.setCloseIcon(getResources().getDrawable(R.drawable.ic_close_circle_grey600));
chip.setCloseIconVisible(true);
chip.setOnCloseIconClickListener(v -> {
- labelsGroup.removeView(chip);
+ binding.labelsGroup.removeView(chip);
cardDetailsListener.onLabelRemoved(label);
});
}
@@ -366,18 +340,18 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
if (canEdit) {
Long localCardId = fullCard.getCard().getLocalId();
localCardId = localCardId == null ? -1 : localCardId;
- people.setAdapter(new UserAutoCompleteAdapter(this, activity, accountId, boardId, localCardId));
- people.setOnItemClickListener((adapterView, view, position, id) -> {
+ binding.people.setAdapter(new UserAutoCompleteAdapter(this, activity, accountId, boardId, localCardId));
+ binding.people.setOnItemClickListener((adapterView, view, position, id) -> {
User user = (User) adapterView.getItemAtPosition(position);
cardDetailsListener.onUserAdded(user);
if (baseUrl != null) {
addAvatar(baseUrl, user);
}
- people.setText("");
+ binding.people.setText("");
});
if (this.fullCard.getAssignedUsers() != null) {
- peopleList.removeAllViews();
+ binding.peopleList.removeAllViews();
if (baseUrl != null) {
for (User user : this.fullCard.getAssignedUsers()) {
addAvatar(baseUrl, user);
@@ -385,7 +359,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
}
}
} else {
- people.setEnabled(false);
+ binding.people.setEnabled(false);
}
}
@@ -395,7 +369,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
if (canEdit) {
avatar.setOnClickListener(v -> {
cardDetailsListener.onUserRemoved(user);
- peopleList.removeView(avatar);
+ binding.peopleList.removeView(avatar);
Snackbar.make(
Objects.requireNonNull(getView()), getString(R.string.unassigned_user, user.getDisplayname()),
Snackbar.LENGTH_LONG)
@@ -405,24 +379,18 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
}).show();
});
}
- peopleList.addView(avatar);
+ binding.peopleList.addView(avatar);
avatar.requestLayout();
ViewUtil.addAvatar(getContext(), avatar, baseUrl, user.getUid(), avatarSize, R.drawable.ic_person_grey600_24dp);
}
@Override
- public void onDestroy() {
- super.onDestroy();
- unbinder.unbind();
- }
-
- @Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Calendar c = Calendar.getInstance();
int hourOfDay;
int minute;
- if (dueDateTime.getText() != null && dueDateTime.length() > 0) {
+ if (binding.dueDateTime.getText() != null && binding.dueDateTime.length() > 0) {
hourOfDay = this.fullCard.getCard().getDueDate().getHours();
minute = this.fullCard.getCard().getDueDate().getMinutes();
} else {
@@ -432,13 +400,13 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
c.set(year, month, dayOfMonth, hourOfDay, minute);
this.fullCard.getCard().setDueDate(c.getTime());
- dueDate.setText(dateFormat.format(c.getTime()));
+ binding.dueDateDate.setText(dateFormat.format(c.getTime()));
cardDetailsListener.onDueDateChanged(fullCard.card.getDueDate());
if (this.fullCard.getCard().getDueDate() == null || this.fullCard.getCard().getDueDate().getTime() == 0) {
- clearDueDate.setVisibility(View.GONE);
+ binding.clearDueDate.setVisibility(View.GONE);
} else {
- clearDueDate.setVisibility(View.VISIBLE);
+ binding.clearDueDate.setVisibility(View.VISIBLE);
}
}
@@ -449,12 +417,12 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
}
this.fullCard.getCard().getDueDate().setHours(hourOfDay);
this.fullCard.getCard().getDueDate().setMinutes(minute);
- dueDateTime.setText(dueTime.format(this.fullCard.getCard().getDueDate().getTime()));
+ binding.dueDateTime.setText(dueTime.format(this.fullCard.getCard().getDueDate().getTime()));
cardDetailsListener.onDueDateChanged(fullCard.card.getDueDate());
if (this.fullCard.getCard().getDueDate() == null || this.fullCard.getCard().getDueDate().getTime() == 0) {
- clearDueDate.setVisibility(View.GONE);
+ binding.clearDueDate.setVisibility(View.GONE);
} else {
- clearDueDate.setVisibility(View.VISIBLE);
+ binding.clearDueDate.setVisibility(View.VISIBLE);
}
}