commit 5e2c06edef91a412a990d8f9a470e4210515d50b
parent e09f8471807937a9efaac6f1cdc0da1469923995
Author: David Engel <david@absentmindedproductions.ca>
Date: Sun, 24 Jan 2016 21:31:59 -0700
android: Added classes for contacts and lists. Custom list adapters done for both.
Diffstat:
6 files changed, 249 insertions(+), 62 deletions(-)
diff --git a/android/shlist/app/src/main/java/drsocto/shlist/Contact.java b/android/shlist/app/src/main/java/drsocto/shlist/Contact.java
@@ -0,0 +1,37 @@
+package drsocto.shlist;
+
+/**
+ * Created by dreng on 1/24/2016.
+ */
+public class Contact {
+ private String number;
+ private String name;
+ private boolean selected = false;
+
+ public Contact(String name, String number) {
+ this.number = number;
+ this.name = name;
+ }
+
+ public Contact(String name, String number, boolean checked) {
+ this.name = name;
+ this.number = number;
+ this.selected = checked;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getNumber() {
+ return number;
+ }
+
+ public boolean getSelected() {
+ return selected;
+ }
+
+ public void setSelected(boolean value) {
+ selected = value;
+ }
+}
diff --git a/android/shlist/app/src/main/java/drsocto/shlist/ContactsScreen.java b/android/shlist/app/src/main/java/drsocto/shlist/ContactsScreen.java
@@ -19,6 +19,8 @@ import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
public class ContactsScreen extends ActionBarActivity {
@@ -29,18 +31,35 @@ public class ContactsScreen extends ActionBarActivity {
setContentView(R.layout.layout_contacts_screen);
ArrayList<String> list = new ArrayList<String>();
+ ArrayList<Boolean> list_bool = new ArrayList<Boolean>();
ListView lv = (ListView) findViewById(R.id.contactList);
+ ArrayList<Contact> contacts_list = new ArrayList<Contact>();
+
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext())
{
- String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
+ String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
- list.add(name + ": " + phoneNumber);
+ String pattern = "(\\d*)";
+ Pattern r = Pattern.compile(pattern);
+ Matcher m = r.matcher(phoneNumber);
+ String out = "";
+ while(m.find()) {
+ out += m.group(1);
+ }
+ if (out.length() == 11) {
+ out = out.substring(1);
+ }
+ Log.d("contacts", "Regex: " + out);
+ phoneNumber = out;
+ Contact contact = new Contact(name, phoneNumber);
+ contacts_list.add(contact);
+ list.add(name);
}
phones.close();
- ArrayAdapter<String> adapter = new MyCustomAdapter(this, R.layout.contact_row, list);
+ MyContactsListsAdapter adapter = new MyContactsListsAdapter(this, R.id.contactCheckBox, contacts_list, list);
lv.setAdapter(adapter);
}
@@ -71,19 +90,23 @@ public class ContactsScreen extends ActionBarActivity {
return super.onOptionsItemSelected(item);
}
- private class MyCustomAdapter extends ArrayAdapter<String> {
+ private class MyContactsListsAdapter extends ArrayAdapter<String> {
- private ArrayList<String> taskList;
+ private ArrayList<Contact> contacts;
- public MyCustomAdapter(Context context, int textViewResourceId,
- ArrayList<String> taskList) {
- super(context, textViewResourceId, taskList);
- this.taskList = new ArrayList<String>();
- this.taskList.addAll(taskList);
+ public MyContactsListsAdapter(Context context, int textViewResourceId,
+ ArrayList<Contact> taskList, ArrayList<String> stringList) {
+ super(context, textViewResourceId, stringList);
+ contacts = taskList;
}
private class ViewHolder {
- CheckBox cBox;
+ Contact shlist;
+ CheckBox name;
+ }
+
+ public Contact getContact(int position) {
+ return contacts.get(position);
}
@Override
@@ -97,25 +120,31 @@ public class ContactsScreen extends ActionBarActivity {
convertView = inflater.inflate(R.layout.contact_row, null);
viewHolder = new ViewHolder();
- viewHolder.cBox = (CheckBox) convertView.findViewById(R.id.contactCheckBox);
+
+
convertView.setTag(viewHolder);
- viewHolder.cBox.setOnClickListener( new View.OnClickListener() {
- public void onClick(View v) {
- CheckBox taskCB = (CheckBox) v;
- if (taskCB.isChecked())
- Log.d("User Input: ", "Checked " + taskCB.getText());
- else
- Log.d("User Input: ", "Un-Checked " + taskCB.getText());
- }
- });
}
else {
viewHolder = (ViewHolder) convertView.getTag();
}
- String task = taskList.get(position);
- viewHolder.cBox.setText(task);
+ viewHolder.shlist = contacts.get(position);
+ viewHolder.name = (CheckBox) convertView.findViewById(R.id.contactCheckBox);
+ viewHolder.name.setText(viewHolder.shlist.getName());
+ viewHolder.name.setChecked(viewHolder.shlist.getSelected());
+ final Contact contact = viewHolder.shlist;
+ viewHolder.name.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Log.d("contacts", "Clicked: " + contact.getName() + ":" + contact.getNumber());
+ if (contact.getSelected()) {
+ contact.setSelected(false);
+ } else {
+ contact.setSelected(true);
+ }
+ }
+ });
return convertView;
diff --git a/android/shlist/app/src/main/java/drsocto/shlist/HomeScreen.java b/android/shlist/app/src/main/java/drsocto/shlist/HomeScreen.java
@@ -22,6 +22,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
+import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
@@ -31,6 +32,7 @@ import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
+import org.w3c.dom.Text;
import java.nio.ByteBuffer;
import java.util.ArrayList;
@@ -51,8 +53,9 @@ public class HomeScreen extends ActionBarActivity {
private final String SERVER_ADDRESS = "104.236.186.39";
private final int SERVER_PORT = 5437;
private final String dbName = "shlist.db";
- private ArrayList<String> list1;
- private ArrayAdapter<String> adapter1;
+ private ArrayList<Shlist> list1;
+ private ArrayList<String> list1_str;
+ private MyInListsAdapter adapter1;
private ArrayAdapter<String> adapter2;
private ArrayList<String> list2;
private long phoneNum;
@@ -109,9 +112,10 @@ public class HomeScreen extends ActionBarActivity {
}
}
- list1 = new ArrayList<String>();
+ list1 = new ArrayList<Shlist>();
+ list1_str = new ArrayList<String>();
- adapter1 = new ArrayAdapter<String>(this, R.layout.list_row, R.id.list_name, list1);
+ adapter1 = new MyInListsAdapter(this, R.layout.list_row, list1, list1_str);
ListView lv1 = (ListView) findViewById(R.id.currentLists);
registerForContextMenu(lv1);
@@ -209,11 +213,10 @@ public class HomeScreen extends ActionBarActivity {
case R.id.leave_list:
int position = (int) info.id;
joinLeavePosition = position;
- String list_entry = adapter1.getItem(position);
+ Shlist list_entry = adapter1.getShlist(position);
+ int num = list_entry.getNum();
Log.d("main", "Tried to leave list: " + list_entry);
- String list_entry_split[] = list_entry.split(":");
JSONObject obj = new JSONObject();
- int num = Integer.parseInt(list_entry_split[1]);
try {
obj.put("device_id", "" + id);
obj.put("list_num", num);
@@ -270,8 +273,7 @@ public class HomeScreen extends ActionBarActivity {
dbHelper.closeDB();
try {
JSONObject list_obj = new JSONObject();
- list_obj.put("num", 0);
- list_obj.put("name", name);
+ list_obj.put("name", name.trim());
list_obj.put("date", System.currentTimeMillis() / 1000L);
JSONObject main_obj = new JSONObject();
main_obj.put("device_id", device_id);
@@ -341,7 +343,7 @@ public class HomeScreen extends ActionBarActivity {
@Override
protected void onPostExecute(String result) {
Log.d("NetMan", "Join List End");
- list1.add(joinLeaveMessage);
+ //list1.add(joinLeaveMessage);
list2.remove(joinLeavePosition);
adapter1.notifyDataSetChanged();
adapter2.notifyDataSetChanged();
@@ -360,6 +362,7 @@ public class HomeScreen extends ActionBarActivity {
@Override
protected void onPostExecute(String result) {
list1.remove(joinLeavePosition);
+ list1_str.remove(joinLeavePosition);
adapter1.notifyDataSetChanged();
adapter2.notifyDataSetChanged();
cListsTV.setText("Current Lists (" + list1.size() + ")");
@@ -380,9 +383,17 @@ public class HomeScreen extends ActionBarActivity {
JSONObject main_obj = new JSONObject(result);
int num = main_obj.getInt("num_lists");
JSONArray lists_arr = main_obj.getJSONArray("lists");
+ Shlist temp_shlist;
+ JSONObject temp_json;
+ int temp_items[] = new int[2];
for (int i = 0; i < num; ++i) {
- list1.add(lists_arr.getJSONObject(i).getString("name") + ":" + lists_arr.getJSONObject(i).getString("num"));
+ temp_json = lists_arr.getJSONObject(i);
+ temp_items[0] = temp_json.getInt("items_complete");
+ temp_items[1] = temp_json.getInt("items_total");
+ temp_shlist = new Shlist(temp_json.getInt("num"), temp_json.getString("name"), temp_items, new String[1], 22);
+ list1.add(temp_shlist);
+ list1_str.add(temp_shlist.getName());
}
cListsTV.setText("Current Lists (" + list1.size() + ")");
@@ -393,6 +404,19 @@ public class HomeScreen extends ActionBarActivity {
}
}
+ public class sendFriendAddMessage extends AsyncTask<String, Void, String> {
+ @Override
+ protected String doInBackground(String... urls) {
+ String result = nm.sendMessage(urls);
+ return result;
+ }
+
+ @Override
+ protected void onPostExecute(String result) {
+
+ }
+ }
+
public class sendNewListMessageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
@@ -404,12 +428,21 @@ public class HomeScreen extends ActionBarActivity {
try {
JSONObject main_obj = new JSONObject(result);
JSONObject list_obj = main_obj.getJSONObject("list");
- String list_num = list_obj.getString("num");
+ int list_num = list_obj.getInt("num");
+ String list_num_str = list_obj.getString("num");
String list_name = list_obj.getString("name");
+ int date = list_obj.getInt("date");
+ int items[] = new int[2];
+ items[0] = list_obj.getInt("items_complete");
+ items[1] = list_obj.getInt("items_total");
+ int num_members = list_obj.getInt("num_members");
+ String[] members = new String[0];
+ Shlist shlist = new Shlist(list_num, list_name, date);
dbHelper.openOrCreateDB();
- dbHelper.addList(list_num, list_name);
+ dbHelper.addList(list_num_str, list_name);
dbHelper.closeDB();
- list1.add(list_name + ":" + list_num);
+ list1.add(shlist);
+ list1_str.add(shlist.getName());
cListsTV.setText("Current Lists (" + list1.size() + ")");
adapter1.notifyDataSetChanged();
} catch (JSONException e) {
@@ -417,4 +450,58 @@ public class HomeScreen extends ActionBarActivity {
}
}
}
+
+ private class MyInListsAdapter extends ArrayAdapter<String> {
+
+ private ArrayList<Shlist> ourLists;
+
+ public MyInListsAdapter(Context context, int textViewResourceId,
+ ArrayList<Shlist> taskList, ArrayList<String> stringList) {
+ super(context, textViewResourceId, stringList);
+ ourLists = taskList;
+ }
+
+ private class ViewHolder {
+ Shlist shlist;
+ TextView name;
+ TextView completion;
+ TextView friends;
+ }
+
+ public Shlist getShlist(int position) {
+ return ourLists.get(position);
+ }
+
+ @Override
+ public View getView(final int position, View convertView, ViewGroup parent) {
+
+ ViewHolder viewHolder = null;
+ Log.v("ConvertView", String.valueOf(position));
+
+ if (convertView == null) {
+ LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ convertView = inflater.inflate(R.layout.list_row, null);
+
+ viewHolder = new ViewHolder();
+ viewHolder.name = (TextView) convertView.findViewById(R.id.list_name);
+ viewHolder.completion = (TextView) convertView.findViewById(R.id.list_completion);
+ viewHolder.friends = (TextView) convertView.findViewById(R.id.friends_list);
+
+ convertView.setTag(viewHolder);
+
+ }
+ else {
+ viewHolder = (ViewHolder) convertView.getTag();
+ }
+
+ viewHolder.shlist = ourLists.get(position);
+ viewHolder.name.setText(viewHolder.shlist.getName());
+ viewHolder.completion.setText(viewHolder.shlist.getComplete() + "/" + viewHolder.shlist.getTotal());
+ viewHolder.friends.setText("Kyle Muthafuckin Milz");
+
+ return convertView;
+
+ }
+
+ }
}
diff --git a/android/shlist/app/src/main/java/drsocto/shlist/Shlist.java b/android/shlist/app/src/main/java/drsocto/shlist/Shlist.java
@@ -0,0 +1,55 @@
+package drsocto.shlist;
+
+/**
+ * Created by dreng on 1/24/2016.
+ */
+public class Shlist {
+
+ private int num;
+ private String name;
+ private int[] items = new int[2];
+
+ private String[] member_list;
+ private int members;
+
+ private int date;
+
+
+ // Constructors
+
+ // New List
+ public Shlist(int num, String name, int date) {
+ this.num = num;
+ this.name = name;
+ this.date = date;
+ this.items[0] = 0;
+ this.items[1] = 0;
+ this.members = 1;
+ }
+
+ // Existing List
+ public Shlist(int num, String name, int[] items, String[] member_list, int date) {
+ this.num = num;
+ this.name = name;
+ this.items = items;
+ this.member_list = member_list;
+ this.date = date;
+ this.members = member_list.length;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public int getComplete() {
+ return items[0];
+ }
+
+ public int getTotal() {
+ return items[1];
+ }
+}
diff --git a/android/shlist/app/src/main/res/layout-land/list_row.xml b/android/shlist/app/src/main/res/layout-land/list_row.xml
@@ -22,7 +22,7 @@
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="(3/9)"
- android:id="@+id/textView2"
+ android:id="@+id/list_completion"
android:layout_alignParentRight="true"
android:layout_alignBottom="@id/list_name"
android:layout_alignParentBottom="false"
@@ -33,21 +33,10 @@
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="Friends: David, Greg, Kyle"
- android:id="@+id/textView"
+ android:id="@+id/friends_list"
android:layout_alignParentTop="false"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="false"
android:layout_alignParentBottom="true"
android:layout_below="@+id/list_name" />
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:text="In 12 months"
- android:id="@+id/textView3"
- android:layout_alignParentBottom="true"
- android:layout_alignParentRight="true"
- android:layout_below="@+id/textView2"
- android:textColor="#ffff0030" />
</RelativeLayout>
diff --git a/android/shlist/app/src/main/res/layout-port/list_row.xml b/android/shlist/app/src/main/res/layout-port/list_row.xml
@@ -22,7 +22,7 @@
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="(3/9)"
- android:id="@+id/textView2"
+ android:id="@+id/list_completion"
android:layout_alignParentRight="true"
android:layout_alignBottom="@id/list_name"
android:layout_alignParentBottom="false"
@@ -33,21 +33,11 @@
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="Friends: David, Greg, Kyle"
- android:id="@+id/textView"
+ android:id="@+id/friends_list"
android:layout_alignParentTop="false"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="false"
android:layout_alignParentBottom="true"
android:layout_below="@+id/list_name" />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:text="In 12 months"
- android:id="@+id/textView3"
- android:layout_alignParentBottom="true"
- android:layout_alignParentRight="true"
- android:layout_below="@+id/textView2"
- android:textColor="#ffffb11a" />
</RelativeLayout>