mirror of
https://github.com/etesync/android
synced 2024-12-23 15:18:14 +00:00
Refresh ViewCollectionActivity when edited/deleted
Until now we were just closing it when opening a view that can cause a change. This is nicer.
This commit is contained in:
parent
0cd57851ad
commit
99fe3457fc
@ -72,7 +72,7 @@ import lombok.Cleanup;
|
|||||||
|
|
||||||
import static android.content.ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE;
|
import static android.content.ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE;
|
||||||
|
|
||||||
public class AccountActivity extends AppCompatActivity implements Toolbar.OnMenuItemClickListener, PopupMenu.OnMenuItemClickListener, LoaderManager.LoaderCallbacks<AccountActivity.AccountInfo> {
|
public class AccountActivity extends AppCompatActivity implements Toolbar.OnMenuItemClickListener, PopupMenu.OnMenuItemClickListener, LoaderManager.LoaderCallbacks<AccountActivity.AccountInfo>, Refreshable {
|
||||||
public static final String EXTRA_ACCOUNT = "account";
|
public static final String EXTRA_ACCOUNT = "account";
|
||||||
|
|
||||||
private Account account;
|
private Account account;
|
||||||
@ -202,7 +202,8 @@ public class AccountActivity extends AppCompatActivity implements Toolbar.OnMenu
|
|||||||
return new AccountLoader(this, account);
|
return new AccountLoader(this, account);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reload() {
|
@Override
|
||||||
|
public void refresh() {
|
||||||
getLoaderManager().restartLoader(0, getIntent().getExtras(), this);
|
getLoaderManager().restartLoader(0, getIntent().getExtras(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,9 +82,9 @@ public class DeleteCollectionFragment extends DialogFragment implements LoaderMa
|
|||||||
.commitAllowingStateLoss();
|
.commitAllowingStateLoss();
|
||||||
else {
|
else {
|
||||||
Activity activity = getActivity();
|
Activity activity = getActivity();
|
||||||
if (activity instanceof AccountActivity)
|
if (activity instanceof Refreshable)
|
||||||
((AccountActivity) activity).reload();
|
((Refreshable) activity).refresh();
|
||||||
else if (activity instanceof CreateCollectionActivity)
|
else if (activity instanceof EditCollectionActivity)
|
||||||
activity.finish();
|
activity.finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,6 +67,15 @@ public class EditCollectionActivity extends CreateCollectionActivity {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
|
||||||
|
if (getParent() instanceof Refreshable) {
|
||||||
|
((Refreshable) getParent()).refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void onDeleteCollection(MenuItem item) {
|
public void onDeleteCollection(MenuItem item) {
|
||||||
EntityDataStore<Persistable> data = ((App) getApplication()).getData();
|
EntityDataStore<Persistable> data = ((App) getApplication()).getData();
|
||||||
int journalCount = data.count(JournalEntity.class).where(JournalEntity.SERVICE.eq(info.serviceID)).get().value();
|
int journalCount = data.count(JournalEntity.class).where(JournalEntity.SERVICE.eq(info.serviceID)).get().value();
|
||||||
|
@ -205,6 +205,10 @@ public class ImportFragment extends DialogFragment {
|
|||||||
.commitAllowingStateLoss();
|
.commitAllowingStateLoss();
|
||||||
|
|
||||||
dismissAllowingStateLoss();
|
dismissAllowingStateLoss();
|
||||||
|
|
||||||
|
if (getActivity() instanceof Refreshable) {
|
||||||
|
((Refreshable) getActivity()).refresh();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ImportCalendarsLoader implements Runnable {
|
private class ImportCalendarsLoader implements Runnable {
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
package com.etesync.syncadapter.ui;
|
||||||
|
|
||||||
|
interface Refreshable {
|
||||||
|
public void refresh();
|
||||||
|
}
|
@ -36,7 +36,7 @@ import at.bitfire.vcard4android.ContactsStorageException;
|
|||||||
import io.requery.Persistable;
|
import io.requery.Persistable;
|
||||||
import io.requery.sql.EntityDataStore;
|
import io.requery.sql.EntityDataStore;
|
||||||
|
|
||||||
public class ViewCollectionActivity extends AppCompatActivity {
|
public class ViewCollectionActivity extends AppCompatActivity implements Refreshable {
|
||||||
public final static String EXTRA_ACCOUNT = "account",
|
public final static String EXTRA_ACCOUNT = "account",
|
||||||
EXTRA_COLLECTION_INFO = "collectionInfo";
|
EXTRA_COLLECTION_INFO = "collectionInfo";
|
||||||
|
|
||||||
@ -50,6 +50,61 @@ public class ViewCollectionActivity extends AppCompatActivity {
|
|||||||
return intent;
|
return intent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void refresh() {
|
||||||
|
EntityDataStore<Persistable> data = ((App) getApplicationContext()).getData();
|
||||||
|
int entryCount = -1;
|
||||||
|
|
||||||
|
final JournalEntity journalEntity = JournalEntity.fetch(data, info.url);
|
||||||
|
if (journalEntity == null) {
|
||||||
|
finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
info = journalEntity.getInfo();
|
||||||
|
|
||||||
|
entryCount = data.count(EntryEntity.class).where(EntryEntity.JOURNAL.eq(journalEntity)).get().value();
|
||||||
|
|
||||||
|
|
||||||
|
final TextView stats = (TextView) findViewById(R.id.stats);
|
||||||
|
|
||||||
|
final View colorSquare = findViewById(R.id.color);
|
||||||
|
if (info.type == CollectionInfo.Type.CALENDAR) {
|
||||||
|
if (info.color != null) {
|
||||||
|
colorSquare.setBackgroundColor(info.color);
|
||||||
|
} else {
|
||||||
|
colorSquare.setBackgroundColor(LocalCalendar.defaultColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
LocalCalendar resource = (LocalCalendar) LocalCalendar.find(account, this.getContentResolver().acquireContentProviderClient(CalendarContract.CONTENT_URI),
|
||||||
|
LocalCalendar.Factory.INSTANCE, CalendarContract.Calendars.NAME + "=?", new String[]{info.url})[0];
|
||||||
|
long count = resource.count();
|
||||||
|
stats.setText(String.format(Locale.getDefault(), "Events: %d, Journal entries: %d", count, entryCount));
|
||||||
|
} catch (CalendarStorageException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
stats.setText("Stats loading error.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
colorSquare.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
try {
|
||||||
|
LocalAddressBook resource = new LocalAddressBook(account, this.getContentResolver().acquireContentProviderClient(ContactsContract.Contacts.CONTENT_URI));
|
||||||
|
long count = resource.count();
|
||||||
|
stats.setText(String.format(Locale.getDefault(), "Contacts: %d, Journal Entries: %d", count, entryCount));
|
||||||
|
} catch (ContactsStorageException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
stats.setText("Stats loading error.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final TextView title = (TextView) findViewById(R.id.display_name);
|
||||||
|
title.setText(info.displayName);
|
||||||
|
|
||||||
|
final TextView desc = (TextView) findViewById(R.id.description);
|
||||||
|
desc.setText(info.description);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -67,56 +122,7 @@ public class ViewCollectionActivity extends AppCompatActivity {
|
|||||||
.commit();
|
.commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
refresh();
|
||||||
final TextView stats = (TextView) findViewById(R.id.stats);
|
|
||||||
|
|
||||||
final View colorSquare = findViewById(R.id.color);
|
|
||||||
if (info.type == CollectionInfo.Type.CALENDAR) {
|
|
||||||
if (info.color != null) {
|
|
||||||
colorSquare.setBackgroundColor(info.color);
|
|
||||||
} else {
|
|
||||||
colorSquare.setBackgroundColor(LocalCalendar.defaultColor);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
LocalCalendar resource = (LocalCalendar) LocalCalendar.find(account, this.getContentResolver().acquireContentProviderClient(CalendarContract.CONTENT_URI),
|
|
||||||
LocalCalendar.Factory.INSTANCE, CalendarContract.Calendars.NAME + "=?", new String[]{info.url})[0];
|
|
||||||
long count = resource.count();
|
|
||||||
EntityDataStore<Persistable> data = ((App) getApplication()).getData();
|
|
||||||
int entryCount = -1;
|
|
||||||
final JournalEntity journalEntity = data.select(JournalEntity.class).where(JournalEntity.UID.eq(info.url)).limit(1).get().firstOrNull();
|
|
||||||
if (journalEntity != null) {
|
|
||||||
entryCount = data.count(EntryEntity.class).where(EntryEntity.JOURNAL.eq(journalEntity)).get().value();
|
|
||||||
}
|
|
||||||
stats.setText(String.format(Locale.getDefault(), "Events: %d, Journal entries: %d", count, entryCount));
|
|
||||||
} catch (CalendarStorageException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
stats.setText("Stats loading error.");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
colorSquare.setVisibility(View.GONE);
|
|
||||||
|
|
||||||
try {
|
|
||||||
LocalAddressBook resource = new LocalAddressBook(account, this.getContentResolver().acquireContentProviderClient(ContactsContract.Contacts.CONTENT_URI));
|
|
||||||
long count = resource.count();
|
|
||||||
EntityDataStore<Persistable> data = ((App) getApplication()).getData();
|
|
||||||
int entryCount = -1;
|
|
||||||
final JournalEntity journalEntity = data.select(JournalEntity.class).where(JournalEntity.UID.eq(info.url)).limit(1).get().firstOrNull();
|
|
||||||
if (journalEntity != null) {
|
|
||||||
entryCount = data.count(EntryEntity.class).where(EntryEntity.JOURNAL.eq(journalEntity)).get().value();
|
|
||||||
};
|
|
||||||
stats.setText(String.format(Locale.getDefault(), "Contacts: %d, Journal Entries: %d", count, entryCount));
|
|
||||||
} catch (ContactsStorageException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
stats.setText("Stats loading error.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final TextView title = (TextView) findViewById(R.id.display_name);
|
|
||||||
title.setText(info.displayName);
|
|
||||||
|
|
||||||
final TextView desc = (TextView) findViewById(R.id.description);
|
|
||||||
desc.setText(info.description);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -143,6 +149,8 @@ public class ViewCollectionActivity extends AppCompatActivity {
|
|||||||
App app = (App) getApplicationContext();
|
App app = (App) getApplicationContext();
|
||||||
if (app.getCertManager() != null)
|
if (app.getCertManager() != null)
|
||||||
app.getCertManager().appInForeground = true;
|
app.getCertManager().appInForeground = true;
|
||||||
|
|
||||||
|
refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -156,8 +164,6 @@ public class ViewCollectionActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
public void onEditCollection(MenuItem item) {
|
public void onEditCollection(MenuItem item) {
|
||||||
startActivity(EditCollectionActivity.newIntent(this, account, info));
|
startActivity(EditCollectionActivity.newIntent(this, account, info));
|
||||||
// FIXME: Handle it more gracefully
|
|
||||||
finish();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onImport(MenuItem item) {
|
public void onImport(MenuItem item) {
|
||||||
|
Loading…
Reference in New Issue
Block a user