use of com.orgzly.android.db.entity.Repo in project orgzly-android by orgzly.
the class MainActivity method setupViewModel.
private void setupViewModel() {
sharedMainActivityViewModel.getDrawerLockState().observe(this, isLocked -> {
DrawerLayout layout = mDrawerLayout;
if (layout != null) {
if (isLocked == null || !isLocked) {
layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
} else {
layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
}
}
});
sharedMainActivityViewModel.getFragmentState().observe(this, state -> {
if (BuildConfig.LOG_DEBUG)
LogUtils.d(TAG, "Observed fragment state: " + state);
if (state != null) {
getSupportActionBar().setTitle(state.getTitle());
// Clean up whitespace for multi-line query
CharSequence subTitle = state.getSubTitle();
if (subTitle != null) {
subTitle = subTitle.toString().replaceAll("\\s{2,}", " ");
}
getSupportActionBar().setSubtitle(subTitle);
drawerNavigationView.updateActiveFragment(state.getTag());
/* Update floating action button. */
MainFab.updateFab(this, state.getTag(), state.getSelectionCount());
}
});
viewModel.getOpenNoteWithPropertyRequestEvent().observeSingle(this, pair -> {
if (pair != null) {
UseCase action = pair.getFirst();
UseCaseResult result = pair.getSecond();
if (action instanceof NoteFindWithProperty) {
NoteFindWithProperty thisAction = (NoteFindWithProperty) action;
if (result.getUserData() != null) {
NoteDao.NoteIdBookId note = (NoteDao.NoteIdBookId) result.getUserData();
DisplayManager.displayExistingNote(getSupportFragmentManager(), note.getBookId(), note.getNoteId());
} else {
showSnackbar(getString(R.string.no_such_link_target, thisAction.getName(), thisAction.getValue()));
}
}
}
});
viewModel.getOpenFileLinkRequestEvent().observeSingle(this, result -> {
if (result != null && result.getUserData() != null) {
Object userData = result.getUserData();
if (userData instanceof Book) {
Book book = (Book) userData;
Intent intent = new Intent(AppIntent.ACTION_OPEN_BOOK);
intent.putExtra(AppIntent.EXTRA_BOOK_ID, book.getId());
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
if (BuildConfig.LOG_DEBUG)
LogUtils.d(TAG, "sending intent", intent);
} else if (userData instanceof File) {
File file = (File) userData;
openFileIfExists(file);
}
}
});
viewModel.getOpenNoteRequestEvent().observeSingle(this, note -> MainActivity.openSpecificNote(note.getPosition().getBookId(), note.getId()));
viewModel.getSetBookLinkRequestEvent().observeSingle(this, result -> {
Book book = result.getBook();
List<Repo> links = result.getLinks();
CharSequence[] urls = result.getUrls();
int checked = result.getSelected();
if (links.isEmpty()) {
showSnackbarWithReposLink(getString(R.string.no_repos));
} else {
ArrayAdapter<Repo> adapter = new ArrayAdapter<>(this, R.layout.item_repo, R.id.item_repo_url);
adapter.addAll(links);
dialog = new AlertDialog.Builder(this).setTitle(R.string.book_link).setSingleChoiceItems(urls, checked, (d, which) -> {
mSyncFragment.run(new BookLinkUpdate(book.getId(), links.get(which)));
dialog.dismiss();
dialog = null;
}).setNeutralButton(R.string.remove_notebook_link, (dialog, which) -> {
mSyncFragment.run(new BookLinkUpdate(book.getId()));
}).setNegativeButton(R.string.cancel, null).show();
}
});
viewModel.getSavedSearchedExportEvent().observeSingle(this, count -> {
showSnackbar(getResources().getQuantityString(R.plurals.exported_searches, count, count));
});
viewModel.getSavedSearchedImportEvent().observeSingle(this, count -> {
showSnackbar(getResources().getQuantityString(R.plurals.imported_searches, count, count));
});
viewModel.getErrorEvent().observeSingle(this, error -> {
if (error != null) {
showSnackbar(error.getLocalizedMessage());
}
});
}
use of com.orgzly.android.db.entity.Repo in project orgzly-android by orgzly.
the class DirectoryRepoTest method testListDownloadsDirectory.
@Test
public void testListDownloadsDirectory() throws IOException {
File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
String path = DirectoryRepo.SCHEME + ":" + dir.getAbsolutePath();
RepoWithProps repoWithProps = new RepoWithProps(new Repo(13, RepoType.DIRECTORY, path));
DirectoryRepo repo = new DirectoryRepo(repoWithProps, false);
assertNotNull(repo.getBooks());
}
use of com.orgzly.android.db.entity.Repo in project orgzly-android by orgzly.
the class LocalDbRepoTest method testGetBooksFromAllRepos.
@Test
public void testGetBooksFromAllRepos() throws IOException {
Repo repo = testUtils.setupRepo(RepoType.MOCK, "mock://repo-a");
testUtils.setupRook(repo, "mock://repo-a/mock-book.org", "book content\n\n* First note\n** Second note", "rev1", 1234567890000L);
List<VersionedRook> books = SyncService.getBooksFromAllRepos(dataRepository, null);
assertEquals(1, books.size());
VersionedRook vrook = books.get(0);
assertEquals("mock-book", BookName.getInstance(context, vrook).getName());
assertEquals("mock://repo-a", vrook.getRepoUri().toString());
assertEquals("mock://repo-a/mock-book.org", vrook.getUri().toString());
assertEquals("rev1", vrook.getRevision());
assertEquals(1234567890000L, vrook.getMtime());
}
use of com.orgzly.android.db.entity.Repo in project orgzly-android by orgzly.
the class SyncTest method testMtimeOfLoadedBook.
@Test
public void testMtimeOfLoadedBook() {
Repo repo = testUtils.setupRepo(RepoType.MOCK, "mock://repo-a");
testUtils.setupRook(repo, "mock://repo-a/book.org", "Content", "rev", 1234567890000L);
testUtils.sync();
BookView book = dataRepository.getBooks().get(0);
assertEquals(BookSyncStatus.DUMMY_WITHOUT_LINK_AND_ONE_ROOK.toString(), book.getBook().getSyncStatus());
assertEquals(1234567890000L, book.getBook().getMtime().longValue());
}
use of com.orgzly.android.db.entity.Repo in project orgzly-android by orgzly.
the class SyncTest method testRenameSyncedBookWithDifferentLink.
@Test
public void testRenameSyncedBookWithDifferentLink() throws IOException {
BookView book;
Repo repoA = testUtils.setupRepo(RepoType.MOCK, "mock://repo-a");
Repo repoB = testUtils.setupRepo(RepoType.MOCK, "mock://repo-b");
book = testUtils.setupBook("Booky", "1 2 3");
dataRepository.setLink(book.getBook().getId(), repoA);
testUtils.sync();
book = dataRepository.getBooks().get(0);
assertEquals(1, testUtils.repoInstance(RepoType.MOCK, "mock://repo-a").getBooks().size());
assertEquals(0, testUtils.repoInstance(RepoType.MOCK, "mock://repo-b").getBooks().size());
assertEquals("mock://repo-a", book.getLinkRepo().getUrl());
assertEquals("mock://repo-a", book.getSyncedTo().getRepoUri().toString());
assertEquals("mock://repo-a/Booky.org", book.getSyncedTo().getUri().toString());
dataRepository.setLink(book.getBook().getId(), repoB);
book = dataRepository.getBooks().get(0);
dataRepository.renameBook(book, "BookyRenamed");
book = dataRepository.getBooks().get(0);
assertEquals("Booky", book.getBook().getName());
assertEquals(BookSyncStatus.ROOK_AND_VROOK_HAVE_DIFFERENT_REPOS.toString(), book.getBook().getSyncStatus());
assertEquals("mock://repo-b", book.getLinkRepo().getUrl());
assertEquals("mock://repo-a/Booky.org", book.getSyncedTo().getUri().toString());
}
Aggregations