aboutsummaryrefslogtreecommitdiffstats
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/Fix My Street/.classpath14
-rw-r--r--android/Fix My Street/.project33
-rw-r--r--android/Fix My Street/.settings/org.eclipse.jdt.core.prefs5
-rw-r--r--android/Fix My Street/AndroidManifest.xml68
-rw-r--r--android/Fix My Street/META-INF/LICENSE202
-rw-r--r--android/Fix My Street/META-INF/MANIFEST.MF13
-rw-r--r--android/Fix My Street/META-INF/NOTICE30
-rw-r--r--android/Fix My Street/META-INF/maven/org.apache.james/apache-mime4j/pom.properties5
-rw-r--r--android/Fix My Street/META-INF/maven/org.apache.james/apache-mime4j/pom.xml297
-rw-r--r--android/Fix My Street/bin/Fix My Street.apkbin0 -> 563830 bytes
-rw-r--r--android/Fix My Street/bin/classes.dexbin0 -> 1096268 bytes
-rw-r--r--android/Fix My Street/bin/resources.ap_bin0 -> 92779 bytes
-rw-r--r--android/Fix My Street/default.properties22
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/AbstractContentHandler.classbin0 -> 1707 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/BodyDescriptor.classbin0 -> 6190 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/CloseShieldInputStream.classbin0 -> 1792 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/ContentHandler.classbin0 -> 644 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/EOLConvertingInputStream.classbin0 -> 1304 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/MimeBoundaryInputStream.classbin0 -> 2286 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/MimeStreamParser.classbin0 -> 6767 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/RootInputStream.classbin0 -> 1285 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/SimpleContentHandler.classbin0 -> 1762 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/decoder/Base64InputStream.classbin0 -> 4381 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/decoder/ByteQueue.classbin0 -> 1206 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/decoder/DecoderUtil.classbin0 -> 4972 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.classbin0 -> 4022 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer$1.classbin0 -> 1654 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.classbin0 -> 2440 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/AddressListField$Parser.classbin0 -> 2184 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/AddressListField.classbin0 -> 1763 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/ContentTransferEncodingField$Parser.classbin0 -> 988 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/ContentTransferEncodingField.classbin0 -> 1319 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/ContentTypeField$Parser.classbin0 -> 3504 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/ContentTypeField.classbin0 -> 3533 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/DateTimeField$Parser.classbin0 -> 2132 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/DateTimeField.classbin0 -> 1632 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/DefaultFieldParser.classbin0 -> 2048 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/DelegatingFieldParser.classbin0 -> 1633 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/Field.classbin0 -> 3350 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/FieldParser.classbin0 -> 245 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/MailboxField$Parser.classbin0 -> 2476 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/MailboxField.classbin0 -> 1723 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/MailboxListField$Parser.classbin0 -> 2263 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/MailboxListField.classbin0 -> 1763 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/UnstructuredField$Parser.classbin0 -> 973 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/UnstructuredField.classbin0 -> 806 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/Address.classbin0 -> 513 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/AddressList.classbin0 -> 3615 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/Builder$ChildNodeIterator.classbin0 -> 1371 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/Builder.classbin0 -> 7551 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/DomainList.classbin0 -> 1319 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/Group.classbin0 -> 1686 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/Mailbox.classbin0 -> 1923 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/MailboxList.classbin0 -> 1371 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/NamedMailbox.classbin0 -> 1761 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.classbin0 -> 1168 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddress.classbin0 -> 1160 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddress_list.classbin0 -> 1180 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTangle_addr.classbin0 -> 1172 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTdomain.classbin0 -> 1156 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTgroup_body.classbin0 -> 1172 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTlocal_part.classbin0 -> 1172 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTmailbox.classbin0 -> 1160 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTname_addr.classbin0 -> 1168 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTphrase.classbin0 -> 1156 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTroute.classbin0 -> 1152 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$1.classbin0 -> 282 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$JJCalls.classbin0 -> 609 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$LookaheadSuccess.classbin0 -> 838 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser.classbin0 -> 20149 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.classbin0 -> 1495 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.classbin0 -> 15464 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.classbin0 -> 1023 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.classbin0 -> 1468 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/BaseNode.classbin0 -> 492 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.classbin0 -> 2740 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/Node.classbin0 -> 661 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/ParseException.classbin0 -> 3360 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/SimpleCharStream.classbin0 -> 7947 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/SimpleNode.classbin0 -> 3450 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/Token.classbin0 -> 772 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/address/parser/TokenMgrError.classbin0 -> 2628 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.classbin0 -> 7215 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.classbin0 -> 1176 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.classbin0 -> 13773 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ParseException.classbin0 -> 3380 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.classbin0 -> 7955 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/Token.classbin0 -> 784 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.classbin0 -> 2636 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/datetime/DateTime.classbin0 -> 3523 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser$Date.classbin0 -> 902 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser$Time.classbin0 -> 966 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.classbin0 -> 10276 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.classbin0 -> 1559 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.classbin0 -> 14582 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/ParseException.classbin0 -> 3365 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.classbin0 -> 7949 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/Token.classbin0 -> 775 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.classbin0 -> 2630 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/message/AbstractBody.classbin0 -> 700 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/message/BinaryBody.classbin0 -> 276 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/message/Body.classbin0 -> 346 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/message/BodyPart.classbin0 -> 776 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/message/Entity.classbin0 -> 2920 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/message/Header$1.classbin0 -> 1160 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/message/Header.classbin0 -> 3554 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/message/Message$MessageBuilder.classbin0 -> 5987 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/message/Message.classbin0 -> 2574 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/message/Multipart.classbin0 -> 4083 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/message/TempFileBinaryBody.classbin0 -> 2822 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/message/TempFileTextBody.classbin0 -> 3505 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/message/TextBody.classbin0 -> 262 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil$1.classbin0 -> 232 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil$Charset.classbin0 -> 1690 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil.classbin0 -> 16826 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/util/PartialInputStream.classbin0 -> 1430 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/util/PositionInputStream.classbin0 -> 1780 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$1.classbin0 -> 250 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$SimpleTempFile.classbin0 -> 2045 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$SimpleTempPath.classbin0 -> 3000 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage.classbin0 -> 4582 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/util/TempFile.classbin0 -> 410 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/util/TempPath.classbin0 -> 671 bytes
-rw-r--r--android/Fix My Street/org/apache/james/mime4j/util/TempStorage.classbin0 -> 2341 bytes
-rw-r--r--android/Fix My Street/res/drawable/add.pngbin0 -> 971 bytes
-rw-r--r--android/Fix My Street/res/drawable/blue_filler.xml3
-rw-r--r--android/Fix My Street/res/drawable/done.pngbin0 -> 1051 bytes
-rw-r--r--android/Fix My Street/res/drawable/filler.pngbin0 -> 131 bytes
-rw-r--r--android/Fix My Street/res/drawable/house_icon.pngbin0 -> 5228 bytes
-rw-r--r--android/Fix My Street/res/drawable/spacer.pngbin0 -> 123 bytes
-rw-r--r--android/Fix My Street/res/drawable/street_background_smaller.pngbin0 -> 84752 bytes
-rw-r--r--android/Fix My Street/res/layout/about.xml45
-rw-r--r--android/Fix My Street/res/layout/details.xml71
-rw-r--r--android/Fix My Street/res/layout/help.xml38
-rw-r--r--android/Fix My Street/res/layout/home.xml36
-rw-r--r--android/Fix My Street/res/layout/success.xml44
-rw-r--r--android/Fix My Street/res/values/colors.xml6
-rw-r--r--android/Fix My Street/res/values/strings.xml19
-rw-r--r--android/Fix My Street/res/values/themes.xml6
-rw-r--r--android/Fix My Street/src/com/android/fixmystreet/About.java61
-rw-r--r--android/Fix My Street/src/com/android/fixmystreet/Details.java249
-rw-r--r--android/Fix My Street/src/com/android/fixmystreet/Help.java59
-rw-r--r--android/Fix My Street/src/com/android/fixmystreet/Home.java726
-rw-r--r--android/Fix My Street/src/com/android/fixmystreet/R.java74
-rw-r--r--android/Fix My Street/src/com/android/fixmystreet/Settings.java33
-rw-r--r--android/Fix My Street/src/com/android/fixmystreet/Stored.java32
-rw-r--r--android/Fix My Street/src/com/android/fixmystreet/Success.java57
147 files changed, 2106 insertions, 142 deletions
diff --git a/android/Fix My Street/.classpath b/android/Fix My Street/.classpath
deleted file mode 100644
index ff7848378..000000000
--- a/android/Fix My Street/.classpath
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
- <classpathentry kind="lib" path="C:/Documents and Settings/Anna/Desktop/httpcomponents-client-4.0-alpha4/lib/log4j-1.2.14.jar"/>
- <classpathentry kind="lib" path="C:/Documents and Settings/Anna/Desktop/httpcomponents-client-4.0-alpha4/lib/apache-mime4j-0.3.jar"/>
- <classpathentry kind="lib" path="C:/Documents and Settings/Anna/Desktop/httpcomponents-client-4.0-alpha4/lib/commons-codec-1.3.jar"/>
- <classpathentry kind="lib" path="C:/Documents and Settings/Anna/Desktop/httpcomponents-client-4.0-alpha4/lib/commons-io-1.2.jar"/>
- <classpathentry kind="lib" path="C:/Documents and Settings/Anna/Desktop/httpcomponents-client-4.0-alpha4/lib/httpclient-4.0-alpha4.jar"/>
- <classpathentry kind="lib" path="C:/Documents and Settings/Anna/Desktop/httpcomponents-client-4.0-alpha4/lib/httpmime-4.0-alpha4.jar"/>
- <classpathentry kind="lib" path="C:/Documents and Settings/Anna/Desktop/commons-httpclient.jar/commons-httpclient.jar"/>
- <classpathentry kind="src" path="gen"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/android/Fix My Street/.project b/android/Fix My Street/.project
deleted file mode 100644
index 273fa61ee..000000000
--- a/android/Fix My Street/.project
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>Fix My Street</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>com.android.ide.eclipse.adt.ApkBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/android/Fix My Street/.settings/org.eclipse.jdt.core.prefs b/android/Fix My Street/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 6cd1b61aa..000000000
--- a/android/Fix My Street/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Thu Sep 04 20:41:23 BST 2008
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/android/Fix My Street/AndroidManifest.xml b/android/Fix My Street/AndroidManifest.xml
deleted file mode 100644
index 078ff37dd..000000000
--- a/android/Fix My Street/AndroidManifest.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
- <!-- version info etc -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.fixmystreet" android:versionCode="2"
- android:versionName="0.9">
-
-<uses-sdk android:minSdkVersion="3" />
- <!-- Permissions -->
- <uses-permission android:name="android.permission.CAMERA" />
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
- <uses-permission android:name="android.permission.INTERNET" />
-
- <application android:icon="@drawable/house_icon"
- android:label="Fix My Street">
-
- <!-- Main screen -->
- <activity android:name=".Home" android:label="@string/app_name"
- android:theme="@style/Theme.Filler">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
-
-
- <!-- Details page -->
- <activity android:name=".Details" android:label="Fix My Street - Add details"
- android:theme="@style/Theme.Filler">
- <intent-filter>
- <action android:name="android.intent.action.DETAILS" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
- </activity>
-
- <!-- Success page -->
- <activity android:name=".Success" android:label="Fix My Street - Success"
- android:theme="@style/Theme.Filler">
- <intent-filter>
- <action android:name="android.intent.action.SUCCESS" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
- </activity>
-
- <!-- About page -->
- <activity android:name=".About" android:label="Fix My Street - About"
- android:theme="@style/Theme.Filler">
- <intent-filter>
- <action android:name="android.intent.action.ABOUT" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
- </activity>
-
- <!-- Help page -->
- <activity android:name=".Help" android:label="Fix My Street - Help"
- android:theme="@style/Theme.Filler">
- <intent-filter>
- <action android:name="android.intent.action.HELP" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
- </activity>
-
- <!-- Settings (not exposed to user) -->
- <activity android:name=".Settings" android:label="Settings">
- </activity>
-
- </application>
-</manifest> \ No newline at end of file
diff --git a/android/Fix My Street/META-INF/LICENSE b/android/Fix My Street/META-INF/LICENSE
new file mode 100644
index 000000000..d64569567
--- /dev/null
+++ b/android/Fix My Street/META-INF/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/android/Fix My Street/META-INF/MANIFEST.MF b/android/Fix My Street/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..1822e32f0
--- /dev/null
+++ b/android/Fix My Street/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Archiver-Version: Plexus Archiver
+Created-By: Apache Maven
+Built-By: maurer
+Build-Jdk: 1.5.0_08
+Implementation-Title: Apache Mime4j
+Implementation-Vendor: The Apache Software Foundation
+Implementation-Version: 0.3
+Specification-Title: Apache Mime4j
+Specification-Vendor: The Apache Software Foundation
+Specification-Version: 0.3
+url: http://james.apache.org/mime4j
+
diff --git a/android/Fix My Street/META-INF/NOTICE b/android/Fix My Street/META-INF/NOTICE
new file mode 100644
index 000000000..66dd74366
--- /dev/null
+++ b/android/Fix My Street/META-INF/NOTICE
@@ -0,0 +1,30 @@
+// ------------------------------------------------------------------
+// NOTICE file corresponding to the section 4d of The Apache License,
+// Version 2.0, in this case for Apache JAMES Mime4j
+// ------------------------------------------------------------------
+
+Apache JAMES Mime4j
+Copyright 2004-2007 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org).
+
+This product includes/uses software, Apache Commons Logging (http://jakarta.apache.org/commons/logging/),
+developed by The Apache Software Foundation (http://www.apache.org/)
+License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html)
+
+This product includes/uses software, Apache Commons IO (http://jakarta.apache.org/commons/io/),
+developed by The Apache Software Foundation (http://www.apache.org/)
+License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html)
+
+This product includes/uses software, Apache Log4j (http://logging.apache.org/log4j/),
+developed by The Apache Software Foundation (http://www.apache.org/)
+License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html)
+
+
+This product includes/uses software, JUnit (http://www.junit.org/),
+developed by Kent Beck, Erich Gamma, and David Saff
+License: Common Public License Version 1.0 (http://www.opensource.org/licenses/cpl.php)
+
+This file is automatically generated by dependencies declared in pom.xml
+
diff --git a/android/Fix My Street/META-INF/maven/org.apache.james/apache-mime4j/pom.properties b/android/Fix My Street/META-INF/maven/org.apache.james/apache-mime4j/pom.properties
new file mode 100644
index 000000000..319f669b6
--- /dev/null
+++ b/android/Fix My Street/META-INF/maven/org.apache.james/apache-mime4j/pom.properties
@@ -0,0 +1,5 @@
+#Generated by Maven
+#Thu May 24 18:04:26 CEST 2007
+version=0.3
+groupId=org.apache.james
+artifactId=apache-mime4j
diff --git a/android/Fix My Street/META-INF/maven/org.apache.james/apache-mime4j/pom.xml b/android/Fix My Street/META-INF/maven/org.apache.james/apache-mime4j/pom.xml
new file mode 100644
index 000000000..efd99b5a3
--- /dev/null
+++ b/android/Fix My Street/META-INF/maven/org.apache.james/apache-mime4j/pom.xml
@@ -0,0 +1,297 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+ <parent>
+ <artifactId>james-project</artifactId>
+ <groupId>org.apache.james</groupId>
+ <version>1.1</version>
+ <!-- Either this really points to the james-project/pom.xml or you
+ will have to tune the local repository, later, in this file -->
+ <relativePath>../james-project/project/pom.xml</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.james</groupId>
+ <artifactId>apache-mime4j</artifactId>
+ <name>Apache JAMES Mime4j</name>
+ <version>0.3</version>
+ <description>Java stream based MIME message parser</description>
+ <url>http://james.apache.org/mime4j</url>
+ <issueManagement>
+ <url>http://issues.apache.org/jira/browse/MIME4J</url>
+ </issueManagement>
+ <inceptionYear>2004</inceptionYear>
+ <distributionManagement>
+ <site>
+ <id>mime4j-website</id>
+ <url>scp://minotaur.apache.org/www/james.apache.org/mime4j/</url>
+ </site>
+ </distributionManagement>
+ <scm>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/james/mime4j/tags/apache-mime4j-0.3</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/james/mime4j/tags/apache-mime4j-0.3</developerConnection>
+ <url>http://svn.apache.org/viewvc/james/mime4j/tags/apache-mime4j-0.3</url>
+ </scm>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>javacc-maven-plugin</artifactId>
+ <version>2.1</version>
+ <executions>
+ <execution>
+ <id>generate-jjtree</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>jjtree</goal>
+ </goals>
+ <configuration>
+ <!-- <nodePackage>org.apache.jsieve.parser.generated</nodePackage> -->
+ <outputDirectory>${project.build.directory}/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser</outputDirectory>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-javacc</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>javacc</goal>
+ </goals>
+ <configuration>
+ <sourceDirectory>${project.build.directory}/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser</sourceDirectory>
+ <packageName>org.apache.james.mime4j.field.address.parser</packageName>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-javacc2</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>javacc</goal>
+ </goals>
+ <configuration>
+ <sourceDirectory>${basedir}/src/main/javacc/org/apache/james/mime4j/field/datetime</sourceDirectory>
+ <packageName>org.apache.james.mime4j.field.datetime.parser</packageName>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-javacc3</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>javacc</goal>
+ </goals>
+ <configuration>
+ <sourceDirectory>${basedir}/src/main/javacc/org/apache/james/mime4j/field/contenttype</sourceDirectory>
+ <packageName>org.apache.james.mime4j.field.contenttype.parser</packageName>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.0.2</version>
+ <configuration>
+ <source>1.4</source>
+ <target>1.4</target>
+ <encoding>iso8859-1</encoding>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>2.1</version>
+ <configuration>
+ <archive>
+ <manifestEntries>
+ <Specification-Title>Apache Mime4j</Specification-Title>
+ <Specification-Version>0.3</Specification-Version>
+ <Specification-Vendor>The Apache Software Foundation</Specification-Vendor>
+ <Implementation-Title>Apache Mime4j</Implementation-Title>
+ <Implementation-Version>0.3</Implementation-Version>
+ <Implementation-Vendor>The Apache Software Foundation</Implementation-Vendor>
+ <url>${pom.url}</url>
+ </manifestEntries>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>2.2</version>
+ <executions>
+ <execution>
+ <id>create-javadocs</id> <!-- this is used for inheritance merges -->
+ <phase>package</phase> <!-- append to the packaging phase. -->
+ <goals>
+ <goal>javadoc</goal> <!-- goals == mojos -->
+ <goal>jar</goal> <!-- goals == mojos -->
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.2-beta-1</version>
+ <configuration>
+ <descriptorSourceDirectory>${basedir}/src/assemble/</descriptorSourceDirectory>
+ </configuration>
+ <executions>
+ <execution>
+ <id>make-assembly</id> <!-- this is used for inheritance merges -->
+ <phase>package</phase> <!-- append to the packaging phase. -->
+ <goals>
+ <goal>attached</goal> <!-- goals == mojos -->
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <!-- Add NOTICE and LICENSE to generated JAR -->
+ <plugin>
+ <artifactId>maven-remote-resources-plugin</artifactId>
+ <version>1.0-alpha-5</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>process</goal>
+ </goals>
+ <configuration>
+ <resourceBundles>
+ <resourceBundle>org.apache:apache-jar-resource-bundle:1.2</resourceBundle>
+ </resourceBundles>
+ <properties>
+ <!-- <preProjectText>PRE PROCESS TEXT</preProjectText> -->
+ <!-- Our src distribution includes also the test dependencies and
+ maven remote resources doen't take this into account, so we
+ manualy add the junit disclaimer -->
+ <postProjectText>
+ This product includes/uses software, JUnit (http://www.junit.org/),
+developed by Kent Beck, Erich Gamma, and David Saff
+License: Common Public License Version 1.0 (http://www.opensource.org/licenses/cpl.php)
+
+This file is automatically generated by dependencies declared in pom.xml
+ </postProjectText>
+ <addLicense>true</addLicense>
+ </properties>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <!-- Use the assembly or we won't have the LICENSE/NOTICE
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ </plugin>
+ -->
+ <!--
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ </plugin>
+ -->
+ </plugins>
+ </build>
+ <repositories>
+ <repository>
+ <id>local-mime4j-stage-repository</id>
+ <name>Local mime4j stage repository</name>
+ <!-- Please note that due to http://jira.codehaus.org/browse/MNG-2896 -->
+ <!-- If you don't have james-project checked out in ../james-project -->
+ <!-- you will have to place your absolute path to the project instead -->
+ <!-- of ${basedir}, or, otherwise, manually install the parent poms -->
+ <!--
+ mvn -fignorepom.xml install:install-file
+ -Dfile=stage\org.apache.james\poms\james-parent-1.1.pom
+ -Dpackaging=pom
+ -DgroupId=org.apache.james
+ -DartifactId=james-parent
+ -Dversion=1.1
+ mvn -fignorepom.xml install:install-file
+ -Dfile=stage\org.apache.james\poms\james-project-1.1.pom
+ -Dpackaging=pom
+ -DgroupId=org.apache.james
+ -DartifactId=james-project
+ -Dversion=1.1
+ -->
+ <url>file://${basedir}/stage</url>
+ <layout>legacy</layout>
+ <snapshots>
+ <enabled>true</enabled>
+ <checksumPolicy>ignore</checksumPolicy>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ <checksumPolicy>ignore</checksumPolicy>
+ </releases>
+ </repository>
+ </repositories>
+ <dependencies>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>logkit</groupId>
+ <artifactId>logkit</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>avalon-framework</groupId>
+ <artifactId>avalon-framework</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.14</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <type>jar</type>
+ <!-- Removed as a workaround for an unidentified M2 bug -->
+ <scope>test</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.2</version>
+ </dependency>
+ </dependencies>
+
+ <reporting>
+ <plugins>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jxr-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </reporting>
+
+</project> \ No newline at end of file
diff --git a/android/Fix My Street/bin/Fix My Street.apk b/android/Fix My Street/bin/Fix My Street.apk
new file mode 100644
index 000000000..01bce8f62
--- /dev/null
+++ b/android/Fix My Street/bin/Fix My Street.apk
Binary files differ
diff --git a/android/Fix My Street/bin/classes.dex b/android/Fix My Street/bin/classes.dex
new file mode 100644
index 000000000..f9d783b71
--- /dev/null
+++ b/android/Fix My Street/bin/classes.dex
Binary files differ
diff --git a/android/Fix My Street/bin/resources.ap_ b/android/Fix My Street/bin/resources.ap_
new file mode 100644
index 000000000..a482f9ea3
--- /dev/null
+++ b/android/Fix My Street/bin/resources.ap_
Binary files differ
diff --git a/android/Fix My Street/default.properties b/android/Fix My Street/default.properties
deleted file mode 100644
index 0a007ab5e..000000000
--- a/android/Fix My Street/default.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system use,
-# "build.properties", and override values to adapt the script to your
-# project structure.
-
-# Project target.
-target=android-3
-# apk configurations. This property allows creation of APK files with limited
-# resources. For example, if your application contains many locales and
-# you wish to release multiple smaller apks instead of a large one, you can
-# define configuration to create apks with limited language sets.
-# Format is a comma separated list of configuration names. For each
-# configuration, a property will declare the resource configurations to
-# include. Example:
-# apk-configurations=european,northamerica
-# apk-config-european=en,fr,it,de,es
-# apk-config-northamerica=en,es
-apk-configurations=
diff --git a/android/Fix My Street/org/apache/james/mime4j/AbstractContentHandler.class b/android/Fix My Street/org/apache/james/mime4j/AbstractContentHandler.class
new file mode 100644
index 000000000..5ddd83bb5
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/AbstractContentHandler.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/BodyDescriptor.class b/android/Fix My Street/org/apache/james/mime4j/BodyDescriptor.class
new file mode 100644
index 000000000..71a103ae1
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/BodyDescriptor.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/CloseShieldInputStream.class b/android/Fix My Street/org/apache/james/mime4j/CloseShieldInputStream.class
new file mode 100644
index 000000000..72464c513
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/CloseShieldInputStream.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/ContentHandler.class b/android/Fix My Street/org/apache/james/mime4j/ContentHandler.class
new file mode 100644
index 000000000..4a14c44c1
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/ContentHandler.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/EOLConvertingInputStream.class b/android/Fix My Street/org/apache/james/mime4j/EOLConvertingInputStream.class
new file mode 100644
index 000000000..f0021d6ca
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/EOLConvertingInputStream.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/MimeBoundaryInputStream.class b/android/Fix My Street/org/apache/james/mime4j/MimeBoundaryInputStream.class
new file mode 100644
index 000000000..8b3151d7c
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/MimeBoundaryInputStream.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/MimeStreamParser.class b/android/Fix My Street/org/apache/james/mime4j/MimeStreamParser.class
new file mode 100644
index 000000000..c2975c686
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/MimeStreamParser.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/RootInputStream.class b/android/Fix My Street/org/apache/james/mime4j/RootInputStream.class
new file mode 100644
index 000000000..625ea3873
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/RootInputStream.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/SimpleContentHandler.class b/android/Fix My Street/org/apache/james/mime4j/SimpleContentHandler.class
new file mode 100644
index 000000000..0ab9269f2
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/SimpleContentHandler.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/decoder/Base64InputStream.class b/android/Fix My Street/org/apache/james/mime4j/decoder/Base64InputStream.class
new file mode 100644
index 000000000..282919223
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/decoder/Base64InputStream.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/decoder/ByteQueue.class b/android/Fix My Street/org/apache/james/mime4j/decoder/ByteQueue.class
new file mode 100644
index 000000000..b51edb99d
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/decoder/ByteQueue.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/decoder/DecoderUtil.class b/android/Fix My Street/org/apache/james/mime4j/decoder/DecoderUtil.class
new file mode 100644
index 000000000..7e6460091
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/decoder/DecoderUtil.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.class b/android/Fix My Street/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.class
new file mode 100644
index 000000000..e137431ba
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer$1.class b/android/Fix My Street/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer$1.class
new file mode 100644
index 000000000..a2b4beffb
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer$1.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.class b/android/Fix My Street/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.class
new file mode 100644
index 000000000..475caac1a
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/AddressListField$Parser.class b/android/Fix My Street/org/apache/james/mime4j/field/AddressListField$Parser.class
new file mode 100644
index 000000000..626011756
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/AddressListField$Parser.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/AddressListField.class b/android/Fix My Street/org/apache/james/mime4j/field/AddressListField.class
new file mode 100644
index 000000000..131b834fb
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/AddressListField.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/ContentTransferEncodingField$Parser.class b/android/Fix My Street/org/apache/james/mime4j/field/ContentTransferEncodingField$Parser.class
new file mode 100644
index 000000000..fdadacc77
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/ContentTransferEncodingField$Parser.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/ContentTransferEncodingField.class b/android/Fix My Street/org/apache/james/mime4j/field/ContentTransferEncodingField.class
new file mode 100644
index 000000000..41219b7d8
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/ContentTransferEncodingField.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/ContentTypeField$Parser.class b/android/Fix My Street/org/apache/james/mime4j/field/ContentTypeField$Parser.class
new file mode 100644
index 000000000..2f563d8e2
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/ContentTypeField$Parser.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/ContentTypeField.class b/android/Fix My Street/org/apache/james/mime4j/field/ContentTypeField.class
new file mode 100644
index 000000000..0114540b7
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/ContentTypeField.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/DateTimeField$Parser.class b/android/Fix My Street/org/apache/james/mime4j/field/DateTimeField$Parser.class
new file mode 100644
index 000000000..c2e1fa58c
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/DateTimeField$Parser.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/DateTimeField.class b/android/Fix My Street/org/apache/james/mime4j/field/DateTimeField.class
new file mode 100644
index 000000000..125081a3d
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/DateTimeField.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/DefaultFieldParser.class b/android/Fix My Street/org/apache/james/mime4j/field/DefaultFieldParser.class
new file mode 100644
index 000000000..4b5982687
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/DefaultFieldParser.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/DelegatingFieldParser.class b/android/Fix My Street/org/apache/james/mime4j/field/DelegatingFieldParser.class
new file mode 100644
index 000000000..9dbd81ba5
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/DelegatingFieldParser.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/Field.class b/android/Fix My Street/org/apache/james/mime4j/field/Field.class
new file mode 100644
index 000000000..eec6867d9
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/Field.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/FieldParser.class b/android/Fix My Street/org/apache/james/mime4j/field/FieldParser.class
new file mode 100644
index 000000000..a0f2bfb43
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/FieldParser.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/MailboxField$Parser.class b/android/Fix My Street/org/apache/james/mime4j/field/MailboxField$Parser.class
new file mode 100644
index 000000000..15baab4b3
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/MailboxField$Parser.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/MailboxField.class b/android/Fix My Street/org/apache/james/mime4j/field/MailboxField.class
new file mode 100644
index 000000000..a96b8f57b
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/MailboxField.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/MailboxListField$Parser.class b/android/Fix My Street/org/apache/james/mime4j/field/MailboxListField$Parser.class
new file mode 100644
index 000000000..7cfa75e6b
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/MailboxListField$Parser.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/MailboxListField.class b/android/Fix My Street/org/apache/james/mime4j/field/MailboxListField.class
new file mode 100644
index 000000000..50edd043c
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/MailboxListField.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/UnstructuredField$Parser.class b/android/Fix My Street/org/apache/james/mime4j/field/UnstructuredField$Parser.class
new file mode 100644
index 000000000..551c33137
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/UnstructuredField$Parser.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/UnstructuredField.class b/android/Fix My Street/org/apache/james/mime4j/field/UnstructuredField.class
new file mode 100644
index 000000000..443971fd6
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/UnstructuredField.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/Address.class b/android/Fix My Street/org/apache/james/mime4j/field/address/Address.class
new file mode 100644
index 000000000..be18968c1
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/Address.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/AddressList.class b/android/Fix My Street/org/apache/james/mime4j/field/address/AddressList.class
new file mode 100644
index 000000000..b5f2c77b6
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/AddressList.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/Builder$ChildNodeIterator.class b/android/Fix My Street/org/apache/james/mime4j/field/address/Builder$ChildNodeIterator.class
new file mode 100644
index 000000000..1c93a3ed2
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/Builder$ChildNodeIterator.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/Builder.class b/android/Fix My Street/org/apache/james/mime4j/field/address/Builder.class
new file mode 100644
index 000000000..8aeb2950f
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/Builder.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/DomainList.class b/android/Fix My Street/org/apache/james/mime4j/field/address/DomainList.class
new file mode 100644
index 000000000..dbca8a3e7
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/DomainList.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/Group.class b/android/Fix My Street/org/apache/james/mime4j/field/address/Group.class
new file mode 100644
index 000000000..29b7e653e
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/Group.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/Mailbox.class b/android/Fix My Street/org/apache/james/mime4j/field/address/Mailbox.class
new file mode 100644
index 000000000..44c5173f4
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/Mailbox.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/MailboxList.class b/android/Fix My Street/org/apache/james/mime4j/field/address/MailboxList.class
new file mode 100644
index 000000000..18b3441af
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/MailboxList.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/NamedMailbox.class b/android/Fix My Street/org/apache/james/mime4j/field/address/NamedMailbox.class
new file mode 100644
index 000000000..2ed485925
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/NamedMailbox.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.class
new file mode 100644
index 000000000..43efc23b3
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddress.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddress.class
new file mode 100644
index 000000000..cfc98ff52
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddress.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddress_list.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddress_list.class
new file mode 100644
index 000000000..8f5f3141b
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddress_list.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTangle_addr.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTangle_addr.class
new file mode 100644
index 000000000..e0cbff7d6
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTangle_addr.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTdomain.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTdomain.class
new file mode 100644
index 000000000..d29c6f316
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTdomain.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTgroup_body.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTgroup_body.class
new file mode 100644
index 000000000..340dc0e7d
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTgroup_body.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTlocal_part.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTlocal_part.class
new file mode 100644
index 000000000..57f346c4f
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTlocal_part.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTmailbox.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTmailbox.class
new file mode 100644
index 000000000..ab4a8552c
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTmailbox.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTname_addr.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTname_addr.class
new file mode 100644
index 000000000..71ab6fc85
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTname_addr.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTphrase.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTphrase.class
new file mode 100644
index 000000000..c48b5dcd9
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTphrase.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTroute.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTroute.class
new file mode 100644
index 000000000..6dd335ee9
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTroute.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$1.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$1.class
new file mode 100644
index 000000000..5f584514e
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$1.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$JJCalls.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$JJCalls.class
new file mode 100644
index 000000000..e38ef68cb
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$JJCalls.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$LookaheadSuccess.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$LookaheadSuccess.class
new file mode 100644
index 000000000..584c97273
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$LookaheadSuccess.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser.class
new file mode 100644
index 000000000..c2be19f11
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.class
new file mode 100644
index 000000000..6960771f9
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.class
new file mode 100644
index 000000000..63fcae477
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.class
new file mode 100644
index 000000000..efd4c49a0
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.class
new file mode 100644
index 000000000..2cd81bc1a
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/BaseNode.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/BaseNode.class
new file mode 100644
index 000000000..08716d149
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/BaseNode.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.class
new file mode 100644
index 000000000..798515dcb
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/Node.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/Node.class
new file mode 100644
index 000000000..cfdc5f004
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/Node.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ParseException.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ParseException.class
new file mode 100644
index 000000000..7c0c348fe
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ParseException.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/SimpleCharStream.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/SimpleCharStream.class
new file mode 100644
index 000000000..67f580123
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/SimpleCharStream.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/SimpleNode.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/SimpleNode.class
new file mode 100644
index 000000000..20e82bba6
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/SimpleNode.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/Token.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/Token.class
new file mode 100644
index 000000000..7eae4946b
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/Token.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/TokenMgrError.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/TokenMgrError.class
new file mode 100644
index 000000000..4bc1bb2af
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/TokenMgrError.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.class b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.class
new file mode 100644
index 000000000..5a3067ec7
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.class b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.class
new file mode 100644
index 000000000..bfa2a042f
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.class b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.class
new file mode 100644
index 000000000..6d5cde408
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ParseException.class b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ParseException.class
new file mode 100644
index 000000000..141a41b38
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ParseException.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.class b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.class
new file mode 100644
index 000000000..cd622603e
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/Token.class b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/Token.class
new file mode 100644
index 000000000..97aaf5918
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/Token.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.class b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.class
new file mode 100644
index 000000000..6c3838fa9
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/DateTime.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/DateTime.class
new file mode 100644
index 000000000..d0398f2e2
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/datetime/DateTime.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser$Date.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser$Date.class
new file mode 100644
index 000000000..412a96c4c
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser$Date.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser$Time.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser$Time.class
new file mode 100644
index 000000000..b855f8e1e
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser$Time.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.class
new file mode 100644
index 000000000..644a5d50a
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.class
new file mode 100644
index 000000000..1d1a34fa5
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.class
new file mode 100644
index 000000000..96b6aa700
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/ParseException.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/ParseException.class
new file mode 100644
index 000000000..be93f47b8
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/ParseException.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.class
new file mode 100644
index 000000000..69e3f5cf1
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/Token.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/Token.class
new file mode 100644
index 000000000..54bced209
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/Token.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.class
new file mode 100644
index 000000000..3bff6fd4d
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/message/AbstractBody.class b/android/Fix My Street/org/apache/james/mime4j/message/AbstractBody.class
new file mode 100644
index 000000000..4b1c1b45e
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/message/AbstractBody.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/message/BinaryBody.class b/android/Fix My Street/org/apache/james/mime4j/message/BinaryBody.class
new file mode 100644
index 000000000..9000994f3
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/message/BinaryBody.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/message/Body.class b/android/Fix My Street/org/apache/james/mime4j/message/Body.class
new file mode 100644
index 000000000..4bd9990de
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/message/Body.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/message/BodyPart.class b/android/Fix My Street/org/apache/james/mime4j/message/BodyPart.class
new file mode 100644
index 000000000..80a1077f6
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/message/BodyPart.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/message/Entity.class b/android/Fix My Street/org/apache/james/mime4j/message/Entity.class
new file mode 100644
index 000000000..310d68267
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/message/Entity.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/message/Header$1.class b/android/Fix My Street/org/apache/james/mime4j/message/Header$1.class
new file mode 100644
index 000000000..1d52d2f18
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/message/Header$1.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/message/Header.class b/android/Fix My Street/org/apache/james/mime4j/message/Header.class
new file mode 100644
index 000000000..31b897c91
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/message/Header.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/message/Message$MessageBuilder.class b/android/Fix My Street/org/apache/james/mime4j/message/Message$MessageBuilder.class
new file mode 100644
index 000000000..b00b138a2
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/message/Message$MessageBuilder.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/message/Message.class b/android/Fix My Street/org/apache/james/mime4j/message/Message.class
new file mode 100644
index 000000000..c504f0201
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/message/Message.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/message/Multipart.class b/android/Fix My Street/org/apache/james/mime4j/message/Multipart.class
new file mode 100644
index 000000000..4cc744305
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/message/Multipart.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/message/TempFileBinaryBody.class b/android/Fix My Street/org/apache/james/mime4j/message/TempFileBinaryBody.class
new file mode 100644
index 000000000..b385df159
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/message/TempFileBinaryBody.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/message/TempFileTextBody.class b/android/Fix My Street/org/apache/james/mime4j/message/TempFileTextBody.class
new file mode 100644
index 000000000..975cddc70
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/message/TempFileTextBody.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/message/TextBody.class b/android/Fix My Street/org/apache/james/mime4j/message/TextBody.class
new file mode 100644
index 000000000..f266ad9a7
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/message/TextBody.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil$1.class b/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil$1.class
new file mode 100644
index 000000000..caa0fe160
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil$1.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil$Charset.class b/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil$Charset.class
new file mode 100644
index 000000000..f20946ea1
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil$Charset.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil.class b/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil.class
new file mode 100644
index 000000000..0ec680f95
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/util/PartialInputStream.class b/android/Fix My Street/org/apache/james/mime4j/util/PartialInputStream.class
new file mode 100644
index 000000000..568c853d1
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/util/PartialInputStream.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/util/PositionInputStream.class b/android/Fix My Street/org/apache/james/mime4j/util/PositionInputStream.class
new file mode 100644
index 000000000..77af22099
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/util/PositionInputStream.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$1.class b/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$1.class
new file mode 100644
index 000000000..df1fbf828
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$1.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$SimpleTempFile.class b/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$SimpleTempFile.class
new file mode 100644
index 000000000..fc922ed69
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$SimpleTempFile.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$SimpleTempPath.class b/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$SimpleTempPath.class
new file mode 100644
index 000000000..774d48a41
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$SimpleTempPath.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage.class b/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage.class
new file mode 100644
index 000000000..cfaf30e14
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/util/TempFile.class b/android/Fix My Street/org/apache/james/mime4j/util/TempFile.class
new file mode 100644
index 000000000..c40108fe7
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/util/TempFile.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/util/TempPath.class b/android/Fix My Street/org/apache/james/mime4j/util/TempPath.class
new file mode 100644
index 000000000..c46f863b3
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/util/TempPath.class
Binary files differ
diff --git a/android/Fix My Street/org/apache/james/mime4j/util/TempStorage.class b/android/Fix My Street/org/apache/james/mime4j/util/TempStorage.class
new file mode 100644
index 000000000..d2f550191
--- /dev/null
+++ b/android/Fix My Street/org/apache/james/mime4j/util/TempStorage.class
Binary files differ
diff --git a/android/Fix My Street/res/drawable/add.png b/android/Fix My Street/res/drawable/add.png
new file mode 100644
index 000000000..96fe1015a
--- /dev/null
+++ b/android/Fix My Street/res/drawable/add.png
Binary files differ
diff --git a/android/Fix My Street/res/drawable/blue_filler.xml b/android/Fix My Street/res/drawable/blue_filler.xml
new file mode 100644
index 000000000..6e90b805f
--- /dev/null
+++ b/android/Fix My Street/res/drawable/blue_filler.xml
@@ -0,0 +1,3 @@
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+ android:src="@drawable/filler" android:tileMode="repeat" />
+
diff --git a/android/Fix My Street/res/drawable/done.png b/android/Fix My Street/res/drawable/done.png
new file mode 100644
index 000000000..256938f31
--- /dev/null
+++ b/android/Fix My Street/res/drawable/done.png
Binary files differ
diff --git a/android/Fix My Street/res/drawable/filler.png b/android/Fix My Street/res/drawable/filler.png
new file mode 100644
index 000000000..08df3be9b
--- /dev/null
+++ b/android/Fix My Street/res/drawable/filler.png
Binary files differ
diff --git a/android/Fix My Street/res/drawable/house_icon.png b/android/Fix My Street/res/drawable/house_icon.png
new file mode 100644
index 000000000..bc92d7790
--- /dev/null
+++ b/android/Fix My Street/res/drawable/house_icon.png
Binary files differ
diff --git a/android/Fix My Street/res/drawable/spacer.png b/android/Fix My Street/res/drawable/spacer.png
new file mode 100644
index 000000000..71a9f5598
--- /dev/null
+++ b/android/Fix My Street/res/drawable/spacer.png
Binary files differ
diff --git a/android/Fix My Street/res/drawable/street_background_smaller.png b/android/Fix My Street/res/drawable/street_background_smaller.png
new file mode 100644
index 000000000..1f37fc39e
--- /dev/null
+++ b/android/Fix My Street/res/drawable/street_background_smaller.png
Binary files differ
diff --git a/android/Fix My Street/res/layout/about.xml b/android/Fix My Street/res/layout/about.xml
new file mode 100644
index 000000000..d95ffa470
--- /dev/null
+++ b/android/Fix My Street/res/layout/about.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent" android:layout_height="fill_parent"
+ android:padding="0dip" android:fillViewport="true">
+
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:padding="0dip">
+
+ <TextView android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:text="What is Fix My Street?"
+ android:paddingBottom="5dip" android:paddingTop="5dip"
+ android:paddingLeft="5dip" android:paddingRight="5dip"
+ android:textStyle="bold" />
+
+ <TextView android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="Fix My Street helps you report problems in your local area - like potholes or broken streetlights - to your council."
+ android:paddingBottom="5dip" android:paddingLeft="5dip"
+ android:paddingRight="5dip" />
+
+ <TextView android:id="@+id/faq" android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="Fix My Street is mainly a website, run by mySociety, a project of a registered charity. For more information, see http://www.fixmystreet.com/faq."
+ android:paddingBottom="5dip" android:paddingLeft="5dip"
+ android:paddingRight="5dip" android:linksClickable="true" />
+
+
+ <TextView android:id="@+id/faq" android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="This application is version 0.8 of Fix My Street for Android, written as a volunteer project by Anna Powell-Smith."
+ android:paddingBottom="5dip" android:paddingLeft="5dip"
+ android:paddingRight="5dip" android:linksClickable="true" />
+
+ <TextView android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:text=" "
+ android:layout_weight="1" />
+
+ <ImageView android:layout_width="fill_parent" android:scaleType="centerCrop"
+ android:layout_gravity="bottom" android:layout_height="wrap_content"
+ android:src="@drawable/street_background_smaller"></ImageView>
+ </LinearLayout>
+
+</ScrollView> \ No newline at end of file
diff --git a/android/Fix My Street/res/layout/details.xml b/android/Fix My Street/res/layout/details.xml
new file mode 100644
index 000000000..6a5bbe9aa
--- /dev/null
+++ b/android/Fix My Street/res/layout/details.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent" android:layout_height="fill_parent"
+ android:fillViewport="true">
+
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:padding="0dip">
+
+ <!-- And a name -->
+ <TextView android:id="@+id/name_save" android:layout_width="fill_parent"
+ android:paddingTop="5dip" android:paddingLeft="5dip"
+ android:paddingRight="5dip" android:layout_height="wrap_content"
+ android:text="Short title for problem (you can add more later):" />
+
+ <!-- Subject -->
+
+ <LinearLayout android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:orientation="horizontal"
+ android:padding="5dip">
+ <TextView android:id="@+id/subject_label"
+ android:layout_width="80sp" android:layout_height="24sp"
+ android:text="Title:" />
+ <EditText android:id="@+id/subject_text"
+ android:layout_width="fill_parent" android:layout_height="40sp"
+ android:singleLine="True" android:capitalize="sentences" />
+ </LinearLayout>
+
+ <!-- And a name -->
+ <TextView android:id="@+id/name_save" android:layout_width="fill_parent"
+ android:paddingLeft="5dip" android:paddingRight="5dip"
+ android:layout_height="wrap_content" android:text="We'll save these for next time:" />
+
+ <LinearLayout android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:orientation="horizontal"
+ android:padding="5dip">
+ <TextView android:id="@+id/name_label" android:layout_width="80sp"
+ android:layout_height="24sp" android:text="Your name:" />
+ <EditText android:id="@+id/name_text" android:layout_width="fill_parent"
+ android:layout_height="40sp" android:singleLine="True"
+ android:capitalize="words" />
+ </LinearLayout>
+
+ <!-- An email address -->
+
+ <LinearLayout android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:orientation="horizontal"
+ android:padding="5dip">
+ <TextView android:id="@+id/email_label"
+ android:layout_width="80sp" android:layout_height="24sp"
+ android:text="Your email:" />
+ <EditText android:id="@+id/email_text" android:layout_width="fill_parent"
+ android:layout_height="40sp" android:singleLine="True"
+ android:capitalize="none" />
+ </LinearLayout>
+
+ <Button android:id="@+id/submit_button" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:text="Save details"
+ android:padding="5dip" />
+
+ <TextView android:layout_width="fill_parent"
+ android:layout_weight="1" android:layout_height="wrap_content"
+ android:text=" " />
+
+ <ImageView android:layout_width="fill_parent"
+ android:scaleType="centerCrop" android:layout_gravity="bottom"
+ android:layout_height="wrap_content" android:src="@drawable/street_background_smaller"></ImageView>
+ </LinearLayout>
+
+</ScrollView> \ No newline at end of file
diff --git a/android/Fix My Street/res/layout/help.xml b/android/Fix My Street/res/layout/help.xml
new file mode 100644
index 000000000..b14da6b1b
--- /dev/null
+++ b/android/Fix My Street/res/layout/help.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent" android:layout_height="fill_parent"
+ android:fillViewport="true">
+
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:padding="0dip"
+ android:scrollbars="vertical">
+
+ <TextView android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:text="What do I do?"
+ android:paddingBottom="5dip" android:paddingTop="5dip"
+ android:paddingLeft="5dip" android:paddingRight="5dip"
+ android:textStyle="bold" />
+
+ <TextView android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:text="@string/instructions"
+ android:paddingBottom="5dip" android:paddingLeft="5dip"
+ android:paddingRight="5dip" />
+
+ <TextView android:id="@+id/faq" android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="For any other questions, see http://www.fixmystreet.com/faq, or email anna@mysociety.org."
+ android:paddingBottom="5dip" android:paddingTop="5dip"
+ android:paddingLeft="5dip" android:paddingRight="5dip"
+ android:textStyle="bold" android:linksClickable="true" />
+
+ <TextView android:layout_width="fill_parent" android:layout_weight="1"
+ android:layout_height="wrap_content" android:text=" "
+ />
+
+ <ImageView android:layout_width="fill_parent" android:scaleType="centerCrop"
+ android:layout_gravity="bottom" android:layout_height="wrap_content"
+ android:src="@drawable/street_background_smaller"></ImageView>
+ </LinearLayout>
+</ScrollView> \ No newline at end of file
diff --git a/android/Fix My Street/res/layout/home.xml b/android/Fix My Street/res/layout/home.xml
new file mode 100644
index 000000000..6e661461b
--- /dev/null
+++ b/android/Fix My Street/res/layout/home.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent" android:layout_height="fill_parent"
+ android:fillViewport="true">
+
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:paddingTop="10dip">
+
+ <Button android:id="@+id/camera_button" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:text="Take photo"
+ android:drawableRight="@drawable/add" />
+
+ <Button android:id="@+id/details_button" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:text="Add details"
+ android:drawableRight="@drawable/add" android:paddingRight="10dip"
+ android:paddingLeft="10dip" />
+
+ <View android:layout_width="1dip" android:layout_height="10dip"
+ android:src="@drawable/spacer" />
+
+ <Button android:id="@+id/report_button" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:text="Report to Fix My Street"
+ android:paddingRight="10dip" android:paddingLeft="10dip" />
+ <TextView android:layout_width="fill_parent" android:layout_weight="1"
+ android:layout_height="wrap_content" android:text=" "
+ />
+
+ <ImageView android:id="@+id/background_image" android:scaleType="centerCrop"
+ android:layout_width="fill_parent" android:layout_gravity="bottom"
+ android:layout_height="wrap_content" android:src="@drawable/street_background_smaller"></ImageView>
+
+ </LinearLayout>
+
+</ScrollView> \ No newline at end of file
diff --git a/android/Fix My Street/res/layout/success.xml b/android/Fix My Street/res/layout/success.xml
new file mode 100644
index 000000000..a80283cef
--- /dev/null
+++ b/android/Fix My Street/res/layout/success.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent" android:layout_height="fill_parent"
+ android:fillViewport="true">
+
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:padding="0dip">
+
+ <!--
+ <Button android:id="@+id/about_button"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:text="About Fix My
+ Street" />
+ -->
+
+ <TextView android:id="@+id/hello_text" android:layout_width="fill_parent"
+ android:paddingBottom="5dip" android:paddingTop="5dip"
+ android:paddingLeft="5dip" android:paddingRight="5dip"
+ android:layout_height="wrap_content" android:text="Now check your email!"
+ android:textStyle="bold" />
+
+ <TextView android:id="@+id/hello_text" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:paddingBottom="5dip"
+ android:paddingTop="5dip" android:paddingLeft="5dip"
+ android:paddingRight="5dip"
+ android:text="You'll receive an email from us soon. Please click on the confirmation link, and provide a few more details." />
+
+ <TextView android:id="@+id/hello_text" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:paddingBottom="5dip"
+ android:paddingTop="5dip" android:paddingLeft="5dip"
+ android:paddingRight="5dip"
+ android:text="If the email doesn't arrive within a few hours, please check your spam folder - sometimes the emails can be marked as spam." />
+
+ <TextView android:layout_width="fill_parent" android:layout_weight="1"
+ android:layout_height="wrap_content" android:text=" "
+ />
+
+ <ImageView android:layout_width="fill_parent" android:scaleType="centerCrop"
+ android:layout_gravity="bottom" android:layout_height="wrap_content"
+ android:src="@drawable/street_background_smaller"></ImageView>
+ </LinearLayout>
+</ScrollView> \ No newline at end of file
diff --git a/android/Fix My Street/res/values/colors.xml b/android/Fix My Street/res/values/colors.xml
new file mode 100644
index 000000000..8f2f4dab3
--- /dev/null
+++ b/android/Fix My Street/res/values/colors.xml
@@ -0,0 +1,6 @@
+<resources>
+ <color name="transparent">#8f00</color>
+ <color name="sky_blue">#87CEFA</color>
+ <color name="translucent_blue">#3A95E6</color>
+<!-- #9DE0FF-->
+</resources> \ No newline at end of file
diff --git a/android/Fix My Street/res/values/strings.xml b/android/Fix My Street/res/values/strings.xml
new file mode 100644
index 000000000..78c16eecb
--- /dev/null
+++ b/android/Fix My Street/res/values/strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+<!-- Welcome screen -->
+ <string name="app_name">Fix My Street</string>
+ <string name="hello">Fix My Street</string>
+ <string name="confirm_location">Confirming location...</string>
+ <string name="confirm_location_done">Confirmed location</string>
+ <string name="take_a_picture">Take a picture of the problem</string>
+ <string name="details">Add details</string>
+ <string name="report">Report</string>
+ <string name="about">About Fix My Street</string>
+ <string name="close">Close</string>
+ <string name="imageUrl">Enter a URL here</string>
+<!-- Details screen -->
+ <string name="details_screen">Tell us about the problem (all fields required):</string>
+ <string name="submit">Submit</string>
+ <!-- About screen -->
+ <string name="instructions">1. Click \'Take photo\', then on the camera button to take a photo.\n2. Click \'Add details\', then give the problem a name (e.g. \'Broken street light\'), and add your own name and email address. \n3. Click \'Report\' to upload the problem to Fix My Street. \n4. Check your email. You\'ll need to click on a link to confirm the problem and add a few more details. </string>
+</resources>
diff --git a/android/Fix My Street/res/values/themes.xml b/android/Fix My Street/res/values/themes.xml
new file mode 100644
index 000000000..39584c6a9
--- /dev/null
+++ b/android/Fix My Street/res/values/themes.xml
@@ -0,0 +1,6 @@
+<resources>
+ <style name="Theme.Filler" parent="android:Theme">
+ <item name="android:windowBackground">@drawable/blue_filler</item>
+ <item name="android:textColor">#000000</item>
+ </style>
+</resources> \ No newline at end of file
diff --git a/android/Fix My Street/src/com/android/fixmystreet/About.java b/android/Fix My Street/src/com/android/fixmystreet/About.java
new file mode 100644
index 000000000..9ddffadf6
--- /dev/null
+++ b/android/Fix My Street/src/com/android/fixmystreet/About.java
@@ -0,0 +1,61 @@
+package com.android.fixmystreet;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.util.Linkify;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.widget.TextView;
+
+public class About extends Activity {
+
+ private Bundle extras = null;
+
+ @Override
+ protected void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ setContentView(R.layout.about);
+ extras = getIntent().getExtras();
+
+ // add links
+ TextView noteView = (TextView) findViewById(R.id.faq);
+ Linkify.addLinks(noteView, Linkify.ALL);
+ }
+
+ // ****************************************************
+ // Options menu functions
+ // ****************************************************
+
+ // TODO - add Bundles for these?
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ super.onCreateOptionsMenu(menu);
+ MenuItem homeItem = menu.add(0, 0, 0, "Home");
+ MenuItem aboutItem = menu.add(0, 1, 0, "Help");
+ aboutItem.setIcon(android.R.drawable.ic_menu_info_details);
+ homeItem.setIcon(android.R.drawable.ic_menu_edit);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case 0:
+ Intent i = new Intent(About.this, Home.class);
+ if (extras != null) {
+ i.putExtras(extras);
+ }
+ startActivity(i);
+ return true;
+ case 1:
+ Intent j = new Intent(About.this, Help.class);
+ if (extras != null) {
+ j.putExtras(extras);
+ }
+ startActivity(j);
+ return true;
+ }
+ return false;
+ }
+} \ No newline at end of file
diff --git a/android/Fix My Street/src/com/android/fixmystreet/Details.java b/android/Fix My Street/src/com/android/fixmystreet/Details.java
new file mode 100644
index 000000000..83c5cc78c
--- /dev/null
+++ b/android/Fix My Street/src/com/android/fixmystreet/Details.java
@@ -0,0 +1,249 @@
+// ********************************************************************************
+//details.java
+//This file is where most of the work of the application happens. It collects the
+//subject of the problem, plus the user's name and email, from the Android form.
+//It uploads them to FixMyStreet, and shows a success or failure message.
+//
+//********************************************************************************
+
+package com.android.fixmystreet;
+
+import java.util.regex.*;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+//import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.EditText;
+
+public class Details extends Activity {
+ private EditText nameET;
+ private EditText emailET;
+ private EditText subjectET;
+ String storedName;
+ String storedEmail;
+ private String subject;
+ private String name;
+ private String email;
+ private View submitButton;
+ //private static final String LOG_TAG = "Details";
+ public static final String PREFS_NAME = "FMS_Settings";
+ final int NAME_WARNING = 999;
+ final int SUBJECT_WARNING = 998;
+ final int EMAIL_WARNING = 997;
+ private Bundle extras;
+
+ /** Called when the activity is first created. */
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // set up the page
+ setContentView(R.layout.details);
+ nameET = (EditText) findViewById(R.id.name_text);
+ emailET = (EditText) findViewById(R.id.email_text);
+ subjectET = (EditText) findViewById(R.id.subject_text);
+ submitButton = this.findViewById(R.id.submit_button);
+
+ // set the button listeners
+ setListeners();
+
+ // fill in name/email, if already defined
+ // NB - from settings, rather than from bundle...
+ SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
+ name = settings.getString("myName", "");
+ email = settings.getString("myEmail", "");
+ nameET.setText(name);
+ emailET.setText(email);
+
+ extras = getIntent().getExtras();
+ if (extras != null) {
+ // Details extras
+ subject = extras.getString("subject");
+ }
+ if (subject != null) {
+ subjectET.setText(subject);
+ }
+ }
+
+ private void setListeners() {
+ // Save info and pass back to Home activity
+ submitButton.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+ subject = subjectET.getText().toString();
+ email = emailET.getText().toString();
+ name = nameET.getText().toString();
+ if (!textFieldsAreValid(subject)) {
+ showDialog(SUBJECT_WARNING);
+ } else if (!textFieldsAreValid(name)) {
+ showDialog(NAME_WARNING);
+ } else if (!isValidEmailAddress(email)) {
+ showDialog(EMAIL_WARNING);
+ } else {
+ if (true) {
+ Intent i = new Intent(Details.this, Home.class);
+ extras.putString("name", name);
+ extras.putString("email", email);
+ extras.putString("subject", subject);
+ i.putExtras(extras);
+ startActivity(i);
+ }
+ }
+ }
+ });
+ }
+
+ // **********************************************************************
+ // textFieldsAreValid: Make sure that fields aren't blank
+ // **********************************************************************
+ public static boolean textFieldsAreValid(String field) {
+ if (field == null || field.length() == 0 || field.trim().length() == 0) {
+ return false;
+ }
+ return true;
+ }
+
+ // **********************************************************************
+ // isValidEmailAddress: Check the email address is OK
+ // **********************************************************************
+ public static boolean isValidEmailAddress(String emailAddress) {
+ String emailRegEx;
+ Pattern pattern;
+ // Regex for a valid email address
+ emailRegEx = "^[A-Za-z0-9._%+\\-]+@[A-Za-z0-9.\\-]+\\.[A-Za-z]{2,4}$";
+ // Compare the regex with the email address
+ pattern = Pattern.compile(emailRegEx);
+ Matcher matcher = pattern.matcher(emailAddress);
+ if (!matcher.find()) {
+ return false;
+ }
+ return true;
+ }
+
+ // **********************************************************************
+ // onCreateDialog: Dialog warnings
+ // **********************************************************************
+ @Override
+ protected Dialog onCreateDialog(int id) {
+ switch (id) {
+ case SUBJECT_WARNING:
+ return new AlertDialog.Builder(Details.this).setTitle("Subject")
+ .setPositiveButton("OK",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog,
+ int whichButton) {
+ }
+ }).setMessage("Please enter a subject!").create();
+ case NAME_WARNING:
+ return new AlertDialog.Builder(Details.this)
+ .setTitle("Name")
+ .setPositiveButton("OK",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog,
+ int whichButton) {
+ }
+ })
+ .setMessage(
+ "Please enter your name. We'll remember it for next time.")
+ .create();
+
+ case EMAIL_WARNING:
+ return new AlertDialog.Builder(Details.this)
+ .setTitle("Email")
+ .setPositiveButton("OK",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog,
+ int whichButton) {
+ }
+ })
+ .setMessage(
+ "Please enter a valid email address. We'll remember it for next time.")
+ .create();
+
+ }
+ return null;
+ }
+
+ // Save user's name and email, if already defined
+ @Override
+ protected void onStop() {
+ super.onStop();
+
+ name = nameET.getText().toString();
+ email = emailET.getText().toString();
+
+ // Save user preferences
+ SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
+ SharedPreferences.Editor editor = settings.edit();
+ editor.putString("myName", name);
+ editor.putString("myEmail", email);
+
+ // Don't forget to commit your edits!!!
+ editor.commit();
+ }
+
+ // Look at this - is it working ok
+ // public boolean testProviders() {
+ // Log.e(LOG_TAG, "testProviders");
+ // // StringBuilder sb = new StringBuilder("Enabled Providers");
+ // // List<String> providers = locationmanager.getProviders(true);
+ // // for (String provider : providers) {
+ // // Log.e(LOG_TAG, "Provider = " + provider);
+ // // listener = new LocationListener() {
+ // // public void onLocationChanged(Location location) {
+ // // }
+ // //
+ // // public void onProviderDisabled(String provider) {
+ // // }
+ // //
+ // // public void onProviderEnabled(String provider) {
+ // // }
+ // //
+ // // public void onStatusChanged(String provider, int status,
+ // // Bundle extras) {
+ // // }
+ // // };
+ // //
+ // // locationmanager.requestLocationUpdates(provider, 0, 0, listener);
+ // //
+ // // sb.append("\n*").append(provider).append(": ");
+ // //
+ // // Location location = locationmanager.getLastKnownLocation(provider);
+ // //
+ // // if (location != null) {
+ // // latitude = location.getLatitude();
+ // // longitude = location.getLongitude();
+ // // latString = latitude.toString();
+ // // longString = longitude.toString();
+ // // Log.e(LOG_TAG, "Latitude = " + latString);
+ // // Log.e(LOG_TAG, "Longitude = " + longString);
+ // // if (provider == "gps") {
+ // // // Only bother with GPS if available
+ // // return true;
+ // // }
+ // // } else {
+ // // Log.e(LOG_TAG, "Location is null");
+ // // return false;
+ // // }
+ // // }
+ // // LocationManager lm = (LocationManager)
+ // // context.getSystemService(Context.LOCATION_SERVICE);
+ // //
+ // // Location loc = lm.getLastKnownLocation("gps");
+ // // if (loc == null)
+ // // {
+ // // locType = "Network";
+ // // loc = lm.getLastKnownLocation("network");
+ // // }
+ // //
+ // // textMsg.setText(sb);
+ //
+ // return true;
+ // }
+}
diff --git a/android/Fix My Street/src/com/android/fixmystreet/Help.java b/android/Fix My Street/src/com/android/fixmystreet/Help.java
new file mode 100644
index 000000000..3153ffe3c
--- /dev/null
+++ b/android/Fix My Street/src/com/android/fixmystreet/Help.java
@@ -0,0 +1,59 @@
+package com.android.fixmystreet;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.util.Linkify;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.widget.TextView;
+
+public class Help extends Activity {
+ private Bundle extras = null;
+
+ @Override
+ protected void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ extras = getIntent().getExtras();
+ setContentView(R.layout.help);
+ TextView noteView = (TextView) findViewById(R.id.faq);
+ Linkify.addLinks(noteView, Linkify.ALL);
+ }
+
+ // ****************************************************
+ // Options menu functions
+ // ****************************************************
+
+ // TODO - add Bundles for these?
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ super.onCreateOptionsMenu(menu);
+ MenuItem homeItem = menu.add(0, 0, 0, "Home");
+ MenuItem aboutItem = menu.add(0, 1, 0, "About");
+ homeItem.setIcon(android.R.drawable.ic_menu_edit);
+ aboutItem.setIcon(android.R.drawable.ic_menu_info_details);
+
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case 0:
+ Intent i = new Intent(Help.this, Home.class);
+ if (extras != null) {
+ i.putExtras(extras);
+ }
+ startActivity(i);
+ return true;
+ case 1:
+ Intent j = new Intent(Help.this, About.class);
+ if (extras != null) {
+ j.putExtras(extras);
+ }
+ startActivity(j);
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/android/Fix My Street/src/com/android/fixmystreet/Home.java b/android/Fix My Street/src/com/android/fixmystreet/Home.java
new file mode 100644
index 000000000..38875fd2b
--- /dev/null
+++ b/android/Fix My Street/src/com/android/fixmystreet/Home.java
@@ -0,0 +1,726 @@
+// **************************************************************************
+// Home.java
+// **************************************************************************
+package com.android.fixmystreet;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.methods.multipart.ByteArrayPartSource;
+import org.apache.commons.httpclient.methods.multipart.FilePart;
+import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
+import org.apache.commons.httpclient.methods.multipart.Part;
+import org.apache.commons.httpclient.methods.multipart.StringPart;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.ProgressDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.Handler;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.widget.Button;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.provider.MediaStore;
+import android.view.View;
+import android.view.View.OnClickListener;
+
+public class Home extends Activity {
+ // ****************************************************
+ // Local variables
+ // ****************************************************
+ //private static final String LOG_TAG = "Home";
+ private Button btnReport;
+ private Button btnDetails;
+ private Button btnPicture;
+ // Info that's been passed from other activities
+ private Boolean haveDetails = false;
+ private Boolean havePicture = false;
+ private String name = null;
+ private String email = null;
+ private String subject = null;
+ // Location info
+ LocationManager locationmanager;
+ LocationListener listener;
+ private Double latitude;
+ private Double longitude;
+ private String latString = "";
+ private String longString = "";
+ // hacky way of checking the results
+ private static int globalStatus = 13;
+ private static final int SUCCESS = 0;
+ private static final int LOCATION_NOT_FOUND = 1;
+ private static final int UPLOAD_ERROR = 2;
+ private static final int UPLOAD_ERROR_SERVER = 3;
+ private static final int LOCATION_NOT_ACCURATE = 4;
+ private static final int PHOTO_NOT_FOUND = 5;
+ private String serverResponse;
+ // Thread handling
+ ProgressDialog myProgressDialog = null;
+ private ProgressDialog pd;
+ final Handler mHandler = new Handler();
+ final Runnable mUpdateResults = new Runnable() {
+ public void run() {
+ pd.dismiss();
+ updateResultsInUi();
+ }
+ };
+ private Bundle extras;
+ //private Bitmap bmp = null;
+
+ // Called when the activity is first created
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ setContentView(R.layout.home);
+
+ testProviders();
+ // showDialog();
+
+ btnDetails = (Button) findViewById(R.id.details_button);
+ btnPicture = (Button) findViewById(R.id.camera_button);
+ btnReport = (Button) findViewById(R.id.report_button);
+ btnReport.setVisibility(View.GONE);
+
+ if (icicle != null) {
+ havePicture = icicle.getBoolean("photo");
+ }
+
+ extras = getIntent().getExtras();
+ checkBundle();
+ setListeners();
+ }
+
+ @Override
+ protected void onPause() {
+ //Log.d("onPause, havePicture = " + havePicture);
+ removeListeners();
+ saveState();
+ super.onPause();
+ }
+
+ @Override
+ protected void onStop() {
+ //Log.d(LOG_TAG, "onStop, havePicture = " + havePicture);
+ removeListeners();
+ super.onStop();
+ }
+
+ @Override
+ public void onRestart() {
+ //Log.d(LOG_TAG, "onRestart, havePicture = " + havePicture);
+ testProviders();
+ checkBundle();
+ super.onRestart();
+ }
+
+ // ****************************************************
+ // checkBundle - check the extras that have been passed
+ // is the user able to upload things yet, or not?
+ // ****************************************************
+ private void checkBundle() {
+ //Log.d(LOG_TAG, "checkBundle");
+
+ // Get the status icons...
+ Resources res = getResources();
+ Drawable checked = res.getDrawable(R.drawable.done);
+
+ if (extras != null) {
+ // Details extras
+ name = extras.getString("name");
+ email = extras.getString("email");
+ subject = extras.getString("subject");
+ havePicture = extras.getBoolean("photo");
+
+ // Do we have the details?
+ if ((name != null) && (email != null) && (subject != null)) {
+ haveDetails = true;
+ //Log.d(LOG_TAG, "Have all details");
+ checked.setBounds(0, 0, checked.getIntrinsicWidth(), checked
+ .getIntrinsicHeight());
+ // envelope.setBounds(0, 0, envelope.getIntrinsicWidth(),
+ // envelope
+ // .getIntrinsicHeight());
+ btnDetails.setText("Details added: '" + subject + "'");
+ btnDetails.setCompoundDrawables(null, null, checked, null);
+ } else {
+ //Log.d(LOG_TAG, "Don't have details");
+ }
+ } else {
+ extras = new Bundle();
+ //Log.d(LOG_TAG, "no Bundle at all");
+ }
+ //Log.d(LOG_TAG, "havePicture = " + havePicture);
+
+ // Do we have the photo?
+ if (havePicture) {
+
+ checked.setBounds(0, 0, checked.getIntrinsicWidth(), checked
+ .getIntrinsicHeight());
+ // camera.setBounds(0, 0, camera.getIntrinsicWidth(), camera
+ // .getIntrinsicHeight());
+ btnPicture.setCompoundDrawables(null, null, checked, null);
+ btnPicture.setText("Photo taken");
+ // code for if we wanted to show a thumbnail - works but crashes
+ // ImageView iv = (ImageView) findViewById(R.id.thumbnail);
+ // try {
+ // Log.d(LOG_TAG, "Trying to look for FMS photo");
+ // FileInputStream fstream = null;
+ // fstream = new FileInputStream(Environment
+ // .getExternalStorageDirectory()
+ // + "/" + "FMS_photo.jpg");
+ // Log.d("Looking for file at ", Environment
+ // .getExternalStorageDirectory()
+ // + "/" + "FMS_photo.jpg");
+ // bmp = BitmapFactory.decodeStream(fstream);
+ // // bmp = BitmapFactory
+ // // .decodeStream(openFileInput("FMS_photo.jpg"));
+ // iv.setImageBitmap(bmp);
+ // System.gc();
+ // } catch (FileNotFoundException e) {
+ // // TODO Auto-generated catch block
+ // Log.d(LOG_TAG, "FMS photo not found");
+ // e.printStackTrace();
+ // }
+ }
+
+ // We have details and photo - show the Report button
+ if (haveDetails && havePicture) {
+ btnReport.setVisibility(View.VISIBLE);
+ }
+ }
+
+ // ****************************************************
+ // setListeners - set the button listeners
+ // ****************************************************
+
+ private void setListeners() {
+ btnDetails.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+ Intent i = new Intent(Home.this, Details.class);
+ extras.putString("name", name);
+ extras.putString("email", email);
+ extras.putString("subject", subject);
+ i.putExtras(extras);
+ startActivity(i);
+ }
+ });
+ btnPicture.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+ File photo = new File(
+ Environment.getExternalStorageDirectory(),
+ "FMS_photo.jpg");
+ if (photo.exists()) {
+ photo.delete();
+ }
+ Intent imageCaptureIntent = new Intent(
+ MediaStore.ACTION_IMAGE_CAPTURE);
+ imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri
+ .fromFile(photo));
+ startActivityForResult(imageCaptureIntent, 1);
+ }
+ });
+ btnReport.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+ uploadToFMS();
+ }
+ });
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ //Log.d(LOG_TAG, "onActivityResult");
+ //Log.d(LOG_TAG, "Activity.RESULT_OK code = " + Activity.RESULT_OK);
+ //Log.d(LOG_TAG, "resultCode = " + resultCode + "requestCode = "
+ // + requestCode);
+ if (resultCode == Activity.RESULT_OK && requestCode == 1) {
+ havePicture = true;
+ extras.putBoolean("photo", true);
+ }
+ //testProviders();
+ //Log.d(LOG_TAG, "havePicture = " + havePicture.toString());
+ }
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ //Log.d(LOG_TAG, "onSaveInstanceState");
+ if (havePicture != null) {
+ // Log.d(LOG_TAG, "mRowId = " + mRowId);
+ outState.putBoolean("photo", havePicture);
+ }
+ // if (name != null) {
+ // // Log.d(LOG_TAG, "mRowId = " + mRowId);
+ // outState.putString("name", name);
+ // }
+ // if (email != null) {
+ // // Log.d(LOG_TAG, "mRowId = " + mRowId);
+ // outState.putString("email", email);
+ // }
+ // if (subject != null) {
+ // // Log.d(LOG_TAG, "mRowId = " + mRowId);
+ // outState.putString("subject", subject);
+ // }
+ }
+
+ // TODO - save bits and pieces here
+ private void saveState() {
+ // Log.d(LOG_TAG, "saveState");
+ // String body = mBodyText.getText().toString();
+ // String title = mTitleText.getText().toString();
+ // // Log.d(LOG_TAG, "title valid");
+ // if (mRowId == null) {
+ // // Log.d(LOG_TAG, "mRowId = null, creating note");
+ // long id = mDbHelper.createNote(body, title);
+ // if (id > 0) {
+ // mRowId = id;
+ // // Log.d(LOG_TAG, "Set mRowId to " + mRowId);
+ // }
+ // } else {
+ // // Log.d(LOG_TAG, "mRowId = " + mRowId + ", updating note");
+ // mDbHelper.updateNote(mRowId, body, title);
+ // }
+ }
+
+ // **********************************************************************
+ // uploadToFMS: uploads details, handled via a background thread
+ // Also checks the age and accuracy of the GPS data first
+ // **********************************************************************
+ private void uploadToFMS() {
+ //Log.d(LOG_TAG, "uploadToFMS");
+ pd = ProgressDialog
+ .show(
+ this,
+ "Uploading, please wait...",
+ "Uploading. This can take up to a minute, depending on your connection speed. Please be patient!",
+ true, false);
+ Thread t = new Thread() {
+ public void run() {
+ doUploadinBackground();
+ mHandler.post(mUpdateResults);
+ }
+ };
+ t.start();
+ }
+
+ private void updateResultsInUi() {
+ if (globalStatus == UPLOAD_ERROR) {
+ showDialog(UPLOAD_ERROR);
+ } else if (globalStatus == UPLOAD_ERROR_SERVER) {
+ showDialog(UPLOAD_ERROR_SERVER);
+ } else if (globalStatus == LOCATION_NOT_FOUND) {
+ showDialog(LOCATION_NOT_FOUND);
+ } else if (globalStatus == PHOTO_NOT_FOUND) {
+ showDialog(PHOTO_NOT_FOUND);
+ } else if (globalStatus == LOCATION_NOT_ACCURATE) {
+ showDialog(LOCATION_NOT_ACCURATE);
+ } else {
+ // Success! - Proceed to the success activity!
+ Intent i = new Intent(Home.this, Success.class);
+ i.putExtra("latString", latString);
+ i.putExtra("lonString", longString);
+ startActivity(i);
+ }
+ }
+
+ // **********************************************************************
+ // onCreateDialog: Dialog warnings
+ // **********************************************************************
+ @Override
+ protected Dialog onCreateDialog(int id) {
+ switch (id) {
+ case UPLOAD_ERROR:
+ return new AlertDialog.Builder(Home.this)
+ .setTitle("Upload error")
+ .setPositiveButton("OK",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog,
+ int whichButton) {
+ }
+ })
+ .setMessage(
+ "Sorry, there was an error uploading - maybe the network connection is down? Please try again later.")
+ .create();
+ case UPLOAD_ERROR_SERVER:
+ return new AlertDialog.Builder(Home.this)
+ .setTitle("Upload error")
+ .setPositiveButton("OK",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog,
+ int whichButton) {
+ }
+ })
+ .setMessage(
+ "Sorry, there was an error uploading. Please try again later. The server response was: "
+ + serverResponse).create();
+ case LOCATION_NOT_FOUND:
+ return new AlertDialog.Builder(Home.this)
+ .setTitle("GPS problem")
+ .setPositiveButton("OK",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog,
+ int whichButton) {
+ }
+ })
+ .setMessage(
+ "Could not get location! Can you see the sky? Please try again later.")
+ .create();
+ case PHOTO_NOT_FOUND:
+ return new AlertDialog.Builder(Home.this).setTitle("No photo")
+ .setPositiveButton("OK",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog,
+ int whichButton) {
+ }
+ }).setMessage("Photo not found!").create();
+ case LOCATION_NOT_ACCURATE:
+ return new AlertDialog.Builder(Home.this)
+ .setTitle("GPS problem")
+ .setPositiveButton("OK",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog,
+ int whichButton) {
+ }
+ })
+ .setMessage(
+ "Sorry, your GPS location is not accurate enough. Can you see the sky?")
+ .create();
+ }
+ return null;
+ }
+
+ // **********************************************************************
+ // doUploadinBackground: POST request to FixMyStreet
+ // **********************************************************************
+ private boolean doUploadinBackground() {
+ //Log.d(LOG_TAG, "doUploadinBackground");
+
+ String responseString = null;
+ PostMethod method;
+
+ // DefaultHttpClient httpClient;
+ // HttpPost httpPost;
+ // HttpResponse response;
+ // HttpEntity entity;
+ // UrlEncodedFormEntity urlentity;
+ // // get the photo data from the URI
+ // // Uri uri = (Uri) content.getParcelable("URI");
+ // Context context = getApplicationContext();
+ // ContentResolver cR = context.getContentResolver();
+ //
+ // // Get the type of the file
+ // MimeTypeMap mime = MimeTypeMap.getSingleton();
+ // String type = mime.getExtensionFromMimeType(cR.getType(uri));
+ //
+ // // Get the InputStream
+ // InputStream in = null;
+ //
+ // try {
+ // in = cR.openInputStream(uri);
+ // } catch (FileNotFoundException e) {
+ // // TODO Auto-generated catch block
+ // e.printStackTrace();
+ // }
+ //
+ // if (in == null) {
+ // globalStatus = PHOTO_NOT_FOUND;
+ // return false;
+ // }
+ //
+ // // Setting the InputStream Body
+ // InputStreamBody body = new InputStreamBody(in, "image." + type);
+
+ // TODO - check location updates
+ Location location = locationmanager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+
+ if (location != null) {
+ // TODO - put back in
+ long currentTime = System.currentTimeMillis();
+ long gpsTime = location.getTime();
+ long timeDiffSecs = (currentTime - gpsTime) / 1000;
+ //Log.e(LOG_TAG, "Location accuracy = " + location.getAccuracy());
+ //Log.e(LOG_TAG, "Location age = " + timeDiffSecs);
+ if ((location.getAccuracy() > 150) || (timeDiffSecs > 15)) {
+ //Log.e(LOG_TAG, "Location not accurate");
+ globalStatus = LOCATION_NOT_ACCURATE;
+ return false;
+ }
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+ latString = latitude.toString();
+ longString = longitude.toString();
+ //Log.e(LOG_TAG, "Latitude = " + latString);
+ //Log.e(LOG_TAG, "Longitude = " + longString);
+ } else {
+ //Log.e(LOG_TAG, "Location is null");
+ globalStatus = LOCATION_NOT_FOUND;
+ return false;
+ }
+
+ // TEMP - testing
+ // latString = "51.5";
+ // longString = "-0.116667";
+
+ method = new PostMethod("http://www.fixmystreet.com/import");
+
+ try {
+
+ // Bitmap bitmap;
+ // ByteArrayOutputStream imageByteStream;
+ byte[] imageByteArray = null;
+ // ByteArrayPartSource fileSource;
+
+ HttpClient client = new HttpClient();
+ client.getHttpConnectionManager().getParams().setConnectionTimeout(
+ 100000);
+
+ // InputStream in =
+ // this.getResources().openRawResource(R.drawable.tom);
+ // bitmap = android.provider.MediaStore.Images.Media.getBitmap(
+ // getContentResolver(), uri);
+ // imageByteStream = new ByteArrayOutputStream();
+
+ // if (bitmap == null) {
+ // Log.d(LOG_TAG, "No bitmap");
+ // }
+
+ // Compress bmp to jpg, write to the bytes output stream
+ // bitmap.compress(Bitmap.CompressFormat.JPEG, 80, imageByteStream);
+
+ // Turn the byte stream into a byte array, write to imageData
+ // imageByteArray = imageByteStream.toByteArray();
+
+ File f = new File(Environment.getExternalStorageDirectory(),
+ "FMS_photo.jpg");
+
+ // TODO - add a check here
+ if (!f.exists()) {
+ }
+ imageByteArray = getBytesFromFile(f);
+
+// Log
+// .d(LOG_TAG, "len of data is " + imageByteArray.length
+// + " bytes");
+
+ // fileSource = new ByteArrayPartSource("photo", imageData);
+ FilePart photo = new FilePart("photo", new ByteArrayPartSource(
+ "photo", imageByteArray));
+
+ photo.setContentType("image/jpeg");
+ photo.setCharSet(null);
+
+ Part[] parts = { new StringPart("service", "your Android phone"),
+ new StringPart("subject", subject),
+ new StringPart("name", name),
+ new StringPart("email", email),
+ new StringPart("lat", latString),
+ new StringPart("lon", longString), photo };
+
+ method.setRequestEntity(new MultipartRequestEntity(parts, method
+ .getParams()));
+
+ client.executeMethod(method);
+ responseString = method.getResponseBodyAsString();
+ method.releaseConnection();
+
+ Log.e("httpPost", "Response status: " + responseString);
+ Log.e("httpPost", "Latitude = " + latString + " and Longitude = "
+ + longString);
+
+ // textMsg.setText("Bitmap (bitmap) = " + bitmap.toString()
+ // + " AND imageByteArray (byte[]) = "
+ // + imageByteArray.toString()
+ // + " AND imageByteStream (bytearrayoutputstream) = "
+ // + imageByteStream.toString());
+
+ } catch (Exception ex) {
+ //Log.v(LOG_TAG, "Exception", ex);
+ globalStatus = UPLOAD_ERROR;
+ serverResponse = "";
+ return false;
+ } finally {
+ method.releaseConnection();
+ }
+
+ if (responseString.equals("SUCCESS")) {
+ // launch the Success page
+ globalStatus = SUCCESS;
+ return true;
+ } else {
+ // print the response string?
+ serverResponse = responseString;
+ globalStatus = UPLOAD_ERROR;
+ return false;
+ }
+ }
+
+ public void testProviders() {
+ //Log.e(LOG_TAG, "testProviders");
+ // Register for location listener
+ String location_context = Context.LOCATION_SERVICE;
+ locationmanager = (LocationManager) getSystemService(location_context);
+ // StringBuilder sb = new StringBuilder("Enabled Providers");
+ // List<String> providers = locationmanager.getProviders(true);
+ // for (String provider : providers) {
+ listener = new LocationListener() {
+ public void onLocationChanged(Location location) {
+ }
+
+ public void onProviderDisabled(String provider) {
+ }
+
+ public void onProviderEnabled(String provider) {
+ }
+
+ public void onStatusChanged(String provider, int status,
+ Bundle extras) {
+ }
+ };
+ locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
+ 0, listener);
+ if (!locationmanager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
+ buildAlertMessageNoGps();
+ }
+ }
+
+ private void buildAlertMessageNoGps() {
+ final AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder
+ .setMessage(
+ "Your GPS seems to be disabled. Do you want to turn it on now?")
+ .setCancelable(false).setPositiveButton("Yes",
+ new DialogInterface.OnClickListener() {
+ public void onClick(
+ @SuppressWarnings("unused") final DialogInterface dialog,
+ @SuppressWarnings("unused") final int id) {
+ Intent j = new Intent();
+ j
+ .setAction("android.settings.LOCATION_SOURCE_SETTINGS");
+ startActivity(j);
+ }
+ }).setNegativeButton("No",
+ new DialogInterface.OnClickListener() {
+ public void onClick(final DialogInterface dialog,
+ @SuppressWarnings("unused") final int id) {
+ dialog.cancel();
+ }
+ });
+ final AlertDialog alert = builder.create();
+ alert.show();
+ }
+
+ public void removeListeners() {
+ //Log.e(LOG_TAG, "removeListeners");
+ if (locationmanager != null) {
+ locationmanager.removeUpdates(listener);
+ }
+ locationmanager = null;
+ //Log.d(LOG_TAG, "Removed " + listener.toString());
+ }
+
+ // ****************************************************
+ // Options menu functions
+ // ****************************************************
+
+ // TODO - add Bundles for these?
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ super.onCreateOptionsMenu(menu);
+ MenuItem helpItem = menu.add(0, 0, 0, "Help");
+ MenuItem aboutItem = menu.add(0, 1, 0, "About");
+ aboutItem.setIcon(android.R.drawable.ic_menu_info_details);
+ helpItem.setIcon(android.R.drawable.ic_menu_help);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case 0:
+ Intent i = new Intent(Home.this, Help.class);
+ if (extras != null) {
+ i.putExtras(extras);
+ }
+ startActivity(i);
+ return true;
+ case 1:
+ Intent j = new Intent(Home.this, About.class);
+ if (extras != null) {
+ j.putExtras(extras);
+ }
+ startActivity(j);
+ return true;
+ }
+ return false;
+ }
+
+ // read the photo file into a byte array...
+ public static byte[] getBytesFromFile(File file) throws IOException {
+ InputStream is = new FileInputStream(file);
+
+ // Get the size of the file
+ long length = file.length();
+
+ // You cannot create an array using a long type.
+ // It needs to be an int type.
+ // Before converting to an int type, check
+ // to ensure that file is not larger than Integer.MAX_VALUE.
+ if (length > Integer.MAX_VALUE) {
+ // File is too large
+ }
+
+ // Bitmap bitmap;
+ // ByteArrayOutputStream imageByteStream;
+ // byte[] imageByteArray = null;
+
+ // InputStream in =
+ // this.getResources().openRawResource(R.drawable.tom);
+ // bitmap = android.provider.MediaStore.Images.Media.getBitmap(
+ // getContentResolver(), uri);
+ // imageByteStream = new ByteArrayOutputStream();
+
+ // Compress bmp to jpg, write to the bytes output stream
+ // bitmap.compress(Bitmap.CompressFormat.JPEG, 80, imageByteStream);
+
+ // Turn the byte stream into a byte array, write to imageData
+ // imageByteArray = imageByteStream.toByteArray();
+
+ // Create the byte array to hold the data
+ byte[] bytes = new byte[(int) length];
+
+ // Read in the bytes
+ int offset = 0;
+ int numRead = 0;
+ while (offset < bytes.length
+ && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
+ offset += numRead;
+ }
+
+ // Ensure all the bytes have been read in
+ if (offset < bytes.length) {
+ throw new IOException("Could not completely read file "
+ + file.getName());
+ }
+
+ // Close the input stream and return bytes
+ is.close();
+ return bytes;
+ }
+}
diff --git a/android/Fix My Street/src/com/android/fixmystreet/R.java b/android/Fix My Street/src/com/android/fixmystreet/R.java
new file mode 100644
index 000000000..54fde9562
--- /dev/null
+++ b/android/Fix My Street/src/com/android/fixmystreet/R.java
@@ -0,0 +1,74 @@
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found. It
+ * should not be modified by hand.
+ */
+
+package com.android.fixmystreet;
+
+public final class R {
+ public static final class attr {
+ }
+ public static final class color {
+ public static final int sky_blue=0x7f040001;
+ public static final int translucent_blue=0x7f040002;
+ public static final int transparent=0x7f040000;
+ }
+ public static final class drawable {
+ public static final int add=0x7f020000;
+ public static final int blue_filler=0x7f020001;
+ public static final int done=0x7f020002;
+ public static final int filler=0x7f020003;
+ public static final int house_icon=0x7f020004;
+ public static final int spacer=0x7f020005;
+ public static final int street_background_smaller=0x7f020006;
+ }
+ public static final class id {
+ public static final int background_image=0x7f07000c;
+ public static final int camera_button=0x7f070009;
+ public static final int details_button=0x7f07000a;
+ public static final int email_label=0x7f070006;
+ public static final int email_text=0x7f070007;
+ public static final int faq=0x7f070000;
+ public static final int hello_text=0x7f07000d;
+ public static final int name_label=0x7f070004;
+ public static final int name_save=0x7f070001;
+ public static final int name_text=0x7f070005;
+ public static final int report_button=0x7f07000b;
+ public static final int subject_label=0x7f070002;
+ public static final int subject_text=0x7f070003;
+ public static final int submit_button=0x7f070008;
+ }
+ public static final class layout {
+ public static final int about=0x7f030000;
+ public static final int details=0x7f030001;
+ public static final int help=0x7f030002;
+ public static final int home=0x7f030003;
+ public static final int success=0x7f030004;
+ }
+ public static final class string {
+ public static final int about=0x7f050007;
+ /** Welcome screen
+ */
+ public static final int app_name=0x7f050000;
+ public static final int close=0x7f050008;
+ public static final int confirm_location=0x7f050002;
+ public static final int confirm_location_done=0x7f050003;
+ public static final int details=0x7f050005;
+ /** Details screen
+ */
+ public static final int details_screen=0x7f05000a;
+ public static final int hello=0x7f050001;
+ public static final int imageUrl=0x7f050009;
+ /** About screen
+ */
+ public static final int instructions=0x7f05000c;
+ public static final int report=0x7f050006;
+ public static final int submit=0x7f05000b;
+ public static final int take_a_picture=0x7f050004;
+ }
+ public static final class style {
+ public static final int Theme_Filler=0x7f060000;
+ }
+}
diff --git a/android/Fix My Street/src/com/android/fixmystreet/Settings.java b/android/Fix My Street/src/com/android/fixmystreet/Settings.java
new file mode 100644
index 000000000..1c3e8df90
--- /dev/null
+++ b/android/Fix My Street/src/com/android/fixmystreet/Settings.java
@@ -0,0 +1,33 @@
+package com.android.fixmystreet;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.content.SharedPreferences;
+
+public class Settings extends Activity {
+ public static final String PREFS_NAME = "Settings";
+
+
+ @Override
+ protected void onCreate(Bundle state){
+ super.onCreate(state);
+ }
+
+ @Override
+ protected void onStop(){
+ super.onStop();
+
+ String name = "";
+ String email = "";
+
+ // Save user preferences. We need an Editor object to
+ // make changes. All objects are from android.context.Context
+ SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
+ SharedPreferences.Editor editor = settings.edit();
+ editor.putString("myName", name);
+ editor.putString("myEmail", email);
+
+ // Don't forget to commit your edits!!!
+ editor.commit();
+ }
+ }
diff --git a/android/Fix My Street/src/com/android/fixmystreet/Stored.java b/android/Fix My Street/src/com/android/fixmystreet/Stored.java
new file mode 100644
index 000000000..db83c905f
--- /dev/null
+++ b/android/Fix My Street/src/com/android/fixmystreet/Stored.java
@@ -0,0 +1,32 @@
+package com.android.fixmystreet;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceManager;
+
+public class Stored extends PreferenceActivity {
+ // Option names and default values
+ private static final String OPT_EMAIL = "email";
+ private static final boolean OPT_EMAIL_DEF = true;
+ private static final String OPT_NAME = "name";
+ private static final boolean OPT_NAME_DEF = true;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ // addPreferencesFromResource(R.xml.settings);
+ }
+
+ // Get email, if stored
+ public static boolean getEmail(Context context) {
+ return PreferenceManager.getDefaultSharedPreferences(context)
+ .getBoolean(OPT_EMAIL, OPT_EMAIL_DEF);
+ }
+
+ // Get name, if stored
+ public static boolean getName(Context context) {
+ return PreferenceManager.getDefaultSharedPreferences(context)
+ .getBoolean(OPT_NAME, OPT_NAME_DEF);
+ }
+} \ No newline at end of file
diff --git a/android/Fix My Street/src/com/android/fixmystreet/Success.java b/android/Fix My Street/src/com/android/fixmystreet/Success.java
new file mode 100644
index 000000000..ca3dcee77
--- /dev/null
+++ b/android/Fix My Street/src/com/android/fixmystreet/Success.java
@@ -0,0 +1,57 @@
+//*************************************************************
+//
+//*************************************************************
+
+package com.android.fixmystreet;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+//import android.util.Log;
+import android.view.KeyEvent;
+import android.view.Menu;
+import android.view.MenuItem;
+
+public class Success extends Activity {
+
+ //private static final String LOG_TAG = "Success";
+
+ /** Called when the activity is first created. */
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.success);
+ }
+
+ // ****************************************************
+ // Options menu functions
+ // ****************************************************
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ super.onCreateOptionsMenu(menu);
+ MenuItem helpItem = menu.add(0, 0, 0, "Home");
+ helpItem.setIcon(android.R.drawable.ic_menu_edit);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case 0:
+ Intent i = new Intent(Success.this, Home.class);
+ startActivity(i);
+ return true;
+ }
+ return false;
+ }
+
+ // disable the Back key in case things get submitted twice
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ return true;
+ }
+ return false;
+ }
+
+} \ No newline at end of file