diff options
author | Andrew Dolgov <[email protected]> | 2011-12-25 14:59:59 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2011-12-25 14:59:59 +0300 |
commit | 59a46f701d1b7c7920923eac9cb72f9e5a1ba8a2 (patch) | |
tree | 818bc7eaaeda67f92bbb3d73f1239b3ce48d76ad /src/org | |
parent | adf1750387f5819318934f17d30c8ccba16b849c (diff) |
implement setting labels for selected article
Diffstat (limited to 'src/org')
-rw-r--r-- | src/org/fox/ttrss/Label.java | 9 | ||||
-rw-r--r-- | src/org/fox/ttrss/MainActivity.java | 80 |
2 files changed, 89 insertions, 0 deletions
diff --git a/src/org/fox/ttrss/Label.java b/src/org/fox/ttrss/Label.java new file mode 100644 index 00000000..eccc1e66 --- /dev/null +++ b/src/org/fox/ttrss/Label.java @@ -0,0 +1,9 @@ +package org.fox.ttrss;
+
+public class Label {
+ int id;
+ String caption;
+ String fg_color;
+ String bg_color;
+ boolean checked;
+}
diff --git a/src/org/fox/ttrss/MainActivity.java b/src/org/fox/ttrss/MainActivity.java index e89b6adc..932445cb 100644 --- a/src/org/fox/ttrss/MainActivity.java +++ b/src/org/fox/ttrss/MainActivity.java @@ -1,5 +1,7 @@ package org.fox.ttrss; +import java.lang.reflect.Type; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Timer; @@ -13,6 +15,8 @@ import android.app.Dialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; +import android.content.DialogInterface.OnMultiChoiceClickListener; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; @@ -40,8 +44,10 @@ import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; +import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import com.google.gson.reflect.TypeToken; public class MainActivity extends FragmentActivity implements OnlineServices { private final String TAG = this.getClass().getSimpleName(); @@ -1024,6 +1030,78 @@ public class MainActivity extends FragmentActivity implements OnlineServices { * * return true; */ + case R.id.set_labels: + if (m_selectedArticle != null) { + + ApiRequest req = new ApiRequest(getApplicationContext()) { + @Override + protected void onPostExecute(JsonElement result) { + if (result != null) { + Type listType = new TypeToken<List<Label>>() {}.getType(); + final List<Label> labels = new Gson().fromJson(result, listType); + + CharSequence[] items = new CharSequence[labels.size()]; + final int[] itemIds = new int[labels.size()]; + boolean[] checkedItems = new boolean[labels.size()]; + + for (int i = 0; i < labels.size(); i++) { + items[i] = labels.get(i).caption; + itemIds[i] = labels.get(i).id; + checkedItems[i] = labels.get(i).checked; + } + + Dialog dialog = new Dialog(MainActivity.this); + AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this) + .setTitle("Set labels") + .setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() { + + @Override + public void onClick(DialogInterface dialog, int which, final boolean isChecked) { + final int labelId = itemIds[which]; + + @SuppressWarnings("serial") + HashMap<String, String> map = new HashMap<String, String>() { + { + put("sid", m_sessionId); + put("op", "setArticleLabel"); + put("label_id", String.valueOf(labelId)); + put("article_ids", String.valueOf(m_selectedArticle.id)); + if (isChecked) put("assign", "true"); + } + }; + + ApiRequest req = new ApiRequest(m_context); + req.execute(map); + + } + }).setPositiveButton("Close", new OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.cancel(); + } + }); + + dialog = builder.create(); + dialog.show(); + + } + } + }; + + @SuppressWarnings("serial") + HashMap<String, String> map = new HashMap<String, String>() { + { + put("sid", m_sessionId); + put("op", "getLabels"); + put("article_id", String.valueOf(m_selectedArticle.id)); + } + }; + + req.execute(map); + + } + return true; default: Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); @@ -1127,6 +1205,8 @@ public class MainActivity extends FragmentActivity implements OnlineServices { getActionBar().setDisplayHomeAsUpEnabled(m_selectedArticle != null); } + m_menu.findItem(R.id.set_labels).setEnabled(m_apiLevel >= 1); + } else { m_menu.setGroupVisible(R.id.menu_group_logged_in, false); m_menu.setGroupVisible(R.id.menu_group_logged_out, true); |