diff --git a/.travis.yml b/.travis.yml index 50120bf..7f1b4e2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,30 +1,27 @@ + +sudo: false language: android -jdk: oraclejdk7 +jdk: oraclejdk8 android: components: - # Uncomment the lines below if you want to - # use the latest revision of Android SDK Tools - # - platform-tools - # - tools - # The BuildTools version used by your project - - build-tools-19.1.0 + - build-tools-23.0.1 # The SDK version used to compile your project - - android-19 + - android-23 # Additional components - extra-google-google_play_services - extra-google-m2repository - extra-android-m2repository - - addon-google_apis-google-19 + - addon-google_apis-google-23 # Specify at least one system image, # if you need to run emulator(s) during your tests # - sys-img-armeabi-v7a-android-19 script: - - echo "Assembling..." + - echo "It's morphin' time!" - chmod +x ./gradlew - - ./gradlew :soup:clean :soup:test + - ./gradlew check --daemon --info diff --git a/build.gradle b/build.gradle index e8a01cb..79cfa9f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,15 +1,23 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { - mavenCentral() + jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:0.12.2' - classpath 'org.robolectric:robolectric-gradle-plugin:0.12.0' + classpath 'com.android.tools.build:gradle:1.3.0' + classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' + } +} +allprojects { + repositories { + jcenter() } } +task clean(type: Delete) { + delete rootProject.buildDir +} + // File: build.gradle println """\ Welcome to Gradle $gradle.gradleVersion - http://www.gradle.org diff --git a/foursquare-android-oauth b/foursquare-android-oauth index 60edada..f6aeff5 160000 --- a/foursquare-android-oauth +++ b/foursquare-android-oauth @@ -1 +1 @@ -Subproject commit 60edadaac998fd2822afc2ee0d50207fb580a00d +Subproject commit f6aeff5add72464b1a836c9281c8d54167c09d88 diff --git a/gradle.properties b/gradle.properties index 6bd9440..4500f04 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,6 +17,6 @@ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -DEBUG_STORE_FILE=../../../../../.android/debug.keystore -RELEASE_STORE_FILE=../../../../../dropbox/dev/project resources/my-release-key.keystore +DEBUG_STORE_FILE=~/.android/debug.keystore +RELEASE_STORE_FILE=~/release.keystore RELEASE_KEY_ALIAS=soup \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 36f5bae..4c7a11a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Jul 06 22:41:28 MST 2014 +#Tue Nov 10 11:29:15 MST 2015 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip diff --git a/soup-pro/build.gradle b/soup-pro/build.gradle index c4f60c9..7c98861 100644 --- a/soup-pro/build.gradle +++ b/soup-pro/build.gradle @@ -1,70 +1,30 @@ -gradle.taskGraph.whenReady { taskGraph -> - if(taskGraph.hasTask(':app:assembleRelease')) { - // Only execute when we are trying to assemble a release build - def pass = System.console() != null ? System.console().readPassword("\nPlease enter store passphrase: ") : "" - // readPassword returns a char[] so we need to wrap it into a string, because that's - // most likely what you need - pass = new String(pass) - // Use the pass variable here (so set signing configs here) - android.signingConfigs.release.storePassword = pass - - def pass2 = System.console() != null ? System.console().readPassword("\nPlease enter key passphrase: ") : "" - // readPassword returns a char[] so we need to wrap it into a string, because that's - // most likely what you need - pass2 = new String(pass2) - android.signingConfigs.release.keyPassword = pass2 - } -} - apply plugin: 'com.android.application' android { - compileSdkVersion 19 - buildToolsVersion '20' + compileSdkVersion 23 + buildToolsVersion '23.0.1' defaultConfig { - minSdkVersion 9 - targetSdkVersion 19 + minSdkVersion 14 + targetSdkVersion 23 versionCode 3 versionName "1.2" } - signingConfigs { - debugSigning { - storeFile file(DEBUG_STORE_FILE) - storePassword "android" - keyAlias "androiddebugkey" - keyPassword "android" - } - - releaseSigning { - storeFile file(RELEASE_STORE_FILE) - storePassword "" - keyAlias RELEASE_KEY_ALIAS - keyPassword "" - } - } - buildTypes { debug { - zipAlign true - debuggable true - runProguard false + minifyEnabled false applicationIdSuffix ".debug" versionNameSuffix "-debug" - signingConfig signingConfigs.debugSigning } release { - zipAlign true - debuggable false - runProguard false + minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' - signingConfig signingConfigs.releaseSigning } } } dependencies { - compile 'com.android.support:support-v4:19.+' + compile 'com.android.support:support-v4:23.1.0' } \ No newline at end of file diff --git a/soup-pro/soup-pro.iml b/soup-pro/soup-pro.iml deleted file mode 100644 index f8c6a2f..0000000 --- a/soup-pro/soup-pro.iml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soup/build.gradle b/soup/build.gradle index c3a0d16..151b1b1 100644 --- a/soup/build.gradle +++ b/soup/build.gradle @@ -1,175 +1,79 @@ -gradle.taskGraph.whenReady { taskGraph -> - if(taskGraph.hasTask(':soup:assembleRelease')) { - // Only execute when we are trying to assemble a release build - def pass = System.console() != null ? System.console().readPassword("\nPlease enter store passphrase: ") : "" - // readPassword returns a char[] so we need to wrap it into a string, because that's - // most likely what you need - pass = new String(pass) - // Use the pass variable here (so set signing configs here) - android.signingConfigs.release.storePassword = pass - - def pass2 = System.console() != null ? System.console().readPassword("\nPlease enter key passphrase: ") : "" - // readPassword returns a char[] so we need to wrap it into a string, because that's - // most likely what you need - pass2 = new String(pass2) - android.signingConfigs.release.keyPassword = pass2 - } -} - -// NOTE: Temp fix for Play Services (admob) from: https://code.google.com/p/android/issues/detail?id=75080 -tasks.whenTaskAdded { theTask -> - def taskName = theTask.name.toString() - if ("testDebug".toString().equals(taskName)) { - /** - * Listen for when robolectric adds the 'testDebug' task and when it does, add the -noverify - * option to that task's jvmArgs. This allows us to turn off byte code verification when - * running our unit tests. - */ - theTask.jvmArgs('-noverify') - } -} - buildscript { repositories { mavenCentral() - maven { url 'http://download.crashlytics.com/maven' } - } - dependencies { - classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.12.0' - } } apply plugin: 'com.android.application' -apply plugin: 'robolectric' -apply plugin: 'crashlytics' repositories { mavenCentral() - maven { url 'http://download.crashlytics.com/maven' } } android { - compileSdkVersion 19 - buildToolsVersion '19.1' + compileSdkVersion 23 + buildToolsVersion '23.0.1' defaultConfig { applicationId "com.thunsaker.soup" - minSdkVersion 9 - targetSdkVersion 19 + minSdkVersion 14 + targetSdkVersion 23 versionCode 25 versionName "2.6.4" - testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner" resConfigs "en", "es", "fr", "pt", "ru" } - signingConfigs { - debugSigning { - storeFile file(DEBUG_STORE_FILE) - storePassword "android" - keyAlias "androiddebugkey" - keyPassword "android" - } - - releaseSigning { - storeFile file(RELEASE_STORE_FILE) - storePassword "" - keyAlias RELEASE_KEY_ALIAS - keyPassword "" - } - } - buildTypes { debug { - zipAlign true - debuggable true - runProguard false + buildConfigField("String", "FOURSQUARE_ID", getEnv("SOUP_FOUR_ID")); + buildConfigField("String", "FOURSQUARE_SECRET", getEnv("SOUP_FOUR_SECRET")); + applicationIdSuffix ".debug" versionNameSuffix "-debug" - signingConfig signingConfigs.debugSigning - ext.enableCrashlytics = false + minifyEnabled false } release { - zipAlign true - debuggable false - runProguard false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' - signingConfig signingConfigs.releaseSigning - } - } + buildConfigField("String", "FOURSQUARE_ID", getEnv("SOUP_FOUR_ID")); + buildConfigField("String", "FOURSQUARE_SECRET", getEnv("SOUP_FOUR_SECRET")); - sourceSets { - main { - manifest.srcFile 'src/main/AndroidManifest.xml' - java.srcDirs = ['src/main/java'] - res.srcDirs = ['src/main/res'] - } - - androidTest { - setRoot('src/androidTest') + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } } -robolectric { - include '**/*Test.class' - exclude '**/espresso/**/*.class' +def getEnv(key, defVal = '') { + "\"${System.env.containsKey(key) ? System.env.get(key) : defVal}\"" } dependencies { - androidTestCompile('junit:junit:4.11') { - exclude module: 'hamcrest-core' - } compile project(':foursquare-android-oauth:foursquare-oauth-library') compile project(':viewpagerindicator:library') - compile('com.doomonafireball.betterpickers:library:1.5.2') { - exclude group: 'com.android.support', module: 'support-v4' - } - compile 'com.android.support:support-v4:19.+' - compile 'com.android.support:appcompat-v7:19.+' - compile 'com.google.code.gson:gson:2.2.4' - compile 'com.google.android.gms:play-services:5.0.+' + + compile 'com.code-troopers.betterpickers:library:2.2.1' + + compile 'com.android.support:design:23.1.0' + compile 'com.android.support:support-v4:23.1.0' + compile 'com.android.support:appcompat-v7:23.1.0' + compile 'com.google.code.gson:gson:2.3' + compile 'com.google.android.gms:play-services-location:8.1.0' + compile 'com.google.android.gms:play-services-ads:8.1.0' + compile 'com.koushikdutta.urlimageviewhelper:urlimageviewhelper:1.0.4' - compile 'com.crashlytics.android:crashlytics:1.1.13' + compile 'joda-time:joda-time:2.4' compile 'com.jakewharton:butterknife:5.1.2' compile 'de.greenrobot:eventbus:2.2.0' - compile 'com.squareup.dagger:dagger:1.2.1' + compile 'com.squareup.dagger:dagger:1.2.2' + compile 'com.squareup.picasso:picasso:2.2.0' compile('com.squareup.retrofit:retrofit:1.5.1') { exclude group: 'com.google.code.gson', module: 'gson' } - compile 'com.squareup:android-times-square:1.2.1@aar' - compile 'com.tundem.aboutlibraries:library:3.0.0@aar' - // Test - Robolectric - provided 'com.squareup.dagger:dagger-compiler:1.2.1' - androidTestCompile('org.robolectric:robolectric:2.3') { - exclude module: 'classworlds' - exclude module: 'maven-artifact' - exclude module: 'maven-artifact-manager' - exclude module: 'maven-error-diagnostics' - exclude module: 'maven-model' - exclude module: 'maven-plugin-registry' - exclude module: 'maven-profile' - exclude module: 'maven-project' - exclude module: 'maven-settings' - exclude module: 'nekohtml' - exclude module: 'plexus-container-default' - exclude module: 'plexus-interpolation' - exclude module: 'plexus-utils' - exclude module: 'wagon-file' - exclude module: 'wagon-http-lightweight' - exclude module: 'wagon-http-shared' - exclude module: 'wagon-provider-api' - exclude module: 'commons-logging' - exclude module: 'httpclient' - } - androidTestCompile 'com.squareup:fest-android:1.0.7' - androidTestCompile('com.jakewharton.espresso:espresso:1.1-r3') { - exclude module: 'javax.inject' - exclude module: 'javax.annotation:javax.annotation-api:1.2' + compile 'com.squareup:android-times-square:1.6.4@aar' + compile('com.mikepenz:aboutlibraries:5.3.2@aar') { + transitive = true } - androidTestCompile 'com.jakewharton.espresso:espresso-support-v4:1.1-r3' - androidTestCompile 'org.mockito:mockito-all:1.9.5' + provided 'com.squareup.dagger:dagger-compiler:1.2.2' } \ No newline at end of file diff --git a/soup/src/androidTest/java/com/thunsaker/soup/ApplicationTest.java b/soup/src/androidTest/java/com/thunsaker/soup/ApplicationTest.java deleted file mode 100644 index 96c616b..0000000 --- a/soup/src/androidTest/java/com/thunsaker/soup/ApplicationTest.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.thunsaker.soup; - -import com.thunsaker.soup.ui.MainActivity; - -import junit.framework.Assert; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.annotation.Config; - -import static com.thunsaker.soup.app.TestSoupApp.injectMocks; - -@Config(emulateSdk = 18) -@RunWith(RobolectricTestRunner.class) -public class ApplicationTest { - private MainActivity activity; - - @Before - public void setUp() { - injectMocks(this); -// activity = Robolectric.buildActivity(MainActivity.class).create().get(); - } - - @Test - public void isThisThingOn() { - Assert.assertTrue(true); - } - -// @Test -// public void checkActivityNotNull() throws Exception { -// Assert.assertNotNull(activity); -// } - -// @Test -// public void testInjection() throws Exception { -// Context actual = activity.getApplicationContext(); -// Assert.assertEquals(mContext, actual); -// } -} \ No newline at end of file diff --git a/soup/src/androidTest/java/com/thunsaker/soup/app/SoupTestModule.java b/soup/src/androidTest/java/com/thunsaker/soup/app/SoupTestModule.java deleted file mode 100644 index 9b9e672..0000000 --- a/soup/src/androidTest/java/com/thunsaker/soup/app/SoupTestModule.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.thunsaker.soup.app; - -import android.content.Context; - -import com.thunsaker.android.common.annotations.ForActivity; -import com.thunsaker.soup.ApplicationTest; -import com.thunsaker.soup.services.foursquare.FoursquareServiceTest; - -import javax.inject.Singleton; - -import dagger.Module; -import dagger.Provides; - -import static org.mockito.Mockito.mock; - -@Module( - complete = true, - library = true, - overrides = true, - addsTo = SoupActivityModule.class, - injects = { - TestSoupApp.class, - FoursquareServiceTest.class, - ApplicationTest.class - } -) - -public class SoupTestModule { - @Provides - @Singleton - @ForActivity - Context providesActivityContext() { - return mock(BaseSoupActivity.class); - } -} diff --git a/soup/src/androidTest/java/com/thunsaker/soup/app/TestSoupApp.java b/soup/src/androidTest/java/com/thunsaker/soup/app/TestSoupApp.java deleted file mode 100644 index ec5ad1b..0000000 --- a/soup/src/androidTest/java/com/thunsaker/soup/app/TestSoupApp.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.thunsaker.soup.app; - -import org.robolectric.Robolectric; - -import java.util.ArrayList; -import java.util.List; - -public class TestSoupApp extends SoupApp { - - public static void injectMocks(T object) { - TestSoupApp app = (TestSoupApp) Robolectric.application; - app.inject(object); - } - - protected List getAppModules() { -// List modules = super.getAppModules(); -// modules.add(new SoupTestModule()); -// return modules; - - List modules = new ArrayList(); - modules.add(new SoupTestModule()); - return modules; - } -} \ No newline at end of file diff --git a/soup/src/androidTest/java/com/thunsaker/soup/data/api/model/TimeFrameTest.java b/soup/src/androidTest/java/com/thunsaker/soup/data/api/model/TimeFrameTest.java deleted file mode 100644 index 4ade49f..0000000 --- a/soup/src/androidTest/java/com/thunsaker/soup/data/api/model/TimeFrameTest.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.thunsaker.soup.data.api.model; - -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.annotation.Config; - -import java.util.ArrayList; - -@Config(emulateSdk = 18) -@RunWith(RobolectricTestRunner.class) -public class TimeFrameTest { - @Test - public void testCreateFoursquareApiStringHoursWithLabel() throws Exception { - String expected = "6,1700,2100,Happy+Hour%3B"; - TimeFrame timeFrame = new TimeFrame(); - timeFrame.daysList = new ArrayList(); - timeFrame.daysList.add(6); - timeFrame.openTime = new ArrayList(); - timeFrame.closeTime = new ArrayList(); - timeFrame.openTime.add("1700"); - timeFrame.closeTime.add("2100"); - timeFrame.label = "Happy Hour"; - - String actual = TimeFrame.createFoursquareApiString(timeFrame); - - Assert.assertEquals(expected, actual); - } - - @Test - public void testCreateFoursquareApiStringHours24() throws Exception { - String expected = "1,0000,0000%3B"; - TimeFrame timeFrame = new TimeFrame(); - timeFrame.daysList = new ArrayList(); - timeFrame.daysList.add(1); -// timeFrame.openTime = new ArrayList(); -// timeFrame.closeTime = new ArrayList(); - timeFrame.openTime.add("0000"); - timeFrame.closeTime.add("0000"); - timeFrame.label = ""; - timeFrame.is24Hours = true; - - String actual = TimeFrame.createFoursquareApiString(timeFrame); - - Assert.assertEquals(expected, actual); - } - - @Test - public void testCreateFoursquareApiStringHoursAfterMidnight() throws Exception { - String expected = "4,2300,+0100,After+After+Party%3B"; - TimeFrame timeFrame = new TimeFrame(); - timeFrame.daysList = new ArrayList(); - timeFrame.daysList.add(4); - timeFrame.openTime = new ArrayList(); - timeFrame.closeTime = new ArrayList(); - timeFrame.openTime.add("2300"); - timeFrame.closeTime.add("100"); - timeFrame.label = "After After Party"; - - String actual = TimeFrame.createFoursquareApiString(timeFrame); - - Assert.assertEquals(expected, actual); - } -} diff --git a/soup/src/androidTest/java/com/thunsaker/soup/data/api/model/VenueTest.java b/soup/src/androidTest/java/com/thunsaker/soup/data/api/model/VenueTest.java deleted file mode 100644 index c91ad78..0000000 --- a/soup/src/androidTest/java/com/thunsaker/soup/data/api/model/VenueTest.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.thunsaker.soup.data.api.model; - -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.annotation.Config; - -import java.util.ArrayList; -import java.util.List; - -@Config(emulateSdk = 18) -@RunWith(RobolectricTestRunner.class) -public class VenueTest { - @Test - public void testConvertCompactVenueToVenue() throws Exception { - // Arrange - CompactVenue compact = new CompactVenue(); - compact.id = "4b52689af964a520d97b27e3"; - compact.name = "Fry's Food Store"; - compact.contact = new Contact("6239076160", "(623) 907-6160", "frysfoodstores"); - compact.location = new Location("11425 W Buckeye Rd", "at S Avondale Blvd", 33.43418112561641, -112.30458498001099, 2271, "85323", "Avondale", "AZ", "United States", "US", null); - List compactCategoryList = new ArrayList(); - compactCategoryList.add(new Category("52f2ab2ebcbc57f1066b8b46", "Supermarket", "Supermarkets", "Supermarket", - new FoursquareImage("https://ss1.4sqi.net/img/categories_v2/shops/food_grocery_",".png"), true)); - compact.categories = compactCategoryList; - compact.verified = true; - compact.url = "http://www.frysfood.com"; -// compact.stats = new VenueStats(3470, 564, 14); -// compact.beenHere = new VenueBeenHere(79, false); -// compact.storeId = "89"; -// compact.referralId = "v-1407797198"; - - Venue expected = new Venue(); - expected.id = "4b52689af964a520d97b27e3"; - expected.name = "Fry's Food Store"; - expected.contact = new Contact("6239076160", "(623) 907-6160", "frysfoodstores"); - expected.location = new Location("11425 W Buckeye Rd", "at S Avondale Blvd", 33.43418112561641, -112.30458498001099, 2271, "85323", "Avondale", "AZ", "United States", "US", null); - List venueCategoryList = new ArrayList(); - venueCategoryList.add(new Category("52f2ab2ebcbc57f1066b8b46", "Supermarket", "Supermarkets", "Supermarket", - new FoursquareImage("https://ss1.4sqi.net/img/categories_v2/shops/food_grocery_",".png"), true)); - expected.categories = venueCategoryList; - expected.verified = true; - expected.url = "http://www.frysfood.com"; -// expected.stats = new VenueStats(3470, 564, 14); -// expected.beenHere = new VenueBeenHere(79, false); -// expected.storeId = "89"; -// expected.referralId = "v-1407797198"; - - // Act - Venue actual = Venue.ConvertCompactVenueToVenue(compact); - - // Assert - Assert.assertEquals(expected.id, actual.id); - Assert.assertEquals(expected.name, actual.name); - Assert.assertEquals(expected.location.address, actual.location.address); - Assert.assertEquals(expected.location.postalCode, actual.location.postalCode); - Assert.assertEquals(expected.contact.phone, actual.contact.phone); - Assert.assertNotNull(expected.categories); - Assert.assertEquals(expected.categories.get(0).id, actual.categories.get(0).id); - Assert.assertEquals(expected.categories.get(0).name, actual.categories.get(0).name); - Assert.assertEquals(expected.url, actual.url); - } -} \ No newline at end of file diff --git a/soup/src/androidTest/java/com/thunsaker/soup/services/foursquare/FoursquareServiceTest.java b/soup/src/androidTest/java/com/thunsaker/soup/services/foursquare/FoursquareServiceTest.java deleted file mode 100644 index 68bd571..0000000 --- a/soup/src/androidTest/java/com/thunsaker/soup/services/foursquare/FoursquareServiceTest.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.thunsaker.soup.services.foursquare; - -import com.thunsaker.soup.services.FoursquareService; - -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.annotation.Config; - -import javax.inject.Inject; - -@Config(emulateSdk = 18) -@RunWith(RobolectricTestRunner.class) -public class FoursquareServiceTest { - @Inject - FoursquareService mFoursquareService; - - @Inject - SwarmService mSwarmService; - - @Test - public void testHasFoursquareId() throws Exception { - Assert.assertTrue(System.getenv("SOUP_FOUR_ID") != null); - } - - @Test - public void testHasFoursquareSecret() throws Exception { - Assert.assertTrue(System.getenv("SOUP_FOUR_ID") != null); - } - -// @Test -// public void testHasInjectedFoursquareService() throws Exception { -// Assert.assertTrue(mFoursquareService != null); -// } -// -// @Test -// public void testHasInjectedSwarmService() throws Exception { -// Assert.assertTrue(mSwarmService != null); -// } -} \ No newline at end of file diff --git a/soup/src/androidTest/java/org/robolectric/shadows/ShadowSupportMenuInflater.java b/soup/src/androidTest/java/org/robolectric/shadows/ShadowSupportMenuInflater.java deleted file mode 100644 index 86d88e7..0000000 --- a/soup/src/androidTest/java/org/robolectric/shadows/ShadowSupportMenuInflater.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.robolectric.shadows; - - -import android.support.v7.internal.view.SupportMenuInflater; -import android.view.Menu; - -import org.robolectric.annotation.Implementation; -import org.robolectric.annotation.Implements; - -@Implements(SupportMenuInflater.class) -public class ShadowSupportMenuInflater extends ShadowMenuInflater { - @Implementation - public void inflate(int menuRes, Menu menu) { - super.inflate(menuRes, menu); - } -} diff --git a/soup/src/main/AndroidManifest.xml b/soup/src/main/AndroidManifest.xml index 17b8b8f..18c40a1 100644 --- a/soup/src/main/AndroidManifest.xml +++ b/soup/src/main/AndroidManifest.xml @@ -1,19 +1,22 @@ + + + + + + - - - - - - - @@ -49,9 +48,13 @@ + android:launchMode="singleTop"> + + @@ -80,7 +83,7 @@ android:resource="@xml/searchable" /> + android:value="com.thunsaker.soup.ui.MainActivity" /> + android:value=".ui.VenueDetailActivity" /> + + android:parentActivityName=".ui.MainActivity" + tools:ignore="UnusedAttribute" > - \ No newline at end of file + diff --git a/soup/src/main/java/com/thunsaker/android/common/dagger/BaseActivity.java b/soup/src/main/java/com/thunsaker/android/common/dagger/BaseActivity.java index 5d9b42e..e7a2655 100644 --- a/soup/src/main/java/com/thunsaker/android/common/dagger/BaseActivity.java +++ b/soup/src/main/java/com/thunsaker/android/common/dagger/BaseActivity.java @@ -1,11 +1,11 @@ package com.thunsaker.android.common.dagger; import android.os.Bundle; -import android.support.v7.app.ActionBarActivity; +import android.support.v7.app.AppCompatActivity; import dagger.ObjectGraph; -public abstract class BaseActivity extends ActionBarActivity implements Injector { +public abstract class BaseActivity extends AppCompatActivity implements Injector { private ObjectGraph mActivityGraph; @Override diff --git a/soup/src/main/java/com/thunsaker/android/common/dagger/BasePreferenceActivity.java b/soup/src/main/java/com/thunsaker/android/common/dagger/BasePreferenceActivity.java new file mode 100644 index 0000000..9279d3f --- /dev/null +++ b/soup/src/main/java/com/thunsaker/android/common/dagger/BasePreferenceActivity.java @@ -0,0 +1,37 @@ +package com.thunsaker.android.common.dagger; + +import android.os.Bundle; +import android.preference.PreferenceActivity; + +import dagger.ObjectGraph; + +public abstract class BasePreferenceActivity extends PreferenceActivity implements Injector { + private ObjectGraph mActivityGraph; + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + DaggerApplication daggerApplication = (DaggerApplication) getApplication(); + mActivityGraph = daggerApplication.getObjectGraph().plus(getActivityModules()); + + mActivityGraph.inject(this); + } + + @Override + protected void onDestroy() { + mActivityGraph = null; + super.onDestroy(); + } + + @Override + public void inject(Object object) { + mActivityGraph.inject(object); + } + + @Override + public ObjectGraph getObjectGraph() { + return mActivityGraph; + } + + protected abstract Object[] getActivityModules(); +} diff --git a/soup/src/main/java/com/thunsaker/android/common/dagger/DaggerApplication.java b/soup/src/main/java/com/thunsaker/android/common/dagger/DaggerApplication.java index e9c5a3b..5ff0136 100644 --- a/soup/src/main/java/com/thunsaker/android/common/dagger/DaggerApplication.java +++ b/soup/src/main/java/com/thunsaker/android/common/dagger/DaggerApplication.java @@ -13,8 +13,9 @@ public abstract class DaggerApplication extends Application implements Injector @Override public void onCreate() { super.onCreate(); + AndroidApplicationModule baseApplicationModule = new AndroidApplicationModule(); - baseApplicationModule.xApplicationContext = this.getApplicationContext(); + AndroidApplicationModule.xApplicationContext = this.getApplicationContext(); List modules = new ArrayList(); modules.add(baseApplicationModule); diff --git a/soup/src/main/java/com/thunsaker/android/common/dagger/InjectingFragmentModule.java b/soup/src/main/java/com/thunsaker/android/common/dagger/InjectingFragmentModule.java index 78bbce5..80c546b 100644 --- a/soup/src/main/java/com/thunsaker/android/common/dagger/InjectingFragmentModule.java +++ b/soup/src/main/java/com/thunsaker/android/common/dagger/InjectingFragmentModule.java @@ -28,7 +28,7 @@ package com.thunsaker.android.common.dagger; - import java.lang.annotation.Documented; +import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; diff --git a/soup/src/main/java/com/thunsaker/soup/app/SoupApp.java b/soup/src/main/java/com/thunsaker/soup/app/SoupApp.java index 354867f..29829bd 100644 --- a/soup/src/main/java/com/thunsaker/soup/app/SoupApp.java +++ b/soup/src/main/java/com/thunsaker/soup/app/SoupApp.java @@ -1,9 +1,6 @@ package com.thunsaker.soup.app; import android.content.Context; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.os.Bundle; import com.thunsaker.android.common.dagger.DaggerApplication; @@ -16,24 +13,9 @@ public static SoupApp from(Context context) { return (SoupApp) context.getApplicationContext(); } - @Override - public void onCreate() { - super.onCreate(); - - try { - PackageManager manager = getPackageManager(); - ApplicationInfo applicationInfo = manager.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA); - Bundle bundle = applicationInfo.metaData; - // NOTE: Not a great way to do crashlytics through an environmental variable right now - bundle.putString("com.google.android.maps.v2.API_KEY", System.getenv("SOUP_MAPS_KEY")); - applicationInfo.metaData = bundle; - } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); - } - } - @Override protected List getAppModules() { - return Collections.singletonList(new SoupAppModule()); + return Collections.singletonList( + new SoupAppModule()); } } \ No newline at end of file diff --git a/soup/src/main/java/com/thunsaker/soup/app/SoupAppModule.java b/soup/src/main/java/com/thunsaker/soup/app/SoupAppModule.java index 30e9c7a..c7b7285 100644 --- a/soup/src/main/java/com/thunsaker/soup/app/SoupAppModule.java +++ b/soup/src/main/java/com/thunsaker/soup/app/SoupAppModule.java @@ -8,14 +8,12 @@ import com.squareup.picasso.Picasso; import com.thunsaker.android.common.annotations.ForApplication; import com.thunsaker.android.common.dagger.AndroidApplicationModule; -import com.thunsaker.soup.BuildConfig; import com.thunsaker.soup.services.FoursquareService; import com.thunsaker.soup.services.foursquare.FoursquarePrefs; import com.thunsaker.soup.services.foursquare.FoursquareTasks; import com.thunsaker.soup.services.foursquare.SwarmService; import com.thunsaker.soup.ui.CheckinHistoryActivity; import com.thunsaker.soup.ui.CheckinHistoryFragment; -import com.thunsaker.soup.ui.FoursquareAuthorizationActivity; import com.thunsaker.soup.ui.FoursquareListFragment; import com.thunsaker.soup.ui.ListActivity; import com.thunsaker.soup.ui.ListsFragment; @@ -24,7 +22,6 @@ import com.thunsaker.soup.ui.VenueAddCategoryActivity; import com.thunsaker.soup.ui.VenueDetailActivity; import com.thunsaker.soup.ui.VenueDetailActivityReceiver; -import com.thunsaker.soup.ui.VenueDetailFragment; import com.thunsaker.soup.ui.VenueEditCategoriesActivity; import com.thunsaker.soup.ui.VenueEditHoursAddActivity; import com.thunsaker.soup.ui.VenueEditLocationFragment; @@ -47,12 +44,11 @@ addsTo = AndroidApplicationModule.class, injects = { SoupApp.class, - FoursquareAuthorizationActivity.class, MainActivity.class, FoursquareTasks.class, VenueListFragment.class, VenueSearchActivity.class, - VenueDetailFragment.class, + VenueDetailActivity.class, ListsFragment.class, FoursquareListFragment.class, ListActivity.class, @@ -109,7 +105,7 @@ public void intercept(RequestFacade request) { RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint(FoursquarePrefs.FOURSQUARE_BASE_URL) - .setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE) +// .setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE) .setRequestInterceptor(requestInterceptor) .build(); @@ -129,7 +125,7 @@ public void intercept(RequestFacade request) { RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint(FoursquarePrefs.FOURSQUARE_BASE_URL) - .setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE) +// .setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE) .setRequestInterceptor(requestInterceptor) .build(); diff --git a/soup/src/main/java/com/thunsaker/soup/data/events/GetVenueEvent.java b/soup/src/main/java/com/thunsaker/soup/data/events/GetVenueEvent.java index c218c60..2133ccb 100644 --- a/soup/src/main/java/com/thunsaker/soup/data/events/GetVenueEvent.java +++ b/soup/src/main/java/com/thunsaker/soup/data/events/GetVenueEvent.java @@ -6,10 +6,12 @@ public class GetVenueEvent extends BaseEvent { public Venue resultVenue; public int source; + public boolean withHours; - public GetVenueEvent(Boolean result, String resultMessage, Venue resultVenue, int resultSource) { + public GetVenueEvent(Boolean result, String resultMessage, Venue resultVenue, int resultSource, boolean withHours) { super(result, resultMessage); this.resultVenue = resultVenue; this.source = resultSource; + this.withHours = withHours; } } \ No newline at end of file diff --git a/soup/src/main/java/com/thunsaker/soup/services/AuthHelper.java b/soup/src/main/java/com/thunsaker/soup/services/AuthHelper.java index ee50a88..4de8df1 100644 --- a/soup/src/main/java/com/thunsaker/soup/services/AuthHelper.java +++ b/soup/src/main/java/com/thunsaker/soup/services/AuthHelper.java @@ -1,10 +1,12 @@ package com.thunsaker.soup.services; +import com.thunsaker.soup.BuildConfig; + /* * Created by @thunsaker */ public class AuthHelper { - public final static String FOURSQUARE_CLIENT_ID = System.getenv("SOUP_FOUR_ID"); - public final static String FOURSQUARE_CLIENT_SECRET = System.getenv("SOUP_FOUR_SECRET"); + public final static String FOURSQUARE_CLIENT_ID = BuildConfig.FOURSQUARE_ID; + public final static String FOURSQUARE_CLIENT_SECRET = BuildConfig.FOURSQUARE_SECRET; public final static String FOURSQUARE_CALLBACK_URL = "http://127.0.0.1/foursquare"; } \ No newline at end of file diff --git a/soup/src/main/java/com/thunsaker/soup/services/foursquare/FoursquarePrefs.java b/soup/src/main/java/com/thunsaker/soup/services/foursquare/FoursquarePrefs.java index c2ebdf1..8608927 100644 --- a/soup/src/main/java/com/thunsaker/soup/services/foursquare/FoursquarePrefs.java +++ b/soup/src/main/java/com/thunsaker/soup/services/foursquare/FoursquarePrefs.java @@ -1,5 +1,9 @@ package com.thunsaker.soup.services.foursquare; +import android.content.Context; + +import com.thunsaker.soup.PreferencesHelper; + /* * Created by @thunsaker */ @@ -130,4 +134,11 @@ final public static class Limit { public static final String EDIT_VENUE_HOURS = "hours"; public static final String EDIT_VENUE_USER_LATLONG = "ll"; + + public static void clearFoursquareUser(Context myContext) { + PreferencesHelper.setFoursquareToken(myContext, ""); + PreferencesHelper.setFoursquareConnected(myContext, false); + PreferencesHelper.setFoursquareUserId(myContext, ""); + PreferencesHelper.setFoursquareSuperuserLevel(myContext, 0); + } } \ No newline at end of file diff --git a/soup/src/main/java/com/thunsaker/soup/services/foursquare/FoursquareTasks.java b/soup/src/main/java/com/thunsaker/soup/services/foursquare/FoursquareTasks.java index 3144567..09185d1 100644 --- a/soup/src/main/java/com/thunsaker/soup/services/foursquare/FoursquareTasks.java +++ b/soup/src/main/java/com/thunsaker/soup/services/foursquare/FoursquareTasks.java @@ -286,7 +286,7 @@ public GetVenue(String theVenueId, Integer theSource) { this(theVenueId, theSource, false); } - public GetVenue(String theVenueId, Integer theSource, Boolean withHours) { + public GetVenue(String theVenueId, Integer theSource, boolean withHours) { myVenueId = theVenueId; mySource = theSource; this.withHours = withHours; @@ -325,9 +325,6 @@ else if (myLongUrl.contains("/venue/")) if(myVenueId != null && myVenueId.length() > 0) { GetVenueResponse response = mFoursquareService.getVenue(myVenueId, myAccessToken); - if(withHours) - new GetVenueHours(myVenueId, mySource).execute(); - if (response != null) { if (response.meta.code == 200 && response.response.venue != null) { resultVenue = FoursquareVenueResponse.ConvertFoursquareVenueResponseToVenue(response.response.venue); @@ -357,10 +354,10 @@ protected void onPostExecute(Venue result) { mySource = 2; if(result != null) { - mBus.post(new GetVenueEvent(true, "", result, 2)); + mBus.post(new GetVenueEvent(true, "", result, 2, withHours)); } else { Toast.makeText(mContext, R.string.alert_error_loading_details, Toast.LENGTH_SHORT).show(); - mBus.post(new GetVenueEvent(false, "", null, mySource)); + mBus.post(new GetVenueEvent(false, "", null, mySource, withHours)); } } catch (Exception e) { e.printStackTrace(); diff --git a/soup/src/main/java/com/thunsaker/soup/ui/AboutFragment.java b/soup/src/main/java/com/thunsaker/soup/ui/AboutFragment.java index 1eec4d3..ca3268b 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/AboutFragment.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/AboutFragment.java @@ -10,9 +10,8 @@ import android.view.ViewGroup; import android.widget.Button; +import com.mikepenz.aboutlibraries.LibsBuilder; import com.thunsaker.soup.R; -import com.tundem.aboutlibraries.Libs; -import com.tundem.aboutlibraries.ui.LibsActivity; /* * Created by @thunsaker @@ -58,18 +57,19 @@ public void onClick(View v) { @Override public void onClick(View v) { - Intent aboutIntent = new Intent(getActivity().getApplicationContext(), LibsActivity.class); - aboutIntent.putExtra(Libs.BUNDLE_FIELDS, Libs.toStringArray(R.string.class.getFields())); - aboutIntent.putExtra(Libs.BUNDLE_LIBS, - new String[]{"gson", "eventbus", "joda", "butterknife", - "dagger", "picasso", "retrofit", "androidtimessquare", - "betterpickers", "urlimageviewhelper"}); - aboutIntent.putExtra(Libs.BUNDLE_VERSION, true); - aboutIntent.putExtra(Libs.BUNDLE_LICENSE, true); - aboutIntent.putExtra(Libs.BUNDLE_TITLE, "Open Source"); - aboutIntent.putExtra(Libs.BUNDLE_THEME, R.style.Theme_Soup); - aboutIntent.putExtra(Libs.BUNDLE_ACCENT_COLOR, "#00d04e" /*R.color.soup_green*/); - startActivity(aboutIntent); + new LibsBuilder() + .withLibraries("Eventbus", "Dagger", "Retrofit", "Butterknife", + "gson", "picasso", "androidtimessquare", "joda", "betterpickers", + "urlimageviewhelper") + .withAutoDetect(true) + .withLicenseShown(true) + .withVersionShown(true) + .withActivityTitle(getString(R.string.action_about)) + .withActivityTheme(R.style.Theme_Soup) + .start(getActivity()); +// new String[]{"gson", "eventbus", "joda", "butterknife", +// "dagger", "picasso", "retrofit", "androidtimessquare", +// "betterpickers", "urlimageviewhelper"}); } }); diff --git a/soup/src/main/java/com/thunsaker/soup/ui/CheckinHistoryActivity.java b/soup/src/main/java/com/thunsaker/soup/ui/CheckinHistoryActivity.java index 57f8a74..db49752 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/CheckinHistoryActivity.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/CheckinHistoryActivity.java @@ -1,29 +1,46 @@ package com.thunsaker.soup.ui; +import android.app.ActionBar; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.v7.app.ActionBar; -import android.widget.ArrayAdapter; +import android.support.v7.widget.Toolbar; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.BaseAdapter; +import android.widget.Spinner; +import android.widget.TextView; import com.thunsaker.android.common.annotations.ForApplication; import com.thunsaker.soup.R; import com.thunsaker.soup.app.BaseSoupActivity; +import java.util.ArrayList; import java.util.Calendar; +import java.util.List; import java.util.Locale; import java.util.TimeZone; import javax.inject.Inject; +import butterknife.ButterKnife; +import butterknife.InjectView; + public class CheckinHistoryActivity extends BaseSoupActivity - implements ActionBar.OnNavigationListener, - CheckinHistoryFragment.OnFragmentInteractionListener { + implements + CheckinHistoryFragment.OnFragmentInteractionListener, + AdapterView.OnItemSelectedListener { @Inject @ForApplication Context mContext; + @InjectView(R.id.checkinToolbar) Toolbar mToolbar; + +// @InjectView(R.id.checkinSpinner) Spinner mSpinner; + private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item"; public static final int CHECKIN_SECTION_TODAY = 0; @@ -38,24 +55,27 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_checkin_history); - final ActionBar actionBar = getSupportActionBar(); - actionBar.setDisplayShowTitleEnabled(false); - actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setIcon(getResources().getDrawable(R.drawable.ic_launcher_white)); - - actionBar.setListNavigationCallbacks( - new ArrayAdapter( - actionBar.getThemedContext(), - android.R.layout.simple_list_item_1, - android.R.id.text1, - new String[] { - getString(R.string.history_title_today), - getString(R.string.history_title_last_week), - getString(R.string.history_title_last_month), - getString(R.string.history_title_custom) - }), - this); + ButterKnife.inject(this); + + setSupportActionBar(mToolbar); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + setTitle(""); + + View spinnerContainer = LayoutInflater.from(this).inflate(R.layout.toolbar_spinner, + mToolbar, false); + + ActionBar.LayoutParams lp = + new ActionBar.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT); + mToolbar.addView(spinnerContainer, lp); + + HistorySpinnerAdapter mSpinnerAdapter = new HistorySpinnerAdapter(); + mSpinnerAdapter.addItems(getResources().getStringArray(R.array.checkin_ranges)); + + Spinner mSpinner = (Spinner) spinnerContainer.findViewById(R.id.checkinSpinner); + mSpinner.setAdapter(mSpinnerAdapter); + mSpinner.setOnItemSelectedListener(this); } @Override @@ -72,9 +92,51 @@ public void onSaveInstanceState(Bundle outState) { getSupportActionBar().getSelectedNavigationIndex()); } + public long getEndDateTimestamp(int type) { + Calendar endTimestampCalendar = Calendar.getInstance(); + endTimestampCalendar.add(Calendar.DATE, -1); + + endTimestampCalendar.set(Calendar.HOUR_OF_DAY, 0); + endTimestampCalendar.set(Calendar.MINUTE, 0); + endTimestampCalendar.set(Calendar.SECOND, 0); + endTimestampCalendar.set(Calendar.MILLISECOND, 0); + + switch (type) { + case 1: // HISTORY_VIEW_LAST_WEEK + endTimestampCalendar.add(Calendar.DATE, -6); + break; + case 2: // HISTORY_VIEW_LAST_MONTH + endTimestampCalendar.add(Calendar.DATE, -29); + break; + default: // HISTORY_VIEW_TODAY + break; + } + + return endTimestampCalendar.getTimeInMillis() / 1000; + } + @Override - public boolean onNavigationItemSelected(int position, long id) { - Calendar cal_today = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault()); + public void onClick(String compactVenueJson) { + Intent venueDetailsIntent = + new Intent(mContext, VenueDetailActivity.class); + venueDetailsIntent.putExtra( + VenueDetailActivity.ARG_ITEM_JSON_STRING, compactVenueJson); + venueDetailsIntent.putExtra( + VenueDetailActivity.VENUE_DETAILS_SOURCE, + VenueDetailActivity.VENUE_DETAIL_SOURCE_HISTORY); + startActivity(venueDetailsIntent); + } + + @Override + public boolean onLongClick(String checkinId, String checkinVenueName) { + return false; + } + + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + Calendar cal_today = + Calendar.getInstance(TimeZone.getDefault(), + Locale.getDefault()); long startDate = cal_today.getTimeInMillis() / 1000; long endDate = getEndDateTimestamp(CHECKIN_SECTION_TODAY); switch (position) { @@ -97,45 +159,92 @@ public boolean onNavigationItemSelected(int position, long id) { getSupportFragmentManager() .beginTransaction() .replace( - R.id.container, - CheckinHistoryFragment.newInstance(position, startDate, endDate)) + R.id.checkinHistoryContent, + CheckinHistoryFragment.newInstance( + position, startDate, endDate)) .commit(); - return true; } - public long getEndDateTimestamp(int type) { - Calendar endTimestampCalendar = Calendar.getInstance(); - endTimestampCalendar.add(Calendar.DATE, -1); + @Override + public void onNothingSelected(AdapterView adapterView) { + Calendar cal_today = + Calendar.getInstance(TimeZone.getDefault(), + Locale.getDefault()); + long startDate = cal_today.getTimeInMillis() / 1000; + long endDate = getEndDateTimestamp(CHECKIN_SECTION_TODAY); + getSupportFragmentManager() + .beginTransaction() + .replace( + R.id.checkinHistoryContent, + CheckinHistoryFragment.newInstance( + 0, startDate, endDate)) + .commit(); + } - endTimestampCalendar.set(Calendar.HOUR_OF_DAY, 0); - endTimestampCalendar.set(Calendar.MINUTE, 0); - endTimestampCalendar.set(Calendar.SECOND, 0); - endTimestampCalendar.set(Calendar.MILLISECOND, 0); + public class HistorySpinnerAdapter extends BaseAdapter { - switch (type) { - case 1: // HISTORY_VIEW_LAST_WEEK - endTimestampCalendar.add(Calendar.DATE, -6); - break; - case 2: // HISTORY_VIEW_LAST_MONTH - endTimestampCalendar.add(Calendar.DATE, -29); - break; - default: // HISTORY_VIEW_TODAY - break; + private List mItems = new ArrayList<>(); + + public void clear() { + mItems.clear(); } - return endTimestampCalendar.getTimeInMillis() / 1000; - } + @Override + public int getCount() { + return mItems.size(); + } - @Override - public void onClick(String compactVenueJson) { - Intent venueDetailsIntent = new Intent(mContext, VenueDetailActivity.class); - venueDetailsIntent.putExtra(VenueDetailFragment.ARG_ITEM_JSON_STRING, compactVenueJson); - venueDetailsIntent.putExtra(VenueDetailActivity.VENUE_DETAILS_SOURCE, VenueDetailActivity.VENUE_DETAIL_SOURCE_HISTORY); - startActivity(venueDetailsIntent); - } + @Override + public String getItem(int pos) { + return mItems.get(pos); + } - @Override - public boolean onLongClick(String checkinId, String checkinVenueName) { - return false; + @Override + public long getItemId(int pos) { + return pos; + } + + @Override + public View getView(int pos, View view, ViewGroup parent) { + if (view == null || !view.getTag().toString().equals("NON_DROPDOWN")) { + view = getLayoutInflater().inflate(R.layout. + toolbar_spinner_item_actionbar, parent, false); + view.setTag("NON_DROPDOWN"); + } + TextView textView = (TextView) view.findViewById(android.R.id.text1); + textView.setText(getTitle(pos)); + return view; + } + + private String getTitle(int pos) { + return pos >= 0 && pos < mItems.size() ? mItems.get(pos) : ""; + } + + @Override + public View getDropDownView(int pos, View view, ViewGroup parent) { + if (view == null || !view.getTag().toString().equals("DROPDOWN")) { + view = getLayoutInflater().inflate(R.layout.toolbar_spinner_item_dropdown, parent, false); + view.setTag("DROPDOWN"); + } + + TextView textView = (TextView) view.findViewById(android.R.id.text1); + textView.setText(getTitle(pos)); + + return view; + } + + public void addItem(String item) { + mItems.add(item); + } + + public void addItems(String[] items) { + for (String i : items) { + addItem(i); + } + } + + public void addItems(List items) { + mItems.addAll(items); + } } } \ No newline at end of file diff --git a/soup/src/main/java/com/thunsaker/soup/ui/CheckinHistoryFragment.java b/soup/src/main/java/com/thunsaker/soup/ui/CheckinHistoryFragment.java index e411b7c..e116564 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/CheckinHistoryFragment.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/CheckinHistoryFragment.java @@ -3,9 +3,7 @@ import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; -import android.os.Build; import android.os.Bundle; -import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; import android.view.LayoutInflater; import android.view.Menu; @@ -51,18 +49,11 @@ import butterknife.OnClick; import de.greenrobot.event.EventBus; -/** - * A simple {@link Fragment} subclass. - * Activities that contain this fragment must implement the - * {@link CheckinHistoryFragment.OnFragmentInteractionListener} interface - * to handle interaction events. - * Use the {@link CheckinHistoryFragment#newInstance} factory method to - * create an instance of this fragment. - * - */ public class CheckinHistoryFragment extends BaseSoupFragment implements SwipeRefreshLayout.OnRefreshListener, - AbsListView.OnItemClickListener, AbsListView.OnItemLongClickListener{ + AbsListView.OnItemClickListener, + AbsListView.OnItemLongClickListener { + @Inject @ForApplication Context mContext; @@ -215,11 +206,11 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa if(mSwipeViewCheckinContainer != null) { mSwipeViewCheckinContainer.setOnRefreshListener(this); - mSwipeViewCheckinContainer.setColorScheme( - R.color.soup_green, - R.color.soup_blue, - R.color.soup_green, - R.color.soup_red); + mSwipeViewCheckinContainer.setColorSchemeColors( + getResources().getColor(R.color.soup_green), + getResources().getColor(R.color.soup_blue), + getResources().getColor(R.color.soup_green), + getResources().getColor(R.color.soup_red)); mSwipeViewCheckinContainer.setRefreshing(true); } @@ -439,11 +430,12 @@ public void GetCustomDateRange() { CheckinHistoryActivity.customStartDate = mStartDate; CheckinHistoryActivity.customEndDate = mEndDate; - if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - assert getActivity() != null; - assert getActivity().getActionBar() != null; - getActivity().getActionBar().setSelectedNavigationItem(3); - } + // FIXME: 11/10/2015 - Determine if I need to call this on the custom date range +// if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { +// assert getActivity() != null; +// assert getActivity().getActionBar() != null; +// getActivity().getActionBar().setSelectedNavigationItem(3); +// } CloseCalendarPicker(); RefreshData(); diff --git a/soup/src/main/java/com/thunsaker/soup/ui/FoursquareAuthorizationActivity.java b/soup/src/main/java/com/thunsaker/soup/ui/FoursquareAuthorizationActivity.java deleted file mode 100644 index b04d57b..0000000 --- a/soup/src/main/java/com/thunsaker/soup/ui/FoursquareAuthorizationActivity.java +++ /dev/null @@ -1,210 +0,0 @@ -package com.thunsaker.soup.ui; - -import android.annotation.SuppressLint; -import android.app.ProgressDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.content.DialogInterface.OnCancelListener; -import android.content.Intent; -import android.graphics.Bitmap; -import android.os.AsyncTask; -import android.os.Bundle; -import android.support.v7.app.ActionBar; -import android.support.v7.app.ActionBarActivity; -import android.util.Log; -import android.view.MenuItem; -import android.view.View; -import android.webkit.WebView; -import android.webkit.WebViewClient; -import android.widget.Toast; - -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.thunsaker.soup.R; -import com.thunsaker.soup.PreferencesHelper; -import com.thunsaker.soup.app.BaseSoupActivity; -import com.thunsaker.soup.data.FoursquareClient; -import com.thunsaker.soup.util.QueryStringParser; -import com.thunsaker.soup.util.Util; - -/* - * Created by @thunsaker - */ -public class FoursquareAuthorizationActivity extends BaseSoupActivity { - final String TAG = "FoursquareAuthorizationActivity"; - - public static final String ACCESS_URL = "https://foursquare.com/oauth2/access_token"; - public static final String AUTHORIZE_URL = "https://foursquare.com/oauth2/authorize"; - - public static FoursquareClient mFoursquareClient; - - public ProgressDialog loadingDialog; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - if(mFoursquareClient != null) { - ActionBar ab = getSupportActionBar(); - boolean showHomeUp = true; - ab.setDisplayHomeAsUpEnabled(showHomeUp); - boolean useLogo = true; - ab.setDisplayUseLogoEnabled(useLogo); - ab.setIcon(getResources().getDrawable(R.drawable.ic_launcher_white)); - - loadingDialog = ProgressDialog.show( - FoursquareAuthorizationActivity.this, - getString(R.string.dialog_please_wait), String.format( - getString(R.string.dialog_loading), - getString(R.string.foursquare)), true, // Undefined progress - true, // Allow canceling of operation - new OnCancelListener() { - public void onCancel(DialogInterface dialog) { -// Crouton.makeText(FoursquareAuthorizationActivity.this, getString(R.string.auth_cancelled), Style.ALERT).show(); - Toast.makeText(FoursquareAuthorizationActivity.this, getString(R.string.auth_cancelled), Toast.LENGTH_SHORT).show(); - } - }); - } else { -// Crouton.makeText(this, getString(R.string.auth_failed), Style.ALERT).show(); - Toast.makeText(this, getString(R.string.auth_failed), Toast.LENGTH_SHORT).show(); - Log.i(TAG, "FoursquareClient is null. Be sure to set the foursquare client before attempting to login."); - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - finish(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - @SuppressLint("SetJavaScriptEnabled") - @Override - protected void onResume() { - super.onResume(); - - WebView webView = new WebView(this); - webView.getSettings().setJavaScriptEnabled(true); - webView.setVisibility(View.VISIBLE); - setContentView(webView); - - String authUrl = String.format("%s?client_id=%s&response_type=code&redirect_uri=%s", - AUTHORIZE_URL, mFoursquareClient.getClientId(), - mFoursquareClient.getCallbackUrl()); - - try { - webView.setWebViewClient(new WebViewClient() { - @Override - public void onPageStarted(WebView view, String url, Bitmap favicon) { - } - - @Override - public void onPageFinished(WebView view, String url) { - if (url.startsWith(mFoursquareClient.getCallbackUrl())) { - try { - if (url.indexOf("code=") != -1) { - String requestToken = extractParamFromUrl(url, - "code"); - - // Do http post here... - String accessUrl = String - .format("%s?code=%s&client_id=%s&client_secret=%s&grant_type=authorization_code&redirect_uri=%s", - ACCESS_URL, requestToken, - mFoursquareClient.getClientId(), - mFoursquareClient.getClientSecret(), - mFoursquareClient.getCallbackUrl()); - - new TokenFetcher( - FoursquareAuthorizationActivity.this.getApplicationContext(), - accessUrl, FoursquareAuthorizationActivity.this).execute(); - - view.setVisibility(View.INVISIBLE); - } else if (url.indexOf("error=") != -1) { - view.setVisibility(View.INVISIBLE); - } - } catch (Exception e) { - Log.i(TAG, "IOException: " + e.getMessage()); - e.printStackTrace(); - } - } - } - }); - - webView.loadUrl(authUrl); - webView.requestFocus(); - loadingDialog.dismiss(); - } catch (Exception e) { - e.printStackTrace(); - } finally { - } - } - - private String extractParamFromUrl(String url,String paramName) { - String queryString = url.substring(url.indexOf("?", 0)+1,url.length()); - QueryStringParser queryStringParser = new QueryStringParser(queryString); - return queryStringParser.getQueryParamValue(paramName); - } - - public class TokenFetcher extends AsyncTask { - Context myContext; - String myUrl; - String myAccessToken = ""; - ActionBarActivity myCaller; - - public TokenFetcher(Context theContext, String theUrl, ActionBarActivity theCaller) { - myContext = theContext; - myUrl = theUrl; - myCaller = theCaller; - } - - @Override - protected Boolean doInBackground(Void... params) { - Boolean result = false; - String response = Util.getHttpResponse(myUrl, true, Util.contentType, Util.contentType); - if (response != null) { - JsonParser jParser = new JsonParser(); - JsonObject jObject = (JsonObject) jParser.parse(response); - if(jObject != null) { - String accessToken = jObject.get("access_token") != null ? jObject.get("access_token").getAsString() : ""; - - if (accessToken.length() > 0) { - result = true; - myAccessToken = accessToken.trim(); - - PreferencesHelper.setFoursquareToken(myContext, myAccessToken); - PreferencesHelper.setFoursquareConnected(myContext, result); - } else { -// Crouton.makeText(myCaller, "There was a problem authenticating, please try again.", Style.ALERT).show(); - Toast.makeText(myCaller, "There was a problem authenticating, please try again.", Toast.LENGTH_SHORT).show(); - } - } else { -// Crouton.makeText(myCaller, "There was a problem authenticating, please try again.", Style.ALERT).show(); - Toast.makeText(myCaller, "There was a problem authenticating, please try again.", Toast.LENGTH_SHORT).show(); - } - } - - return result; - } - - @Override - protected void onPostExecute(Boolean result) { - super.onPostExecute(result); - if(result) - Toast.makeText(myContext, "Foursquare Account Authorized", Toast.LENGTH_SHORT).show(); - - finish(); - startActivity(new Intent(getApplicationContext(), MainActivity.class)); - } - } - - public static void clearFoursquareUser(Context myContext) { - PreferencesHelper.setFoursquareToken(myContext, ""); - PreferencesHelper.setFoursquareConnected(myContext, false); - PreferencesHelper.setFoursquareUserId(myContext, ""); - PreferencesHelper.setFoursquareSuperuserLevel(myContext, 0); - } -} diff --git a/soup/src/main/java/com/thunsaker/soup/ui/FoursquareListFragment.java b/soup/src/main/java/com/thunsaker/soup/ui/FoursquareListFragment.java index 7563fd9..2b622ba 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/FoursquareListFragment.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/FoursquareListFragment.java @@ -174,7 +174,11 @@ public void onViewCreated(View view, Bundle savedInstanceState) { if(mSwipeViewFoursquareListItems != null) { mSwipeViewFoursquareListItems.setOnRefreshListener(this); - mSwipeViewFoursquareListItems.setColorScheme(R.color.foursquare_green, R.color.foursquare_orange, R.color.foursquare_green, R.color.foursquare_blue); + mSwipeViewFoursquareListItems.setColorSchemeColors( + getResources().getColor(R.color.foursquare_green), + getResources().getColor(R.color.foursquare_orange), + getResources().getColor(R.color.foursquare_green), + getResources().getColor(R.color.foursquare_blue)); } RefreshList(this); diff --git a/soup/src/main/java/com/thunsaker/soup/ui/ListActivity.java b/soup/src/main/java/com/thunsaker/soup/ui/ListActivity.java index 324d38d..eedaefb 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/ListActivity.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/ListActivity.java @@ -107,7 +107,7 @@ public boolean onOptionsItemSelected(MenuItem item) { @Override public void onItemSelected(String compactVenueJson) { Intent detailIntent = new Intent(this, VenueDetailActivity.class); - detailIntent.putExtra(VenueDetailFragment.ARG_ITEM_JSON_STRING,compactVenueJson); + detailIntent.putExtra(VenueDetailActivity.ARG_ITEM_JSON_STRING,compactVenueJson); detailIntent.putExtra(VenueDetailActivity.VENUE_DETAILS_SOURCE, VenueDetailActivity.VENUE_DETAIL_SOURCE_LIST); startActivity(detailIntent); } diff --git a/soup/src/main/java/com/thunsaker/soup/ui/ListsFragment.java b/soup/src/main/java/com/thunsaker/soup/ui/ListsFragment.java index a4e939d..ca6bd6e 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/ListsFragment.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/ListsFragment.java @@ -118,11 +118,11 @@ public void onViewCreated(View view, Bundle savedInstanceState) { ButterKnife.inject(this, view); if(mSwipeViewListsContainer != null) { mSwipeViewListsContainer.setOnRefreshListener(this); - mSwipeViewListsContainer.setColorScheme( - R.color.soup_green, - R.color.soup_blue, - R.color.soup_green, - R.color.soup_red); + mSwipeViewListsContainer.setColorSchemeColors( + getResources().getColor(R.color.soup_green), + getResources().getColor(R.color.soup_blue), + getResources().getColor(R.color.soup_green), + getResources().getColor(R.color.soup_red)); } RefreshLists(this); diff --git a/soup/src/main/java/com/thunsaker/soup/ui/MainActivity.java b/soup/src/main/java/com/thunsaker/soup/ui/MainActivity.java index ff62dfc..e7d6088 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/MainActivity.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/MainActivity.java @@ -6,34 +6,25 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; -import android.content.res.Configuration; import android.location.LocationManager; import android.net.Uri; import android.os.Bundle; -import android.support.v4.app.ActionBarDrawerToggle; +import android.support.design.widget.NavigationView; import android.support.v4.app.DialogFragment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.TaskStackBuilder; +import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; -import android.support.v7.app.ActionBar; +import android.support.v7.app.ActionBarDrawerToggle; +import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; -import android.view.View; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.LinearLayout; -import android.widget.ListView; import android.widget.Toast; -import com.crashlytics.android.Crashlytics; -import com.google.android.gms.ads.AdRequest; -import com.google.android.gms.ads.AdSize; -import com.google.android.gms.ads.AdView; import com.google.android.gms.maps.model.LatLng; import com.thunsaker.android.common.annotations.ForApplication; -import com.thunsaker.soup.BuildConfig; import com.thunsaker.soup.PreferencesHelper; import com.thunsaker.soup.R; import com.thunsaker.soup.app.BaseSoupActivity; @@ -44,16 +35,17 @@ import com.thunsaker.soup.services.AuthHelper; import com.thunsaker.soup.services.foursquare.FoursquarePrefs; import com.thunsaker.soup.services.foursquare.FoursquareTasks; -import com.thunsaker.soup.ui.settings.SettingsActivity; -import com.thunsaker.soup.ui.settings.SettingsLegacyActivity; import com.thunsaker.soup.util.Util; import javax.inject.Inject; +import butterknife.ButterKnife; +import butterknife.InjectView; import de.greenrobot.event.EventBus; public class MainActivity extends BaseSoupActivity implements - VenueListFragment.OnFragmentInteractionListener, + NavigationView.OnNavigationItemSelectedListener, + VenueListFragment.OnFragmentInteractionListener, ListsFragment.OnFragmentInteractionListener { @Inject @ForApplication @@ -68,18 +60,11 @@ public class MainActivity extends BaseSoupActivity implements @Inject LocationManager mLocationManager; - private String[] mDrawerItems; - private DrawerLayout mDrawerLayout; - private ActionBarDrawerToggle mDrawerToggle; - private String mTitle; - private String mDrawerTitle; - private ListView mDrawerList; - final String[] fragments = { "com.thunsaker.soup.ui.VenueListFragment", // Home - "com.thunsaker.soup.ui.CheckinHistoryActivity", // History - "com.thunsaker.soup.ui.ListsFragment", // Lists - "com.thunsaker.soup.ui.AboutFragment", // About - "com.thunsaker.soup.ui.WelcomeActivity" }; // Log Out - // "com.thunsaker.soup.ui.SettingsActivity" }; // Settings + @InjectView(R.id.drawer_layout) DrawerLayout mDrawerLayout; + + @InjectView(R.id.toolbar) Toolbar mToolbar; + + @InjectView(R.id.nav_view) NavigationView mNavView; private final static Uri soupProUri = Uri.parse("market://details?id=com.thunsaker.soup.pro"); @@ -88,7 +73,7 @@ public class MainActivity extends BaseSoupActivity implements public static LatLng currentLocation; - private AdView adView; +// private AdView adView; protected static final String HISTORY_PREVIEW_DIALOG = "HISTORY_PREVIEW_DIALOG"; protected static final String LOGOUT_CONFIRMATION_DIALOG = "LOGOUT_CONFIRMATION_DIALOG"; @@ -110,64 +95,56 @@ public class MainActivity extends BaseSoupActivity implements protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if(!BuildConfig.DEBUG) - Crashlytics.start(this); +// if(!BuildConfig.DEBUG) +// Crashlytics.start(this); mBus.register(this); handleIntent(getIntent()); - setContentView(R.layout.activity_main); - - mDrawerTitle = getString(R.string.app_name); - mTitle = getString(R.string.app_name); - - mDrawerItems = Util.IsProInstalled(mContext.getApplicationContext()) ? getResources() - .getStringArray(R.array.navigation_array_items_pro) - : getResources().getStringArray(R.array.navigation_array_items); - mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); - mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, - R.drawable.ic_navigation_drawer, R.string.drawer_open, - R.string.drawer_close) { - @Override - public void onDrawerClosed(View drawerView) { - getSupportActionBar().setTitle(mTitle); - } - - @Override - public void onDrawerOpened(View drawerView) { - getSupportActionBar().setTitle(mDrawerTitle); - } - }; - mDrawerList = (ListView) findViewById(R.id.left_drawer); - - mDrawerList.setAdapter(new ArrayAdapter(this, - R.layout.drawer_list_item, mDrawerItems)); - mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); - - // Set the drawer toggle as the DrawerListener - mDrawerLayout.setDrawerListener(mDrawerToggle); - - ActionBar ab = SetupActionBar(); + setContentView(R.layout.activity_nav); + ButterKnife.inject(this); + + setSupportActionBar(mToolbar); +// setupDrawerContent(mNavView); + + // TODO: Think about adding a FAB. +// FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); +// fab.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View view) { +// Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) +// .setAction("Search!", null).show(); +// } +// }); + + DrawerLayout drawer = + (DrawerLayout) findViewById(R.id.drawer_layout); + ActionBarDrawerToggle toggle = + new ActionBarDrawerToggle(this, drawer, mToolbar, + R.string.drawer_open, R.string.drawer_close); + drawer.setDrawerListener(toggle); + toggle.syncState(); + + NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); + navigationView.setNavigationItemSelectedListener(this); mFoursquareClient = new FoursquareClient( AuthHelper.FOURSQUARE_CLIENT_ID, AuthHelper.FOURSQUARE_CLIENT_SECRET, AuthHelper.FOURSQUARE_CALLBACK_URL); - FoursquareAuthorizationActivity.mFoursquareClient = mFoursquareClient; isFoursquareConnected = PreferencesHelper .getFoursquareConnected(getApplicationContext()); if (isFoursquareConnected) { if (Util.IsProInstalled(getApplicationContext())) { hideAds(); - - ab.setTitle(R.string.app_name_pro); + setTitle(R.string.app_name_pro); } else { showAds(); } - selectItem(0); + selectDrawerItem(null); checkSuperuserLevel(); @@ -186,6 +163,61 @@ public void onDrawerOpened(View drawerView) { } } + private void selectDrawerItem(MenuItem menuItem) { + Fragment fragment = null; + Class fragmentClass = VenueListFragment.class; + + if (menuItem != null) { + switch (menuItem.getItemId()) { + case R.id.nav_venues: + fragmentClass = VenueListFragment.class; + break; + case R.id.nav_history: + if (Util.IsProInstalled(mContext)) { + startActivity(new Intent(mContext, CheckinHistoryActivity.class)); + menuItem.setChecked(true); + } else { + DialogFragment historyPreviewDialog = new HistoryUpsellDialogFragment(); + historyPreviewDialog.show(getSupportFragmentManager(), + HISTORY_PREVIEW_DIALOG); + } + return; + case R.id.nav_lists: + if (Util.IsProInstalled(getApplicationContext())) { + fragmentClass = ListsFragment.class; + } else { + DialogFragment listsPreviewDialog = new ListsUpsellDialogFragment(); + listsPreviewDialog.show(getSupportFragmentManager(), + LISTS_PREVIEW_DIALOG); + return; + } + break; + case R.id.nav_about: + fragmentClass = AboutFragment.class; + break; + case R.id.nav_logout: + DialogFragment confirmationDialog = new LogOutDialogFragment(); + confirmationDialog.show(getSupportFragmentManager(), + LOGOUT_CONFIRMATION_DIALOG); + break; + } + + menuItem.setChecked(true); + setTitle(menuItem.getTitle()); + } + + try { + fragment = (Fragment) fragmentClass.newInstance(); + } catch (Exception ex) { + ex.printStackTrace(); + } + + FragmentManager fragmentManager = getSupportFragmentManager(); + fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); + + mDrawerLayout.closeDrawers(); + } + public void checkSuperuserLevel() { int superuserLevel = FoursquarePrefs.SUPERUSER.UNKNOWN; try { @@ -199,88 +231,79 @@ public void checkSuperuserLevel() { mFoursquareTasks.new GetUserInfo(FoursquarePrefs.FOURSQUARE_USER_SELF_SUFFIX).execute(); } - private ActionBar SetupActionBar() { - ActionBar ab = getSupportActionBar(); - ab.setDisplayHomeAsUpEnabled(true); - ab.setHomeButtonEnabled(true); - ab.setIcon(getResources().getDrawable(R.drawable.ic_launcher_white)); - return ab; - } - private void showAds() { - adView = new AdView(this); - adView.setAdSize(AdSize.BANNER); - adView.setAdUnitId(getString(R.string.admob_id)); - LinearLayout adLayout = (LinearLayout)findViewById(R.id.adViewLayoutWrapper); - adLayout.addView(adView); - - AdRequest adRequest = new AdRequest.Builder() - .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) - .addTestDevice("2B0F45ECB7E319BC2500CD6AFF1353CC") // N7 - 4.4.4 - .addTestDevice("D50AF454D0BF794B6A38811EEA1F21EE") // GS3 - 4.3 - .addTestDevice("6287716BED76BCE3BB981DD19AA858E1") // GS3 - 4.1 - .addTestDevice("FDC26B2E6C049E2E9ECE7C97D42A4726") // G2 - 2.3.4 - .addTestDevice("1BF36BBC3C197AFF96AF3F9F305CAD48") // N5 - L - .addTestDevice("D8FE76757F1CA9B485916499EC8C13DB") // MAXX - 4.4.2 - .build(); - - if(adView != null) - adView.loadAd(adRequest); +// adView = new AdView(this); +// adView.setAdSize(AdSize.BANNER); +// adView.setAdUnitId(getString(R.string.admob_id)); +// LinearLayout adLayout = (LinearLayout)findViewById(R.id.adViewLayoutWrapper); +// adLayout.addView(adView); +// +// AdRequest adRequest = new AdRequest.Builder() +// .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) +// .addTestDevice("2B0F45ECB7E319BC2500CD6AFF1353CC") // N7 - 4.4.4 +// .addTestDevice("D50AF454D0BF794B6A38811EEA1F21EE") // GS3 - 4.3 +// .addTestDevice("6287716BED76BCE3BB981DD19AA858E1") // GS3 - 4.1 +// .addTestDevice("FDC26B2E6C049E2E9ECE7C97D42A4726") // G2 - 2.3.4 +// .addTestDevice("1BF36BBC3C197AFF96AF3F9F305CAD48") // N5 - L +// .addTestDevice("D8FE76757F1CA9B485916499EC8C13DB") // MAXX - 4.4.2 +// .addTestDevice("B8588B68EF8E1193C85527B332B413D9") // S6 - 5.1.1 +// .build(); +// +// if(adView != null) +// adView.loadAd(adRequest); } private void hideAds() { - LinearLayout adLayout = (LinearLayout) findViewById(R.id.adViewLayoutWrapper); - adLayout.setVisibility(View.GONE); - - if (adView != null) - adView.destroy(); +// LinearLayout adLayout = (LinearLayout) findViewById(R.id.adViewLayoutWrapper); +// adLayout.setVisibility(View.GONE); +// +// if (adView != null) +// adView.destroy(); } private void ShowNavDrawer(boolean show) { if(!show) { - mDrawerLayout.openDrawer(mDrawerList); + mDrawerLayout.openDrawer(GravityCompat.START); PreferencesHelper.setShownNavDrawer(getApplicationContext(), true); } } - @Override + @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); - mDrawerToggle.syncState(); - } - - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - mDrawerToggle.onConfigurationChanged(newConfig); } @Override public boolean onOptionsItemSelected(MenuItem item) { - if (mDrawerToggle.onOptionsItemSelected(item)) { - return true; - } - switch (item.getItemId()) { - case R.id.action_search: - Intent searchActivity = new Intent(getApplicationContext(), VenueSearchActivity.class); - startActivity(searchActivity); - return true; - // case R.id.action_go_pro: - // startActivity(new Intent( - // Intent.ACTION_VIEW, - // MainActivity.soupProUri)); - // return true; - default: - return false; + case android.R.id.home: + mDrawerLayout.openDrawer(GravityCompat.START); + return true; + case R.id.action_search: + Intent searchActivity = new Intent(getApplicationContext(), VenueSearchActivity.class); + startActivity(searchActivity); + return true; + default: + return false; } } - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.main_menu, menu); - return super.onCreateOptionsMenu(menu); - } + @Override + public void onBackPressed() { + DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); + if (drawer.isDrawerOpen(GravityCompat.START)) { + drawer.closeDrawer(GravityCompat.START); + } else { + super.onBackPressed(); + } + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.main_menu, menu); + return true; + } @Override protected void onNewIntent(Intent intent) { @@ -300,12 +323,6 @@ public void handleIntent(Intent intent) { CheckinUser(checkinVenueId, checkinVenueName); } - @Override - public void setTitle(CharSequence title) { - mTitle = title.toString(); - getSupportActionBar().setTitle(mTitle); - } - public void ShowWelcomeActivity() { MainActivity.isFoursquareConnected = false; finish(); @@ -324,7 +341,7 @@ public void onFoursquareListClick(String foursquareListId) { @Override public void onVenueListClick(String compactVenueJson) { Intent detailIntent = new Intent(this, VenueDetailActivity.class); - detailIntent.putExtra(VenueDetailFragment.ARG_ITEM_JSON_STRING, compactVenueJson); + detailIntent.putExtra(VenueDetailActivity.ARG_ITEM_JSON_STRING, compactVenueJson); detailIntent.putExtra(VenueDetailActivity.VENUE_DETAILS_SOURCE, VenueDetailActivity.VENUE_DETAIL_SOURCE_MAIN); startActivity(detailIntent); } @@ -336,6 +353,12 @@ public boolean onVenueListLongClick(String venueId, String venueName) { return true; } + @Override + public boolean onNavigationItemSelected(MenuItem item) { + selectDrawerItem(item); + return true; + } + public static class HistoryUpsellDialogFragment extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { @@ -386,7 +409,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { @Override public void onClick(DialogInterface dialog, int which) { - FoursquareAuthorizationActivity + FoursquarePrefs .clearFoursquareUser(getActivity() .getApplicationContext()); startActivity(new Intent(getActivity() @@ -450,108 +473,20 @@ protected void onResume() { public void onPause() { mLocationManager = null; - if (adView != null) { - adView.pause(); - } +// if (adView != null) { +// adView.pause(); +// } super.onPause(); } @Override public void onDestroy() { - if (adView != null) { - hideAds(); - } +// if (adView != null) { +// hideAds(); +// } super.onDestroy(); } - private class DrawerItemClickListener implements - ListView.OnItemClickListener { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - selectItem(position); - } - } - - private void selectItem(int position) { - FragmentManager fragmentManager = getSupportFragmentManager(); - - switch (position) { - case 0: - // Venue List (VenueListFragment) - fragmentManager - .beginTransaction() - .replace(R.id.content_frame, VenueListFragment.newInstance(VenueListFragment.VENUE_LIST_TYPE_DEFAULT)) - .commit(); - mDrawerList.setItemChecked(position, true); - setTitle(getString(R.string.app_name)); - break; - case 1: // History - if (Util.IsProInstalled(mContext)) { - startActivity(new Intent(mContext, CheckinHistoryActivity.class)); - mDrawerList.setItemChecked(0, true); - } else { - DialogFragment historyPreviewDialog = new HistoryUpsellDialogFragment(); - historyPreviewDialog.show(getSupportFragmentManager(), - HISTORY_PREVIEW_DIALOG); - } - break; - case 2: // Lists - // TODO: Change my upsell dialog. Thinking, show the history page, - // but don't let them interact with anything, or show the old dialog - // as a fragment instead of a dialog - if (Util.IsProInstalled(getApplicationContext())) { - fragmentManager - .beginTransaction() - .replace( - R.id.content_frame, - Fragment.instantiate(MainActivity.this, - fragments[position]) - ).commit(); - - mDrawerList.setItemChecked(position, true); - setTitle(mDrawerItems[position]); - } else { - DialogFragment listsPreviewDialog = new ListsUpsellDialogFragment(); - listsPreviewDialog.show(getSupportFragmentManager(), - LISTS_PREVIEW_DIALOG); - } - break; - case 4: // Log out - DialogFragment confirmationDialog = new LogOutDialogFragment(); - confirmationDialog.show(getSupportFragmentManager(), - LOGOUT_CONFIRMATION_DIALOG); - break; - case 5: // Settings - Intent settingsIntent; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) - settingsIntent = new Intent(getApplicationContext(), SettingsActivity.class); - else - settingsIntent = new Intent(getApplicationContext(), SettingsLegacyActivity.class); - - if (Util.IsProInstalled(getApplicationContext())) { - settingsIntent.putExtra(SettingsActivity.EXTRA_IS_PRO, Util.IsProInstalled(getApplicationContext())); - } - startActivity(settingsIntent); - - mDrawerList.setItemChecked(0, true); - break; - default: // About and others - fragmentManager - .beginTransaction() - .replace( - R.id.content_frame, - Fragment.instantiate(MainActivity.this, - fragments[position]) - ).commit(); - - mDrawerList.setItemChecked(position, true); - setTitle(mDrawerItems[position]); - break; - } - - mDrawerLayout.closeDrawer(mDrawerList); - } - public void CheckinUser(String id, String name) { if(Util.HasInternet(mContext)) { mFoursquareTasks.new PostUserCheckin(id, name, "", currentLocation).execute(); @@ -564,6 +499,7 @@ private void NoInternet() { Toast.makeText(mContext, R.string.alert_no_internet, Toast.LENGTH_SHORT).show(); } + public void onEvent(VenueSearchEvent event) { if(Util.HasInternet(mContext)) mFoursquareTasks.new GetClosestVenuesNew(event.searchQuery, event.searchLocation, event.duplicateVenueId, event.listType).execute(); diff --git a/soup/src/main/java/com/thunsaker/soup/ui/VenueDetailActivity.java b/soup/src/main/java/com/thunsaker/soup/ui/VenueDetailActivity.java index d42beb7..936e24f 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/VenueDetailActivity.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/VenueDetailActivity.java @@ -1,37 +1,121 @@ package com.thunsaker.soup.ui; +import android.annotation.SuppressLint; +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.SearchManager; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; -import android.graphics.drawable.ColorDrawable; +import android.net.Uri; +import android.os.Build; import android.os.Bundle; +import android.support.design.widget.FloatingActionButton; +import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentManager; -import android.support.v7.app.ActionBar; +import android.support.v4.widget.SwipeRefreshLayout; +import android.support.v7.widget.Toolbar; +import android.text.Html; import android.view.Menu; +import android.view.MenuItem; +import android.view.View; import android.view.Window; +import android.view.animation.AnimationUtils; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ProgressBar; +import android.widget.RelativeLayout; +import android.widget.TextView; +import android.widget.Toast; +import com.google.android.gms.maps.CameraUpdateFactory; +import com.google.android.gms.maps.GoogleMap; +import com.google.android.gms.maps.GoogleMap.OnMapClickListener; +import com.google.android.gms.maps.GoogleMapOptions; +import com.google.android.gms.maps.SupportMapFragment; +import com.google.android.gms.maps.model.BitmapDescriptorFactory; +import com.google.android.gms.maps.model.LatLng; +import com.google.android.gms.maps.model.MarkerOptions; +import com.squareup.picasso.Picasso; import com.thunsaker.android.common.annotations.ForApplication; +import com.thunsaker.soup.PreferencesHelper; import com.thunsaker.soup.R; import com.thunsaker.soup.app.BaseSoupActivity; +import com.thunsaker.soup.app.SoupApp; +import com.thunsaker.soup.data.api.model.Category; +import com.thunsaker.soup.data.api.model.CompactVenue; +import com.thunsaker.soup.data.api.model.FoursquareImage; +import com.thunsaker.soup.data.api.model.TimeFrame; +import com.thunsaker.soup.data.api.model.Venue; +import com.thunsaker.soup.data.events.FlagVenueEvent; +import com.thunsaker.soup.data.events.GetVenueEvent; +import com.thunsaker.soup.data.events.GetVenueHoursEvent; +import com.thunsaker.soup.services.foursquare.FoursquarePrefs; import com.thunsaker.soup.services.foursquare.FoursquareTasks; +import com.thunsaker.soup.util.Util; + +import java.util.List; import javax.inject.Inject; +import butterknife.ButterKnife; +import butterknife.InjectView; +import butterknife.OnClick; +import de.greenrobot.event.EventBus; + /* * Created by @thunsaker */ -public class VenueDetailActivity extends BaseSoupActivity { +public class VenueDetailActivity extends BaseSoupActivity + implements SwipeRefreshLayout.OnRefreshListener { @Inject @ForApplication Context mContext; -// @Inject -// EventBus mBus; - @Inject FoursquareTasks mFoursquareTasks; - public static boolean wasEdited; + @Inject + EventBus mBus; + + @InjectView(R.id.swipeLayoutVenueDetailsContainer) SwipeRefreshLayout mSwipeViewVenueDetailsContainer; + @InjectView(R.id.relativeLayoutVenueDetailsWrapper) RelativeLayout mContentWrapper; + @InjectView(R.id.relativeLayoutVenueWrapperInner) RelativeLayout mContentWrapperInner; + + @InjectView(R.id.textViewVenueDetailsName) TextView mName; + + @InjectView(R.id.textViewVenueAddress) TextView mAddress; + @InjectView(R.id.textViewVenueAddressLine2) TextView mAddress2; + + @InjectView(R.id.relativeLayoutVenuePhoneWrapper) RelativeLayout mPhoneWrapper; + @InjectView(R.id.textViewVenuePhone) TextView mPhone; + @InjectView(R.id.relativeLayoutVenueTwitterWrapper) RelativeLayout mTwitterWrapper; + @InjectView(R.id.textViewVenueTwitter) TextView mTwitter; + @InjectView(R.id.relativeLayoutVenueUrlWrapper) RelativeLayout mUrlWrapper; + @InjectView(R.id.textViewVenueUrl) TextView mUrl; + @InjectView(R.id.textViewVenueCrossStreet) TextView mCrossStreet; + + @InjectView(R.id.relativeLayoutVenueDescription) RelativeLayout mDescriptionWrapper; + @InjectView(R.id.progressBarVenueDescription) ProgressBar mDescriptionProgress; + @InjectView(R.id.textViewVenueDescription) TextView mDescription; + @InjectView(R.id.relativeLayoutVenueDetailError) RelativeLayout mDetailError; + + @InjectView(R.id.relativeLayoutVenueHoursWrapper) RelativeLayout mHoursWrapper; + @InjectView(R.id.linearLayoutHoursListContainer) LinearLayout mHoursList; + + @InjectView(R.id.relativeLayoutVenueCategoriesWrapper) RelativeLayout mCategoryWrapper; + @InjectView(R.id.imageViewVenueCategoryPrimary) ImageView mCategoryPrimaryIcon; + @InjectView(R.id.textViewVenueCategoryPrimary) TextView mCategoryPrimaryText; + @InjectView(R.id.linearLayoutVenueCategoriesList) LinearLayout mCategoryList; - private boolean showHomeUp = true; + @InjectView(R.id.fragmentMapWrapper) FrameLayout mMapFragmentWrapper; + + @InjectView(R.id.fabVenueDetail) FloatingActionButton mFabEdit; + + @InjectView(R.id.toolbarVenueDetail) Toolbar mToolbar; + + public static boolean wasEdited; public static final String VENUE_TO_LOAD_EXTRA = "VENUE_TO_LOAD_EXTRA"; public static final String VENUE_URL_TO_LOAD_EXTRA = "VENUE_URL_TO_LOAD_EXTRA"; @@ -47,33 +131,89 @@ public class VenueDetailActivity extends BaseSoupActivity { public static String venueIdToLoad = ""; public static int venueDetailsSource = 0; + private static final String ARG_VENUE_ARG_TYPE = "arg_type"; + private static final String ARG_VENUE_TO_LOAD = "venue_arg"; + + public static final int VENUE_TYPE_ID = 0; + public static final int VENUE_TYPE_URL = 1; + public static final int VENUE_TYPE_JSON = 2; + + public static final String ARG_ITEM_JSON_STRING = "item_json_string"; + public static final String VENUE_EDIT_EXTRA = "compact_venue_original"; + protected static final String FLAG_VENUE_DIALOG = "FLAG_VENUE_DIALOG"; + protected static final String FLAG_DUPLICATE_VENUE_DIALOG = "FLAG_DUPLICATE_VENUE_DIALOG"; + + public static Venue currentVenue; + public static Integer currentFlagItem = 0; + + private static GoogleMap mMap; + public final static double mapMarkerAdjustment = 0.0010; + protected static final int EDIT_VENUE = 0; + protected static final int FLAG_DUPLICATE = 1; + + protected static final float MAP_ZOOMED_OUT_LEVEL = 12; + protected static final float MAP_DEFAULT_ZOOM_LEVEL = 16; + + static CompactVenue duplicateResultVenue; + static int duplicateResultType = 0; + static String originalId; + static String duplicateId; + static boolean showConfirmDialog = false; + static boolean zoomedOut = false; + private boolean isExpanded = true; + private float originalPosition; + + public SupportMapFragment mMapFragment; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); - } + } setContentView(R.layout.activity_venue_detail); - ActionBar ab = getSupportActionBar(); - ab.setDisplayHomeAsUpEnabled(true); - ab.setDisplayUseLogoEnabled(true); - ab.setDisplayShowHomeEnabled(true); - ab.setTitle(null); - ab.setIcon(R.drawable.transparent_square); + ButterKnife.inject(this); - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { - ab.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.black_super_transparent))); - ab.setSplitBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.black_super_transparent))); - ab.setStackedBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.black_super_transparent))); + setSupportActionBar(mToolbar); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + setTitle(""); + + if(mBus != null && !mBus.isRegistered(this)) + mBus.register(this); + + if(mSwipeViewVenueDetailsContainer != null) { + mSwipeViewVenueDetailsContainer.setOnRefreshListener(this); + mSwipeViewVenueDetailsContainer.setColorSchemeColors( + getResources().getColor(R.color.soup_green), + getResources().getColor(R.color.soup_blue), + getResources().getColor(R.color.soup_green), + getResources().getColor(R.color.soup_red)); + mSwipeViewVenueDetailsContainer.setRefreshing(true); } - setSupportProgressBarVisibility(true); - setSupportProgressBarIndeterminate(true); + GoogleMapOptions options = new GoogleMapOptions() + .mapType(GoogleMap.MAP_TYPE_NORMAL) + .zoomControlsEnabled(false) + .zoomGesturesEnabled(true) + .compassEnabled(false) + .rotateGesturesEnabled(false) + .scrollGesturesEnabled(false) + .tiltGesturesEnabled(false); + + mMapFragment = SupportMapFragment.newInstance(options); + getSupportFragmentManager() + .beginTransaction() + .replace(R.id.fragmentMapWrapper, mMapFragment) + .commit(); + mMapFragmentWrapper.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.fade_in)); handleIntent(getIntent()); + + if (currentVenue != null) + ReloadDetails(); } @Override @@ -82,35 +222,36 @@ protected void onNewIntent(Intent intent) { } public void handleIntent(Intent intent) { - FragmentManager fragmentManager = getSupportFragmentManager(); - VenueDetailFragment venueDetailFragment = VenueDetailFragment.newInstance(null, -1); - if (intent.hasExtra(VENUE_URL_TO_LOAD_EXTRA)) { // Venue Url - from VenueDetailActivity Receiver - getSupportActionBar().setDisplayHomeAsUpEnabled(false); - venueDetailFragment = VenueDetailFragment.newInstance(intent.getStringExtra(VENUE_URL_TO_LOAD_EXTRA), VenueDetailFragment.VENUE_TYPE_URL); + currentVenue = null; + mFoursquareTasks.new GetVenue( + intent.getStringExtra(VENUE_URL_TO_LOAD_EXTRA), + FoursquarePrefs.CALLER_SOURCE_DETAILS_INTENT, true).execute(); } else if (intent.hasExtra(VENUE_TO_LOAD_EXTRA)) { // Venue Id - from other screens (History, List, etc) - venueDetailFragment = VenueDetailFragment.newInstance(intent.getStringExtra(VENUE_TO_LOAD_EXTRA), VenueDetailFragment.VENUE_TYPE_ID); - } else if (intent.hasExtra(VenueDetailFragment.ARG_ITEM_JSON_STRING)) { // Venue JSON - From VenueListFragment - venueDetailFragment = VenueDetailFragment.newInstance(intent.getStringExtra(VenueDetailFragment.ARG_ITEM_JSON_STRING), VenueDetailFragment.VENUE_TYPE_JSON); + Venue mVenue = currentVenue = + Venue.ConvertCompactVenueToVenue( + CompactVenue.GetCompactVenueFromJson( + intent.getStringExtra(VENUE_TO_LOAD_EXTRA))); + mFoursquareTasks.new GetVenue(mVenue.id, + FoursquarePrefs.CALLER_SOURCE_DETAILS, true).execute(); + } else if (intent.hasExtra(VenueDetailActivity.ARG_ITEM_JSON_STRING)) { // Venue JSON - From VenueListFragment + Venue mVenue = currentVenue = + Venue.ConvertCompactVenueToVenue( + CompactVenue.GetCompactVenueFromJson( + intent.getStringExtra( + VenueDetailActivity.ARG_ITEM_JSON_STRING))); + currentVenue = null; + mFoursquareTasks.new GetVenue( + mVenue.id, + FoursquarePrefs.CALLER_SOURCE_DETAILS, true).execute(); } - - if (venueDetailFragment != null) - fragmentManager - .beginTransaction() - .add(R.id.venue_detail_container, venueDetailFragment) - .commit(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - return super.onCreateOptionsMenu(menu); } @Override public void onBackPressed() { super.onBackPressed(); venueIdToLoad = ""; - VenueDetailFragment.currentVenue = null; + VenueDetailActivity.currentVenue = null; VenueEditCategoriesActivity.currentVenue = null; } @@ -121,4 +262,750 @@ public void FlagVenue(String id, int type) { public void FlagVenueDuplicate(String id, int type, String dupeId) { mFoursquareTasks.new FlagVenue(id, type, dupeId).execute(); } + + public void ReloadDetails() { + try { +// switch (type) { +// case 1: // Secondary +// LoadHours(); +// LoadDescription(); +// break; +// case 2: // All the things! + LoadMap(); + LoadDetails(); + LoadCategories(); + LoadHours(); + LoadDescription(); +// break; +// default: // Compact Venue +// LoadMap(); +// LoadDetails(); +// LoadCategories(); +// break; +// } +// +// LoadHours(); +// LoadDescription(); + + if(mContentWrapper.getVisibility() == View.GONE || mContentWrapper.getVisibility() == View.INVISIBLE) { + mContentWrapper.setVisibility(View.VISIBLE); + mContentWrapper.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.fade_in)); + } + + VenueDetailActivity.wasEdited = false; + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void LoadMap() { + if(mMapFragment != null) + mMap = mMapFragment.getMap(); + + if (mMap != null) { + LatLng currentLocation = new LatLng(33.44866, -112.06627); + mMap.clear(); + mMap.addMarker(new MarkerOptions() + .position(currentLocation) + .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_marker_orange_refined_outline))); + mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLocation, MAP_DEFAULT_ZOOM_LEVEL)); + } + + if (currentVenue != null && currentVenue.location != null + && currentVenue.location.getLatLng() != null) + setUpMap(currentVenue.location.getLatLng()); + } + + public void LoadDetails() { + mName.setText(currentVenue.name); + + mAddress.setText(currentVenue.location.address); + mAddress2.setText(currentVenue.location.getCityStatePostalCode()); + mCrossStreet.setText(currentVenue.location.crossStreet); + + if(mAddress.getText().length() > 0) + mAddress.setVisibility(View.VISIBLE); + else + mAddress.setVisibility(View.GONE); + + if(mAddress2.getText().length() > 0) + mAddress2.setVisibility(View.VISIBLE); + else + mAddress2.setVisibility(View.GONE); + + if(mCrossStreet.getText().length() > 0) + mCrossStreet.setVisibility(View.VISIBLE); + else + mCrossStreet.setVisibility(View.GONE); + + if(currentVenue.contact != null) { + mPhone.setText( + currentVenue.contact.formattedPhone != null + ? currentVenue.contact.formattedPhone + : currentVenue.contact.phone); + mTwitter.setText(currentVenue.contact.twitter); + } + + mUrl.setText(currentVenue.url != null ? currentVenue.url.replace("http://","").replace("https://","") : ""); + + + if(mPhone.getText().length() > 0) + mPhoneWrapper.setVisibility(View.VISIBLE); + else + mPhoneWrapper.setVisibility(View.GONE); + + + if(mTwitter.getText().length() > 0) + mTwitterWrapper.setVisibility(View.VISIBLE); + else + mTwitterWrapper.setVisibility(View.GONE); + + if(mUrl.getText().length() > 0) + mUrlWrapper.setVisibility(View.VISIBLE); + else + mUrlWrapper.setVisibility(View.GONE); + } + + public void LoadCategories() { + boolean isPrimarySet = false; + + List myCategories; + myCategories = currentVenue.categories != null ? currentVenue.categories : null; + + if (myCategories != null) { + mCategoryWrapper.setVisibility(View.VISIBLE); + Picasso mPicasso = Picasso.with(mContext); + + for (Category cat : myCategories) { + String imageUrl = cat.icon.getFoursquareLegacyImageUrl(FoursquareImage.SIZE_MEDIANO, false); + if(!isPrimarySet) { + mCategoryList.setVisibility(View.GONE); + if (!imageUrl.equals("")) { +// mPicasso.load(imageUrl).placeholder(R.drawable.foursquare_generic_category_icon).into(mVenueIcon); + mPicasso.load(imageUrl).placeholder(R.drawable.foursquare_generic_category_icon).into(mCategoryPrimaryIcon); + + String name = cat.name; + int color = Util.GetCategoryColor(name.charAt(0), mContext); +// mVenueIcon.setBackgroundColor(color); + mCategoryPrimaryText.setText(name); + } + isPrimarySet = true; + return; + } +// } else { +// mCategoryList.setVisibility(View.VISIBLE); +// if (!imageUrl.equals("")) { +// LinearLayout listItem = (LinearLayout) getActivity().getLayoutInflater().inflate(R.layout.list_category_item_material, mCategoryList); +// mPicasso.load(imageUrl).placeholder(R.drawable.foursquare_generic_category_icon).into((ImageView) listItem.findViewById(R.id.category_icon)); +// ((TextView) listItem.findViewById(R.id.category_title)).setText(cat.name); +// } +// } + } + } else { + mCategoryList.setVisibility(View.GONE); +// mVenueIcon.setImageResource(R.drawable.foursquare_generic_category_icon); +// mVenueIcon.setBackgroundColor(mContext.getResources().getColor(R.color.gray_light_super)); + mCategoryPrimaryIcon.setImageResource(R.drawable.foursquare_generic_category_icon); + mCategoryPrimaryText.setText("No categories"); + } + } + + @SuppressLint("NewApi") + public void LoadDescription() { + if(currentVenue.description != null) { + if (mDescription != null) { + mDescription.setText(currentVenue.description ); + + mDescriptionWrapper.setVisibility(View.VISIBLE); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + mDescription.setAlpha(0f); + mDescription.setVisibility(View.VISIBLE); + + mDescription.animate() + .alpha(1f) + .setDuration(1000) + .setListener(null); + + mDescriptionProgress.animate() + .alpha(0f) + .setDuration(1000) + .setListener(new android.animation.AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(android.animation.Animator animation) { + mDescriptionProgress.setVisibility(View.GONE); + } + }); + } else { + mDescriptionProgress.setVisibility(View.GONE); + mDescriptionProgress.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.fade_out)); + + mDescription.setVisibility(View.VISIBLE); + mDescription.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.fade_in)); + } + } + } else { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + mDescriptionProgress.animate() + .alpha(0f) + .setDuration(1000) + .setListener(new android.animation.AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(android.animation.Animator animation) { + mDescriptionProgress.setVisibility(View.GONE); + mDescriptionWrapper.setVisibility(View.GONE); + } + }); + } else { + mDescriptionProgress.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.fade_out)); + mDescriptionProgress.setVisibility(View.GONE); + mDescriptionWrapper.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.fade_out)); + mDescriptionWrapper.setVisibility(View.GONE); + } + + } + } + + public void LoadHours() { + if(currentVenue.venueHours != null && currentVenue.venueHours.timeFrames != null && currentVenue.venueHours.timeFrames.size() > 0) { + mHoursWrapper.setVisibility(View.VISIBLE); + if(mHoursList.getChildCount() == currentVenue.venueHours.timeFrames.size()) + return; + + int i = 0; + for (TimeFrame time : currentVenue.venueHours.timeFrames) { + LinearLayout listItem = (LinearLayout) getLayoutInflater().inflate(R.layout.list_hours_item_single_line, null); + ((TextView)listItem.findViewById(R.id.textViewVenueDetailsHoursDay)).setText(time.daysString); + ((TextView)listItem.findViewById(R.id.textViewVenueDetailsHoursTime)).setText(time.openTimesString); + mHoursList.addView(listItem, i); + i++; + } + } else { + mHoursWrapper.setVisibility(View.GONE); + } + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + menu.clear(); + getMenuInflater().inflate(R.menu.activity_venue_detail, menu); + return super.onCreateOptionsMenu(menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + this.finish(); + break; + case R.id.action_duplicate: + OpenDuplicateSearch(); + break; + case R.id.action_flag: + ShowFlagDialog(); + break; + case R.id.action_categories: + OpenEditCategories(); + break; + case R.id.action_foursquare: + OpenFoursquareApp(); + break; + } + + return true; + } + + public void OpenFoursquareApp() { + String canonicalUrl = ""; + if (currentVenue != null + && currentVenue.canonicalUrl != null + && !currentVenue.canonicalUrl.equals("") + && currentVenue.canonicalUrl.length() > 0) + canonicalUrl = currentVenue.canonicalUrl; + + if (canonicalUrl != null && canonicalUrl.length() > 0) + startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(canonicalUrl))); + else + Toast.makeText(mContext, R.string.alert_error_loading_details, Toast.LENGTH_SHORT).show(); + } + + public void OpenDuplicateSearch() { + if (!PreferencesHelper.getFoursquareConnected(mContext)) { + showWelcomeActivity(); + } else { + if (currentVenue != null) { + OpenSearchDuplicateDialog(); + } else { + Toast.makeText(mContext, R.string.alert_still_loading, + Toast.LENGTH_SHORT).show(); + } + } + } + + public void ShowFlagDialog() { + if (!PreferencesHelper.getFoursquareConnected(mContext)) { + showWelcomeActivity(); + } else { + if (currentVenue != null) { + DialogFragment flagDialog = new FlagVenueDialogFragment(); + flagDialog.show(getSupportFragmentManager(), + FLAG_VENUE_DIALOG); + } else { + Toast.makeText(mContext, R.string.alert_still_loading, + Toast.LENGTH_SHORT).show(); + } + } + } + + public void OpenEditCategories() { + if (!PreferencesHelper.getFoursquareConnected(mContext)) { + showWelcomeActivity(); + } else { + if (currentVenue != null) { + Intent editVenueCategoriesIntent = new Intent(mContext, VenueEditCategoriesActivity.class); + editVenueCategoriesIntent.putExtra(VENUE_EDIT_EXTRA, currentVenue.toString()); + startActivity(editVenueCategoriesIntent); + } else { + Toast.makeText(mContext, R.string.alert_still_loading, Toast.LENGTH_SHORT).show(); + } + } + } + + public void OpenEditVenue() { + if (!PreferencesHelper.getFoursquareConnected(mContext)) { + showWelcomeActivity(); + } else { + if (currentVenue != null) { + Intent editVenueIntent = new Intent(mContext, VenueEditTabsActivity.class); + editVenueIntent.putExtra(VENUE_EDIT_EXTRA, currentVenue.toString()); + startActivityForResult(editVenueIntent, EDIT_VENUE); + } else { + Toast.makeText(mContext, R.string.alert_still_loading, Toast.LENGTH_SHORT).show(); + } + } + } + + private void showWelcomeActivity() { + Intent welcomeActivity = new Intent(this + .getApplicationContext(), WelcomeActivity.class); + // welcomeActivity.putExtra(WelcomeActivity.EXTRA_VENUE_BEFORE_AUTH, + // currentCompactVenue.toString()); + welcomeActivity.putExtra( + WelcomeActivity.EXTRA_VENUE_ID_BEFORE_AUTH, currentVenue != null ? currentVenue.id : ""); + startActivity(welcomeActivity); + finish(); + } + + private void OpenSearchDuplicateDialog() { + try { + Intent mySearchForDuplicateIntent = new Intent(mContext, VenueSearchActivity.class) + .setAction(Intent.ACTION_SEARCH); + + String myVenueName = currentVenue != null ? currentVenue.name : ""; + mySearchForDuplicateIntent.putExtra(SearchManager.QUERY, myVenueName); + + String myVenueLocation = + currentVenue != null + ? currentVenue.location.getLatLngString() + : ""; + mySearchForDuplicateIntent.putExtra(FoursquarePrefs.SEARCH_LOCATION, myVenueLocation); + mySearchForDuplicateIntent.putExtra(FoursquarePrefs.SEARCH_DUPLICATE, true); + mySearchForDuplicateIntent.putExtra( + FoursquarePrefs.SEARCH_DUPLICATE_VENUE_ID, currentVenue != null + ? currentVenue.id : 0); + + startActivityForResult(mySearchForDuplicateIntent, VenueDetailActivity.FLAG_DUPLICATE); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void setUpMap(LatLng myLatLng) { + try { + if (mMap == null) { + mMap = mMapFragment.getMap(); + } + + if (mMap != null) { + mMap.clear(); + mMap.addMarker(new MarkerOptions().position(myLatLng).icon( + BitmapDescriptorFactory + .fromResource(R.drawable.map_marker_orange_outline))); + + final LatLng adjustedCurrentLocation = new LatLng( + myLatLng.latitude + mapMarkerAdjustment, + myLatLng.longitude); + mMap.moveCamera( + CameraUpdateFactory.newLatLngZoom(adjustedCurrentLocation, MAP_DEFAULT_ZOOM_LEVEL)); + + mMap.setOnMapClickListener(new OnMapClickListener() { + @Override + public void onMapClick(LatLng newPoint) { + if (zoomedOut) { + mMap.animateCamera(CameraUpdateFactory + .newLatLngZoom(adjustedCurrentLocation, + MAP_DEFAULT_ZOOM_LEVEL)); + zoomedOut = false; + } else { + mMap.animateCamera(CameraUpdateFactory + .newLatLngZoom(adjustedCurrentLocation, + MAP_ZOOMED_OUT_LEVEL)); + zoomedOut = true; + } + } + }); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onRefresh() { + RefreshVenueData(); + } + + public void RefreshVenueData() { + if(currentVenue != null) { + mSwipeViewVenueDetailsContainer.setRefreshing(true); + FoursquareTasks mFoursquareTasks = new FoursquareTasks((SoupApp) mContext); + mFoursquareTasks.new GetVenue(currentVenue.id, FoursquarePrefs.CALLER_SOURCE_DETAILS, true).execute(); + } + } + + public static class FlagVenueDialogFragment extends DialogFragment { + + // TODO: Implement newInstance fragment pattern + public FlagVenueDialogFragment() { + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setTitle(R.string.venue_details_dialog_flag_message) + .setPositiveButton( + R.string.venue_details_dialog_flag_venue, + new DialogInterface.OnClickListener() { + @SuppressLint("AppCompatMethod") + @Override + public void onClick(DialogInterface dialog, int which) { + if(getActivity() != null) + getActivity().setProgressBarVisibility(true); + + String venueId = ""; + if (currentVenue != null) + venueId = currentVenue.id; + else if (VenueDetailActivity.venueIdToLoad.length() > 0) + venueId = VenueDetailActivity.venueIdToLoad; + + ((VenueDetailActivity)getActivity()).FlagVenue(venueId, currentFlagItem); + } + }) + .setNegativeButton(R.string.dialog_cancel, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + dialog.dismiss(); + } + }) + .setSingleChoiceItems( + R.array.venue_details_flag_venue_categories, 0, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + currentFlagItem = which; + } + }); + return builder.create(); + } + } + + public static class FlagDuplicateVenueDialogFragment extends DialogFragment { + + public FlagDuplicateVenueDialogFragment() { + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + String flagDuplicateMessage = ""; + switch (duplicateResultType) { + case 0: // VenueSearchActivity.DUPLICATE_VENUE + flagDuplicateMessage = String + .format(getString(R.string.venue_details_dialog_flag_duplicate_message), + duplicateResultVenue.name, + currentVenue.name); + break; + case 1: // VenueSearchActivity.ORIGINAL_VENUE + if (currentVenue != null) + flagDuplicateMessage = String + .format(getString(R.string.venue_details_dialog_flag_duplicate_message), + currentVenue.name, + duplicateResultVenue.name); + break; + } + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setTitle(R.string.venue_details_dialog_flag_duplicate_title) + .setPositiveButton(R.string.dialog_yes, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + if(getActivity() != null) + getActivity().setProgressBarVisibility(true); + + ((VenueDetailActivity)getActivity()).FlagVenueDuplicate(originalId, currentFlagItem, duplicateId); + ClearFlagDuplicateValues(); + } + }) + .setNegativeButton(R.string.dialog_no, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + ClearFlagDuplicateValues(); + dialog.dismiss(); + } + }).setMessage(Html.fromHtml(flagDuplicateMessage)); + return builder.create(); + } + + @Override + public void show(FragmentManager manager, String tag) { + // TODO Auto-generated method stub + super.show(manager, tag); + } + } + + @Override + public void onDestroy() { + currentVenue = null; + super.onDestroy(); + } + + @Override + public void onResume() { + super.onResume(); + + if(mBus != null && !mBus.isRegistered(this)) + mBus.register(this); + + if (showConfirmDialog) { + if (duplicateResultVenue != null && originalId != null + && duplicateId != null) { + DialogFragment flagDuplicateDialog = new FlagDuplicateVenueDialogFragment(); + flagDuplicateDialog.show(getSupportFragmentManager(), + FLAG_DUPLICATE_VENUE_DIALOG); + } + showConfirmDialog = false; + } else { + FoursquareTasks mFoursquareTasks = new FoursquareTasks((SoupApp) mContext); + if (currentVenue != null) { + mFoursquareTasks.new GetVenue(currentVenue.id, FoursquarePrefs.CALLER_SOURCE_DETAILS, true).execute(); + } else if (VenueDetailActivity.venueIdToLoad.length() > 0) { + mFoursquareTasks.new GetVenue(VenueDetailActivity.venueIdToLoad, FoursquarePrefs.CALLER_SOURCE_DETAILS, true).execute(); + } + } + + // DEBUG Email +// if (VenueEndpoint.SEND_DEBUG_EMAIL +// && VenueEditTabsActivity.mDebugString != null) { +// Intent debugIntent = new Intent(Intent.ACTION_SEND); +// debugIntent.setType("message/rfc822"); +// debugIntent.putExtra(Intent.EXTRA_SUBJECT, "Soup Debug Data"); +// debugIntent.putExtra(Intent.EXTRA_TEXT, +// VenueEditTabsActivity.mDebugString); +// debugIntent.putExtra(Intent.EXTRA_EMAIL, +// new String[] { "android+soup+debug@thomashunsaker.com" }); +// Intent mailerIntent = Intent.createChooser(debugIntent, null); +// startActivity(mailerIntent); +// VenueEditTabsActivity.mDebugString = null; +// } + } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + switch (requestCode) { + case EDIT_VENUE: + switch (resultCode) { + case Activity.RESULT_OK: + String resultData = null; + if (data.hasExtra(VenueEditTabsActivity.EDIT_VENUE_RESULT)) + resultData = data.getStringExtra(VenueEditTabsActivity.EDIT_VENUE_RESULT); + + assert resultData != null; + if (resultData.equals(FoursquarePrefs.SUCCESS)) { + FoursquareTasks mFoursquareTasks = new FoursquareTasks((SoupApp) mContext); + mFoursquareTasks.new GetVenue(currentVenue.id, + FoursquarePrefs.CALLER_SOURCE_DETAILS, true).execute(); + mSwipeViewVenueDetailsContainer.setRefreshing(true); + } + break; + default: + break; + } + break; + case FLAG_DUPLICATE: + switch (resultCode) { + case Activity.RESULT_OK: + if (currentVenue != null) { + duplicateResultVenue = null; + duplicateResultType = 0; + originalId = null; + duplicateId = null; + + if (data.hasExtra(VenueSearchActivity.SELECTED_DUPLICATE_VENUE)) + duplicateResultVenue = CompactVenue + .GetCompactVenueFromJson(data + .getStringExtra(VenueSearchActivity.SELECTED_DUPLICATE_VENUE)); + + if (data.hasExtra(VenueSearchActivity.SELECTED_DUPLICATE_VENUE_TYPE)) + duplicateResultType = data + .getIntExtra( + VenueSearchActivity.SELECTED_DUPLICATE_VENUE_TYPE, + 0); + + switch (duplicateResultType) { + case 0: // VenueSearchActivity.DUPLICATE_VENUE + originalId = currentVenue.id; + duplicateId = duplicateResultVenue.id; + break; + + case 1: // VenueSearchActivity.ORIGINAL_VENUE + originalId = duplicateResultVenue.id; + duplicateId = currentVenue.id; + break; + } + + if (duplicateResultVenue != null && originalId != null + && duplicateId != null) { + showConfirmDialog = true; + } + } + break; + default: + ClearFlagDuplicateValues(); + break; + } + break; + } + } + + protected static void ClearFlagDuplicateValues() { + originalId = ""; + duplicateId = ""; + duplicateResultType = 0; + duplicateResultVenue = null; + } + + public void onEvent(GetVenueEvent event) { + mSwipeViewVenueDetailsContainer.setRefreshing(false); + + boolean error = false; + if(event != null) { + if(event.resultVenue != null) { + if(event.withHours) + mFoursquareTasks.new GetVenueHours(event.resultVenue.id, event.source).execute(); + + currentVenue = event.resultVenue; + ReloadDetails(); + } else { + error = true; + } + } else { + error = true; + } + + if(error) { + mFabEdit.hide(); + mContentWrapperInner.setVisibility(View.GONE); + mDetailError.setVisibility(View.VISIBLE); + } else { + mFabEdit.show(); + mContentWrapperInner.setVisibility(View.VISIBLE); + mDetailError.setVisibility(View.GONE); + } + } + + public void onEvent(GetVenueHoursEvent event) { +// if(getActivity() != null) +// getActivity().setProgressBarVisibility(false); + + mSwipeViewVenueDetailsContainer.setRefreshing(false); + + if(event != null) { + if(event.resultVenueHours != null) { + if(event.resultVenueHours.size() > 0) { + currentVenue.venueHours.timeFrames = TimeFrame.MergeVenueHoursTimeFrames(currentVenue.venueHours.timeFrames, event.resultVenueHours, mContext); + LoadHours(); + } else { + mHoursWrapper.setVisibility(View.GONE); + } + } + } + } + + public void onEvent(FlagVenueEvent event) { + mSwipeViewVenueDetailsContainer.setRefreshing(false); + String message; + if (event != null) { + if (event.result != null) { + Toast.makeText(mContext, mContext.getString(R.string.flag_venue_success), Toast.LENGTH_SHORT).show(); + } else { + message = event.resultMessage; + Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show(); + } + } else { + message = mContext.getString(R.string.flag_venue_fail); + Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show(); + } + } + + @OnClick(R.id.relativeLayoutVenuePhoneWrapper) + public void CallVenue() { + Intent openDialerIntent = + new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + currentVenue.contact.phone)) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(openDialerIntent); + } + + @OnClick(R.id.relativeLayoutVenueUrlWrapper) + public void OpenUrl() { + Intent browserIntent = + new Intent(Intent.ACTION_VIEW, Uri.parse(currentVenue.url)) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(browserIntent); + } + + @OnClick(R.id.relativeLayoutVenueTwitterWrapper) + public void OpenTwitter() { + Intent twitterIntent = + new Intent(Intent.ACTION_VIEW, + Uri.parse(String.format( + getString(R.string.twitter_url_base), + currentVenue.contact.twitter))) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(twitterIntent); + } + + @OnClick(R.id.linearLayoutAddressWrapper) + public void OpenMap() { + Intent mapIntent = new Intent(Intent.ACTION_VIEW) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + //geo:lat,long?z=zoom or geo:0,0?q=lat,lng(label) + .setData(Uri.parse(String.format( + "geo:0,0?q=%s,%s(%s)&z=%s", + currentVenue.location.latitude, + currentVenue.location.longitude, + Util.Encode(currentVenue.name), + MAP_DEFAULT_ZOOM_LEVEL))); + startActivity(mapIntent); + } + + @OnClick(R.id.fabVenueDetail) + public void FabEditClick() { + OpenEditVenue(); + } } \ No newline at end of file diff --git a/soup/src/main/java/com/thunsaker/soup/ui/VenueDetailFragment.java b/soup/src/main/java/com/thunsaker/soup/ui/VenueDetailFragment.java deleted file mode 100644 index 2b27ef6..0000000 --- a/soup/src/main/java/com/thunsaker/soup/ui/VenueDetailFragment.java +++ /dev/null @@ -1,990 +0,0 @@ -package com.thunsaker.soup.ui; - -import android.annotation.SuppressLint; -import android.app.Activity; -import android.app.AlertDialog; -import android.app.Dialog; -import android.app.SearchManager; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.net.Uri; -import android.os.Build; -import android.os.Bundle; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.widget.SwipeRefreshLayout; -import android.text.Html; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.view.animation.AnimationUtils; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.ProgressBar; -import android.widget.RelativeLayout; -import android.widget.TextView; -import android.widget.Toast; - -import com.google.android.gms.maps.CameraUpdateFactory; -import com.google.android.gms.maps.GoogleMap; -import com.google.android.gms.maps.GoogleMap.OnMapClickListener; -import com.google.android.gms.maps.GoogleMapOptions; -import com.google.android.gms.maps.SupportMapFragment; -import com.google.android.gms.maps.model.BitmapDescriptorFactory; -import com.google.android.gms.maps.model.LatLng; -import com.google.android.gms.maps.model.MarkerOptions; -import com.squareup.picasso.Picasso; -import com.thunsaker.android.common.annotations.ForApplication; -import com.thunsaker.soup.PreferencesHelper; -import com.thunsaker.soup.R; -import com.thunsaker.soup.app.BaseSoupFragment; -import com.thunsaker.soup.app.SoupApp; -import com.thunsaker.soup.data.api.model.Category; -import com.thunsaker.soup.data.api.model.CompactVenue; -import com.thunsaker.soup.data.api.model.FoursquareImage; -import com.thunsaker.soup.data.api.model.TimeFrame; -import com.thunsaker.soup.data.api.model.Venue; -import com.thunsaker.soup.data.events.FlagVenueEvent; -import com.thunsaker.soup.data.events.GetVenueEvent; -import com.thunsaker.soup.data.events.GetVenueHoursEvent; -import com.thunsaker.soup.services.foursquare.FoursquarePrefs; -import com.thunsaker.soup.services.foursquare.FoursquareTasks; -import com.thunsaker.soup.util.Util; - -import java.util.List; - -import javax.inject.Inject; - -import butterknife.ButterKnife; -import butterknife.InjectView; -import butterknife.OnClick; -import de.greenrobot.event.EventBus; - -/* - * Created by @thunsaker - */ -/** - * A fragment representing a single Venue detail screen. This fragment is either - * contained in a {@link VenueListFragment} in two-pane mode (on tablets) or a - * {@link com.thunsaker.soup.ui.VenueDetailActivity} on handsets. - */ -public class VenueDetailFragment extends BaseSoupFragment implements SwipeRefreshLayout.OnRefreshListener { - @Inject @ForApplication - Context mContext; - - @Inject - FoursquareTasks mFoursquareTasks; - - @Inject - EventBus mBus; - - @InjectView(R.id.swipeLayoutVenueDetailsContainer) SwipeRefreshLayout mSwipeViewVenueDetailsContainer; - @InjectView(R.id.relativeLayoutVenueDetailsWrapper) RelativeLayout mContentWrapper; - @InjectView(R.id.relativeLayoutVenueWrapperInner) RelativeLayout mContentWrapperInner; - - @InjectView(R.id.imageViewVenueIcon) ImageView mVenueIcon; - @InjectView(R.id.textViewVenueDetailsName) TextView mName; - - @InjectView(R.id.textViewVenueAddress) TextView mAddress; - @InjectView(R.id.textViewVenueAddressLine2) TextView mAddress2; - - @InjectView(R.id.relativeLayoutVenuePhoneWrapper) RelativeLayout mPhoneWrapper; - @InjectView(R.id.textViewVenuePhone) TextView mPhone; - @InjectView(R.id.relativeLayoutVenueTwitterWrapper) RelativeLayout mTwitterWrapper; - @InjectView(R.id.textViewVenueTwitter) TextView mTwitter; - @InjectView(R.id.relativeLayoutVenueUrlWrapper) RelativeLayout mUrlWrapper; - @InjectView(R.id.textViewVenueUrl) TextView mUrl; - @InjectView(R.id.textViewVenueCrossStreet) TextView mCrossStreet; - - @InjectView(R.id.relativeLayoutVenueDescription) RelativeLayout mDescriptionWrapper; - @InjectView(R.id.progressBarVenueDescription) ProgressBar mDescriptionProgress; - @InjectView(R.id.textViewVenueDescription) TextView mDescription; - @InjectView(R.id.relativeLayoutVenueDetailError) RelativeLayout mDetailError; - - @InjectView(R.id.relativeLayoutVenueHoursWrapper) RelativeLayout mHoursWrapper; - @InjectView(R.id.linearLayoutHoursListContainer) LinearLayout mHoursList; - - @InjectView(R.id.relativeLayoutVenueCategoriesWrapper) RelativeLayout mCategoryWrapper; - @InjectView(R.id.imageViewVenueCategoryPrimary) ImageView mCategoryPrimaryIcon; - @InjectView(R.id.textViewVenueCategoryPrimary) TextView mCategoryPrimaryText; - @InjectView(R.id.linearLayoutVenueCategoriesList) LinearLayout mCategoryList; - - @InjectView(R.id.fragmentMapWrapper) FrameLayout mMapFragmentWrapper; - - @InjectView(R.id.fabEditWrapper) RelativeLayout mFabEdit; - - private static final String ARG_VENUE_ARG_TYPE = "arg_type"; - private static final String ARG_VENUE_TO_LOAD = "venue_arg"; - - public static final int VENUE_TYPE_ID = 0; - public static final int VENUE_TYPE_URL = 1; - public static final int VENUE_TYPE_JSON = 2; - - public static final String ARG_ITEM_JSON_STRING = "item_json_string"; - public static final String VENUE_EDIT_EXTRA = "compact_venue_original"; - protected static final String FLAG_VENUE_DIALOG = "FLAG_VENUE_DIALOG"; - protected static final String FLAG_DUPLICATE_VENUE_DIALOG = "FLAG_DUPLICATE_VENUE_DIALOG"; - - public static Venue currentVenue; - public static Integer currentFlagItem = 0; - - private static GoogleMap mMap; - public final static double mapMarkerAdjustment = 0.0010; - protected static final int EDIT_VENUE = 0; - protected static final int FLAG_DUPLICATE = 1; - - protected static final float MAP_ZOOMED_OUT_LEVEL = 12; - protected static final float MAP_DEFAULT_ZOOM_LEVEL = 16; - - static CompactVenue duplicateResultVenue; - static int duplicateResultType = 0; - static String originalId; - static String duplicateId; - static boolean showConfirmDialog = false; - static boolean zoomedOut = false; - private boolean isExpanded = true; - private float originalPosition; - - public SupportMapFragment mMapFragment; - - public LayoutInflater mInflater; - - public static VenueDetailFragment newInstance(String venueArg, int argType) { - VenueDetailFragment fragment = new VenueDetailFragment(); - Bundle args = new Bundle(); - if(venueArg != null && argType > -1) { - args.putInt(ARG_VENUE_ARG_TYPE, argType); - args.putString(ARG_VENUE_TO_LOAD, venueArg); - } else - args = null; - fragment.setArguments(args); - return fragment; - } - - public VenueDetailFragment() { } - - @SuppressLint("AppCompatMethod") - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - if(getArguments() != null) { - setHasOptionsMenu(true); - if(getActivity() != null) - getActivity().setProgressBarVisibility(true); - - if(mBus != null && !mBus.isRegistered(this)) - mBus.register(this); - - int mType = getArguments().getInt(ARG_VENUE_ARG_TYPE); - String mVenueToLoad = getArguments().getString(ARG_VENUE_TO_LOAD); - switch (mType) { - case 1: // We have a url - from the VenueDetailReceiver (When someone selects "Edit in Soup" from share menu) - currentVenue = null; - mFoursquareTasks.new GetVenue(mVenueToLoad, FoursquarePrefs.CALLER_SOURCE_DETAILS_INTENT, true).execute(); - break; - case 2: // We have a Compact Venue to parse - if(getActivity() != null) - getActivity().setProgressBarVisibility(false); - Venue mVenue = currentVenue = Venue.ConvertCompactVenueToVenue(CompactVenue.GetCompactVenueFromJson(mVenueToLoad)); - mFoursquareTasks.new GetVenue(mVenue.id, FoursquarePrefs.CALLER_SOURCE_DETAILS, true).execute(); - break; - default: // We have a venue id - currentVenue = null; - mFoursquareTasks.new GetVenue(mVenueToLoad, FoursquarePrefs.CALLER_SOURCE_DETAILS, true).execute(); - break; - } - } - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View rootView; - rootView = inflater.inflate(R.layout.fragment_venue_detail_material_scroll, container, false); - mInflater = inflater; - ButterKnife.inject(this, rootView); - - if(mSwipeViewVenueDetailsContainer != null) { - mSwipeViewVenueDetailsContainer.setOnRefreshListener(this); - mSwipeViewVenueDetailsContainer.setColorScheme( - R.color.soup_green, - R.color.soup_blue, - R.color.soup_green, - R.color.soup_red); - mSwipeViewVenueDetailsContainer.setRefreshing(true); - } - - GoogleMapOptions options = new GoogleMapOptions() - .mapType(GoogleMap.MAP_TYPE_NORMAL) - .zoomControlsEnabled(false) - .zoomGesturesEnabled(true) - .compassEnabled(false) - .rotateGesturesEnabled(false) - .scrollGesturesEnabled(false) - .tiltGesturesEnabled(false); - - mMapFragment = SupportMapFragment.newInstance(options); - getChildFragmentManager() - .beginTransaction() - .replace(R.id.fragmentMapWrapper, mMapFragment) - .commit(); - mMapFragmentWrapper.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.fade_in)); - - if (currentVenue != null) - ReloadDetails(); - return rootView; - } - - public void ReloadDetails() { - try { -// switch (type) { -// case 1: // Secondary -// LoadHours(); -// LoadDescription(); -// break; -// case 2: // All the things! - LoadMap(); - LoadDetails(); - LoadCategories(); - LoadHours(); - LoadDescription(); -// break; -// default: // Compact Venue -// LoadMap(); -// LoadDetails(); -// LoadCategories(); -// break; -// } -// -// LoadHours(); -// LoadDescription(); - - if(mContentWrapper.getVisibility() == View.GONE || mContentWrapper.getVisibility() == View.INVISIBLE) { - mContentWrapper.setVisibility(View.VISIBLE); - mContentWrapper.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.fade_in)); - } - - VenueDetailActivity.wasEdited = false; - } catch (Exception e) { - e.printStackTrace(); - } - } - - public void LoadMap() { - if(mMapFragment != null) - mMap = mMapFragment.getMap(); - - if (mMap != null) { - LatLng currentLocation = new LatLng(33.44866, -112.06627); - mMap.clear(); - mMap.addMarker(new MarkerOptions() - .position(currentLocation) - .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_marker_orange_refined_outline))); - mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLocation, MAP_DEFAULT_ZOOM_LEVEL)); - } - - if (currentVenue != null && currentVenue.location != null - && currentVenue.location.getLatLng() != null) - setUpMap(currentVenue.location.getLatLng()); - } - - public void LoadDetails() { - mName.setText(currentVenue.name); - - mAddress.setText(currentVenue.location.address); - mAddress2.setText(currentVenue.location.getCityStatePostalCode()); - mCrossStreet.setText(currentVenue.location.crossStreet); - - if(mAddress.getText().length() > 0) - mAddress.setVisibility(View.VISIBLE); - else - mAddress.setVisibility(View.GONE); - - if(mAddress2.getText().length() > 0) - mAddress2.setVisibility(View.VISIBLE); - else - mAddress2.setVisibility(View.GONE); - - if(mCrossStreet.getText().length() > 0) - mCrossStreet.setVisibility(View.VISIBLE); - else - mCrossStreet.setVisibility(View.GONE); - - if(currentVenue.contact != null) { - mPhone.setText( - currentVenue.contact.formattedPhone != null - ? currentVenue.contact.formattedPhone - : currentVenue.contact.phone); - mTwitter.setText(currentVenue.contact.twitter); - } - - mUrl.setText(currentVenue.url != null ? currentVenue.url.replace("http://","").replace("https://","") : ""); - - - if(mPhone.getText().length() > 0) - mPhoneWrapper.setVisibility(View.VISIBLE); - else - mPhoneWrapper.setVisibility(View.GONE); - - - if(mTwitter.getText().length() > 0) - mTwitterWrapper.setVisibility(View.VISIBLE); - else - mTwitterWrapper.setVisibility(View.GONE); - - if(mUrl.getText().length() > 0) - mUrlWrapper.setVisibility(View.VISIBLE); - else - mUrlWrapper.setVisibility(View.GONE); - } - - public void LoadCategories() { - boolean isPrimarySet = false; - - List myCategories; - myCategories = currentVenue.categories != null ? currentVenue.categories : null; - - if (myCategories != null) { - mCategoryWrapper.setVisibility(View.VISIBLE); - Picasso mPicasso = Picasso.with(mContext); - - for (Category cat : myCategories) { - String imageUrl = cat.icon.getFoursquareLegacyImageUrl(FoursquareImage.SIZE_MEDIANO, false); - if(!isPrimarySet) { - mCategoryList.setVisibility(View.GONE); - if (!imageUrl.equals("")) { - mPicasso.load(imageUrl).placeholder(R.drawable.foursquare_generic_category_icon).into(mVenueIcon); - mPicasso.load(imageUrl).placeholder(R.drawable.foursquare_generic_category_icon).into(mCategoryPrimaryIcon); - - String name = cat.name; - int color = Util.GetCategoryColor(name.charAt(0), mContext); - mVenueIcon.setBackgroundColor(color); - mCategoryPrimaryText.setText(name); - } - isPrimarySet = true; - return; - } -// } else { -// mCategoryList.setVisibility(View.VISIBLE); -// if (!imageUrl.equals("")) { -// LinearLayout listItem = (LinearLayout) getActivity().getLayoutInflater().inflate(R.layout.list_category_item_material, mCategoryList); -// mPicasso.load(imageUrl).placeholder(R.drawable.foursquare_generic_category_icon).into((ImageView) listItem.findViewById(R.id.category_icon)); -// ((TextView) listItem.findViewById(R.id.category_title)).setText(cat.name); -// } -// } - } - } else { - mCategoryList.setVisibility(View.GONE); - mVenueIcon.setImageResource(R.drawable.foursquare_generic_category_icon); - mVenueIcon.setBackgroundColor(mContext.getResources().getColor(R.color.gray_light_super)); - mCategoryPrimaryIcon.setImageResource(R.drawable.foursquare_generic_category_icon); - mCategoryPrimaryText.setText("No categories"); - } - } - - @SuppressLint("NewApi") - public void LoadDescription() { - if(currentVenue.description != null) { - if (mDescription != null) { - mDescription.setText(currentVenue.description ); - - mDescriptionWrapper.setVisibility(View.VISIBLE); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { - mDescription.setAlpha(0f); - mDescription.setVisibility(View.VISIBLE); - - mDescription.animate() - .alpha(1f) - .setDuration(1000) - .setListener(null); - - mDescriptionProgress.animate() - .alpha(0f) - .setDuration(1000) - .setListener(new android.animation.AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(android.animation.Animator animation) { - mDescriptionProgress.setVisibility(View.GONE); - } - }); - } else { - mDescriptionProgress.setVisibility(View.GONE); - mDescriptionProgress.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.fade_out)); - - mDescription.setVisibility(View.VISIBLE); - mDescription.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.fade_in)); - } - } - } else { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { - mDescriptionProgress.animate() - .alpha(0f) - .setDuration(1000) - .setListener(new android.animation.AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(android.animation.Animator animation) { - mDescriptionProgress.setVisibility(View.GONE); - mDescriptionWrapper.setVisibility(View.GONE); - } - }); - } else { - mDescriptionProgress.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.fade_out)); - mDescriptionProgress.setVisibility(View.GONE); - mDescriptionWrapper.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.fade_out)); - mDescriptionWrapper.setVisibility(View.GONE); - } - - } - } - - public void LoadHours() { - if(currentVenue.venueHours != null && currentVenue.venueHours.timeFrames != null && currentVenue.venueHours.timeFrames.size() > 0) { - mHoursWrapper.setVisibility(View.VISIBLE); - if(mHoursList.getChildCount() == currentVenue.venueHours.timeFrames.size()) - return; - - int i = 0; - for (TimeFrame time : currentVenue.venueHours.timeFrames) { - assert mInflater != null; - LinearLayout listItem = (LinearLayout)mInflater.inflate(R.layout.list_hours_item_single_line, null); - ((TextView)listItem.findViewById(R.id.textViewVenueDetailsHoursDay)).setText(time.daysString); - ((TextView)listItem.findViewById(R.id.textViewVenueDetailsHoursTime)).setText(time.openTimesString); - mHoursList.addView(listItem, i); - i++; - } - } else { - mHoursWrapper.setVisibility(View.GONE); - } - } - - @Override - public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - menu.clear(); - if(getActivity() != null) - getActivity().getMenuInflater().inflate(R.menu.activity_venue_detail, menu); - super.onCreateOptionsMenu(menu, inflater); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - getActivity().finish(); - break; - case R.id.action_duplicate: - OpenDuplicateSearch(); - break; - case R.id.action_flag: - ShowFlagDialog(); - break; - case R.id.action_categories: - OpenEditCategories(); - break; - case R.id.action_foursquare: - OpenFoursquareApp(); - break; - } - - return true; - } - - public void OpenFoursquareApp() { - String canonicalUrl = ""; - if (currentVenue != null - && currentVenue.canonicalUrl != null - && !currentVenue.canonicalUrl.equals("") - && currentVenue.canonicalUrl.length() > 0) - canonicalUrl = currentVenue.canonicalUrl; - - if (canonicalUrl != null && canonicalUrl.length() > 0) - startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(canonicalUrl))); - else - Toast.makeText(mContext, R.string.alert_error_loading_details, Toast.LENGTH_SHORT).show(); - } - - public void OpenDuplicateSearch() { - if (!PreferencesHelper.getFoursquareConnected(mContext)) { - showWelcomeActivity(); - } else { - if (currentVenue != null) { - OpenSearchDuplicateDialog(); - } else { - Toast.makeText(mContext, R.string.alert_still_loading, - Toast.LENGTH_SHORT).show(); - } - } - } - - public void ShowFlagDialog() { - if (!PreferencesHelper.getFoursquareConnected(mContext)) { - showWelcomeActivity(); - } else { - if (currentVenue != null) { - DialogFragment flagDialog = new FlagVenueDialogFragment(); - flagDialog.show(getActivity().getSupportFragmentManager(), - FLAG_VENUE_DIALOG); - } else { - Toast.makeText(mContext, R.string.alert_still_loading, - Toast.LENGTH_SHORT).show(); - } - } - } - - public void OpenEditCategories() { - if (!PreferencesHelper.getFoursquareConnected(mContext)) { - showWelcomeActivity(); - } else { - if (currentVenue != null) { - Intent editVenueCategoriesIntent = new Intent(mContext, VenueEditCategoriesActivity.class); - editVenueCategoriesIntent.putExtra(VENUE_EDIT_EXTRA, currentVenue.toString()); - getActivity().startActivity(editVenueCategoriesIntent); - } else { - Toast.makeText(mContext, R.string.alert_still_loading, Toast.LENGTH_SHORT).show(); - } - } - } - - public void OpenEditVenue() { - if (!PreferencesHelper.getFoursquareConnected(mContext)) { - showWelcomeActivity(); - } else { - if (currentVenue != null) { - Intent editVenueIntent = new Intent(mContext, VenueEditTabsActivity.class); - editVenueIntent.putExtra(VENUE_EDIT_EXTRA, currentVenue.toString()); - getActivity().startActivityForResult(editVenueIntent, EDIT_VENUE); - } else { - Toast.makeText(mContext, R.string.alert_still_loading, Toast.LENGTH_SHORT).show(); - } - } - } - - private void showWelcomeActivity() { - Intent welcomeActivity = new Intent(getActivity() - .getApplicationContext(), WelcomeActivity.class); - // welcomeActivity.putExtra(WelcomeActivity.EXTRA_VENUE_BEFORE_AUTH, - // currentCompactVenue.toString()); - welcomeActivity.putExtra( - WelcomeActivity.EXTRA_VENUE_ID_BEFORE_AUTH, currentVenue != null ? currentVenue.id : ""); - startActivity(welcomeActivity); - getActivity().finish(); - } - - private void OpenSearchDuplicateDialog() { - try { - Intent mySearchForDuplicateIntent = new Intent(mContext, VenueSearchActivity.class) - .setAction(Intent.ACTION_SEARCH); - - String myVenueName = currentVenue != null ? currentVenue.name : ""; - mySearchForDuplicateIntent.putExtra(SearchManager.QUERY, myVenueName); - - String myVenueLocation = - currentVenue != null - ? currentVenue.location.getLatLngString() - : ""; - mySearchForDuplicateIntent.putExtra(FoursquarePrefs.SEARCH_LOCATION, myVenueLocation); - mySearchForDuplicateIntent.putExtra(FoursquarePrefs.SEARCH_DUPLICATE, true); - mySearchForDuplicateIntent.putExtra( - FoursquarePrefs.SEARCH_DUPLICATE_VENUE_ID, currentVenue != null - ? currentVenue.id : 0); - - startActivityForResult(mySearchForDuplicateIntent,VenueDetailFragment.FLAG_DUPLICATE); - } catch (Exception e) { - e.printStackTrace(); - } - } - - private void setUpMap(LatLng myLatLng) { - try { - if (mMap == null) { - mMap = mMapFragment.getMap(); - } - - if (mMap != null) { - mMap.clear(); - mMap.addMarker(new MarkerOptions().position(myLatLng).icon( - BitmapDescriptorFactory - .fromResource(R.drawable.map_marker_orange_outline))); - - final LatLng adjustedCurrentLocation = new LatLng( - myLatLng.latitude + mapMarkerAdjustment, - myLatLng.longitude); - mMap.moveCamera( - CameraUpdateFactory.newLatLngZoom(adjustedCurrentLocation, MAP_DEFAULT_ZOOM_LEVEL)); - - mMap.setOnMapClickListener(new OnMapClickListener() { - @Override - public void onMapClick(LatLng newPoint) { - if (zoomedOut) { - mMap.animateCamera(CameraUpdateFactory - .newLatLngZoom(adjustedCurrentLocation, - MAP_DEFAULT_ZOOM_LEVEL)); - zoomedOut = false; - } else { - mMap.animateCamera(CameraUpdateFactory - .newLatLngZoom(adjustedCurrentLocation, - MAP_ZOOMED_OUT_LEVEL)); - zoomedOut = true; - } - } - }); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Override - public void onRefresh() { - RefreshVenueData(); - } - - public void RefreshVenueData() { - if(currentVenue != null) { - mSwipeViewVenueDetailsContainer.setRefreshing(true); - FoursquareTasks mFoursquareTasks = new FoursquareTasks((SoupApp) mContext); - mFoursquareTasks.new GetVenue(currentVenue.id, FoursquarePrefs.CALLER_SOURCE_DETAILS, true).execute(); - } - } - - public static class FlagVenueDialogFragment extends DialogFragment { - - // TODO: Implement newInstance fragment pattern - public FlagVenueDialogFragment() { - } - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - builder.setTitle(R.string.venue_details_dialog_flag_message) - .setPositiveButton( - R.string.venue_details_dialog_flag_venue, - new DialogInterface.OnClickListener() { - @SuppressLint("AppCompatMethod") - @Override - public void onClick(DialogInterface dialog, int which) { - if(getActivity() != null) - getActivity().setProgressBarVisibility(true); - - String venueId = ""; - if (currentVenue != null) - venueId = currentVenue.id; - else if (VenueDetailActivity.venueIdToLoad.length() > 0) - venueId = VenueDetailActivity.venueIdToLoad; - - ((VenueDetailActivity)getActivity()).FlagVenue(venueId, currentFlagItem); - } - }) - .setNegativeButton(R.string.dialog_cancel, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int which) { - dialog.dismiss(); - } - }) - .setSingleChoiceItems( - R.array.venue_details_flag_venue_categories, 0, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int which) { - currentFlagItem = which; - } - }); - return builder.create(); - } - } - - public static class FlagDuplicateVenueDialogFragment extends DialogFragment { - - public FlagDuplicateVenueDialogFragment() { - } - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - String flagDuplicateMessage = ""; - switch (duplicateResultType) { - case 0: // VenueSearchActivity.DUPLICATE_VENUE - flagDuplicateMessage = String - .format(getString(R.string.venue_details_dialog_flag_duplicate_message), - duplicateResultVenue.name, - currentVenue.name); - break; - case 1: // VenueSearchActivity.ORIGINAL_VENUE - if (currentVenue != null) - flagDuplicateMessage = String - .format(getString(R.string.venue_details_dialog_flag_duplicate_message), - currentVenue.name, - duplicateResultVenue.name); - break; - } - - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - builder.setTitle(R.string.venue_details_dialog_flag_duplicate_title) - .setPositiveButton(R.string.dialog_yes, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - if(getActivity() != null) - getActivity().setProgressBarVisibility(true); - - ((VenueDetailActivity)getActivity()).FlagVenueDuplicate(originalId, currentFlagItem, duplicateId); - ClearFlagDuplicateValues(); - } - }) - .setNegativeButton(R.string.dialog_no, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int which) { - ClearFlagDuplicateValues(); - dialog.dismiss(); - } - }).setMessage(Html.fromHtml(flagDuplicateMessage)); - return builder.create(); - } - - @Override - public void show(FragmentManager manager, String tag) { - // TODO Auto-generated method stub - super.show(manager, tag); - } - } - - @Override - public void onDestroy() { - currentVenue = null; - super.onDestroy(); - } - - @Override - public void onResume() { - super.onResume(); - - if(mBus != null && !mBus.isRegistered(this)) - mBus.register(this); - - if (showConfirmDialog) { - if (duplicateResultVenue != null && originalId != null - && duplicateId != null) { - DialogFragment flagDuplicateDialog = new FlagDuplicateVenueDialogFragment(); - flagDuplicateDialog.show(getActivity() - .getSupportFragmentManager(), - FLAG_DUPLICATE_VENUE_DIALOG); - } - showConfirmDialog = false; - } else { - FoursquareTasks mFoursquareTasks = new FoursquareTasks((SoupApp) mContext); - if (currentVenue != null) { - mFoursquareTasks.new GetVenue(currentVenue.id, FoursquarePrefs.CALLER_SOURCE_DETAILS, true).execute(); - } else if (VenueDetailActivity.venueIdToLoad.length() > 0) { - mFoursquareTasks.new GetVenue(VenueDetailActivity.venueIdToLoad, FoursquarePrefs.CALLER_SOURCE_DETAILS, true).execute(); - } - } - - // DEBUG Email -// if (VenueEndpoint.SEND_DEBUG_EMAIL -// && VenueEditTabsActivity.mDebugString != null) { -// Intent debugIntent = new Intent(Intent.ACTION_SEND); -// debugIntent.setType("message/rfc822"); -// debugIntent.putExtra(Intent.EXTRA_SUBJECT, "Soup Debug Data"); -// debugIntent.putExtra(Intent.EXTRA_TEXT, -// VenueEditTabsActivity.mDebugString); -// debugIntent.putExtra(Intent.EXTRA_EMAIL, -// new String[] { "android+soup+debug@thomashunsaker.com" }); -// Intent mailerIntent = Intent.createChooser(debugIntent, null); -// startActivity(mailerIntent); -// VenueEditTabsActivity.mDebugString = null; -// } - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - switch (requestCode) { - case EDIT_VENUE: - switch (resultCode) { - case Activity.RESULT_OK: - String resultData = null; - if (data.hasExtra(VenueEditTabsActivity.EDIT_VENUE_RESULT)) - resultData = data.getStringExtra(VenueEditTabsActivity.EDIT_VENUE_RESULT); - - assert resultData != null; - if (resultData.equals(FoursquarePrefs.SUCCESS)) { - FoursquareTasks mFoursquareTasks = new FoursquareTasks((SoupApp) mContext); - mFoursquareTasks.new GetVenue(currentVenue.id, FoursquarePrefs.CALLER_SOURCE_DETAILS, true).execute(); - mSwipeViewVenueDetailsContainer.setRefreshing(true); - } - break; - default: - break; - } - break; - case FLAG_DUPLICATE: - switch (resultCode) { - case Activity.RESULT_OK: - if (currentVenue != null) { - duplicateResultVenue = null; - duplicateResultType = 0; - originalId = null; - duplicateId = null; - - if (data.hasExtra(VenueSearchActivity.SELECTED_DUPLICATE_VENUE)) - duplicateResultVenue = CompactVenue - .GetCompactVenueFromJson(data - .getStringExtra(VenueSearchActivity.SELECTED_DUPLICATE_VENUE)); - - if (data.hasExtra(VenueSearchActivity.SELECTED_DUPLICATE_VENUE_TYPE)) - duplicateResultType = data - .getIntExtra( - VenueSearchActivity.SELECTED_DUPLICATE_VENUE_TYPE, - 0); - - switch (duplicateResultType) { - case 0: // VenueSearchActivity.DUPLICATE_VENUE - originalId = currentVenue.id; - duplicateId = duplicateResultVenue.id; - break; - - case 1: // VenueSearchActivity.ORIGINAL_VENUE - originalId = duplicateResultVenue.id; - duplicateId = currentVenue.id; - break; - } - - if (duplicateResultVenue != null && originalId != null - && duplicateId != null) { - showConfirmDialog = true; - } - } - break; - default: - ClearFlagDuplicateValues(); - break; - } - break; - } - } - - protected static void ClearFlagDuplicateValues() { - originalId = ""; - duplicateId = ""; - duplicateResultType = 0; - duplicateResultVenue = null; - } - - public void onEvent(GetVenueEvent event) { - mSwipeViewVenueDetailsContainer.setRefreshing(false); - - boolean error = false; - if(event != null) { - if(event.resultVenue != null) { - currentVenue = event.resultVenue; - ReloadDetails(); - } else { - error = true; - } - } else { - error = true; - } - - if(error) { - mFabEdit.setVisibility(View.GONE); - setHasOptionsMenu(false); - mContentWrapperInner.setVisibility(View.GONE); - mDetailError.setVisibility(View.VISIBLE); - } else { - mFabEdit.setVisibility(View.VISIBLE); - setHasOptionsMenu(true); - mContentWrapperInner.setVisibility(View.VISIBLE); - mDetailError.setVisibility(View.GONE); - } - } - - public void onEvent(GetVenueHoursEvent event) { - if(getActivity() != null) - getActivity().setProgressBarVisibility(false); - - mSwipeViewVenueDetailsContainer.setRefreshing(false); - - if(event != null) { - if(event.resultVenueHours != null) { - if(event.resultVenueHours.size() > 0) { - currentVenue.venueHours.timeFrames = TimeFrame.MergeVenueHoursTimeFrames(currentVenue.venueHours.timeFrames, event.resultVenueHours, mContext); - LoadHours(); - } else { - mHoursWrapper.setVisibility(View.GONE); - } - } - } - } - - public void onEvent(FlagVenueEvent event) { - mSwipeViewVenueDetailsContainer.setRefreshing(false); - String message; - if (event != null) { - if (event.result != null) { - Toast.makeText(mContext, mContext.getString(R.string.flag_venue_success), Toast.LENGTH_SHORT).show(); - } else { - message = event.resultMessage; - Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show(); - } - } else { - message = mContext.getString(R.string.flag_venue_fail); - Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show(); - } - } - - @OnClick(R.id.relativeLayoutVenuePhoneWrapper) - public void CallVenue() { - Intent openDialerIntent = - new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + currentVenue.contact.phone)) - .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(openDialerIntent); - } - - @OnClick(R.id.relativeLayoutVenueUrlWrapper) - public void OpenUrl() { - Intent browserIntent = - new Intent(Intent.ACTION_VIEW, Uri.parse(currentVenue.url)) - .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(browserIntent); - } - - @OnClick(R.id.relativeLayoutVenueTwitterWrapper) - public void OpenTwitter() { - Intent twitterIntent = - new Intent(Intent.ACTION_VIEW, - Uri.parse(String.format( - getString(R.string.twitter_url_base), - currentVenue.contact.twitter))) - .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(twitterIntent); - } - - @OnClick(R.id.linearLayoutAddressWrapper) - public void OpenMap() { - Intent mapIntent = new Intent(Intent.ACTION_VIEW) - .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - //geo:lat,long?z=zoom or geo:0,0?q=lat,lng(label) - .setData(Uri.parse(String.format( - "geo:0,0?q=%s,%s(%s)&z=%s", - currentVenue.location.latitude, - currentVenue.location.longitude, - Util.Encode(currentVenue.name), - MAP_DEFAULT_ZOOM_LEVEL))); - startActivity(mapIntent); - } - - @OnClick(R.id.fabEdit) - public void FabEditClick() { - OpenEditVenue(); - } -} \ No newline at end of file diff --git a/soup/src/main/java/com/thunsaker/soup/ui/VenueEditCategoriesActivity.java b/soup/src/main/java/com/thunsaker/soup/ui/VenueEditCategoriesActivity.java index d5e2020..7ac20fa 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/VenueEditCategoriesActivity.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/VenueEditCategoriesActivity.java @@ -116,14 +116,14 @@ protected void onCreate(Bundle savedInstanceState) { level = PreferencesHelper.getFoursquareSuperuserLevel(getApplicationContext()); - if (getIntent().hasExtra(VenueDetailFragment.VENUE_EDIT_EXTRA)) { + if (getIntent().hasExtra(VenueDetailActivity.VENUE_EDIT_EXTRA)) { currentVenue = Venue.GetVenueFromJson( - getIntent().getExtras().get(VenueDetailFragment.VENUE_EDIT_EXTRA).toString()); + getIntent().getExtras().get(VenueDetailActivity.VENUE_EDIT_EXTRA).toString()); } - if (VenueDetailFragment.currentVenue != null) { - currentVenue = VenueDetailFragment.currentVenue; + if (VenueDetailActivity.currentVenue != null) { + currentVenue = VenueDetailActivity.currentVenue; originalCategories = new ArrayList(); if (currentVenue.categories != null && currentVenue.categories.size() > 0) originalCategories.addAll(currentVenue.categories); diff --git a/soup/src/main/java/com/thunsaker/soup/ui/VenueEditHoursAddActivity.java b/soup/src/main/java/com/thunsaker/soup/ui/VenueEditHoursAddActivity.java index 40c6a6d..fad3ff0 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/VenueEditHoursAddActivity.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/VenueEditHoursAddActivity.java @@ -19,8 +19,8 @@ import android.widget.Toast; import android.widget.ToggleButton; -import com.doomonafireball.betterpickers.timepicker.TimePickerBuilder; -import com.doomonafireball.betterpickers.timepicker.TimePickerDialogFragment.TimePickerDialogHandler; +import com.codetroopers.betterpickers.timepicker.TimePickerBuilder; +import com.codetroopers.betterpickers.timepicker.TimePickerDialogFragment; import com.thunsaker.android.common.annotations.ForApplication; import com.thunsaker.soup.R; import com.thunsaker.soup.app.BaseSoupActivity; @@ -40,7 +40,7 @@ import butterknife.OnClick; public class VenueEditHoursAddActivity extends BaseSoupActivity - implements TimePickerDialogHandler { + implements TimePickerDialogFragment.TimePickerDialogHandler { @Inject @ForApplication @@ -359,8 +359,9 @@ else if (updatedTimeFrame.closeTime.get(i) != null) public void openStartTimePicker(int segment) { TimePickerBuilder openBuilder = new TimePickerBuilder() .setReference(TIME_PICKER_OPEN + segment) - .setFragmentManager(getSupportFragmentManager()) - .setStyleResId(R.style.BetterPickerTimeTheme); + .setFragmentManager(getSupportFragmentManager()); + // TODO: 11/11/2015 Restore theme if default isn't great +// .setStyleResId(R.style.BetterPickerTimeTheme); // .setStyleResId(com.doomonafireball.betterpickers.R.style.BetterPickersDialogFragment); openBuilder.show(); } @@ -368,8 +369,9 @@ public void openStartTimePicker(int segment) { public void openEndTimePicker(int segment) { TimePickerBuilder closeBuilder = new TimePickerBuilder() .setReference(TIME_PICKER_CLOSE + segment) - .setFragmentManager(getSupportFragmentManager()) - .setStyleResId(R.style.BetterPickerTimeTheme); + .setFragmentManager(getSupportFragmentManager()); + // TODO: 11/11/2015 Restore theme if default isn't great +// .setStyleResId(R.style.BetterPickerTimeTheme); // .setStyleResId(com.doomonafireball.betterpickers.R.style.BetterPickersDialogFragment); closeBuilder.show(); } diff --git a/soup/src/main/java/com/thunsaker/soup/ui/VenueEditInfoFragment.java b/soup/src/main/java/com/thunsaker/soup/ui/VenueEditInfoFragment.java index dd2c533..b998d97 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/VenueEditInfoFragment.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/VenueEditInfoFragment.java @@ -65,7 +65,7 @@ public View onCreateView(LayoutInflater inflater, R.id.linearLayoutEditVenueInfoSuperuserSection); if(VenueEditTabsActivity.originalVenue == null) { - VenueEditTabsActivity.originalVenue = VenueDetailFragment.currentVenue; + VenueEditTabsActivity.originalVenue = VenueDetailActivity.currentVenue; } LoadForm(); diff --git a/soup/src/main/java/com/thunsaker/soup/ui/VenueEditTabsActivity.java b/soup/src/main/java/com/thunsaker/soup/ui/VenueEditTabsActivity.java index 0927246..37be203 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/VenueEditTabsActivity.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/VenueEditTabsActivity.java @@ -67,7 +67,7 @@ public class VenueEditTabsActivity extends BaseSoupActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - requestWindowFeature(Window.FEATURE_PROGRESS); + supportRequestWindowFeature(Window.FEATURE_PROGRESS); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); @@ -85,8 +85,8 @@ protected void onCreate(Bundle savedInstanceState) { level = PreferencesHelper.getFoursquareSuperuserLevel(getApplicationContext()); - if(getIntent().hasExtra(VenueDetailFragment.VENUE_EDIT_EXTRA)) { - originalVenue = Venue.GetVenueFromJson(getIntent().getExtras().get(VenueDetailFragment.VENUE_EDIT_EXTRA).toString()); + if(getIntent().hasExtra(VenueDetailActivity.VENUE_EDIT_EXTRA)) { + originalVenue = Venue.GetVenueFromJson(getIntent().getExtras().get(VenueDetailActivity.VENUE_EDIT_EXTRA).toString()); } if(mBus != null && !mBus.isRegistered(this)) @@ -325,7 +325,7 @@ public void onClick(DialogInterface dialog, int id) { getActivity().getApplicationContext(), VenueEditTabsActivity.class); editVenueIntent.putExtra( - VenueDetailFragment.VENUE_EDIT_EXTRA, originalVenue.toString()); + VenueDetailActivity.VENUE_EDIT_EXTRA, originalVenue.toString()); editVenueIntent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); VenueEditTabsActivity.originalVenue = new Venue(originalVenue); startActivity(editVenueIntent); diff --git a/soup/src/main/java/com/thunsaker/soup/ui/VenueListFragment.java b/soup/src/main/java/com/thunsaker/soup/ui/VenueListFragment.java index 2d7f471..f10d1e8 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/VenueListFragment.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/VenueListFragment.java @@ -238,11 +238,11 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa if(mSwipeViewVenueListContainer != null) { mSwipeViewVenueListContainer.setOnRefreshListener(this); - mSwipeViewVenueListContainer.setColorScheme( - R.color.soup_green, - R.color.soup_blue, - R.color.soup_green, - R.color.soup_red); + mSwipeViewVenueListContainer.setColorSchemeColors( + getResources().getColor(R.color.soup_green), + getResources().getColor(R.color.soup_blue), + getResources().getColor(R.color.soup_green), + getResources().getColor(R.color.soup_red)); mSwipeViewVenueListContainer.setRefreshing(true); } diff --git a/soup/src/main/java/com/thunsaker/soup/ui/VenueSearchActivity.java b/soup/src/main/java/com/thunsaker/soup/ui/VenueSearchActivity.java index 0b71bf9..406c698 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/VenueSearchActivity.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/VenueSearchActivity.java @@ -335,7 +335,7 @@ public void onVenueListClick(String compactVenueJson) { currentSelectedCompactVenue = CompactVenue.GetCompactVenueFromJson(compactVenueJson); } else { Intent detailIntent = new Intent(this, VenueDetailActivity.class); - detailIntent.putExtra(VenueDetailFragment.ARG_ITEM_JSON_STRING, compactVenueJson); + detailIntent.putExtra(VenueDetailActivity.ARG_ITEM_JSON_STRING, compactVenueJson); detailIntent.putExtra(VenueDetailActivity.VENUE_DETAILS_SOURCE, VenueDetailActivity.VENUE_DETAIL_SOURCE_SEARCH); startActivity(detailIntent); } diff --git a/soup/src/main/java/com/thunsaker/soup/ui/WelcomeActivity.java b/soup/src/main/java/com/thunsaker/soup/ui/WelcomeActivity.java index 99d4583..0532b50 100644 --- a/soup/src/main/java/com/thunsaker/soup/ui/WelcomeActivity.java +++ b/soup/src/main/java/com/thunsaker/soup/ui/WelcomeActivity.java @@ -1,13 +1,10 @@ package com.thunsaker.soup.ui; -import android.content.Context; import android.content.Intent; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; import android.net.Uri; import android.os.Bundle; -import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; +import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; @@ -15,9 +12,13 @@ import com.foursquare.android.nativeoauth.FoursquareOAuth; import com.foursquare.android.nativeoauth.model.AccessTokenResponse; import com.foursquare.android.nativeoauth.model.AuthCodeResponse; -import com.thunsaker.soup.services.AuthHelper; import com.thunsaker.soup.PreferencesHelper; import com.thunsaker.soup.R; +import com.thunsaker.soup.services.AuthHelper; +import com.thunsaker.soup.services.foursquare.FoursquarePrefs; + +import butterknife.ButterKnife; +import butterknife.InjectView; /* * Created by @thunsaker @@ -31,15 +32,17 @@ public class WelcomeActivity extends ActionBarActivity { private boolean useLogo = true; private boolean showHomeUp = false; + @InjectView(R.id.toolbarWelcome) Toolbar mToolbar; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome); - ActionBar ab = getSupportActionBar(); - ab.setDisplayHomeAsUpEnabled(showHomeUp); - ab.setDisplayUseLogoEnabled(useLogo); - ab.setIcon(getResources().getDrawable(R.drawable.ic_launcher_white)); + ButterKnife.inject(this); + setSupportActionBar(mToolbar); + + setTitle(""); } @Override @@ -78,21 +81,6 @@ private void LaunchFoursquareAuthActivity() { startActivityForResult(foursquareAuth, REQUEST_FOURSQUARE_AUTH); } - // Pop foursquare web auth - public void LaunchFoursquareWebAuthActivity() { - ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); - if (activeNetworkInfo != null) { - // Launch Foursquare Auth Activity - Intent foursquareAuth = new Intent(getApplicationContext(), FoursquareAuthorizationActivity.class); - startActivity(foursquareAuth); - finish(); - } else { -// Crouton.makeText(this, getString(R.string.error_no_internets), Style.ALERT).show(); - Toast.makeText(this, getString(R.string.alert_no_internet), Toast.LENGTH_SHORT).show(); - } - } - @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { @@ -138,7 +126,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { "Problem Authenticating: An unknown error occurred", Toast.LENGTH_SHORT).show(); } - FoursquareAuthorizationActivity.clearFoursquareUser(getApplicationContext()); + FoursquarePrefs.clearFoursquareUser(getApplicationContext()); } } diff --git a/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationDrawerActivityConfiguration.java b/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationDrawerActivityConfiguration.java deleted file mode 100644 index c8d5532..0000000 --- a/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationDrawerActivityConfiguration.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.thunsaker.soup.ui.nav; - -import android.widget.BaseAdapter; - -public class NavigationDrawerActivityConfiguration { - private int mainLayout; - private int drawerShadow; - private int drawerLayoutId; - private int leftDrawerId; - private int[] actionMenuItemsToHideWhenDrawerOpen; - private NavigationDrawerItem[] navigationItems; - private int drawerOpenDescription; - private int drawerCloseDescription; - private BaseAdapter baseAdapter; - private boolean requestWindowFeatureProgress; - - public int getMainLayout() { - return mainLayout; - } - public void setMainLayout(int mainLayout) { - this.mainLayout = mainLayout; - } - - public int getDrawerShadow() { - return drawerShadow; - } - public void setDrawerShadow(int drawerShadow) { - this.drawerShadow = drawerShadow; - } - - public int getDrawerLayoutId() { - return drawerLayoutId; - } - public void setDrawerLayoutId(int drawerLayoutId) { - this.drawerLayoutId = drawerLayoutId; - } - - public int getLeftDrawerId() { - return leftDrawerId; - } - public void setLeftDrawerId(int leftDrawerId) { - this.leftDrawerId = leftDrawerId; - } - - public int[] getActionMenuItemsToHideWhenDrawerOpen() { - return actionMenuItemsToHideWhenDrawerOpen; - } - public void setActionMenuItemsToHideWhenDrawerOpen( - int[] actionMenuItemsToHideWhenDrawerOpen) { - this.actionMenuItemsToHideWhenDrawerOpen = actionMenuItemsToHideWhenDrawerOpen; - } - - public NavigationDrawerItem[] getNavigationItems() { - return navigationItems; - } - public void setNavigationItems(NavigationDrawerItem[] navigationItems) { - this.navigationItems = navigationItems; - } - - public int getDrawerOpenDescription() { - return drawerOpenDescription; - } - public void setDrawerOpenDescription(int drawerOpenDescription) { - this.drawerOpenDescription = drawerOpenDescription; - } - - public int getDrawerCloseDescription() { - return drawerCloseDescription; - } - public void setDrawerCloseDescription(int drawerCloseDescription) { - this.drawerCloseDescription = drawerCloseDescription; - } - - public BaseAdapter getBaseAdapter() { - return baseAdapter; - } - public void setBaseAdapter(BaseAdapter baseAdapter) { - this.baseAdapter = baseAdapter; - } - - public boolean getRequestWindowFeatureProgress() { - return requestWindowFeatureProgress; - } - public void setRequestWindowFeatureProgress(boolean requestWindowFeatureProgress) { - this.requestWindowFeatureProgress = requestWindowFeatureProgress; - } -} \ No newline at end of file diff --git a/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationDrawerAdapter.java b/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationDrawerAdapter.java deleted file mode 100644 index 5ff85d8..0000000 --- a/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationDrawerAdapter.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.thunsaker.soup.ui.nav; - -import com.thunsaker.soup.R; - -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.ImageView; -import android.widget.TextView; - -public class NavigationDrawerAdapter extends ArrayAdapter { - - private LayoutInflater inflater; - - public NavigationDrawerAdapter(Context context, int textViewResourceId, - NavigationDrawerItem[] drawerMenu) { - super(context, textViewResourceId, drawerMenu); - this.inflater = LayoutInflater.from(context); - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - View view = null; - NavigationDrawerItem menuItem = this.getItem(position); - if (menuItem.getType() == NavigationMenuItem.ITEM_TYPE) { - view = getItemView(convertView, parent, menuItem); - } else { - view = getSectionView(convertView, parent, menuItem); - } - return view; - } - - public View getSectionView(View convertView, ViewGroup parentView, - NavigationDrawerItem navigationDrawerItem) { - - NavigationMenuSection menuSection = (NavigationMenuSection) navigationDrawerItem; - NavigationMenuSectionHolder navMenuItemHolder = null; - - if (convertView == null) { - convertView = inflater.inflate(R.layout.drawer_section, parentView, - false); - TextView labelView = (TextView) convertView - .findViewById(R.id.drawer_section_title); - - navMenuItemHolder = new NavigationMenuSectionHolder(); - navMenuItemHolder.labelView = labelView; - convertView.setTag(navMenuItemHolder); - } - - if (navMenuItemHolder == null) { - navMenuItemHolder = (NavigationMenuSectionHolder) convertView - .getTag(); - } - - navMenuItemHolder.labelView.setText(menuSection.getLabel()); - - return convertView; - } - - public View getItemView(View convertView, ViewGroup parentView, - NavigationDrawerItem navigationDrawerItem) { - - NavigationMenuItem menuItem = (NavigationMenuItem) navigationDrawerItem; - NavigationMenuItemHolder navMenuItemHolder = null; - - if (convertView == null) { - convertView = inflater.inflate(R.layout.drawer_item, parentView, - false); - TextView labelView = (TextView) convertView - .findViewById(R.id.drawer_item_title); - ImageView iconView = (ImageView) convertView - .findViewById(R.id.drawer_item_icon); - - navMenuItemHolder = new NavigationMenuItemHolder(); - navMenuItemHolder.labelView = labelView; - navMenuItemHolder.iconView = iconView; - - convertView.setTag(navMenuItemHolder); - } - - if (navMenuItemHolder == null) { - navMenuItemHolder = (NavigationMenuItemHolder) convertView.getTag(); - } - - navMenuItemHolder.labelView.setText(menuItem.getLabel()); - navMenuItemHolder.iconView.setImageResource(menuItem.getIcon()); - - return convertView; - } - - @Override - public int getViewTypeCount() { - return 2; - } - - @Override - public int getItemViewType(int position) { - return this.getItem(position).getType(); - } - - @Override - public boolean isEnabled(int position) { - return getItem(position).isEnabled(); - } - - private static class NavigationMenuItemHolder { - private TextView labelView; - private ImageView iconView; - } - - private class NavigationMenuSectionHolder { - private TextView labelView; - } -} \ No newline at end of file diff --git a/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationDrawerItem.java b/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationDrawerItem.java deleted file mode 100644 index 937d790..0000000 --- a/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationDrawerItem.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.thunsaker.soup.ui.nav; - -public interface NavigationDrawerItem { - public int getId(); - public String getLabel(); - public int getType(); - public boolean isEnabled(); - public boolean updateActionBarTitle(); -} diff --git a/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationMenuItem.java b/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationMenuItem.java deleted file mode 100644 index 4f3289e..0000000 --- a/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationMenuItem.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.thunsaker.soup.ui.nav; - -import android.content.Context; - -public class NavigationMenuItem implements NavigationDrawerItem { - - public static final int ITEM_TYPE = 1; - - private int id; - private String label; - private int icon; - private boolean updateActionBarTitle; - - private NavigationMenuItem() { - } - - public static NavigationMenuItem create(int id, String label, String icon, - boolean updateActionBarTitle, Context context) { - NavigationMenuItem item = new NavigationMenuItem(); - item.setId(id); - item.setLabel(label); - item.setIcon(context.getResources().getIdentifier(icon, "drawable", - context.getPackageName())); - item.setUpdateActionBarTitle(updateActionBarTitle); - return item; - } - - @Override - public int getType() { - return ITEM_TYPE; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getLabel() { - return label; - } - - public void setLabel(String label) { - this.label = label; - } - - public int getIcon() { - return icon; - } - - public void setIcon(int icon) { - this.icon = icon; - } - - @Override - public boolean isEnabled() { - return true; - } - - @Override - public boolean updateActionBarTitle() { - return this.updateActionBarTitle; - } - - public void setUpdateActionBarTitle(boolean updateActionBarTitle) { - this.updateActionBarTitle = updateActionBarTitle; - } -} \ No newline at end of file diff --git a/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationMenuSection.java b/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationMenuSection.java deleted file mode 100644 index 2b147c5..0000000 --- a/soup/src/main/java/com/thunsaker/soup/ui/nav/NavigationMenuSection.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.thunsaker.soup.ui.nav; - -public class NavigationMenuSection implements NavigationDrawerItem { - - public static final int SECTION_TYPE = 0; - private int id; - private String label; - - private NavigationMenuSection() { - } - - public static NavigationMenuSection create(int id, String label) { - NavigationMenuSection section = new NavigationMenuSection(); - section.setLabel(label); - return section; - } - - @Override - public int getType() { - return SECTION_TYPE; - } - - public String getLabel() { - return label; - } - - public void setLabel(String label) { - this.label = label; - } - - @Override - public boolean isEnabled() { - return false; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - @Override - public boolean updateActionBarTitle() { - return false; - } -} \ No newline at end of file diff --git a/soup/src/main/java/com/thunsaker/soup/util/LocationService.java b/soup/src/main/java/com/thunsaker/soup/util/LocationService.java index 5244810..d549ed4 100644 --- a/soup/src/main/java/com/thunsaker/soup/util/LocationService.java +++ b/soup/src/main/java/com/thunsaker/soup/util/LocationService.java @@ -1,19 +1,22 @@ package com.thunsaker.soup.util; +import android.Manifest; import android.app.Service; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.location.LocationProvider; import android.os.Binder; +import android.os.Build; import android.os.Bundle; import android.os.IBinder; import com.google.android.gms.common.ConnectionResult; -import com.google.android.gms.common.GooglePlayServicesClient; -import com.google.android.gms.location.LocationClient; +import com.google.android.gms.common.api.GoogleApiClient; +import com.google.android.gms.location.LocationServices; import com.thunsaker.soup.data.LocationServiceError; import com.thunsaker.soup.data.events.LocationChangedEvent; @@ -22,8 +25,8 @@ import de.greenrobot.event.EventBus; public class LocationService extends Service implements - GooglePlayServicesClient.ConnectionCallbacks, - GooglePlayServicesClient.OnConnectionFailedListener{ + GoogleApiClient.ConnectionCallbacks, + GoogleApiClient.OnConnectionFailedListener { @Inject Context mContext; @@ -35,7 +38,7 @@ public class LocationService extends Service implements EventBus bus; private Binder mBinder = new LocalBinder(); - private LocationClient mLocationClient; + public static GoogleApiClient mGoogleClient; private static float lastLatitude = 33.1264583f; private static float lastLongitude = -117.3106229f; @@ -43,27 +46,20 @@ public class LocationService extends Service implements public void onCreate() { } - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - // Google Play Services - mLocationClient = new LocationClient(mContext, this, this); -// mLocationClient = new LocationClient(this, this, this); - mLocationClient.connect(); - return START_STICKY; - } - @Override public void onConnected(Bundle bundle) { - Location loc = mLocationClient.getLastLocation(); - if(loc != null) { - bus.post(new LocationChangedEvent((float)loc.getLatitude(), (float)loc.getLongitude())); + Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleClient); + if (location != null) { + bus.post( + new LocationChangedEvent( + (float) location.getLatitude(), (float) location.getLongitude())); } stopSelf(); } @Override - public void onDisconnected() { - stopSelf(); + public void onConnectionSuspended(int i) { + mGoogleClient.disconnect(); } @Override @@ -82,16 +78,11 @@ LocationService getService() { } } -// @Produce -// public LocationChangedEvent produceLocationEvent() { -// return new LocationChangedEvent(lastLatitude, lastLongitude); -// } - public final LocationListener mLocationListener = new LocationListener() { @Override public void onLocationChanged(Location loc) { - bus.post(new LocationChangedEvent((float)loc.getLatitude(), (float)loc.getLongitude())); + bus.post(new LocationChangedEvent((float) loc.getLatitude(), (float) loc.getLongitude())); } @Override @@ -116,13 +107,29 @@ public void UseBackupProviders() { Boolean hasLocationProvider = false; mLocationManager = - (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE); + (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE); // Use network provider first LocationProvider networkProvider = mLocationManager.getProvider( LocationManager.NETWORK_PROVIDER); + // TODO: Address MM Permissions + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) + != PackageManager.PERMISSION_GRANTED + && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) + != PackageManager.PERMISSION_GRANTED) { + // TODO: Consider calling + // public void requestPermissions(@NonNull String[] permissions, int requestCode) + // here to request the missing permissions, and then overriding + // public void onRequestPermissionsResult(int requestCode, String[] permissions, + // int[] grantResults) + // to handle the case where the user grants the permission. See the documentation + // for Activity#requestPermissions for more details. + return; + } + } Location lastKnown = mLocationManager.getLastKnownLocation( LocationManager.PASSIVE_PROVIDER); diff --git a/soup/src/main/java/com/thunsaker/soup/util/Util.java b/soup/src/main/java/com/thunsaker/soup/util/Util.java index e4c0222..ee3c374 100644 --- a/soup/src/main/java/com/thunsaker/soup/util/Util.java +++ b/soup/src/main/java/com/thunsaker/soup/util/Util.java @@ -7,7 +7,6 @@ import android.net.NetworkInfo; import android.net.NetworkInfo.State; import android.util.DisplayMetrics; -import android.util.Log; import android.util.TypedValue; import com.google.android.gms.maps.model.LatLng; @@ -17,14 +16,6 @@ import com.thunsaker.soup.data.api.model.CompactVenue; import com.thunsaker.soup.data.api.model.Location; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.impl.client.DefaultHttpClient; - import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -50,37 +41,6 @@ public class Util { public static String contentType = "json/application"; - public static String getHttpResponse(String url, String contentType, String accepts) { - return getHttpResponse(url, false, contentType, accepts); - } - - public static String getHttpResponse(String url, Boolean isHttpPost, String contentType, String accepts) { - String result = ""; - HttpClient httpclient = new DefaultHttpClient(); - HttpGet httpGet = new HttpGet(url); - HttpPost httpPost = new HttpPost(url); - HttpResponse response; - - try { - if(isHttpPost) - response = httpclient.execute(httpPost); - else - response = httpclient.execute(httpGet); - - HttpEntity entity = response.getEntity(); - if (entity != null) { - InputStream instream = entity.getContent(); - result = convertStreamToString(instream); - instream.close(); - } - } catch (ClientProtocolException e) { - Log.e(LOG_TAG, "There was a protocol based error", e); - } catch (IOException e) { - Log.e(LOG_TAG, "There was an IO Stream related error", e); - } - return result; - } - private static String convertStreamToString(InputStream is) { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); diff --git a/soup/src/main/res/color/custom_calendar_text_selector.xml b/soup/src/main/res/color/custom_calendar_text_selector.xml deleted file mode 100644 index 9a06c9d..0000000 --- a/soup/src/main/res/color/custom_calendar_text_selector.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/soup/src/main/res/color/dialog_text_color_soup_blue.xml b/soup/src/main/res/color/dialog_text_color_soup_blue.xml deleted file mode 100644 index 1b197a3..0000000 --- a/soup/src/main/res/color/dialog_text_color_soup_blue.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/soup/src/main/res/drawable-hdpi/ab_solid_soup_green.9.png b/soup/src/main/res/drawable-hdpi/ab_solid_soup_green.9.png deleted file mode 100644 index afbf94f..0000000 Binary files a/soup/src/main/res/drawable-hdpi/ab_solid_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/ab_transparent_soup_green.9.png b/soup/src/main/res/drawable-hdpi/ab_transparent_soup_green.9.png deleted file mode 100644 index 5f79215..0000000 Binary files a/soup/src/main/res/drawable-hdpi/ab_transparent_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/btn_cab_done_default_soup_green.9.png b/soup/src/main/res/drawable-hdpi/btn_cab_done_default_soup_green.9.png deleted file mode 100644 index c8d351e..0000000 Binary files a/soup/src/main/res/drawable-hdpi/btn_cab_done_default_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/btn_cab_done_focused_soup_green.9.png b/soup/src/main/res/drawable-hdpi/btn_cab_done_focused_soup_green.9.png deleted file mode 100644 index 6de581a..0000000 Binary files a/soup/src/main/res/drawable-hdpi/btn_cab_done_focused_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/btn_cab_done_pressed_soup_green.9.png b/soup/src/main/res/drawable-hdpi/btn_cab_done_pressed_soup_green.9.png deleted file mode 100644 index 8d332ef..0000000 Binary files a/soup/src/main/res/drawable-hdpi/btn_cab_done_pressed_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/cab_background_bottom_soup_green.9.png b/soup/src/main/res/drawable-hdpi/cab_background_bottom_soup_green.9.png deleted file mode 100644 index dd02b21..0000000 Binary files a/soup/src/main/res/drawable-hdpi/cab_background_bottom_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/cab_background_top_soup_green.9.png b/soup/src/main/res/drawable-hdpi/cab_background_top_soup_green.9.png deleted file mode 100644 index c4490e9..0000000 Binary files a/soup/src/main/res/drawable-hdpi/cab_background_top_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/fastscroll_thumb_default_green.png b/soup/src/main/res/drawable-hdpi/fastscroll_thumb_default_green.png deleted file mode 100644 index 4748227..0000000 Binary files a/soup/src/main/res/drawable-hdpi/fastscroll_thumb_default_green.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/fastscroll_thumb_default_orange.png b/soup/src/main/res/drawable-hdpi/fastscroll_thumb_default_orange.png deleted file mode 100644 index afa4bb4..0000000 Binary files a/soup/src/main/res/drawable-hdpi/fastscroll_thumb_default_orange.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/fastscroll_thumb_pressed_green.png b/soup/src/main/res/drawable-hdpi/fastscroll_thumb_pressed_green.png deleted file mode 100644 index 6efa25c..0000000 Binary files a/soup/src/main/res/drawable-hdpi/fastscroll_thumb_pressed_green.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/fastscroll_thumb_pressed_orange.png b/soup/src/main/res/drawable-hdpi/fastscroll_thumb_pressed_orange.png deleted file mode 100644 index b26c049..0000000 Binary files a/soup/src/main/res/drawable-hdpi/fastscroll_thumb_pressed_orange.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/ic_action_add_holo_dark.png b/soup/src/main/res/drawable-hdpi/ic_action_add_holo_dark.png deleted file mode 100644 index 3bb01d6..0000000 Binary files a/soup/src/main/res/drawable-hdpi/ic_action_add_holo_dark.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/ic_history.png b/soup/src/main/res/drawable-hdpi/ic_history.png new file mode 100644 index 0000000..1de0573 Binary files /dev/null and b/soup/src/main/res/drawable-hdpi/ic_history.png differ diff --git a/soup/src/main/res/drawable-hdpi/ic_info.png b/soup/src/main/res/drawable-hdpi/ic_info.png new file mode 100644 index 0000000..fb2acbc Binary files /dev/null and b/soup/src/main/res/drawable-hdpi/ic_info.png differ diff --git a/soup/src/main/res/drawable-hdpi/ic_list.png b/soup/src/main/res/drawable-hdpi/ic_list.png new file mode 100644 index 0000000..3248055 Binary files /dev/null and b/soup/src/main/res/drawable-hdpi/ic_list.png differ diff --git a/soup/src/main/res/drawable-hdpi/ic_logout.png b/soup/src/main/res/drawable-hdpi/ic_logout.png new file mode 100644 index 0000000..2d86299 Binary files /dev/null and b/soup/src/main/res/drawable-hdpi/ic_logout.png differ diff --git a/soup/src/main/res/drawable-hdpi/ic_map_marker.png b/soup/src/main/res/drawable-hdpi/ic_map_marker.png new file mode 100644 index 0000000..00d32aa Binary files /dev/null and b/soup/src/main/res/drawable-hdpi/ic_map_marker.png differ diff --git a/soup/src/main/res/drawable-hdpi/ic_mat_delete.png b/soup/src/main/res/drawable-hdpi/ic_mat_delete.png deleted file mode 100644 index 41b4a7b..0000000 Binary files a/soup/src/main/res/drawable-hdpi/ic_mat_delete.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/ic_mat_edit.png b/soup/src/main/res/drawable-hdpi/ic_mat_edit.png index 75f3d69..82a5f28 100644 Binary files a/soup/src/main/res/drawable-hdpi/ic_mat_edit.png and b/soup/src/main/res/drawable-hdpi/ic_mat_edit.png differ diff --git a/soup/src/main/res/drawable-hdpi/ic_mat_map_pin.png b/soup/src/main/res/drawable-hdpi/ic_mat_map_pin.png deleted file mode 100644 index e3f2793..0000000 Binary files a/soup/src/main/res/drawable-hdpi/ic_mat_map_pin.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/ic_mat_star_off.png b/soup/src/main/res/drawable-hdpi/ic_mat_star_off.png deleted file mode 100644 index e0ac106..0000000 Binary files a/soup/src/main/res/drawable-hdpi/ic_mat_star_off.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/ic_navigation_drawer.png b/soup/src/main/res/drawable-hdpi/ic_navigation_drawer.png deleted file mode 100644 index 8bbd8ce..0000000 Binary files a/soup/src/main/res/drawable-hdpi/ic_navigation_drawer.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/menu_dropdown_panel_soup_green.9.png b/soup/src/main/res/drawable-hdpi/menu_dropdown_panel_soup_green.9.png deleted file mode 100644 index 5eb1c15..0000000 Binary files a/soup/src/main/res/drawable-hdpi/menu_dropdown_panel_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/progress_bg_soup_green.9.png b/soup/src/main/res/drawable-hdpi/progress_bg_soup_green.9.png deleted file mode 100644 index 3d5c707..0000000 Binary files a/soup/src/main/res/drawable-hdpi/progress_bg_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/progress_primary_soup_green.9.png b/soup/src/main/res/drawable-hdpi/progress_primary_soup_green.9.png deleted file mode 100644 index 888db2f..0000000 Binary files a/soup/src/main/res/drawable-hdpi/progress_primary_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/progress_secondary_soup_green.9.png b/soup/src/main/res/drawable-hdpi/progress_secondary_soup_green.9.png deleted file mode 100644 index fdc94f9..0000000 Binary files a/soup/src/main/res/drawable-hdpi/progress_secondary_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/spinner_ab_default_soup_green.9.png b/soup/src/main/res/drawable-hdpi/spinner_ab_default_soup_green.9.png deleted file mode 100644 index 1484a7d..0000000 Binary files a/soup/src/main/res/drawable-hdpi/spinner_ab_default_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/spinner_ab_disabled_soup_green.9.png b/soup/src/main/res/drawable-hdpi/spinner_ab_disabled_soup_green.9.png deleted file mode 100644 index 40b7159..0000000 Binary files a/soup/src/main/res/drawable-hdpi/spinner_ab_disabled_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/spinner_ab_focused_soup_green.9.png b/soup/src/main/res/drawable-hdpi/spinner_ab_focused_soup_green.9.png deleted file mode 100644 index c528df8..0000000 Binary files a/soup/src/main/res/drawable-hdpi/spinner_ab_focused_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/spinner_ab_pressed_soup_green.9.png b/soup/src/main/res/drawable-hdpi/spinner_ab_pressed_soup_green.9.png deleted file mode 100644 index 462af13..0000000 Binary files a/soup/src/main/res/drawable-hdpi/spinner_ab_pressed_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/tab_selected_focused_soup_green.9.png b/soup/src/main/res/drawable-hdpi/tab_selected_focused_soup_green.9.png deleted file mode 100644 index f0f7a8e..0000000 Binary files a/soup/src/main/res/drawable-hdpi/tab_selected_focused_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/tab_selected_pressed_soup_green.9.png b/soup/src/main/res/drawable-hdpi/tab_selected_pressed_soup_green.9.png deleted file mode 100644 index e5f1df2..0000000 Binary files a/soup/src/main/res/drawable-hdpi/tab_selected_pressed_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/tab_selected_soup_green.9.png b/soup/src/main/res/drawable-hdpi/tab_selected_soup_green.9.png deleted file mode 100644 index b8f44c2..0000000 Binary files a/soup/src/main/res/drawable-hdpi/tab_selected_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/tab_unselected_focused_soup_green.9.png b/soup/src/main/res/drawable-hdpi/tab_unselected_focused_soup_green.9.png deleted file mode 100644 index 12f69ef..0000000 Binary files a/soup/src/main/res/drawable-hdpi/tab_unselected_focused_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/tab_unselected_pressed_soup_green.9.png b/soup/src/main/res/drawable-hdpi/tab_unselected_pressed_soup_green.9.png deleted file mode 100644 index 4f18a95..0000000 Binary files a/soup/src/main/res/drawable-hdpi/tab_unselected_pressed_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/tab_unselected_soup_green.9.png b/soup/src/main/res/drawable-hdpi/tab_unselected_soup_green.9.png deleted file mode 100644 index 7cd46d6..0000000 Binary files a/soup/src/main/res/drawable-hdpi/tab_unselected_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/trash_can.png b/soup/src/main/res/drawable-hdpi/trash_can.png deleted file mode 100644 index 9538121..0000000 Binary files a/soup/src/main/res/drawable-hdpi/trash_can.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/trash_can_orange.png b/soup/src/main/res/drawable-hdpi/trash_can_orange.png deleted file mode 100644 index 340b636..0000000 Binary files a/soup/src/main/res/drawable-hdpi/trash_can_orange.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo1.png b/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo1.png deleted file mode 100644 index 2ac171e..0000000 Binary files a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo1.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo2.png b/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo2.png deleted file mode 100644 index 4bbf687..0000000 Binary files a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo2.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo3.png b/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo3.png deleted file mode 100644 index cda2a54..0000000 Binary files a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo3.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo4.png b/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo4.png deleted file mode 100644 index 2f65135..0000000 Binary files a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo4.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo5.png b/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo5.png deleted file mode 100644 index 9b35db9..0000000 Binary files a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo5.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo6.png b/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo6.png deleted file mode 100644 index 9085835..0000000 Binary files a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo6.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo7.png b/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo7.png deleted file mode 100644 index 1b8edc9..0000000 Binary files a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo7.png and /dev/null differ diff --git a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo8.png b/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo8.png deleted file mode 100644 index 3b348fd..0000000 Binary files a/soup/src/main/res/drawable-hdpi/white_progressbar_indeterminate_holo8.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/ab_solid_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/ab_solid_soup_green.9.png deleted file mode 100644 index ac23d3d..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/ab_solid_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/ab_transparent_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/ab_transparent_soup_green.9.png deleted file mode 100644 index a6cda23..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/ab_transparent_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/btn_cab_done_default_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/btn_cab_done_default_soup_green.9.png deleted file mode 100644 index 3521ae3..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/btn_cab_done_default_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/btn_cab_done_focused_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/btn_cab_done_focused_soup_green.9.png deleted file mode 100644 index 6fb3955..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/btn_cab_done_focused_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/btn_cab_done_pressed_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/btn_cab_done_pressed_soup_green.9.png deleted file mode 100644 index 772bde1..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/btn_cab_done_pressed_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/cab_background_bottom_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/cab_background_bottom_soup_green.9.png deleted file mode 100644 index d9dabba..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/cab_background_bottom_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/cab_background_top_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/cab_background_top_soup_green.9.png deleted file mode 100644 index 4fcf83e..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/cab_background_top_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/fastscroll_thumb_default_green.png b/soup/src/main/res/drawable-xhdpi/fastscroll_thumb_default_green.png deleted file mode 100644 index d0c1730..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/fastscroll_thumb_default_green.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/fastscroll_thumb_default_orange.png b/soup/src/main/res/drawable-xhdpi/fastscroll_thumb_default_orange.png deleted file mode 100644 index ec7b027..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/fastscroll_thumb_default_orange.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/fastscroll_thumb_pressed_green.png b/soup/src/main/res/drawable-xhdpi/fastscroll_thumb_pressed_green.png deleted file mode 100644 index 353f878..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/fastscroll_thumb_pressed_green.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/fastscroll_thumb_pressed_orange.png b/soup/src/main/res/drawable-xhdpi/fastscroll_thumb_pressed_orange.png deleted file mode 100644 index e1fd112..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/fastscroll_thumb_pressed_orange.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/ic_action_add_holo_dark.png b/soup/src/main/res/drawable-xhdpi/ic_action_add_holo_dark.png deleted file mode 100644 index 86422ad..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/ic_action_add_holo_dark.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/ic_history.png b/soup/src/main/res/drawable-xhdpi/ic_history.png new file mode 100644 index 0000000..3c1a11c Binary files /dev/null and b/soup/src/main/res/drawable-xhdpi/ic_history.png differ diff --git a/soup/src/main/res/drawable-xhdpi/ic_info.png b/soup/src/main/res/drawable-xhdpi/ic_info.png new file mode 100644 index 0000000..814f770 Binary files /dev/null and b/soup/src/main/res/drawable-xhdpi/ic_info.png differ diff --git a/soup/src/main/res/drawable-xhdpi/ic_list.png b/soup/src/main/res/drawable-xhdpi/ic_list.png new file mode 100644 index 0000000..14946ee Binary files /dev/null and b/soup/src/main/res/drawable-xhdpi/ic_list.png differ diff --git a/soup/src/main/res/drawable-xhdpi/ic_logout.png b/soup/src/main/res/drawable-xhdpi/ic_logout.png new file mode 100644 index 0000000..adbc303 Binary files /dev/null and b/soup/src/main/res/drawable-xhdpi/ic_logout.png differ diff --git a/soup/src/main/res/drawable-xhdpi/ic_map_marker.png b/soup/src/main/res/drawable-xhdpi/ic_map_marker.png new file mode 100644 index 0000000..f298443 Binary files /dev/null and b/soup/src/main/res/drawable-xhdpi/ic_map_marker.png differ diff --git a/soup/src/main/res/drawable-xhdpi/ic_mat_delete.png b/soup/src/main/res/drawable-xhdpi/ic_mat_delete.png deleted file mode 100644 index 6efd4b0..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/ic_mat_delete.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/ic_mat_edit.png b/soup/src/main/res/drawable-xhdpi/ic_mat_edit.png index e1fe4fe..2beb2b4 100644 Binary files a/soup/src/main/res/drawable-xhdpi/ic_mat_edit.png and b/soup/src/main/res/drawable-xhdpi/ic_mat_edit.png differ diff --git a/soup/src/main/res/drawable-xhdpi/ic_mat_map_pin.png b/soup/src/main/res/drawable-xhdpi/ic_mat_map_pin.png deleted file mode 100644 index 516fa85..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/ic_mat_map_pin.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/ic_mat_star_off.png b/soup/src/main/res/drawable-xhdpi/ic_mat_star_off.png deleted file mode 100644 index dde6927..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/ic_mat_star_off.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/ic_navigation_drawer.png b/soup/src/main/res/drawable-xhdpi/ic_navigation_drawer.png deleted file mode 100644 index e1d9269..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/ic_navigation_drawer.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/menu_dropdown_panel_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/menu_dropdown_panel_soup_green.9.png deleted file mode 100644 index 54a483b..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/menu_dropdown_panel_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/progress_bg_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/progress_bg_soup_green.9.png deleted file mode 100644 index 8b4853a..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/progress_bg_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/progress_primary_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/progress_primary_soup_green.9.png deleted file mode 100644 index df6c4eb..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/progress_primary_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/progress_secondary_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/progress_secondary_soup_green.9.png deleted file mode 100644 index 5021457..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/progress_secondary_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/spinner_ab_default_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/spinner_ab_default_soup_green.9.png deleted file mode 100644 index f2d4674..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/spinner_ab_default_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/spinner_ab_disabled_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/spinner_ab_disabled_soup_green.9.png deleted file mode 100644 index 9f65562..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/spinner_ab_disabled_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/spinner_ab_focused_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/spinner_ab_focused_soup_green.9.png deleted file mode 100644 index d332bb5..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/spinner_ab_focused_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/spinner_ab_pressed_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/spinner_ab_pressed_soup_green.9.png deleted file mode 100644 index 4c58abb..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/spinner_ab_pressed_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/tab_selected_focused_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/tab_selected_focused_soup_green.9.png deleted file mode 100644 index e670db3..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/tab_selected_focused_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/tab_selected_pressed_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/tab_selected_pressed_soup_green.9.png deleted file mode 100644 index 5c2440e..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/tab_selected_pressed_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/tab_selected_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/tab_selected_soup_green.9.png deleted file mode 100644 index 34eb4ec..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/tab_selected_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/tab_unselected_focused_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/tab_unselected_focused_soup_green.9.png deleted file mode 100644 index ad00ce4..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/tab_unselected_focused_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/tab_unselected_pressed_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/tab_unselected_pressed_soup_green.9.png deleted file mode 100644 index a5a2c25..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/tab_unselected_pressed_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/tab_unselected_soup_green.9.png b/soup/src/main/res/drawable-xhdpi/tab_unselected_soup_green.9.png deleted file mode 100644 index e9ab742..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/tab_unselected_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/trash_can.png b/soup/src/main/res/drawable-xhdpi/trash_can.png deleted file mode 100644 index d2746a8..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/trash_can.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/trash_can_orange.png b/soup/src/main/res/drawable-xhdpi/trash_can_orange.png deleted file mode 100644 index 2ab995c..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/trash_can_orange.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo1.png b/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo1.png deleted file mode 100644 index 7befc68..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo1.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo2.png b/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo2.png deleted file mode 100644 index 0163a54..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo2.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo3.png b/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo3.png deleted file mode 100644 index 5613706..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo3.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo4.png b/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo4.png deleted file mode 100644 index e8ec99c..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo4.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo5.png b/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo5.png deleted file mode 100644 index f41da3b..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo5.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo6.png b/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo6.png deleted file mode 100644 index 9c2372d..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo6.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo7.png b/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo7.png deleted file mode 100644 index 4b08198..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo7.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo8.png b/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo8.png deleted file mode 100644 index e2e64b6..0000000 Binary files a/soup/src/main/res/drawable-xhdpi/white_progressbar_indeterminate_holo8.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/ab_solid_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/ab_solid_soup_green.9.png deleted file mode 100644 index 1386f25..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/ab_solid_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/ab_transparent_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/ab_transparent_soup_green.9.png deleted file mode 100644 index 3d3c391..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/ab_transparent_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/btn_cab_done_default_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/btn_cab_done_default_soup_green.9.png deleted file mode 100644 index 47fe2f3..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/btn_cab_done_default_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/btn_cab_done_focused_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/btn_cab_done_focused_soup_green.9.png deleted file mode 100644 index d977937..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/btn_cab_done_focused_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/btn_cab_done_pressed_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/btn_cab_done_pressed_soup_green.9.png deleted file mode 100644 index a3d7802..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/btn_cab_done_pressed_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/cab_background_bottom_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/cab_background_bottom_soup_green.9.png deleted file mode 100644 index c2dfece..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/cab_background_bottom_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/cab_background_top_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/cab_background_top_soup_green.9.png deleted file mode 100644 index 225ee3e..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/cab_background_top_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/ic_action_search_grande_gray_light.png b/soup/src/main/res/drawable-xxhdpi/ic_action_search_grande_gray_light.png deleted file mode 100644 index 50e11ed..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/ic_action_search_grande_gray_light.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/ic_history.png b/soup/src/main/res/drawable-xxhdpi/ic_history.png new file mode 100644 index 0000000..691e11f Binary files /dev/null and b/soup/src/main/res/drawable-xxhdpi/ic_history.png differ diff --git a/soup/src/main/res/drawable-xxhdpi/ic_info.png b/soup/src/main/res/drawable-xxhdpi/ic_info.png new file mode 100644 index 0000000..bd5680d Binary files /dev/null and b/soup/src/main/res/drawable-xxhdpi/ic_info.png differ diff --git a/soup/src/main/res/drawable-xxhdpi/ic_list.png b/soup/src/main/res/drawable-xxhdpi/ic_list.png new file mode 100644 index 0000000..ed0bd46 Binary files /dev/null and b/soup/src/main/res/drawable-xxhdpi/ic_list.png differ diff --git a/soup/src/main/res/drawable-xxhdpi/ic_logout.png b/soup/src/main/res/drawable-xxhdpi/ic_logout.png new file mode 100644 index 0000000..64dac65 Binary files /dev/null and b/soup/src/main/res/drawable-xxhdpi/ic_logout.png differ diff --git a/soup/src/main/res/drawable-xxhdpi/ic_map_marker.png b/soup/src/main/res/drawable-xxhdpi/ic_map_marker.png new file mode 100644 index 0000000..66945c5 Binary files /dev/null and b/soup/src/main/res/drawable-xxhdpi/ic_map_marker.png differ diff --git a/soup/src/main/res/drawable-xxhdpi/ic_mat_delete.png b/soup/src/main/res/drawable-xxhdpi/ic_mat_delete.png deleted file mode 100644 index 36887ff..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/ic_mat_delete.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/ic_mat_edit.png b/soup/src/main/res/drawable-xxhdpi/ic_mat_edit.png index 911b713..276daaa 100644 Binary files a/soup/src/main/res/drawable-xxhdpi/ic_mat_edit.png and b/soup/src/main/res/drawable-xxhdpi/ic_mat_edit.png differ diff --git a/soup/src/main/res/drawable-xxhdpi/ic_mat_map_pin.png b/soup/src/main/res/drawable-xxhdpi/ic_mat_map_pin.png deleted file mode 100644 index cf1b054..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/ic_mat_map_pin.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/ic_mat_star_off.png b/soup/src/main/res/drawable-xxhdpi/ic_mat_star_off.png deleted file mode 100644 index feb4b50..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/ic_mat_star_off.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/ic_navigation_drawer.png b/soup/src/main/res/drawable-xxhdpi/ic_navigation_drawer.png deleted file mode 100644 index 9720271..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/ic_navigation_drawer.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/menu_dropdown_panel_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/menu_dropdown_panel_soup_green.9.png deleted file mode 100644 index 470d41c..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/menu_dropdown_panel_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/progress_bg_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/progress_bg_soup_green.9.png deleted file mode 100644 index 72da893..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/progress_bg_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/progress_primary_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/progress_primary_soup_green.9.png deleted file mode 100644 index 8ff0096..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/progress_primary_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/progress_secondary_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/progress_secondary_soup_green.9.png deleted file mode 100644 index d9d2be3..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/progress_secondary_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/spinner_ab_default_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/spinner_ab_default_soup_green.9.png deleted file mode 100644 index 979ed44..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/spinner_ab_default_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/spinner_ab_disabled_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/spinner_ab_disabled_soup_green.9.png deleted file mode 100644 index 33a44ac..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/spinner_ab_disabled_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/spinner_ab_focused_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/spinner_ab_focused_soup_green.9.png deleted file mode 100644 index 3354e33..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/spinner_ab_focused_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/spinner_ab_pressed_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/spinner_ab_pressed_soup_green.9.png deleted file mode 100644 index a56bbe4..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/spinner_ab_pressed_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/tab_selected_focused_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/tab_selected_focused_soup_green.9.png deleted file mode 100644 index 3ffe9e2..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/tab_selected_focused_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/tab_selected_pressed_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/tab_selected_pressed_soup_green.9.png deleted file mode 100644 index 58c8a57..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/tab_selected_pressed_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/tab_selected_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/tab_selected_soup_green.9.png deleted file mode 100644 index e4439e7..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/tab_selected_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/tab_unselected_focused_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/tab_unselected_focused_soup_green.9.png deleted file mode 100644 index 3136aba..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/tab_unselected_focused_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/tab_unselected_pressed_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/tab_unselected_pressed_soup_green.9.png deleted file mode 100644 index 8dd01d5..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/tab_unselected_pressed_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/tab_unselected_soup_green.9.png b/soup/src/main/res/drawable-xxhdpi/tab_unselected_soup_green.9.png deleted file mode 100644 index 566062f..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/tab_unselected_soup_green.9.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo1.png b/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo1.png deleted file mode 100644 index 4596975..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo1.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo2.png b/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo2.png deleted file mode 100644 index bf1eb5b..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo2.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo3.png b/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo3.png deleted file mode 100644 index af8e6d9..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo3.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo4.png b/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo4.png deleted file mode 100644 index 607120e..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo4.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo5.png b/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo5.png deleted file mode 100644 index 23aae11..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo5.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo6.png b/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo6.png deleted file mode 100644 index c42897e..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo6.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo7.png b/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo7.png deleted file mode 100644 index 6d67925..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo7.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo8.png b/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo8.png deleted file mode 100644 index 3412504..0000000 Binary files a/soup/src/main/res/drawable-xxhdpi/white_progressbar_indeterminate_holo8.png and /dev/null differ diff --git a/soup/src/main/res/drawable-xxxhdpi/ic_history.png b/soup/src/main/res/drawable-xxxhdpi/ic_history.png new file mode 100644 index 0000000..35bd918 Binary files /dev/null and b/soup/src/main/res/drawable-xxxhdpi/ic_history.png differ diff --git a/soup/src/main/res/drawable-xxxhdpi/ic_info.png b/soup/src/main/res/drawable-xxxhdpi/ic_info.png new file mode 100644 index 0000000..8609b66 Binary files /dev/null and b/soup/src/main/res/drawable-xxxhdpi/ic_info.png differ diff --git a/soup/src/main/res/drawable-xxxhdpi/ic_list.png b/soup/src/main/res/drawable-xxxhdpi/ic_list.png new file mode 100644 index 0000000..9431c75 Binary files /dev/null and b/soup/src/main/res/drawable-xxxhdpi/ic_list.png differ diff --git a/soup/src/main/res/drawable-xxxhdpi/ic_logout.png b/soup/src/main/res/drawable-xxxhdpi/ic_logout.png new file mode 100644 index 0000000..8a856c3 Binary files /dev/null and b/soup/src/main/res/drawable-xxxhdpi/ic_logout.png differ diff --git a/soup/src/main/res/drawable-xxxhdpi/ic_map_marker.png b/soup/src/main/res/drawable-xxxhdpi/ic_map_marker.png new file mode 100644 index 0000000..4a7d236 Binary files /dev/null and b/soup/src/main/res/drawable-xxxhdpi/ic_map_marker.png differ diff --git a/soup/src/main/res/drawable-xxxhdpi/ic_mat_edit.png b/soup/src/main/res/drawable-xxxhdpi/ic_mat_edit.png new file mode 100644 index 0000000..52ec7e7 Binary files /dev/null and b/soup/src/main/res/drawable-xxxhdpi/ic_mat_edit.png differ diff --git a/soup/src/main/res/drawable/blue_circle_translucent.xml b/soup/src/main/res/drawable/blue_circle_translucent.xml deleted file mode 100644 index ea853f2..0000000 --- a/soup/src/main/res/drawable/blue_circle_translucent.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/soup/src/main/res/drawable/btn_cab_done_soup_green.xml b/soup/src/main/res/drawable/btn_cab_done_soup_green.xml deleted file mode 100644 index b1562d8..0000000 --- a/soup/src/main/res/drawable/btn_cab_done_soup_green.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - diff --git a/soup/src/main/res/drawable/custom_calendar_bg_selector.xml b/soup/src/main/res/drawable/custom_calendar_bg_selector.xml deleted file mode 100644 index d947612..0000000 --- a/soup/src/main/res/drawable/custom_calendar_bg_selector.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/soup/src/main/res/drawable/default_layout_selector_green_base.xml b/soup/src/main/res/drawable/default_layout_selector_green_base.xml deleted file mode 100644 index 3fe3a51..0000000 --- a/soup/src/main/res/drawable/default_layout_selector_green_base.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/soup/src/main/res/drawable/default_layout_selector_red_base.xml b/soup/src/main/res/drawable/default_layout_selector_red_base.xml deleted file mode 100644 index a0119e8..0000000 --- a/soup/src/main/res/drawable/default_layout_selector_red_base.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/soup/src/main/res/drawable/fastscroll_thumb_green.xml b/soup/src/main/res/drawable/fastscroll_thumb_green.xml deleted file mode 100644 index 4fe909a..0000000 --- a/soup/src/main/res/drawable/fastscroll_thumb_green.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/soup/src/main/res/drawable/fastscroll_thumb_orange.xml b/soup/src/main/res/drawable/fastscroll_thumb_orange.xml deleted file mode 100644 index e951c98..0000000 --- a/soup/src/main/res/drawable/fastscroll_thumb_orange.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/soup/src/main/res/drawable/green_circle.xml b/soup/src/main/res/drawable/green_circle.xml deleted file mode 100644 index 7342236..0000000 --- a/soup/src/main/res/drawable/green_circle.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/soup/src/main/res/drawable/hour_toggle_holo_light.xml b/soup/src/main/res/drawable/hour_toggle_holo_light.xml deleted file mode 100644 index 05e22e3..0000000 --- a/soup/src/main/res/drawable/hour_toggle_holo_light.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/soup/src/main/res/drawable/ic_check_big.png b/soup/src/main/res/drawable/ic_check_big.png deleted file mode 100644 index e5f1e40..0000000 Binary files a/soup/src/main/res/drawable/ic_check_big.png and /dev/null differ diff --git a/soup/src/main/res/drawable/layout_selector_red.xml b/soup/src/main/res/drawable/layout_selector_red.xml deleted file mode 100644 index 7f88c0e..0000000 --- a/soup/src/main/res/drawable/layout_selector_red.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/soup/src/main/res/drawable/left_arrow_up_from_right.png b/soup/src/main/res/drawable/left_arrow_up_from_right.png deleted file mode 100644 index 50bd5e2..0000000 Binary files a/soup/src/main/res/drawable/left_arrow_up_from_right.png and /dev/null differ diff --git a/soup/src/main/res/drawable/left_arrow_up_from_right_long.png b/soup/src/main/res/drawable/left_arrow_up_from_right_long.png deleted file mode 100644 index a539ac0..0000000 Binary files a/soup/src/main/res/drawable/left_arrow_up_from_right_long.png and /dev/null differ diff --git a/soup/src/main/res/drawable/list_done_affordance_blue_alt.png b/soup/src/main/res/drawable/list_done_affordance_blue_alt.png deleted file mode 100644 index f103450..0000000 Binary files a/soup/src/main/res/drawable/list_done_affordance_blue_alt.png and /dev/null differ diff --git a/soup/src/main/res/drawable/list_done_affordance_green.png b/soup/src/main/res/drawable/list_done_affordance_green.png deleted file mode 100644 index c52bdd2..0000000 Binary files a/soup/src/main/res/drawable/list_done_affordance_green.png and /dev/null differ diff --git a/soup/src/main/res/drawable/list_done_affordance_orange.png b/soup/src/main/res/drawable/list_done_affordance_orange.png deleted file mode 100644 index 7b46d27..0000000 Binary files a/soup/src/main/res/drawable/list_done_affordance_orange.png and /dev/null differ diff --git a/soup/src/main/res/drawable/list_following_affordance_translucent.png b/soup/src/main/res/drawable/list_following_affordance_translucent.png deleted file mode 100644 index c37c3bc..0000000 Binary files a/soup/src/main/res/drawable/list_following_affordance_translucent.png and /dev/null differ diff --git a/soup/src/main/res/drawable/list_placeholder_gray_dark.png b/soup/src/main/res/drawable/list_placeholder_gray_dark.png deleted file mode 100644 index 28a8b37..0000000 Binary files a/soup/src/main/res/drawable/list_placeholder_gray_dark.png and /dev/null differ diff --git a/soup/src/main/res/drawable/list_placeholder_green.png b/soup/src/main/res/drawable/list_placeholder_green.png deleted file mode 100644 index a8b8fd9..0000000 Binary files a/soup/src/main/res/drawable/list_placeholder_green.png and /dev/null differ diff --git a/soup/src/main/res/drawable/list_placeholder_todo.png b/soup/src/main/res/drawable/list_placeholder_todo.png deleted file mode 100644 index fbfea69..0000000 Binary files a/soup/src/main/res/drawable/list_placeholder_todo.png and /dev/null differ diff --git a/soup/src/main/res/drawable/list_placeholder_todo_tiled.png b/soup/src/main/res/drawable/list_placeholder_todo_tiled.png deleted file mode 100644 index 0c754ce..0000000 Binary files a/soup/src/main/res/drawable/list_placeholder_todo_tiled.png and /dev/null differ diff --git a/soup/src/main/res/drawable/map_marker_black.png b/soup/src/main/res/drawable/map_marker_black.png deleted file mode 100644 index 6469e80..0000000 Binary files a/soup/src/main/res/drawable/map_marker_black.png and /dev/null differ diff --git a/soup/src/main/res/drawable/map_marker_blue_gray_outline.png b/soup/src/main/res/drawable/map_marker_blue_gray_outline.png deleted file mode 100644 index f096ad7..0000000 Binary files a/soup/src/main/res/drawable/map_marker_blue_gray_outline.png and /dev/null differ diff --git a/soup/src/main/res/drawable/map_marker_dark_gray_gray_outline.png b/soup/src/main/res/drawable/map_marker_dark_gray_gray_outline.png deleted file mode 100644 index ddc8022..0000000 Binary files a/soup/src/main/res/drawable/map_marker_dark_gray_gray_outline.png and /dev/null differ diff --git a/soup/src/main/res/drawable/map_marker_gray_dark.png b/soup/src/main/res/drawable/map_marker_gray_dark.png deleted file mode 100644 index 99f1323..0000000 Binary files a/soup/src/main/res/drawable/map_marker_gray_dark.png and /dev/null differ diff --git a/soup/src/main/res/drawable/map_marker_gray_gray_outline.png b/soup/src/main/res/drawable/map_marker_gray_gray_outline.png deleted file mode 100644 index f63be3b..0000000 Binary files a/soup/src/main/res/drawable/map_marker_gray_gray_outline.png and /dev/null differ diff --git a/soup/src/main/res/drawable/map_marker_green.png b/soup/src/main/res/drawable/map_marker_green.png deleted file mode 100644 index d0df5b6..0000000 Binary files a/soup/src/main/res/drawable/map_marker_green.png and /dev/null differ diff --git a/soup/src/main/res/drawable/map_marker_green_gray_outline.png b/soup/src/main/res/drawable/map_marker_green_gray_outline.png deleted file mode 100644 index 9dd2b71..0000000 Binary files a/soup/src/main/res/drawable/map_marker_green_gray_outline.png and /dev/null differ diff --git a/soup/src/main/res/drawable/map_marker_orange.png b/soup/src/main/res/drawable/map_marker_orange.png deleted file mode 100644 index 24f7223..0000000 Binary files a/soup/src/main/res/drawable/map_marker_orange.png and /dev/null differ diff --git a/soup/src/main/res/drawable/map_marker_orange_gray_outline.png b/soup/src/main/res/drawable/map_marker_orange_gray_outline.png deleted file mode 100644 index ddaf371..0000000 Binary files a/soup/src/main/res/drawable/map_marker_orange_gray_outline.png and /dev/null differ diff --git a/soup/src/main/res/drawable/map_marker_red_gray_outline.png b/soup/src/main/res/drawable/map_marker_red_gray_outline.png deleted file mode 100644 index afd2402..0000000 Binary files a/soup/src/main/res/drawable/map_marker_red_gray_outline.png and /dev/null differ diff --git a/soup/src/main/res/drawable/progress_horizontal_soup_green.xml b/soup/src/main/res/drawable/progress_horizontal_soup_green.xml deleted file mode 100644 index f1b853c..0000000 --- a/soup/src/main/res/drawable/progress_horizontal_soup_green.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/soup/src/main/res/drawable/progress_indeterminate_horizontal_holo_dark.xml b/soup/src/main/res/drawable/progress_indeterminate_horizontal_holo_dark.xml deleted file mode 100644 index ad2c0c7..0000000 --- a/soup/src/main/res/drawable/progress_indeterminate_horizontal_holo_dark.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - diff --git a/soup/src/main/res/drawable/rectangle_white.xml b/soup/src/main/res/drawable/rectangle_white.xml deleted file mode 100644 index f5cd4f4..0000000 --- a/soup/src/main/res/drawable/rectangle_white.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/soup/src/main/res/drawable/right_arrow_up_from_left.png b/soup/src/main/res/drawable/right_arrow_up_from_left.png deleted file mode 100644 index 7afec5d..0000000 Binary files a/soup/src/main/res/drawable/right_arrow_up_from_left.png and /dev/null differ diff --git a/soup/src/main/res/drawable/right_arrow_up_from_left_long.png b/soup/src/main/res/drawable/right_arrow_up_from_left_long.png deleted file mode 100644 index 460a53b..0000000 Binary files a/soup/src/main/res/drawable/right_arrow_up_from_left_long.png and /dev/null differ diff --git a/soup/src/main/res/drawable/rounded_background.xml b/soup/src/main/res/drawable/rounded_background.xml deleted file mode 100644 index aec07e4..0000000 --- a/soup/src/main/res/drawable/rounded_background.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/soup/src/main/res/drawable/selectable_background_soup_green.xml b/soup/src/main/res/drawable/selectable_background_soup_green.xml deleted file mode 100644 index ba10d6d..0000000 --- a/soup/src/main/res/drawable/selectable_background_soup_green.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/soup/src/main/res/drawable/side_nav_bar.xml b/soup/src/main/res/drawable/side_nav_bar.xml new file mode 100644 index 0000000..9697a45 --- /dev/null +++ b/soup/src/main/res/drawable/side_nav_bar.xml @@ -0,0 +1,8 @@ + + + \ No newline at end of file diff --git a/soup/src/main/res/drawable/spinner_background_ab_soup_green.xml b/soup/src/main/res/drawable/spinner_background_ab_soup_green.xml deleted file mode 100644 index 847e14f..0000000 --- a/soup/src/main/res/drawable/spinner_background_ab_soup_green.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - diff --git a/soup/src/main/res/drawable/tab_indicator_ab_soup_green.xml b/soup/src/main/res/drawable/tab_indicator_ab_soup_green.xml deleted file mode 100644 index 47b4b02..0000000 --- a/soup/src/main/res/drawable/tab_indicator_ab_soup_green.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soup/src/main/res/color/text_selector_blue.xml b/soup/src/main/res/drawable/text_selector_blue.xml similarity index 100% rename from soup/src/main/res/color/text_selector_blue.xml rename to soup/src/main/res/drawable/text_selector_blue.xml diff --git a/soup/src/main/res/color/text_selector_green.xml b/soup/src/main/res/drawable/text_selector_green.xml similarity index 100% rename from soup/src/main/res/color/text_selector_green.xml rename to soup/src/main/res/drawable/text_selector_green.xml diff --git a/soup/src/main/res/color/text_selector_red.xml b/soup/src/main/res/drawable/text_selector_red.xml similarity index 100% rename from soup/src/main/res/color/text_selector_red.xml rename to soup/src/main/res/drawable/text_selector_red.xml diff --git a/soup/src/main/res/layout-land/fragment_venue_edit_hours_item.xml b/soup/src/main/res/layout-land/fragment_venue_edit_hours_item.xml index 93f6f3b..2065426 100644 --- a/soup/src/main/res/layout-land/fragment_venue_edit_hours_item.xml +++ b/soup/src/main/res/layout-land/fragment_venue_edit_hours_item.xml @@ -95,7 +95,7 @@ android:textIsSelectable="false" android:text="@string/edit_venue_hours_24_hours" android:gravity="center_vertical" - style="@style/Theme.Soup.Text.Small" /> + android:textSize="@dimen/material_type_small" /> + android:textSize="@dimen/material_type_small" /> diff --git a/soup/src/main/res/layout/activity_checkin_history.xml b/soup/src/main/res/layout/activity_checkin_history.xml index b1282b1..164ac9a 100644 --- a/soup/src/main/res/layout/activity_checkin_history.xml +++ b/soup/src/main/res/layout/activity_checkin_history.xml @@ -1,7 +1,21 @@ - + + + + + + \ No newline at end of file diff --git a/soup/src/main/res/layout/activity_history.xml b/soup/src/main/res/layout/activity_history.xml deleted file mode 100644 index bd0fcff..0000000 --- a/soup/src/main/res/layout/activity_history.xml +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/soup/src/main/res/layout/activity_main.xml b/soup/src/main/res/layout/activity_main.xml index d3b1c84..c0ef28c 100644 --- a/soup/src/main/res/layout/activity_main.xml +++ b/soup/src/main/res/layout/activity_main.xml @@ -1,4 +1,6 @@ - @@ -8,10 +10,19 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + android:layout_height="wrap_content" + android:layout_below="@id/toolbar"/> - + android:background="@android:color/white" + app:menu="@menu/drawer_view" /> + + + + + + + + + + + \ No newline at end of file diff --git a/soup/src/main/res/layout/activity_nav.xml b/soup/src/main/res/layout/activity_nav.xml new file mode 100644 index 0000000..6f323de --- /dev/null +++ b/soup/src/main/res/layout/activity_nav.xml @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/soup/src/main/res/layout/activity_venue_detail.xml b/soup/src/main/res/layout/activity_venue_detail.xml index 06fb006..b428482 100644 --- a/soup/src/main/res/layout/activity_venue_detail.xml +++ b/soup/src/main/res/layout/activity_venue_detail.xml @@ -1,8 +1,34 @@ - + + tools:context=".VenueDetailActivity"> + + + + + + + + + + + + diff --git a/soup/src/main/res/layout/activity_venue_edit_categories.xml b/soup/src/main/res/layout/activity_venue_edit_categories.xml index c70d0da..c0f3e20 100644 --- a/soup/src/main/res/layout/activity_venue_edit_categories.xml +++ b/soup/src/main/res/layout/activity_venue_edit_categories.xml @@ -57,11 +57,11 @@ android:paddingTop="@dimen/material_padding_double" android:paddingBottom="@dimen/material_padding_double" android:paddingLeft="@dimen/material_keyline_2" + android:textSize="@dimen/material_type_small" android:textIsSelectable="false" android:text="@string/placeholder_category" android:textStyle="bold" - android:gravity="center_vertical" - style="@style/Theme.Soup.Text.Small" /> + android:gravity="center_vertical" /> + android:gravity="center_vertical" /> + android:textSize="@dimen/material_type_small" /> + android:textSize="@dimen/material_type_small" /> \ No newline at end of file diff --git a/soup/src/main/res/layout/activity_welcome.xml b/soup/src/main/res/layout/activity_welcome.xml index 93c34e0..f4967cd 100644 --- a/soup/src/main/res/layout/activity_welcome.xml +++ b/soup/src/main/res/layout/activity_welcome.xml @@ -1,49 +1,63 @@ - + - - - - - + android:paddingTop="@dimen/activity_vertical_margin" + android:layout_above="@+id/toolbarWelcome"> - + - \ No newline at end of file + + + + + + + + + + \ No newline at end of file diff --git a/soup/src/main/res/layout/app_bar_nav.xml b/soup/src/main/res/layout/app_bar_nav.xml new file mode 100644 index 0000000..4351476 --- /dev/null +++ b/soup/src/main/res/layout/app_bar_nav.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/soup/src/main/res/layout/content_nav.xml b/soup/src/main/res/layout/content_nav.xml new file mode 100644 index 0000000..0b99332 --- /dev/null +++ b/soup/src/main/res/layout/content_nav.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/soup/src/main/res/layout/content_venue_detail.xml b/soup/src/main/res/layout/content_venue_detail.xml new file mode 100644 index 0000000..b76c880 --- /dev/null +++ b/soup/src/main/res/layout/content_venue_detail.xml @@ -0,0 +1,423 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/soup/src/main/res/layout/drawer_item.xml b/soup/src/main/res/layout/drawer_item.xml deleted file mode 100644 index 9d0ded1..0000000 --- a/soup/src/main/res/layout/drawer_item.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/soup/src/main/res/layout/drawer_list_item.xml b/soup/src/main/res/layout/drawer_list_item.xml deleted file mode 100644 index ce3a43c..0000000 --- a/soup/src/main/res/layout/drawer_list_item.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - \ No newline at end of file diff --git a/soup/src/main/res/layout/drawer_section.xml b/soup/src/main/res/layout/drawer_section.xml deleted file mode 100644 index 700318f..0000000 --- a/soup/src/main/res/layout/drawer_section.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/soup/src/main/res/layout/fragment_about.xml b/soup/src/main/res/layout/fragment_about.xml index 74b346e..d21836f 100644 --- a/soup/src/main/res/layout/fragment_about.xml +++ b/soup/src/main/res/layout/fragment_about.xml @@ -82,7 +82,7 @@ android:paddingTop="@dimen/material_padding" android:text="@string/about_follow_me" android:textSize="@dimen/material_type_small" - android:textColor="@color/text_selector_red" /> + android:textColor="@drawable/text_selector_red" />