summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-10-17 18:59:08 +0400
committerAndrew Dolgov <[email protected]>2013-10-17 18:59:08 +0400
commit458b46df25bac406b568598046de7c61561e5fbb (patch)
tree6f8fc9488a2d3b8524542a5131fe4550dd269f0b
parentb3dcf3f6d8d8c6bb1ddd49e087dd7d0ef386e9a8 (diff)
tasker: add action to upload modified articles and switch online
-rw-r--r--res/layout/tasker_settings.xml32
-rw-r--r--res/values/strings.xml1
-rw-r--r--src/org/fox/ttrss/offline/OfflineUploadService.java21
-rw-r--r--src/org/fox/ttrss/tasker/TaskerReceiver.java40
-rw-r--r--src/org/fox/ttrss/tasker/TaskerSettingsActivity.java56
5 files changed, 122 insertions, 28 deletions
diff --git a/res/layout/tasker_settings.xml b/res/layout/tasker_settings.xml
index b96642aa..b50f3c3c 100644
--- a/res/layout/tasker_settings.xml
+++ b/res/layout/tasker_settings.xml
@@ -4,17 +4,6 @@
android:layout_height="fill_parent"
android:padding="5dp" >
- <CheckBox
- android:id="@+id/download_articles"
- android:checked="true"
- android:enabled="false"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_alignParentRight="true"
- android:layout_alignParentTop="true"
- android:text="@string/download_articles_and_go_offline" />
-
<Button
android:id="@+id/close_button"
android:layout_width="wrap_content"
@@ -23,4 +12,25 @@
android:layout_centerHorizontal="true"
android:text="@string/tasker_save_and_close" />
+ <RadioGroup
+ android:id="@+id/taskerActions"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentTop="true" >
+
+ <RadioButton
+ android:id="@+id/actionDownload"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:checked="true"
+ android:text="@string/download_articles_and_go_offline" />
+
+ <RadioButton
+ android:id="@+id/actionUpload"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/synchronize_read_articles_and_go_online" />
+ </RadioGroup>
+
</RelativeLayout> \ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 586ec70a..7b475ddc 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -208,4 +208,5 @@
<string name="shortcut_has_been_placed_on_the_home_screen">Shortcut has been placed on the home screen</string>
<string name="download_articles_and_go_offline">Download articles and go offline</string>
<string name="tasker_save_and_close">Save and close</string>
+ <string name="synchronize_read_articles_and_go_online">Synchronize read articles and go online</string>
</resources>
diff --git a/src/org/fox/ttrss/offline/OfflineUploadService.java b/src/org/fox/ttrss/offline/OfflineUploadService.java
index 55ed4467..4c3349d4 100644
--- a/src/org/fox/ttrss/offline/OfflineUploadService.java
+++ b/src/org/fox/ttrss/offline/OfflineUploadService.java
@@ -11,7 +11,9 @@ import android.app.IntentService;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
+import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
@@ -29,6 +31,7 @@ public class OfflineUploadService extends IntentService {
private String m_sessionId;
private NotificationManager m_nmgr;
private boolean m_uploadInProgress = false;
+ private boolean m_batchMode = false;
public OfflineUploadService() {
super("OfflineUploadService");
@@ -200,10 +203,19 @@ public class OfflineUploadService extends IntentService {
private void uploadSuccess() {
getWritableDb().execSQL("UPDATE articles SET modified = 0");
- Intent intent = new Intent();
- intent.setAction(INTENT_ACTION_SUCCESS);
- intent.addCategory(Intent.CATEGORY_DEFAULT);
- sendBroadcast(intent);
+ if (m_batchMode) {
+
+ SharedPreferences localPrefs = getSharedPreferences("localprefs", Context.MODE_PRIVATE);
+ SharedPreferences.Editor editor = localPrefs.edit();
+ editor.putBoolean("offline_mode_active", false);
+ editor.commit();
+
+ } else {
+ Intent intent = new Intent();
+ intent.setAction(INTENT_ACTION_SUCCESS);
+ intent.addCategory(Intent.CATEGORY_DEFAULT);
+ sendBroadcast(intent);
+ }
m_readableDb.close();
m_writableDb.close();
@@ -257,6 +269,7 @@ public class OfflineUploadService extends IntentService {
}
m_sessionId = intent.getStringExtra("sessionId");
+ m_batchMode = intent.getBooleanExtra("batchMode", false);
if (!m_uploadInProgress) {
m_uploadInProgress = true;
diff --git a/src/org/fox/ttrss/tasker/TaskerReceiver.java b/src/org/fox/ttrss/tasker/TaskerReceiver.java
index 6a61e30b..bdd85e3f 100644
--- a/src/org/fox/ttrss/tasker/TaskerReceiver.java
+++ b/src/org/fox/ttrss/tasker/TaskerReceiver.java
@@ -4,12 +4,14 @@ import org.fox.ttrss.ApiRequest;
import org.fox.ttrss.CommonActivity;
import org.fox.ttrss.OnlineActivity;
import org.fox.ttrss.offline.OfflineDownloadService;
+import org.fox.ttrss.offline.OfflineUploadService;
import org.fox.ttrss.util.SimpleLoginManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;
@@ -24,21 +26,41 @@ public class TaskerReceiver extends BroadcastReceiver {
final Context fContext = context;
if (com.twofortyfouram.locale.Intent.ACTION_FIRE_SETTING.equals(intent.getAction())) {
- Log.d(TAG, "about to download stuff!");
+
+ final Bundle settings = intent.getBundleExtra(com.twofortyfouram.locale.Intent.EXTRA_BUNDLE);
+ final int actionId = settings != null ? settings.getInt("actionId", -1) : -1;
+
+ Log.d(TAG, "received action id=" + actionId);
SimpleLoginManager loginMgr = new SimpleLoginManager() {
@Override
protected void onLoginSuccess(int requestId, String sessionId, int apiLevel) {
- Log.d(TAG, "Got SID=" + sessionId);
-
- Intent intent = new Intent(
- fContext,
- OfflineDownloadService.class);
- intent.putExtra("sessionId", sessionId);
- intent.putExtra("batchMode", true);
- fContext.startService(intent);
+ switch (actionId) {
+ case TaskerSettingsActivity.ACTION_DOWNLOAD:
+ if (true) {
+ Intent intent = new Intent(fContext,
+ OfflineDownloadService.class);
+ intent.putExtra("sessionId", sessionId);
+ intent.putExtra("batchMode", true);
+
+ fContext.startService(intent);
+ }
+ break;
+ case TaskerSettingsActivity.ACTION_UPLOAD:
+ if (true) {
+ Intent intent = new Intent(fContext,
+ OfflineUploadService.class);
+ intent.putExtra("sessionId", sessionId);
+ intent.putExtra("batchMode", true);
+
+ fContext.startService(intent);
+ }
+ break;
+ default:
+ Log.d(TAG, "unknown action id=" + actionId);
+ }
}
@Override
diff --git a/src/org/fox/ttrss/tasker/TaskerSettingsActivity.java b/src/org/fox/ttrss/tasker/TaskerSettingsActivity.java
index 50c500d1..ff56ad1a 100644
--- a/src/org/fox/ttrss/tasker/TaskerSettingsActivity.java
+++ b/src/org/fox/ttrss/tasker/TaskerSettingsActivity.java
@@ -1,15 +1,23 @@
package org.fox.ttrss.tasker;
import org.fox.ttrss.R;
+import org.fox.ttrss.offline.OfflineDownloadService;
+import org.fox.ttrss.offline.OfflineUploadService;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
+import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
+import android.widget.RadioGroup;
+import android.widget.RadioGroup.OnCheckedChangeListener;
public class TaskerSettingsActivity extends Activity {
+ protected static final int ACTION_DOWNLOAD = 0;
+ protected static final int ACTION_UPLOAD = 1;
+
private final String TAG = this.getClass().getSimpleName();
protected Bundle m_settings = new Bundle();
@@ -18,14 +26,42 @@ public class TaskerSettingsActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- //Bundle settings = getIntent().getBundleExtra(com.twofortyfouram.locale.Intent.EXTRA_BUNDLE);
+ Bundle settings = getIntent().getBundleExtra(com.twofortyfouram.locale.Intent.EXTRA_BUNDLE);
+
+ int actionId = settings != null ? settings.getInt("actionId", -1) : -1;
setContentView(R.layout.tasker_settings);
+
+ RadioGroup radioGroup = (RadioGroup) findViewById(R.id.taskerActions);
+
+ switch (actionId) {
+ case TaskerSettingsActivity.ACTION_DOWNLOAD:
+ radioGroup.check(R.id.actionDownload);
+ break;
+ case TaskerSettingsActivity.ACTION_UPLOAD:
+ radioGroup.check(R.id.actionUpload);
+ break;
+ default:
+ Log.d(TAG, "unknown action id=" + actionId);
+ }
+
+ radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(RadioGroup group, int checkedId) {
+ switch (checkedId) {
+ case R.id.actionDownload:
+ m_settings.putInt("actionId", ACTION_DOWNLOAD);
+ break;
+ case R.id.actionUpload:
+ m_settings.putInt("actionId", ACTION_UPLOAD);
+ break;
+ }
+ }
+ });
Button button = (Button)findViewById(R.id.close_button);
- button.setOnClickListener(new OnClickListener() {
-
+ button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
@@ -38,7 +74,19 @@ public class TaskerSettingsActivity extends Activity {
final Intent intent = new Intent();
intent.putExtra(com.twofortyfouram.locale.Intent.EXTRA_BUNDLE, m_settings);
- intent.putExtra(com.twofortyfouram.locale.Intent.EXTRA_STRING_BLURB, getString(R.string.download_articles_and_go_offline));
+
+ String blurb = "?";
+
+ switch (m_settings.getInt("actionId")) {
+ case TaskerSettingsActivity.ACTION_DOWNLOAD:
+ blurb = getString(R.string.download_articles_and_go_offline);
+ break;
+ case TaskerSettingsActivity.ACTION_UPLOAD:
+ blurb = getString(R.string.synchronize_read_articles_and_go_online);
+ break;
+ }
+
+ intent.putExtra(com.twofortyfouram.locale.Intent.EXTRA_STRING_BLURB, blurb);
setResult(RESULT_OK, intent);