From 0c5198c3bcc3151cd02ca749a43e79bec9c803a7 Mon Sep 17 00:00:00 2001 From: Pablo Polvorin Date: Thu, 29 Jul 2010 17:55:30 -0300 Subject: [PATCH] Minor UI modifications to the wave list activity. Also, start to add a context menu for each wave. --- android-gui/AndroidManifest.xml | 4 +- android-gui/res/layout/wavelist.xml | 58 ++++++++++----- android-gui/res/menu/wave_context_menu.xml | 5 ++ android-gui/res/values/strings.xml | 6 +- .../src/net/processone/awc/WaveList.java | 73 ++++++++++++++++++- 5 files changed, 120 insertions(+), 26 deletions(-) create mode 100644 android-gui/res/menu/wave_context_menu.xml diff --git a/android-gui/AndroidManifest.xml b/android-gui/AndroidManifest.xml index 0107f02..0a15279 100644 --- a/android-gui/AndroidManifest.xml +++ b/android-gui/AndroidManifest.xml @@ -2,8 +2,8 @@ - + diff --git a/android-gui/res/layout/wavelist.xml b/android-gui/res/layout/wavelist.xml index d2b992c..c59a98e 100644 --- a/android-gui/res/layout/wavelist.xml +++ b/android-gui/res/layout/wavelist.xml @@ -1,27 +1,45 @@ + android:layout_height="fill_parent" + android:layout_width="fill_parent"> - - - + android:layout_height="?android:attr/listPreferredItemHeight" + android:padding="6dip"> + + + + + + + + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/ic_popup_sync_1" + android:visibility="gone"/> - + \ No newline at end of file diff --git a/android-gui/res/menu/wave_context_menu.xml b/android-gui/res/menu/wave_context_menu.xml new file mode 100644 index 0000000..42bf010 --- /dev/null +++ b/android-gui/res/menu/wave_context_menu.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/android-gui/res/values/strings.xml b/android-gui/res/values/strings.xml index c8593b2..3d2beb8 100644 --- a/android-gui/res/values/strings.xml +++ b/android-gui/res/values/strings.xml @@ -1,5 +1,9 @@ + Open + Remove from Inbox + Follows + Mark as Read Hello World, OauthTest! - oauth-test + OneWave for Android diff --git a/android-gui/src/net/processone/awc/WaveList.java b/android-gui/src/net/processone/awc/WaveList.java index 6606e10..7b20211 100644 --- a/android-gui/src/net/processone/awc/WaveList.java +++ b/android-gui/src/net/processone/awc/WaveList.java @@ -1,6 +1,7 @@ package net.processone.awc; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import android.app.Dialog; @@ -8,23 +9,32 @@ import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; +import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.SystemClock; +import android.text.Html; import android.util.Log; +import android.view.ContextMenu; import android.view.LayoutInflater; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.view.ContextMenu.ContextMenuInfo; import android.view.animation.Animation; import android.view.animation.RotateAnimation; import android.widget.AbsListView; +import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.AbsListView.OnScrollListener; +import android.widget.AdapterView.AdapterContextMenuInfo; +import android.widget.AdapterView.OnItemLongClickListener; import com.commonsware.cwac.endless.EndlessAdapter; import com.google.wave.api.SearchResult; @@ -57,8 +67,10 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ow = (OneWave) getApplication(); + showDialog(PROGRESS_DIALOG); + this.registerForContextMenu(getListView()); // context menu, activated by long pressing handler = new Handler() { public void handleMessage(Message msg) { dismissDialog(PROGRESS_DIALOG); @@ -72,8 +84,40 @@ public void handleMessage(Message msg) { }; } - + /** + * This is for creating context menu of the items in the wave list. + * remove form inbox, show, reply? etc. + */ + @Override + public void onCreateContextMenu(ContextMenu menu, View v, + ContextMenuInfo menuInfo) { + super.onCreateContextMenu(menu, v, menuInfo); + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.wave_context_menu, menu); + Log.i(TAG, menuInfo.getClass().toString()); + } + + /** + * User selects one option of the conext menu + */ + public boolean onContextItemSelected(MenuItem item) { + AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); + switch (item.getItemId()) { + case R.id.itemFollowWave: + return true; + case R.id.itemRemoveFromInbox: + return true; + case R.id.itemMarkAsRead: + return true; + case R.id.itemView: + return true; + default: + return super.onContextItemSelected(item); + } + } + + @Override protected void onResume() { super.onResume(); @@ -161,8 +205,29 @@ public View getView(int position, View convertView, ViewGroup parent) { // wave.getSnippet(); - TextView t = (TextView) view.findViewById(R.id.titleWave); - t.setText(wave.getTitle()); + TextView title = (TextView) view.findViewById(R.id.titleWave); + + if (wave.getUnreadCount() > 0) { + //Has new content, + title.setText((Html.fromHtml("" + wave.getTitle() + ""))); + } else { + title.setText(wave.getTitle()); + } + TextView participants = (TextView) view.findViewById(R.id.participants); + StringBuilder b = new StringBuilder(""); + Iterator it = wave.getParticipants().iterator(); + while(it.hasNext()) { //keep only the username + String contact = it.next(); + int i = contact.indexOf("@"); + if (i >= 0) { + contact = contact.substring(0, i); + } + b.append(contact); + if (it.hasNext()) + b.append(","); + } + + participants.setText(Html.fromHtml(b.append("").toString()) ); return view; } } @@ -224,6 +289,8 @@ protected View getPendingView(ViewGroup parent) { protected void rebindPendingView(int position, View row) { View child=row.findViewById(R.id.titleWave); child.setVisibility(View.VISIBLE); + //MMM... this is probably wrong.. but didn't manage to test it. Probably it must be + // analog to what WaveAdapter do with his view ((TextView)child).setText(getWrappedAdapter().getItem(position).toString()); child=row.findViewById(R.id.throbber); child.setVisibility(View.GONE);