commit 0d6ba1379de498697e1666543ffa02a9593ec719
parent 556f8bc022b30c5d07a1ede155d65ebb466d7d21
Author: David Engel <david@absentmindedproductions.ca>
Date: Sun, 9 Aug 2015 22:04:07 -0600
android: Join and leave functionality works, killed lists don't show up when leaving, lists move as they should.
Diffstat:
13 files changed, 325 insertions(+), 212 deletions(-)
diff --git a/android/shlist/.idea/.name b/android/shlist/.idea/.name
diff --git a/android/shlist/.idea/compiler.xml b/android/shlist/.idea/compiler.xml
@@ -1,23 +1,22 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="CompilerConfiguration">
- <option name="DEFAULT_COMPILER" value="Javac" />
- <resourceExtensions />
- <wildcardResourcePatterns>
- <entry name="!?*.java" />
- <entry name="!?*.form" />
- <entry name="!?*.class" />
- <entry name="!?*.groovy" />
- <entry name="!?*.scala" />
- <entry name="!?*.flex" />
- <entry name="!?*.kt" />
- <entry name="!?*.clj" />
- </wildcardResourcePatterns>
- <annotationProcessing>
- <profile default="true" name="Default" enabled="false">
- <processorPath useClasspath="true" />
- </profile>
- </annotationProcessing>
- </component>
-</project>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="CompilerConfiguration">
+ <resourceExtensions />
+ <wildcardResourcePatterns>
+ <entry name="!?*.java" />
+ <entry name="!?*.form" />
+ <entry name="!?*.class" />
+ <entry name="!?*.groovy" />
+ <entry name="!?*.scala" />
+ <entry name="!?*.flex" />
+ <entry name="!?*.kt" />
+ <entry name="!?*.clj" />
+ <entry name="!?*.aj" />
+ </wildcardResourcePatterns>
+ <annotationProcessing>
+ <profile default="true" name="Default" enabled="false">
+ <processorPath useClasspath="true" />
+ </profile>
+ </annotationProcessing>
+ </component>
+</project>
+\ No newline at end of file
diff --git a/android/shlist/.idea/copyright/profiles_settings.xml b/android/shlist/.idea/copyright/profiles_settings.xml
@@ -1,3 +1,3 @@
-<component name="CopyrightManager">
- <settings default="" />
+<component name="CopyrightManager">
+ <settings default="" />
</component>
\ No newline at end of file
diff --git a/android/shlist/.idea/encodings.xml b/android/shlist/.idea/encodings.xml
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
-</project>
-
diff --git a/android/shlist/.idea/gradle.xml b/android/shlist/.idea/gradle.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="GradleSettings">
- <option name="linkedExternalProjectsSettings">
- <GradleProjectSettings>
- <option name="distributionType" value="LOCAL" />
- <option name="externalProjectPath" value="$PROJECT_DIR$" />
- <option name="gradleHome" value="C:\Program Files\Android\Android Studio\gradle\gradle-2.2.1" />
- <option name="modules">
- <set>
- <option value="$PROJECT_DIR$" />
- <option value="$PROJECT_DIR$/app" />
- </set>
- </option>
- </GradleProjectSettings>
- </option>
- </component>
-</project>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="GradleSettings">
+ <option name="linkedExternalProjectsSettings">
+ <GradleProjectSettings>
+ <option name="distributionType" value="LOCAL" />
+ <option name="externalProjectPath" value="$PROJECT_DIR$" />
+ <option name="gradleHome" value="$APPLICATION_HOME_DIR$/gradle/gradle-2.2.1" />
+ <option name="gradleJvm" value="1.8" />
+ <option name="modules">
+ <set>
+ <option value="$PROJECT_DIR$" />
+ <option value="$PROJECT_DIR$/app" />
+ </set>
+ </option>
+ </GradleProjectSettings>
+ </option>
+ </component>
+</project>
+\ No newline at end of file
diff --git a/android/shlist/.idea/misc.xml b/android/shlist/.idea/misc.xml
@@ -1,10 +1,22 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="EntryPointsManager">
- <entry_points version="2.0" />
- </component>
- <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
- <output url="file://$PROJECT_DIR$/build/classes" />
- </component>
-</project>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="EntryPointsManager">
+ <entry_points version="2.0" />
+ </component>
+ <component name="ProjectLevelVcsManager" settingsEditedManually="false">
+ <OptionsSetting value="true" id="Add" />
+ <OptionsSetting value="true" id="Remove" />
+ <OptionsSetting value="true" id="Checkout" />
+ <OptionsSetting value="true" id="Update" />
+ <OptionsSetting value="true" id="Status" />
+ <OptionsSetting value="true" id="Edit" />
+ <ConfirmationsSetting value="0" id="Add" />
+ <ConfirmationsSetting value="0" id="Remove" />
+ </component>
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+ <output url="file://$PROJECT_DIR$/build/classes" />
+ </component>
+ <component name="ProjectType">
+ <option name="id" value="Android" />
+ </component>
+</project>
+\ No newline at end of file
diff --git a/android/shlist/.idea/modules.xml b/android/shlist/.idea/modules.xml
@@ -1,10 +1,9 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectModuleManager">
- <modules>
- <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
- <module fileurl="file://$PROJECT_DIR$/shlist.iml" filepath="$PROJECT_DIR$/shlist.iml" />
- </modules>
- </component>
-</project>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectModuleManager">
+ <modules>
+ <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
+ <module fileurl="file://$PROJECT_DIR$/shlist.iml" filepath="$PROJECT_DIR$/shlist.iml" />
+ </modules>
+ </component>
+</project>
+\ No newline at end of file
diff --git a/android/shlist/.idea/scopes/scope_settings.xml b/android/shlist/.idea/scopes/scope_settings.xml
@@ -1,5 +0,0 @@
-<component name="DependencyValidationManager">
- <state>
- <option name="SKIP_IMPORT_STATEMENTS" value="false" />
- </state>
-</component>
-\ No newline at end of file
diff --git a/android/shlist/.idea/vcs.xml b/android/shlist/.idea/vcs.xml
@@ -1,7 +1,6 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="VcsDirectoryMappings">
- <mapping directory="" vcs="" />
- </component>
-</project>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="" vcs="" />
+ </component>
+</project>
+\ No newline at end of file
diff --git a/android/shlist/app/app.iml b/android/shlist/app/app.iml
@@ -1,93 +1,93 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="shlist" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
- <component name="FacetManager">
- <facet type="android-gradle" name="Android-Gradle">
- <configuration>
- <option name="GRADLE_PROJECT_PATH" value=":app" />
- </configuration>
- </facet>
- <facet type="android" name="Android">
- <configuration>
- <option name="SELECTED_BUILD_VARIANT" value="debug" />
- <option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
- <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
- <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
- <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
- <option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
- <option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugAndroidTestSources" />
- <option name="ALLOW_USER_CONFIGURATION" value="false" />
- <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
- <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
- <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
- <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
- </configuration>
- </facet>
- </component>
- <component name="NewModuleRootManager" inherit-compiler-output="false">
- <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
- <output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" />
- <exclude-output />
- <content url="file://$MODULE_DIR$">
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/debug" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/androidTest/debug" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
- <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
- <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
- </content>
- <orderEntry type="jdk" jdkName="Android API 22 Platform" jdkType="Android SDK" />
- <orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="library" exported="" name="support-annotations-22.1.1" level="project" />
- <orderEntry type="library" exported="" name="support-v4-22.1.1" level="project" />
- <orderEntry type="library" exported="" name="appcompat-v7-22.1.1" level="project" />
- </component>
-</module>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="shlist" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="android-gradle" name="Android-Gradle">
+ <configuration>
+ <option name="GRADLE_PROJECT_PATH" value=":app" />
+ </configuration>
+ </facet>
+ <facet type="android" name="Android">
+ <configuration>
+ <option name="SELECTED_BUILD_VARIANT" value="debug" />
+ <option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
+ <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
+ <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
+ <option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
+ <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
+ <option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" />
+ <option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugAndroidTestSources" />
+ <option name="ALLOW_USER_CONFIGURATION" value="false" />
+ <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
+ <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
+ <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
+ <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
+ </configuration>
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" inherit-compiler-output="false">
+ <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
+ <output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" />
+ <exclude-output />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/debug" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/androidTest/debug" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
+ <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
+ <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
+ </content>
+ <orderEntry type="jdk" jdkName="Android API 22 Platform" jdkType="Android SDK" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" exported="" name="support-annotations-22.1.1" level="project" />
+ <orderEntry type="library" exported="" name="support-v4-22.1.1" level="project" />
+ <orderEntry type="library" exported="" name="appcompat-v7-22.1.1" level="project" />
+ </component>
+</module>
+\ No newline at end of file
diff --git a/android/shlist/app/src/main/java/drsocto/shlist/HomeScreen.java b/android/shlist/app/src/main/java/drsocto/shlist/HomeScreen.java
@@ -18,6 +18,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.LinearLayout;
@@ -40,15 +41,18 @@ public class HomeScreen extends ActionBarActivity {
private final String DEBUG_TAG = "PIMPJUICE";
private final String SERVER_ADDRESS = "104.236.186.39";
- private final int SERVER_PORT = 5438;
+ private final int SERVER_PORT = 5437;
private final String dbName = "shlist.db";
private ArrayList<String> list1;
private ArrayAdapter<String> adapter1;
private ArrayAdapter<String> adapter2;
private ArrayList<String> list2;
private long phoneNum;
+ private String id;
private TextView cListsTV;
private TextView oListsTV;
+ private String joinLeaveMessage;
+ private int joinLeavePosition;
NetMan nm;
DBHelper dbHelper;
@@ -69,7 +73,7 @@ public class HomeScreen extends ActionBarActivity {
// remove '+' before parsing
phoneNum = Long.parseLong(mPhoneNumber);
- String id = dbHelper.getDeviceID();
+ id = dbHelper.getDeviceID();
dbHelper.closeDB();
@@ -94,14 +98,6 @@ public class HomeScreen extends ActionBarActivity {
ListView lv1 = (ListView) findViewById(R.id.currentLists);
list2 = new ArrayList<String>();
- list2.add("Ain't that just the shlist");
- list2.add("Tough shlist");
- list2.add("shlist happens");
- list2.add("YOU WANNA START SOME shlist?");
- list2.add("awww shlist... I think I'm out");
- list2.add("gotta pad this shlist a bit more");
- list2.add("and we're done...");
- list2.add("... shlist");
adapter2 = new ArrayAdapter<String>(this, R.layout.list_row, R.id.r_text, list2);
@@ -116,6 +112,32 @@ public class HomeScreen extends ActionBarActivity {
lv1.setAdapter(adapter1);
lv2.setAdapter(adapter2);
+ lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long posid) {
+ String text = adapter1.getItem(position);
+ Log.d("lv1", "Clicked: " + text);
+ String[] nameID = text.split(":");
+ String message = id + "\0" + nameID[1];
+ new sendLeaveListMessageTask().execute(message, "leave_list");
+ joinLeaveMessage = text;
+ joinLeavePosition = position;
+ }
+ });
+
+ lv2.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long posid) {
+ String text = adapter2.getItem(position);
+ Log.d("lv2", "Clicked: " + text);
+ String[] nameID = text.split(":");
+ String message = id + "\0" + nameID[1];
+ new sendJoinListMessageTask().execute(message, "join_list");
+ joinLeaveMessage = text;
+ joinLeavePosition = position;
+ }
+ });
+
if (id != null) {
new sendGetListsMessageTask().execute(id, "get_lists");
}
@@ -124,12 +146,12 @@ public class HomeScreen extends ActionBarActivity {
/* if device id doesn't exist
get phone number
send to server
- TODO: make sure server always rolls new id and clears data
+ TODO: if phone number already exists, verify contacts,
+ TODO: resend device id, or reroll id and wipe out references
get device id
write device id locally
-
*/
// We can get around the new phone thing, if you reinstall the app, we force it to reload contacts
@@ -228,6 +250,50 @@ public class HomeScreen extends ActionBarActivity {
}
}
+ public class sendJoinListMessageTask extends AsyncTask<String, Void, String> {
+ @Override
+ protected String doInBackground(String... urls) {
+ Log.d("NetMan", "Join List Start");
+ String result = nm.sendMessage(urls);
+ return result;
+ }
+ @Override
+ protected void onPostExecute(String result) {
+ Log.d("NetMan", "Join List End");
+ list1.add(joinLeaveMessage);
+ list2.remove(joinLeavePosition);
+ adapter1.notifyDataSetChanged();
+ adapter2.notifyDataSetChanged();
+ cListsTV.setText("Current Lists (" + list1.size() + ")");
+ oListsTV.setText("Available Lists (" + list2.size() + ")");
+ }
+ }
+
+ public class sendLeaveListMessageTask extends AsyncTask<String, Void, String> {
+ @Override
+ protected String doInBackground(String... urls) {
+ Log.d("NetMan", "Leave List Start");
+ String result = nm.sendMessage(urls);
+ return result;
+ }
+ @Override
+ protected void onPostExecute(String result) {
+ result = result.substring(4);
+ String[] parts = result.split("\0");
+ Log.d("NetMan", "List id: " + parts[0]);
+ Log.d("NetMan", "Alive: " + parts[1]);
+ Log.d("NetMan", "Leave List End");
+ if (parts[1].equals("1")) {
+ list2.add(joinLeaveMessage);
+ }
+ list1.remove(joinLeavePosition);
+ adapter1.notifyDataSetChanged();
+ adapter2.notifyDataSetChanged();
+ cListsTV.setText("Current Lists (" + list1.size() + ")");
+ oListsTV.setText("Available Lists (" + list2.size() + ")");
+ }
+ }
+
public class sendGetListsMessageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
@@ -239,12 +305,48 @@ public class HomeScreen extends ActionBarActivity {
protected void onPostExecute(String result) {
Log.d("NetMan", "Get Lists Done");
result = result.substring(4);
- String[] lists = result.split("\0");
- for (int i = 0; i < lists.length; ++i) {
- String[] deets = lists[i].split(":");
- list1.add(deets[0] + " - " + deets[1]);
+ if (!result.equals("\0\0")) {
+ Log.d("NetMan", "Got Response: " + result);
+ String[] halves = result.split("\0\0");
+ Log.d("NetMan", "halves size: " + halves.length);
+ String[] cur_lists = halves[0].split("\0");
+ if (halves.length > 1) {
+ String[] ava_lists = halves[1].split("\0");
+ for (int i = 0; i < ava_lists.length; ++i) {
+ String[] temp = ava_lists[i].split(":");
+ Log.d("NetMan", "-------------------");
+ Log.d("NetMan", "List (Available): " + (i+1));
+ Log.d("NetMan", "-------------------");
+ Log.d("NetMan", "Name: " + temp[0]);
+ list2.add(temp[0] + ":" + temp[1]);
+ Log.d("NetMan", "ID: " + temp[1]);
+ for (int j = 2; j < temp.length; ++j) {
+ Log.d("NetMan", "Member: " + temp[j]);
+ }
+ }
+ }
+ if (!cur_lists[0].equals("")) {
+ for (int i = 0; i < cur_lists.length; ++i) {
+ String[] temp = cur_lists[i].split(":");
+ Log.d("NetMan", "-------------------");
+ Log.d("NetMan", "List (Current): " + (i + 1));
+ Log.d("NetMan", "-------------------");
+ Log.d("NetMan", "Name: " + temp[0]);
+ Log.d("NetMan", "ID: " + temp[1]);
+ list1.add(temp[0] + ":" + temp[1]);
+ for (int j = 2; j < temp.length; ++j) {
+ Log.d("NetMan", "Member: " + temp[j]);
+ }
+ }
+ }
+
+ adapter1.notifyDataSetChanged();
+ adapter2.notifyDataSetChanged();
+ cListsTV.setText("Current Lists (" + list1.size() + ")");
+ oListsTV.setText("Available Lists (" + list2.size() + ")");
+ } else {
+ Log.d("NetMan", "No Lists");
}
- adapter1.notifyDataSetChanged();
}
}
diff --git a/android/shlist/app/src/main/java/drsocto/shlist/NetMan.java b/android/shlist/app/src/main/java/drsocto/shlist/NetMan.java
@@ -20,6 +20,8 @@ public class NetMan {
private final int NEW_DEVICE_MESSAGE_TYPE= 0;
private final int NEW_LIST_MESSAGE_TYPE= 1;
private final int LIST_REQUEST_MESSAGE_TYPE=3;
+ private final int JOIN_LIST_MESSAGE_TYPE=4;
+ private final int LEAVE_LIST_MESSAGE_TYPE=5;
private String addr;
private int port;
Socket socket;
@@ -80,7 +82,7 @@ public class NetMan {
dbh.closeDB();
} else if (mTypeInt == NEW_LIST_MESSAGE_TYPE) {
String[] messageParts = message[0].split("\0");
- response = messageParts[1] + " - " + response.substring(4);
+ response = messageParts[1] + ":" + response.substring(4);
} else if (mTypeInt == LIST_REQUEST_MESSAGE_TYPE) {
Log.d("NetMan", response.substring(4));
}
@@ -101,6 +103,10 @@ public class NetMan {
return NEW_DEVICE_MESSAGE_TYPE;
} else if (mTypeStr.equals("get_lists")) {
return LIST_REQUEST_MESSAGE_TYPE;
+ } else if (mTypeStr.equals("join_list")) {
+ return JOIN_LIST_MESSAGE_TYPE;
+ } else if (mTypeStr.equals("leave_list")) {
+ return LEAVE_LIST_MESSAGE_TYPE;
}
return -1;
}
diff --git a/android/shlist/shlist.iml b/android/shlist/shlist.iml
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
- <component name="FacetManager">
- <facet type="java-gradle" name="Java-Gradle">
- <configuration>
- <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
- </configuration>
- </facet>
- </component>
- <component name="NewModuleRootManager" inherit-compiler-output="true">
- <exclude-output />
- <content url="file://$MODULE_DIR$">
- <excludeFolder url="file://$MODULE_DIR$/.gradle" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- </component>
-</module>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id="shlist" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="java-gradle" name="Java-Gradle">
+ <configuration>
+ <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
+ <option name="BUILDABLE" value="false" />
+ </configuration>
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
+ <exclude-output />
+ <content url="file://$MODULE_DIR$">
+ <excludeFolder url="file://$MODULE_DIR$/.gradle" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ </component>
+</module>
+\ No newline at end of file