diff options
author | stefan-niedermann <info@niedermann.it> | 2019-10-20 13:16:46 +0300 |
---|---|---|
committer | stefan-niedermann <info@niedermann.it> | 2019-10-20 13:16:46 +0300 |
commit | 4494205873cdc306ec62b3a0cee052469a5a7e92 (patch) | |
tree | fd4ac89513606f8b166fbc4f045fb7993cce2b5f /app/src | |
parent | 536a52a9a272800d359b94c38f72a3c9d16c0f6c (diff) |
Display actual list of boards when not given in EditActivity
Diffstat (limited to 'app/src')
7 files changed, 44 insertions, 25 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java index bb38977f1..be6a53a0a 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java @@ -167,6 +167,10 @@ public class SyncManager { return dataBaseAdapter.readAccount(id); } + public LiveData<Account> readAccount(String name) { + return dataBaseAdapter.readAccount(name); + } + public LiveData<List<Account>> readAccounts() { return dataBaseAdapter.readAccounts(); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java index ddfa06dfb..bbe2c4e1b 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java @@ -278,6 +278,10 @@ public class DataBaseAdapter { return LiveDataHelper.onlyIfChanged(db.getAccountDao().selectById(id)); } + public LiveData<Account> readAccount(String name) { + return LiveDataHelper.onlyIfChanged(db.getAccountDao().selectById(name)); + } + public Account readAccountDirectly(long id) { return db.getAccountDao().getAccountByIdDirectly(id); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/AccountDao.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/AccountDao.java index 3c0286ef4..56ac92008 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/AccountDao.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/AccountDao.java @@ -1,10 +1,11 @@ package it.niedermann.nextcloud.deck.persistence.sync.adapters.db.dao; -import java.util.List; - import androidx.lifecycle.LiveData; import androidx.room.Dao; import androidx.room.Query; + +import java.util.List; + import it.niedermann.nextcloud.deck.model.Account; @Dao @@ -28,6 +29,9 @@ public interface AccountDao extends GenericDao<Account> { @Query("SELECT * from account where id = :id") LiveData<Account> selectById(long id); + @Query("SELECT * from account where name = :name") + LiveData<Account> selectById(String name); + @Query("SELECT * from account") LiveData<List<Account>> selectAll(); }
\ No newline at end of file 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 eadfbb90f..29e4aa78a 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 @@ -21,6 +21,7 @@ import com.google.android.material.textfield.TextInputLayout; import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException; import com.nextcloud.android.sso.exceptions.NoCurrentAccountSelectedException; import com.nextcloud.android.sso.helper.SingleAccountHelper; +import com.nextcloud.android.sso.model.SingleSignOnAccount; import java.util.ArrayList; import java.util.Date; @@ -31,6 +32,7 @@ import butterknife.ButterKnife; import butterknife.Unbinder; import it.niedermann.nextcloud.deck.Application; import it.niedermann.nextcloud.deck.R; +import it.niedermann.nextcloud.deck.model.Account; import it.niedermann.nextcloud.deck.model.Board; import it.niedermann.nextcloud.deck.model.Card; import it.niedermann.nextcloud.deck.model.Label; @@ -106,9 +108,10 @@ public class EditActivity extends AppCompatActivity implements createMode = NO_LOCAL_ID.equals(localId); if(boardId == 0L) { try { -// syncManager.readAccount() - SingleAccountHelper.getCurrentSingleSignOnAccount(this); - SelectBoardDialogFragment.newInstance(accountId).show(getSupportFragmentManager(), getString(R.string.simple_select)); + SingleSignOnAccount ssoa = SingleAccountHelper.getCurrentSingleSignOnAccount(this); + syncManager.readAccount(ssoa.name).observe(this, (Account account) -> { + SelectBoardDialogFragment.newInstance(account.getId()).show(getSupportFragmentManager(), getString(R.string.simple_select)); + }); } catch (NextcloudFilesAppAccountNotFoundException | NoCurrentAccountSelectedException e) { e.printStackTrace(); } 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 index efea490a2..4c61e89e6 100644 --- 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 @@ -7,6 +7,7 @@ import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; import java.util.List; @@ -15,29 +16,35 @@ import butterknife.BindView; import butterknife.ButterKnife; import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.model.Board; +import it.niedermann.nextcloud.deck.util.ViewUtil; public class BoardAdapter extends RecyclerView.Adapter<BoardAdapter.BoardViewHolder> { @NonNull private List<Board> boardsList; + @Nullable private Context context; - public BoardAdapter(@NonNull List<Board> boardsList) { + public BoardAdapter(@Nullable Context context, @NonNull List<Board> boardsList) { super(); this.boardsList = boardsList; + this.context = context; } @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); + View v = LayoutInflater.from(parent.getContext()).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()); + Board board = boardsList.get(position); + holder.boardName.setText(board.getTitle()); + if(context != null) { + holder.boardName.setCompoundDrawables(ViewUtil.getTintedImageView(context, R.drawable.circle_grey600_36dp, "#" + board.getColor()), null, null, null); + } } @Override 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 index 1c2c9093f..930fa3095 100644 --- 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 @@ -52,14 +52,15 @@ public class SelectBoardDialogFragment extends DialogFragment { @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); - long accountId = Objects.requireNonNull(getArguments()).getLong(KEY_ACCOUNT_ID); + final long accountId = Objects.requireNonNull(getArguments()).getLong(KEY_ACCOUNT_ID); if(accountId == 0L) { throw new IllegalArgumentException("You must provide an accountId"); } + 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); @@ -67,7 +68,7 @@ public class SelectBoardDialogFragment extends DialogFragment { dialogBuilder.setPositiveButton(R.string.simple_select, (dialog, which) -> onBoardSelectedListener.onBoardSelected(board)); SyncManager syncManager = new SyncManager(activity); syncManager.getBoards(accountId).observe(this, (List<Board> boardsList) -> { - boards.setAdapter(new BoardAdapter(boardsList)); + boards.setAdapter(new BoardAdapter(getContext(), boardsList)); }); return dialogBuilder diff --git a/app/src/main/res/layout/dialog_board_select.xml b/app/src/main/res/layout/dialog_board_select.xml index 3a37f5f4c..c203a21d9 100644 --- a/app/src/main/res/layout/dialog_board_select.xml +++ b/app/src/main/res/layout/dialog_board_select.xml @@ -1,15 +1,11 @@ <?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" +<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/boards" 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 + android:padding="@dimen/standard_margin" + android:scrollbars="vertical" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" + tools:listitem="@layout/dialog_board_select" />
\ No newline at end of file |