summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormcbyte-it <[email protected]>2013-05-21 17:00:56 +0300
committermcbyte-it <[email protected]>2013-05-21 17:00:56 +0300
commitda1f5ae5720d84ae8cec288a8d8ad7809af5a1c7 (patch)
tree3c6800ded04fd54a7c093f1e23da9ef1766badd6 /src
parent0c855cb0b145906ad9e106b1d6dc942eee48655a (diff)
DashClock class
Diffstat (limited to 'src')
-rw-r--r--src/org/fox/ttrss/Dashclock.java126
1 files changed, 126 insertions, 0 deletions
diff --git a/src/org/fox/ttrss/Dashclock.java b/src/org/fox/ttrss/Dashclock.java
new file mode 100644
index 00000000..041a45bd
--- /dev/null
+++ b/src/org/fox/ttrss/Dashclock.java
@@ -0,0 +1,126 @@
+package org.fox.ttrss;
+
+import java.util.HashMap;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.util.Log;
+
+import com.google.android.apps.dashclock.api.DashClockExtension;
+import com.google.android.apps.dashclock.api.ExtensionData;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+
+public class DashClock extends DashClockExtension {
+
+ private static final String TAG = "TTRSS-DC";
+
+ protected SharedPreferences m_prefs;
+
+ @Override
+ protected void onInitialize(boolean isReconnect) {
+ super.onInitialize(isReconnect);
+ setUpdateWhenScreenOn(true);
+
+ m_prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+ }
+
+ @Override
+ protected void onUpdateData(int reason) {
+
+ UnreadRequest req = new UnreadRequest(getApplicationContext());
+
+ @SuppressWarnings("serial")
+ HashMap<String, String> map = new HashMap<String, String>() {
+ {
+ put("op", "login");
+ put("user", m_prefs.getString("login", "").trim());
+ put("password", m_prefs.getString("password", "").trim());
+ }
+ };
+
+ req.execute(map);
+ }
+
+ protected class UnreadRequest extends ApiRequest {
+ private String m_sessionId;
+
+ private int m_unreadCount;
+
+ public UnreadRequest(Context context) {
+ super(context);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void onPostExecute(JsonElement result) {
+ if (result != null) {
+ try {
+ JsonObject content = result.getAsJsonObject();
+ if (content != null) {
+ m_sessionId = content.get("session_id").getAsString();
+
+ Log.d(TAG, "Authenticated!");
+
+ ApiRequest req = new ApiRequest(m_context) {
+ protected void onPostExecute(JsonElement result) {
+ m_unreadCount = 0;
+
+ if (result != null) {
+ try {
+ JsonElement unreadCount = result.getAsJsonObject().get("unread");
+
+ if (unreadCount != null) {
+ m_unreadCount = unreadCount.getAsInt();
+ } else {
+ m_unreadCount = -1;
+ }
+
+ ExtensionData updatedData = null; // when null DashClock hides the widget
+ if (m_unreadCount > 0) {
+ updatedData = new ExtensionData();
+ updatedData.visible(true);
+
+ updatedData.icon(R.drawable.dashclock);
+ updatedData.status(String.valueOf(m_unreadCount));
+
+ updatedData.expandedTitle(m_unreadCount + " unread articles");
+ updatedData.expandedBody(getString(R.string.app_name));
+
+ updatedData.clickIntent(new Intent().setClassName("org.fox.ttrss",
+ "org.fox.ttrss.OnlineActivity"));
+ }
+ publishUpdate(updatedData);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ Log.d(TAG, "unread count is: " + m_unreadCount);
+ }
+ };
+
+ @SuppressWarnings("serial")
+ HashMap<String, String> map = new HashMap<String, String>() {
+ {
+ put("sid", m_sessionId);
+ put("op", "getUnread");
+ }
+ };
+
+ req.execute(map);
+
+ return;
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ m_sessionId = null;
+ }
+ }
+}