From da1f5ae5720d84ae8cec288a8d8ad7809af5a1c7 Mon Sep 17 00:00:00 2001 From: mcbyte-it Date: Tue, 21 May 2013 17:00:56 +0300 Subject: [PATCH] DashClock class --- src/org/fox/ttrss/Dashclock.java | 126 +++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 src/org/fox/ttrss/Dashclock.java 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 map = new HashMap() { + { + 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 map = new HashMap() { + { + put("sid", m_sessionId); + put("op", "getUnread"); + } + }; + + req.execute(map); + + return; + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + m_sessionId = null; + } + } +}