From 934134621d1bedf001bcb2b40f827086902fc2c6 Mon Sep 17 00:00:00 2001 From: hmalik144 Date: Sun, 30 Dec 2018 13:59:29 +1100 Subject: [PATCH] Initial commit --- .gitignore | 11 + .idea/codeStyles/Project.xml | 29 + .idea/dictionaries/h_mal.xml | 7 + .idea/gradle.xml | 18 + .idea/misc.xml | 38 + .idea/runConfigurations.xml | 12 + app/.gitignore | 1 + app/build.gradle | 32 + app/proguard-rules.pro | 21 + .../exchangemap/ExampleInstrumentedTest.java | 26 + app/src/debug/res/values/google_maps_api.xml | 24 + app/src/main/AndroidManifest.xml | 43 + app/src/main/ic_launcher-web.png | Bin 0 -> 43462 bytes .../h_mal/exchangemap/CustomDialogClass.java | 96 + .../h_mal/exchangemap/FragmentMap.java | 367 +++ .../h_mal/exchangemap/FragmentSearch.java | 101 + .../appttude/h_mal/exchangemap/MapItem.java | 197 ++ .../h_mal/exchangemap/MapsActivity.java | 172 ++ .../h_mal/exchangemap/MapsJsonCall.java | 217 ++ .../exchangemap/PlaceAutocompleteAdapter.java | 242 ++ .../h_mal/exchangemap/getLatLong.java | 68 + app/src/main/res/anim/enter_from_left.xml | 8 + app/src/main/res/anim/enter_from_right.xml | 8 + app/src/main/res/anim/exit_to_left.xml | 8 + app/src/main/res/anim/exit_to_right.xml | 8 + .../drawable-v24/ic_launcher_foreground.xml | 34 + .../res/drawable/ic_launcher_background.xml | 170 ++ app/src/main/res/layout/custom_dialog.xml | 42 + app/src/main/res/layout/fragment_maps.xml | 34 + app/src/main/res/layout/fragment_search.xml | 105 + app/src/main/res/layout/main_layout.xml | 18 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_home.png | Bin 0 -> 509 bytes app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2963 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4905 bytes app/src/main/res/mipmap-hdpi/ic_notif.png | Bin 0 -> 671 bytes app/src/main/res/mipmap-hdpi/ic_world.png | Bin 0 -> 1748 bytes app/src/main/res/mipmap-mdpi/ic_home.png | Bin 0 -> 350 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2060 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2783 bytes app/src/main/res/mipmap-mdpi/ic_notif.png | Bin 0 -> 881 bytes app/src/main/res/mipmap-mdpi/ic_world.png | Bin 0 -> 1314 bytes app/src/main/res/mipmap-xhdpi/ic_home.png | Bin 0 -> 764 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4490 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6895 bytes app/src/main/res/mipmap-xhdpi/ic_notif.png | Bin 0 -> 1744 bytes app/src/main/res/mipmap-xhdpi/ic_world.png | Bin 0 -> 2826 bytes app/src/main/res/mipmap-xxhdpi/ic_home.png | Bin 0 -> 1291 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6387 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10413 bytes app/src/main/res/mipmap-xxhdpi/ic_notif.png | Bin 0 -> 2668 bytes app/src/main/res/mipmap-xxhdpi/ic_world.png | Bin 0 -> 4449 bytes app/src/main/res/mipmap-xxxhdpi/ic_home.png | Bin 0 -> 1887 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9128 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15132 bytes app/src/main/res/mipmap-xxxhdpi/ic_notif.png | Bin 0 -> 3008 bytes app/src/main/res/mipmap-xxxhdpi/ic_world.png | Bin 0 -> 6061 bytes app/src/main/res/values/colors.xml | 6 + app/src/main/res/values/dimens.xml | 4 + .../res/values/ic_launcher_background.xml | 4 + app/src/main/res/values/strings.xml | 1999 +++++++++++++++++ app/src/main/res/values/styles.xml | 21 + .../release/res/values/google_maps_api.xml | 20 + .../h_mal/exchangemap/ExampleUnitTest.java | 17 + build.gradle | 27 + gradle.properties | 15 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 172 ++ gradlew.bat | 84 + settings.gradle | 1 + 72 files changed, 4542 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/dictionaries/h_mal.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/runConfigurations.xml create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/com/appttude/h_mal/exchangemap/ExampleInstrumentedTest.java create mode 100644 app/src/debug/res/values/google_maps_api.xml create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/ic_launcher-web.png create mode 100644 app/src/main/java/com/appttude/h_mal/exchangemap/CustomDialogClass.java create mode 100644 app/src/main/java/com/appttude/h_mal/exchangemap/FragmentMap.java create mode 100644 app/src/main/java/com/appttude/h_mal/exchangemap/FragmentSearch.java create mode 100644 app/src/main/java/com/appttude/h_mal/exchangemap/MapItem.java create mode 100644 app/src/main/java/com/appttude/h_mal/exchangemap/MapsActivity.java create mode 100644 app/src/main/java/com/appttude/h_mal/exchangemap/MapsJsonCall.java create mode 100644 app/src/main/java/com/appttude/h_mal/exchangemap/PlaceAutocompleteAdapter.java create mode 100644 app/src/main/java/com/appttude/h_mal/exchangemap/getLatLong.java create mode 100644 app/src/main/res/anim/enter_from_left.xml create mode 100644 app/src/main/res/anim/enter_from_right.xml create mode 100644 app/src/main/res/anim/exit_to_left.xml create mode 100644 app/src/main/res/anim/exit_to_right.xml create mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/layout/custom_dialog.xml create mode 100644 app/src/main/res/layout/fragment_maps.xml create mode 100644 app/src/main/res/layout/fragment_search.xml create mode 100644 app/src/main/res/layout/main_layout.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_home.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_notif.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_world.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_home.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_notif.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_world.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_home.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_notif.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_world.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_home.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_notif.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_world.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_home.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_notif.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_world.png create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/ic_launcher_background.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/release/res/values/google_maps_api.xml create mode 100644 app/src/test/java/com/appttude/h_mal/exchangemap/ExampleUnitTest.java create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fd45b12 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +*.iml +.gradle +/local.properties +/.idea/caches/build_file_checksums.ser +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +.DS_Store +/build +/captures +.externalNativeBuild diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..30aa626 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/dictionaries/h_mal.xml b/.idea/dictionaries/h_mal.xml new file mode 100644 index 0000000..23aca1d --- /dev/null +++ b/.idea/dictionaries/h_mal.xml @@ -0,0 +1,7 @@ + + + + retreived + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..7ac24c7 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..b0c7b20 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..e4fb3aa --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,32 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 28 + defaultConfig { + applicationId "com.appttude.h_mal.exchangemap" + minSdkVersion 23 + targetSdkVersion 28 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.android.support:appcompat-v7:28.0.0' + implementation 'com.android.support:design:28.0.0' + implementation 'com.google.android.gms:play-services-maps:16.0.0' + implementation 'com.google.android.gms:play-services-places:16.0.0' + implementation "com.google.android.gms:play-services-location:16.0.0" + implementation 'com.android.support:support-v4:28.0.0' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/app/src/androidTest/java/com/appttude/h_mal/exchangemap/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/appttude/h_mal/exchangemap/ExampleInstrumentedTest.java new file mode 100644 index 0000000..ad32e9c --- /dev/null +++ b/app/src/androidTest/java/com/appttude/h_mal/exchangemap/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.appttude.h_mal.exchangemap; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.appttude.h_mal.exchangemap", appContext.getPackageName()); + } +} diff --git a/app/src/debug/res/values/google_maps_api.xml b/app/src/debug/res/values/google_maps_api.xml new file mode 100644 index 0000000..e505be8 --- /dev/null +++ b/app/src/debug/res/values/google_maps_api.xml @@ -0,0 +1,24 @@ + + + AIzaSyA8DdDZvG6ihSrR5TlkG4FXb6ffyt19_Pg + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..e44dc01 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png new file mode 100644 index 0000000000000000000000000000000000000000..ff81caa10fdde63e54100756acda1f281a87b6f8 GIT binary patch literal 43462 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 literal 0 HcmV?d00001 diff --git a/app/src/main/java/com/appttude/h_mal/exchangemap/CustomDialogClass.java b/app/src/main/java/com/appttude/h_mal/exchangemap/CustomDialogClass.java new file mode 100644 index 0000000..413e396 --- /dev/null +++ b/app/src/main/java/com/appttude/h_mal/exchangemap/CustomDialogClass.java @@ -0,0 +1,96 @@ +package com.appttude.h_mal.exchangemap; + +import android.app.Dialog; +import android.content.Context; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.View; +import android.view.WindowManager; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.EditText; +import android.widget.ListView; +import android.widget.TextView; + +public class CustomDialogClass extends Dialog implements android.view.View.OnClickListener{ + + Context context; + ListView listView; + TextView textView; + EditText editText; + int selection; + + public CustomDialogClass(@NonNull Context context, TextView textView) { + super(context); + this.context = context; + this.textView = textView; + if (textView.getId() == R.id.currency_one){ + selection = 1; + }else{ + selection = 2; + } + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.custom_dialog); + +// getWindow().setBackgroundDrawableResource(android.R.color.transparent); +// +// getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); +// +// listView = (ListView) findViewById(R.id.list_view); +// editText = (EditText) findViewById(R.id.search_text) ; +// +// final ArrayAdapter arrayAdapter = ArrayAdapter.createFromResource(context,R.array.currency_arrays,android.R.layout.simple_list_item_1); +// listView.setAdapter(arrayAdapter); +// +// editText.addTextChangedListener(new TextWatcher() { +// @Override +// public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { +// +// } +// +// @Override +// public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { +// arrayAdapter.getFilter().filter(charSequence); +// } +// +// @Override +// public void afterTextChanged(Editable editable) { +// +// } +// }); +// +// listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { +// @Override +// public void onItemClick(AdapterView adapterView, View view, int i, long l) { +// textView.setText(adapterView.getItemAtPosition(i).toString()); +// SharedPreferences.Editor editor = pref.edit(); +// if (selection == 1) { +// editor.putString(CURRENCY_ONE,adapterView.getItemAtPosition(i).toString()); +// }else{ +// editor.putString(CURRENCY_TWO,adapterView.getItemAtPosition(i).toString()); +// } +// editor.apply(); +// currencyOneEditText.setText(""); +// currencyTwoEditText.setText(""); +// String stringURL = UriBuilder(currencyOne.getText().toString().substring(0,3), +// currencyTwo.getText().toString().substring(0,3)); +// MyAsyncTask task = new MyAsyncTask(); +// task.execute(stringURL); +// dismiss(); +// } +// }); + } + + @Override + public void onClick(View view) { + + } +} + diff --git a/app/src/main/java/com/appttude/h_mal/exchangemap/FragmentMap.java b/app/src/main/java/com/appttude/h_mal/exchangemap/FragmentMap.java new file mode 100644 index 0000000..8e4ed9f --- /dev/null +++ b/app/src/main/java/com/appttude/h_mal/exchangemap/FragmentMap.java @@ -0,0 +1,367 @@ +package com.appttude.h_mal.exchangemap; + +import android.Manifest; +import android.content.pm.PackageManager; +import android.os.AsyncTask; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.design.widget.FloatingActionButton; +import android.support.v4.app.ActivityCompat; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentTransaction; +import android.text.TextPaint; +import android.text.style.CharacterStyle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.google.android.gms.common.data.DataBufferUtils; +import com.google.android.gms.location.places.AutocompleteFilter; +import com.google.android.gms.location.places.AutocompletePrediction; +import com.google.android.gms.location.places.AutocompletePredictionBufferResponse; +import com.google.android.gms.location.places.GeoDataClient; +import com.google.android.gms.location.places.Place; +import com.google.android.gms.location.places.PlaceBufferResponse; +import com.google.android.gms.location.places.PlaceDetectionClient; +import com.google.android.gms.location.places.PlaceLikelihood; +import com.google.android.gms.location.places.PlaceLikelihoodBufferResponse; +import com.google.android.gms.location.places.Places; +import com.google.android.gms.maps.CameraUpdate; +import com.google.android.gms.maps.CameraUpdateFactory; +import com.google.android.gms.maps.GoogleMap; +import com.google.android.gms.maps.MapView; +import com.google.android.gms.maps.OnMapReadyCallback; +import com.google.android.gms.maps.SupportMapFragment; +import com.google.android.gms.maps.model.CircleOptions; +import com.google.android.gms.maps.model.LatLng; +import com.google.android.gms.maps.model.LatLngBounds; +import com.google.android.gms.maps.model.MarkerOptions; +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.RuntimeExecutionException; +import com.google.android.gms.tasks.Task; +import com.google.android.gms.tasks.Tasks; + +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import static android.content.ContentValues.TAG; +import static com.appttude.h_mal.exchangemap.MapsJsonCall.*; + +import static com.google.android.gms.location.places.AutocompleteFilter.TYPE_FILTER_ADDRESS; +import static com.google.android.gms.location.places.AutocompleteFilter.TYPE_FILTER_ESTABLISHMENT; + +public class FragmentMap extends Fragment implements OnMapReadyCallback { + + private GoogleMap mMap; + private GeoDataClient mGeoDataClient; + private PlaceDetectionClient mPlaceDetectionClient; + LatLngBounds bounds; + + private String TAG = getClass().getSimpleName(); + + public FragmentMap() { + // Required empty public constructor + } + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + View rootview = inflater.inflate(R.layout.fragment_maps, container, false); + + + FloatingActionButton fab = rootview.findViewById(R.id.floatingActionButton); + fab.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + FragmentTransaction fragmentTransaction = (MapsActivity.fragmentManager).beginTransaction(); + fragmentTransaction.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_left, R.anim.exit_to_right) + .replace(R.id.container,new FragmentSearch()) + .addToBackStack("search").commit(); + } + }); + + return rootview; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + SupportMapFragment supportMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map); + supportMapFragment.getMapAsync(this); + } + + @Override + public void onMapReady(GoogleMap googleMap) { + mMap = googleMap; + + // Add a marker in Sydney and move the camera + LatLng current = new LatLng(getLatLong.latitude, getLatLong.longitude); + if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && + ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + + // TODO: Consider calling + // ActivityCompat#requestPermissions + // 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 ActivityCompat#requestPermissions for more details. + return; + }else{ + mMap.setMyLocationEnabled(true); + } + + + mMap.addCircle(new CircleOptions().center(current)); +// mMap.addMarker(new MarkerOptions().position(current).title("Marker in Sydney")); + mMap.moveCamera(CameraUpdateFactory.newLatLng(current)); + + double radiusDegrees = 0.; + LatLng northEast = new LatLng(current.latitude + radiusDegrees, current.longitude + radiusDegrees); + LatLng southWest = new LatLng(current.latitude - radiusDegrees, current.longitude - radiusDegrees); + bounds = LatLngBounds.builder() + .include(northEast) + .include(southWest) + .build(); + mGeoDataClient = Places.getGeoDataClient(getContext()); + + getLocationOnMap locationOnMap = new getLocationOnMap(); + locationOnMap.execute(current); + +// AutocompleteFilter typeFilter = new AutocompleteFilter.Builder() +// .setTypeFilter(TYPE_FILTER_ESTABLISHMENT ) +// .build(); +// +// Task results = +// mGeoDataClient.getAutocompletePredictions("currency", bounds, typeFilter); +// +// +// LocationAsyncTask locationAsyncTask = new LocationAsyncTask(); +// locationAsyncTask.execute(results); + + + } + + private void showCurrentPlace() { + if (mMap == null) { + return; + } + +// final LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder(); +// LatLngBounds newBounds = null; + + try{ + @SuppressWarnings("MissingPermission") final + Task placeResult = + mPlaceDetectionClient.getCurrentPlace(null); + placeResult.addOnCompleteListener + (new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful() && task.getResult() != null) { + PlaceLikelihoodBufferResponse likelyPlaces = task.getResult(); + + + for (PlaceLikelihood placeLikelihood : likelyPlaces) { + // Build a list of likely places to show the user. + Place myPlace = placeLikelihood.getPlace(); + Log.i(TAG, "Place found: " + myPlace.getName()); + mMap.addMarker(new MarkerOptions().position(myPlace.getLatLng()).title(myPlace.getName().toString())); +// boundsBuilder.include(placeLikelihood.getPlace().getLatLng()); + } + + // Release the place likelihood buffer, to avoid memory leaks. + likelyPlaces.release(); + + + } else { + Log.e(TAG, "Exception: %s", task.getException()); + } + } + + }); +// newBounds = boundsBuilder.build(); + }catch (Exception e){ + Log.e(TAG, "showCurrentPlace: ", e); + }finally { +// try { +// CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(newBounds, 10); +// mMap.animateCamera(cameraUpdate); +// }catch (Exception e){ +// Log.e(TAG, "onPostExecute: ", e); +// }finally { +// if (newBounds == null){ +// mMap.animateCamera( CameraUpdateFactory.newLatLngBounds(bounds, 0) ); +// } +// } + } + + + } + + private class getLocationOnMap extends AsyncTask{ + + @Override + protected MapItem doInBackground(LatLng... latLngs) { + String json = null; + MapItem mapItem = null; + + try { + Log.i(TAG, "doInBackground: " + UriBuilder(latLngs[0]) ); + URL url = createUrl(UriBuilder(latLngs[0])); + json = makeHttpRequest(url); + } catch (IOException e) { + e.printStackTrace(); + }finally { + if (json != null){ + mapItem = extractFeatureFromJson(json); + } + } + + return mapItem; + } + + @Override + protected void onPostExecute(MapItem mapItem) { + super.onPostExecute(mapItem); + + LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder(); + LatLngBounds newBounds = null; + + try { + + ArrayList results = mapItem.getResults(); + + for (int i=0; i () { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + PlaceBufferResponse places = task.getResult(); + Place myPlace = places.get(0); + + Log.i(TAG, "Place found: " + myPlace.getName()); + mMap.addMarker(new MarkerOptions().position(myPlace.getLatLng()).title(myPlace.getName().toString())); + places.release(); + } else { + Log.e(TAG, "Place not found."); + } + } + }); + } + newBounds = boundsBuilder.build(); + }catch (Exception e){ + Log.e(TAG, "onPostExecute: ",e ); + }finally { + try { + CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(newBounds, 10); + mMap.animateCamera(cameraUpdate); + }catch (Exception e){ + Log.e(TAG, "onPostExecute: ", e); + }finally { + if (newBounds == null){ + mMap.animateCamera( CameraUpdateFactory.newLatLngBounds(bounds, 0) ); + } + } + + } + + } + } + + private class LocationAsyncTask extends AsyncTask, Void, AutocompletePredictionBufferResponse>{ + + @Override + protected AutocompletePredictionBufferResponse doInBackground(Task... tasks) { + + try { + Tasks.await(tasks[0], 60, TimeUnit.SECONDS); + } catch (ExecutionException | InterruptedException | TimeoutException e) { + e.printStackTrace(); + } + + return tasks[0].getResult(); + } + + @Override + protected void onPostExecute(AutocompletePredictionBufferResponse response) { + super.onPostExecute(response); + + try { + + Log.i(TAG, "Query completed. Received " + response.getCount() + + " predictions."); + + String [] ids = {"ChIJndkxNgNakWsRjHGZBzHxu8M","ChIJUcxf7YxbkWsRsndgEcBNlLQ","ChIJk-7r9ARakWsRv16cDh3GXzU","ChIJh4SRLgNakWsRuyWBDLouw-4","ChIJL533ngRakWsRUp51ucHAp5Q","ChIJy1uXvQRakWsRT6xLCK9LmzY","ChIJcTZWngRakWsRm8Cz7egsDm8","ChIJDfur3xxakWsR4WP10zl01Hg"}; + + for (int i=0; i () { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + PlaceBufferResponse places = task.getResult(); + Place myPlace = places.get(0); + Log.i(TAG, "Place found: " + myPlace.getName()); + mMap.addMarker(new MarkerOptions().position(myPlace.getLatLng()).title(myPlace.getName().toString())); + places.release(); + } else { + Log.e(TAG, "Place not found."); + } + } + }); + } + +// for (int i = 0; i < response.getCount(); i++){ +// final String retrievedId = response.get(i).getPlaceId(); +// +// mGeoDataClient.getPlaceById(retrievedId).addOnCompleteListener(new OnCompleteListener() { +// @Override +// public void onComplete(@NonNull Task task) { +// if (task.isSuccessful()) { +// PlaceBufferResponse places = task.getResult(); +// Place myPlace = places.get(0); +// Log.i(TAG, "Place found: " + myPlace.getName()); +// mMap.addMarker(new MarkerOptions().position(myPlace.getLatLng()).title(myPlace.getName().toString())); +// places.release(); +// } else { +// Log.e(TAG, "Place not found."); +// } +// } +// }); +// } + +// // Freeze the results immutable representation that can be stored safely. +// ArrayList al = DataBufferUtils.freezeAndClose(response); +// +// for (AutocompletePrediction p : al) { +// CharSequence cs = p.getFullText(new CharacterStyle() { +// @Override +// public void updateDrawState(TextPaint tp) { +// mMap.addMarker(new MarkerOptions().position().title("Marker in Sydney")); +// } +// }); +// Log.i(TAG, cs.toString()); +// } + + } catch (RuntimeExecutionException e) { + // If the query did not complete successfully return null + Log.e(TAG, "Error getting autocomplete prediction API call", e); + } finally { + mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds,0)); + } + } + } + +} diff --git a/app/src/main/java/com/appttude/h_mal/exchangemap/FragmentSearch.java b/app/src/main/java/com/appttude/h_mal/exchangemap/FragmentSearch.java new file mode 100644 index 0000000..354efd1 --- /dev/null +++ b/app/src/main/java/com/appttude/h_mal/exchangemap/FragmentSearch.java @@ -0,0 +1,101 @@ +package com.appttude.h_mal.exchangemap; + +import android.content.Context; +import android.net.Uri; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.AutoCompleteTextView; +import android.widget.EdgeEffect; +import android.widget.EditText; +import android.widget.ImageView; + +import com.google.android.gms.common.ConnectionResult; +import com.google.android.gms.common.api.GoogleApiClient; +import com.google.android.gms.location.places.AutocompleteFilter; +import com.google.android.gms.location.places.AutocompletePrediction; +import com.google.android.gms.location.places.PlaceDetectionClient; +import com.google.android.gms.location.places.Places; +import com.google.android.gms.location.places.ui.PlaceAutocomplete; +import com.google.android.gms.maps.model.LatLng; +import com.google.android.gms.maps.model.LatLngBounds; + +import static com.appttude.h_mal.exchangemap.MapsActivity.getLocationName; +import static com.google.android.gms.location.places.AutocompleteFilter.TYPE_FILTER_ADDRESS; +import static com.google.android.gms.location.places.AutocompleteFilter.TYPE_FILTER_CITIES; +import static com.google.android.gms.location.places.AutocompleteFilter.TYPE_FILTER_ESTABLISHMENT; + + +public class FragmentSearch extends Fragment implements GoogleApiClient.OnConnectionFailedListener { + + @Override + public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { + + } + + private GoogleApiClient googleApiClient; + private PlaceAutocompleteAdapter mAutocompleteAdapter; + public static final LatLngBounds LAT_LNG_BOUNDS = new LatLngBounds( + new LatLng(-40,-160),new LatLng(71,136) + ); + + + public FragmentSearch() { + // Required empty public constructor + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + View rootView = inflater.inflate(R.layout.fragment_search, container, false); + + String[] airports = getResources().getStringArray(R.array.airports); + ArrayAdapter adapter = + new ArrayAdapter(getContext(), android.R.layout.simple_list_item_1, airports); + + final AutoCompleteTextView homeLocationEditText = rootView.findViewById(R.id.location_home); + + ImageView myLocation = rootView.findViewById(R.id.my_loc); + myLocation.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String myLocation = getLocationName(getContext(),getLatLong.latitude,getLatLong.longitude); + homeLocationEditText.setText(myLocation); + } + }); + + AutoCompleteTextView departureEditText = rootView.findViewById(R.id.location_home_departure); + departureEditText.setAdapter(adapter); + + AutoCompleteTextView arrivalEditText = rootView.findViewById(R.id.location_arrival_airport); + arrivalEditText.setAdapter(adapter); + + googleApiClient = new GoogleApiClient.Builder(getContext()) + .addApi(Places.GEO_DATA_API) + .addApi(Places.PLACE_DETECTION_API) + .enableAutoManage(getActivity(),this) + .build(); + + AutocompleteFilter typeFilter = new AutocompleteFilter.Builder() + .setTypeFilter(TYPE_FILTER_CITIES ) +// .setTypeFilter(TYPE_FILTER_ADDRESS) + .build(); + + mAutocompleteAdapter = new PlaceAutocompleteAdapter(getContext(),googleApiClient,LAT_LNG_BOUNDS,typeFilter); + + AutoCompleteTextView destinationEditText = rootView.findViewById(R.id.location_arrival_); + + destinationEditText.setAdapter(mAutocompleteAdapter); + homeLocationEditText.setAdapter(mAutocompleteAdapter); + + return rootView; + } + + + +} diff --git a/app/src/main/java/com/appttude/h_mal/exchangemap/MapItem.java b/app/src/main/java/com/appttude/h_mal/exchangemap/MapItem.java new file mode 100644 index 0000000..dd88b8f --- /dev/null +++ b/app/src/main/java/com/appttude/h_mal/exchangemap/MapItem.java @@ -0,0 +1,197 @@ +package com.appttude.h_mal.exchangemap; + +import android.support.annotation.Nullable; + +import com.google.android.gms.maps.model.LatLng; +import com.google.android.gms.maps.model.LatLngBounds; + +import java.net.URL; +import java.util.ArrayList; + +public class MapItem { + + private String next_page_token; + private ArrayList results; + + public static class result{ + private String formatted_Address; + private Geometry geometry; + private URL icon; + private String placeId; + private String name; + private OpeningHours openingHours; + private ArrayList photos; + private String place_id; + private PlusCode plusCode; + private Double rating; + private String reference; + private ArrayList types; + + public result(String formatted_Address, Geometry geometry, URL icon, String placeId, String name, + @Nullable OpeningHours openingHours, @Nullable ArrayList photos, String place_id, PlusCode plusCode, Double rating, + String reference, ArrayList types) { + this.formatted_Address = formatted_Address; + this.geometry = geometry; + this.icon = icon; + this.placeId = placeId; + this.name = name; + this.openingHours = openingHours; + this.photos = photos; + this.place_id = place_id; + this.plusCode = plusCode; + this.rating = rating; + this.reference = reference; + this.types = types; + } + + public String getFormatted_Address() { + return formatted_Address; + } + + public Geometry getGeometry() { + return geometry; + } + + public URL getIcon() { + return icon; + } + + public String getPlaceId() { + return placeId; + } + + public String getName() { + return name; + } + + public OpeningHours getOpeningHours() { + return openingHours; + } + + public ArrayList getPhotos() { + return photos; + } + + public String getPlace_id() { + return place_id; + } + + public PlusCode getPlusCode() { + return plusCode; + } + + public Double getRating() { + return rating; + } + + public String getReference() { + return reference; + } + + public ArrayList getTypes() { + return types; + } + } + + private String status; + + public MapItem(String next_page_token, ArrayList results, String status) { + this.next_page_token = next_page_token; + this.results = results; + this.status = status; + } + + public String getNext_page_token() { + return next_page_token; + } + + public ArrayList getResults() { + return results; + } + + public String getStatus() { + return status; + } + + public static class Geometry{ + private LatLng location; + private LatLngBounds viewport; + + public Geometry(LatLng location, LatLngBounds viewport) { + this.location = location; + this.viewport = viewport; + } + + public LatLng getLocation() { + return location; + } + + public LatLngBounds getViewport() { + return viewport; + } + } + + public static class OpeningHours{ + private Boolean openNow; + + public OpeningHours(Boolean openNow) { + this.openNow = openNow; + } + + public Boolean getOpenNow() { + return openNow; + } + } + + public static class Photo{ + private int height; + private String htmlAttributions; + private String photoReference; + private int width; + + public Photo(int height, String htmlAttributions, String photoReference, int width) { + this.height = height; + this.htmlAttributions = htmlAttributions; + this.photoReference = photoReference; + this.width = width; + } + + public int getHeight() { + return height; + } + + public String getHtmlAttributions() { + return htmlAttributions; + } + + public String getPhotoReference() { + return photoReference; + } + + public int getWidth() { + return width; + } + } + + public static class PlusCode { + + private String globalCode; + private String compoundCode; + + public PlusCode(String globalCode, String compoundCode) { + this.globalCode = globalCode; + this.compoundCode = compoundCode; + } + + public String getGlobalCode() { + return globalCode; + } + + public String getCompoundCode() { + return compoundCode; + } + + } +} + + diff --git a/app/src/main/java/com/appttude/h_mal/exchangemap/MapsActivity.java b/app/src/main/java/com/appttude/h_mal/exchangemap/MapsActivity.java new file mode 100644 index 0000000..6715d9e --- /dev/null +++ b/app/src/main/java/com/appttude/h_mal/exchangemap/MapsActivity.java @@ -0,0 +1,172 @@ +package com.appttude.h_mal.exchangemap; + +import android.Manifest; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.location.Address; +import android.location.Geocoder; +import android.support.annotation.NonNull; +import android.support.design.widget.FloatingActionButton; +import android.support.v4.app.ActivityCompat; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; +import android.os.Bundle; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; +import android.view.View; +import android.widget.ProgressBar; +import android.widget.Toast; + +import com.google.android.gms.maps.CameraUpdateFactory; +import com.google.android.gms.maps.GoogleMap; +import com.google.android.gms.maps.OnMapReadyCallback; +import com.google.android.gms.maps.SupportMapFragment; +import com.google.android.gms.maps.model.CircleOptions; +import com.google.android.gms.maps.model.LatLng; + +import java.io.IOException; +import java.util.List; +import java.util.Locale; + +public class MapsActivity extends FragmentActivity { + + + public static int MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION = 1; + public static FragmentManager fragmentManager; + private String currentFragment; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.main_layout); + + if (ActivityCompat.checkSelfPermission(this, + android.Manifest.permission.ACCESS_FINE_LOCATION) + != PackageManager.PERMISSION_GRANTED) { + + if (!ActivityCompat.shouldShowRequestPermissionRationale(this, + android.Manifest.permission.ACCESS_FINE_LOCATION)) { + requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, + MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION); + } + } + getLatLong.configLatLong(this); + // Obtain the SupportMapFragment and get notified when the map is ready to be used. +// SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() +// .findFragmentById(R.id.map); +// mapFragment.getMapAsync(this); + + fragmentManager = getSupportFragmentManager(); + FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); + fragmentTransaction.replace(R.id.container,new FragmentMap()).addToBackStack("main") +// .setCustomAnimations(R.anim.enter_from_left, R.anim.exit_to_right, R.anim.enter_from_right, R.anim.exit_to_left) + .commit(); + + fragmentManager.addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() { + @Override + public void onBackStackChanged() { + List f = fragmentManager.getFragments(); + Fragment frag = f.get(0); + currentFragment = frag.getClass().getSimpleName(); + } + }); + + } + + public static String getLocationName(Context context, Double latitude, Double longitude) { + Geocoder geoCoder = new Geocoder(context, Locale.getDefault()); + String result = ""; + List
list = null; + try { + list = geoCoder.getFromLocation(latitude, longitude, 1); + } catch (IOException e) { + e.printStackTrace(); + }finally { + if (list != null & list.size() > 0) { + Address address = list.get(0); + result = address.getLocality(); + } + } + + return result; + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + + if (requestCode == MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION) { + if (grantResults.length > 0 + && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + try { + getLatLong.configLatLong(this); + } catch (Exception e) { + System.out.println("error msg: " + e); + } + + Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show(); + + } else { + Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show(); + } + } + + } + + @Override + public void onBackPressed() { + + switch (currentFragment) { + case "FragmentMap": + new AlertDialog.Builder(this) + .setTitle("Leave?") + .setMessage("Are you sure you want to exit?") + .setNegativeButton(android.R.string.no, null) + .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface arg0, int arg1) { + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + intent.addCategory(Intent.CATEGORY_HOME); + startActivity(intent); + finish(); + System.exit(0); + } + }).create().show(); + return; +// case "FragmentAddItem": +// if(FragmentAddItem.mRadioGroup.getCheckedRadioButtonId() == -1) { +// fragmentManager.popBackStack(); +// }else{ +// new AlertDialog.Builder(this) +// .setTitle("Discard Changes?") +// .setMessage("Are you sure you want to discard changes?") +// .setNegativeButton(android.R.string.no, null) +// .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { +// public void onClick(DialogInterface arg0, int arg1) { +// fragmentManager.popBackStack(); +// } +// }).create().show(); +// +// } +// return; + default: + if (fragmentManager.getBackStackEntryCount() > 1) { + fragmentManager.popBackStack(); + } + } + + } + /** + * Manipulates the map once available. + * This callback is triggered when the map is ready to be used. + * This is where we can add markers or lines, add listeners or move the camera. In this case, + * we just add a marker near Sydney, Australia. + * If Google Play services is not installed on the device, the user will be prompted to install + * it inside the SupportMapFragment. This method will only be triggered once the user has + * installed Google Play services and returned to the app. + */ + +} diff --git a/app/src/main/java/com/appttude/h_mal/exchangemap/MapsJsonCall.java b/app/src/main/java/com/appttude/h_mal/exchangemap/MapsJsonCall.java new file mode 100644 index 0000000..ccb3c96 --- /dev/null +++ b/app/src/main/java/com/appttude/h_mal/exchangemap/MapsJsonCall.java @@ -0,0 +1,217 @@ +package com.appttude.h_mal.exchangemap; + +import android.content.Context; +import android.net.Uri; +import android.text.TextUtils; +import android.util.Log; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.List; + +import com.appttude.h_mal.exchangemap.MapItem.*; +import com.google.android.gms.maps.model.LatLng; +import com.google.android.gms.maps.model.LatLngBounds; + +public class MapsJsonCall { + + private static String TAG = MapsJsonCall.class.getSimpleName(); + + private static Context context; + + protected static String UriBuilder(LatLng l){ + + Uri.Builder builder = new Uri.Builder(); + builder.scheme("https") + .authority("maps.googleapis.com") + .appendPath("maps") + .appendPath("api") + .appendPath("place") + .appendPath("textsearch") + .appendPath("json") + .appendQueryParameter("query","currency exchange") + .appendQueryParameter("location",l.latitude+","+l.longitude) + .appendQueryParameter("radius","3") + .appendQueryParameter("key","QUl6YVN5QThEZERadkc2aWhTclI1VGxrRzRGWGI2ZmZ5dDE5X1Bn"); + + return builder.build().toString().replace("%2C",",").replace("%20", "+"); + + } + + public static URL createUrl(String stringUrl) { + URL url = null; + try { + url = new URL(stringUrl); + } catch (MalformedURLException e) { + Log.e("ERROR", "Error with creating URL ", e); + } + return url; + } + + public static String makeHttpRequest(URL url) throws IOException { + String jsonResponse = null; + + if (url == null) { + return jsonResponse; + } + + HttpURLConnection urlConnection = null; + InputStream inputStream = null; + try { + urlConnection = (HttpURLConnection) url.openConnection(); + urlConnection.setReadTimeout(30000); + urlConnection.setConnectTimeout(30000); + urlConnection.setRequestMethod("GET"); + urlConnection.connect(); + + if (urlConnection.getResponseCode() == 200) { + inputStream = urlConnection.getInputStream(); + jsonResponse = readFromStream(inputStream); + } else { + Log.e("", "Error response code: " + urlConnection.getResponseCode()); + } + } catch (IOException e) { + Log.e("", "Problem retrieving the JSON results.", e); + } finally { + if (urlConnection != null) { + urlConnection.disconnect(); + } + if (inputStream != null) { + inputStream.close(); + } + } + + return jsonResponse; + } + + private static String readFromStream(InputStream inputStream) throws IOException { + StringBuilder output = new StringBuilder(); + if (inputStream != null) { + InputStreamReader inputStreamReader = new InputStreamReader(inputStream, Charset.forName("UTF-8")); + BufferedReader reader = new BufferedReader(inputStreamReader); + String line = ""; + while (line != null) { + output.append(line); + line = reader.readLine(); + } + } + Log.d("", output.toString()); + return output.toString(); + + } + + public static MapItem extractFeatureFromJson(String newsJSON) { + + if (TextUtils.isEmpty(newsJSON)) { + return null; + } + + String next_page_token = ""; + ArrayList results = new ArrayList<>(); + String status = ""; + + try { + JSONObject baseJsonResponse = new JSONObject(newsJSON); +// next_page_token = baseJsonResponse.getString("next_page_token"); + + JSONArray resultsArray = baseJsonResponse.getJSONArray("results"); + + for (int i = 0; i < resultsArray.length(); i++) { + JSONObject currentResult = resultsArray.getJSONObject(i); + + String formatted_Address = currentResult.getString("formatted_address"); + + JSONObject geometryObject = currentResult.getJSONObject("geometry"); + JSONObject locationObject = geometryObject.getJSONObject("location"); + LatLng location = new LatLng(locationObject.getDouble("lat"),locationObject.getDouble("lng")); + + JSONObject viewPointObject = geometryObject.getJSONObject("viewport"); +// LatLngBounds viewPort= new LatLngBounds( + LatLng northEast = new LatLng(viewPointObject.getJSONObject("northeast").getDouble("lat"), + viewPointObject.getJSONObject("northeast").getDouble("lng")); + LatLng southWest = new LatLng(viewPointObject.getJSONObject("southwest").getDouble("lat"), + viewPointObject.getJSONObject("southwest").getDouble("lng")); + LatLngBounds viewPort = LatLngBounds.builder().include(northEast).include(southWest).build(); + + MapItem.Geometry geometry = new Geometry(location,viewPort); + + URL icon = createUrl(currentResult.getString("icon")); + String placeId = currentResult.getString("id"); + String name = currentResult.getString("name"); + + JSONObject openingHoursObject = null; + OpeningHours openingHours = null; + try { + openingHoursObject = currentResult.getJSONObject("opening_hours"); + }catch (Exception e){ + Log.i(TAG, "extractFeatureFromJson: " + "no opening hours"); + }finally { + if (openingHoursObject != null){ + openingHours = new OpeningHours(openingHoursObject.getBoolean("open_now")); + } + } + + + + JSONArray photosArray = null; + ArrayList photos = null; + try { + photosArray = currentResult.getJSONArray("photos"); + }catch (Exception e){ + Log.i(TAG, "extractFeatureFromJson: " + "no photo"); + }finally { + if (photosArray != null){ + photos = new ArrayList<>(); + for (int p = 0; p < photosArray.length(); p++) { + JSONObject photoObject = photosArray.getJSONObject(p); + + int height = photoObject.getInt("height"); + String htmlAttributions = photoObject.getString("html_attributions"); + String photoReference = photoObject.getString("photo_reference"); + int width = photoObject.getInt("width"); + + photos.add(new Photo(height,htmlAttributions,photoReference,width)); + } + } + } + + + + String place_id = currentResult.getString("place_id"); + JSONObject plusCodeObject = currentResult.getJSONObject("plus_code"); + PlusCode plusCode = new PlusCode(plusCodeObject.getString("compound_code"), + plusCodeObject.getString("global_code")); + + Double rating = currentResult.getDouble("rating"); + String reference = currentResult.getString("reference"); + JSONArray typesObject = currentResult.getJSONArray("types"); + ArrayList types = new ArrayList<>(); + for (int t = 0; t < typesObject.length(); t++) { + types.add(typesObject.get(t).toString()); + } + + + MapItem.result result = new MapItem.result(formatted_Address,geometry,icon,placeId,name,openingHours,photos,place_id,plusCode,rating,reference,types); + results.add(result); + } + + status = baseJsonResponse.getString("status"); + + } catch (JSONException e) { + Log.e("Error", "Problem parsing the book JSON results", e); + } + + return new MapItem(next_page_token, results, status); + } +} diff --git a/app/src/main/java/com/appttude/h_mal/exchangemap/PlaceAutocompleteAdapter.java b/app/src/main/java/com/appttude/h_mal/exchangemap/PlaceAutocompleteAdapter.java new file mode 100644 index 0000000..2fa6ba2 --- /dev/null +++ b/app/src/main/java/com/appttude/h_mal/exchangemap/PlaceAutocompleteAdapter.java @@ -0,0 +1,242 @@ +package com.appttude.h_mal.exchangemap;/* + * Copyright (C) 2015 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +import com.google.android.gms.common.api.GoogleApiClient; +import com.google.android.gms.common.api.PendingResult; +import com.google.android.gms.common.api.Status; +import com.google.android.gms.common.data.DataBufferUtils; +import com.google.android.gms.location.places.AutocompleteFilter; +import com.google.android.gms.location.places.AutocompletePrediction; +import com.google.android.gms.location.places.AutocompletePredictionBuffer; +import com.google.android.gms.location.places.Places; +import com.google.android.gms.maps.model.LatLngBounds; + + +import android.content.Context; +import android.graphics.Typeface; +import android.text.style.CharacterStyle; +import android.text.style.StyleSpan; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.Filter; +import android.widget.Filterable; +import android.widget.TextView; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.concurrent.TimeUnit; + +/** + * Adapter that handles Autocomplete requests from the Places Geo Data API. + * {@link AutocompletePrediction} results from the API are frozen and stored directly in this + * adapter. (See {@link AutocompletePrediction#freeze()}.) + *

