mirror of
https://github.com/MatomoCamp/matomocamp-companion-android.git
synced 2024-09-19 16:13:46 +02:00
Changed event id and person id to long type instead of int.
Only broadcast bookmark added/removed on success.
This commit is contained in:
parent
2a3f717e92
commit
6e11286b26
7 changed files with 53 additions and 39 deletions
|
@ -69,12 +69,8 @@ public class SearchResultActivity extends ActionBarActivity {
|
||||||
|
|
||||||
} else if (Intent.ACTION_VIEW.equals(intentAction)) {
|
} else if (Intent.ACTION_VIEW.equals(intentAction)) {
|
||||||
// Search suggestion, dispatch to EventDetailsActivity
|
// Search suggestion, dispatch to EventDetailsActivity
|
||||||
try {
|
Intent dispatchIntent = new Intent(this, EventDetailsActivity.class).setData(intent.getData());
|
||||||
Intent dispatchIntent = new Intent(this, EventDetailsActivity.class).setData(intent.getData());
|
startActivity(dispatchIntent);
|
||||||
startActivity(dispatchIntent);
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
// Ignore invalid data
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isNewIntent) {
|
if (!isNewIntent) {
|
||||||
finish();
|
finish();
|
||||||
|
|
|
@ -638,7 +638,7 @@ public class DatabaseManager {
|
||||||
|
|
||||||
day.getDate().setTime(cursor.getLong(11));
|
day.getDate().setTime(cursor.getLong(11));
|
||||||
}
|
}
|
||||||
event.setId(cursor.getInt(0));
|
event.setId(cursor.getLong(0));
|
||||||
if (cursor.isNull(1)) {
|
if (cursor.isNull(1)) {
|
||||||
event.setStartTime(null);
|
event.setStartTime(null);
|
||||||
} else {
|
} else {
|
||||||
|
@ -678,8 +678,8 @@ public class DatabaseManager {
|
||||||
return toEvent(cursor, null);
|
return toEvent(cursor, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int toEventId(Cursor cursor) {
|
public static long toEventId(Cursor cursor) {
|
||||||
return cursor.getInt(0);
|
return cursor.getLong(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long toEventStartTimeMillis(Cursor cursor) {
|
public static long toEventStartTimeMillis(Cursor cursor) {
|
||||||
|
@ -721,7 +721,7 @@ public class DatabaseManager {
|
||||||
if (person == null) {
|
if (person == null) {
|
||||||
person = new Person();
|
person = new Person();
|
||||||
}
|
}
|
||||||
person.setId(cursor.getInt(0));
|
person.setId(cursor.getLong(0));
|
||||||
person.setName(cursor.getString(1));
|
person.setName(cursor.getString(1));
|
||||||
|
|
||||||
return person;
|
return person;
|
||||||
|
@ -755,6 +755,8 @@ public class DatabaseManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean addBookmark(Event event) {
|
public boolean addBookmark(Event event) {
|
||||||
|
boolean complete = false;
|
||||||
|
|
||||||
SQLiteDatabase db = helper.getWritableDatabase();
|
SQLiteDatabase db = helper.getWritableDatabase();
|
||||||
db.beginTransaction();
|
db.beginTransaction();
|
||||||
try {
|
try {
|
||||||
|
@ -768,25 +770,29 @@ public class DatabaseManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
db.setTransactionSuccessful();
|
db.setTransactionSuccessful();
|
||||||
|
complete = true;
|
||||||
return true;
|
return true;
|
||||||
} finally {
|
} finally {
|
||||||
db.endTransaction();
|
db.endTransaction();
|
||||||
context.getContentResolver().notifyChange(URI_BOOKMARKS, null);
|
|
||||||
|
|
||||||
Intent intent = new Intent(ACTION_ADD_BOOKMARK).putExtra(EXTRA_EVENT, event);
|
if (complete) {
|
||||||
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
|
context.getContentResolver().notifyChange(URI_BOOKMARKS, null);
|
||||||
|
|
||||||
|
Intent intent = new Intent(ACTION_ADD_BOOKMARK).putExtra(EXTRA_EVENT, event);
|
||||||
|
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean removeBookmark(Event event) {
|
public boolean removeBookmark(Event event) {
|
||||||
return removeBookmark(new int[] { event.getId() });
|
return removeBookmarks(new long[] { event.getId() });
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean removeBookmark(int eventId) {
|
public boolean removeBookmark(long eventId) {
|
||||||
return removeBookmark(new int[] { eventId });
|
return removeBookmarks(new long[] { eventId });
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean removeBookmark(int[] eventIds) {
|
public boolean removeBookmarks(long[] eventIds) {
|
||||||
int length = eventIds.length;
|
int length = eventIds.length;
|
||||||
if (length == 0) {
|
if (length == 0) {
|
||||||
throw new IllegalArgumentException("At least one bookmark id to remove must be passed");
|
throw new IllegalArgumentException("At least one bookmark id to remove must be passed");
|
||||||
|
@ -796,6 +802,8 @@ public class DatabaseManager {
|
||||||
stringEventIds[i] = String.valueOf(eventIds[i]);
|
stringEventIds[i] = String.valueOf(eventIds[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean complete = false;
|
||||||
|
|
||||||
SQLiteDatabase db = helper.getWritableDatabase();
|
SQLiteDatabase db = helper.getWritableDatabase();
|
||||||
db.beginTransaction();
|
db.beginTransaction();
|
||||||
try {
|
try {
|
||||||
|
@ -807,13 +815,17 @@ public class DatabaseManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
db.setTransactionSuccessful();
|
db.setTransactionSuccessful();
|
||||||
|
complete = true;
|
||||||
return true;
|
return true;
|
||||||
} finally {
|
} finally {
|
||||||
db.endTransaction();
|
db.endTransaction();
|
||||||
context.getContentResolver().notifyChange(URI_BOOKMARKS, null);
|
|
||||||
|
|
||||||
Intent intent = new Intent(ACTION_REMOVE_BOOKMARKS).putExtra(EXTRA_EVENT_IDS, eventIds);
|
if (complete) {
|
||||||
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
|
context.getContentResolver().notifyChange(URI_BOOKMARKS, null);
|
||||||
|
|
||||||
|
Intent intent = new Intent(ACTION_REMOVE_BOOKMARKS).putExtra(EXTRA_EVENT_IDS, eventIds);
|
||||||
|
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,12 @@ import be.digitalia.fosdem.db.DatabaseManager;
|
||||||
import be.digitalia.fosdem.loaders.SimpleCursorLoader;
|
import be.digitalia.fosdem.loaders.SimpleCursorLoader;
|
||||||
import be.digitalia.fosdem.model.Event;
|
import be.digitalia.fosdem.model.Event;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bookmarks list, optionally filterable.
|
||||||
|
*
|
||||||
|
* @author Christophe Beyls
|
||||||
|
*
|
||||||
|
*/
|
||||||
public class BookmarksListFragment extends ListFragment implements LoaderCallbacks<Cursor> {
|
public class BookmarksListFragment extends ListFragment implements LoaderCallbacks<Cursor> {
|
||||||
|
|
||||||
private static final int BOOKMARKS_LOADER_ID = 1;
|
private static final int BOOKMARKS_LOADER_ID = 1;
|
||||||
|
|
|
@ -11,7 +11,7 @@ import be.digitalia.fosdem.db.DatabaseManager;
|
||||||
|
|
||||||
public class Event implements Parcelable {
|
public class Event implements Parcelable {
|
||||||
|
|
||||||
private int id;
|
private long id;
|
||||||
private Day day;
|
private Day day;
|
||||||
private Date startTime;
|
private Date startTime;
|
||||||
private Date endTime;
|
private Date endTime;
|
||||||
|
@ -29,11 +29,11 @@ public class Event implements Parcelable {
|
||||||
public Event() {
|
public Event() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getId() {
|
public long getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setId(int id) {
|
public void setId(long id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ public class Event implements Parcelable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return id;
|
return (int) (id ^ (id >>> 32));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -186,7 +186,7 @@ public class Event implements Parcelable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToParcel(Parcel out, int flags) {
|
public void writeToParcel(Parcel out, int flags) {
|
||||||
out.writeInt(id);
|
out.writeLong(id);
|
||||||
day.writeToParcel(out, flags);
|
day.writeToParcel(out, flags);
|
||||||
out.writeLong((startTime == null) ? 0L : startTime.getTime());
|
out.writeLong((startTime == null) ? 0L : startTime.getTime());
|
||||||
out.writeLong((endTime == null) ? 0L : endTime.getTime());
|
out.writeLong((endTime == null) ? 0L : endTime.getTime());
|
||||||
|
@ -223,7 +223,7 @@ public class Event implements Parcelable {
|
||||||
};
|
};
|
||||||
|
|
||||||
private Event(Parcel in) {
|
private Event(Parcel in) {
|
||||||
id = in.readInt();
|
id = in.readLong();
|
||||||
day = Day.CREATOR.createFromParcel(in);
|
day = Day.CREATOR.createFromParcel(in);
|
||||||
long time = in.readLong();
|
long time = in.readLong();
|
||||||
if (time != 0L) {
|
if (time != 0L) {
|
||||||
|
|
|
@ -8,17 +8,17 @@ import android.os.Parcelable;
|
||||||
|
|
||||||
public class Person implements Parcelable {
|
public class Person implements Parcelable {
|
||||||
|
|
||||||
private int id;
|
private long id;
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
public Person() {
|
public Person() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getId() {
|
public long getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setId(int id) {
|
public void setId(long id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ public class Person implements Parcelable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return id;
|
return (int) (id ^ (id >>> 32));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -63,7 +63,7 @@ public class Person implements Parcelable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToParcel(Parcel out, int flags) {
|
public void writeToParcel(Parcel out, int flags) {
|
||||||
out.writeInt(id);
|
out.writeLong(id);
|
||||||
out.writeString(name);
|
out.writeString(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ public class Person implements Parcelable {
|
||||||
};
|
};
|
||||||
|
|
||||||
private Person(Parcel in) {
|
private Person(Parcel in) {
|
||||||
id = in.readInt();
|
id = in.readLong();
|
||||||
name = in.readString();
|
name = in.readString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,7 +80,7 @@ public class EventsParser extends IterableAbstractPullParser<Event> {
|
||||||
currentRoom = parser.getAttributeValue(null, "name");
|
currentRoom = parser.getAttributeValue(null, "name");
|
||||||
} else if ("event".equals(name)) {
|
} else if ("event".equals(name)) {
|
||||||
Event event = new Event();
|
Event event = new Event();
|
||||||
event.setId(Integer.parseInt(parser.getAttributeValue(null, "id")));
|
event.setId(Long.parseLong(parser.getAttributeValue(null, "id")));
|
||||||
event.setDay(currentDay);
|
event.setDay(currentDay);
|
||||||
event.setRoomName(currentRoom);
|
event.setRoomName(currentRoom);
|
||||||
// Initialize empty lists
|
// Initialize empty lists
|
||||||
|
@ -129,7 +129,7 @@ public class EventsParser extends IterableAbstractPullParser<Event> {
|
||||||
while (!isNextEndTag("persons")) {
|
while (!isNextEndTag("persons")) {
|
||||||
if (isStartTag("person")) {
|
if (isStartTag("person")) {
|
||||||
Person person = new Person();
|
Person person = new Person();
|
||||||
person.setId(Integer.parseInt(parser.getAttributeValue(null, "id")));
|
person.setId(Long.parseLong(parser.getAttributeValue(null, "id")));
|
||||||
person.setName(parser.nextText());
|
person.setName(parser.nextText());
|
||||||
|
|
||||||
persons.add(person);
|
persons.add(person);
|
||||||
|
|
|
@ -51,7 +51,7 @@ public class AlarmIntentService extends IntentService {
|
||||||
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
|
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private PendingIntent getAlarmPendingIntent(int eventId) {
|
private PendingIntent getAlarmPendingIntent(long eventId) {
|
||||||
Intent intent = new Intent(this, AlarmReceiver.class).setAction(AlarmReceiver.ACTION_NOTIFY_EVENT).setData(Uri.parse(String.valueOf(eventId)));
|
Intent intent = new Intent(this, AlarmReceiver.class).setAction(AlarmReceiver.ACTION_NOTIFY_EVENT).setData(Uri.parse(String.valueOf(eventId)));
|
||||||
return PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
|
return PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ public class AlarmIntentService extends IntentService {
|
||||||
Cursor cursor = DatabaseManager.getInstance().getBookmarks(now);
|
Cursor cursor = DatabaseManager.getInstance().getBookmarks(now);
|
||||||
try {
|
try {
|
||||||
while (cursor.moveToNext()) {
|
while (cursor.moveToNext()) {
|
||||||
int eventId = DatabaseManager.toEventId(cursor);
|
long eventId = DatabaseManager.toEventId(cursor);
|
||||||
long notificationTime = DatabaseManager.toEventStartTimeMillis(cursor) - delay;
|
long notificationTime = DatabaseManager.toEventStartTimeMillis(cursor) - delay;
|
||||||
PendingIntent pi = getAlarmPendingIntent(eventId);
|
PendingIntent pi = getAlarmPendingIntent(eventId);
|
||||||
if (notificationTime < now) {
|
if (notificationTime < now) {
|
||||||
|
@ -93,7 +93,7 @@ public class AlarmIntentService extends IntentService {
|
||||||
Cursor cursor = DatabaseManager.getInstance().getBookmarks(System.currentTimeMillis());
|
Cursor cursor = DatabaseManager.getInstance().getBookmarks(System.currentTimeMillis());
|
||||||
try {
|
try {
|
||||||
while (cursor.moveToNext()) {
|
while (cursor.moveToNext()) {
|
||||||
int eventId = DatabaseManager.toEventId(cursor);
|
long eventId = DatabaseManager.toEventId(cursor);
|
||||||
alarmManager.cancel(getAlarmPendingIntent(eventId));
|
alarmManager.cancel(getAlarmPendingIntent(eventId));
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -114,8 +114,8 @@ public class AlarmIntentService extends IntentService {
|
||||||
} else if (DatabaseManager.ACTION_REMOVE_BOOKMARKS.equals(action)) {
|
} else if (DatabaseManager.ACTION_REMOVE_BOOKMARKS.equals(action)) {
|
||||||
|
|
||||||
// Cancel matching alarms, might they exist or not
|
// Cancel matching alarms, might they exist or not
|
||||||
int[] eventIds = intent.getIntArrayExtra(DatabaseManager.EXTRA_EVENT_IDS);
|
long[] eventIds = intent.getLongArrayExtra(DatabaseManager.EXTRA_EVENT_IDS);
|
||||||
for (int eventId : eventIds) {
|
for (long eventId : eventIds) {
|
||||||
alarmManager.cancel(getAlarmPendingIntent(eventId));
|
alarmManager.cancel(getAlarmPendingIntent(eventId));
|
||||||
}
|
}
|
||||||
} else if (AlarmReceiver.ACTION_NOTIFY_EVENT.equals(action)) {
|
} else if (AlarmReceiver.ACTION_NOTIFY_EVENT.equals(action)) {
|
||||||
|
|
Loading…
Reference in a new issue