diff options
Diffstat (limited to 'app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java')
-rw-r--r-- | app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java | 48 |
1 files changed, 41 insertions, 7 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java index 3daf809a..eca82fef 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java @@ -22,11 +22,13 @@ import androidx.annotation.NonNull; import androidx.appcompat.view.ActionMode; import androidx.appcompat.widget.SearchView; import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.core.view.GravityCompat; import androidx.core.view.ViewCompat; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.StaggeredGridLayoutManager; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.bumptech.glide.Glide; @@ -62,6 +64,7 @@ import it.niedermann.owncloud.notes.formattinghelp.FormattingHelpActivity; import it.niedermann.owncloud.notes.model.Capabilities; import it.niedermann.owncloud.notes.model.Category; import it.niedermann.owncloud.notes.model.DBNote; +import it.niedermann.owncloud.notes.model.GridItemDecoration; import it.niedermann.owncloud.notes.model.ISyncCallback; import it.niedermann.owncloud.notes.model.Item; import it.niedermann.owncloud.notes.model.ItemAdapter; @@ -70,6 +73,7 @@ import it.niedermann.owncloud.notes.model.NavigationAdapter; import it.niedermann.owncloud.notes.model.NavigationAdapter.CategoryNavigationItem; import it.niedermann.owncloud.notes.model.NavigationAdapter.NavigationItem; import it.niedermann.owncloud.notes.model.NoteClickListener; +import it.niedermann.owncloud.notes.model.SectionItemDecoration; import it.niedermann.owncloud.notes.persistence.CapabilitiesClient; import it.niedermann.owncloud.notes.persistence.CapabilitiesWorker; import it.niedermann.owncloud.notes.persistence.LoadNotesListTask; @@ -83,6 +87,8 @@ import static android.view.View.GONE; import static android.view.View.VISIBLE; import static it.niedermann.owncloud.notes.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme; import static it.niedermann.owncloud.notes.util.ColorUtil.contrastRatioIsSufficient; +import static it.niedermann.owncloud.notes.util.Notes.isDarkThemeActive; +import static it.niedermann.owncloud.notes.util.Notes.isGridViewEnabled; import static it.niedermann.owncloud.notes.util.SSOUtil.askForNewAccount; import static java.util.Arrays.asList; @@ -90,6 +96,8 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi private static final String TAG = NotesListViewActivity.class.getSimpleName(); + private boolean gridView = true; + public static final String CREATED_NOTE = "it.niedermann.owncloud.notes.created_notes"; public static final String ADAPTER_KEY_RECENT = "recent"; public static final String ADAPTER_KEY_STARRED = "starred"; @@ -123,7 +131,7 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi protected FloatingActionButton fabCreate; private RecyclerView listView; - protected ItemAdapter adapter = null; + protected ItemAdapter adapter; protected NotesDatabase db = null; private NavigationAdapter adapterCategories; @@ -177,6 +185,11 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi db = NotesDatabase.getInstance(this); + gridView = isGridViewEnabled(); + if (!gridView || isDarkThemeActive(this)) { + activityBinding.activityNotesListView.setBackgroundColor(ContextCompat.getColor(this, R.color.primary)); + } + setupToolbars(); setupNavigationList(categoryAdapterSelectedItem); setupNavigationMenu(); @@ -229,7 +242,8 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi try { BrandingUtil.saveBrandColors(this, localAccount.getColor(), localAccount.getTextColor()); ssoAccount = SingleAccountHelper.getCurrentSingleSignOnAccount(getApplicationContext()); - new NotesListViewItemTouchHelper(ssoAccount, this, db, adapter, syncCallBack, this::refreshLists, swipeRefreshLayout, this).attachToRecyclerView(listView); + new NotesListViewItemTouchHelper(ssoAccount, this, db, adapter, syncCallBack, this::refreshLists, swipeRefreshLayout, this, gridView) + .attachToRecyclerView(listView); synchronize(); } catch (NextcloudFilesAppAccountNotFoundException | NoCurrentAccountSelectedException e) { Log.i(TAG, "Tried to select account, but got an " + e.getClass().getSimpleName() + ". Asking for importing an account..."); @@ -317,7 +331,7 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi } private void setupNotesList() { - initList(); + initRecyclerView(); ((RecyclerView) findViewById(R.id.recycler_view)).addOnScrollListener(new RecyclerView.OnScrollListener() { @Override @@ -588,10 +602,31 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi binding.navigationMenu.setAdapter(adapterMenu); } - public void initList() { - adapter = new ItemAdapter(this); + private void initRecyclerView() { + adapter = new ItemAdapter(this, gridView); listView.setAdapter(adapter); - listView.setLayoutManager(new LinearLayoutManager(this)); + + if (gridView) { + int spanCount = getResources().getInteger(R.integer.grid_view_span_count); + StaggeredGridLayoutManager gridLayoutManager = new StaggeredGridLayoutManager(spanCount, StaggeredGridLayoutManager.VERTICAL); + listView.setLayoutManager(gridLayoutManager); + listView.addItemDecoration(new GridItemDecoration(adapter, spanCount, + getResources().getDimensionPixelSize(R.dimen.spacer_3x), + getResources().getDimensionPixelSize(R.dimen.spacer_5x), + getResources().getDimensionPixelSize(R.dimen.spacer_3x), + getResources().getDimensionPixelSize(R.dimen.spacer_1x), + getResources().getDimensionPixelSize(R.dimen.spacer_1x) + )); + } else { + LinearLayoutManager layoutManager = new LinearLayoutManager(this); + listView.setLayoutManager(layoutManager); + listView.addItemDecoration(new SectionItemDecoration(adapter, + getResources().getDimensionPixelSize(R.dimen.spacer_6x), + getResources().getDimensionPixelSize(R.dimen.spacer_5x), + getResources().getDimensionPixelSize(R.dimen.spacer_1x), + 0 + )); + } } private void refreshLists() { @@ -787,7 +822,6 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi Intent intent = new Intent(getApplicationContext(), EditNoteActivity.class); intent.putExtra(EditNoteActivity.PARAM_NOTE_ID, note.getId()); startActivityForResult(intent, show_single_note_cmd); - } } |