Skip to content

Commit

Permalink
Created MapsActivity base class that can be subclassed for ay activit…
Browse files Browse the repository at this point in the history
…y using map functions

Enabled toggle features to switch between a full screen map and a combinded map + content view. The content in most cases will be a list view with data matching the pins that are currently displayed.
  • Loading branch information
Seth Seligman committed Feb 6, 2015
1 parent 992f51c commit 5a4e264
Show file tree
Hide file tree
Showing 55 changed files with 1,309 additions and 507 deletions.
Empty file added .gitmodules
Empty file.
10 changes: 10 additions & 0 deletions .idea/libraries/android_maps_utils_0_3_4.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions .idea/libraries/library_2_0_4.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions .idea/libraries/library_2_4_0.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

739 changes: 383 additions & 356 deletions .idea/workspace.xml

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions .pydevproject
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse-pydev version="1.0"?>

<pydev_project>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
</pydev_project>
88 changes: 88 additions & 0 deletions .settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,88 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
org.eclipse.jdt.core.compiler.problem.comparingIdentical=ignore
org.eclipse.jdt.core.compiler.problem.deadCode=warning
org.eclipse.jdt.core.compiler.problem.deprecation=warning
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=ignore
org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=ignore
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
org.eclipse.jdt.core.compiler.problem.nullReference=warning
org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
org.eclipse.jdt.core.compiler.problem.unusedImport=warning
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.6
21 changes: 21 additions & 0 deletions MITApp-marty.iml
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="java-gradle" name="Java-Gradle">
<configuration>
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/build/classes/main" />
<output-test url="file://$MODULE_DIR$/build/classes/test" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

16 changes: 16 additions & 0 deletions android-async-http-1.4.6/android-async-http-1.4.6.iml
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android-gradle" name="Android-Gradle">
<configuration>
<option name="GRADLE_PROJECT_PATH" value=":android-async-http-1.4.6" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

