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

github.com/stefan-niedermann/nextcloud-notes.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/owncloud/notes/android/activity/NotesListViewActivity.java')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java48
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);
-
}
}