diff options
author | stefan-niedermann <info@niedermann.it> | 2019-10-20 02:08:00 +0300 |
---|---|---|
committer | stefan-niedermann <info@niedermann.it> | 2019-10-20 02:08:00 +0300 |
commit | 0cfcf65c53a32a5ceb9e49aa4a2b3a7221ae17d9 (patch) | |
tree | d656089b7587868985ab0ce15f08979522e1a8bb /app/src/main | |
parent | 85f740f6634909144e1773670f31cbf791634802 (diff) |
Select boards
Diffstat (limited to 'app/src/main')
8 files changed, 201 insertions, 22 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/EditActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/EditActivity.java index 53a1ea6a7..2b6a87b59 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/EditActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/EditActivity.java @@ -96,27 +96,30 @@ public class EditActivity extends AppCompatActivity implements CardDetailsFragme syncManager = new SyncManager(this); createMode = NO_LOCAL_ID.equals(localId); - observeOnce(syncManager.getFullBoardById(accountId, boardId), EditActivity.this, (fullBoard -> { - canEdit = fullBoard.getBoard().isPermissionEdit(); - invalidateOptionsMenu(); - if (createMode) { - fullCard = new FullCard(); - fullCard.setLabels(new ArrayList<>()); - fullCard.setAssignedUsers(new ArrayList<>()); - Card card = new Card(); - card.setStackId(stackId); - fullCard.setCard(card); - setupViewPager(); - setupTitle(createMode); - } else { - observeOnce(syncManager.getCardByLocalId(accountId, localId), EditActivity.this, (next) -> { - fullCard = next; - originalCard = new FullCard(fullCard); + if(boardId == 0L) { + } else { + observeOnce(syncManager.getFullBoardById(accountId, boardId), EditActivity.this, (fullBoard -> { + canEdit = fullBoard.getBoard().isPermissionEdit(); + invalidateOptionsMenu(); + if (createMode) { + fullCard = new FullCard(); + fullCard.setLabels(new ArrayList<>()); + fullCard.setAssignedUsers(new ArrayList<>()); + Card card = new Card(); + card.setStackId(stackId); + fullCard.setCard(card); setupViewPager(); setupTitle(createMode); - }); - } - })); + } else { + observeOnce(syncManager.getCardByLocalId(accountId, localId), EditActivity.this, (next) -> { + fullCard = next; + originalCard = new FullCard(fullCard); + setupViewPager(); + setupTitle(createMode); + }); + } + })); + } } else { throw new IllegalArgumentException("No localId argument"); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlDialogFragment.java index c36a9b431..77d3be6bd 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlDialogFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlDialogFragment.java @@ -100,7 +100,7 @@ public class AccessControlDialogFragment extends DialogFragment implements @Override public void deleteAccessControl(AccessControl ac) { // TODO implement in syncManager! - Toast.makeText(getContext(), "Deleting user permisions is not yet supported.", Toast.LENGTH_LONG).show(); + Toast.makeText(getContext(), "Deleting user permissions is not yet supported.", Toast.LENGTH_LONG).show(); } @Override diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/BoardAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/BoardAdapter.java new file mode 100644 index 000000000..efea490a2 --- /dev/null +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/BoardAdapter.java @@ -0,0 +1,58 @@ +package it.niedermann.nextcloud.deck.ui.board; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; +import it.niedermann.nextcloud.deck.R; +import it.niedermann.nextcloud.deck.model.Board; + +public class BoardAdapter extends RecyclerView.Adapter<BoardAdapter.BoardViewHolder> { + + @NonNull + private List<Board> boardsList; + private Context context; + + public BoardAdapter(@NonNull List<Board> boardsList) { + super(); + this.boardsList = boardsList; + } + + @NonNull + @Override + public BoardViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + this.context = parent.getContext(); + View v = LayoutInflater.from(context).inflate(R.layout.item_board, parent, false); + return new BoardViewHolder(v); + } + + @Override + public void onBindViewHolder(@NonNull BoardViewHolder holder, int position) { + holder.boardName.setText(boardsList.get(position).getTitle()); + } + + @Override + public int getItemCount() { + return boardsList.size(); + } + + static class BoardViewHolder extends RecyclerView.ViewHolder { + @BindView(R.id.boardName) + TextView boardName; + + private BoardViewHolder(View view) { + super(view); + ButterKnife.bind(this, view); + } + } + +}
\ No newline at end of file diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java index 902d11066..a3f64798c 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java @@ -91,8 +91,7 @@ public class EditBoardDialogFragment extends DialogFragment { return dialogBuilder .setView(view) - .setNegativeButton(R.string.simple_cancel, (dialog, which) -> { - }) + .setNegativeButton(R.string.simple_cancel, null) .create(); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/SelectBoardDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/SelectBoardDialogFragment.java new file mode 100644 index 000000000..bffed1851 --- /dev/null +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/SelectBoardDialogFragment.java @@ -0,0 +1,88 @@ +package it.niedermann.nextcloud.deck.ui.board; + +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.List; +import java.util.Objects; + +import butterknife.BindView; +import butterknife.ButterKnife; +import it.niedermann.nextcloud.deck.Application; +import it.niedermann.nextcloud.deck.R; +import it.niedermann.nextcloud.deck.model.Board; +import it.niedermann.nextcloud.deck.model.full.FullBoard; +import it.niedermann.nextcloud.deck.persistence.sync.SyncManager; + +public class SelectBoardDialogFragment extends DialogFragment { + + private static final String KEY_ACCOUNT_ID = "account_id"; + + private OnBoardSelectedListener onBoardSelectedListener; + + private FullBoard fullBoard = null; + + @BindView(R.id.boards) + RecyclerView boards; + + /** + * Use newInstance()-Method + */ + public SelectBoardDialogFragment() { + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + if (context instanceof OnBoardSelectedListener) { + this.onBoardSelectedListener = (OnBoardSelectedListener) context; + } else { + throw new ClassCastException("Caller must implement " + OnBoardSelectedListener.class.getCanonicalName()); + } + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Activity activity = Objects.requireNonNull(getActivity()); + View view = activity.getLayoutInflater().inflate(R.layout.dialog_board_select, null); + ButterKnife.bind(this, view); + + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity, Application.getAppTheme(getContext()) ? R.style.DialogDarkTheme : R.style.ThemeOverlay_AppCompat_Dialog_Alert); + dialogBuilder.setTitle(R.string.simple_select); + dialogBuilder.setPositiveButton(R.string.simple_select, (dialog, which) -> onBoardSelectedListener.onBoardSelected(fullBoard)); + SyncManager syncManager = new SyncManager(activity); + syncManager.getBoards(getArguments().getLong(KEY_ACCOUNT_ID)).observe(this, (List<Board> boardsList) -> { + boards.setAdapter(new BoardAdapter(boardsList)); + }); + + return dialogBuilder + .setView(view) + .setNegativeButton(R.string.simple_cancel, null) + .create(); + } + + public static SelectBoardDialogFragment newInstance(@NonNull Long accountId) { + SelectBoardDialogFragment dialog = new SelectBoardDialogFragment(); + + Bundle args = new Bundle(); + args.putLong(KEY_ACCOUNT_ID, accountId); + dialog.setArguments(args); + + return dialog; + } + + public interface OnBoardSelectedListener { + void onBoardSelected(FullBoard fullBoard); + } + +}
\ No newline at end of file diff --git a/app/src/main/res/layout/dialog_board_select.xml b/app/src/main/res/layout/dialog_board_select.xml new file mode 100644 index 000000000..3a37f5f4c --- /dev/null +++ b/app/src/main/res/layout/dialog_board_select.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + xmlns:tools="http://schemas.android.com/tools" + android:orientation="vertical" + android:padding="@dimen/standard_margin"> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/boards" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:scrollbars="vertical" + tools:listitem="@layout/dialog_board_select"/> +</LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/item_board.xml b/app/src/main/res/layout/item_board.xml new file mode 100644 index 000000000..b7da959fb --- /dev/null +++ b/app/src/main/res/layout/item_board.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="@dimen/standard_padding"> + + <TextView + android:id="@+id/boardName" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textColor="@color/fg_secondary" + tools:text="4 days ago" /> +</LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6b019441a..5b8526ae4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -142,4 +142,5 @@ <string name="simple_manage">manage</string> <string name="simple_share">share</string> <string name="you_have_to_be_connected_to_the_internet_in_order_to_add_an_account">You have to be connected to the internet in order to add an account.</string> + <string name="simple_select">Select</string> </resources> |