+ * Note that this adapter requires a valid {@link com.google.android.gms.common.api.GoogleApiClient}. + * The API client must be maintained in the encapsulating Activity, including all lifecycle and + * connection states. The API client must be connected with the {@link Places#GEO_DATA_API} API. + */ +public class PlaceAutocompleteAdapter + extends ArrayAdapter implements Filterable { + + private static final String TAG = "PlaceAutoCompleteAd"; + private static final CharacterStyle STYLE_BOLD = new StyleSpan(Typeface.BOLD); + /** + * Current results returned by this adapter. + */ + private ArrayList mResultList; + + /** + * Handles autocomplete requests. + */ + private GoogleApiClient mGoogleApiClient; + + /** + * The bounds used for Places Geo Data autocomplete API requests. + */ + private LatLngBounds mBounds; + + /** + * The autocomplete filter used to restrict queries to a specific set of place types. + */ + private AutocompleteFilter mPlaceFilter; + + /** + * Initializes with a resource for text rows and autocomplete query bounds. + * + * @see android.widget.ArrayAdapter#ArrayAdapter(android.content.Context, int) + */ + public PlaceAutocompleteAdapter(Context context, GoogleApiClient googleApiClient, + LatLngBounds bounds, AutocompleteFilter filter) { + super(context, android.R.layout.simple_expandable_list_item_2, android.R.id.text1); + mGoogleApiClient = googleApiClient; + mBounds = bounds; + mPlaceFilter = filter; + } + + /** + * Sets the bounds for all subsequent queries. + */ + public void setBounds(LatLngBounds bounds) { + mBounds = bounds; + } + + /** + * Returns the number of results received in the last autocomplete query. + */ + @Override + public int getCount() { + return mResultList.size(); + } + + /** + * Returns an item from the last autocomplete query. + */ + @Override + public AutocompletePrediction getItem(int position) { + return mResultList.get(position); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View row = super.getView(position, convertView, parent); + + // Sets the primary and secondary text for a row. + // Note that getPrimaryText() and getSecondaryText() return a CharSequence that may contain + // styling based on the given CharacterStyle. + + AutocompletePrediction item = getItem(position); + + TextView textView1 = (TextView) row.findViewById(android.R.id.text1); + TextView textView2 = (TextView) row.findViewById(android.R.id.text2); + textView1.setText(item.getPrimaryText(STYLE_BOLD)); + textView2.setText(item.getSecondaryText(STYLE_BOLD)); + + return row; + } + + /** + * Returns the filter for the current set of autocomplete results. + */ + @Override + public Filter getFilter() { + return new Filter() { + @Override + protected FilterResults performFiltering(CharSequence constraint) { + FilterResults results = new FilterResults(); + + // We need a separate list to store the results, since + // this is run asynchronously. + ArrayList filterData = new ArrayList<>(); + + // Skip the autocomplete query if no constraints are given. + if (constraint != null) { + // Query the autocomplete API for the (constraint) search string. + filterData = getAutocomplete(constraint); + } + + results.values = filterData; + if (filterData != null) { + results.count = filterData.size(); + } else { + results.count = 0; + } + + return results; + } + + @Override + protected void publishResults(CharSequence constraint, FilterResults results) { + + if (results != null && results.count > 0) { + // The API returned at least one result, update the data. + mResultList = (ArrayList) results.values; + notifyDataSetChanged(); + } else { + // The API did not return any results, invalidate the data set. + notifyDataSetInvalidated(); + } + } + + @Override + public CharSequence convertResultToString(Object resultValue) { + // Override this method to display a readable result in the AutocompleteTextView + // when clicked. + if (resultValue instanceof AutocompletePrediction) { + return ((AutocompletePrediction) resultValue).getFullText(null); + } else { + return super.convertResultToString(resultValue); + } + } + }; + } + + /** + * Submits an autocomplete query to the Places Geo Data Autocomplete API. + * Results are returned as frozen AutocompletePrediction objects, ready to be cached. + * objects to store the Place ID and description that the API returns. + * Returns an empty list if no results were found. + * Returns null if the API client is not available or the query did not complete + * successfully. + * This method MUST be called off the main UI thread, as it will block until data is returned + * from the API, which may include a network request. + * + * @param constraint Autocomplete query string + * @return Results from the autocomplete API or null if the query was not successful. + * @see Places#GEO_DATA_API#getAutocomplete(CharSequence) + * @see AutocompletePrediction#freeze() + */ + private ArrayList getAutocomplete(CharSequence constraint) { + if (mGoogleApiClient.isConnected()) { + Log.i(TAG, "Starting autocomplete query for: " + constraint); + + // Submit the query to the autocomplete API and retrieve a PendingResult that will + // contain the results when the query completes. + PendingResult results = + Places.GeoDataApi + .getAutocompletePredictions(mGoogleApiClient, constraint.toString(), + mBounds, mPlaceFilter); + + // This method should have been called off the main UI thread. Block and wait for at most 60s + // for a result from the API. + AutocompletePredictionBuffer autocompletePredictions = results + .await(60, TimeUnit.SECONDS); + + // Confirm that the query completed successfully, otherwise return null + final Status status = autocompletePredictions.getStatus(); + if (!status.isSuccess()) { + Toast.makeText(getContext(), "Error contacting API: " + status.toString(), + Toast.LENGTH_SHORT).show(); + Log.e(TAG, "Error getting autocomplete prediction API call: " + status.toString()); + autocompletePredictions.release(); + return null; + } + + Log.i(TAG, "Query completed. Received " + autocompletePredictions.getCount() + + " predictions."); + + // Freeze the results immutable representation that can be stored safely. + return DataBufferUtils.freezeAndClose(autocompletePredictions); + } + Log.e(TAG, "Google API client is not connected for autocomplete query."); + return null; + } + + +} diff --git a/app/src/main/java/com/appttude/h_mal/exchangemap/getLatLong.java b/app/src/main/java/com/appttude/h_mal/exchangemap/getLatLong.java new file mode 100644 index 0000000..b7aa84f --- /dev/null +++ b/app/src/main/java/com/appttude/h_mal/exchangemap/getLatLong.java @@ -0,0 +1,68 @@ +package com.appttude.h_mal.exchangemap; + +import android.Manifest; +import android.content.Context; +import android.content.pm.PackageManager; +import android.location.Location; +import android.location.LocationManager; +import android.support.v4.app.ActivityCompat; +import android.util.Log; +import android.widget.Toast; + +import com.google.android.gms.location.FusedLocationProviderClient; +import com.google.android.gms.location.LocationServices; + +/** + * Created by h_mal on 05/05/2018. + */ + +public class getLatLong { + static Location location; + public static Double longitude; + public static Double latitude; + + private static String TAG = getLatLong.class.getSimpleName(); + + public getLatLong(){ + super(); + } + + public static void configLatLong(Context context) { + + LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); + FusedLocationProviderClient mFusedLocationClient = LocationServices.getFusedLocationProviderClient(context); + if(ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) + !=PackageManager.PERMISSION_GRANTED) { + Toast.makeText(context, "Location permission denied", Toast.LENGTH_SHORT).show(); + } else { + try { + location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); + }catch (Exception e){ + Log.e("latlong error", "configLatLong: ", e); + }finally { + if (location == null){ + Log.i(TAG, "configLatLong: location initially was null"); + try{ + LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); + location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); + }catch (Exception e){ + Log.e(TAG, "configLatLong: ", e); + }finally { + if (location != null){ + latitude = location.getLatitude(); + longitude = location.getLongitude(); + + Log.i(TAG, "onSuccess: Latitude:" + location.getLatitude() + + "\n longitude: " + location.getLongitude()); + } + } + + }else{ + latitude = location.getLatitude(); + longitude = location.getLongitude(); + } + } + } + } + +} diff --git a/app/src/main/res/anim/enter_from_left.xml b/app/src/main/res/anim/enter_from_left.xml new file mode 100644 index 0000000..b02f7e4 --- /dev/null +++ b/app/src/main/res/anim/enter_from_left.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/enter_from_right.xml b/app/src/main/res/anim/enter_from_right.xml new file mode 100644 index 0000000..dfe4c2a --- /dev/null +++ b/app/src/main/res/anim/enter_from_right.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/exit_to_left.xml b/app/src/main/res/anim/exit_to_left.xml new file mode 100644 index 0000000..e7da89f --- /dev/null +++ b/app/src/main/res/anim/exit_to_left.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/exit_to_right.xml b/app/src/main/res/anim/exit_to_right.xml new file mode 100644 index 0000000..a61c7db --- /dev/null +++ b/app/src/main/res/anim/exit_to_right.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..1f6bb29 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..0d025f9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/custom_dialog.xml b/app/src/main/res/layout/custom_dialog.xml new file mode 100644 index 0000000..78ac018 --- /dev/null +++ b/app/src/main/res/layout/custom_dialog.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_maps.xml b/app/src/main/res/layout/fragment_maps.xml new file mode 100644 index 0000000..9133786 --- /dev/null +++ b/app/src/main/res/layout/fragment_maps.xml @@ -0,0 +1,34 @@ + + + + + + + + diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml new file mode 100644 index 0000000..6cdd6e7 --- /dev/null +++ b/app/src/main/res/layout/fragment_search.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/main_layout.xml b/app/src/main/res/layout/main_layout.xml new file mode 100644 index 0000000..9c72dad --- /dev/null +++ b/app/src/main/res/layout/main_layout.xml @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_home.png b/app/src/main/res/mipmap-hdpi/ic_home.png new file mode 100644 index 0000000000000000000000000000000000000000..d0bd9b197a39be5ffa98cd0e2657b8bfb6b1396e GIT binary patch literal 509 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 JPDHLkV1g@XpTGbB literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..dffca3601eba7bf5f409bdd520820e2eb5122c75 GIT binary patch literal 4905 zcmV+^6V~jBP)sCJ+Khgs=qzz9*aFfTF@MBLc!81jy1$_D*`qMnYCeSOOSS zh~l6kD7e75FgOnvP=_arGNJ+k0uBt2?%a3It*Y+o?&`L?*#fV=?@xECZq+^KuXD~l z_tdQ>JOSF%q}x5h@>Id>gloHZ!fr_@%N)Qad* zI}<}@Poh`#X29>b50CkB%{yWf?z(t0rQf48W{j1a($$IrZ9{N{@#9Wqx}%DM^fL-m z`X#_s9{BwX>^};}KMtudHpmMyRCq34!+|XCtnqeli6}6}7JiE;H+GAtDViHuQ~X9` zP0^{y>Ov~ufreT-w7!yx_c;QOV>|0UxJK{lqSx`7cx`b!OLV*;Ez4q9Y_XdB$PKk4 z+Aq(kmz%WbOV3IpYsa0#_Vd?)>*2Lc zn) zvVw}USbx|rlL2LMl<$^rb@TnK-;J83fd3GKh6#=C5WlXv83lKz{0$(8x1g-%;q}$b z1=&8M<_eQZO4eJk#nshu9TsZZ11Z~hVkpt8oA4831ZP3Fj3C~EG*%gSnciYD-cpkI zj{J=o1Bg-kJrjfz${Js8D?vh>vJwR{=4)c@ZtTqt#tHRR<9b9ew~kVG6oc8(lNE=Pu>)F6HIf=`kIH3oJBkSO2;+SnG--LDU5kx zC0($63w`LN)znoR#GhW@M5n&8!EGBnj_usF!G5qm>{qhQ`sdB#K+CoQF7f-se z?#7!W#vF7jw48A-)Ulxz@0b)?7iKWQI+fE6Ud#Le4H#? z*wIeM>mtaY-X;WO^yfR4Adp*W)N+A4Yv~TqOy)a5g8AjAEfJ4acRWELKhbNNKrc!( z&!ze1YQkhsw=A3()t7B^pu2=1)CJq>k}s1bv-{fV>=i+J^=8Lh=Pn_L(@77X+QqLi zSM!u0YfVL$I)-o^+D$g^8iKevTQlfM$k z8A}@MLX0cd>SIdp0%mtcJaTy&g94$WW9QB?a!}a+T)Rd$eDM!(fgHCnNCsx!svv{S z@9-MjC~sfoKOK+dN>{)_sV(mjhof{qxwvX-7Df1DQTI(g)o z>s6XRhgIhE&g6I!q!Sxz>EW}#SnudH5WeBSekYPp`9~Vp)1-G^r@B46=-SWs(Z;X8 z02evPKG%G)Nf*Dpl|HNSeWdw0`U#|(mpohWGktDRF;Bo`A2K9T}=|{(p(X*E>(aYDag2maC6ay^+ zk7K(%-yfyPJKv6-`qy{#2oNV$%o|*T^A7!TivIn?ahqEKj{ka& z1#*R?@}3aHxtTmO=~U-w(|Xu(B2EmI8B50EvnOk9*GGbcJZK_}E{D#X@`(&j@%hg` zvgc+#V--FuV!3MbUy#-AgE($~;1gULUsw`94gkTgN-nwH+_TiyxD=9t>#{5GHSR=+VC|3HUj>p$m zF=5TOh#WCVpZxG0Mfs)VLU~bclwVS}a)Tud>)$I3M@i?-ZEb;CNQ$OT?W!i>WPgI2K-%bDAV3iV{YFpxIA_D~#F;z7mA_2ToA0 zz;J#$$gz?H{f~tykIYwsN^&ofDHEcc3HtMs_ksmo_H~%=S!trXzdzzq@XJ@P(yd>A zNh?17fF3z>nk9kWDu3|gPt>$~7yTPdOfi9U)o%B9hiOkpO1&hgnGv)+?=lcH(3zlF z)1$73Anp4*+{T@4Fog)rOQR%n2^~~bNRNp!ZBKCK-@noL+ER9Y8^~8Se*UT3c%b7TLtsqf14?X2rJH|pTWGz8-n&h;14Ov z#z`fWWiO*ed){^1em`8ly%A*0PxH#fdX?ndqyYz250dgaflgvo+ zJV{-K7`Kl9diHm3hJcly zengd6QU#LyA&GQLke(wb%#d-6v?HDD3F1f!>{yWg5#|xN?9J0WD7v z;l~T-X%q||!6msgyeyyoVe>kdc~D4&(TwHYfu@{&z(qUzHQHR6u}wE)#*5x&(o-7O zw@7jXJiKu=?N?bq2i6qRnT;Fhz}ixmnKagt?l)w-)BzP^3@k~*Wp97@gTqNpbZPR zy$S@S*a*rO5riY0Ud8DORwP?Adna(v!QOi8<4{14v_(t!#gLwrT(JX4+=L_$A%|pc zXmt?{(xut$cSLlVo(30Y+4jMCjtGY2uwS_m`dG?inGHD{f(#luthNkXB!$a+a>Yn- zK~O4(yi`tCXd{2}Q7v*n=1Z+W<4npgXvmO$@_f~4uO9n2kmNBzD-1S*B*<|l$eA1@ z#7YnNRI?n@&u)dVc}PLoFRSt;=(FF*KZU}pY9KTJIT}LH;AkK9+f+gq?~2G z5#)j#B*jLMG&xp+>KqBOk%JavBS>X$J^3kS)@II(S5WsDjsv%=Is#fvo%C=}VJ79C zu4XlR`eZez2+jdtZkwl~W8jW?O+mCNa{m8IZH0?IgmNQbXlLF4NHs~k~IN5KqX9?a!NuC1W) zYsz_4m;p2B(rNZ|bq7KTK$6gs(A^{fuF@Y|C$u<+ zeYYY3Gn!;AyU4%y;QbOj@OvR}OAX~1e60jYkYi7fGch)Tw9J(lK@#LJf(#;pbZHir zB&II7NTQ;~GF=lByQEr3##lyCO%LAbWBIf<~=H3(^R#^&aTfo7d6DH>o+Z>qt5T4kD_BN0|i~wM{;) zQDk{ivKxY=^BgNdF34d7nZyJ+lfx0Dp`+JSH331CES`Ogv=4}5y2Zs^=PLgRUr*8)xq~v8}M$U zLOie%h{Y~;4ui@DJqJtzG0(xF97ij3CmS@3983s@mls%CJveFs=+cwd>4yDCfvm&e z!5#1cb>BZeo;3I6^_Foju7YH-rfKy08n55>!E;8!9e--mI{HXM9UTG5-bio}4&^qi zE~isoTuo;*ZeZWBo`Vxk8!8zvL!O6k1VIoUEds_IbStzRBxm^3Gm}w=_OY=YZzMUw zCMRKGc;U#1X^+ec$Xs%Pdmk&k3F4CX?~8#O4uI@BY`Kmq!J0Uv+5@a9tSpblLOV))hr-m%u%E*xX4>hBnb`e#B{kyo18?4;4dFUw7M^53Rybu z824~aV-c4}JY7hR>xV*sAg3fy6mLS7LnaNbD2_RfLpjc^aO!{=GM5BGo|C6yB@D9o z>0^ok{idSKZKI>_xtZixNop4pgLk193Gf?Ao}Iaq1y@!>f+5tPYW8ZSJw77VrMS#< zkU%RzE|Nf;cya`#HnR*FQxeQ`<~;c>Y2!DH$r^KWEyp=Wij2g!i9-MbcG4!}i^_bU5@kB8)I8_7rlg4C4#@0J#r1#qtCFoLQJrO9E% zt`s&x4TB&q*Dj{y&(q&hhKJ${y!SHMP)2fle^N(DLRef11H>ps$3G)mFl*0{%0f#} zK?dh~_$b?`;>l7qyL_2N&lj^qc}_^Fh@jk*X2^mq@ZAj7%2fh^%)qQAA zZ3@z-Q#;=6kf<1C_wHkrQ^se@o}KxQJaxedR`bDn4a5ufwojD_f5pWfSc3vWaa8IF z!+Z?HAa-6lxNq{aCuDPGysez_-`RL=-eMvHI(P2D`bHVO)$w1e0^WP&R`mBpOFQKR>_w07I2s zIwmM1dOoD+-D@HOzvDhQc0abkw){E0*){N5culz;QXzonTE$do1**D7nhF3khifSm z0;AP*(r7?iDWpAM8tW(Hv#<`x!Ou*&3HR4B9!<;eM0-$?ex#LVWC0aD&M0!T zQVSg4v+>kNA>}9QfPp*7Eao|=k~k@BAem&4;IDw0=82w=#)H%YK>MEG5I#l@kMe;^ zr91$UK8SCv&4fJ2j9mPwA{8QXWeW{QJ#e*bYJ`)e!>;|}F9#r9YxD>p0Tg`_Py#4L z6`SiOovr#7y*Y?9Wan<%bxm-xbo)Ici6&^|{^USeszmr={vT9IG=^w`>7^DNo@Opc6WXezK?s(J<9&f+P9=pl zemR)dcM>@oKkc3F$;gdhTONqlspA1cJ2J+x2C*scaOGJGnM#mBr2Cb7I~dLviLo5x zp^qWh6vsO_Rsv8V7)6|$qOAz1t^*r&OXPY{aR|P_`GhBlMsSGVOI$x720RP`Z_s8Q z-Ys(7H3xE@65He-BuuMeLOe6X-#8k>%Y;+x3T^Ij{v%AYx~)w@yGIgPhF+%|;+r^H z;{01o{BsrA7kHoF(5MkW3AJd?k(|Q>IlDf+l__0F+PfCc_h2_}ER6HD@cV{>LZ)}a zH8`c1$XJyo(2}B{L4C<}kA|^OWR!oA0q8rk5vCNA*nn!vy3@N#HcybTW1~GbhMB>Y&yacyAS^@N69RLFQpTZW)ch3mRVr z&m`bQe+wp^w;WXe=0Xe<(WOK0T9Ncw6V8`mj5|VD5!tA=a8KLBb4{6hYB&x*c1ZiT z5)Es^iwD`*yV9!I7r#R(d- zu}2}u`yRkKO{rVgNRnL?y%s8yU(viy$1}l(1UNQH$;IO6)>ndf%S5L4(a{#*w z&l!a-Gu2Luvd|wLCFNs}n3`2^bZyoXIJ+L~4od6W$Wh&cyH5+Xz~R6qjHF}zw7SCtF_>TWDRf=0~&#)Ty59SP~nvEj1QpN$1b z@ODR%;<;?EPZ>d9pwWH-8Yye<(>FkiG$U=1ZQBKD-!-)dj~b>Cm#9KSVaSsKJ`0tO zCuwfpVhK2jhK`N-t^q*rDh&_f0!2*$?+liPsty4v8vyidoN5>d*fR~*gl%|DOAXRp zWKc>q&RtXh6IL>GXo=)GXDCD4N3vS7S?LtoIdkZJD~2-U6*iITl{?Vz2Q8TWU{E)- zl;Ki!d$DOrp=KdmAldPyyFy#AG}fxNu&dLkSgY+@3Ru@v^S@SR9k_Z`Lw%?_@-wT2 zweRVHiC25D?6;~qy|kw>@c=g&2V_v}>R9#{pjMtnEz_mvrCOB;{^o*XyAJ84Bo=%5jld2V(Ir_1?sV@?=X~*#elB zWU+9>*6k||EcvzYK8kQz39wb2N&)-#weSZ?F)Z5PwZ30u5VqbeW0J#1>|ZQ1wGRvA z;jZaRz_M6sE3(K6qGw2mOL2R|NP;{JufTE}yGrQS^|KNjQ zGW=i2!zcm(Sc8a0l2FSRoI{-=wDMEVi5|%3X$Zx8oCW7h@0{!JdcKzLbC#Sdedby} z)Ay}>%vq5+@@(u&`Gm8k=Eyrq*X0MCE&Y$YJLszXkh7!q$c>@v@)>7OddRKJRrxXJ zNczalvF-Ac7eQ$ww^P#3u#M1X(L@y z*MidKxA1B~Rpc+#SK(O_l)CVm{vPrU%jOy$zyJ(zIAFt>{m91W0j0sc5(6**126ys wFaQHEAfN&A2Y+su!r)%f;9eR50D#xr0h*~lu^ZYMp#T5?07*qoM6N<$f@+PPvj6}9 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..64ba76f75e9ce021aa3d95c213491f73bcacb597 GIT binary patch literal 2060 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 lV%Z2*hu);5h(FN06r!ZYSX&FpTZ+iLHu;0X z3QZ)bDKF(UA`LU#9p4|{lc&?&-969Fy?f&P>eD&<-ShmO-|sxc_&ogBd@<0>#0kT_p_6nWfXWBei2_`sn{lEZ_uIL7V9rEe5m!myEEtm~D zNBKP$YzKEZDk9IpB~SoDQQD+~1u`mZXLA*lh)pj8*kJvY2kOLSP>oh>xeU7T`5>6W z0Aq>RtN3}CU#zIuVjY+LBoQJHXS zKpB~(ER{NPPxFP9u>F3w4Z{uxsx$()&ZSY4xOEsR2b zg3_7Mpp>bKY=XsZCvznmHrm-IuJawve~`Q>!FgE`_zs#SNsPBqrLz5Bv?r1hfas5b z$w^8sH?iM}cpG%$j##MZ(!dkGiGn0&$36Ka$kN(D*GMtnLQOlR_zmnotZQI34Q%xT zaNqYR@RLhxP}j(G22iX07WDe<$U=h1(zaG6?$XfuWCX!JZRa1hxlb4vp`3xQ@v}-K zb;_AytXFSk4A05Qkgwn-=;QU!%04ksCbTBoz(KIvp|1jadA~}Iw5HZs<$V1KRNLRR z4jn`gned?GhSJ3>_uX&=>f>W=>(lUqUe_?Rf#mygRl$0lA>oRInNvB zThmMrAeE)X-}{Q9FQ=|rJ8?^55R2$+y?uDcbr>_xCS(3V5+i^NrpV1o1u)3ksz`aj zbb*t*=O3IP)I4)jBTZb~LwA{x>M$7qmgU;I$fNZh2n&hL4i zd(QKm=bW37F)E|-|BK@|xj-eb5r_j9fI;U!N$_5rZKQ4f{a|=Gum`y1+%5e;C-4pN zJ#fv{<`(-3M`WZ8F9S{}##{up0#(37O}|3m1)v$|Rr;S2&XF*@0N4QxQ}J<5hpYfx znZP38B)NvkU2w0AF9Ck0vTk5Ka0sXc#&asX1k3;y19d==1#bjcNKS`3O44ooJkD#8 ze}GScCg5ve09Xes0j}_W4{(}+TxF>v5BOM#p?T>v{-!ctd+0#&ZQTZbiz7NQKGqe*RmB-Z3e?7^?j#YzsHdnR_;l>EYawA z6zBrJ1Zsd+nPMeHw<|m!`ZazIS5KV`(7+#f{ipIQ25bh}fM+y%9snL+QQ$>`t}#r%>Xh8&Dn&$&`6&-<VNR*FOotQX z?ON!1k|TGGbH5r`%1pGH0sRMXminSL4(w**A;+Io2Z*!jeADvQp9UTT9s#z<$T1Gz zRO+ahi7=aKQtFhCd>FqsV5XZwJ^Pdx+LqW`h#=?Py5Dqw@9ALY#TrC^9QFoZn z&vN0JXy~8gs%X>Zz@XO@GL!)~JaqiVQ5vi1JAoxgE9<5Tt_Qsa`v-LfUGNHG!&K0% z*iQtAkDUew&gnYG)ii3MtlyyQD$v3hDGjl>snTZJ5ji&dSO)K3KBlgWZiNN!WJ49K zUC64`Qo=&nV%G*nCt}o0OWyZ2JlawspC@J#NST((KCyJ5$wwS~m4ZVOMz*PQjEyTT zmC019x7hrw^1+vCH`r=J5M|?bpV{MxVM`eG!PS_8r`)DZmLH;cklKb*WWyJlc%oMqeDL37{iSDdhUnX1r@UbtxY>7I?H-$>)tecq2Rw z=~fPNi!<(pczj}Nr}9jt%{m(Kn1L&cUuKRgsj_86zFu;jIORHSX=X84sCm;xY~%jO zchq;DPlFQ?mK`yV&#c#7pIJM3&s~_chDo*QbS9r~Hr0o2`G20zWWAVgtSU!kR7OVr Y1r|Xdcy`WpVE_OC07*qoM6N<$g0nDtcK`qY literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_home.png b/app/src/main/res/mipmap-xhdpi/ic_home.png new file mode 100644 index 0000000000000000000000000000000000000000..b018b302f47a1916652e925abaf04429e2364194 GIT binary patch literal 764 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..14ed0af35023e4f1901cf03487b6c524257b8483 GIT binary patch literal 6895 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_notif.png b/app/src/main/res/mipmap-xhdpi/ic_notif.png new file mode 100644 index 0000000000000000000000000000000000000000..aafe9b97fdd4dc5ff06ab503f32fd0f2ccf4b403 GIT binary patch literal 1744 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b0907cac3bfd8fbfdc46e1108247f0a1055387ec GIT binary patch literal 6387 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ae03154975f397f8ed1b84f2d4bf9783ecfa26 GIT binary patch literal 10413 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 XdJ+W}DiIkV00000NkvXXu0mjfKBlg6 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_notif.png b/app/src/main/res/mipmap-xxhdpi/ic_notif.png new file mode 100644 index 0000000000000000000000000000000000000000..d5e043dcb05d44e2502e3dc13319f4c5b53b437a GIT binary patch literal 2668 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..2c18de9e66108411737e910f5c1972476f03ddbf GIT binary patch literal 9128 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 I20H400LcNok^lez literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..beed3cdd2c32af5114a7dc70b9ef5b698eb8797e GIT binary patch literal 15132 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_notif.png b/app/src/main/res/mipmap-xxxhdpi/ic_notif.png new file mode 100644 index 0000000000000000000000000000000000000000..c4c7ffc7b7752472b74e0dc826de08d5612a066a GIT binary patch literal 3008 zcmaJ@c{J4BAO4zm?8#PS--)qHwv;_8W{f1;Buoe?5n1OYj3(WE;zP zvy91B3Sp2DgQ0%(JLmW3d(XM|o_o)|&+~kq=Z|~iVOCc;*aX=C0N}7NH-R6|T_>G| z>3D?C_%H(idz^)d;mzPr>$%}*5j%mnZENhXV7~)g%@Qrd8^}QxTy@yKIy(LOuG&N? z*9BONshgVVG-Ldk_`Ak3w$VzauFml0-{7-VACe5@KO)qwRYrMBX)g56D8|&k$*{bE ztsRj4sxwP_IS{g$qw#ooMnjDFmx^>PZ77Ep9;x9mvYexHtmWTYvSpO`UMgNKT0gd| zpd56Lbx8QV4GI9b000F1NUe+}i1N4UKtV8MCF?9*#DsT2b`*ube_p;x-Z4dr;il1| zzQXSsF8f-`f;Y19Iyp8Bhn$k^))sZffi{0Ty{*WT5HVqG_Ly~ z&}cs5kil3G(F!GBkEQ0@H0Gj>c^D3D$$Ut^fpTD#Z}GPwIod=xm8HNCn#foi<7r$0 zUL7t1#{DMyxKu!>jQDXS%N%U1v~DG(TA0m%t4sKIx*U;lL6#tNa5p4(3dH&O$`2KSC8$IjIN zp3>uz+=ktg?uQYik(T*=6K;H3!P))hM7(b>oB!|n3|sp(4>Fcd|2k1?-#M~3tQ|j~ z-`n8W{|VGY+S!TznKhJEQz1X@l~t((OG;?z_52MgaJvoZA)u`h?Ouxu7G#$XgJopr6QsM|7E+X>sUCF{xE23@i6V$Ic)fl@CIdhZO(Ly;Hk zBVPMpkNFwP`YP!ozlu*f=v7`sO3gWGK?fjYkX)7XV8z7=|0 zHPgnVy2aqGcwMu;jm)ya#}a)4L02(#Q-d_jCk4h`b4-&vhr%D&}#4vBCk}%x=5>p z$C${cLI+eZIjoE$g}i%OMA?Fx|5K+w-L);El5*DAdBs$3WE9MP&H9yiG;K@m#36$r5-m8;M7{3pT(Ao4RM< z^7OI;w?d1_J!XUNF?x)6-UEuhE3Pqr^@Ah; z9xVl^`b<&4T(LScmq9$ZR;#%K<}?le*wzMO*>vY4U0gB;cnj$rx%Fm1u0MhgT+nn! z$NU0MAFNZ2D1|y?b3vQei}bO9`pbZg#%w$TOMxdS*#1*B1`PuJSkcBYlDvwD0|(r5 zn_0j{nViz6r@08;Av3Gov#8SNnRp4HJvqA0Urz-%niSy`>T>%99>w(8B+a{U`QZYO znxca@TK@7&m+Ll-i;uLfegqMP>PJ{S*%`(CsO|~X(*3wNiFOOtwgHWfZ;67=8_hg8 zeQyMV!64jiRes{co40P#BD&{S|N55qDEY8uh;D9M_6Q;2rppnkaPP5aE!rwO{B`TE zp!_dd2jeMMN)%Dt@cOTB=FhM7d*gLb!*N>%|Kz|dKZ^OZeimf-Cd+v`y);{a;3vGV zkq!fHu~%~&Jn&zrB8b+a$LhZg6E5BI&%d-~=^GsWvOi)_eT}6+Rr0o*d{kJ%1XyFb z^t-K%hpY6rVkEhUU{#-eNL&+TgR5%zMH%zWgF`k(SKDqXScJA?<$50DpYHmXX3+N? ze0RxGfQhQpEr##icr8bSlm)LRsgiO1x_Ofmn?e4CZSxFBtz0RKAp1yDUvupG)gQs- zhnGJ>_(4-=hH}ybOqJHsgKv`~Php1TqO+L0d%iRI1~hHRmH5j?%{j4mEl36TFUD!g zKLhZJs1KOoX#BeV9Rx$bfYHk>v{u`OnnTXwHAPO#C+yR&o-MA}NOgAS;YxU-RvhtV zH%3%Nx=NX?%`Ak#uv-kLQq)-r$`fmKqWKuaQ6F^|tj(Tq1Bt*wq7S>duPviFf( zT`uqC*xYeN>Ps3%RGg{mXzv&!zE4}ME!X#sQR8R5s$tPs`aq$Re_~!sfJv?H1*V5D z+6WiEjC~DCZhv4V;4OiZUT*W37Uop1-;OFziALN_edWQRm=QCcC5F4sXC%j1! zRvT$a<|TBo>cQ%-swUwAzQ`);GzI6q$ zV>Nv5t;oI-Z0+$=`j-cfnSojN{SFEHoyrlpungAE*MJa(ZT|G!=jM|Tyw6s9#ysdh znXI4TU@_ZWV~q6-v+IjfWr&j++8j4K#2-I(*qLi9r7RONZg()kRd~CQ8lF{(o?e>I zLv79ccMK=k!;W2tgG0^)-6VHPy;LL>$CVN7PMjRA^1Yx1Q)q+6R&rQJa421_c_;nu3umAMh2SXBupd#0DxRu3vTkyJN`EiqJL_#;7SYt(EDh^ zRm=kB_H8LME!1i6W^CWk)e(}CXCP4Yf<76NP&HG61wuaYVbwnzbi!N4AXvHRz4G6n zyHdh9B#%DHu+Z#vf5IDBR&$Op2A&X!fz$yLi_nvZ*m-vIkWrL1f_!*&ou#b^zHUyrZ6PV?j@I#1#hVG0P&b z%3zL?I_W|;CA~N43f&^>kK%_OgCwwO2r17%jILrfldw7Uf29dS+lb2kV0Th1q^hWL z@Q2s1^tAzl%w@20-w{)GDdHjAZZ9G9S~MGoaO>ar|(Ux^iswPNOF2RivWg{|>i4jvfjC-aml-IR{dKgvr1104 zYp%OsS^0u^Bal})cutkpNO}0vwZKrq!_+{xww~Zrn%sAlcE3FMn66hMfEMu%C+6{T45j@xBi478(e%qr z3pJ9AUn_B(Vn&Od?}uo^oCO?H&Be}RjvqvL4 zy?4>@{e8bNZ|Kh6`~D7&Bz-;?QHAyJh4qYWe*}MY^s-ZSr@VN-V(LZ>cF3H;>`LbL z%1wCr&#}5n3TzH~R}jBU5EwNygm~yJyTp-iSwzvg;>o3gBQPF8#m1_j|3iyy5ywhw zG9s3;u8ESqm5tzSj@<8n-G7fWyWMS$4#jEbp!*GPhj_@wLxDRJx`TvU?{fsDu|S3u z&$i_>@|pLCSHRTCQUcy8l0Hh(gLRfLg0NGEvD_|&rCk@(g?I*}E3QG9L76VEV4{`j zR}>;FG53f2faKyz!HECGO)v;Zv0`7XihsqE$L##o1V8^h5N_=*;iy1zB(#Ylmr53# zZ7!0x^Wcw58nF>$W&FTf@VZ5xqq+8F%2|k3T6EWWfh7lkYWr2@IZK;&s@=LNUkj(X zXjb}8k@PJBU-fF0I8;H%$9<_kAMW+2wf6 z5wTd!E~w!5!fcXrbt=Vtg@@-ug|iodTl9Tx?oX1J4c$`7kY)vcycjL?af#F8 zRnN+2=&is_zvzQ_Ro4BOvK4_T)|Xzfs*i3t02(18+^vCoqcj7)WixG*F0}N_a(?XR z<&%r>$op9`mg~`OBJ4NDTmYh990$0^5H1%vDW2j@lD=}8{^jPPc}rT!1mTHB7qQ#d zY~I>MeHbbTU^k+94A*X?xbv7xu@mIrNhoiqT|G7G_2F1I9_prJNw_9_jm;U`#9qS zd3bL{&gQC3=;GG1LDT*r5qmh_wV!xUGfDK}-4hj_)Q7+DJTH_^?I;@6=8X;LFF{d? zZ1+3lj~kT!Ftf6rG@!4}wD;CElD6FLT`tcPM{vki=kB}n%zi+-nHI)ti{Gj+ft#0l z%{DIZnDd13uIqC{U>#|ay;Blf{`9N;#vE(shYCU^Sf9b8`K1P@A3BT%-V9EC!qo${ zY*CI;>2UNfCWR3Zs=1R*1&D_eL!-J_^3bT)H^Ma@Bi1T&ylXrz*GpKWs9&$=9eSO> zDCAQxEU7(3)*T!VJ9h|9vHyMhY!uv)^s5X82aNx?8$gL>7s!9}q||83)|7F|(31}P zksPRBd~vN9_|3U(jq4}n(*&0gF&|>o?muIxfpfo>`RSyLaSTz9DTw}GRzIc z$lAVi-#rx>xzPL^?Yu)niL_|Urj`BEgI)Tgt1o%m2^@v$tJ?l9f18D?PqMyBZ%-f{ zemTaY6y*|Rf8TvtIm!Jq@|Kj67+77{`GN8Aa26`olqG3aYt`k91d-YC`K7vWEQ zeA7JVBd(w+zoPHa;^fd^RZKkSFkCWh?Zm3fEq)t=%?e_#EtMr5AG`7#S)pC&jxpO~ z_nIB}JH;{`%XHItCb0ZvmZ5TD?~B|x&ANz@(UJlA5&$q$fv?tos*?Ico~??oZTAyc zF^~WHN~6UuA2%C_k9ppG+L51=?2zjO4&a<7(A5M@F-TZ0V^mnMMEkT0`Q4b_m!v;e zOCy+_UQx0nzg|nV=LbMC9U?N9Ygv8#`0ouqdhsYly10E=pb{48U&#v;j8(E!$Gl`=Q_j(y(#|wit6w6$sm8fcXW+;1h^Sb2@$kBhA+UkNwOt?FB z29|Tbg^=Pj$R&p@+ZX9*mr_c2`*`Z_A&ak}P%UGiN&DaNS0P`APHVQutT$EUl`c}V z1V1m=w%U$59E%Ud?39m1#}HSc$)*ckeZ_9!c@GCZuK}NWB(C|kcgeBAK|!pm%INP5 z^wb5HMxLq`v@OQcs58d{bLw>TcR`irERSJ7%(%bPFS5(hYMHjV2*9)6Q6AC)+n;}f zNk|WsmhCM#^5cFYcIzmo(f(m8rahcgdyGHCVr0rMG5)!e+#lm3jsG$v{tN7edgwhY zL|Swe*{nW=te`0Gb}??I#!e(`g(pYB{SF5P0zs~Q^Q}@^kb#CG7$B7MDfbnT|*SnW%hip-6RpUaAz z9`!lu zW>?gpQrB)u|#hdM_oL_8^$} z!|S+M7lplz=SYj7o1pBgx}G(1dsfQ$AJNP#VLUK^fw6UE{86}Y1`GoS$gc!g@mBj9 zN<}2g9zKea)9*gP5@q!j_IOrIveSb)8kR;W_D7 z*|`s<+390pi#2Cb4c7+T%Fp(YMlu-pOcZSPL9pqAJixNPRkfGh6bWX^xjw12Gy%+z z*tQ(R#r~?7pV-^P5kHHxu<3%}SP~zpGnEOuVc%<^HCQq&L;P6IXw?GSy;Aq- zp<_9)^;p(t(hp=%r4l+QiVQuq3Pf15f@TSRNJ(CiCzY>5z=acVxL#&mO&IFiGs8=} z;|ExLIN<)cOU@!;DZ)MTS>PUScUFP6AQW93hLm@3h$LrUsx*Cj+doDWv0H5R*+##h znI`P;F9X;?Z^H@Pc{0i@Gt*prSSG=F_o< zkc`hoKNWylX}54}JR)KGFv|oaQJM+(Zp`cdO_xB5*dsLSh9HYXxczV))GQGV#^#!U zlB99~TjZCis+uAmjYQzzJ+=nV^f-YWskbz5_P$g!8qr64EmE{TPud~}FiU#n+uxEq z{XI@Jt!d-SC-Svptrea`(;D;oMe7o55PIBzlBkAoqzF+pSyh?loz%S_gATf;FRqQS z{!dBDlwVUJ9kAezU}Zg||GPmMZW{q^ETGu5i6{;Oc#SE3o5g!>@(zqHsyi9~`$Pq- zrLdHc3vdR9h-g`EMe&ig({uG!tvMUTAbb;1Hcx&N@I3_R(g0Z?KuNp^Olkf=AZuJ0T+wEVWIkysEl8uDHd==JR@ z7bQrrR;YwimeOlmlM#-tjR*V-uk+SRIkV-z7%@a#61iusdtHB^HlI};yiE1Z)vvYt-uz;DRw|>vWYNh^LNc>7P z69wp(|4#fqd}iGvQzJBX>U5bJIH3;^jpX&$xG}4}joJ+$rRFFFQ)!7JsIa>tZ~jPL zs5iR-rIYeobii7CK*S{|x{)GAl)|Wt$RI8@gCUs2gi0J*ceO?8D!CAUOhL_|0`9o| zrXiygWq+`X`n>+};E^DmcH(a74IJQ{^Z?XQ#QC!xtsMC!QlaZ}iAuAw(O1#_!*<83 zo7->H$nQfpn~YlM@>cFXMQ-lPD8;qx7xs6binnkHB~I~xFP$~~22@ymG~ydnN+g%?K}Oh5rs{Z0jKWMTo1TmtU^XOg;n1qeH@JcIouWd; z(l<&tX7myK8d_1PvLTE6*b}cs`GaA1B2BGH7!%m6!K4S!n!6&;PHf10UT#yqRnM<+ z0}q0y@1^ZQb6`k-Zl9-0)%KPS%HnMI9o7f7%^66gy~y?wE}SP5!)NvBYgl&Q`_$*D z+Px{4a=bPfDmivCK(}93^&TAqb#bR(MN?8zvLz~X)>R^3MSdce48wMjk6i=B#q9Hw z5{ol#xRaYyPE;c8pWI0e;|sfbB?!2>7d`XSTQ1s#xE9tXcxB2elusfe#RvT+rg&&l z$0n(_OCF>{s?{{8Y1ViCdr{39d&h)+!F~^Pr2{fRLp=hWJ zQgDk7^Yp93G*0JP(>Dh5=Mjc3;H!Rqq>{1?lT~e%=$E?Do{@k^4X})10nB7#w?%OU zx3xZ7-&~o#^`v!1@p`hxoKV7mA=|hN>fO=;;m`gO~ID{ zo86B#o2XcuX(uwmT7!5_Q2BO+A(-2$+@U{KhlzYC;wK#NOlC+l6bSW;E>A6NB2v!b zCa>ZI1rRMXS4GH??h1{SymF0~cEy$)z0?aK?a@LfBa~2EYWD>}WRs1P)v{0gsJb8g zdx(?E=CSHepdD(=WNvXIi2{83HY$kx-ASdlM$OL&^68LhG34>XizfeMjG~4CU+8TG zFlH2JOGZI(z}pv1Up3+AcII^*=i?pHv=>I&-~e{hM^HFKrRPb8+;aQ?>4&aP8bUar zPOuQnzy(bSS|lAGkRVJl+L~eD0tCxu7~$F$Y0zQshX;|Sv>XDjzm9+nHGhE7+bf>X zhn+bJr?pdmer9{SWcXBb{sjXNSR^RKtdl5j%&A7e>X%T(jTx^asN-vC845$$%(n>V84tV5lgs*t9A6<8JaG1h*7QVaPt?Eo!C0Ey%vyo6`q#6@oZy4AOnVL zQ%d9$coB2`drpWRxGi@vwUrFta*AGUmNtYf5AfQBuoP~9y7K0vXRU= z#=M6VH*i;EU;R=!2G=(6AuyomEcI)?dit4=!G%o4&kLYs`d@#uC9_5C_sRgA_g&)9 zh2wQ4R)?-2IA}HcUwJLGps?2LKPJ$NPo7^a<%4n==B}LYei;*%sXZ&FNuH(EYt2(& z42N(Ba8wAIJbdiPyi?4Uk?zT_v6ykxuNUdc?~4NO?_}Uv^kYg=_BIZ{Z}vya465;w?~+SKD2GX|-Rt zw}ZD@V7}!EYFLo54jnTabR%dX59EE!D7X^YGJK<)X3>3$h?JAx8pk`QXK9El-+Oz0 zPm9CITiYo5xft)+%h=$3^}B#VyP*9(R8#ExH!{oY+HV;5k>A zJ&l@U9TKhktAcresJJ$;@i_Eo)vug@KaOtDw2L2=c9NQ~)%^WIntG77!eppAWr&4a zEuyoDw?k>TQ|Y3YZOTQ~8Y>(1IC6k;+od3x0_{PyU@J3S1tn7#ICu~ZDg zN)cLp7k-JCbopqLBgNGr+vkDxzeh@(M%ctyO1%y^8B_C#(PR|3ZlkVhOpcCyIHk{N zt#cf26!(z~X?0~41Ppx^*Tm6n$j2CDKVGpx!x$!h*2rTG;M4{G*pDbyqz5-V|2?wh ztn%gs_UZv-fI}@_IfgDOxh*>B9aT>*knFiacGmE6pr!GuY~EyQ_mt + + #008577 + #00574B + #D81B60 + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..9f0dbc1 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,4 @@ + + + 200 + diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..beab31f --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #000000 + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..2d45f26 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,1999 @@ + + Exchange Map + Map + + + Hello blank fragment + + + Jalalabad - JAA - Afghanistan + Kabul - Khwaja Rawash Airport - KBL - Afghanistan + Uruzgan - URZ - Afghanistan + Tirana - Rinas - TIA - Albania + Algiers, Houari Boumediene Airport - ALG - Algeria + Annaba - AAE - Algeria + Constantine - CZL - Algeria + Jijel - GJL - Algeria + Oran (Ouahran) - ORN - Algeria + Pago Pago - PPG - American Samoa + Andorra La Vella - Heliport - ALV + Benguela - BUG - Angola + Cabinda - CAB - Angola + Jamba - JMB - Angola + Luanda - 4 de Fevereiro - LAD - Angola + Uige - UGO - Angola + Anguilla - AXA + Antigua, V.C. Bird International - ANU + Buenos Aires - BUE - Argentina + Buenos Aires, Ezeiza International Airport - EZE - Argentina + Buenos Aires, Jorge Newbery - AEP - Argentina + Cordoba - COR - Argentina + Iguazu, Cataratas - IGR - Argentina + Jose De San Martin - JSM - Argentina + Jujuy - El Cadillal Airport - JUJ - Argentina + Junin - JNI - Argentina + Mar del Plata - MDQ - Argentina + Mendoza - MDZ - Argentina + Rosario - ROS - Argentina + Salta, Gen Belgrano - SLA - Argentina + San Carlos de Bariloche - BRC - Argentina + Santa Rosa - RSA - Argentina + Ushuaia - Islas Malvinas Airport - USH - Argentina + Eriwan (Yerevan, Jerevan) - EVN - Armenia + Aruba - Reina Beatrix International, Oranjestad - AUA + Oranjestad - Reina Beatrix International - AUA - Aruba + Adelaide - ADL - Australia + Albany - ALH - Australia + Albury - ABX - Australia + Alice Springs - ASP - Australia + Ayers Rock - Connellan - AYQ - Australia + Ayr - AYR - Australia + Ballina - BNK - Australia + Bamaga - ABM - Australia + Blackwater - BLT - Australia + Bowen - ZBO - Australia + Brampton Island - BMP - Australia + Brisbane - BNE - Australia + Broken Hill - BHQ - Australia + Broome - BME - Australia + Bundaberg - BDB - Australia + Burnie (Wynyard) - BWT - Australia + Cairns - CNS - Australia + Canberra - Canberra Airport - CBR - Australia + Carnarvon - CVQ - Australia + Casino - CSI - Australia + Ceduna - CED - Australia + Cessnock - CES - Australia + Charters Towers - CXT - Australia + Clermont - CMQ - Australia + Coffs Harbour - CFS - Australia + Collinsville - KCE - Australia + Coober Pedy - CPD - Australia + Cooktown - CTN - Australia + Cooma - OOM - Australia + Dalby - DBY - Australia + Darwin - DRW - Australia + Daydream Island - DDI - Australia + Derby - DRB - Australia + Devonport - DPO - Australia + Dubbo - DBO - Australia + Dunk Island - DKI - Australia + Dysart - DYA - Australia + Emerald - EDR - Australia + Emerald - EMD - Australia + Esperance - EPR - Australia + Geelong - GEX - Australia + Geraldton - GET - Australia + Gladstone - GLT - Australia + Gold Coast - OOL - Australia + Goondiwindi - GOO - Australia + Gove (Nhulunbuy) - GOV - Australia + Great Keppel Island - GKL - Australia + Griffith - GFF - Australia + Groote Eylandt - Alyangula - GTE - Australia + Gympie - GYP - Australia + Hamilton - HLT - Australia + Hamilton Island - HTI - Australia + Hayman Island - HIS - Australia + Hervey Bay - HVB - Australia + Hinchinbrook Island - HNK - Australia + Hobart - HBA - Australia + Home Hill - HMH - Australia + Ingham - IGH - Australia + Innisfail - IFL - Australia + Jandakot - JAD - Australia + Julia Creek - JCK - Australia + Jundah - JUN - Australia + Kalgoorlie - KGI - Australia + Karratha - KTA - Australia + Karumba - KRB - Australia + Katherine - KTR - Australia + Kingscote - KGC - Australia + Kowanyama - KWM - Australia + Kununurra - KNX - Australia + Launceston - LST - Australia + Laverton - LVO - Australia + Learmouth (Exmouth) - LEA - Australia + Leinster - LER - Australia + Leonora - LNO - Australia + Lindeman Island - LDC - Australia + Lismore - LSY - Australia + Lizard Island - LZR - Australia + Lockhart River - IRG - Australia + Longreach - LRE - Australia + Mackay - MKY - Australia + Maitland - MTL - Australia + Maryborough - MBH - Australia + Meekatharra - MKR - Australia + Melbourne - Tullamarine - MEL - Australia + Merimbula - MIM - Australia + Middlemount - MMM - Australia + Mildura - MQL - Australia + Moranbah - MOV - Australia + Moree - MRZ - Australia + Moruya - MYA - Australia + Mount Gambier - MGB - Australia + Mount Magnet - MMG - Australia + Mt. Isa - ISA - Australia + Narrabri - NAA - Australia + Narrandera - NRA - Australia + Newcastle - Belmont - BEO - Australia + Newcastle - Williamtown - NTL - Australia + Newman - ZNE - Australia + Noosa - NSA - Australia + Norfolk Island - NLK - Australia + Olympic Dam - OLP - Australia + Orange - OAG - Australia + Orpheus Island - ORS - Australia + Paraburdoo - PBO - Australia + Perth International - PER - Australia + Port Augusta - PUG - Australia + Port Hedland - PHE - Australia + Portland - PTJ - Australia + Port Lincoln - PLO - Australia + Port Macquarie - PQQ - Australia + Prosperpine - PPP - Australia + Queenstown - UEE - Australia + Rockhampton - ROK - Australia + Scone - NSO - Australia + Shute Harbour - JHQ - Australia + Singleton - SIX - Australia + South Molle Island - SOI - Australia + Streaky Bay - KBY - Australia + Sunshine Coast - MCY - Australia + Sydney - SYD - Australia + Tamworth - TMW - Australia + Taree - TRO - Australia + Temora - TEM - Australia + Tennant Creek - TCA - Australia + Thursday Island - TIS - Australia + Tom Price - TPR - Australia + Toowoomba - TWB - Australia + Townsville - TSV - Australia + Wagga - WGA - Australia + Warrnambool - WMB - Australia + Weipa - WEI - Australia + Whitsunday Resort - HAP - Australia + Whyalla - WYA - Australia + Wickham - WHM - Australia + Wiluna - WUN - Australia + Wollongong - WOL - Australia + Woomera - UMR - Australia + Wyndham - WYN - Australia + Graz - GRZ - Austria + Innsbruck - Kranebitten - INN - Austria + Klagenfurt - KLU - Austria + Linz - Hoersching - LNZ - Austria + Salzburg - W.A. Mozart - SZG - Austria + Wien (Vienna) - Vienna International - VIE - Austria + Baku - Heydar Aliyev International Airport - BAK - Azerbaijan + Nakhichevan - NAJ - Azerbaijan + Chub Cay - CCZ - Bahamas + Freeport - Grand Bahama International Airport - FPO - Bahamas + Govenors Harbour - GHB - Bahamas + Grand Bahama International - FPO - Bahamas + Marsh Harbour - MHH - Bahamas + Nassau - NAS - Bahamas + North Eleuthera - ELH - Bahamas + Rock Sound - RSD - Bahamas + San Salvador - ZSA - Bahamas + Treasure Cay - TCB - Bahamas + Bahrain - Bahrain International Airport - BAH + Barisal - BZL - Bangladesh + Chittagong - CGP - Bangladesh + Dhaka - Zia International Airport - DAC - Bangladesh + Jessore - Jessore Airport - JSR - Bangladesh + Sylhet - ZYL - Bangladesh + Bridgetown - Grantley Adams International - BGI - Barbados + Minsk, International - MSQ - Belarus + Antwerp - ANR - Belgium + Brussels - Brussels Airport - BRU - Belgium + Ghent (Gent) - GNE - Belgium + Liege - LGG - Belgium + Belize City - Philip S.W.Goldson International - BZE + Cotonou - Cotonou Cadjehoun Airport - COO - Benin + Bermuda - L.F. Wade International Airport - BDA + Paro - PBH - Bhutan + Cochabamba - CBB - Bolivia + La Paz - El Alto - LPB - Bolivia + Santa Cruz de la Sierra - SRZ - Bolivia + Santa Rosa - SRB - Bolivia + Mostar - OMO - Bosnia and Herzegovina + Sarajevo - SJJ - Bosnia and Herzegovina + Francistown - FRW - Botswana + Gaborone - Sir Seretse Khama International Airport - GBE - Botswana + Jwaneng - JWA - Botswana + Maun - MUB - Botswana + Selibi Phikwe - PKW - Botswana + Aracaju - AJU - Brazil + Belem - Val de Cans International Airport - BEL - Brazil + Belo Horizonte - Tancredo Neves International Airport - CNF - Brazil + Boa Vista - BVB - Brazil + Brasilia - President Juscelino Kubitschek International - BSB - Brazil + Campo Grande - CGR - Brazil + Cuiaba - Marechal Rondon International Airport - CGB - Brazil + Curitiba - Afonso Pena International Airport - CWB - Brazil + Florianopolis - FLN - Brazil + Fortaleza - Pinto Martins Airport - FOR - Brazil + Goiania, Santa Genoveva Airport - GYN - Brazil + Sao Paulo - Guarulhos International - GRU - Brazil + Jacobina    - JCM - Brazil + Jales - JLS - Brazil + Januaria - JNA - Brazil + Jatai - JTI - Brazil + Joacaba - JCB - Brazil + Joao Pessoa - Castro Pinto Airport - JPA - Brazil + Joinville - Cubatao Airport - JOI - Brazil + Juiz De Fora - Francisco De Assis Airport - JDF - Brazil + Macapa - Alberto Alcolumbre International Airport - MCP - Brazil + Maceio - Zumbi dos Palmares International Airport - MCZ - Brazil + Manaus - Eduardo Gomes International Airport - MAO - Brazil + Montenegro - QGF - Brazil + Natal - Augusto Severo International Airport - NAT - Brazil + Palmas - PMW - Brazil + Porto Alegre - Salgado Filho International Airport - POA - Brazil + Porto Velho - PVH - Brazil + Recife - Guararapes-Gilberto Freyre International - REC - Brazil + Rio Branco - Plácido de Castro International Airport - RBR - Brazil + Rio de Janeiro - Galeao - GIG - Brazil + Rio de Janeiro - Santos Dumont - SDU - Brazil + Rio de Janeiro - RIO - Brazil + Salvador - Salvador International Airport - SSA - Brazil + Santa Rosa - SRA - Brazil + Sao Luis - Marechal Cunha Machado International - SLZ - Brazil + Sao Paulo - SAO - Brazil + Sao Paulo - Congonhas - CGH - Brazil + Sao Paulo - Guarulhos - GRU - Brazil + Sao Paulo - Viracopos - VCP - Brazil + Teresina - THE - Brazil + Uberaba - UBA - Brazil + Uberlandia - Eduardo Gomes Airport - UDI - Brazil + Urubupunga - Ernesto Pochler Airport - URB - Brazil + Uruguaiana - Ruben Berta Airport - URG - Brazil + Vitoria - Eurico de Aguiar Salles Airport - VIX - Brazil + Tortola - TOV - British Virgin Islands + Bandar Seri Begawan - Brunei International Airport - BWN + Bourgas/Burgas - BOJ - Bulgaria + Gorna - GOZ - Bulgaria + Jambol - JAM - Bulgaria + Ruse - ROU - Bulgaria + Silistra - SLS - Bulgaria + Sofia - Vrazhdebna - SOF - Bulgaria + Targovishte - TGV - Bulgaria + Varna - VAR - Bulgaria + Vidin - VID - Bulgaria + Bobo/Dioulasso - BOY - Burkina Faso + Ouagadougou - OUA - Burkina Faso + Bujumbura - Bujumbura International Airport - BJM - Burundi + Phnom Penh - Pochentong - PNH - Cambodia + Douala - DLA - Cameroon + Garoua - GOU - Cameroon + Maroua - MVR - Cameroon + N\'Gaoundere - NGE - Cameroon + Yaounde - YAO - Cameroon + Attawapiskat, NT - YAT - Canada + Bonaventure, PQ - YVB - Canada + Calgary - Calgary International Airport - YYC - Canada + Cambridge Bay - YCB - Canada + Churchill - YYQ - Canada + Deer Lake/Corner Brook - YDF - Canada + Edmonton - YEA - Canada + Edmonton, International - YEG - Canada + Edmonton, Municipal - YXD - Canada + Flin Flon - YFO - Canada + Fort Albert - YFA - Canada + Fort McMurray - YMM - Canada + Fort Smith - YSM - Canada + Fort St. John - YXJ - Canada + Fredericton - YFC - Canada + Gander - YQX - Canada + Gillam - YGX - Canada + Goose Bay - YYR - Canada + Halifax International - YHZ - Canada + Hall Beach - YUX - Canada + Hamilton - YHM - Canada + Harrington Harbour, PQ - YHR - Canada + Inuvik - YEV - Canada + Iqaluit (Frobisher Bay) - YFB - Canada + Kamloops, BC - YKA - Canada + Kaschechawan, PQ - ZKE - Canada + Kelowna, BC - YLW - Canada + Kuujjuaq (FortChimo) - YVP - Canada + Kuujjuarapik - YGW - Canada + Lac Brochet, MB - XLB - Canada + La Grande - YGL - Canada + Leaf Rapids - YLR - Canada + London - YXU - Canada + Moncton - YQM - Canada + Montreal - YMQ - Canada + Montreal - Dorval (Montréal-Trudeau) - YUL - Canada + Montreal - Mirabel - YMX - Canada + Nanisivik - YSR - Canada + Norman Wells - YVQ - Canada + Ottawa - Hull - YOW - Canada + Port Menier, PQ - YPN - Canada + Prince George - YXS - Canada + Prince Rupert/Digby Island - YPR - Canada + Pukatawagan - XPK - Canada + Quebec - Quebec International - YQB - Canada + Rainbow Lake, AB - YOP - Canada + Regina - YQR - Canada + Resolute Bay - YRB - Canada + Saint John - YSJ - Canada + Sandspit - YZP - Canada + Saskatoon - YXE - Canada + Shamattawa, MB - ZTM - Canada + Smithers - YYD - Canada + South Indian Lake, MB - XSI - Canada + St. Augustin, PQ - YIF - Canada + St. John\'s - YYT - Canada + St. Pierre, NF - FSP - Canada + Terrace - YXT - Canada + The Pas - YQD - Canada + Thompson - YTH - Canada + Thunder Bay - YQT - Canada + Toronto - Billy Bishop Toronto City Airport - YTZ - Canada + Toronto - Toronto Pearson International Airport - YYZ - Canada + Toronto - YTO - Canada + Umiujaq - YUD - Canada + Uranium City - YBE - Canada + Val d\'Or - YVO - Canada + Vancouver - Vancouver International - YVR - Canada + Victoria - YYJ - Canada + Wabush - YWK - Canada + Whale Cove, NT - YXN - Canada + Whitehorse - YXY - Canada + Windsor Ontario - YQG - Canada + Winnipeg International - YWG - Canada + Yellowknife - YZF - Canada + Praia - RAI - Cape Verde + Sal - SID - Cape Verde + Grand Cayman - Owen Roberts International - GCM - Cayman Islands + Bambari - BBY - Central African Republic + Bangassou - BGU - Central African Republic + Bangui - M\'Poko International Airport - BGF - Central African Republic + Berberati - BBT - Central African Republic + Biraro - IRO - Central African Republic + Bria - BIV - Central African Republic + Carnot - CRF - Central African Republic + Ouadda - ODA - Central African Republic + Abeche - AEH - Chad + Moundou - MQQ - Chad + N\'Djamena - NDJ - Chad + Alderney - ACI - United Kingdom + Guernsey - GCI - United Kingdom + Jersey - JER - United Kingdom + Calama - El Loa - CJC - Chile + Easter Island - IPC - Chile + Punta Arenas - Presidente Carlos Ibáñez del Campo - PUQ - Chile + Santiago de Chile - Arturo Merino Benitez - SCL + Valparaiso - VAP - Chile + Beijing - PEK - China + Beijing - Nanyuan Airport - NAY - China + Xiamen - XMN - China + Guangzhou (Canton) - Baiyun International Airport - CAN - China + Shenzhen - Baoan - SZX - China + Guilin - Liangjiang - KWL - China + Nanning - NNG - China + Harbin (Haerbin) - HRB - China + Wuhan - WUH - China + Yichang - YIH - China + Ji\'an - JGS - China + Changchun - CGQ - China + Dalian - Zhoushuizi International Airport - DLC - China + Shenyang - SHE - China + Macau - MFM - China + Altay - AAT - China + Chaoyang, Beijing - Chaoyang Airport - CHG - China + Jiamusi - Jiamusi Airport - JMU - China + Jiayuguan - Jiayuguan Airport - JGN - China + Jilin - JIL - China + Jingdezhen - JDZ - China + Jinghong - Gasa Airport - JHG - China + Jining - JNG - China + Jinjiang - JJN - China + Jinzhou - Jinzhou Airport - JNZ - China + Jiujiang - Jiujiang Lushan Airport - JIU - China + Ulanhot - HLH - China + Xi\'an - Xianyang - XIY - China + Jinan - TNA - China + Qingdao - TAO - China + Taiyuan - TYN - China + Chengdu - Shuangliu - CTU - China + Chongqing - Jiangbei International Airport - CKG - China + Shanghai - Hongqiao - SHA - China + Shanghai - Pu Dong - PVG - China + Tianjin - TSN - China + Urumqi - URC - China + Luxi - Mangshi - LUM - China + Hangchow (Hangzhou) - HGH - China + Barranquilla - BAQ - Colombia + Bogota - El Nuevo Dorado International Airport - BOG - Colombia + Bucaramanga - BGA - Colombia + Cali - CLO - Colombia + Cartagena - Rafael Núñez International Airport - CTG - Colombia + Medellin - MDE - Colombia + Pereira - PEI - Colombia + San Andres - ADZ - Colombia + Santa Rosalia - SSL - Colombia + Anjouan - Anjouan Airport - AJN - Comoros (Comores) + Moroni - Prince Said Ibrahim - HAH - Comoros (Comores) + Moroni - Iconi - YVA - Comoros (Comores) + Kinshasa - N\'Djili - FIH - Congo (DRC) + Kisangani - FKI - Congo (DRC) + Lisala - LIQ - Congo (DRC) + Lumbumbashi - FBM - Congo (DRC) + Brazzaville - Maya-Maya Airport - BZV - Congo (ROC) + Pointe Noire - PNR - Congo (ROC) + Rarotonga - RAR - Cook Islands + San Jose - SJO - Costa Rica + Upala - UPL - Costa Rica + Abidjan - ABJ - Cote d\'Ivoire + Bouake - BYK - Cote d\'Ivoire + Daloa - DJO - Cote d\'Ivoire + Korhogo - HGO - Cote d\'Ivoire + Man - MJC - Cote d\'Ivoire + San Pedro - SPY - Cote d\'Ivoire + Sassandra - ZSS - Cote d\'Ivoire + Yamoussoukro - ASK - Cote d\'Ivoire + Dubrovnik - DBV - Croatia (Hrvatska) + Losinj - Losinj Arpt - LSZ - Croatia (Hrvatska) + Osijek - OSI - Croatia (Hrvatska) + Pula - PUY - Croatia (Hrvatska) + Rijeka - RJK - Croatia (Hrvatska) + Split - SPU - Croatia (Hrvatska) + Zadar - ZAD - Croatia (Hrvatska) + Zagreb - Pleso - ZAG - Croatia (Hrvatska) + Cienfuegos - Jaime González Airport - CFG - Cuba + Havana - José Martí International - HAV - Cuba + Holguin - HOG - Cuba + Santiago - Antonio Maceo Airport - SCU - Cuba + Varadero - VRA - Cuba + Akrotiri - RAF - AKT - Cyprus + Larnaca - LCA - Cyprus + Limassol - QLI - Cyprus + Nicosia - NIC - Cyprus + Paphos - PFO - Cyprus + Prague - Ruzyne - PRG - Czech Republic + Uherske Hradiste - UHE - Czech Republic + Aarhus - AAR - Denmark + Alborg - AAL - Denmark + Billund - BLL - Denmark + Copenhagen - Copenhagen Airport - CPH - Denmark + Esbjerg - EBJ - Denmark + Faroer - Vágar Airport - FAE - Denmark + Karup - KRP - Denmark + Odense - ODE - Denmark + Roenne - RNN - Denmark + Skrydstrup - SKS - Denmark + Soenderborg - SGD - Denmark + Thisted - TED - Denmark + Djibouti (city) - Djibouti-Ambouli International Airport - JIB + Melville Hall - DOM - Dominica + La Romana - La Romana International Airport - LRM - Dominican Republic + Samana - Samaná El Catey International Airport - AZS - Dominican Republic + Puerto Plata - POP - Dominican Republic + Punta Cana - Punta Cana International - PUJ - Dominican Republic + Santo Domingo - SDQ - Dominican Republic + Guayaquil - Simon Bolivar - GYE - Ecuador + Jipijapa - JIP - Ecuador + Quito - Mariscal Sucre International Airport - UIO - Ecuador + Salinas - SNC - Ecuador + Abu Rudeis - AUE - Egypt + Abu Simbel - ABS - Egypt + Al Arish - AAC - Egypt + Alexandria - Borg el Arab Airport - HBH - Egypt + Alexandria - El Nhouza Airport - ALY - Egypt + Assiut - ATZ - Egypt + Aswan - Daraw Airport - ASW - Egypt + Cairo - Cairo International Airport - CAI - Egypt + El Minya - EMY - Egypt + Hurghada International - HRG - Egypt + Kharga - New Valley - UVL - Egypt + Luxor - LXR - Egypt + Marsa Alam - RMF - Egypt + Marsa Matrah (Marsa Matruh) - MUH - Egypt + New Valley - Kharga - UVL - Egypt + Port Said - PSD - Egypt + Santa Katarina - Mount Sinai - SKV - Egypt + Sharm El Sheikh - SSH - Egypt + Siwa - SEW - Egypt + San Salvador - SAL - El Salvador + Malabo - SSG - Equatorial Guinea + Asmara - Asmara International - ASM - Eritrea + Tallinn - Pirita Harbour - QUF - Estonia + Tallinn - Ulemiste - TLL - Estonia + Addis Ababa - Bole International Airport - ADD - Ethiopia + Jijiga - JIJ - Ethiopia + Jimma - JIM - Ethiopia + Jinka - Baco/Jinka Airport - BCO - Ethiopia + Castaway - CST - Fiji + Nadi - NAN - Fiji + Suva/Nausori - SUV - Fiji + Nausori - SUV - Fiji + Enontekioe - ENF - Finland + Helsinki - Vantaa - HEL - Finland + Ivalo - IVL - Finland + Joensuu - JOE - Finland + Jyväskylä (Jyvaskyla) - JYV - Finland + Kajaani - KAJ - Finland + Kauhajoki - KHJ - Finland + Kemi/Tornio - KEM - Finland + Kittilä - KTT - Finland + Kokkola/Pietarsaari - KOK - Finland + Kuopio - KUO - Finland + Kuusamo - KAO - Finland + Lappeenranta - LPP - Finland + Mariehamn (Maarianhamina) - MHQ - Finland + Mikkeli - MIK - Finland + Oulu - OUL - Finland + Pori - POR - Finland + Rovaniemi - RVN - Finland + Savonlinna - SVL - Finland + Seinaejoki - SJY - Finland + Sodankylae - SOT - Finland + Tampere - TMP - Finland + Turku - TKU - Finland + Vaasa - VAA - Finland + Varkaus - VRK - Finland + Ajaccio - AJA - France + Albi - LBI - France + Annecy - NCY - France + Aurillac - AUR - France + Bastia - BIA - France + Bergerac - Roumanieres - EGC - France + Biarritz - BIQ - France + Bordeaux - Bordeaux Airport - BOD - France + Brest - BES - France + Calvi - CLY - France + Cannes – Mandelieu Airport - CEQ - France + Chambery - CMF - France + Clermont Ferrand - CFE - France + Dinard - DNR - France + Disneyland Paris - DLP - France + Figari - FSC - France + Frejus - FRJ - France + Grenoble - GNB - France + La Rochelle - LRH - France + Lannion - LAI - France + Lille - Lille Airport - LIL - France + Limoges - LIG - France + Lorient - LRT - France + Lourdes/Tarbes - LDE - France + Lyon - Lyon-Saint Exupéry Airport official website - LYS - France + Marseille - Marseille Provence Airport - MRS - France + Metz -  Frescaty - MZM - France + Metz/Nancy Metz-Nancy-Lorraine - ETZ - France + Montpellier - Montpellier–Méditerranée Airport - MPL - France + Mulhouse - MLH - France + Nancy - ENC - France + Nantes - Nantes Atlantique Airport - NTE - France + Nice - Cote D\'Azur Airport - NCE - France + Nimes - FNI - France + Paris - PAR - France + Paris - Charles de Gaulle - CDG - France + Paris - Le Bourget - LBG - France + Paris - Orly - ORY - France + Pau - PUF - France + Perpignan - PGF - France + Poitiers - Biard - PIS - France + Quimper - UIP - France + Rennes - RNS - France + Roanne - RNE - France + Rodez - RDZ - France + Saint Brieuc - SBK - France + St. Etienne - EBU - France + Strasbourg - Strasbourg Airport - SXB - France + Toulouse - Blagnac Airport - TLS - France + Cayenne - Cayenne-Rochambeau Airport - CAY - French Guiana + Bora Bora - BOB - French Polynesia + Huahine - HUH - French Polynesia + Manihi - XMH - French Polynesia + Maupiti - MAU - French Polynesia + Moorea - MOZ - French Polynesia + Raiatea - RFP - French Polynesia + Rangiroa - RGI - French Polynesia + Ua Huka - UAH - French Polynesia + Ua Pou - UAP - French Polynesia + Papeete - Faaa - PPT - French Polynesia + Lambarene - LBQ - Gabon + Libreville - LBV - Gabon + Moanda - MFF - Gabon + Mouila - MJL - Gabon + Mvengue - MVB - Gabon + Port Gentil - POG - Gabon + Oyem - UVE - Gabon + Banjul - Banjul International Airport (Yundum International) - BJL - Gambia + Tbilisi - Novo Alexeyevka - TBS - Georgia + Augsburg - Augsbur gAirport - AGB - Germany + Bayreuth - Bindlacher-Berg - BYU - Germany + Berlin - BER - Germany + Berlin, Schoenefeld - SXF - Germany + Berlin, Tegel - TXL - Germany + Berlin, Tempelhof (ceased operating in 2008) - THF - Germany + Bremen - Bremen Airport (Flughafen Bremen) - BRE - Germany + Cottbus - Cottbus-Drewitz Airport - CBU - Germany + Cologne - Cologne Airport (Flughafen Köln/Bonn) - CGN - Germany + Dortmund - DTM - Germany + Dresden - Dresden Airport - DRS - Germany + Duesseldorf - Düsseldorf International Airport - DUS - Germany + Erfurt - Erfurt Airport (Flughafen Erfurt) - ERF - Germany + Frankfurt/Main - Frankfurt Airport (Rhein-Main-Flughafen) - FRA - Germany + Frankfurt/Hahn - HHN - Germany + Friedrichshafen - Bodensee-Airport Friedrichshafen - FDH - Germany + Guettin - GTI - Germany + Hamburg - Fuhlsbuettel - HAM - Germany + Hannover - HAJ - Germany + Hof - HOQ - Germany + Juist (island) - JUI - Germany + Karlsruhe-Baden - Soellingen - FKB - Germany + Kiel - Holtenau - KEL - Germany + Köln, Köln/Bonn - CGN - Germany + Leipzig - LEJ - Germany + Muenchen (Munich) - Franz Josef Strauss - MUC - Germany + Muenster/Osnabrueck - FMO - Germany + Nürnberg (Nuremberg) - NUE - Germany + Paderborn/Lippstadt - PAD - Germany + Saarbruecken - SCN - Germany + Stuttgart - Echterdingen - STR - Germany + Westerland, Sylt Airport - GWT - Germany + Wiesbaden, Air Base - WIE - Germany + Accra - Kotoka International Airport - ACC - Ghana + Gibraltar - GIB + Araxos - GPA - Greece + Athens - Elefthérios Venizélos International Airport - ATH - Greece + Athens, Hellinikon Airport - HEW - Greece + Chania - CHQ - Greece + Chios - JKH - Greece + Corfu - CFU - Greece + Heraklion - HER - Greece + Kalamata - KLX - Greece + Karpathos - AOK - Greece + Kavalla - KVA - Greece + Kos - KGS - Greece + Mykonos - JMK - Greece + Mytilene (Lesbos) - MJT - Greece + Naxos - Naxos Airport - JNX - Greece + Preveza/Lefkas - PVK - Greece + Rhodos - RHO - Greece + Saloniki - SKG - Greece + Samos - SMI - Greece + Skiathos - JSI - Greece + Thessaloniki - Makedonia Apt. - SKG - Greece + Thira - JTR - Greece + Zakynthos - ZTH - Greece + Narsarsuaq - UAK - Greenland + Soendre Stroemfjord - SFJ - Greenland + Upernavik - Upernavik Heliport - JUV - Greenland + Uummannaq - UMD - Greenland + Grenada - Point Salines Airport also Maurice Bishop - GND + Basse-Terre - Pointe-à-Pitre International Airport - PTP - Guadeloupe + Pointe a Pitre - PTP - Guadeloupe + Agana (Hagåtña) - SUM - Guam + Guam - GUM + Hagåtña - Guam International Airport - GUM + Guatemala City - La Aurora International Airport - GUA + Conakry - Conakry International Airport - CKY - Guinea + Labe - LEK - Guinea + Bissau - Osvaldo Vieiro International Airport - BXO - Guinea-Bissau + Georgetown - Cheddi Jagan International Airport - GEO - Guyana + Jacmel    - JAK - Haiti + Jeremie - Jeremie Airport - JEE - Haiti + Port au Prince - PAP - Haiti + Sapporo - SPK - Japan + Sapporo - Okadama - OKD - Japan + Juticalpa - JUT - Honduras + Roatan - RTB - Honduras + San Pedro Sula - SAP - Honduras + Santa Rosa, Copan - SDH - Honduras + Tegucigalpa - TGU - Honduras + Utila - UII - Honduras + Hong Kong - International Airport (HKIA) - HKG + Hong Kong - Chek Lap Kok - ZJK + Budapest - Budapest Ferihegy International Airport - BUD - Hungary + Ibiza - IBZ - Spain + Egilsstadir - EGS - Iceland + Reykjavik - Metropolitan Area - REK - Iceland + Reykjavik - Keflavik International - KEF - Iceland + Ahmedabad - AMD - India + Amritsar - ATQ - India + Anand - QNB - India + Bagdogra - IXB - India + Bangalore - BLR - India + Baroda - BDQ - India + Belgaum - IXG - India + Bhopal - BHO - India + Bhubaneswar - BBI - India + Bombay (Mumbai) - Chhatrapati Shivaji International - BOM - India + Calcutta (Kolkata) - Netaji Subhas Chandra - CCU - India + Calicut - CCJ - India + Chandigarh - Chandigarh International Airport - IXC - India + Chennai (Madras) - MAA - India + Cochin - COK - India + Coimbatore - CJB - India + Delhi - Indira Gandhi International Airport - DEL - India + Goa - GOI - India + Guwahati - GAU - India + Hyderabad - Rajiv Gandhi International Airport - HYD - India + Jagdalpur - JGB - India + Jaipur - Sanganeer - JAI - India + Jaisalmer    - JSA - India + Jalandhar - JLR - India + Jammu - Satwari - IXJ - India + Jamnagar - Govardhanpur - JGA - India + Jamshedpur - Sonari Airport - IXW - India + Jeypore - Jeypore Airport - PYB - India + Jodhpur - JDH - India + Jorhat - Rowriah Airport - JRH - India + Kanpur - KNU - India + Kolkata (Calcutta) - Netaji Subhas Chandra - CCU - India + Lucknow - LKO - India + Madras (Chennai) - MAA - India + Mysore - MYQ - India + Nagpur - NAG - India + Patna - PAT - India + Rajkot - RAJ - India + Ranchi - IXR - India + Srinagar - SXR - India + Surat - STV - India + Thiruvananthapuram - TRV - India + Tiruchirapally - TRZ - India + Udaipur - Dabok Airport - UDR - India + Varanasi - VNS - India + Pune - PNQ - India + Ayawasi - AYW - Indonesia + Bandung - Husein Sastranegara International Airport - BDO - Indonesia + Denpasar/Bali - DPS - Indonesia + Jakarta - Halim Perdana Kusuma - HLP - Indonesia + Jakarta - Metropolitan Area - JKT - Indonesia + Jakarta - Soekarno-Hatta International - CGK - Indonesia + Jayapura - Sentani - DJJ - Indonesia + Medan - Polania Int\'l (now Soewondo AFB) - MES - Indonesia + Medan - Kualanamu International - KNO - Indonesia + Manado - MDC - Indonesia + Surabaya - Juanda - SUB - Indonesia + Tioman - TOD - Indonesia + Ujung Pandang - Hasanudin Airport - UPG - Indonesia + Jambi - Sultan Taha Syarifudn - DJB - Indonesia + Abadan - ABD - Iran + Tehran (Teheran) - Mehrabad - THR - Iran + Urmiehm (Orumieh) - OMH - Iran + Bagdad - Baghdad International Airport - BGW - Iraq + Basra, Basrah - BSR - Iraq + Kirkuk - KIK - Iraq + Mosul - OSM - Iraq + Cork - ORK - Ireland + Donegal (Carrickfin) - CFN - Ireland + Dublin - Dublin International Airport - DUB - Ireland + Galway - GWY - Ireland + Kerry County - KIR - Ireland + Knock - NOC - Ireland + Shannon (Limerick) - SNN - Ireland + Sligo - SXL - Ireland + Elat - ETH - Israel + Elat, Ovula - VDA - Israel + Haifa - HFA - Israel + Jerusalem - Atarot Airport (closed) - JRS - Israel + Tel Aviv - Ben Gurion International - TLV - Israel + Alghero Sassari - AHO - Italy + Ancona - Ancona Falconara Airport - AOI - Italy + Bari - BRI - Italy + Bergamo/Milan - Orio Al Serio - BGY - Italy + Bologna - BLQ - Italy + Brescia, Montichiari - VBS - Italy + Brindisi - BDS - Italy + Cagliari - CAG - Italy + Catania - CTA - Italy + Elba Island, Marina Di Campo - EBA - Italy + Florence (Firenze) - Peretola Airport - FLR - Italy + Genoa - GOA - Italy + Lamezia Terme - SUF - Italy + Lampedusa - LMP - Italy + Milan - MIL - Italy + Milan - Linate - LIN - Italy + Milan - Malpensa - MXP - Italy + Milan - Orio Al Serio - BGY - Italy + Naples - Naples Capodichino Airport - NAP - Italy + Olbia - OLB - Italy + Palermo - Punta Raisi - PMO - Italy + Pantelleria - PNL - Italy + Perugia - PEG - Italy + Pescara - PSR - Italy + Pisa - Galileo Galilei - PSA - Italy + Reggio Calabria - REG - Italy + Rimini - RMI - Italy + Rome - ROM - Italy + Rome - Ciampino - CIA - Italy + Rome - Fuimicino - FCO - Italy + Trapani - TPS - Italy + Treviso - TSF - Italy + Trieste - TRS - Italy + Turin - TRN - Italy + Venice - Marco Polo - VCE - Italy + Verona (Brescia) Montichiari - VBS - Italy + Verona - VRN - Italy + Kingston - Norman Manley - KIN - Jamaica + Montego Bay - Sangster International - MBJ - Jamaica + Akita - AXT - Japan + Amami - ASJ - Japan + Aomori - AOJ - Japan + Chiba City - QCB - Japan + Sapporo - New Chitose Airport - CTS - Japan + Fukuoka - FUK - Japan + Fukushima - Fukushima Airport - FKS - Japan + Hachijo Jima - HAC - Japan + Hakodate - HKD - Japan + Hiroshima International - HIJ - Japan + Ishigaki - New Ishigaki Airport - ISG - Japan + Kagoshima - KOJ - Japan + Kobe - UKB - Japan + Kochi - KCZ - Japan + Komatsu - KMQ - Japan + Kumamoto - KMJ - Japan + Kushiro - KUH - Japan + Kyoto - UKY - Japan + Matsumoto, Nagano - MMJ - Japan + Matsuyama - MYJ - Japan + Miyako Jima (Ryuku Islands) - Hirara - MMY - Japan + Miyazaki - KMI - Japan + Morioka, Hanamaki - HNA - Japan + Nagasaki - NGS - Japan + Nagoya - Komaki AFB - NGO - Japan + Niigata - KIJ - Japan + Oita - OIT - Japan + Okayama - OKJ - Japan + Okinawa, Ryukyo Island - Naha - OKA - Japan + Osaka, Metropolitan Area - OSA - Japan + Osaka - Itami - ITM - Japan + Osaka - Kansai International Airport - KIX - Japan + Sado Shima - SDS - Japan + Sapporo - New Chitose Airport - CTS - Japan + Sendai - SDJ - Japan + Takamatsu - TAK - Japan + Tokushima - TKS - Japan + Tokyo - TYO - Japan + Tokyo - Haneda - HND - Japan + Tokyo - Narita - NRT - Japan + Toyama - TOY - Japan + Ube - UBJ - Japan + Yamagata, Junmachi - GAJ - Japan + Yokohama - YOK - Japan + Amman - Queen Alia International Airport - AMM - Jordan + Amman - Amman-Marka International Airport - ADJ - Jordan + Aqaba - AQJ - Jordan + Almaty (Alma Ata) - Almaty International Airport - ALA - Kazakhstan + Astana - Astana International Airport - TSE - Kazakhstan + Malindi - MYD - Kenya + Mombasa - Moi International - MBA - Kenya + Nairobi - NBO - Kenya + King Island - KNS - Australia + Kiritimati (island) - Cassidy International Airport - CXI - Kiribati + Incheon, Incheon International Airport - ICN - South Korea + Kuwait - Kuwait International - KWI + Bishkek - Manas International Airport - FRU - Kyrgyzstan + Vientiane - Wattay - VTE - Laos + Riga - RIX - Latvia + Beirut - Beirut Rafic Hariri International Airport - BEY - Lebanon + Maseru - Moshoeshoe International - MSU - Lesotho + Monrovia - Metropolitan Area - MLW - Liberia + Monrovia - Roberts International - ROB - Liberia + Benghazi (Bengasi) - BEN - Libya + Sehba - SEB - Libya + Tripoli - Tripoli International - TIP - Libya + Vilnius - VNO - Lithuania + Wilna (Vilnius) - VNO - Lithuania + Lifou - LIF - New Caledonia + Luxembourg - LUX + Ohrid - OHD - Macedonia + Skopje - SKP - Macedonia + Antananarivo (Tanannarive) - Ivato International Airport - TNR - Madagascar + Majunga - MJN - Madagascar + Blantyre (Mandala) - Chileka International Airport - BLZ - Malawi + Lilongwe - Lilongwe International - LLW - Malawi + Bintulu - BTU - Malaysia + Johor Bahru - Sultan Ismail International - JHB - Malaysia + Kota Kinabalu - BKI - Malaysia + Kuala Lumpur - International Airport - KUL - Malaysia + Kuala Lumpur - Sultan Abdul Aziz Shah - SZB - Malaysia + Kuantan - KUA - Malaysia + Kuching - KCH - Malaysia + Labuan - LBU - Malaysia + Langkawi (islands) - LGK - Malaysia + Miri - MYY - Malaysia + Penang International - PEN - Malaysia + Sibu - SBW - Malaysia + Tawau - TWU - Malaysia + Male - International - MLE - Maledives + Bamako - Bamako-Sénou International Airport - BKO - Mali + Luga - MLA - Malta + Jaluit Island   - UIT - Marshall Islands + Fort de France - Martinique Aimé Césaire International - FDF + Nouadhibou - NDB - Mauritania + Nouakchott - NKC - Mauritania + Zouerate - OUZ - Mauritania + Mauritius - S.Seewoosagur Ram International - MRU + Rodrigues Island - RRG - Mauritius + Dzaoudzi - DZA - Mayotte + Acapulco - ACA - Mexico + Aguascaliente - AGU - Mexico + Cancun - CUN - Mexico + Chichen Itza - CZA - Mexico + Chihuahua, Gen Fierro Villalobos - CUU - Mexico + Ciudad Del Carmen - CME - Mexico + Ciudad Juarez - CJS - Mexico + Ciudad Obregon - CEN - Mexico + Ciudad Victoria - CVM - Mexico + Colima - CLQ - Mexico + Cozmel - CZM - Mexico + Culiacan - CUL - Mexico + Guadalajara - GDL - Mexico + Hermosillo - Gen. Pesqueira Garcia - HMO - Mexico + Huatulco - HUX - Mexico + Ixtapa/Zihuatenejo - ZIH - Mexico + Jalapa - JAL - Mexico + La Paz - Leon - LAP - Mexico + Lazaro Cardenas - LZC - Mexico + Leon - BJX - Mexico + Loreto - LTO - Mexico + Los Cabos - SJD - Mexico + Los Mochis - LMM - Mexico + Manzanillo - ZLO - Mexico + Mazatlan - MZT - Mexico + Merida - MID - Mexico + Mexicali - MXL - Mexico + Mexico City - Mexico City International Airport - MEX + Mexico City - Atizapan - AZP + Mexico City - Juarez International - MEX + Mexico City - Santa Lucia - NLU + Minatitlan - MTT - Mexico + Monterrey - Gen. Mariano Escobedo - MTY - Mexico + Monterrey - Aeropuerto Del Norte - NTR - Mexico + Morelia - MLM - Mexico + Nuevo Laredo - NLD - Mexico + Oaxaca - Xoxocotlan - OAX - Mexico + Puebla - PBC - Mexico + Puerto Escondido - PXM - Mexico + Puerto Vallarta - PVR - Mexico + San Jose Cabo - SJD - Mexico + San Luis Potosi - SLP - Mexico + Santa Rosalia - SRL - Mexico + Tampico - Gen. F. Javier Mina - TAM - Mexico + Tijuana - Rodriguez - TIJ - Mexico + Tuxtla Gutierrez - TGZ - Mexico + Uruapan - UPN - Mexico + Veracruz - VER - Mexico + Villahermosa - VSA - Mexico + Zacatecas - ZCL - Mexico + Pohnpei - PNI - Micronesia + Chisinau - Chişinău International Airport - KIV - Moldova + Ulaanbaatar - Buyant Uhaa Airport - ULN - Mongolia + Podgorica - TGD - Montenegro + Tivat - TIV - Montenegro + Agadir - AGA - Morocco + Al Hoceima - AHU - Morocco + Casablanca - CAS - Morocco + Casablanca, Mohamed V - CMN - Morocco + Fes - FEZ - Morocco + Marrakesh - Menara Airport - RAK - Morocco + Ouarzazate - OZZ - Morocco + Oujda - OUD - Morocco + Rabat - Sale - RBA - Morocco + Tangier - Boukhalef - TNG - Morocco + Beira - BEW - Mozambique + Maputo - Maputo International - MPM - Mozambique + Mandalay - Annisaton - MDL - Myanmar + Rangoon (Yangon) - Mingaladon - RGN - Myanmar + Yangon (Rangoon) - Mingaladon - RGN - Myanmar + Katima Mulilo/Mpacha - MPA - Namibia + Keetmanshoop - KMP - Namibia + Luederitz - LUD - Namibia + Mokuti - OKU - Namibia + Ondangwa - OND - Namibia + Oranjemund - OMD - Namibia + Rundu - NDU - Namibia + Swakopmund - SWP - Namibia + Tsumeb - TSB - Namibia + Windhoek - Eros - ERS - Namibia + Windhoek - Hosea Kutako International - WDH - Namibia + Janakpur - JKR - Nepal + Jiri - JIR - Nepal + Jomsom - JMO - Nepal + Jumla - JUM - Nepal + Kathmandu - Tribhuvan International Airport - KTM - Nepal + Amsterdam - Amsterdam Airport Schiphol - AMS - Netherlands + Den Haag (The Hague) - HAG - Netherlands + Eindhoven - EIN - Netherlands + Groningen - Eelde - GRQ - Netherlands + Lelystad - LEY - Netherlands + Maastricht/Aachen - MST - Netherlands + Rotterdam - RTM - Netherlands + Uden - Volkel Airport - UDE - Netherlands + Bonaire - BON - Netherlands Antilles + Curacao - Curaçao International Airport - CUR - Netherlands Antilles + St. Marteen - SXM - Netherlands Antilles + Ile des Pins - ILP - New Caledonia + Ile Ouen - IOU - New Caledonia + Mare - MEE - New Caledonia + Noumea - NOU - New Caledonia + Touho - TOU - New Caledonia + Auckland - Auckland International Airport - AKL - New Zealand + Blenheim - BHE - New Zealand + Christchurch - CHC - New Zealand + Dunedin - DUD - New Zealand + Hamilton - HLZ - New Zealand + Incercargill - IVC - New Zealand + Invercargill - IVC - New Zealand + Milford Sound - MFN - New Zealand + Mount Cook - GTN - New Zealand + Nelson - NSN - New Zealand + Palmerston North - PMR - New Zealand + Queenstown - ZQN - New Zealand + Rotorua - ROT - New Zealand + Te Anau - TEU - New Zealand + Wellington - WLG - New Zealand + Whakatane - WHK - New Zealand + Whangarei - WRE - New Zealand + Managua - Augusto C Sandino - MGA - Nicaragua + Agades - AJY - Niger + Arlit - RLT - Niger + Maradi - MFQ - Niger + Niamey - NIM - Niger + Zinder - ZND - Niger + Abuja - Nnamdi Azikiwe International Airport - ABV - Nigeria + Jos - JOS - Nigeria + Kano - KAN - Nigeria + Lagos - Murtala Muhammed - LOS - Nigeria + Port Harcourt - PHC - Nigeria + Pyongyang - Sunan International Airport - FNJ - North Korea + Saipan - SPN - Northern Mariana Islands + Alesund - AES - Norway + Alta - ALF - Norway + Bardufoss - BDU - Norway + Bergen - BGO - Norway + Bodo - BOO - Norway + Broennoeysund - BNN - Norway + Evenes - EVE - Norway + Floro - FRO - Norway + Hammerfest - HFT - Norway + Haugesund - HAU - Norway + Kirkenes - KKN - Norway + Kristiansand - KRS - Norway + Kristiansund - KSU - Norway + Lakselv - LKL - Norway + Oslo - Oslo Airport, Gardermoen - OSL - Norway + Oslo - Fornebu - FBU - Norway + Oslo - Sandefjord - TRF - Norway + Sogndal - SOG - Norway + Stavanger - SVG - Norway + Tromsoe - TOS - Norway + Trondheim - TRD - Norway + Muscat - Seeb - MCT - Oman + Salalah - SLL - Oman + Bahawalpur - BHV - Pakistan + Bannu - BNP - Pakistan + Chitral - CJL - Pakistan + Dera Ismail Khan - Dera Ismail Khan Airport - DSK - Pakistan + Faisalabad - LYP - Pakistan + Gilgit - GIL - Pakistan + Gwadar - GWD - Pakistan + Hyderabad - HDD - Pakistan + Islamabad - Benazir Bhutto International Airport - ISB - Pakistan + Jacobabad - JAG - Pakistan + Jiwani - JIW - Pakistan + Karachi - Jinnah International Airport - KHI - Pakistan + Khuzdar - KDD - Pakistan + Kohat - OHT - Pakistan + Lahore - LHE - Pakistan + Mianwali - MWD - Pakistan + Mirpur - QML - Pakistan + Moenjodaro - MJD - Pakistan + Multan - MUX - Pakistan + Muzaffarabad - MFG - Pakistan + Nawab Shah - WNS - Pakistan + Panjgur - PJG - Pakistan + Pasni - PSI - Pakistan + Peshawar - PEW - Pakistan + Quetta - UET - Pakistan + Rahim Yar Khan - RYK - Pakistan + Rawala Kot - RAZ - Pakistan + Rawalpindi - RWP - Pakistan + Saidu Sharif - SDT - Pakistan + Sindhri - MPD - Pakistan + Skardu - KDU - Pakistan + Sui - SUL - Pakistan + Sukkur - SKZ - Pakistan + Turbat - TUK - Pakistan + Zhob - PZH - Pakistan + Gaza City - Gaza International Airport - GZA - Palestinian Territory + Jaque    - JQE - Panama + Panama City - Tocumen International - PTY + Aiyura - AYU - Papua New Guinea + Amazon Bay - AZB - Papua New Guinea + Jacquinot Bay - JAQ - Papua New Guinea + Lae - Lae Nadzab Airport - LAE - Papua New Guinea + Manguna - MFO - Papua New Guinea + Port Moresby - Jackson Field - POM - Papua New Guinea + Asuncion - Asunción International Airport - ASU - Paraguay + Iquitos - IQT - Peru + Jauja - JAU - Peru + Juanjui - JJI - Peru + Juliaca - JUL - Peru + Lima - J Chavez International - LIM - Peru + Cebu City - Mactan-Cebu International - CEB - Philippines + Cuyo - CYU - Philippines + Jolo - JOL - Philippines + Mactan Island - Nab - NOP - Philippines + Manila - Ninoy Aquino International - MNL - Philippines + Gdansk - GDN - Poland + Krakow (Cracow) - John Paul II International Airport - KRK - Poland + Poznan, Lawica - POZ - Poland + Stettin - SZZ - Poland + Warsaw - Frédéric Chopin - WAW - Poland + Faro - FAO - Portugal + Funchal - FNC - Portugal + Horta - HOR - Portugal + Lisbon - Lisboa - LIS - Portugal + Ponta Delgada - PDL - Portugal + Porto - OPO - Portugal + Porto Santo - PXO - Portugal + Santa Maria - SMA - Portugal + Terceira - TER - Portugal + Aguadilla - BQN - Puerto Rico + Mayaguez - MAZ - Puerto Rico + Ponce - PSE - Puerto Rico + San Juan - SJU - Puerto Rico + Doha - Doha International Airport - DOH - Qatar + Saint Denis de la Reunion - RUN + Bucharest - BUH - Romania + Bucharest - Henri Coandă International Airport - OTP - Romania + Constanta (Constanța) - Constanta Int\'l Airport - CND - Romania + Adler/Sochi - AER - Russia + Arkhangelsk - ARH - Russia + Chabarovsk (Khabarovsk) - KHV - Russia + Chita (Tschita) - HTA - Russia + Irkutsk - IKT - Russia + Kaliningrad - KGD - Russia + Kazan - Kazan International Airport - KZN - Russia + Mineralnye Vody - MRV - Russia + Moscow - Metropolitan Area - MOW - Russia + Moscow - Domodedovo - DME - Russia + Moscow - Sheremetyevo - SVO - Russia + Moscow - Vnukovo - VKO - Russia + Murmansk - MMK - Russia + Nizhny Novgorod - Strigino International Airport - GOJ - Russia + Novosibirsk - Tolmachevo Airport - OVB - Russia + Rostov-on-Don - Rostov-on-Don Airport - RVI - Russia + Rostov-on-Don - Platov International Airport - ROV - Russia + Samara - Kurumoch International Airport - KUF - Russia + Saransk - Saransk Airport - SKX - Russia + St. Petersburg (Leningrad) - Pulkovo - LED - Russia + Ufa - UFA - Russia + Ukhta - UCT - Russia + Ulan-Ude - UUD - Russia + Velikiye Luki (Welikije Luki) - VLU - Russia + Yakutsk - YKS - Russia + Yekaterinburg - Koltsovo Airport - SVX - Russia + Kigali - Gregoire Kayibanda - KGL - Rwanda + Basseterre - Robert L. Bradshaw International Airport - SKB - Saint Kitts and Nevis + Castries - George F. L. Charles Airport - SLU - Saint Lucia + St. Lucia Hewanorra - UVF - Saint Lucia + St. Lucia Vigle - SLU - Saint Lucia + Canouan (island) - Canouan Airport - CIW - Saint Vincent & amp; the Grenadines + Kingstown - E. T. Joshua Airport - SVD - Saint Vincent & the Grenadines + St. Vincent - SVD - Saint Vincent & the Grenadines + Union Island - UNI - Saint Vincent & the Grenadines + Apia - Faleolo International Airport - APW - Samoa + Sao Tome - TMS - Sao Tome & Principe + Dhahran - DHA - Saudi Arabia + Jeddah - King Abdulaziz International - JED - Saudi Arabia + Jouf - AJF - Saudi Arabia + Khamis Mushayat - AHB - Saudi Arabia + Madinah, Mohammad Bin Abdulaziz - MED - Saudi Arabia + Medina - MED - Saudi Arabia + Riyadh - King Khaled International - RUH - Saudi Arabia + Tabuk - TUU - Saudi Arabia + Taif - TIF - Saudi Arabia + Yanbu - YNB - Saudi Arabia + Dammam, King Fahad International - DMM - Saudi Arabia + Edinburgh - Edinburgh Airport - EDI - United Kingdom + Dakar - Léopold Sédar Senghor International Airport - DKR - Senegal + Belgrad (Beograd) - Belgrade Nikola Tesla International - BEG - Serbia + Nis - INI - Serbia + Novi Sad - QND - Serbia + Pristina - PRN - Serbia + Mahe - Seychelles International - SEZ + Freetown - Freetown-Lungi International Airport - FNA - Sierra Leone + Singapore - Changi - SIN + Singapore - Paya Lebar - QPG + Singapore - Seletar - XSP + Bratislava - M. R. Štefánik Airport - BTS - Slovakia + Ljubljana - Brnik - LJU - Slovenia + Maribor - MBX - Slovenia + Guadalcanal - GSI - Solomon Islands + Honiara Henderson International - HIR - Solomon Islands + Mogadishu - MGQ - Somalia + Aggeneys - AGZ - South Africa + Alexander Bay - Kortdoorn - ALJ - South Africa + Alldays - ADY - South Africa + Bloemfontein - Bloemfontein Airport - BFN - South Africa + Cape Town - Cape Town International Airport - CPT - South Africa + Durban - DUR - South Africa + East London - ELS - South Africa + Ellisras - ELL - South Africa + George - GRJ - South Africa + Johannesburg - OR Tambo International Airport - JNB - South Africa + Kimberley - KIM - South Africa + Kleinsee - KLZ - South Africa + Lanseria - HLA - South Africa + Lusisiki - LUJ - South Africa + Margate - MGH - South Africa + Messina - MEZ - South Africa + Mkambati - MBM - South Africa + Mossel Bay - MZY - South Africa + Mzamba - MZF - South Africa + Nelspruit - NLP - South Africa + Nelspruit - Kruger Mpumalanga International Airport - MQP - South Africa + Newcastle - NCS - South Africa + Oudtshoorn - OUH - South Africa + Phalaborwa - PHW - South Africa + Pietermaritzburg - PZB - South Africa + Pietersburg - PTG - South Africa + Pilanesberg/Sun City - NTY - South Africa + Plettenberg Bay - PBZ - South Africa + Port Elizabeth - PLZ - South Africa + Pretoria - Wonderboom Apt. - PRY - South Africa + Richards Bay - RCB - South Africa + Sishen - SIS - South Africa + Skukuza - SZK - South Africa + Springbok - SBU - South Africa + Thaba\'Nchu - TCU - South Africa + Ulundi - ULD - South Africa + Umtata - UTT - South Africa + Upington - UTN - South Africa + Vryheid - VYD - South Africa + Walvis Bay - WVB - South Africa + Welkom - WEL - South Africa + Pu San (Busan) - Gimhae International Airport - PUS - South Korea + Seoul - Incheon International Airport - ICN - South Korea + Seoul - Kimpo - SEL - South Korea + Ulsan - USN - South Korea + Juba - JUB - South Sudan + Alicante - ALC - Spain + Almeria - LEI - Spain + Arrecife/Lanzarote - ACE - Spain + Badajoz - BJZ - Spain + Barcelona - BCN - Spain + Bilbao - BIO - Spain + Cordoba - ODB - Spain + Fuerteventura - FUE - Spain + Gerona - GRO - Spain + Granada - GRX - Spain + Jerez de la Frontera/Cadiz - La Parra - XRY - Spain + La Coruna - LCG - Spain + Las Palmas - LPA - Spain + Madrid - Barajas - MAD - Spain + Mahon - MAH - Spain + Malaga - AGP - Spain + Murcia - MJV - Spain + Oviedo - OVD - Spain + Palma de Mallorca - PMI - Spain + Reus - REU - Spain + San Sebastian - EAS - Spain + Santa Cruz de la Palma - SPC - Spain + Santander - SDR - Spain + Santiago de Compostela - SCQ - Spain + Sevilla - SVQ - Spain + Tenerife - TCI - Spain + Tenerife - Sur Reina Sofia - TFS - Spain + Tenerife - Norte Los Rodeos - TFN - Spain + Valencia - VLC - Spain + Valladolid - VLL - Spain + Valverde - VDE - Spain + Vigo - VGO - Spain + Vitoria - VIT - Spain + Zaragoza - ZAZ - Spain + Colombo - Bandaranaike International Airport - CMB - Sri Lanka + Jaffna - Kankesanturai - JAF - Sri Lanka + Nevis - NEV - St. Kitts and Nevis + St. Kitts - SKB - St. Kitts and Nevis + St. Martin - SFG + Kassala - KSL - Sudan + Khartoum - Khartoum International Airport - KRT - Sudan + Paramaribo - Zanderij International - PBM - Suriname + Longyearbyen - Svalbard - LYR - Norway + Manzini - Matsapha International - MTS - Swaziland + Gothenburg (Göteborg) - Landvetter - GOT - Sweden + Helsingborg - JHE - Sweden + Jönköping (Jonkoping) - Axamo Airport - JKG - Sweden + Kalmar - KLR - Sweden + Karlstad - KSD - Sweden + Kiruna - KRN - Sweden + Kristianstad - KID - Sweden + Lidkoeping - LDK - Sweden + Lulea - LLA - Sweden + Malmo (Malmoe) - MMA - Sweden + Malmo (Malmö) - Malmö Airport - MMX - Sweden + Norrkoeping - NRK - Sweden + Oerebro - ORB - Sweden + Ronneby - RNB - Sweden + Stockholm Metropolitan Area - STO - Sweden + Stockholm - Arlanda - ARN - Sweden + Stockholm - Bromma - BMA - Sweden + Sundsvall - SDL - Sweden + Umea - UME - Sweden + Vaexjoe - VXO - Sweden + Vasteras - VST - Sweden + Visby - VBY - Sweden + Altenrhein - ACH - Switzerland + Basel - BSL - Switzerland + Berne, Bern-Belp - BRN - Switzerland + Berne, Railway Service - ZDJ - Switzerland + Geneva - Geneva-Cointrin International Airport - GVA - Switzerland + Lugano - LUG - Switzerland + Zurich (Zürich) - Kloten - ZRH - Switzerland + Basel/Mulhouse - EAP - Switzerland + Aleppo - ALP - Syria + Damascus, International - DAM - Syria + Kaohsiung International - KHH - Taiwan + Makung - MZG - Taiwan + Taipei - Chiang Kai Shek - TPE - Taiwan + Taipei - Sung Shan - TAY - Taiwan + Dushanbe (Duschanbe) - Dushanbe Airport - DYU - Tajikistan + Arusha - ARK - Tanzania + Dar es Salam (Daressalam) - Julius Nyerere Int\'l - DAR - Tanzania + Dodoma - Dodoma Airport - DOD - Tanzania + Kilimadjaro - JRO - Tanzania + Los Rodeos - TFN - Spain + Reina Sofia - TFS - Spain + Bangkok, Don Muang - DMK - Thailand + Bangkok, Suvarnabhumi International - BKK - Thailand + Chiang Mai - Chiang Mai International Airport - CNX - Thailand + Hatyai (Hat Yai) - HDY - Thailand + Nakhon Si Thammarat - NST - Thailand + Pattaya - PYX - Thailand + Phuket - HKT - Thailand + Ubon Ratchathani - Muang Ubon Airport - UBP - Thailand + Udon Thani - UTH - Thailand + Utapao (Pattaya) - UTP - Thailand + Bahamas - Lynden Pindling International Airport - NAS + Dili - Nicolau Lobato International Airport - DIL - Timor Leste (East Timor) + Lome - LFW - Togo + Nuku\'alofa - Fua\'Amotu International - TBU - Tonga + Port of Spain - Piarco International - POS - Trinidad and Tobago + Scarborough - Crown Point International - TAB - Trinidad and Tobago + Tobago - TAB - Trinidad and Tobago + Djerba - DJE - Tunisia + Monastir - MIR - Tunisia + Sfax - SFA - Tunisia + Tunis - Carthage - TUN - Tunisia + Adana - ADA - Turkey + Adiyaman - ADF - Turkey + Ankara - ANK - Turkey + Ankara - Esenboğa International Airport - ESB - Turkey + Antalya - AYT - Turkey + Bodrum - Milas Airport - BJV - Turkey + Dalaman - DLM - Turkey + Denizli - DNZ - Turkey + Erzincan - ERC - Turkey + Erzurum - ERZ - Turkey + Gaziantep - GZT - Turkey + Istanbul - Istanbul Atatürk Airport - IST - Turkey + Istanbul - Sabiha Gokcen - SAW - Turkey + Izmir - IZM - Turkey + Izmir - Adnan Menderes - ADB - Turkey + Kahramanmaras - KCM - Turkey + Kars - KYS - Turkey + Kayseri - ASR - Turkey + Konya - KYA - Turkey + Malatya - MLX - Turkey + Maras - KCM - Turkey + Mardin - MQM - Turkey + Mus - MSR - Turkey + Samsun - SZF - Turkey + Sivas - VAS - Turkey + Tekirdag - Corlu - TEQ - Turkey + Trabzon - TZX - Turkey + Van - Ferit Melen - VAN - Turkey + Ashgabat - Saparmurat Turkmenbashy Int. Airport - ASB - Turkmenistan + Entebbe - Entebbe International Airport - EBB - Uganda + Gulu - ULU - Uganda + Jinja - JIN - Uganda + Kharkov - HRK - Ukraine + Kiev - Borispol - KBP - Ukraine + Kiev - Zhulhany - IEV - Ukraine + Lvov (Lwow, Lemberg) - LWO - Ukraine + Nikolaev - NLV - Ukraine + Odessa - ODS - Ukraine + Simferopol - SIP - Ukraine + Uzhgorod - UDJ - Ukraine + Abu Dhabi - Abu Dhabi International - AUH - UAE + Al Ain - AAN - UAE + Alfujairah (Fujairah) - FJR - UAE + Dubai - Dubai International Airport - DXB - UAE + Fujairah, International Airport - FJR - UAE + Ras al Khaymah (Ras al Khaimah) - RKT - UAE + Sharjah - SHJ - UAE + Aberdeen - ABZ - United Kingdom + Barra (the famous tidal beach landing) - BRR - United Kingdom + Belfast - George Best Belfast City Airport - BHD - United Kingdom + Belfast - Belfast International Airport - BFS - United Kingdom + Benbecula - BEB - United Kingdom + Birmingham - Birmingham International Airport - BHX - United Kingdom + Blackpool - BLK - United Kingdom + Bournemouth - BOH - United Kingdom + Bristol - BRS - United Kingdom + Cambrigde - CBG - United Kingdom + Campbeltown - CAL - United Kingdom + Cardiff - Cardiff Airport - CWL - United Kingdom + Coventry - Baginton - CVT - United Kingdom + Derry (Londonderry) - LDY - United Kingdom + Doncaster/Sheffield, Robin Hood International Airport - DSA - United Kingdom + Dundee - DND - United Kingdom + Exeter - EXT - United Kingdom + Fair Isle (Shetland) - FIE - United Kingdom + Foula (Shetland) - FOU - United Kingdom + Glasgow, Prestwick - PIK - United Kingdom + Glasgow - GLA - United Kingdom + Humberside - HUY - United Kingdom + Inverness - INV - United Kingdom + Islay - ILY - United Kingdom + Kent (Manston) Kent International - MSE - United Kingdom + Kirkwall (Orkney) - KOI - United Kingdom + Land\'s End - LEQ - United Kingdom + Leeds/Bradford - LBA - United Kingdom + Lerwick/Tingwall (Shetland Islands) - LWK - United Kingdom + Liverpool - LPL - United Kingdom + London Metropolitan Area - LON - United Kingdom + London - City Airport - LCY - United Kingdom + London - Gatwick - LGW - United Kingdom + London - Heathrow - LHR - United Kingdom + London - Luton - LTN - United Kingdom + London - Stansted - STN - United Kingdom + Londonderry - Eglinton - LDY - United Kingdom + Lydd - Lydd International Airport - LYX - United Kingdom + Manchester - MAN - United Kingdom + Newquay - NQY - United Kingdom + Newcastle - NCL - United Kingdom + Norwich - NWI - United Kingdom + Nottingham - East Midlands - EMA - United Kingdom + Orkney - Kirkwall - KOI - United Kingdom + Out Skerries (Shetland) - OUK - United Kingdom + Sheffield, City Airport - SZD - United Kingdom + Sheffield, Doncaster, Robin Hood International Airport - DSA - United Kingdom + Southampton - Eastleigh - SOU - United Kingdom + Southend (London) - SEN - United Kingdom + Stansted (London) - STN - United Kingdom + Stornway - SYY - United Kingdom + Sumburgh (Shetland) - LSI - United Kingdom + Teesside, Durham Tees Valley - MME - United Kingdom + Unst (Shetland Island) - Baltasound Airport - UNT - United Kingdom + Wick - WIC - United Kingdom + Montevideo - Carrasco - MVD - Uruguay + Midway Island - Sand Island Field - MDY - USA + Aberdeen (SD) - ABR - USA + Abilene (TX) - ABI - USA + Akron (OH) - CAK - USA + Albany (GA) - ABY - USA + Albany (NY) - Albany International Airport - ALB - USA + Albuquerque (NM) - ABQ - USA + Allentown (PA) - ABE - USA + Altoona (PA) - AOO - USA + Altus - AXS - USA + Amarillo (TX) - AMA - USA + Anchorage (AK) - Ted Stevens Anchorage International - ANC - USA + Ann Arbor (MI) - ARB - USA + Anniston (AL) - ANB - USA + Appelton/Neenah/Menasha (WI) - ATW - USA + Asheville (NC) - AVL - USA + Aspen, (CO) - Aspen-Pitkin County Airport - ASE - USA + Athens (GA) - AHN - USA + Athens (OH) - ATO - USA + Atlanta (GA) - Hartsfield Atlanta International Airport - ATL - USA + Atlantic City (NJ) - Atlantic City International - ACY - USA + Augusta (GA) - AGS - USA + Augusta (ME) - Augusta State Airport - AUG - USA + Austin (TX) - Austin-Bergstrom Airport - AUS - USA + Bakersfield (CA) - BFL - USA + Baltimore (MD) - Washington International Airport - BWI - USA + Bangor (ME) - BGR - USA + Baton Rouge (LA) - Baton Rouge Metropolitan Airport - BTR - USA + Beaumont/Pt. Arthur (TX) - BPT - USA + Beckley (WV) - BKW - USA + Bellingham (WA) - BLI - USA + Bemidji (MN) - BJI - USA + Benton Harbour (MI) - BEH - USA + Bethel (AK) - BET - USA + Billings (MT) - BIL - USA + Birmingham (AL) - BHM - USA + Bismarck (ND) - Bismarck Municipal Airport - BIS - USA + Bloomington (IL) - BMI - USA + Bloomington (IN) - BMG - USA + Bluefield (WV) - BLF - USA + Boise (ID) - Boise Air Terminal - BOI - USA + Borrego Springs (CA) - BXS - USA + Boston (MA) - General Edward Lawrence Logan - BOS - USA + Bozeman (MT) - BZN - USA + Bradford/Warren (PA) /Olean (NY) - BFD - USA + Brainerd (MN) - BRD - USA + Bridgeport (CT) - BDR - USA + Brookings (SD) - BKX - USA + Brunswick (GA) - BQK - USA + Buffalo/Niagara Falls (NY) - BUF - USA + Bullhead City (NV) - BHC - USA + Burbank (CA) - BUR - USA + Burlington IA - BRL - USA + Burlington (VT) - BTV - USA + Butte (MT) - BTM - USA + Carlsbad (CA) - CLD - USA + Carson City (NV) - CSN - USA + Casper (WY) - CPR - USA + Cedar City (UT) - CDC - USA + Cedar Rapids IA - CID - USA + Champaign (IL) - CMI - USA + Charleston (SC) - CHS - USA + Charleston (WV) - Yeager Airport - CRW - USA + Charlotte (NC) - CLT - USA + Charlottesville (VA) - CHO - USA + Chattanooga (TN) - CHA - USA + Cheyenne (WY) - Cheyenne Regional Airport - CYS - USA + Chicago (IL), Midway - MDW - USA + Chicago (IL), O\'Hare International Airport - ORD - USA + Chicago (IL) - CHI - USA + Chico (CA) - CIC - USA + Cincinnati (OH) - Cincinnati/Northern Kentucky Int\'l - CVG - USA + Clarksburg (WV) - CKB - USA + Cleveland (OH) , Burke Lakefront - BKL - USA + Cleveland (OH) , Hopkins - CLE - USA + Cody/Powell/Yellowstone (WY) - COD - USA + Coffmann Cove (AK) - KCC - USA + College Station/Bryan (TX) - CLL - USA + Colorado Springs (CO) - COS - USA + Columbia (SC) - Columbia Metropolitan Airport - CAE - USA + Columbus (GA) - CSG - USA + Columbus (OH) - Port Columbus International Airport - CMH - USA + Concord (CA) - Buchanan Field - CCR - USA + Concord (NH) - Concord Municipal Airport - CON - USA + Cordova (AK) - CDV - USA + Corpus Christi (TX) - CRP - USA + Craig (AK) - CGA - USA + Crescent City (CA) - CEC - USA + Dallas (TX) , Love Field - DAL - USA + Dallas/Ft. Worth (TX) - Dallas/Fort Worth International - DFW - USA + Danville (VA) - DAN - USA + Dayton (OH) - DAY - USA + Daytona Beach (FL) - DAB - USA + Decatur (IL) - DEC - USA + Denver (CO) - Denver International Airport - DEN - USA + Des Moines (IA) - Des Moines International Airport - DSM - USA + Detroit (MI) , Coleman A. Young Municipal - DET - USA + Detroit (MI) , Wayne County Airport - DTW - USA + Detroit (MI) , Metropolitan Area - DTT - USA + Devils Lake (ND) - DVL - USA + Dillingham (AK) - DLG - USA + Dothan (AL) - DHN - USA + Dubois (PA) - DUJ - USA + Dubuque IA - DBQ - USA + Duluth (MN) /Superior (WI) - DLH - USA + Durango (CO) - DRO - USA + Dutch Harbor (AK) - DUT - USA + Eau Clarie (WI) - EAU - USA + Elkhart (IN) - EKI - USA + Elko (NV) - EKO - USA + Elmira (NY) - ELM - USA + El Paso (TX) - El Paso International Airport - ELP - USA + Ely (NV) - ELY - USA + Erie (PA) - ERI - USA + Escanaba (MI) - ESC - USA + Eugene (OR) - EUG - USA + Eureka (CA) - ACV - USA + Evansville (IN) - EVV - USA + Fairbanks (AK) - FAI - USA + Fargo (ND) (MN) - FAR - USA + Farmington (NM) - FMN - USA + Fayetteville (AR) - FYV - USA + Fayetteville/Ft. Bragg (NC) - FAY - USA + Flagstaff (AZ) - FLG - USA + Flint (MI) - FNT - USA + Florence (SC) - FLO - USA + Fort Dodge IA - FOD - USA + Fort Huachuca/Sierra Vista (AZ) - FHU - USA + Fort Lauderdale/Hollywood (FL) - FLL - USA + Fort Myers, Metropolitan Area (FL) - FMY - USA + Fort Myers, Southwest Florida Reg (FL) - RSW - USA + Fort Riley (KS) - Marshall AAF - FRI - USA + Fort Smith (AR) - FSM - USA + Fort Walton Beach (FL) - VPS - USA + Fort Wayne (IN) - FWA - USA + Fort Worth (TX) - Dallas/Fort Worth International Airport - DFW - USA + Franklin/Oil City (PA) - FKL - USA + Fresno (CA) - FAT - USA + Gadsden (AL) - GAD - USA + Gainesville (FL) - GNV - USA + Gilette (WY) - GCC - USA + Glasgow (MT) - GGW - USA + Glendive (MT) - GDV - USA + Grand Canyon (AZ) - GCN - USA + Grand Forks (ND) - GFK - USA + Grand Junction (CO) - GJT - USA + Grand Rapids (MI) - GRR - USA + Grand Rapids (MN) - GPZ - USA + Great Falls (MT) - GTF - USA + Green Bay (WI) - GRB - USA + Greenbrier/Lewisburg (WV) - LWB - USA + Greensboro/Winston Salem (NC) - GSO - USA + Greenville (MS) - GLH - USA + Greenville (NC) - PGV - USA + Greenville/Spartanburg (SC) - GSP - USA + Groton/New London (CT) - GON - USA + Gulfport/Biloxi (MS) - GPT - USA + Gunnison/Crested Butte (CO) - GUC - USA + Haines (AK) - HNS - USA + Hancock (MI) - CMX - USA + Harlingen/South Padre Island (TX) - HRL - USA + Harrisburg (PA) - Harrisburg Skyport - HAR - USA + Harrisburg (PA) - Harrisburg International - MDT - USA + Hartford (CT) /Springfield (MA) - BDL - USA + Havre (MT) - HVR - USA + Helena (MT) - HLN - USA + Hibbing (MN) - HIB - USA + Hickory (NC) - HKY - USA + Hilo (HI) - ITO - USA + Hilton Head Island (SC) - HHH - USA + Homer (AK) - HOM - USA + Honolulu (HI) - Honolulu International Airport - HNL - USA + Hoonah (AK) - HNH - USA + Houston (TX) , Hobby - HOU - USA + Houston, TX - George Bush Intercontinental Airport - IAH - USA + Huntington (WV) - HTS - USA + Huntsville (AL) - HSV - USA + Huron (SD) - HON - USA + Hyannis (MA) - HYA - USA + Hydaburg (AK) - HYG - USA + Idaho Falls (ID) - IDA - USA + Iliamna (AK) - ILI - USA + Imperial (CA) - IPL - USA + Indianapolis (IN) International - IND - USA + International Falls (MN) - INL - USA + Inykern (CA) - IYK - USA + Ithaca/Cortland (NY) - ITH - USA + Jackson Hole (WY) - JAC - USA + Jackson (MI) - Reynolds Municipal - JXN - USA + Jackson,  MN   - MJQ - USA + Jackson (MS) - Jackson Internationall - JAN - USA + Jackson (MS) - Hawkins Field    - HKS - USA + Jackson (TN) - Mckellar - MKL - USA + Jackson Hole (WY) - JAC - USA + Jacksonville (AR)  Little Rock AFB    - LRF - USA + Jacksonville (FL) - Cecil Field NAS    - NZC - USA + Jacksonville (FL) Jacksonville NAS    - NIP - USA + Jacksonville (FL) - International - JAX - USA + Jacksonville (FL) - Craig Municipal    - CRG - USA + Jacksonville (IL) - Municipal Airport - IJX - USA + Jacksonville (NC) - OAJ - USA + Jacksonville (TX) - JKV - USA + Jamestown (ND) - JMS - USA + Jamestown (NY) - JHW - USA + Janesville (WI) - Rock County - JVL - USA + Jefferson City (MO) - Jefferson Memorial - JEF - USA + Johnson City (NY) - Binghamton/Endicott/Johnson - BGM - USA + Johnston Island - JON - USA + Johnstown (PA) - JST - USA + Jonesboro (AR)  Jonesboro Airport - JBR - USA + Joplin (MO) - JLN - USA + Juneau (AK) - Juneau International Airport - JNU - USA + Kahului (HI) - OGG - USA + Kalamazoo/Battle Creek (MI) - AZO - USA + Kalispell (MT) - FCA - USA + Kamuela (HI) - MUE - USA + Kansas City (MO) - Kansas City International Airport - MCI - USA + Kapalua West (HI) - JHM - USA + Kaunakakai (HI) - MKK - USA + Kenai (AK) - ENA - USA + Ketchikan (AK) - KTN - USA + Key West (FL) - EYW - USA + Killeem (TX) - ILE - USA + King Salomon (AK) - AKN - USA + Kingston (NC) - ISO - USA + Klamath Fall (OR) - LMT - USA + Klawock (AK) - KLW - USA + Knoxville (TN) - TYS - USA + Kodiak (AK) - ADQ - USA + Kona (HI) - KOA - USA + Kotzbue (AK) - OTZ - USA + Labouchere Bay (AK) - WLB - USA + La Crosse (WI) - LSE - USA + Lafayette (IN) - LAF - USA + Lafayette, La - LFT - USA + Lake Charles (LA) - LCH - USA + Lake Havasu City (AZ) - HII - USA + Lake Tahoe (CA) - TVL - USA + Lanai City (HI) - LNY - USA + Lancaster (PA) - LNS - USA + Lansing (MI) - LAN - USA + Laramie (WY) - LAR - USA + Laredo (TX) - LRD - USA + Las Vegas (NV) - LAS - USA + Latrobe (PA) - LBE - USA + Laurel/Hattisburg (MS) - PIB - USA + Lawton (OK) - LAW - USA + Lebanon (NH) - LEB - USA + Lewiston (ID) - LWS - USA + Lewistown (MT) - LWT - USA + Lexington (KY) - LEX - USA + Lihue (HI) - LIH - USA + Lincoln (NE) - LNK - USA + Little Rock (AR) - LIT - USA + Long Beach (CA) - LGB - USA + Long Island (AK) - LIJ - USA + Long Island, Islip (NY) - Mac Arthur - ISP - USA + Longview/Kilgore (TX) - GGG - USA + Los Angeles (CA) - International - LAX - USA + Louisville (KY) - SDF - USA + Lubbock (TX) - LBB - USA + Lynchburg (VA) - LYH - USA + Lyons (KS) - Rice County Municipal - LYO - USA + Macon (GA) - MCN - USA + Madison (WI) - MSN - USA + Manchester (NH) - MHT - USA + Marathon (FL) - MTH - USA + Marquette (MI) - MQT - USA + Martha\'s Vineyard (MA) - MVY - USA + Martinsburg (WV) - MRB - USA + Mason City IA - MCW - USA + Mattoon (IL) - MTO - USA + McAllen (TX) - MFE - USA + Medford (OR) - MFR - USA + Melbourne (FL) - MLB - USA + Memphis (TN) - MEM - USA + Merced (CA) - MCE - USA + Meridian (MS) - MEI - USA + Metlakatla (AK) - MTM - USA + Miami (FL) - MIA - USA + Midland/Odessa (TX) - MAF - USA + Miles City (MT) - MLS - USA + Milwaukee (WI) - MKE - USA + Minneapolis - St. Paul International Airport (MN) - MSP - USA + Minot (ND) - MOT - USA + Missula (MT) - MSO - USA + Mitchell (SD) - MHE - USA + Mobile (AL) - Pascagoula (MS) - MOB - USA + Modesto (CA) - MOD - USA + Moline/Quad Cities (IL) - MLI - USA + Monroe, La - MLU - USA + Monterey (CA) - MRY - USA + Montgomery (AL) - MGM - USA + Montrose/Tellruide (CO) - MTJ - USA + Morgantown (WV) - MGW - USA + Moses Lake (WA) - MWH - USA + Mt. McKinley (AK) - MCL - USA + Muscle Shoals (AL) - MSL - USA + Muskegon (MI) - MKG - USA + Myrtle Beach (SC) - Myrtle Beach AFB - MYR - USA + Myrtle Beach (SC) - Grand Strand Airport - CRE - USA + Nantucket (MA) - ACK - USA + Naples (FL) - APF - USA + Nashville (TN) - BNA - USA + New Bern (NC) - EWN - USA + New Haven (CT) - HVN - USA + New Orleans, La - MSY - USA + New York - John F. Kennedy (NY) - JFK - USA + New York - LaGuardia (NY) - LGA - USA + New York - Newark (NJ) - EWR - USA + New York (NY) - NYC - USA + Newburgh (NY) - SWF - USA + Newport News/Williamsburg (VA) - PHF - USA + Niagara Falls International - IAG - USA + Nome (AK) - OME - USA + Norfolk/Virginia Beach (VA) - ORF - USA + North Bend (OR) - OTH - USA + Oakland (CA) - OAK - USA + Oklahoma City (OK) - Will Rogers World - OKC - USA + Omaha (NE) - OMA - USA + Ontario (CA) - ONT - USA + Orange County (Santa Ana) (CA) - SNA - USA + Orlando Metropolitan Area (FL) - ORL - USA + Orlando - International Airport (FL) - MCO - USA + Oshkosh (WI) - OSH - USA + Owensboro (KY) - OWB - USA + Oxnard (CA) - OXR - USA + Paducah (KY) - PAH - USA + Page/Lake Powell (AZ) - PGA - USA + Pakersburg (WV) /Marietta (OH) - PKB - USA + Palmdale/Lancaster (CA) - PMD - USA + Palm Springs (CA) - PSP - USA + Panama City (FL) - PFN - USA + Pasco (WA) - PSC - USA + Pellston (MI) - PLN - USA + Pendelton (OR) - PDT - USA + Pensacola (FL) - PNS - USA + Peoria/Bloomington (IL) - PIA - USA + Petersburg (AK) - PSG - USA + Philadelphia (PA) - International - PHL - USA + Phoenix (AZ) - Sky Harbor International - PHX - USA + Pierre (SD) - PIR - USA + Pittsburgh International Airport (PA) - PIT - USA + Plattsburgh (NY) - PLB - USA + Pocatello (ID) - PIH - USA + Port Angeles (WA) - CLM - USA + Portland (ME) - PWM - USA + Portland International (OR) - PDX - USA + Poughkeepsie (NY) - POU - USA + Presque Island (ME) - PQI - USA + Providence (RI) - PVD - USA + Prudhoe Bay (AK) - SCC - USA + Pueblo (CO) - PUB - USA + Pullman (WA) - PUW - USA + Quincy (IL) - UIN - USA + Raleigh/Durham (NC) - RDU - USA + Rapid City (SD) - RAP - USA + Reading (PA) - RDG - USA + Redding (CA) - RDD - USA + Redmond (OR) - RDM - USA + Reno (NV) - RNO - USA + Rhinelander (WI) - RHI - USA + Richmond (VA) - RIC - USA + Roanoke (VA) - ROA - USA + Rochester (MN) - RST - USA + Rochester (NY) - ROC - USA + Rock Springs (WY) - RKS - USA + Rockford (IL) - RFD - USA + Rockland (ME) - RKD - USA + Rocky Mount - Wilson (NC) - RWI - USA + Sacramento (CA) - SMF - USA + Saginaw/Bay City/Midland (MI) - MBS - USA + Salem (OR) - SLE - USA + Salinas (CA) - SNS - USA + Salisbury (MD) - SBY - USA + Salt Lake City (UT) - SLC - USA + San Angelo (TX) - SJT - USA + San Antonio (TX) - SAT - USA + San Diego - Lindberg Field International (CA) - SAN - USA + San Francisco - International Airport, SA - SFO - USA + San Jose (CA) - SJC - USA + San Luis Obisco (CA) - SBP - USA + Santa Ana - John Wayne Airport (CA) - SNA - USA + Santa Barbara (CA) - SBA - USA + Santa Maria (CA) - SMX - USA + Santa Rosa (CA) - STS - USA + Sarasota/Bradenton (FL) - SRQ - USA + Savannah (GA) - SAV - USA + Scottsdale (AZ) - SCF - USA + Seattle/Tacoma (WA) - SEA - USA + Shenandoah Valley/Stauton (VA) - SHD - USA + Sheridan (WY) - SHR - USA + Shreveport, La - SHV - USA + Sidney (MT) - SDY - USA + Sioux City IA - SUX - USA + Sioux Falls (SD) - FSD - USA + Sitka (AK) - SIT - USA + Skagway (AK) - SGY - USA + South Bend (IN) - SBN - USA + Spokane (WA) - GEG - USA + Springfield (IL) - SPI - USA + Springfield (MO) - SGF - USA + St. George (UT) - SGU - USA + St. Louis (MO) Lambert–St. Louis International Airport - STL - USA + State College/Belefonte (PA) - SCE - USA + Steamboat Springs (CO) - HDN - USA + Stockton (CA) - SCK - USA + Sun Valley (ID) - SUN - USA + Syracuse (NY) - SYR - USA + Talkeetna (AK) - TKA - USA + Tallahassee (FL) - TLH - USA + Tampa - International (FL) - TPA - USA + Telluride (CO) - TEX - USA + Terre Haute (IN) - HUF - USA + Texarkana (AR) - TXK - USA + Thief River Falls (MN) - TVF - USA + Thorne Bay (AK) - KTB - USA + Toledo (OH) - TOL - USA + Traverse City (MI) - TVC - USA + Trenton/Princeton (NJ) - TTN - USA + Tri-Cities Regional (TN) /VA - TRI - USA + Tucson (AZ) - TUS - USA + Tulepo (MS) - TUP - USA + Tulsa (OK) - TUL - USA + Tuscaloosa (AL) - TCL - USA + Twin Falls (ID) - TWF - USA + Tyler (TX) - TYR - USA + Ukiah (CA) - UKI - USA + Unalakleet (AK) - UNK - USA + Upolu Point (HI) - UPP - USA + Utica (NY) - Oneida County Airport - UCA - USA + Vail (CO) - EGE - USA + Valdez (AK) - VDZ - USA + Valdosta (GA) - VLD - USA + Vernal (UT) - VEL - USA + Vero Beach/Ft. Pierce (FL) - VRB - USA + Visalia (CA) - VIS - USA + Waco (TX) - ACT - USA + Walla Walla (WA) - ALW - USA + Washington DC - Baltimore Washington International - BWI - USA + Washington DC - Dulles International - IAD - USA + Washington DC - Ronald Reagan National - DCA - USA + Washington DC - WAS - USA + Waterloo IA - ALO - USA + Watertown (SD) - ATY - USA + Wausau/Stevens Point (WI) - CWA + Wenatchee (WA) - EAT - USA + West Palm Beach (FL) - PBI - USA + West Yellowstone (MT) - WYS - USA + White Plains (NY) - HPN - USA + Wichita Falls (TX) - SPS - USA + Wichita (KS) - ICT - USA + Wilkes Barre/Scranton (PA) - AVP - USA + Williamsport (PA) - IPT - USA + Williston (ND) - ISL - USA + Wilmington (NC) - ILM - USA + Wolf Point (MT) - OLF - USA + Worcester (MA) - ORH - USA + Worland (WY) - WRL - USA + Wrangell (AK) - WRG - USA + Yakima (WA) - YKM - USA + Yakutat (AK) - YAK - USA + Yuma (AZ) - YUM - USA + Alexandria - Esler Field - ESF - USA + Samarkand - Samarkand International Airport - SKD - Uzbekistan + Tashkent - International - TAS - Uzbekistan + Termez (Termes) - TMZ - Uzbekistan + Urgench - UGC - Uzbekistan + Port Vila - VLI - Vanuatu + Santo - SON - Vanuatu + Ulei - ULB - Vanuatu + Barcelona - BLA - Venezuela + Caracas - Simón Bolívar International Airport - CCS - Venezuela + Ciudad Guayana - CGU - Venezuela + Maracaibo - La Chinita - MAR - Venezuela + Margerita - PMV - Venezuela + Puerto Ordaz - PZO - Venezuela + Uriman - URM - Venezuela + Valencia - VLN - Venezuela + Ho Chi Minh City (Saigon) - Tan Son Nhat International - SGN - Vietnam + Hue - Phu Bai - HUI - Vietnam + Saigon (Ho Chi Minh City) - SGN - Vietnam + Hanoi - Noi Bai International Airport - HAN - Vietnam + Beef Island - Terrance B. Lettsome - EIS - British Virgin Islands + Virgin Gorda - VIJ - British Virgin Islands + St. Croix - STX - US Virgin Islands + St. Thomas - STT - US Virgin Islands + Futuna - FUT - Wallis and Futuna Islands + Wallis - WLS - Wallis and Futuna Islands + Aden - Aden International Airport - ADE - Yemen + Sanaa (Sana\'a) - Sana\'a International - SAH - Yemen + Chipata - CIP - Zambia + Kitwe - KIW - Zambia + Lusaka - Lusaka International Airport - LUN - Zambia + Mfuwe - MFU - Zambia + N\'Dola - NLA - Zambia + Buffalo Range - BFO - Zimbabwe + Bulawayo - BUQ - Zimbabwe + Gweru - GWE - Zimbabwe + Harare - Harare International Airport - HRE - Zimbabwe + Hwange National Park - HWN - Zimbabwe + Masvingo - MVZ - Zimbabwe + Salisbury - SAY - Zimbabwe + Victoria Falls - VFA - Zimbabwe + Isle of Man - IOM - United Kingdom + + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..98a4c73 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/app/src/release/res/values/google_maps_api.xml b/app/src/release/res/values/google_maps_api.xml new file mode 100644 index 0000000..1ef79e9 --- /dev/null +++ b/app/src/release/res/values/google_maps_api.xml @@ -0,0 +1,20 @@ + + + YOUR_KEY_HERE + diff --git a/app/src/test/java/com/appttude/h_mal/exchangemap/ExampleUnitTest.java b/app/src/test/java/com/appttude/h_mal/exchangemap/ExampleUnitTest.java new file mode 100644 index 0000000..ab5f563 --- /dev/null +++ b/app/src/test/java/com/appttude/h_mal/exchangemap/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package com.appttude.h_mal.exchangemap; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..8d3ef8e --- /dev/null +++ b/build.gradle @@ -0,0 +1,27 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + + repositories { + google() + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:3.2.1' + + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..82618ce --- /dev/null +++ b/gradle.properties @@ -0,0 +1,15 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f6b961fd5a86aa5fbfe90f707c3138408be7c718 GIT binary patch literal 54329 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

<5G2M1WZP5 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 F{|7XC?P&l2 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..9a4163a --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..cccdd3d --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..f955316 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..e7b4def --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include ':app'