Binary file not shown.
2 changes: 2 additions & 0 deletions android-async-http-1.4.6/build.gradle
@@ -0,0 +1,2 @@
configurations.create("default")
artifacts.add("default", file('android-async-http-1.4.6.jar'))
3 changes: 3 additions & 0 deletions app/app.iml
Expand Up @@ -86,6 +86,9 @@
<orderEntry type="library" exported="" name="support-annotations-21.0.0" level="project" />
<orderEntry type="library" exported="" name="support-v4-21.0.0" level="project" />
<orderEntry type="library" exported="" name="play-services-6.5.87" level="project" />
<orderEntry type="library" exported="" name="android-maps-utils-0.3.4" level="project" />
<orderEntry type="library" exported="" name="library-2.4.0" level="project" />
<orderEntry type="library" exported="" name="library-2.0.4" level="project" />
<orderEntry type="library" exported="" name="android-async-http-1.4.6" level="project" />
</component>
</module>
Expand Down
40 changes: 25 additions & 15 deletions app/src/main/java/edu/mit/mitmobile2/MITModuleActivity.java
Expand Up @@ -40,6 +40,7 @@
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.SearchView;
import android.widget.Spinner;
Expand All @@ -57,7 +58,8 @@ public abstract class MITModuleActivity extends Activity implements ActionBar.Ta
protected String long_name; // may be able to lose this in place of mTitle
protected List spinnerList;
protected int contentLayoutId;
private RelativeLayout contentLayout;
private ViewStub contentViewStub;
private ProgressBar progressBar;
private NavItem mNavItem;
protected Boolean hasSearch = false;
protected MITAPIClient apiClient;
Expand All @@ -72,22 +74,20 @@ protected void onCreate(Bundle savedInstanceState) {
mContext = this;
this.apiClient = new MITAPIClient(mContext);
setTheme(android.R.style.Theme_Holo_Light);

//loadNavigation(mContext);

setContentView(R.layout.mit_module_layout);

// inflate content layout


// Set content view for MIT Module (includes navigation drawer)
setContentView(R.layout.mit_module_layout);

// get progress bar
this.progressBar = (ProgressBar)findViewById(R.id.progressBar);


// inflate content layout
if (contentLayoutId > 0) {
Log.d("ZZZ","setting content layout");
ViewStub v = (ViewStub) findViewById(R.id.contentStub);
v.setLayoutResource(contentLayoutId);
v.inflate();
//
// RelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) contentLayout.getLayoutParams();
// params.addRule(RelativeLayout.BELOW, R.id.drawer_layout);
//v.addView(contentLayout);
this.contentViewStub = (ViewStub) findViewById(R.id.contentViewStub);
this.contentViewStub.setLayoutResource(contentLayoutId);
this.contentViewStub.inflate();
}

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
Expand Down Expand Up @@ -321,6 +321,16 @@ public void onBackPressed() {
startActivity(intent);
}

public void showProgressBar() {
this.progressBar.setVisibility(View.VISIBLE);
this.contentViewStub.setVisibility(View.GONE);
}

public void hideProgressBar() {
this.progressBar.setVisibility(View.GONE);
this.contentViewStub.setVisibility(View.VISIBLE);
}

public List getSpinnerList() {
return spinnerList;
}
Expand Down
42 changes: 39 additions & 3 deletions app/src/main/java/edu/mit/mitmobile2/maps/MITMapView.java
Expand Up @@ -3,6 +3,10 @@
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Context;
import android.location.Location;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;

import java.util.ArrayList;
Expand All @@ -12,6 +16,7 @@
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.LatLngBounds;
import com.google.android.gms.maps.model.Marker;
Expand All @@ -20,6 +25,9 @@
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import android.graphics.*;
import android.content.res.Resources;
import android.view.ViewGroup;
import android.widget.RelativeLayout;

import com.google.maps.android.ui.IconGenerator;


Expand All @@ -28,23 +36,25 @@
public class MITMapView {

private GoogleMap mMap;
private MapFragment mapFragment;
private MapItem mItem;
public static String MAP_ITEMS = "MAP_ITEMS";
private FragmentManager mFm;
private int mapResourceId;

//set initial latlng for zoom in MIT area
final LatLng initialLatLng = new LatLng(42.359858, -71.09913);
final int initialZoom = 14;
public static final int INITIAL_ZOOM = 14;
private Context mContext;

public MITMapView(Context mContext, FragmentManager fm, int mapResourceId) {
this.mContext = mContext;
this.mFm = fm;
this.mapResourceId = mapResourceId;
mMap = ((MapFragment) fm.findFragmentById(mapResourceId)).getMap();
this.mapFragment = (MapFragment) fm.findFragmentById(mapResourceId);
mMap = this.mapFragment.getMap();
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(initialLatLng, initialZoom));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(initialLatLng, MITMapView.INITIAL_ZOOM));
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(false); // delete default button
}
Expand Down Expand Up @@ -137,4 +147,30 @@ public void fitMapItems() {
public GoogleMap getMap() {
return this.mMap;
}

public void toggle() {
if (isExpanded()) {
float map_height = mContext.getResources().getDimension(R.dimen.map_height);
mapFragment.getView().setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, (int)map_height));
}
else {
mapFragment.getView().setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
}
}

public Boolean isExpanded() {
// return true if the current map height != the collapsed map height defined at R.dimen.map_height
float h = mapFragment.getView().getHeight();
float map_height = mContext.getResources().getDimension(R.dimen.map_height);
return (h != map_height);
}

public void showLocation() {
Location location = mMap.getMyLocation();
CameraPosition position = new CameraPosition.Builder()
.target(new LatLng(location.getLatitude(), location.getLongitude())).zoom(MITMapView.INITIAL_ZOOM).build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(position));
}

}

0 comments on commit 5a4e264

Please sign in to comment.