From 55b0dda7c4c553d8be47c01a92414c5cb968182f Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Sun, 8 Dec 2013 22:53:24 -0800 Subject: #212, #204: Add stubs for new sync options --- .../dsub/activity/SubsonicFragmentActivity.java | 8 ++- .../dsub/provider/MostRecentStubProvider.java | 61 ++++++++++++++++++++++ .../dsub/provider/StarredStubProvider.java | 61 ++++++++++++++++++++++ .../dsub/service/sync/MostRecentSyncAdapter.java | 57 ++++++++++++++++++++ .../dsub/service/sync/MostRecentSyncService.java | 48 +++++++++++++++++ .../dsub/service/sync/StarredSyncAdapter.java | 57 ++++++++++++++++++++ .../dsub/service/sync/StarredSyncService.java | 48 +++++++++++++++++ src/github/daneren2005/dsub/util/Constants.java | 4 ++ 8 files changed, 343 insertions(+), 1 deletion(-) create mode 100644 src/github/daneren2005/dsub/provider/MostRecentStubProvider.java create mode 100644 src/github/daneren2005/dsub/provider/StarredStubProvider.java create mode 100644 src/github/daneren2005/dsub/service/sync/MostRecentSyncAdapter.java create mode 100644 src/github/daneren2005/dsub/service/sync/MostRecentSyncService.java create mode 100644 src/github/daneren2005/dsub/service/sync/StarredSyncAdapter.java create mode 100644 src/github/daneren2005/dsub/service/sync/StarredSyncService.java (limited to 'src') diff --git a/src/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java b/src/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java index 7405a706..265c3cd0 100644 --- a/src/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java +++ b/src/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java @@ -455,11 +455,17 @@ public class SubsonicFragmentActivity extends SubsonicActivity { boolean syncEnabled = prefs.getBoolean(Constants.PREFERENCES_KEY_SYNC_ENABLED, true); int syncInterval = Integer.parseInt(prefs.getString(Constants.PREFERENCES_KEY_SYNC_INTERVAL, "60")); - // Make sync run every hour + // Add enabled/frequency to playlist/podcasts syncing ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_PLAYLIST_AUTHORITY, syncEnabled); ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_PLAYLIST_AUTHORITY, new Bundle(), 60L * syncInterval); ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_PODCAST_AUTHORITY, syncEnabled); ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_PODCAST_AUTHORITY, new Bundle(), 60L * syncInterval); + + // Add for starred/recently added + ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_STARRED_AUTHORITY, syncEnabled && prefs.getBoolean(Constants.PREFERENCES_KEY_SYNC_STARRED, false)); + ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_STARRED_AUTHORITY, new Bundle(), 60L * syncInterval); + ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_MOST_RECENT_AUTHORITY, syncEnabled && prefs.getBoolean(Constants.PREFERENCES_KEY_SYNC_MOST_RECENT, false)); + ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_MOST_RECENT_AUTHORITY, new Bundle(), 60L * syncInterval); } private void showInfoDialog() { diff --git a/src/github/daneren2005/dsub/provider/MostRecentStubProvider.java b/src/github/daneren2005/dsub/provider/MostRecentStubProvider.java new file mode 100644 index 00000000..33bc45c3 --- /dev/null +++ b/src/github/daneren2005/dsub/provider/MostRecentStubProvider.java @@ -0,0 +1,61 @@ +/* + This file is part of Subsonic. + + Subsonic is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Subsonic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Subsonic. If not, see . + + Copyright 2009 (C) Sindre Mehus + */ + +package github.daneren2005.dsub.provider; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.database.Cursor; +import android.net.Uri; + +/** + * Created by Scott on 8/28/13. + */ + +public class MostRecentStubProvider extends ContentProvider { + @Override + public boolean onCreate() { + return true; + } + + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { + return null; + } + + @Override + public String getType(Uri uri) { + return new String(); + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + return null; + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + return 0; + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + return 0; + } +} diff --git a/src/github/daneren2005/dsub/provider/StarredStubProvider.java b/src/github/daneren2005/dsub/provider/StarredStubProvider.java new file mode 100644 index 00000000..bb865096 --- /dev/null +++ b/src/github/daneren2005/dsub/provider/StarredStubProvider.java @@ -0,0 +1,61 @@ +/* + This file is part of Subsonic. + + Subsonic is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Subsonic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Subsonic. If not, see . + + Copyright 2009 (C) Sindre Mehus + */ + +package github.daneren2005.dsub.provider; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.database.Cursor; +import android.net.Uri; + +/** + * Created by Scott on 8/28/13. + */ + +public class StarredStubProvider extends ContentProvider { + @Override + public boolean onCreate() { + return true; + } + + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { + return null; + } + + @Override + public String getType(Uri uri) { + return new String(); + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + return null; + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + return 0; + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + return 0; + } +} diff --git a/src/github/daneren2005/dsub/service/sync/MostRecentSyncAdapter.java b/src/github/daneren2005/dsub/service/sync/MostRecentSyncAdapter.java new file mode 100644 index 00000000..19637fcc --- /dev/null +++ b/src/github/daneren2005/dsub/service/sync/MostRecentSyncAdapter.java @@ -0,0 +1,57 @@ +/* + This file is part of Subsonic. + + Subsonic is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Subsonic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Subsonic. If not, see . + + Copyright 2009 (C) Sindre Mehus + */ + +package github.daneren2005.dsub.service.sync; + +import android.annotation.TargetApi; +import android.content.Context; +import android.util.Log; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +import github.daneren2005.dsub.domain.MusicDirectory; +import github.daneren2005.dsub.domain.PodcastEpisode; +import github.daneren2005.dsub.service.DownloadFile; +import github.daneren2005.dsub.util.FileUtil; +import github.daneren2005.dsub.util.SyncUtil; +import github.daneren2005.dsub.util.SyncUtil.SyncSet; +import github.daneren2005.dsub.util.Util; + +/** + * Created by Scott on 8/28/13. + */ + +public class MostRecentSyncAdapter extends SubsonicSyncAdapter { + private static String TAG = MostRecentSyncAdapter.class.getSimpleName(); + + public MostRecentSyncAdapter(Context context, boolean autoInitialize) { + super(context, autoInitialize); + } + @TargetApi(14) + public MostRecentSyncAdapter(Context context, boolean autoInitialize, boolean allowParallelSyncs) { + super(context, autoInitialize, allowParallelSyncs); + } + + @Override + public void onExecuteSync(Context context, int instance) { + + } +} diff --git a/src/github/daneren2005/dsub/service/sync/MostRecentSyncService.java b/src/github/daneren2005/dsub/service/sync/MostRecentSyncService.java new file mode 100644 index 00000000..378fe432 --- /dev/null +++ b/src/github/daneren2005/dsub/service/sync/MostRecentSyncService.java @@ -0,0 +1,48 @@ +/* + This file is part of Subsonic. + + Subsonic is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Subsonic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Subsonic. If not, see . + + Copyright 2009 (C) Sindre Mehus + */ + +package github.daneren2005.dsub.service.sync; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; + +/** + * Created by Scott on 8/28/13. + */ + +public class MostRecentSyncService extends Service { + private static MostRecentSyncAdapter mostRecentSyncAdapter; + private static final Object syncLock = new Object(); + + @Override + public void onCreate() { + synchronized (syncLock) { + if(mostRecentSyncAdapter == null) { + mostRecentSyncAdapter = new MostRecentSyncAdapter(getApplicationContext(), true); + } + } + } + + @Override + public IBinder onBind(Intent intent) { + return mostRecentSyncAdapter.getSyncAdapterBinder(); + + } +} diff --git a/src/github/daneren2005/dsub/service/sync/StarredSyncAdapter.java b/src/github/daneren2005/dsub/service/sync/StarredSyncAdapter.java new file mode 100644 index 00000000..6eb58ed7 --- /dev/null +++ b/src/github/daneren2005/dsub/service/sync/StarredSyncAdapter.java @@ -0,0 +1,57 @@ +/* + This file is part of Subsonic. + + Subsonic is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Subsonic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Subsonic. If not, see . + + Copyright 2009 (C) Sindre Mehus + */ + +package github.daneren2005.dsub.service.sync; + +import android.annotation.TargetApi; +import android.content.Context; +import android.util.Log; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +import github.daneren2005.dsub.domain.MusicDirectory; +import github.daneren2005.dsub.domain.PodcastEpisode; +import github.daneren2005.dsub.service.DownloadFile; +import github.daneren2005.dsub.util.FileUtil; +import github.daneren2005.dsub.util.SyncUtil; +import github.daneren2005.dsub.util.SyncUtil.SyncSet; +import github.daneren2005.dsub.util.Util; + +/** + * Created by Scott on 8/28/13. + */ + +public class StarredSyncAdapter extends SubsonicSyncAdapter { + private static String TAG = StarredSyncAdapter.class.getSimpleName(); + + public StarredSyncAdapter(Context context, boolean autoInitialize) { + super(context, autoInitialize); + } + @TargetApi(14) + public StarredSyncAdapter(Context context, boolean autoInitialize, boolean allowParallelSyncs) { + super(context, autoInitialize, allowParallelSyncs); + } + + @Override + public void onExecuteSync(Context context, int instance) { + + } +} diff --git a/src/github/daneren2005/dsub/service/sync/StarredSyncService.java b/src/github/daneren2005/dsub/service/sync/StarredSyncService.java new file mode 100644 index 00000000..378ab996 --- /dev/null +++ b/src/github/daneren2005/dsub/service/sync/StarredSyncService.java @@ -0,0 +1,48 @@ +/* + This file is part of Subsonic. + + Subsonic is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Subsonic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Subsonic. If not, see . + + Copyright 2009 (C) Sindre Mehus + */ + +package github.daneren2005.dsub.service.sync; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; + +/** + * Created by Scott on 8/28/13. + */ + +public class StarredSyncService extends Service { + private static StarredSyncAdapter starredSyncAdapter; + private static final Object syncLock = new Object(); + + @Override + public void onCreate() { + synchronized (syncLock) { + if(starredSyncAdapter == null) { + starredSyncAdapter = new StarredSyncAdapter(getApplicationContext(), true); + } + } + } + + @Override + public IBinder onBind(Intent intent) { + return starredSyncAdapter.getSyncAdapterBinder(); + + } +} diff --git a/src/github/daneren2005/dsub/util/Constants.java b/src/github/daneren2005/dsub/util/Constants.java index 00b6508b..a720d21f 100644 --- a/src/github/daneren2005/dsub/util/Constants.java +++ b/src/github/daneren2005/dsub/util/Constants.java @@ -122,6 +122,8 @@ public final class Constants { public static final String PREFERENCES_KEY_SYNC_ENABLED = "syncEnabled"; public static final String PREFERENCES_KEY_SYNC_INTERVAL = "syncInterval"; public static final String PREFERENCES_KEY_SYNC_WIFI = "syncWifi"; + public static final String PREFERENCES_KEY_SYNC_STARRED = "syncStarred"; + public static final String PREFERENCES_KEY_SYNC_MOST_RECENT = "syncMostRecent"; public static final String PREFERENCES_KEY_PAUSE_DISCONNECT = "pauseOnDisconnect"; public static final String PREFERENCES_KEY_HIDE_WIDGET = "hideWidget"; public static final String PREFERENCES_KEY_PODCASTS_ENABLED = "podcastsEnabled"; @@ -160,6 +162,8 @@ public final class Constants { public static final String SYNC_ACCOUNT_TYPE = "subsonic.org"; public static final String SYNC_ACCOUNT_PLAYLIST_AUTHORITY = "github.daneren2005.dsub.playlists.provider"; public static final String SYNC_ACCOUNT_PODCAST_AUTHORITY = "github.daneren2005.dsub.podcasts.provider"; + public static final String SYNC_ACCOUNT_STARRED_AUTHORITY = "github.daneren2005.dsub.starred.provider"; + public static final String SYNC_ACCOUNT_MOST_RECENT_AUTHORITY = "github.daneren2005.dsub.mostrecent.provider"; // Number of free trial days for non-licensed servers. public static final int FREE_TRIAL_DAYS = 30; -- cgit v1.2.3