aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/AndroidManifest.xml10
-rw-r--r--main/lint.xml2
-rw-r--r--main/project/attributes/iconlist.txt191
-rwxr-xr-xmain/project/attributes/listEnStrings.sh23
-rwxr-xr-xmain/project/attributes/makeEnums.sh27
-rwxr-xr-x[-rw-r--r--]main/project/attributes/makeGpxIdArray.sh0
-rwxr-xr-x[-rw-r--r--]main/project/attributes/makehtmlpage1res.sh25
-rwxr-xr-x[-rw-r--r--]main/project/attributes/makeicons1res.sh9
-rwxr-xr-xmain/project/attributes/nounwork.sh20
-rw-r--r--main/project/attributes/ocicons.html56
-rw-r--r--main/project/attributes/readme.txt64
-rw-r--r--main/project/attributes/svgs/abandonedbuilding.svg48
-rw-r--r--main/project/attributes/svgs/aircraft.svg48
-rw-r--r--main/project/attributes/svgs/all_seasons.svg62
-rw-r--r--main/project/attributes/svgs/arithmetic.svg61
-rw-r--r--main/project/attributes/svgs/ask_owner.svg76
-rw-r--r--main/project/attributes/svgs/available.svg2
-rw-r--r--main/project/attributes/svgs/breeding.svg55
-rw-r--r--main/project/attributes/svgs/cave.svg76
-rw-r--r--main/project/attributes/svgs/compass.svg143
-rw-r--r--main/project/attributes/svgs/cow.svg2
-rw-r--r--main/project/attributes/svgs/danger.svg2
-rw-r--r--main/project/attributes/svgs/day.svg98
-rw-r--r--main/project/attributes/svgs/fee.svg2
-rw-r--r--main/project/attributes/svgs/field_puzzle.svg51
-rw-r--r--main/project/attributes/svgs/firstaid.svg12
-rw-r--r--main/project/attributes/svgs/flashlight.svg143
-rw-r--r--main/project/attributes/svgs/frontyard.svg2
-rw-r--r--main/project/attributes/svgs/hike_long.svg2
-rw-r--r--main/project/attributes/svgs/hike_med.svg2
-rw-r--r--main/project/attributes/svgs/hike_short.svg2
-rw-r--r--main/project/attributes/svgs/hills.svg514
-rw-r--r--main/project/attributes/svgs/hunting.svg57
-rw-r--r--main/project/attributes/svgs/in_water.svg91
-rw-r--r--main/project/attributes/svgs/inside.svg102
-rw-r--r--main/project/attributes/svgs/investigation.svg72
-rw-r--r--main/project/attributes/svgs/kids.svg99
-rw-r--r--main/project/attributes/svgs/landf.svg2
-rw-r--r--main/project/attributes/svgs/letterbox.svg64
-rw-r--r--main/project/attributes/svgs/link_only.svg74
-rw-r--r--main/project/attributes/svgs/maintenance.svg57
-rw-r--r--main/project/attributes/svgs/moving_target.svg87
-rw-r--r--main/project/attributes/svgs/nightcache.svg75
-rw-r--r--main/project/attributes/svgs/no_gps.svg74
-rw-r--r--main/project/attributes/svgs/oc_only.svg83
-rw-r--r--main/project/attributes/svgs/onehour.svg72
-rw-r--r--main/project/attributes/svgs/other_cache.svg75
-rw-r--r--main/project/attributes/svgs/overnight.svg81
-rw-r--r--main/project/attributes/svgs/parkngrab.svg75
-rw-r--r--main/project/attributes/svgs/partnership.svg173
-rw-r--r--main/project/attributes/svgs/poi.svg60
-rw-r--r--main/project/attributes/svgs/poisonoak.svg108
-rw-r--r--main/project/attributes/svgs/puzzle.svg179
-rw-r--r--main/project/attributes/svgs/railway.svg53
-rw-r--r--main/project/attributes/svgs/s_tool.svg66
-rw-r--r--main/project/attributes/svgs/seasonal.svg2
-rw-r--r--main/project/attributes/svgs/snow_proof.svg114
-rw-r--r--main/project/attributes/svgs/specific_times.svg73
-rw-r--r--main/project/attributes/svgs/stealth.svg2
-rw-r--r--main/project/attributes/svgs/swamp.svg522
-rw-r--r--main/project/attributes/svgs/syringe.svg58
-rw-r--r--main/project/attributes/svgs/teamwork.svg105
-rw-r--r--main/project/attributes/svgs/thorn.svg2
-rw-r--r--main/project/attributes/svgs/ticks.svg2
-rw-r--r--main/project/attributes/svgs/tide.svg52
-rw-r--r--main/project/attributes/svgs/treeclimbing.svg45
-rw-r--r--main/project/attributes/svgs/unknown.svg (renamed from main/project/attributes/svgs/icon_not_found.svg)0
-rw-r--r--main/project/attributes/svgs/uv.svg2
-rw-r--r--main/project/attributes/svgs/webcam.svg60
-rw-r--r--main/project/attributes/svgs/wirelessbeacon.svg32
-rw-r--r--main/res/drawable-mdpi/attribute__strikethru.pngbin354 -> 309 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_abandonedbuilding.pngbin1084 -> 1045 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_aircraft.pngbin0 -> 1004 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_all_seasons.pngbin0 -> 1237 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_arithmetic.pngbin0 -> 1135 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_ask_owner.pngbin0 -> 1286 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_available.pngbin1048 -> 1025 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_bicycles.pngbin1266 -> 1239 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_boat.pngbin860 -> 852 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_breeding.pngbin0 -> 861 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_campfires.pngbin1152 -> 1130 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_camping.pngbin919 -> 885 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_cave.pngbin0 -> 1454 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_cliff.pngbin1090 -> 1074 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_climbing.pngbin1286 -> 1275 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_compass.pngbin0 -> 1439 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_cow.pngbin1027 -> 1006 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_danger.pngbin1204 -> 1165 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_dangerousanimals.pngbin1360 -> 1361 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_day.pngbin0 -> 1229 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_dogs.pngbin1156 -> 1129 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_fee.pngbin1072 -> 1062 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_field_puzzle.pngbin1445 -> 1236 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_firstaid.pngbin565 -> 663 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_flashlight.pngbin827 -> 752 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_food.pngbin764 -> 742 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_frontyard.pngbin1010 -> 987 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_fuel.pngbin855 -> 832 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_hike_long.pngbin1257 -> 1219 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_hike_med.pngbin1261 -> 1221 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_hike_short.pngbin1141 -> 1148 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_hiking.pngbin1141 -> 1121 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_hills.pngbin0 -> 804 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_horses.pngbin1120 -> 1091 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_hunting.pngbin1324 -> 1259 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_icon_not_found.pngbin1362 -> 0 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_in_water.pngbin0 -> 1276 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_inside.pngbin0 -> 1157 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_investigation.pngbin0 -> 1175 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_jeeps.pngbin1076 -> 1044 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_kids.pngbin1141 -> 1320 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_landf.pngbin1252 -> 1250 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_letterbox.pngbin0 -> 935 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_link_only.pngbin0 -> 1483 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_maintenance.pngbin0 -> 657 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_mine.pngbin1192 -> 1179 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_motorcycles.pngbin1151 -> 1122 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_moving_target.pngbin0 -> 1200 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_night.pngbin1196 -> 1152 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_nightcache.pngbin1278 -> 1207 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_no_gps.pngbin0 -> 1484 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_oc_only.pngbin0 -> 1468 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_onehour.pngbin1307 -> 1329 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_other_cache.pngbin0 -> 1121 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_overnight.pngbin0 -> 751 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_parking.pngbin820 -> 809 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_parkngrab.pngbin1299 -> 1213 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_partnership.pngbin1228 -> 998 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_phone.pngbin990 -> 992 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_picnic.pngbin986 -> 965 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_poi.pngbin0 -> 1090 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_poisonoak.pngbin1239 -> 941 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_public.pngbin1066 -> 1044 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_puzzle.pngbin0 -> 1148 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_quads.pngbin1218 -> 1208 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_railway.pngbin0 -> 965 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_rappelling.pngbin1166 -> 1140 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_restrooms.pngbin1092 -> 1090 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_rv.pngbin961 -> 945 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_s_tool.pngbin1168 -> 1365 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_scenic.pngbin888 -> 883 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_scuba.pngbin1072 -> 1039 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_seasonal.pngbin1251 -> 1228 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_skiis.pngbin1292 -> 1260 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_snow_proof.pngbin0 -> 1425 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_snowmobiles.pngbin993 -> 989 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_snowshoes.pngbin1220 -> 1191 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_specific_times.pngbin0 -> 1287 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_stealth.pngbin1041 -> 1022 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_stroller.pngbin1185 -> 1172 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_swamp.pngbin0 -> 1109 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_swimming.pngbin1121 -> 1022 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_syringe.pngbin0 -> 1027 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_teamwork.pngbin1086 -> 1208 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_thorn.pngbin1259 -> 1257 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_ticks.pngbin1263 -> 1251 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_tide.pngbin0 -> 1217 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_touristok.pngbin800 -> 806 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_treeclimbing.pngbin851 -> 901 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_unknown.pngbin0 -> 1304 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_uv.pngbin1037 -> 1006 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_wading.pngbin954 -> 957 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_water.pngbin1129 -> 1105 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_webcam.pngbin0 -> 668 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_wheelchair.pngbin1167 -> 1144 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_winter.pngbin1439 -> 1409 bytes
-rw-r--r--main/res/drawable-mdpi/attribute_wirelessbeacon.pngbin1396 -> 1383 bytes
-rw-r--r--main/res/layout-land/coords.xml1
-rw-r--r--main/res/layout-land/navigate.xml4
-rw-r--r--main/res/layout/about.xml205
-rw-r--r--main/res/layout/about_activity.xml255
-rw-r--r--main/res/layout/addresses.xml3
-rw-r--r--main/res/layout/addresses_item.xml65
-rw-r--r--main/res/layout/attribute_descriptions.xml28
-rw-r--r--main/res/layout/cache_information_item.xml63
-rw-r--r--main/res/layout/cache_layout.xml43
-rw-r--r--main/res/layout/caches.xml3
-rw-r--r--main/res/layout/caches_item.xml342
-rw-r--r--main/res/layout/cacheview.xml1
-rw-r--r--main/res/layout/cacheview_details.xml36
-rw-r--r--main/res/layout/coords.xml1
-rw-r--r--main/res/layout/edit_waypoint_activity.xml1
-rw-r--r--main/res/layout/editor.xml3
-rw-r--r--main/res/layout/fieldnote_export_dialog.xml10
-rw-r--r--main/res/layout/filter_bar.xml3
-rw-r--r--main/res/layout/gpx.xml3
-rw-r--r--main/res/layout/gpx_export_dialog.xml10
-rw-r--r--main/res/layout/gpx_item.xml67
-rw-r--r--main/res/layout/init.xml58
-rw-r--r--main/res/layout/livemapinfo.xml67
-rw-r--r--main/res/layout/main.xml451
-rw-r--r--main/res/layout/map_google.xml3
-rw-r--r--main/res/layout/map_mapsforge.xml3
-rw-r--r--main/res/layout/map_mapsforge_old.xml3
-rw-r--r--main/res/layout/map_static.xml3
-rw-r--r--main/res/layout/mapfile_item.xml67
-rw-r--r--main/res/layout/navigate.xml218
-rw-r--r--main/res/layout/point.xml1
-rw-r--r--main/res/layout/popup.xml150
-rw-r--r--main/res/layout/reset_cache_coords_dialog.xml40
-rw-r--r--main/res/layout/search.xml7
-rw-r--r--main/res/layout/simple_dir_chooser.xml3
-rw-r--r--main/res/layout/simple_dir_item.xml37
-rw-r--r--main/res/layout/simple_list_item_1.xml9
-rw-r--r--main/res/layout/simple_way_point.xml75
-rw-r--r--main/res/layout/spoilers.xml1
-rw-r--r--main/res/layout/status.xml23
-rw-r--r--main/res/layout/touch.xml4
-rw-r--r--main/res/layout/trackable_activity.xml1
-rw-r--r--main/res/layout/twitter_authorization_activity.xml (renamed from main/res/layout/auth.xml)1
-rw-r--r--main/res/layout/useful_apps.xml3
-rw-r--r--main/res/layout/useful_apps_item.xml4
-rw-r--r--main/res/layout/visit.xml4
-rw-r--r--main/res/layout/visit_trackable.xml108
-rw-r--r--main/res/layout/waypoint_popup.xml3
-rw-r--r--main/res/values-cs/strings.xml553
-rw-r--r--main/res/values-da/strings.xml4
-rw-r--r--main/res/values-de/strings.xml116
-rw-r--r--main/res/values-es/strings.xml7
-rw-r--r--main/res/values-fr/strings.xml12
-rw-r--r--main/res/values-hu/strings.xml7
-rw-r--r--main/res/values-it/strings.xml16
-rw-r--r--main/res/values-ja/strings.xml149
-rw-r--r--main/res/values-nb/strings.xml5
-rw-r--r--main/res/values-nl/strings.xml9
-rw-r--r--main/res/values-pl/strings.xml12
-rw-r--r--main/res/values-pt/strings.xml7
-rw-r--r--main/res/values-sk/strings.xml10
-rw-r--r--main/res/values-sv/strings.xml16
-rw-r--r--main/res/values/strings.xml97
-rw-r--r--main/res/values/strings_not_translatable.xml19
-rw-r--r--main/res/values/themes.xml33
-rw-r--r--main/src/android/support/v4/app/FragmentListActivity.java2
-rw-r--r--main/src/cgeo/geocaching/AboutActivity.java2
-rw-r--r--main/src/cgeo/geocaching/AbstractLoggingActivity.java2
-rw-r--r--main/src/cgeo/geocaching/AbstractPopupActivity.java8
-rw-r--r--main/src/cgeo/geocaching/AddressListActivity.java (renamed from main/src/cgeo/geocaching/AdressListActivity.java)10
-rw-r--r--main/src/cgeo/geocaching/CacheCache.java16
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java350
-rw-r--r--main/src/cgeo/geocaching/CachePopup.java70
-rw-r--r--main/src/cgeo/geocaching/EditWaypointActivity.java215
-rw-r--r--main/src/cgeo/geocaching/Geocache.java (renamed from main/src/cgeo/geocaching/cgCache.java)197
-rw-r--r--main/src/cgeo/geocaching/ICache.java5
-rw-r--r--main/src/cgeo/geocaching/IWaypoint.java8
-rw-r--r--main/src/cgeo/geocaching/Intents.java28
-rw-r--r--main/src/cgeo/geocaching/LiveMapInfo.java52
-rw-r--r--main/src/cgeo/geocaching/LogTrackableActivity.java16
-rw-r--r--main/src/cgeo/geocaching/SearchActivity.java21
-rw-r--r--main/src/cgeo/geocaching/SearchResult.java28
-rw-r--r--main/src/cgeo/geocaching/Settings.java24
-rw-r--r--main/src/cgeo/geocaching/SettingsActivity.java29
-rw-r--r--main/src/cgeo/geocaching/StaticMapsActivity.java2
-rw-r--r--main/src/cgeo/geocaching/StaticMapsProvider.java14
-rw-r--r--main/src/cgeo/geocaching/StoredList.java22
-rw-r--r--main/src/cgeo/geocaching/TrackableActivity.java20
-rw-r--r--main/src/cgeo/geocaching/VisitCacheActivity.java12
-rw-r--r--main/src/cgeo/geocaching/Waypoint.java46
-rw-r--r--main/src/cgeo/geocaching/WaypointPopup.java9
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractViewPagerActivity.java10
-rw-r--r--main/src/cgeo/geocaching/activity/ActivityMixin.java16
-rw-r--r--main/src/cgeo/geocaching/activity/Progress.java2
-rw-r--r--main/src/cgeo/geocaching/apps/AbstractApp.java4
-rw-r--r--main/src/cgeo/geocaching/apps/AbstractLocusApp.java8
-rw-r--r--main/src/cgeo/geocaching/apps/App.java4
-rw-r--r--main/src/cgeo/geocaching/apps/LocusDataStorageProvider.java24
-rw-r--r--main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java4
-rw-r--r--main/src/cgeo/geocaching/apps/cache/CacheBeaconApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java4
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java4
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/CacheNavigationApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java4
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java24
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java4
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cachelist/CacheListApp.java4
-rw-r--r--main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java4
-rw-r--r--main/src/cgeo/geocaching/apps/cachelist/InternalCacheListMap.java4
-rw-r--r--main/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java4
-rw-r--r--main/src/cgeo/geocaching/backup/CentralBackupAgent.java4
-rw-r--r--main/src/cgeo/geocaching/cgData.java239
-rw-r--r--main/src/cgeo/geocaching/cgSelectMapfile.java2
-rw-r--r--main/src/cgeo/geocaching/cgeocaches.java138
-rw-r--r--main/src/cgeo/geocaching/cgeogpxes.java19
-rw-r--r--main/src/cgeo/geocaching/cgeopoint.java5
-rw-r--r--main/src/cgeo/geocaching/connector/AbstractConnector.java8
-rw-r--r--main/src/cgeo/geocaching/connector/ConnectorFactory.java4
-rw-r--r--main/src/cgeo/geocaching/connector/GeocachingAustraliaConnector.java10
-rw-r--r--main/src/cgeo/geocaching/connector/GeopeitusConnector.java10
-rw-r--r--main/src/cgeo/geocaching/connector/IConnector.java20
-rw-r--r--main/src/cgeo/geocaching/connector/UnknownConnector.java10
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConnector.java24
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConstants.java2
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCMap.java10
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCParser.java54
-rw-r--r--main/src/cgeo/geocaching/connector/gc/IconDecoder.java7
-rw-r--r--main/src/cgeo/geocaching/connector/gc/Login.java5
-rw-r--r--main/src/cgeo/geocaching/connector/gc/Tile.java97
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java224
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCApiConnector.java6
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCConnector.java10
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java12
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCXMLClient.java35
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OkapiClient.java18
-rw-r--r--main/src/cgeo/geocaching/connector/ox/OXConnector.java16
-rw-r--r--main/src/cgeo/geocaching/connector/ox/OXGPXParser.java4
-rw-r--r--main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java12
-rw-r--r--main/src/cgeo/geocaching/enumerations/CacheAttribute.java234
-rw-r--r--main/src/cgeo/geocaching/enumerations/CacheType.java17
-rw-r--r--main/src/cgeo/geocaching/enumerations/StatusCode.java1
-rw-r--r--main/src/cgeo/geocaching/export/Export.java10
-rw-r--r--main/src/cgeo/geocaching/export/ExportFactory.java6
-rw-r--r--main/src/cgeo/geocaching/export/FieldnoteExport.java92
-rw-r--r--main/src/cgeo/geocaching/export/GpxExport.java376
-rw-r--r--main/src/cgeo/geocaching/files/FileList.java5
-rw-r--r--main/src/cgeo/geocaching/files/FileParser.java8
-rw-r--r--main/src/cgeo/geocaching/files/GPXImporter.java26
-rw-r--r--main/src/cgeo/geocaching/files/GPXParser.java27
-rw-r--r--main/src/cgeo/geocaching/files/LocParser.java34
-rw-r--r--main/src/cgeo/geocaching/files/SimpleDirChooser.java12
-rw-r--r--main/src/cgeo/geocaching/filter/AbstractFilter.java8
-rw-r--r--main/src/cgeo/geocaching/filter/AttributeFilter.java6
-rw-r--r--main/src/cgeo/geocaching/filter/DifficultyFilter.java4
-rw-r--r--main/src/cgeo/geocaching/filter/FilterUserInterface.java1
-rw-r--r--main/src/cgeo/geocaching/filter/IFilter.java6
-rw-r--r--main/src/cgeo/geocaching/filter/ModifiedFilter.java4
-rw-r--r--main/src/cgeo/geocaching/filter/OriginFilter.java47
-rw-r--r--main/src/cgeo/geocaching/filter/SizeFilter.java4
-rw-r--r--main/src/cgeo/geocaching/filter/StateFilter.java14
-rw-r--r--main/src/cgeo/geocaching/filter/TerrainFilter.java4
-rw-r--r--main/src/cgeo/geocaching/filter/TrackablesFilter.java4
-rw-r--r--main/src/cgeo/geocaching/filter/TypeFilter.java4
-rw-r--r--main/src/cgeo/geocaching/gcvote/GCVote.java40
-rw-r--r--main/src/cgeo/geocaching/geopoint/Geopoint.java35
-rw-r--r--main/src/cgeo/geocaching/geopoint/GeopointParser.java34
-rw-r--r--main/src/cgeo/geocaching/maps/CGeoMap.java370
-rw-r--r--main/src/cgeo/geocaching/maps/CachesOverlay.java10
-rw-r--r--main/src/cgeo/geocaching/network/Network.java30
-rw-r--r--main/src/cgeo/geocaching/sorting/AbstractCacheComparator.java8
-rw-r--r--main/src/cgeo/geocaching/sorting/CacheComparator.java4
-rw-r--r--main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java2
-rw-r--r--main/src/cgeo/geocaching/sorting/DateComparator.java8
-rw-r--r--main/src/cgeo/geocaching/sorting/DifficultyComparator.java6
-rw-r--r--main/src/cgeo/geocaching/sorting/DistanceComparator.java12
-rw-r--r--main/src/cgeo/geocaching/sorting/FindsComparator.java8
-rw-r--r--main/src/cgeo/geocaching/sorting/GeocodeComparator.java6
-rw-r--r--main/src/cgeo/geocaching/sorting/InventoryComparator.java6
-rw-r--r--main/src/cgeo/geocaching/sorting/InverseComparator.java4
-rw-r--r--main/src/cgeo/geocaching/sorting/NameComparator.java6
-rw-r--r--main/src/cgeo/geocaching/sorting/PopularityComparator.java6
-rw-r--r--main/src/cgeo/geocaching/sorting/RatingComparator.java6
-rw-r--r--main/src/cgeo/geocaching/sorting/SizeComparator.java6
-rw-r--r--main/src/cgeo/geocaching/sorting/StateComparator.java8
-rw-r--r--main/src/cgeo/geocaching/sorting/StorageTimeComparator.java6
-rw-r--r--main/src/cgeo/geocaching/sorting/TerrainComparator.java6
-rw-r--r--main/src/cgeo/geocaching/sorting/VisitComparator.java6
-rw-r--r--main/src/cgeo/geocaching/sorting/VoteComparator.java6
-rw-r--r--main/src/cgeo/geocaching/twitter/Twitter.java4
-rw-r--r--main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java2
-rw-r--r--main/src/cgeo/geocaching/ui/AnchorAwareLinkMovementMethod.java37
-rw-r--r--main/src/cgeo/geocaching/ui/CacheDetailsCreator.java18
-rw-r--r--main/src/cgeo/geocaching/ui/CacheListAdapter.java56
-rw-r--r--main/src/cgeo/geocaching/ui/Formatter.java8
-rw-r--r--main/src/cgeo/geocaching/ui/LoggingUI.java8
-rw-r--r--main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java (renamed from main/src/cgeo/geocaching/cgeocoords.java)14
-rw-r--r--main/src/cgeo/geocaching/ui/dialog/CustomProgressDialog.java (renamed from main/src/cgeo/geocaching/ui/CustomProgressDialog.java)5
-rw-r--r--main/src/cgeo/geocaching/ui/dialog/DateDialog.java (renamed from main/src/cgeo/geocaching/ui/DateDialog.java)2
-rw-r--r--main/src/cgeo/geocaching/ui/dialog/EditorDialog.java (renamed from main/src/cgeo/geocaching/ui/EditorDialog.java)5
-rw-r--r--main/src/cgeo/geocaching/ui/dialog/LiveMapInfoDialogBuilder.java45
-rw-r--r--main/src/cgeo/geocaching/utils/ApplicationSettings.java24
-rw-r--r--main/src/cgeo/geocaching/utils/LazyInitializedList.java98
-rw-r--r--main/src/cgeo/geocaching/utils/LeastRecentlyUsedSet.java19
-rw-r--r--main/src/cgeo/geocaching/utils/Log.java34
-rw-r--r--main/src/cgeo/geocaching/utils/LogTemplateProvider.java12
-rw-r--r--main/src/cgeo/geocaching/utils/XmlUtils.java41
378 files changed, 8788 insertions, 3966 deletions
diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml
index 43c9ab2..f670723 100644
--- a/main/AndroidManifest.xml
+++ b/main/AndroidManifest.xml
@@ -57,7 +57,6 @@
<activity
android:name=".CachePopup"
android:label="@string/app_name"
- android:theme="@style/popup_dark"
android:windowSoftInputMode="stateHidden"
android:configChanges="keyboardHidden|orientation" >
</activity>
@@ -92,7 +91,7 @@
android:configChanges="keyboardHidden|orientation" >
</activity>
<activity
- android:name=".AdressListActivity"
+ android:name=".AddressListActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden"
android:configChanges="keyboardHidden|orientation" >
@@ -216,17 +215,10 @@
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation" >
</activity>
- <activity
- android:name=".LiveMapInfo"
- android:label="@string/app_name"
- android:theme="@style/popup_dark"
- android:configChanges="keyboardHidden|orientation" >
- </activity>
<provider android:name=".apps.LocusDataStorageProvider"
android:authorities="cgeo.geocaching.apps.locusdatastorageprovider" />
<activity android:name="WaypointPopup"
android:label="@string/app_name"
- android:theme="@style/popup_dark"
android:windowSoftInputMode="stateHidden"
android:configChanges="keyboardHidden|orientation" >
</activity>
diff --git a/main/lint.xml b/main/lint.xml
index dc32e31..c5b2b18 100644
--- a/main/lint.xml
+++ b/main/lint.xml
@@ -1,5 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<issue id="ContentDescription" severity="ignore" />
+ <issue id="ExportedContentProvider" severity="ignore" />
<issue id="MissingTranslation" severity="ignore" />
+ <issue id="Registered" severity="ignore" />
</lint> \ No newline at end of file
diff --git a/main/project/attributes/iconlist.txt b/main/project/attributes/iconlist.txt
index 69c9e75..046add1 100644
--- a/main/project/attributes/iconlist.txt
+++ b/main/project/attributes/iconlist.txt
@@ -1,98 +1,111 @@
# Definitions for attributes:
# - internal name: used as
-# a) name of string, prefixed with "attribute_"
-# b) name of icon, prefixed with "attribute_"
-# - gsx: id used in groundspeak GPX files
+# a) for GC caches this is the ID with which it is found in c:geo
+# b) name of string, prefixed with "attribute_"
+# c) name of icon, prefixed with "attribute_"
+# - gcid: id used in groundspeak GPX files
+# - ocid: opencaching id
# - man: graphic is selfmade or overhauled
# - license: type of license
# - copyright holder: Name of person
# - URL: icon is based on graphic downloadable here
#
-# internal name | gsx | man | license | copyright holder | URL
+# No blank lines! Use # for comments
+# No reordering! This will mess up the scripts checking for missing localized strings
#
-# Permissions (allowed / not allowed)
+# internal name | gcid | ocid | man | license | copyright holder | URL
+dogs | 1 | | | PD | | http://thenounproject.com/noun/dog/#icon-No364
+bicycles | 32 | | x | PD | | http://thenounproject.com/noun/bicycle/#icon-No536
+motorcycles | 33 | | | PD | | http://thenounproject.com/noun/motorcycle/#icon-No53
+quads | 34 | | | PD | USA National Park Service | http://thenounproject.com/noun/4-wheeler/#icon-No228
+jeeps | 35 | | | PD | USA National Park Service | http://thenounproject.com/noun/jeep/#icon-No57
+snowmobiles | 36 | | | PD | USA National Park Service | http://thenounproject.com/noun/snowmobile/#icon-No505
+horses | 37 | | | PD | USA National Park Service | http://thenounproject.com/noun/horseback-trail/#icon-No329
+campfires | 38 | | | PD | USA National Park Service | http://thenounproject.com/noun/campfire/#icon-No196
+rv | 46 | | | PD | USA National Park Service | http://thenounproject.com/noun/camper/#icon-No86
+kids | 6 | 59 | x | PD | | http://thenounproject.com/noun/teddy-bear/#icon-No6843
+onehour | 7 | | x | CC0 | The Noun Project | http://thenounproject.com/noun/clock/#icon-No2306
+scenic | 8 | | | PD | USA National Park Service | http://thenounproject.com/noun/binoculars/#icon-No112
+hiking | 9 | 25 | | PD | USA National Park Service | http://thenounproject.com/noun/hiker/#icon-No562
+climbing | 10 | 28 | | PD | USA National Park Service | http://thenounproject.com/noun/climbing/#icon-No526
+wading | 11 | | x | PD | USA National Park Service | http://thenounproject.com/noun/wading/#icon-No581
+swimming | 12 | 29 | | PD | USA National Park Service | http://thenounproject.com/noun/swimming/#icon-No226
+available | 13 | 38 | x | PD | koem | selfmade
+night | 14 | | | PD | | http://thenounproject.com/noun/moon/#icon-No128
+winter | 15 | | | PD | USA National Park Service | http://thenounproject.com/noun/snow/#icon-No64
+stealth | 40 | | x | PD | Celine | http://www.specialweb.com/original/icons4.html
+firstaid | 42 | | | PD | Roger Cook, Dan Shanosky | http://thenounproject.com/noun/first-aid/#icon-No535
+cow | 43 | | | PD | | http://www.openclipart.org/people/Anonymous/mucca.svg
+field_puzzle | 47 | | x | PD | nicubunu | http://www.openclipart.org/detail/15169/red-jigsaw-piece-13-by-nicubunu http://thenounproject.com/noun/running/#icon-No246
+nightcache | 52 | 1 | x | PD | | http://thenounproject.com/noun/moon/#icon-No128
+parkngrab | 53 | 24 | x | PD | Roger Cook, Don Shanosky | http://thenounproject.com/noun/parking/#icon-No27
+abandonedbuilding | 54 | | x | CC0 | | http://thenounproject.com/noun/house/#icon-No4399
+hike_short | 55 | | x | PD | koem | selfmade
+hike_med | 56 | | x | PD | koem | selfmade
+hike_long | 57 | | x | PD | koem | selfmade
+seasonal | 62 | 60 | x | PD | USA National Park Service | http://thenounproject.com/noun/sun/#icon-No76 http://thenounproject.com/noun/snow/#icon-No64
+touristok | 63 | | | PD | Roger Cook, Don Shanosky | http://thenounproject.com/noun/baggage/#icon-No12
+frontyard | 65 | | x | PD | koem | selfmade
+teamwork | 66 | | | CC0 | riyazali | http://thenounproject.com/noun/group/#icon-No9477
+landf | 45 | | x | PD | koem | selfmade
+partnership | 61 | | | CC0 | United Nations OCHA | http://thenounproject.com/noun/partnership/#icon-No4203
+fee | 2 | 36 | x | PD | koem | selfmade
+rappelling | 3 | 49 | | PD | USA National Park Service | http://thenounproject.com/noun/rock-climbing/#icon-No529
+boat | 4 | 52 | | PD | USA National Park Service | http://thenounproject.com/noun/motorboat/#icon-No661
+scuba | 5 | 51 | | PD | USA National Park Service | http://thenounproject.com/noun/scuba-diving/#icon-No242
+flashlight | 44 | 48 | x | PD | koem | selfmade
+uv | 48 | | x | PD | koem | selfmade
+snowshoes | 49 | | | PD | USA National Park Service | http://thenounproject.com/noun/snow-shoeing/#icon-No388
+skiis | 50 | | | PD | USA National Park Service | http://thenounproject.com/noun/cross-country-skiing/#icon-No510
+s_tool | 51 | 46 | x | CC0 | Jacob Hardbower | http://thenounproject.com/noun/tools/#icon-No4684
+wirelessbeacon | 60 | | x | PD | | http://thenounproject.com/noun/non-ionizing-radiation/#icon-No277
+treeclimbing | 64 | | | CC0 | Ryan Oksenhorn | http://thenounproject.com/noun/tree/#icon-No947
+poisonoak | 17 | 16 | x | PD | koem | selfmade
+dangerousanimals | 18 | 17 | | PD | USA National Park Service | http://thenounproject.com/noun/snake/#icon-No201
+ticks | 19 | 14 | x | PD | koem | selfmade
+mine | 20 | 15 | | PD | USA National Park Service | http://thenounproject.com/noun/rock-collecting/#icon-No528
+cliff | 21 | 11 | | PD | USA National Park Service | http://thenounproject.com/noun/falling-rocks/#icon-No520
+hunting | 22 | 12 | x | PD | koem | selfmade
+danger | 23 | 9 | x | PD | ryanlerch | http://www.openclipart.org/detail/1448/skull-and-crossbones-by-ryanlerch
+thorn | 39 | 13 | x | PD | emilie.rollandin | http://www.openclipart.org/detail/68125/spine-by-emilie.rollandin
+wheelchair | 24 | | | PD | USA National Park Service | http://thenounproject.com/noun/wheelchair-accessible/#icon-No354
+parking | 25 | 18 | | PD | Roger Cook, Don Shanosky | http://thenounproject.com/noun/parking/#icon-No27
+public | 26 | 19 | | PD | Roger Cook, Don Shanosky | http://thenounproject.com/noun/bus/#icon-No97
+water | 27 | 20 | | PD | USA National Park Service | http://thenounproject.com/noun/drinking-water/#icon-No214
+restrooms | 28 | 21 | | PD | Roger Cook, Don Shanosky | http://thenounproject.com/noun/unisex/#icon-No50
+phone | 29 | 22 | | PD | | http://thenounproject.com/noun/telephone/#icon-No127
+picnic | 30 | | | PD | USA National Park Service | http://thenounproject.com/noun/picnic-table/#icon-No208
+camping | 31 | | | PD | USA National Park Service | http://thenounproject.com/noun/campground/#icon-No209
+stroller | 41 | | | PD | USA National Park Service | http://thenounproject.com/noun/stroller/#icon-No161
+fuel | 58 | | | PD | | http://thenounproject.com/noun/gas/#icon-No155
+food | 59 | | | PD | Roger Cook, Don Shanosky | http://thenounproject.com/noun/restaurant/#icon-No33
+oc_only | | 6 | x | PD | koem | selfmade
+link_only | | 7 | x | PD | koem | selfmade
+letterbox | | 8 | | CC0 | | http://thenounproject.com/noun/post-office/#icon-No2404
+railway | | 10 | | CC0 | | http://thenounproject.com/noun/train/#icon-No4420
+syringe | | 23 | | CC0 | Betovarg Jabib | http://thenounproject.com/noun/syringe/#icon-No1508
+swamp | | 26 | x | CC0 | Megan Strickland | http://thenounproject.com/noun/hand/#icon-No1477
+hills | | 27 | x | PD | koem | selfmade
+poi | | 30 | | PD | | http://thenounproject.com/noun/point-of-interest/#icon-No522
+moving_target | | 31 | x | PD | | http://thenounproject.com/noun/running/#icon-No246
+webcam | | 32 | | PD | | http://thenounproject.com/noun/video-camera/#icon-No637
+inside | | 33 | x | PD | koem | selfmade
+in_water | | 34 | x | PD | koem | selfmade
+no_gps | | 35 | x | PD | koem | selfmade
+overnight | | 37 | x | PD | koem | selfmade
+specific_times | | 39 | x | CC0 | The Noun Project | http://thenounproject.com/noun/clock/#icon-No2306
+day | | 40 | x | PD | | http://thenounproject.com/noun/sun/#icon-No76
+tide | | 41 | | CC0 | United Nations UCHA | http://thenounproject.com/noun/storm-surge/#icon-No4248
+all_seasons | | 42 | x | PD | koem | selfmade
+breeding | | 43 | x | PD | koem | selfmade
+snow_proof | | 44 | x | PD | USA National Park Service | http://thenounproject.com/noun/snow/#icon-No64
+compass | | 47 | x | CC0 | James Keuning | http://thenounproject.com/noun/compass/#icon-No9699
+cave | | 50 | | PD | | http://thenounproject.com/noun/cave/#icon-No3827
+aircraft | | 53 | | CC0 | United Nations UCHA | http://thenounproject.com/noun/helicopter/#icon-No4415
+investigation | | 54 | x | CC0 | Timur Carpeev | http://thenounproject.com/noun/magnifying-glass/#icon-No5386
+puzzle | | 55 | x | PD | nicubunu | http://www.openclipart.org/detail/15169/red-jigsaw-piece-13-by-nicubunu
+arithmetic | | 56 | x | PD | koem | selfmade
+other_cache | | 57 | x | PD | koem | selfmade
+ask_owner | | 58 | x | PD | koem | selfmade
#
-dogs | 1 | | CC | | http://thenounproject.com/noun/dog/#icon-No364
-bicycles | 32 | x | PD | | http://thenounproject.com/noun/bicycle/#icon-No536
-motorcycles | 33 | | PD | | http://thenounproject.com/noun/motorcycle/#icon-No53
-quads | 34 | | PD | USA National Park Service | http://thenounproject.com/noun/4-wheeler/#icon-No228
-jeeps | 35 | | PD | USA National Park Service | http://thenounproject.com/noun/jeep/#icon-No57
-snowmobiles | 36 | | PD | USA National Park Service | http://thenounproject.com/noun/snowmobile/#icon-No505
-horses | 37 | | PD | USA National Park Service | http://thenounproject.com/noun/horseback-trail/#icon-No329
-campfires | 38 | | PD | USA National Park Service | http://thenounproject.com/noun/campfire/#icon-No196
-rv | 46 | | PD | USA National Park Service | http://thenounproject.com/noun/camper/#icon-No86
-#
-# Conditions (yes / no)
-#
-kids | 6 | x | PD | Jack Biesek, Gladys Brenner, Margaret Faye, Healther Merrifield, Kate Keating, Wendy Olmstead, Todd Pierce, Jamie Cowgill, Jim Bolek | http://thenounproject.com/noun/teddy-bear/#icon-No610
-onehour | 7 | x | CC | The Noun Project | http://thenounproject.com/noun/stopwatch/#icon-No282
-scenic | 8 | | PD | USA National Park Service | http://thenounproject.com/noun/binoculars/#icon-No112
-hiking | 9 | | PD | USA National Park Service | http://thenounproject.com/noun/hiker/#icon-No562
-climbing | 10 | | PD | USA National Park Service | http://thenounproject.com/noun/climbing/#icon-No526
-wading | 11 | x | PD | USA National Park Service | http://thenounproject.com/noun/wading/#icon-No581
-swimming | 12 | | PD | USA National Park Service | http://thenounproject.com/noun/swimming/#icon-No226
-available | 13 | x | PD | koem |
-night | 14 | | PD | | http://thenounproject.com/noun/moon/#icon-No128
-winter | 15 | | PD | USA National Park Service | http://thenounproject.com/noun/snow/#icon-No64
-stealth | 40 | x | PD | Celine | http://www.specialweb.com/original/icons4.html
-firstaid | 42 | | PD | Roger Cook, Dan Shanosky | http://thenounproject.com/noun/first-aid/#icon-No535
-cow | 43 | | PD | | http://www.openclipart.org/people/Anonymous/mucca.svg
-field_puzzle | 47 | x | PD | nicubunu | http://www.openclipart.org/detail/15169/red-jigsaw-piece-13-by-nicubunu
-nightcache | 52 | x | PD | | http://thenounproject.com/noun/moon/#icon-No128
-parkngrab | 53 | x | PD | Roger Cook, Don Shanosky | http://thenounproject.com/noun/parking/#icon-No27
-abandonedbuilding | 54 | x | CC | The Noun Project | http://thenounproject.com/noun/home/#icon-No293
-hike_short | 55 | x | PD | koem |
-hike_med | 56 | x | PD | koem |
-hike_long | 57 | x | PD | koem |
-seasonal | 62 | x | PD | USA National Park Service | http://thenounproject.com/noun/sun/#icon-No76 http://thenounproject.com/noun/snow/#icon-No64
-touristok | 63 | | PD | Roger Cook, Don Shanosky | http://thenounproject.com/noun/baggage/#icon-No12
-frontyard | 65 | x | PD | koem |
-teamwork | 66 | | CC | The Noun Project | http://thenounproject.com/noun/community/#icon-No288
-#
-# other
-#
-landf | 45 | x | PD | koem |
-partnership | 61 | | PD | worker | http://www.openclipart.org/detail/152875/hand-shake-by-worker
-#
-# Equipment (required / not required)
-#
-fee | 2 | x | PD | koem |
-rappelling | 3 | | PD | USA National Park Service | http://thenounproject.com/noun/rock-climbing/#icon-No529
-boat | 4 | | PD | USA National Park Service | http://thenounproject.com/noun/motorboat/#icon-No661
-scuba | 5 | | PD | USA National Park Service | http://thenounproject.com/noun/scuba-diving/#icon-No242
-flashlight | 44 | | CC | The Noun Project | http://thenounproject.com/noun/flashlight/#icon-No516
-uv | 48 | x | PD | koem |
-snowshoes | 49 | | PD | USA National Park Service | http://thenounproject.com/noun/snow-shoeing/#icon-No388
-skiis | 50 | | PD | USA National Park Service | http://thenounproject.com/noun/cross-country-skiing/#icon-No510
-s_tool | 51 | | CC | The Noun Project | http://thenounproject.com/noun/gears/#icon-No179
-wirelessbeacon | 60 | x | PD | | http://thenounproject.com/noun/non-ionizing-radiation/#icon-No277
-treeclimbing | 64 | | CC | The Noun Project | http://thenounproject.com/noun/tree/#icon-No173
-#
-# Hazards (present / not present)
-#
-poisonoak | 17 | | CC | The Noun Project | http://thenounproject.com/noun/mushroom/#icon-No309
-dangerousanimals | 18 | | PD | USA National Park Service | http://thenounproject.com/noun/snake/#icon-No201
-ticks | 19 | x | PD | koem |
-mine | 20 | | PD | USA National Park Service | http://thenounproject.com/noun/rock-collecting/#icon-No528
-cliff | 21 | | PD | USA National Park Service | http://thenounproject.com/noun/falling-rocks/#icon-No520
-hunting | 22 | | CC | The Noun Project | http://thenounproject.com/noun/location/#icon-No418
-danger | 23 | x | PD | ryanlerch | http://www.openclipart.org/detail/1448/skull-and-crossbones-by-ryanlerch
-thorn | 39 | | PD | emilie.rollandin | http://www.openclipart.org/detail/68125/spine-by-emilie.rollandin
-#
-# Facilities
-#
-wheelchair | 24 | | PD | USA National Park Service | http://thenounproject.com/noun/wheelchair-accessible/#icon-No354
-parking | 25 | | PD | Roger Cook, Don Shanosky | http://thenounproject.com/noun/parking/#icon-No27
-public | 26 | | PD | Roger Cook, Don Shanosky | http://thenounproject.com/noun/bus/#icon-No97
-water | 27 | | PD | USA National Park Service | http://thenounproject.com/noun/drinking-water/#icon-No214
-restrooms | 28 | | PD | Roger Cook, Don Shanosky | http://thenounproject.com/noun/unisex/#icon-No50
-phone | 29 | | PD | | http://thenounproject.com/noun/telephone/#icon-No127
-picnic | 30 | | PD | USA National Park Service | http://thenounproject.com/noun/picnic-table/#icon-No208
-camping | 31 | | PD | USA National Park Service | http://thenounproject.com/noun/campground/#icon-No209
-stroller | 41 | | PD | USA National Park Service | http://thenounproject.com/noun/stroller/#icon-No161
-fuel | 58 | | PD | | http://thenounproject.com/noun/gas/#icon-No155
-food | 59 | | PD | Roger Cook, Don Shanosky | http://thenounproject.com/noun/restaurant/#icon-No33
-#
-# own
-#
-icon_not_found | | x | PD | koem | selfmade
+unknown | -1 | -1 | x | PD | koem | selfmade
diff --git a/main/project/attributes/listEnStrings.sh b/main/project/attributes/listEnStrings.sh
new file mode 100755
index 0000000..1fae240
--- /dev/null
+++ b/main/project/attributes/listEnStrings.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+require () {
+ hash $1 2>&- || { echo >&2 "I require $1 but it's not installed. Aborting."; exit 1; }
+}
+
+require sed
+require cut
+
+stringfile="../../res/values/strings.xml"
+
+cat iconlist.txt | grep -v "^#" | while read l; do
+ name=`echo $l | cut -d "|" -f 1 | sed "s/ *//g"`
+ att=attribute_${name}_
+ for yn in yes no; do
+ line="`grep ${att}${yn} $stringfile`"
+ if [ -z "$line" ]; then
+ echo " <string name=\"${att}${yn}\"</string>"
+ else
+ echo "$line"
+ fi
+ done
+done
diff --git a/main/project/attributes/makeEnums.sh b/main/project/attributes/makeEnums.sh
new file mode 100755
index 0000000..c877ce0
--- /dev/null
+++ b/main/project/attributes/makeEnums.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+#
+# creates Enums from iconslist.txt
+#
+# structure:
+# UNKNOWN(0, 0, "unknown", R.drawable.attribute_unknown, R.string.attribute_unknown_yes, R.string.attribute_unknown_no),
+
+require () {
+ hash $1 2>&- || { echo >&2 "I require $1 but it's not installed. Aborting."; exit 1; }
+}
+
+require sed
+require cut
+
+cat iconlist.txt | grep -v "^#" | while read l; do
+ name=`echo $l | cut -d "|" -f 1 | sed "s/ *//g"`
+ gcid=`echo $l | cut -d "|" -f 2 | sed "s/ *//g"`
+ ocid=`echo $l | cut -d "|" -f 3 | sed "s/ *//g"`
+ enum=`echo $name | tr a-z A-Z`
+ yes=R.string.attribute_${name}_yes
+ no=R.string.attribute_${name}_no
+
+ [ -z "$gcid" ] && gcid=-1
+ [ -z "$ocid" ] && ocid=-1
+
+ echo " ${enum}($gcid, $ocid, \"$name\", R.drawable.attribute_$name, $yes, $no),"
+done
diff --git a/main/project/attributes/makeGpxIdArray.sh b/main/project/attributes/makeGpxIdArray.sh
index f348771..f348771 100644..100755
--- a/main/project/attributes/makeGpxIdArray.sh
+++ b/main/project/attributes/makeGpxIdArray.sh
diff --git a/main/project/attributes/makehtmlpage1res.sh b/main/project/attributes/makehtmlpage1res.sh
index 0aa8d6a..c5e4029 100644..100755
--- a/main/project/attributes/makehtmlpage1res.sh
+++ b/main/project/attributes/makehtmlpage1res.sh
@@ -2,20 +2,27 @@
#
# this script generates a html-page with all icons on it
-OUT=iconlist1res.html
+OUT=./iconlist1res.html
+LIST=./iconlist.txt
BG0=#c0c0c0
BG1=#a0a0a0
BG=0
BGCOLOR=$BG0
addrow () {
+ attrname=attribute_$1
echo "<tr bgcolor='$BGCOLOR'>" >> "${OUT}"
- echo "<td><img src='./drawable/${1}.png'>" >> "${OUT}"
- echo "<img style='background:url(./drawable/${1}.png' src='./drawable/strikethru.png'>" >> "${OUT}"
-# echo "<img style='background:url(./drawable/${1}.png' src='./drawable/strikethru1.png'>" >> "${OUT}"
+ echo "<td><img src='./drawable-mdpi/${attrname}.png'>" >> "${OUT}"
+ echo "<img style='background:url(./drawable-mdpi/${attrname}.png' src='./drawable-mdpi/attribute__strikethru.png'>" >> "${OUT}"
echo "</td>" >> "${OUT}"
- desc=`grep "${1}_yes" ../../res/values/strings.xml | sed "s/^.*>\(.*\)<.*$/\1/"`
- echo "<td>$desc</td><td>$1</td></tr>" >> "${OUT}"
+ for f in 2 3; do
+ id=`grep "^\<$1\>" $LIST | cut -d "|" -f $f | sed "s/ *//g"`
+ [ -z "$id" ] && id="&nbsp;"
+ echo "<td align=center>$id</td>" >> "${OUT}"
+ done
+ descyes=`grep "${attrname}_yes" ../../res/values/strings.xml | sed "s/^.*>\(.*\)<.*$/\1/"`
+ descno=`grep "${attrname}_no" ../../res/values/strings.xml | sed "s/^.*>\(.*\)<.*$/\1/"`
+ echo "<td>$descyes<br>$descno</td><td>${attrname}_yes<br>${attrname}_no</td></tr>" >> "${OUT}"
BG=$(( $BG + 1 ))
[ $BG -eq 2 ] && BG=0
[ $BG -eq 0 ] && BGCOLOR=$BG0
@@ -23,11 +30,13 @@ addrow () {
}
echo "<html><body bgcolor='#b0b0b0'>" > "${OUT}"
-echo "<table border=1 cellpadding=2><tr><th>icon</th><th>description</th><th>resource name</th></tr>" >> "${OUT}"
+echo "<table border=1 cellpadding=2><tr><th>icon</th><th>GC-ID</th><th>OC-ID</th><th>description</th><th>resource name</th></tr>" >> "${OUT}"
cat iconlist.txt | grep -v "^#" | while read i; do
name=`echo $i | cut -d "|" -f 1 | sed "s/ //g"`
- addrow attribute_$name
+ addrow $name
done
echo "</table></body></html>" >> "${OUT}"
+
+echo "generated file $OUT"
diff --git a/main/project/attributes/makeicons1res.sh b/main/project/attributes/makeicons1res.sh
index a6805ea..85e9fd7 100644..100755
--- a/main/project/attributes/makeicons1res.sh
+++ b/main/project/attributes/makeicons1res.sh
@@ -1,7 +1,6 @@
#!/bin/bash
#
# creates attribute icons in one resolution only
-# target dir: ./drawable
require () {
hash $1 2>&- || { echo >&2 "I require $1 but it's not installed. Aborting."; exit 1; }
@@ -12,6 +11,8 @@ require convert
require composite
require sed
+# directory for icons
+ICONDIR="./drawable-mdpi"
# size of the image itself (inside border)
IMGSIZE=32
# size of the whole icon
@@ -31,14 +32,14 @@ SSTROKE=5
# color of the strikethru bar
SCOL=\#c00000
# file name of strike thru bar
-SFNAME="drawable/attribute__strikethru.png"
+SFNAME="$ICONDIR/attribute__strikethru.png"
#calculated values
BNDIST=$(( ${ICONSIZE} - ${BDIST} ))
res=48
# create output directory if missing
-[ -d drawable ] || mkdir drawable
+[ -d $ICONDIR ] || mkdir $ICONDIR
# create border
echo "drawing border"
@@ -67,7 +68,7 @@ else
svgs="svgs/*.svg"
fi
for s in $svgs; do
- n=drawable/attribute_`basename "$s" | sed "s/\.svg//"`
+ n=$ICONDIR/attribute_`basename "$s" | sed "s/\.svg//"`
# don't draw icons if svg is older than icon
[ -f "${n}.png" ] && [ "$s" -ot "${n}.png" ] && continue
diff --git a/main/project/attributes/nounwork.sh b/main/project/attributes/nounwork.sh
new file mode 100755
index 0000000..91ac2b2
--- /dev/null
+++ b/main/project/attributes/nounwork.sh
@@ -0,0 +1,20 @@
+#/!bin/bash
+
+if [ $# -ne 2 ]; then
+ echo "Usage: $0 <iconname> <zip-link>"
+ exit
+fi
+
+TMPDIR=`date +"%N"`
+mkdir $TMPDIR
+mkdir new
+wget -O $TMPDIR/x.zip $2
+unzip $TMPDIR/x.zip -d $TMPDIR
+rm $TMPDIR/x.zip
+mv $TMPDIR/*.svg new/$1.svg
+rm -rf $TMPDIR
+inkscape new/$1.svg
+chmod 664 new/$1.svg
+sed -i 's/pagecolor="#......"/pagecolor="#009674"/g;s/pageopacity="[^"]*"/pageopacity="1"/g' new/$1.svg
+
+ls new
diff --git a/main/project/attributes/ocicons.html b/main/project/attributes/ocicons.html
new file mode 100644
index 0000000..9ccb7a4
--- /dev/null
+++ b/main/project/attributes/ocicons.html
@@ -0,0 +1,56 @@
+
+1 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/night.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/night-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/night-disabled.png"> Only at night<br>
+6 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/oconly.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/oconly-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/oconly-disabled.png"> Only loggable at Opencaching<br>
+7 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/wwwlink.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/wwwlink-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/wwwlink-disabled.png"> Hyperlink to another caching portal only<br>
+8 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/letter.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/letter-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/letter-disabled.png"> Letterbox (needs stamp)<br>
+9 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/danger.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/danger-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/danger-disabled.png"> Dangerous area<br>
+10 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/train.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/train-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/train-disabled.png"> Active railway nearby<br>
+11 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/cliff.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/cliff-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/cliff-disabled.png"> Cliff / Rocks<br>
+12 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/hunting.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/hunting-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/hunting-disabled.png"> Hunting<br>
+13 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/thorn.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/thorn-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/thorn-disabled.png"> Thorns<br>
+14 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/ticks.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/ticks-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/ticks-disabled.png"> Ticks<br>
+15 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/mine.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/mine-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/mine-disabled.png"> Abandoned mines<br>
+16 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/plants.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/plants-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/plants-disabled.png"> Poisonous plants<br>
+17 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/animals.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/animals-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/animals-disabled.png"> Dangerous animals<br>
+18 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/parking.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/parking-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/parking-disabled.png"> Parking area nearby<br>
+19 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/public.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/public-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/public-disabled.png"> Public transportation<br>
+20 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/water.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/water-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/water-disabled.png"> Drinking water nearby<br>
+21 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/restrooms.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/restrooms-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/restrooms-disabled.png"> Public restrooms nearby<br>
+22 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/phone.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/phone-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/phone-disabled.png"> Public phone nearby<br>
+23 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/firstaid.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/firstaid-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/firstaid-disabled.png"> First aid available<br>
+24 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/car.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/car-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/car-disabled.png"> Near the parking area<br>
+25 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/hiking.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/hiking-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/hiking-disabled.png"> Long walk<br>
+26 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/wading.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/wading-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/wading-disabled.png"> Swamp or marsh<br>
+27 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/steep.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/steep-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/steep-disabled.png"> Hilly area<br>
+28 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/climbing.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/climbing-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/climbing-disabled.png"> Some climbing (no gear needed)<br>
+29 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/swimming.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/swimming-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/swimming-disabled.png"> Swimming required<br>
+30 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/interestsign.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/interestsign-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/interestsign-disabled.png"> Point of interest<br>
+31 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/moving.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/moving-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/moving-disabled.png"> Moving target<br>
+32 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/webcam.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/webcam-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/webcam-disabled.png"> Webcam <br>
+33 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/indoor.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/indoor-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/indoor-disabled.png"> Wihin enclosed rooms (caves, buildings etc.)<br>
+34 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/submerged.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/submerged-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/submerged-disabled.png"> In the water<br>
+35 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/nogps.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/nogps-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/nogps-disabled.png"> Without GPS (letterboxes, cistes, compass juggling ...)<br>
+36 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/fee.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/fee-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/fee-disabled.png"> Access or parking fee<br>
+37 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/overnight.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/overnight-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/overnight-disabled.png"> Overnight stay necessary<br>
+38 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/available.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/available-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/available-disabled.png"> Available 24 hours<br>
+39 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/time.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/time-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/time-disabled.png"> Only available at specified times<br>
+40 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/day.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/day-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/day-disabled.png"> by day only<br>
+41 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/tide.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/tide-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/tide-disabled.png"> Tide<br>
+42 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/date.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/date-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/date-disabled.png"> All seasons<br>
+43 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/naturschutz.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/naturschutz-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/naturschutz-disabled.png"> Breeding season / protected nature<br>
+44 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/snow.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/snow-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/snow-disabled.png"> Snow-proof hiding place<br>
+46 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/tools.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/tools-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/tools-disabled.png"> Special equipment<br>
+47 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/compass.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/compass-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/compass-disabled.png"> Compass<br>
+48 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/flashlight.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/flashlight-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/flashlight-disabled.png" >Flashlight<br>
+49 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/rappeling.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/rappeling-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/rappeling-disabled.png"> Climbing gear<br>
+50 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/cave.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/cave-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/cave-disabled.png"> Cave equipment<br>
+51 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/scuba.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/scuba-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/scuba-disabled.png"> Diving equipment<br>
+52 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/boat.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/boat-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/boat-disabled.png"> Watercraft<br>
+53 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/aircraft.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/aircraft-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/aircraft-disabled.png"> Aircraft<br>
+54 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/wiki.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/wiki-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/wiki-disabled.png" >Investigation<br>
+55 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/riddle.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/riddle-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/riddle-disabled.png"> Puzzle / Mystery<br>
+56 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/arith_prob.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/arith_prob-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/arith_prob-disabled.png"> Arithmetical problem<br>
+57 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/othercache.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/othercache-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/othercache-disabled.png"> Other cache type<br>
+58 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/ask.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/ask-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/ask-disabled.png"> Ask owner for start conditions<br>
+59 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/kids.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/kids-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/kids-disabled.png"> Suited for children<br>
+60 <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/calendar.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/calendar-no.png"> <img src="http://www.opencaching.de/resource2/ocstyle/images/attributes/calendar-disabled.png"> Only available during specified seasons<br>
diff --git a/main/project/attributes/readme.txt b/main/project/attributes/readme.txt
index c1c6b37..9b56328 100644
--- a/main/project/attributes/readme.txt
+++ b/main/project/attributes/readme.txt
@@ -1,17 +1,71 @@
+Attribute Icons
+===============
+
+You can find good icons on thenounproject.com.
+
+Be sure to only use CC0 and PD licensed icons. If you use CC-BY licensed icons, we must attribute the designer in the about box in c:geo.
+
+An xml list of OC icons can be downloaded here: http://www.opencaching.de/xml/ocxml11.php?modifiedsince=20060320000000&user=0&session=0&attrlist=1
+An html overview is in ocicons.html
+
+
1. Creating SVGs with Inkscape
+------------------------------
+
+For SVGs from thenounproject.com you can use the script ./nounwork
+Example: ./nounwork day http://thenounproject.com/download/zipped/svg_76.zip
+This will download the SVG and start Inkscape. Edit it and save. The canvas color is set automatically (just that you can see the painted things later on) and the resulting day.svg will be put into the folder "new".
+
+Editing in Inkscape:
+ - edit if you have to
+ - if you need a cache box, take it from other_cache.svg
+ - don't use a background or so. Background of the later rendered icons will be black be black.
+ - after editing make everything white - exeptions are ok, see field_puzzle.svg or maintenance.svg
+ - Select everything with Strg-a
+ - go to File > Document Properties
+ - let Inkscape automatically adjust the canvas to the selection
+ - save
+
+Put the result into the folder "svgs" and don't forget to add it to git (git add svgs/*).
+
+
+2. edit iconlist.txt
+--------------------
+Add a new line or change an existing one.
+Don't mess up the structure of this file. It is used to automatically create missing strings, html-pages and enumerations.
-2. creating the icons
+The first row contains the name of the attribute. In case of gc.com, this also is their internal id and is used for parsing websites in c:geo. So don't change any IDs!
+
+
+3. create the icons
+-------------------
./makeicons1res.sh
-An icon is only created when it is not present or the corresponding svg-file
-is newer than the icon
+An icon is only created when it is not present or the corresponding svg-file is newer than the icon
-Icons are written to directory ./drawable
+Icons are written to directory ./drawable-mdpi. Copy them to res/drawable-mdpi when done.
-3. creating an html page with all icons
+4. create an html page with all icons to check your work
+--------------------------------------------------------
./makehtmlpage1res.sh
+
+
+If you made new icons:
+======================
+
+5. create the Enums for CacheAttributes.java
+--------------------------------------------
+
+./makeEnums.sh will print out the enums. Use this output and paste it into CacheAttribute.java. Exchange the last comma with a semikolon.
+
+
+6. create a list of strings that are (not) missing
+--------------------------------------------------
+
+./listEnStrings.sh will list all attribute strings from strings.xml and creates empty string tags for missing strings. The output of the missing string tags lack a ">" sign so that you get a compiler error as a reminder, when you inserted them into values/strings.xml.
+
diff --git a/main/project/attributes/svgs/abandonedbuilding.svg b/main/project/attributes/svgs/abandonedbuilding.svg
index 840e455..7e3588d 100644
--- a/main/project/attributes/svgs/abandonedbuilding.svg
+++ b/main/project/attributes/svgs/abandonedbuilding.svg
@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
-
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
@@ -9,27 +7,21 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
+ version="1.1"
id="Layer_1"
x="0px"
y="0px"
- width="92.869095"
- height="94.456985"
- viewBox="0 0 92.869095 94.45699"
- enable-background="new 0 0 100 83.84"
+ width="94.799995"
+ height="95.12558"
+ viewBox="0 0 94.799995 95.12558"
+ enable-background="new 0 0 100 87.5"
xml:space="preserve"
- inkscape:version="0.47 r22583"
- sodipodi:docname="AbandonedBuilding.svg"><metadata
- id="metadata3074"><rdf:RDF><cc:Work
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="noun_project_4399.svg"><metadata
+ id="metadata9"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs3072"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 47.228493 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="92.869095 : 47.228493 : 1"
- inkscape:persp3d-origin="46.434547 : 31.485662 : 1"
- id="perspective7" /></defs><sodipodi:namedview
+ id="defs7" /><sodipodi:namedview
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1"
@@ -38,24 +30,24 @@
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
- inkscape:window-width="956"
- inkscape:window-height="744"
- id="namedview3070"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview5"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
- inkscape:zoom="3.0772902"
- inkscape:cx="51.991967"
- inkscape:cy="49.93387"
- inkscape:window-x="0"
+ inkscape:zoom="2.6971429"
+ inkscape:cx="48.624657"
+ inkscape:cy="30.482615"
+ inkscape:window-x="49"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" />
-<path
- d="m 61.679203,93.647183 c 3.684417,-7.676599 7.368225,-15.35192 11.052643,-23.028518 0.187544,-0.390784 0.283155,-0.65152 0.32349,-0.819551 0.07865,-0.0055 0.182322,-0.02729 0.327528,-0.07858 2.050799,-0.724465 4.10254,-1.449263 6.153339,-2.173728 4.121398,-1.455925 8.241854,-2.911517 12.363252,-4.367442 0.74866,-0.264471 1.152962,-1.110448 0.888491,-1.859108 -1.05189,-2.977666 -2.103446,-5.954388 -3.15567,-8.932996 -0.264471,-0.74866 -1.110449,-1.152963 -1.859107,-0.888491 -2.354412,0.831719 -4.70788,1.663105 -7.062291,2.494824 3.577091,-7.452024 7.154182,-14.904049 10.731274,-22.356073 0.18538,-0.3879 0.184945,-0.749397 0.07503,-1.060552 -0.0041,-0.01765 -0.01105,-0.03428 -0.01644,-0.05252 -0.0073,-0.01758 -0.01232,-0.03489 -0.02054,-0.05214 C 91.37029,30.161145 91.14356,29.879588 90.75566,29.694205 70.053285,19.843387 49.350577,9.9916223 28.646927,0.14019023 27.500485,-0.40614195 26.221948,0.73912182 26.645968,1.9394283 c 1.106517,3.1323004 2.213699,6.2664866 3.320548,9.3997297 -9.665627,3.414478 -19.331252,6.828957 -28.9968789,10.243435 -0.74865935,0.264472 -1.15296235,1.110448 -0.88849108,1.859109 3.44845378,9.7618 6.57347958,18.608051 10.02226698,28.370795 0.264138,0.747717 1.110114,1.15202 1.858774,0.887549 6.761507,-2.388569 13.523014,-4.777139 20.285464,-7.166042 1.024243,2.899405 2.695675,7.630858 3.719919,10.530262 -6.76245,2.388904 -13.523957,4.777472 -20.285463,7.166042 -0.74866,0.264471 -1.152964,1.110449 -0.888825,1.858166 3.448786,9.762744 6.573813,18.608994 10.022599,28.371739 0.264139,0.747716 1.110116,1.152019 1.858775,0.887548 9.665627,-3.414479 19.331252,-6.828958 28.99688,-10.243437 1.106849,3.133244 2.213698,6.266487 3.320547,9.399731 0.423688,1.199363 2.138236,1.28835 2.68712,0.143128 z"
- id="path3068"
- inkscape:connector-curvature="0"
+<polygon
+ points="50,0 0,50 12.5,50 12.5,87.5 43.75,87.5 43.75,62.5 56.25,62.5 56.25,87.5 87.5,87.5 87.5,50 100,50 "
+ id="polygon3"
+ transform="matrix(0.30840302,0.95125579,-0.95125579,0.30840302,79.379844,-15.420151)"
style="fill:#ffffff" />
</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/aircraft.svg b/main/project/attributes/svgs/aircraft.svg
new file mode 100644
index 0000000..bc2e4ad
--- /dev/null
+++ b/main/project/attributes/svgs/aircraft.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="100px"
+ height="52.629px"
+ viewBox="0 0 100 52.629"
+ enable-background="new 0 0 100 52.629"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="aircraft.svg"><metadata
+ id="metadata9"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs7" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview5"
+ showgrid="false"
+ inkscape:zoom="3.21"
+ inkscape:cx="50"
+ inkscape:cy="26.314501"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" />
+<path
+ d="M99.536,43.84c-0.625-0.592-1.608-0.592-2.239,0l-5.527,5.639H76.906v-6.771H89.53c1.204,0,2.396-0.104,3.535-0.318 c1.152-0.229,2.115-0.82,2.884-1.816c0.664-0.775,1.003-1.855,1.003-3.308c0-1.002-0.3-2.239-0.84-3.782l-4.779-11.393 c-1.523-3.502-3.535-5.951-6.021-7.318c-2.468-1.399-5.078-2.063-7.825-2.063H58.358V3.639h5.599 c0.332,0.56,0.736,0.911,1.172,1.067c0.424,0.176,0.808,0.248,1.14,0.248h26.9c0.873,0,1.523-0.248,1.96-0.736 s0.716-1.067,0.82-1.731c0-0.56-0.208-1.107-0.645-1.647C94.849,0.28,94.146,0,93.169,0H67.265c-1.211,0-1.992,0.156-2.383,0.417 c-0.384,0.287-0.696,0.631-0.925,1.087H48.625c-0.208-0.228-0.456-0.508-0.735-0.84c-0.261-0.332-0.788-0.488-1.556-0.488h-27.22 c-0.436,0-0.944,0.188-1.575,0.579c-0.593,0.397-0.892,1.016-0.892,1.908c0,0.853,0.299,1.536,0.892,1.959 c0.631,0.456,1.106,0.664,1.419,0.664h27.376c0.208,0,0.56-0.091,1.068-0.248c0.488-0.156,0.892-0.573,1.224-1.243H54.4v8.913 H19.954c-0.768-1.875-2.012-3.451-3.711-4.707c-1.712-1.263-3.659-1.895-5.859-1.895c-2.858,0-5.287,1.016-7.337,3.047 C1.003,11.185,0,13.632,0,16.503c0,2.852,1.003,5.267,3.047,7.246c2.051,1.999,4.479,2.975,7.337,2.975 c3.288,0,5.878-1.205,7.734-3.639l22.435,8.417l2.962,7.402c0.436,0.892,1.016,1.731,1.731,2.578c0.716,0.82,2.24,1.224,4.551,1.224 h9.974v6.771H43.515c-0.879,0-1.595,0.703-1.595,1.575s0.716,1.575,1.595,1.575h49.003c0.494,0,0.898-0.26,1.158-0.631l5.859-5.912 C100.154,45.468,100.154,44.472,99.536,43.84z M81.281,17.33c1.419,0.417,2.663,1.12,3.698,2.044 c1.048,0.944,2.012,2.396,2.903,4.375c0.208,0.664,0.488,1.387,0.82,2.155c0.319,0.749,0.651,1.576,0.983,2.468h-8.405V17.33z M8.49,19.146c0.807,0.541,1.667,0.983,2.559,1.296l3.307,1.328c-1.224,0.879-2.559,1.315-3.971,1.315 c-1.875,0-3.47-0.632-4.798-1.888c-1.315-1.263-1.959-2.819-1.959-4.694c0-1.888,0.645-3.444,1.959-4.707 c1.328-1.263,2.923-1.888,4.798-1.888c2.304,0,4.108,0.925,5.442,2.8h-4.622c-1.087,0-2.031,0.312-2.8,0.996 c-0.768,0.645-1.139,1.575-1.139,2.799C7.266,17.714,7.669,18.587,8.49,19.146z M69.732,16.835h7.422v11.38h-7.422V16.835z M58.358,16.992h7.259v11.38h-7.259V16.992z M62.382,42.707h11.901v6.771H62.382V42.707z"
+ id="path3"
+ style="fill:#ffffff" />
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/all_seasons.svg b/main/project/attributes/svgs/all_seasons.svg
new file mode 100644
index 0000000..0b2adb3
--- /dev/null
+++ b/main/project/attributes/svgs/all_seasons.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="100.85667"
+ height="83.151756"
+ viewBox="0 0 100.85667 83.151758"
+ enable-background="new 0 0 100 91.67"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="all_seasons.svg"><metadata
+ id="metadata11"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs9" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview7"
+ showgrid="false"
+ inkscape:zoom="2.5744519"
+ inkscape:cx="66.677139"
+ inkscape:cy="33.524693"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+
+
+<path
+ inkscape:connector-curvature="0"
+ id="path2988"
+ style="font-size:56.13730240000000293px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ d="m 26.79726,53.913232 c 2.745996,-0.762444 5.179339,-0.732481 7.300037,0.08989 2.127348,0.797474 3.871733,2.375204 5.233159,4.733192 2.028372,3.513313 2.227334,6.96448 0.596888,10.353511 -1.639632,3.373239 -5.039011,6.549168 -10.198146,9.527798 -1.81996,1.050753 -3.73462,1.955724 -5.743983,2.714915 -1.984419,0.76589 -4.039804,1.372295 -6.166162,1.819217 L 13.74855,76.101438 c 2.202562,-0.132195 4.270516,-0.460996 6.20387,-0.986403 1.940032,-0.550349 3.72507,-1.29608 5.355118,-2.237196 2.421309,-1.397936 4.030778,-2.886334 4.82841,-4.4652 0.813428,-1.587967 0.767873,-3.165328 -0.136668,-4.732085 -0.93198,-1.61419 -2.3002,-2.449012 -4.10466,-2.504467 -1.797794,-0.08037 -3.986472,0.624094 -6.566043,2.11339 l -3.65572,2.110631 -3.398939,-5.887134 3.845628,-2.220275 c 2.294714,-1.324824 3.798299,-2.667688 4.510761,-4.028595 0.703314,-1.376667 0.630108,-2.800908 -0.219621,-4.272727 -0.78578,-1.360965 -1.939369,-2.098144 -3.46077,-2.21154 -1.521404,-0.113316 -3.279119,0.405631 -5.27315,1.556846 -1.471778,0.849771 -2.8634478,1.874811 -4.1750137,3.075121 -1.31155,1.20038 -2.5238258,2.554413 -3.6368308,4.062104 L -5.0501485e-7,48.779667 C 1.5117534,47.231677 3.0807615,45.819391 4.7070286,44.542804 6.3333171,43.266301 8.0010392,42.134634 9.7101999,41.147801 14.315458,38.489003 18.196101,37.261352 21.35214,37.464845 c 3.162716,0.178628 5.62122,1.787177 7.375523,4.825651 1.196922,2.073198 1.633159,4.089676 1.308707,6.049437 -0.333618,1.944011 -1.41332,3.801775 -3.23911,5.573299" /><path
+ inkscape:connector-curvature="0"
+ id="path2990"
+ style="font-size:56.13730240000000293px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ d="m 52.103381,41.455021 c -1.598395,0.922857 -2.499623,2.139508 -2.703688,3.649958 -0.197385,1.485534 0.302393,3.264868 1.499336,5.338004 1.196931,2.073174 2.492557,3.403573 3.886885,3.991203 1.400996,0.562697 2.900693,0.382624 4.499095,-0.540221 1.614197,-0.93195 2.519993,-2.140689 2.717391,-3.626219 0.204052,-1.510455 -0.292381,-3.302268 -1.489302,-5.375448 -1.196953,-2.073131 -2.495924,-3.39105 -3.896918,-3.95376 -1.39433,-0.587616 -2.898595,-0.415455 -4.512799,0.516483 m 1.47273,-23.544231 3.782689,6.551809 c -1.914608,0.155901 -3.632519,0.45141 -5.153738,0.886529 -1.530371,0.419382 -2.928578,0.994528 -4.194623,1.72544 -2.722009,1.571592 -4.404069,3.555569 -5.046184,5.951936 -0.65125,2.380614 -0.24461,5.131606 1.219921,8.252984 0.596782,-1.378464 1.394816,-2.609389 2.394103,-3.692778 0.990148,-1.099152 2.205287,-2.064474 3.645423,-2.895968 3.62406,-2.092321 7.156059,-2.717766 10.596009,-1.87634 3.455742,0.832363 6.174978,2.965605 8.157714,6.399732 2.192837,3.798178 2.709384,7.561856 1.549642,11.291048 -1.16893,3.713404 -3.842363,6.77617 -8.020307,9.188308 -4.605271,2.658853 -9.069365,3.168319 -13.392295,1.528398 -4.31625,-1.664866 -8.123588,-5.353828 -11.422024,-11.066892 -3.380653,-5.855458 -4.563147,-11.302532 -3.547484,-16.341239 1.022373,-5.063599 4.105215,-9.080165 9.248538,-12.049713 1.63004,-0.941055 3.285696,-1.728143 4.966976,-2.361264 1.68127,-0.633022 3.419816,-1.130351 5.21564,-1.49199" /><path
+ inkscape:connector-curvature="0"
+ id="path2992"
+ style="font-size:56.13730240000000293px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ d="M 59.742776,13.116064 82.460466,0 l 3.878627,6.717979 -15.429988,8.908508 3.165947,5.48358 c 0.586685,-0.591901 1.200779,-1.136357 1.842286,-1.633367 0.648193,-0.521909 1.352105,-1.002165 2.111737,-1.440771 4.32039,-2.494346 8.309211,-3.351887 11.966477,-2.572626 3.6481,0.763506 6.586858,3.075968 8.816295,6.937387 2.211103,3.829829 2.629033,7.587145 1.253763,11.271966 -1.359493,3.675718 -4.365591,6.856696 -9.018306,9.542943 -2.009868,1.160397 -4.118108,2.11383 -6.324722,2.860299 -2.181673,0.753169 -4.474201,1.296031 -6.877595,1.628588 l -4.152735,-7.192748 c 2.570311,-0.0069 4.877857,-0.231371 6.922646,-0.67341 2.060604,-0.451153 3.858451,-1.119877 5.393547,-2.006172 2.215575,-1.279155 3.645737,-2.822287 4.290491,-4.629401 0.651412,-1.83204 0.442615,-3.673867 -0.62639,-5.525487 -1.078172,-1.867398 -2.568842,-2.969136 -4.472018,-3.305214 -1.887369,-0.34516 -3.938842,0.12183 -6.154424,1.400974 -1.31353,0.75839 -2.61359,1.741089 -3.900186,2.9481 -1.295732,1.191231 -2.592601,2.636306 -3.890609,4.335227 L 59.742776,13.116064" /></svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/arithmetic.svg b/main/project/attributes/svgs/arithmetic.svg
new file mode 100644
index 0000000..5218290
--- /dev/null
+++ b/main/project/attributes/svgs/arithmetic.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="65.302078"
+ height="47.402363"
+ viewBox="0 0 65.302078 47.402361"
+ enable-background="new 0 0 100 52.629"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="arithmetic.svg"><metadata
+ id="metadata9"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs7" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1317"
+ inkscape:window-height="744"
+ id="namedview5"
+ showgrid="false"
+ inkscape:zoom="3.21"
+ inkscape:cx="95.326583"
+ inkscape:cy="32.969261"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="Layer_1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+
+<path
+ style="font-size:40px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ inkscape:connector-curvature="0"
+ id="path2987"
+ d="M 9.038533,42.626194 15.143407,40.013071 7.726748,22.686001 2.013642,26.661092 0,21.956748 l 5.677195,-3.959719 6.571718,-2.812951 9.4303,22.031414 6.104874,-2.613123 2.044385,4.776165 -18.745555,8.023826 -2.044384,-4.776166" /><path
+ style="font-size:40px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ inkscape:connector-curvature="0"
+ id="path2989"
+ d="m 29.963191,12.041941 3.426949,8.006165 7.975607,-3.41387 1.543436,3.60583 -7.975607,3.41387 3.426949,8.006164 -3.636388,1.556515 -3.426949,-8.006164 -7.975606,3.413869 -1.543436,-3.60583 7.975607,-3.413869 -3.426949,-8.006165 3.636387,-1.556515" /><path
+ style="font-size:40px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ inkscape:connector-curvature="0"
+ id="path2991"
+ d="M 44.512136,27.442114 50.61701,24.828991 43.200351,7.5019212 37.487245,11.477012 35.473603,6.7726682 41.150798,2.8129492 47.722516,-8.0871583e-7 57.152817,22.031412 63.257691,19.418289 65.302075,24.194455 46.55652,32.21828 44.512136,27.442114" /></svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/ask_owner.svg b/main/project/attributes/svgs/ask_owner.svg
new file mode 100644
index 0000000..a1871a8
--- /dev/null
+++ b/main/project/attributes/svgs/ask_owner.svg
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="75.3125"
+ height="59.812263"
+ viewBox="0 0 75.3125 59.812261"
+ enable-background="new 0 0 100 71.313"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="ask_owner.svg"><metadata
+ id="metadata2916"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs2914"><inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 35.656502 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 35.656502 : 1"
+ inkscape:persp3d-origin="50 : 23.771001 : 1"
+ id="perspective2918" /></defs><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1098"
+ inkscape:window-height="642"
+ id="namedview2912"
+ showgrid="false"
+ inkscape:zoom="3.3093544"
+ inkscape:cx="31"
+ inkscape:cy="38.03076"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+
+
+
+
+
+<path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4.9000001;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
+ d="M 37.65625,-1.7700195e-6 C 27.49189,-1.7700195e-6 18.255502,2.7267332 11.40625,7.3124982 4.556998,11.898263 0,18.502631 0,25.999998 c 0,5.355626 2.34397,10.332519 6.15625,14.34375 1.26023,1.325997 2.503244,1.654466 3.25,2.03125 -2.488121,7.244356 -3.613426,11.18787 -3.3125,14.0625 0.07943,0.758796 0.25103,1.62278 1,2.40625 0.74897,0.78347 2.023479,1.06967 2.84375,0.9375 1.640542,-0.264339 2.423979,-1.075557 3.40625,-1.9375 1.964543,-1.723886 4.066865,-4.223199 5.84375,-6.25 0.841134,-0.959439 1.587644,-1.775469 2.125,-2.3125 5.307041,2.383685 9.129306,2.75 16.34375,2.75 10.16436,0 19.400748,-2.726735 26.25,-7.3125 C 70.755502,40.132983 75.3125,33.497365 75.3125,25.999998 75.3125,18.502631 70.755502,11.898263 63.90625,7.3124982 57.056998,2.7267332 47.82061,-1.7700195e-6 37.65625,-1.7700195e-6 z m 0,4.9062499700195 c 9.277852,0 17.639435,2.524016 23.53125,6.4687498 5.891815,3.944734 9.21875,9.105263 9.21875,14.625 0,5.519737 -3.326935,10.711515 -9.21875,14.65625 -5.891815,3.944735 -14.253398,6.46875 -23.53125,6.46875 -7.755881,0 -9.956806,-0.06862 -15.53125,-2.8125 -0.853362,-0.420046 -1.600433,-0.265966 -2.03125,-0.125 -0.430817,0.140966 -0.678347,0.314422 -0.90625,0.46875 -0.455807,0.308655 -0.811063,0.631217 -1.1875,1 -0.752873,0.737565 -1.563715,1.686423 -2.46875,2.71875 -1.349977,1.539849 -2.737185,2.987826 -4.03125,4.3125 0.477398,-2.191888 1.291513,-5.246308 2.84375,-9.71875 0.404103,-1.164337 -0.01312,-2.700605 -0.65625,-3.46875 -0.643127,-0.768145 -1.295568,-1.127909 -1.875,-1.4375 -1.158864,-0.619182 -2.196522,-1.201886 -2.09375,-1.09375 -3.129362,-3.292673 -4.8125,-7.025812 -4.8125,-10.96875 0,-5.519737 3.326935,-10.680266 9.21875,-14.625 5.891815,-3.9447338 14.253397,-6.4687498 23.53125,-6.4687498 z"
+ id="path2987"
+ inkscape:connector-curvature="0" /><text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ x="26.628235"
+ y="39.609749"
+ id="text3762"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3764"
+ x="26.628235"
+ y="39.609749">?</tspan></text>
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/available.svg b/main/project/attributes/svgs/available.svg
index e1871e7..391f2bf 100644
--- a/main/project/attributes/svgs/available.svg
+++ b/main/project/attributes/svgs/available.svg
@@ -30,7 +30,7 @@
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="0.74023945"
inkscape:cx="165.71217"
diff --git a/main/project/attributes/svgs/breeding.svg b/main/project/attributes/svgs/breeding.svg
new file mode 100644
index 0000000..2197086
--- /dev/null
+++ b/main/project/attributes/svgs/breeding.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="51.66148"
+ height="75.355843"
+ viewBox="0 0 51.661482 75.355844"
+ enable-background="new 0 0 100 91.67"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="breeding.svg"><metadata
+ id="metadata11"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs9" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview7"
+ showgrid="false"
+ inkscape:zoom="2.5744519"
+ inkscape:cx="35.214133"
+ inkscape:cy="47.89668"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+
+
+<path
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ d="m 51.66148,46.611861 c 0,20.808942 -11.564816,28.74398 -25.83074,28.74398 C 11.564816,75.355841 0,67.420803 0,46.611861 0,25.80292 11.564816,-5.5933571e-7 25.83074,-5.5933571e-7 40.096664,-5.5933571e-7 51.66148,25.80292 51.66148,46.611861 z"
+ id="path2984"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sssss" /></svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/cave.svg b/main/project/attributes/svgs/cave.svg
new file mode 100644
index 0000000..81d37fd
--- /dev/null
+++ b/main/project/attributes/svgs/cave.svg
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="96.648315"
+ height="91.324417"
+ viewBox="0 0 96.648315 91.324417"
+ enable-background="new 0 0 100 100"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="cave.svg"><metadata
+ id="metadata17"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs15" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview13"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="2.36"
+ inkscape:cx="48.458464"
+ inkscape:cy="45.507205"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" />
+<path
+ clip-rule="evenodd"
+ d="m 46.907464,77.122209 10.893,-22.282 -0.926,-3.263 -6.188,6.407 c -1.939,1.721 -4.82,-1.219 -2.925,-3.116 l 10.76,-12.333 c 1.177,-0.837 1.705,-1.131 2.908,-1.762 1.354,-0.632 1.648,-0.632 2.914,0.513 l 9.627,9.805 c 0.353,0.383 0.47,0.294 0.604,1.131 v 4.806 c 0,2.133 -3.97,2.104 -4,-0.027 v -3.75 l -3.602,-2.586 -1.307,3.57 c 2.997,8.012 5.451,15.273 8.451,23.254 1.354,3.78 -3.291,5.631 -5.13,1.972 l -7.495,-19.919 c -3.381,6.852 -6.365,13.35 -9.747,20.169 -1.926,3.527 -6.689,0.809 -4.837,-2.589 z"
+ id="path3"
+ inkscape:connector-curvature="0"
+ style="fill-rule:evenodd;fill:#ffffff" />
+<path
+ d="m 71.804464,81.730209 c -1.271,0 -2.392,-0.78 -3.075,-2.141 l -7.272,-19.324 c -1.525,3.103 -2.992,6.174 -4.412,9.15 -1.618,3.389 -3.291,6.893 -5.042,10.423 -0.63,1.155 -1.635,1.812 -2.763,1.812 -1.056,0 -2.089,-0.591 -2.632,-1.505 -0.563,-0.949 -0.547,-2.071 0.047,-3.161 l 10.838,-22.172 -0.759,-2.676 -5.841,6.048 c -0.453,0.403 -0.971,0.608 -1.514,0.608 0,0 0,0 0,0 -0.981,0 -1.945,-0.673 -2.345,-1.636 -0.367,-0.885 -0.176,-1.793 0.523,-2.492 l 10.747,-12.319 c 1.231,-0.885 1.766,-1.185 2.991,-1.827 0.653,-0.305 1.051,-0.458 1.445,-0.458 0.576,0 1.038,0.327 1.796,1.012 l 9.639,9.816 c 0.077,0.084 0.138,0.14 0.19,0.188 0.27,0.251 0.383,0.411 0.492,1.099 l 0.004,4.852 c 0,1.287 -1.17,1.873 -2.257,1.873 -1.139,0 -2.302,-0.651 -2.319,-1.896 v -3.606 l -3.174,-2.278 -1.14,3.114 c 1.448,3.872 2.789,7.626 4.087,11.257 1.372,3.839 2.791,7.809 4.327,11.896 0.426,1.188 0.33,2.308 -0.267,3.155 -0.522,0.744 -1.388,1.187 -2.314,1.188 z m -10.278,-22.911 7.729,20.54 c 0.57,1.131 1.503,1.795 2.548,1.795 0.739,0 1.429,-0.353 1.844,-0.942 0.486,-0.69 0.557,-1.623 0.197,-2.626 -1.536,-4.088 -2.956,-8.06 -4.329,-11.901 -1.308,-3.66 -2.66,-7.444 -4.12,-11.349 l -0.037,-0.1 1.474,-4.026 4.029,2.894 v 3.897 c 0.013,0.909 0.913,1.324 1.743,1.324 0.81,0 1.681,-0.405 1.681,-1.297 v -4.806 c -0.085,-0.512 -0.143,-0.564 -0.313,-0.723 -0.062,-0.058 -0.132,-0.123 -0.215,-0.213 l -9.62,-9.798 c -0.719,-0.649 -1.048,-0.851 -1.397,-0.851 -0.285,0 -0.638,0.14 -1.189,0.397 -1.188,0.623 -1.711,0.917 -2.863,1.736 l -10.71,12.287 c -0.734,0.735 -0.572,1.492 -0.412,1.879 0.308,0.742 1.07,1.28 1.813,1.28 0.406,0 0.781,-0.15 1.116,-0.448 l 6.521,-6.751 1.093,3.85 -10.943,22.382 c -0.499,0.915 -0.519,1.835 -0.063,2.603 0.441,0.743 1.28,1.224 2.137,1.224 0.924,0 1.724,-0.534 2.252,-1.502 1.743,-3.517 3.415,-7.019 5.032,-10.405 1.513,-3.169 3.077,-6.444 4.71,-9.754 l 0.292,-0.596 z"
+ id="path5"
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff" />
+<path
+ clip-rule="evenodd"
+ d="m 58.858464,32.349209 c 2,0 3.646,1.647 3.646,3.632 0,1.998 -1.646,3.63 -3.646,3.63 -1.984,0 -3.63,-1.632 -3.63,-3.63 10e-4,-1.984 1.646,-3.632 3.63,-3.632 z"
+ id="path7"
+ inkscape:connector-curvature="0"
+ style="fill-rule:evenodd;fill:#ffffff" />
+<path
+ d="m 58.858464,39.899209 c -2.16,0 -3.918,-1.758 -3.918,-3.918 0,-2.162 1.758,-3.92 3.918,-3.92 2.169,0 3.934,1.758 3.934,3.92 0,2.16 -1.765,3.918 -3.934,3.918 z m 0,-7.262 c -1.812,0 -3.342,1.531 -3.342,3.344 0,1.843 1.499,3.342 3.342,3.342 1.852,0 3.357,-1.499 3.357,-3.342 0.001,-1.844 -1.505,-3.344 -3.357,-3.344 z"
+ id="path9"
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff" />
+<path
+ clip-rule="evenodd"
+ d="m 0.40146359,19.401209 c -0.765,4.63 1.98400001,11.892 -0.397,16.976 -0.088,6.042 1.16000001,11.54 0.677,17.858 -0.235,2.75 -1,5.939 -0.323,8.645 0.85300001,3.425 3.83600001,8.789 4.60100001,13.023 2.616,1.586 1.529,7.659 4.277,9.835 1.7200004,0.22 5.6890004,0.307 5.6890004,1.704 1.293,0 9.819,0.044 9.819,1.354 4.276,0 8.377,1.982 12.757,2.35 3.999,0.311 7.57,0.397 12.023,-1.307 6.542,0.354 13.566,-0.089 20.153,-0.089 l 14.375,-0.41 c 1.442,0 2.617,-0.544 4.864,-1.941 1.179,-1.176 2.883,-1.984 4.412,-3.425 0.822,-1.852 2.791,-3.16 2.983,-5.498 0.544,-6.939 0.484,-12.479 -0.587,-19.462 l -2.883,-25.017 c -0.54,-5.866 0.223,-12.891 0.764,-18.758 0.224,-3.32 -1.482,-7.5249999 -2.306,-10.4929999 -0.264,0 -2.515,-3.426 -3.688,-3.92499998 -5.001,0.67699998 -13.113,1.67399998 -16.229,1.17599998 -4.453,-0.721 -12.127,-2.66199998 -18.653,-1.76499998 -2.66,0.367 -13.479,0.411 -16.727,1.80799998 l -18.433,0.176 c -4.41,0 -9.1430004,1.266 -12.7000004,3.425 -2.439,4.3819999 -3.836,10.0549999 -4.46800001,13.7599999 M 17.481464,9.1692091 c 1.895,-1.411 7.894,-0.822 9.29,-0.822 1.132,2.2629999 1.852,5.3659999 2.028,12.0819999 l -0.044,8.746 c 0.178,2.381 2.337,2.573 2.337,0 l 0.044,-12.171 c 0,-2.484 1,-6.805 1.544,-7.9359999 1.207,-2.513 2.072,-2.469 3.322,-0.353 1.588,2.5279999 2.22,8.2889999 2.22,10.1419999 0.264,1.837 2.16,1.662 2.073,0 0,-2.617 1.484,-10.0989999 3.909,-12.1259999 1.31,-1.088 2.617,-1.176 5.557,-1.044 0.485,0.736 0.896,2.263 1.117,3.661 0.5,2.9689999 0.853,5.9519999 0.853,7.5249999 0,2.072 2.176,2.47 2.176,-0.087 0,-2.265 0.265,-5.865 0.396,-6.63 0.234,-1.2649999 0.413,-3.2939999 1.677,-3.9239999 1.983,-1.03 5.939,-0.486 6.849,1.264 2.118,4.1429999 3.47,11.5819999 3.146,16.8589999 -0.131,2.924 2.439,2.66 2.439,0 0,-1.486 0.044,-5.012 0.501,-6.174 0.677,-1.718 1.617,-4.909 2.881,-5.364 0.396,-3.2059999 6.482,-0.896 8.597,-1.178 2.442,-0.263 4.425,-1.7919999 6,-3.0559999 l 1.674,14.0079999 c 0.177,1.529 0.266,4.733 0.809,6.086 0.088,3.792 0.543,10.098 0.81,12.76 l 0.265,16.491 -0.531,13.567 c 0,1.027 -0.819,6.629 -2.114,6.629 0,1.293 -3.792,3.469 -5.102,3.469 0,2.645 -8.202,1.309 -9.776,1.309 l -19.194,-0.236 h -15.969 c -1.308,0 -7.701,0.501 -7.701,-1.072 -3.47,0 -3.97,-8.393 -4.367,-11.01 -0.675,-4.454 -1.719,-8.921 -1.719,-14.228 0.175,-1.896 -1.897,-2.397 -1.897,0 0,5.04 -2.116,8.731 -4.233,13.022 -2.572,-5.585 -6.525,-9.878 -6.525,-17.037 0,-0.853 -0.324,-4.645 -0.235,-7.216 0.044,-1.397 -1.8370004,-1.485 -1.8370004,-0.178 0,0.721 -0.912,6.676 -1.133,7.66 -0.22,1 -0.808,3.704 -1.352,4.278 -1.441,-3.649 -1.808,-11.717 -1.808,-15.45 0,-4.015 -0.545,-9.336 1.043,-12.76 0.764,-1.618 2.881,-4.645 2.116,-6.482 0.265,-0.588 0.265,-0.323 0,-0.867 0.265,-0.765 0,-3.558 1.574,-3.558 0,-0.499 3.3360004,-2.837 3.8370004,-2.837 0.852,-1.896 0.939,-3.792 1.748,-3.792 0,-1.2049999 1.853,-1.6609999 2.705,-1.9699999 z"
+ id="path11"
+ inkscape:connector-curvature="0"
+ style="fill-rule:evenodd;fill:#ffffff" />
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/compass.svg b/main/project/attributes/svgs/compass.svg
new file mode 100644
index 0000000..ac987a0
--- /dev/null
+++ b/main/project/attributes/svgs/compass.svg
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="91.990845"
+ height="91.990845"
+ viewBox="0 0 73.592676 73.592676"
+ version="1.1"
+ id="svg2"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="compass.svg">
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8">
+ <marker
+ inkscape:stockid="Arrow1Send"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Send"
+ style="overflow:visible">
+ <path
+ id="path3785"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Sstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Sstart"
+ style="overflow:visible">
+ <path
+ id="path3800"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(0.3,0,0,0.3,-0.69,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible">
+ <path
+ id="path3770"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1317"
+ inkscape:window-height="744"
+ id="namedview6"
+ showgrid="true"
+ inkscape:zoom="6.4897761"
+ inkscape:cx="26.58027"
+ inkscape:cy="53.231157"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg2"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3761"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ originx="-2.8546916px"
+ originy="-3.48913px" />
+ </sodipodi:namedview>
+ <g
+ id="g3041"
+ transform="matrix(-0.24587194,0.37331924,-0.37331924,-0.24587194,80.184655,21.506857)"
+ style="fill:#ffffff;stroke:none" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
+ d="m 36.773341,0 c 20.297027,0 36.819337,16.522311 36.819337,36.819337 0,20.297026 -16.52231,36.773341 -36.819337,36.773341 C 16.476315,73.592678 0,57.116363 0,36.819337 0,16.522311 16.476315,0 36.773341,0 z m 0,4.231579 c -18.0129,0 -32.564759,14.574858 -32.564759,32.587758 0,18.0129 14.551859,32.564759 32.564759,32.564759 18.0129,0 32.587758,-14.551859 32.587758,-32.564759 0,-18.0129 -14.574858,-32.587758 -32.587758,-32.587758 z M 57.2873,12.510755 54.757552,19.80103 c -0.153918,-0.572714 -0.420647,-1.108248 -0.758925,-1.563844 l -13.821624,16.88032 c 0.295786,0.529973 0.482952,1.120792 0.482952,1.770824 0,2.032206 -1.647428,3.679634 -3.679634,3.679634 -0.388659,0 -0.752212,-0.0723 -1.10389,-0.183982 l -12.717735,15.546453 -1.517849,4.346568 c -0.511637,-1.903761 -2.168541,-3.28056 -4.11659,-3.380664 l 3.886613,-2.299771 12.671739,-15.47746 c -0.48247,-0.622436 -0.781922,-1.382291 -0.781922,-2.230778 0,-2.032206 1.647428,-3.679634 3.679634,-3.679634 0.582748,0 1.120144,0.1498 1.60984,0.390961 L 52.296797,16.857323 c -0.51414,-0.243378 -1.064463,-0.406568 -1.655836,-0.436957 L 57.2873,12.510755 z"
+ id="path2991"
+ inkscape:connector-curvature="0" />
+ <g
+ id="g5321"
+ transform="translate(-2.2837533,-3.6160183)"
+ style="fill:#ffffff" />
+ <text
+ xml:space="preserve"
+ style="font-size:18.88252449px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ x="28.894814"
+ y="20.38398"
+ id="text2993"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2995"
+ x="28.894814"
+ y="20.38398">N</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18.88252449px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ x="30.010431"
+ y="66.812782"
+ id="text2997"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2999"
+ x="30.010431"
+ y="66.812782">S</tspan></text>
+</svg>
diff --git a/main/project/attributes/svgs/cow.svg b/main/project/attributes/svgs/cow.svg
index 52d6b91..2ed795b 100644
--- a/main/project/attributes/svgs/cow.svg
+++ b/main/project/attributes/svgs/cow.svg
@@ -83,7 +83,7 @@
inkscape:current-layer="Layer_1"
inkscape:cx="206.40401"
inkscape:cy="136.384"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-height="510"
inkscape:window-width="787"
diff --git a/main/project/attributes/svgs/danger.svg b/main/project/attributes/svgs/danger.svg
index c4d2dae..70ffef7 100644
--- a/main/project/attributes/svgs/danger.svg
+++ b/main/project/attributes/svgs/danger.svg
@@ -121,7 +121,7 @@
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="9.6300965"
inkscape:cx="19.532217"
diff --git a/main/project/attributes/svgs/day.svg b/main/project/attributes/svgs/day.svg
new file mode 100644
index 0000000..717779e
--- /dev/null
+++ b/main/project/attributes/svgs/day.svg
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="100px"
+ height="99.663px"
+ viewBox="0 0 100 99.663"
+ enable-background="new 0 0 100 99.663"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="day.svg"><metadata
+ id="metadata20"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs18" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview16"
+ showgrid="false"
+ inkscape:zoom="2.36798"
+ inkscape:cx="50"
+ inkscape:cy="49.831501"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" />
+<path
+ id="path2638"
+ d="M47.8,0h4.473v16.999H47.8V0z"
+ style="fill:#ffffff" />
+<path
+ id="path2640"
+ d="M47.536,82.663h4.472v17h-4.472V82.663z"
+ style="fill:#ffffff" />
+<path
+ id="path2642"
+ d="M83.003,46.546H100v4.459H83.003V46.546z"
+ style="fill:#ffffff" />
+<path
+ id="path2644"
+ d="M0,46.269h16.999v4.473H0V46.269z"
+ style="fill:#ffffff" />
+<path
+ id="path2646"
+ d="M6.473,25.4l2.17-3.906l14.853,8.235l-2.171,3.918L6.473,25.4z"
+ style="fill:#ffffff" />
+<path
+ id="path2648"
+ d="M24.304,7.222l3.785-2.376l9.018,14.419l-3.786,2.363L24.304,7.222z"
+ style="fill:#ffffff" />
+<path
+ id="path2650"
+ d="M64.728,78.916l3.856-2.219l8.499,14.721l-3.857,2.229L64.728,78.916z"
+ style="fill:#ffffff" />
+<path
+ id="path2652"
+ d="M77.723,67.028l2.17-3.905l14.876,8.235l-2.182,3.918L77.723,67.028z"
+ style="fill:#ffffff" />
+<path
+ id="path2654"
+ d="M27.1,93.852l-3.905-2.17l8.235-14.876l3.918,2.159L27.1,93.852z"
+ style="fill:#ffffff" />
+<path
+ id="path2656"
+ d="M7.342,74.962L4.99,71.177l14.407-9.019l2.363,3.787L7.342,74.962z"
+ style="fill:#ffffff" />
+<path
+ id="path2658"
+ d="M79.324,35.069l-2.241-3.881l14.719-8.5l2.243,3.882L79.324,35.069z"
+ style="fill:#ffffff" />
+<path
+ id="path2660"
+ d="M67.956,22.327l-3.918-2.181l8.246-14.853l3.907,2.171L67.956,22.327z"
+ style="fill:#ffffff" />
+<path
+ id="path2662"
+ d="M22.436,49.777c0-15.25,12.369-27.62,27.619-27.62c15.238,0,27.597,12.37,27.597,27.62 c0,15.25-12.358,27.605-27.597,27.605C34.805,77.385,22.436,65.027,22.436,49.777"
+ style="fill:#ffffff" />
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/fee.svg b/main/project/attributes/svgs/fee.svg
index 1dd8742..a992a01 100644
--- a/main/project/attributes/svgs/fee.svg
+++ b/main/project/attributes/svgs/fee.svg
@@ -79,7 +79,7 @@
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="13.26182"
inkscape:cx="10.99608"
diff --git a/main/project/attributes/svgs/field_puzzle.svg b/main/project/attributes/svgs/field_puzzle.svg
index 3a68bbf..864e1ab 100644
--- a/main/project/attributes/svgs/field_puzzle.svg
+++ b/main/project/attributes/svgs/field_puzzle.svg
@@ -12,9 +12,9 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg1"
sodipodi:version="0.32"
- inkscape:version="0.47 r22583"
- width="291.81256"
- height="364.14044"
+ inkscape:version="0.48.3.1 r9886"
+ width="719.26666"
+ height="650.47516"
sodipodi:docname="field_puzzle.svg"
version="1.1">
<metadata
@@ -123,23 +123,28 @@
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
- inkscape:zoom="0.856"
- inkscape:cx="221.47559"
- inkscape:cy="148.46875"
- inkscape:window-width="1280"
- inkscape:window-height="749"
+ inkscape:zoom="0.88438199"
+ inkscape:cx="364.43492"
+ inkscape:cy="312.95131"
+ inkscape:window-width="1317"
+ inkscape:window-height="744"
showgrid="true"
- inkscape:window-x="0"
+ inkscape:window-x="49"
inkscape:window-y="24"
inkscape:window-maximized="1"
- inkscape:current-layer="svg1" />
+ inkscape:current-layer="svg1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
<path
sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccc"
id="path1248"
- d="m 141.5625,6.2966911 c -15.19944,0.559541 -32.24863,5.6533059 -41.34375,16.5624999 -13.22926,28.187733 18.90771,15.172914 22.6875,34.6875 C 126.68604,77.061281 104,78.140441 104,78.140441 l 0,0 -97.75,0 c 0,0 0.125,96.937509 0.125,96.937499 0,0 1.07917,22.68603 20.59375,18.90625 15.8556,-3.07108 10.23276,-24.87804 22.6875,-25.84375 2.87417,-0.22286 6.7148,0.67576 12,3.15625 10.9092,9.09512 16.00296,26.14431 16.5625,41.34375 0.20656,5.61095 -0.2833,10.88794 -1.25,15.5 -0.0248,0.20469 -0.0673,0.42017 -0.0937,0.625 -1.69391,13.11441 -6.7618,26.4178 -15.96875,34.09375 -28.18774,13.22927 -15.17291,-18.90772 -34.6875,-22.6875 -14.2182,-2.75393 -18.61045,8.47834 -19.96875,14.8125 l 0,102.90625 c 0,0 98.09376,-0.78126 98.09375,-0.78125 0,0 22.68603,-1.07918 18.90625,-20.59375 -3.77979,-19.51459 -35.88551,-6.49978 -22.65625,-34.6875 9.09512,-10.9092 26.11306,-16.00297 41.3125,-16.5625 5.61095,-0.20656 10.88796,0.28329 15.5,1.25 0.20469,0.0248 0.42018,0.0673 0.625,0.0937 13.11441,1.69391 26.44906,6.76179 34.125,15.96875 13.22927,28.18774 -18.90771,15.1729 -22.6875,34.6875 -3.77979,19.51458 18.90625,20.59374 18.90625,20.59375 l 97.1875,0.0312 c 0,0 -0.62501,-98.25001 -0.625,-98.25 0,0 -1.07918,-22.68605 -20.59375,-18.90625 -19.51459,3.77979 -6.49978,35.91675 -34.6875,22.6875 -10.9092,-9.09512 -16.00297,-26.14431 -16.5625,-41.34375 -0.20656,-5.61095 0.28329,-10.88795 1.25,-15.5 0.0248,-0.20469 0.0673,-0.42019 0.0937,-0.625 1.69391,-13.11441 6.76179,-26.41782 15.96875,-34.09375 5.2852,-2.48049 9.12583,-3.37911 12,-3.15625 12.45474,0.96571 6.83189,22.74142 22.6875,25.8125 18.2079,3.5267 20.26129,-15.33972 20.46875,-17.96875 l 0,-98.406249 -102.15625,0 c -6.40559,-1.48184 -16.96423,-5.99178 -14.28125,-19.84365 3.77978,-19.514589 35.88552,-6.49976 22.65625,-34.6875 C 184.1053,14.402247 170.80191,9.3343571 157.6875,7.6404411 c -0.20483,-0.02645 -0.42031,-0.06894 -0.625,-0.09375 -4.61205,-0.966697 -9.88905,-1.456557 -15.5,-1.25 z"
- style="fill:#ffffff;stroke:#ffffff;stroke-width:12.50000000000000000;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" />
+ d="m 126.46467,264.30285 c -14.85205,3.27915 -30.709774,11.35094 -37.698638,23.71571 -7.953883,30.10477 21.324458,11.53197 28.546218,30.05093 7.22177,18.51897 -14.90196,23.65334 -14.90196,23.65334 l 0,0 -96.1618669,17.54871 c 0,0 17.5258129,95.34014 17.5258109,95.34013 0,0 5.134379,22.12371 23.653339,14.90196 15.046656,-5.86769 5.600244,-26.3109 17.679263,-29.49688 2.787465,-0.73523 6.727023,-0.5407 12.371668,0.95066 12.364775,6.98886 20.436557,22.84659 23.715706,37.69863 1.21052,5.48271 1.67598,10.7619 1.55297,15.47258 0.0123,0.20582 0.009,0.42543 0.02,0.63167 0.68799,13.20544 -1.90925,27.20251 -9.58858,36.40665 C 67.823852,549.25172 74.857793,515.30034 54.981683,515.08536 40.50008,514.92871 38.19568,526.76702 37.996597,533.24212 l 18.474391,101.23435 c 0,0 96.359792,-18.37899 96.359782,-18.37898 0,0 22.12371,-5.13439 14.90196,-23.65334 -7.22176,-18.51896 -36.46936,0.0482 -28.51548,-30.05654 6.98887,-12.36477 22.81585,-20.43096 37.6679,-23.7101 5.4827,-1.21051 10.76192,-1.67598 15.47258,-1.55296 0.20581,-0.0123 0.42543,-0.009 0.63166,-0.02 13.20545,-0.68799 27.23327,1.90363 36.43739,9.58297 18.07478,25.35477 -15.87658,18.32082 -16.09157,38.19694 -0.215,19.8761 22.2962,16.86499 22.2962,16.865 l 95.61411,-17.41703 c 0,0 -18.25333,-96.54156 -18.25331,-96.54155 0,0 -5.1344,-22.12373 -23.65334,-14.90196 -18.51897,7.22177 0.0538,36.5001 -30.05093,28.54622 -12.36478,-6.98886 -20.43657,-22.84659 -23.71571,-37.69863 -1.21052,-5.48271 -1.67599,-10.76192 -1.55297,-15.47258 -0.0123,-0.20582 -0.009,-0.42545 -0.02,-0.63167 -0.68799,-13.20544 1.90924,-27.20253 9.58858,-36.40664 4.75402,-3.38903 8.37093,-4.96254 11.23841,-5.25929 12.42576,-1.28594 10.80358,21.14544 26.95293,21.32012 18.54521,0.2006 17.17822,-18.72794 16.91033,-21.3515 L 281.02299,309.1275 180.52645,327.46724 c -6.56754,-0.30779 -17.76429,-2.8489 -17.61168,-16.95739 0.21499,-19.87611 34.13561,-12.83656 16.06083,-38.19133 -9.20413,-7.67933 -23.2012,-10.27657 -36.40664,-9.58858 -0.20625,0.0107 -0.42586,0.008 -0.63168,0.02 -4.71066,-0.12301 -9.98987,0.34245 -15.47258,1.55297 z"
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:12.5;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:connector-curvature="0" />
<metadata
id="metadata3119">
<rdf:RDF>
@@ -170,14 +175,20 @@
</metadata>
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- id="text3169" />
+ id="text3169"
+ transform="translate(9.603191,310.90723)" />
<g
- style="font-size:40px;font-style:normal;font-weight:bold;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Charter"
- id="text3176"
- transform="matrix(5.5154304,0,0,5.43759,-1190.8092,-611.64085)">
+ id="g3030"
+ transform="matrix(1.3065793,0,0,1.3065793,-85.854751,206.80272)">
<path
- d="m 245.15607,150.20297 -7.05078,0 0,-0.95703 c -1e-5,-1.0677 0.21483,-2.0117 0.64453,-2.83203 0.42968,-0.83332 1.33462,-1.88801 2.71484,-3.16406 l 1.25,-1.13282 c 0.74218,-0.67706 1.28254,-1.31508 1.62109,-1.91406 0.35155,-0.59894 0.52733,-1.19789 0.52735,-1.79687 -2e-5,-0.91144 -0.31252,-1.62107 -0.9375,-2.12891 -0.62501,-0.52081 -1.49741,-0.78122 -2.61719,-0.78125 -1.0547,3e-5 -2.19402,0.22138 -3.41797,0.66406 -1.22396,0.42971 -2.5,1.07425 -3.82812,1.9336 l 0,-6.13282 c 1.57551,-0.54684 3.01431,-0.95049 4.3164,-1.21093 1.30208,-0.26039 2.55859,-0.3906 3.76953,-0.39063 3.17707,3e-5 5.59895,0.65107 7.26563,1.95313 1.66665,1.28909 2.49998,3.17711 2.5,5.66406 -2e-5,1.27606 -0.25393,2.42189 -0.76172,3.4375 -0.50783,1.00262 -1.37372,2.08335 -2.59766,3.24219 l -1.25,1.11328 c -0.88543,0.8073 -1.46485,1.45834 -1.73828,1.95312 -0.27345,0.48179 -0.41017,1.01564 -0.41015,1.60157 l 0,0.8789 m -7.05078,2.89063 7.05078,0 0,6.95312 -7.05078,0 0,-6.95312"
- id="path3181"
- style="fill:#ff0000" />
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0"
+ id="path3"
+ d="m 378.21774,-51.521019 c 27.59538,0 49.98813,-23.892812 49.98813,-53.361091 0,-29.4943 -22.39275,-53.39586 -49.98813,-53.39586 -27.5997,0 -49.97943,23.90156 -49.97943,53.39586 0,29.468279 22.37973,53.361091 49.97943,53.361091 z" />
+ <path
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0"
+ id="path5"
+ d="m 536.68409,205.47141 c 4.41783,-13.97437 -4.4309,-106.173417 -4.4309,-106.173417 l -55.21672,-111.733416 22.09365,-11.176407 41.9718,72.633904 30.92068,-27.938512 -37.55828,-89.401073 -99.3997,-5.57024 c -6.62465,13.969259 -48.59645,41.892309 -57.43217,44.700566 -8.83572,2.797914 -4.42653,89.395903 -4.42653,89.395903 l -61.84136,2.803139 4.41789,58.644123 103.81748,-11.18158 11.05549,-44.695392 c 0,0 15.46037,41.917952 19.86956,50.291322 4.41784,8.37844 -4.40919,19.55485 -4.40919,19.55485 l -59.64762,44.69545 4.41352,159.2473 h 44.18293 l 8.83572,-122.91499 50.81189,-41.90255 -4.43084,86.59799 h 119.2995 l 6.62464,-58.66982 c -13.25793,-25.1559 -83.95666,16.76722 -79.52144,2.79285 z" />
</g>
</svg>
diff --git a/main/project/attributes/svgs/firstaid.svg b/main/project/attributes/svgs/firstaid.svg
index 8a81bcf..639c33e 100644
--- a/main/project/attributes/svgs/firstaid.svg
+++ b/main/project/attributes/svgs/firstaid.svg
@@ -18,7 +18,7 @@
viewBox="0 0 100 99.989"
enable-background="new 0 0 100 99.989"
xml:space="preserve"
- inkscape:version="0.48.0 r9654"
+ inkscape:version="0.48.3.1 r9886"
sodipodi:docname="firstaid.svg"><metadata
id="metadata2909"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
@@ -39,19 +39,19 @@
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="852"
- inkscape:window-height="825"
+ inkscape:window-height="715"
id="namedview2905"
showgrid="false"
inkscape:zoom="2.3602597"
- inkscape:cx="50.000002"
- inkscape:cy="49.994501"
- inkscape:window-x="0"
+ inkscape:cx="-135.99648"
+ inkscape:cy="49.994504"
+ inkscape:window-x="49"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" />
<polygon
points="67.298,0 67.298,32.713 100,32.713 100,67.333 67.562,67.333 67.562,99.989 32.702,99.989 32.702,67.333 0,67.333 0,32.713 32.569,32.713 32.569,0 "
id="polygon2903"
- style="fill:#ff0000"
+ style="fill:#a00000;fill-opacity:1"
transform="matrix(0.79661017,0,0,0.79661017,10.169491,10.168373)" />
</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/flashlight.svg b/main/project/attributes/svgs/flashlight.svg
index c03e0d0..e1878ae 100644
--- a/main/project/attributes/svgs/flashlight.svg
+++ b/main/project/attributes/svgs/flashlight.svg
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
@@ -9,72 +9,75 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- id="Layer_1"
- x="0px"
- y="0px"
- width="100px"
- height="37.836px"
- viewBox="0 0 100 37.836"
- enable-background="new 0 0 100 37.836"
- xml:space="preserve"
- inkscape:version="0.47 r22583"
- sodipodi:docname="flashlight.svg"><metadata
- id="metadata2932"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs2930"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18.917999 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="100 : 18.917999 : 1"
- inkscape:persp3d-origin="50 : 12.612 : 1"
- id="perspective2934" /></defs><sodipodi:namedview
- pagecolor="#009674"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:window-width="640"
- inkscape:window-height="504"
- id="namedview2928"
- showgrid="false"
- inkscape:zoom="5.35"
- inkscape:cx="50"
- inkscape:cy="18.917999"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="0"
- inkscape:current-layer="Layer_1" />
-<polygon
- points="89.408,20.122 89.408,17.714 100,17.714 100,20.122 89.408,20.122 "
- id="polygon2914"
- style="fill:#ffffff" />
-<polygon
- points="87.39,12.591 96.564,7.303 97.767,9.389 88.592,14.677 87.39,12.591 "
- id="polygon2916"
- style="fill:#ffffff" />
-<polygon
- points="83.071,9.158 88.367,0 90.45,1.205 85.154,10.363 83.071,9.158 "
- id="polygon2918"
- style="fill:#ffffff" />
-<polygon
- points="87.392,25.248 88.593,23.162 97.767,28.448 96.565,30.534 87.392,25.248 "
- id="polygon2920"
- style="fill:#ffffff" />
-<polygon
- points="83.069,28.678 85.152,27.473 90.45,36.631 88.367,37.836 83.069,28.678 "
- id="polygon2922"
- style="fill:#ffffff" />
-<path
- d="M85.887,18.918c0-3.82-2.96-6.956-6.707-7.25v-6.35h-6.872C64.61,4.991,60.648,8.939,59.165,10.9H8.015 C3.589,10.9,0,14.489,0,18.915s3.589,8.014,8.015,8.014h51.149c1.389,1.836,4.951,5.413,11.717,5.592v0.015h8.299v-6.368 C82.927,25.875,85.887,22.739,85.887,18.918z M79.18,23.655v-9.472c2.362,0.284,4.202,2.297,4.202,4.736 C83.382,21.356,81.542,23.371,79.18,23.655z"
- id="path2924"
- style="fill:#ffffff" />
-<path
- d="M49.052,6.341h-5.268c-1.511,0-2.734,1.358-2.734,3.034h10.736C51.786,7.699,50.562,6.341,49.052,6.341z"
- id="path2926"
- style="fill:#ffffff" />
-</svg> \ No newline at end of file
+ width="447.49109"
+ height="226.29697"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="flashlight.svg">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0639842"
+ inkscape:cx="307.03029"
+ inkscape:cy="22.827857"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="987"
+ inkscape:window-height="650"
+ inkscape:window-x="377"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-166.79459,-390.63087)">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ d="m 182.85715,446.63651 360,0 0,114.28571 -360,0 c -20.67566,0 -22.14522,-114.28571 0,-114.28571 z"
+ id="rect2985"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sccss" />
+ <path
+ transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ d="m 682.31519,-129.84747 c -0.62895,-2.18845 67.06597,112.546295 160,159.999997 l -160,0 z"
+ id="rect2987"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="path2992"
+ sodipodi:cx="602.85712"
+ sodipodi:cy="508.07648"
+ sodipodi:rx="17.142857"
+ sodipodi:ry="107.14286"
+ d="m 619.99997,508.07648 c 0,59.17336 -7.67512,107.14286 -17.14285,107.14286 -9.46774,0 -17.14286,-47.9695 -17.14286,-107.14286 0,-59.17337 7.67512,-107.14286 17.14286,-107.14286 9.46773,0 17.14285,47.96949 17.14285,107.14286 z"
+ transform="translate(-5.7142857,-4.2971205)" />
+ </g>
+</svg>
diff --git a/main/project/attributes/svgs/frontyard.svg b/main/project/attributes/svgs/frontyard.svg
index 3bb29d7..563ea1e 100644
--- a/main/project/attributes/svgs/frontyard.svg
+++ b/main/project/attributes/svgs/frontyard.svg
@@ -65,7 +65,7 @@
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="1.9598977"
inkscape:cx="172.33799"
diff --git a/main/project/attributes/svgs/hike_long.svg b/main/project/attributes/svgs/hike_long.svg
index d69d1bb..dbff050 100644
--- a/main/project/attributes/svgs/hike_long.svg
+++ b/main/project/attributes/svgs/hike_long.svg
@@ -30,7 +30,7 @@
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="9.2180314"
inkscape:cx="31.884766"
diff --git a/main/project/attributes/svgs/hike_med.svg b/main/project/attributes/svgs/hike_med.svg
index 5bb31e1..f36cb71 100644
--- a/main/project/attributes/svgs/hike_med.svg
+++ b/main/project/attributes/svgs/hike_med.svg
@@ -30,7 +30,7 @@
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="9.2180314"
inkscape:cx="31.777344"
diff --git a/main/project/attributes/svgs/hike_short.svg b/main/project/attributes/svgs/hike_short.svg
index a1c1d97..a6a9263 100644
--- a/main/project/attributes/svgs/hike_short.svg
+++ b/main/project/attributes/svgs/hike_short.svg
@@ -30,7 +30,7 @@
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="6.3619048"
inkscape:cx="24.042967"
diff --git a/main/project/attributes/svgs/hills.svg b/main/project/attributes/svgs/hills.svg
new file mode 100644
index 0000000..e37009e
--- /dev/null
+++ b/main/project/attributes/svgs/hills.svg
@@ -0,0 +1,514 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="177.3125"
+ height="97.59375"
+ viewBox="0 0 177.3125 97.593751"
+ enable-background="new 0 0 77.039 100"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="hills.svg"><metadata
+ id="metadata242"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs240" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1317"
+ inkscape:window-height="744"
+ id="namedview238"
+ showgrid="false"
+ inkscape:zoom="2.36"
+ inkscape:cx="70.253563"
+ inkscape:cy="46.183264"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="Layer_1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+<pattern
+ x="-11.48"
+ y="100"
+ width="69"
+ height="69"
+ patternUnits="userSpaceOnUse"
+ id="Polka_Dot_Pattern"
+ viewBox="2.125 -70.896 69 69"
+ overflow="visible">
+ <g
+ id="g4">
+ <polygon
+ fill="none"
+ points="71.125,-1.896 2.125,-1.896 2.125,-70.896 71.125,-70.896 "
+ id="polygon6" />
+ <polygon
+ fill="#000000"
+ points="71.125,-1.896 2.125,-1.896 2.125,-70.896 71.125,-70.896 "
+ id="polygon8" />
+ <g
+ id="g10">
+ <path
+ fill="#000000"
+ d="M61.772-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path12" />
+ <path
+ fill="#000000"
+ d="M54.105-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path14" />
+ <path
+ fill="#000000"
+ d="M46.439-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path16" />
+ <path
+ fill="#000000"
+ d="M38.772-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path18" />
+ <path
+ fill="#000000"
+ d="M31.105-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path20" />
+ <path
+ fill="#000000"
+ d="M23.439-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path22" />
+ <path
+ fill="#000000"
+ d="M15.772-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path24" />
+ <path
+ fill="#000000"
+ d="M8.105-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path26" />
+ <path
+ fill="#000000"
+ d="M0.439-71.653c0.018,0.072,0.008,0.127-0.026,0.19C0.361-71.362,0.3-71.4,0.248-71.335 c-0.051,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224c0.002,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path28" />
+ </g>
+ <g
+ id="g30">
+ <path
+ fill="#000000"
+ d="M69.439-71.653c0.018,0.072,0.008,0.127-0.026,0.19c-0.052,0.101-0.113,0.063-0.165,0.128 c-0.051,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224c0.002,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path32" />
+ </g>
+ <path
+ fill="#000000"
+ d="M0.495-71.653c0.018,0.072,0.008,0.127-0.026,0.19c-0.052,0.101-0.113,0.063-0.165,0.128 c-0.051,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224C0.5-71.68,0.503-71.744,0.51-71.626 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path34" />
+ <g
+ id="g36">
+ <g
+ id="g38">
+ <path
+ fill="#000000"
+ d="M69.439-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path40" />
+ <path
+ fill="#000000"
+ d="M61.778-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path42" />
+ <path
+ fill="#000000"
+ d="M54.118-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path44" />
+ <path
+ fill="#000000"
+ d="M46.458-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path46" />
+ <path
+ fill="#000000"
+ d="M38.797-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path48" />
+ <path
+ fill="#000000"
+ d="M31.137-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path50" />
+ <path
+ fill="#000000"
+ d="M23.477-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path52" />
+ <path
+ fill="#000000"
+ d="M15.816-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path54" />
+ <path
+ fill="#000000"
+ d="M8.156-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path56" />
+ <path
+ fill="#000000"
+ d="M0.495-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143C2-61.45,2.217-61.397,2.391-61.46c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path58" />
+ </g>
+ <g
+ id="g60">
+ <path
+ fill="#000000"
+ d="M69.439-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path62" />
+ <path
+ fill="#000000"
+ d="M61.778-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path64" />
+ <path
+ fill="#000000"
+ d="M54.118-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path66" />
+ <path
+ fill="#000000"
+ d="M46.458-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path68" />
+ <path
+ fill="#000000"
+ d="M38.797-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path70" />
+ <path
+ fill="#000000"
+ d="M31.137-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path72" />
+ <path
+ fill="#000000"
+ d="M23.477-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path74" />
+ <path
+ fill="#000000"
+ d="M15.816-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path76" />
+ <path
+ fill="#000000"
+ d="M8.156-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path78" />
+ <path
+ fill="#000000"
+ d="M0.495-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224C0.5-56.374,0.503-56.438,0.51-56.32 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path80" />
+ </g>
+ <g
+ id="g82">
+ <path
+ fill="#000000"
+ d="M69.439-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path84" />
+ <path
+ fill="#000000"
+ d="M61.778-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path86" />
+ <path
+ fill="#000000"
+ d="M54.118-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path88" />
+ <path
+ fill="#000000"
+ d="M46.458-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path90" />
+ <path
+ fill="#000000"
+ d="M38.797-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path92" />
+ <path
+ fill="#000000"
+ d="M31.137-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path94" />
+ <path
+ fill="#000000"
+ d="M23.477-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path96" />
+ <path
+ fill="#000000"
+ d="M15.816-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path98" />
+ <path
+ fill="#000000"
+ d="M8.156-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path100" />
+ <path
+ fill="#000000"
+ d="M0.495-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path102" />
+ </g>
+ <g
+ id="g104">
+ <path
+ fill="#000000"
+ d="M69.439-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path106" />
+ <path
+ fill="#000000"
+ d="M61.778-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path108" />
+ <path
+ fill="#000000"
+ d="M54.118-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path110" />
+ <path
+ fill="#000000"
+ d="M46.458-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path112" />
+ <path
+ fill="#000000"
+ d="M38.797-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path114" />
+ <path
+ fill="#000000"
+ d="M31.137-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path116" />
+ <path
+ fill="#000000"
+ d="M23.477-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path118" />
+ <path
+ fill="#000000"
+ d="M15.816-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path120" />
+ <path
+ fill="#000000"
+ d="M8.156-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 C8.15-41.004,8.149-41.02,8.14-41.04"
+ id="path122" />
+ <path
+ fill="#000000"
+ d="M0.495-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path124" />
+ </g>
+ <g
+ id="g126">
+ <path
+ fill="#000000"
+ d="M69.439-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path128" />
+ <path
+ fill="#000000"
+ d="M61.778-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path130" />
+ <path
+ fill="#000000"
+ d="M54.118-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path132" />
+ <path
+ fill="#000000"
+ d="M46.458-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path134" />
+ <path
+ fill="#000000"
+ d="M38.797-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path136" />
+ <path
+ fill="#000000"
+ d="M31.137-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path138" />
+ <path
+ fill="#000000"
+ d="M23.477-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path140" />
+ <path
+ fill="#000000"
+ d="M15.816-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path142" />
+ <path
+ fill="#000000"
+ d="M8.156-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path144" />
+ <path
+ fill="#000000"
+ d="M0.495-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224C0.5-33.416,0.503-33.48,0.51-33.362 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path146" />
+ </g>
+ <g
+ id="g148">
+ <path
+ fill="#000000"
+ d="M69.439-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path150" />
+ <path
+ fill="#000000"
+ d="M61.778-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path152" />
+ <path
+ fill="#000000"
+ d="M54.118-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path154" />
+ <path
+ fill="#000000"
+ d="M46.458-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path156" />
+ <path
+ fill="#000000"
+ d="M38.797-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path158" />
+ <path
+ fill="#000000"
+ d="M31.137-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path160" />
+ <path
+ fill="#000000"
+ d="M23.477-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path162" />
+ <path
+ fill="#000000"
+ d="M15.816-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path164" />
+ <path
+ fill="#000000"
+ d="M8.156-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path166" />
+ <path
+ fill="#000000"
+ d="M0.495-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path168" />
+ </g>
+ <g
+ id="g170">
+ <path
+ fill="#000000"
+ d="M69.439-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path172" />
+ <path
+ fill="#000000"
+ d="M61.778-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path174" />
+ <path
+ fill="#000000"
+ d="M54.118-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path176" />
+ <path
+ fill="#000000"
+ d="M46.458-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path178" />
+ <path
+ fill="#000000"
+ d="M38.797-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path180" />
+ <path
+ fill="#000000"
+ d="M31.137-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path182" />
+ <path
+ fill="#000000"
+ d="M23.477-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path184" />
+ <path
+ fill="#000000"
+ d="M15.816-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path186" />
+ <path
+ fill="#000000"
+ d="M8.156-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path188" />
+ <path
+ fill="#000000"
+ d="M0.495-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224C0.5-18.11,0.503-18.175,0.51-18.057 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path190" />
+ </g>
+ <g
+ id="g192">
+ <path
+ fill="#000000"
+ d="M69.439-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362C69-9.692,69.159-9.523,69.154-9.4c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path194" />
+ <path
+ fill="#000000"
+ d="M61.778-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path196" />
+ <path
+ fill="#000000"
+ d="M54.118-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path198" />
+ <path
+ fill="#000000"
+ d="M46.458-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path200" />
+ <path
+ fill="#000000"
+ d="M38.797-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path202" />
+ <path
+ fill="#000000"
+ d="M31.137-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path204" />
+ <path
+ fill="#000000"
+ d="M23.477-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path206" />
+ <path
+ fill="#000000"
+ d="M15.816-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053C17.933-7.969,17.839-8.227,18-8.34 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path208" />
+ <path
+ fill="#000000"
+ d="M8.156-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 C7.915-10.05,7.866-9.836,7.886-9.75C7.717-9.692,7.876-9.523,7.871-9.4C7.868-9.351,7.83-9.295,7.826-9.239 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C9.114-7.652,9.321-7.799,9.48-7.837c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path210" />
+ <path
+ fill="#000000"
+ d="M0.495-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 C0.254-10.05,0.205-9.836,0.225-9.75C0.056-9.692,0.215-9.523,0.21-9.4c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37C0.33-8.671,0.501-8.456,0.668-8.325c0.19,0.148,0.365,0.572,0.608,0.631 C1.454-7.652,1.66-7.799,1.819-7.837C2-7.88,2.217-7.827,2.391-7.89c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46C3.477-8.933,3.471-8.995,3.5-9.071 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path212" />
+ </g>
+ </g>
+ <g
+ id="g214">
+ <path
+ fill="#000000"
+ d="M69.439-2.778c0.018,0.072,0.008,0.127-0.026,0.19C69.361-2.487,69.3-2.525,69.248-2.46 c-0.051,0.063-0.099,0.276-0.079,0.362C69-2.04,69.159-1.871,69.154-1.748c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C70.397,0,70.604-0.146,70.763-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224c0.002,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path216" />
+ <path
+ fill="#000000"
+ d="M61.778-2.778c0.018,0.072,0.007,0.127-0.026,0.19C61.7-2.487,61.64-2.525,61.587-2.46 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C62.737,0,62.943-0.146,63.103-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C61.915-3.117,61.78-3.02,61.781-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path218" />
+ <path
+ fill="#000000"
+ d="M54.118-2.778c0.018,0.072,0.007,0.127-0.026,0.19C54.04-2.487,53.98-2.525,53.927-2.46 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C55.077,0,55.283-0.146,55.442-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C54.255-3.117,54.12-3.02,54.121-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path220" />
+ <path
+ fill="#000000"
+ d="M46.458-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C47.416,0,47.623-0.146,47.782-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C46.594-3.117,46.459-3.02,46.46-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path222" />
+ <path
+ fill="#000000"
+ d="M38.797-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C39.756,0,39.962-0.146,40.122-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C38.934-3.117,38.799-3.02,38.8-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path224" />
+ <path
+ fill="#000000"
+ d="M31.137-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C32.095,0,32.302-0.146,32.461-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C31.273-3.117,31.139-3.02,31.14-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path226" />
+ <path
+ fill="#000000"
+ d="M23.477-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C24.435,0,24.642-0.146,24.801-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path228" />
+ <path
+ fill="#000000"
+ d="M15.816-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C16.774,0,16.981-0.146,17.14-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 C15.81-2.74,15.809-2.756,15.8-2.776"
+ id="path230" />
+ <path
+ fill="#000000"
+ d="M8.156-2.778c0.018,0.072,0.007,0.127-0.026,0.19C8.077-2.487,8.018-2.525,7.965-2.46 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35C7.868-1.698,7.83-1.643,7.826-1.587 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C9.114,0,9.321-0.146,9.48-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789C8.954-3.54,8.847-3.448,8.692-3.367 c-0.17,0.088-0.139,0.166-0.318,0.224C8.292-3.117,8.158-3.02,8.159-2.92C8.16-2.805,8.164-2.869,8.17-2.751 C8.15-2.74,8.149-2.756,8.14-2.776"
+ id="path232" />
+ <path
+ fill="#000000"
+ d="M0.495-2.778c0.018,0.072,0.008,0.127-0.026,0.19C0.417-2.487,0.356-2.525,0.304-2.46 C0.253-2.397,0.205-2.184,0.225-2.098C0.056-2.04,0.215-1.871,0.21-1.748c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37C0.33-1.019,0.501-0.804,0.668-0.673c0.19,0.148,0.365,0.572,0.608,0.631 C1.454,0,1.66-0.146,1.819-0.185C2-0.228,2.217-0.175,2.391-0.237c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46C3.477-1.28,3.471-1.343,3.5-1.419 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789C1.293-3.54,1.187-3.448,1.031-3.367 c-0.17,0.088-0.139,0.166-0.318,0.224C0.632-3.117,0.498-3.02,0.498-2.92C0.5-2.805,0.503-2.869,0.51-2.751 C0.489-2.74,0.488-2.756,0.479-2.776"
+ id="path234" />
+ </g>
+ </g>
+</pattern>
+
+<path
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ d="m 148.96875,0 -56.000001,48.65625 -7.375,-25.4375 -85.5937502028342,74.375 36.6562502028342,0 70.531251,0 70.125,0 L 148.96875,0 z"
+ id="rect3101"
+ inkscape:connector-curvature="0" /></svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/hunting.svg b/main/project/attributes/svgs/hunting.svg
index 0cb8de1..ce871d9 100644
--- a/main/project/attributes/svgs/hunting.svg
+++ b/main/project/attributes/svgs/hunting.svg
@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
-
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
@@ -9,27 +7,21 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
+ version="1.1"
id="Layer_1"
x="0px"
y="0px"
- width="100px"
- height="100px"
- viewBox="0 0 100 100"
+ width="149.59375"
+ height="149.59375"
+ viewBox="0 0 149.59375 149.59375"
enable-background="new 0 0 100 100"
xml:space="preserve"
- inkscape:version="0.47 r22583"
+ inkscape:version="0.48.3.1 r9886"
sodipodi:docname="hunting.svg"><metadata
- id="metadata2881"><rdf:RDF><cc:Work
+ id="metadata21"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs2879"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 50 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="100 : 50 : 1"
- inkscape:persp3d-origin="50 : 33.333333 : 1"
- id="perspective2883" /></defs><sodipodi:namedview
+ id="defs19" /><sodipodi:namedview
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1"
@@ -38,19 +30,34 @@
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
- inkscape:window-width="640"
- inkscape:window-height="504"
- id="namedview2877"
+ inkscape:window-width="1113"
+ inkscape:window-height="535"
+ id="namedview17"
showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
inkscape:zoom="2.36"
- inkscape:cx="50"
- inkscape:cy="50"
- inkscape:window-x="0"
+ inkscape:cx="43.04317"
+ inkscape:cy="73.178249"
+ inkscape:window-x="49"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" />
+
+
+
<path
- d="M50,0C22.43,0,0,22.43,0,50c0,27.569,22.43,50,50,50s50-22.431,50-50C100,22.43,77.57,0,50,0z M54.032,91.737V78.226h-8.064 v13.512C26.057,89.829,10.171,73.943,8.263,54.032h13.512v-8.064H8.263c1.909-19.911,17.794-35.796,37.705-37.705v13.511h8.064 V8.263c19.911,1.908,35.797,17.793,37.705,37.705H78.226v8.064h13.512C89.829,73.943,73.943,89.829,54.032,91.737z"
- id="path2875"
- style="fill:#ffffff" />
-</svg> \ No newline at end of file
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ d="m 74.78125,7.8437469 c -36.974995,0 -66.9375,29.9625051 -66.9375,66.9375001 0,36.974993 29.962505,66.968753 66.9375,66.968753 36.975,0 66.96875,-29.99376 66.96875,-66.968753 0,-36.974995 -29.99375,-66.9375001 -66.96875,-66.9375001 z m 0,11.2187501 c 30.77349,0 55.75,24.945257 55.75,55.71875 0,30.773493 -24.97651,55.750003 -55.75,55.750003 -30.773493,0 -55.71875,-24.97651 -55.71875,-55.750003 0,-30.773493 24.945257,-55.71875 55.71875,-55.71875 z"
+ id="path2992"
+ inkscape:connector-curvature="0" /><path
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ d="m 66.96875,-1.1547685e-7 0,44.09375011547685 15.65625,0 0,-44.09375011547685 -15.65625,0 z m 0,105.53125011547685 0,44.0625 15.65625,0 0,-44.0625 -15.65625,0 z"
+ id="rect2999"
+ inkscape:connector-curvature="0" /><path
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ d="m 149.59375,66.96875 -44.09375,0 0,15.65625 44.09375,0 0,-15.65625 z m -105.53125,0 -44.0625,0 0,15.65625 44.0625,0 0,-15.65625 z"
+ id="rect2999-0" /></svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/in_water.svg b/main/project/attributes/svgs/in_water.svg
new file mode 100644
index 0000000..2e5880f
--- /dev/null
+++ b/main/project/attributes/svgs/in_water.svg
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="54.127998"
+ height="47.76738"
+ viewBox="0 0 54.127999 47.767379"
+ enable-background="new 0 0 100 40.213"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="in_water.svg"><metadata
+ id="metadata11"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs9" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1127"
+ inkscape:window-height="715"
+ id="namedview7"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="7.5654772"
+ inkscape:cx="22.536386"
+ inkscape:cy="34.495556"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"><inkscape:grid
+ type="xygrid"
+ id="grid3089"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ originx="-7.8374461px"
+ originy="-1.4673006px" /></sodipodi:namedview>
+
+
+<path
+ inkscape:connector-curvature="0"
+ d="m 54.128001,6.4840166 c -1.173072,0 -2.305055,-0.255796 -3.329974,-0.714146 -1.03823,-0.485549 -2.210724,-0.768544 -3.437038,-0.768544 -1.213583,0 -2.386077,0.282995 -3.424307,0.768544 -1.01103,0.45835 -2.157481,0.714146 -3.343286,0.714146 -1.172493,0 -2.318366,-0.255796 -3.329396,-0.714146 -1.034757,-0.485549 -2.207251,-0.768544 -3.434723,-0.768544 -1.213583,0 -2.386077,0.282995 -3.424306,0.768544 -1.024341,0.45835 -2.156902,0.714146 -3.342707,0.714146 -1.172493,0 -2.318366,-0.255796 -3.329396,-0.714146 -1.037651,-0.485549 -2.210723,-0.768544 -3.437617,-0.768544 -1.213583,0 -2.386077,0.282995 -3.437617,0.768544 -1.011609,0.45835 -2.143592,0.714146 -3.32303,0.714146 -1.186382,0 -2.318944,-0.255796 -3.329974,-0.714146 -1.037651,-0.485549 -2.210723,-0.768544 -3.437038,-0.768544 -1.226893,0 -2.399387,0.282995 -3.437617,0.768544 C 2.318367,6.2282206 1.186384,6.4840166 0,6.4840166 v -4.988018 c 1.186384,0 2.318367,-0.269106 3.329396,-0.72803404 1.03823,-0.48497 2.210724,-0.7679656035233 3.437617,-0.7679656035233 1.226315,0 2.399387,0.2829956035233 3.437038,0.7679656035233 1.01103,0.45892804 2.143592,0.72803404 3.329974,0.72803404 1.179439,0 2.312,-0.269106 3.32303,-0.72803404 1.051541,-0.48497 2.224034,-0.7679656035233 3.437617,-0.7679656035233 1.226894,0 2.399387,0.2829956035233 3.437617,0.7679656035233 1.011031,0.45892804 2.156903,0.72803404 3.329397,0.72803404 1.186383,0 2.318944,-0.269106 3.342706,-0.72803404 1.03823,-0.48497 2.210723,-0.7679656035233 3.424306,-0.7679656035233 1.226894,0 2.399388,0.2829956035233 3.434724,0.7679656035233 1.011029,0.45892804 2.156902,0.72803404 3.329395,0.72803404 1.186384,0 2.332257,-0.269106 3.343286,-0.72803404 1.03823,-0.48497 2.210724,-0.7679656035233 3.424307,-0.7679656035233 1.226315,0 2.399387,0.2829956035233 3.437038,0.7679656035233 1.024919,0.45892804 2.156902,0.72803404 3.329975,0.72803404 v 4.988018 z"
+ id="path3115-2-7"
+ style="fill:#ffffff" /><g
+ transform="matrix(0.14516035,0,0,0.12781434,-0.00364189,8.1808966)"
+ id="g3139"><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135"
+ d="M 31.88911,103.12086 247.77445,26.586263 358.2442,118.28339 141.63684,205.64835 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4"
+ d="M 30.848294,111.52289 136.26388,212.60632 135.54185,247.98553 32.292345,146.90209 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8"
+ d="m 145.6502,211.52328 213.71926,-85.92092 -7.22025,28.15897 -207.22104,93.14116 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8-1"
+ d="m 37.70753,161.34257 93.14116,93.14117 0,54.87387 -90.253061,-102.52749 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8-1-8"
+ d="M 139.51298,257.01083 340.2358,167.47979 328.68341,216.57746 138.06894,309.71863 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /></g></svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/inside.svg b/main/project/attributes/svgs/inside.svg
new file mode 100644
index 0000000..375a911
--- /dev/null
+++ b/main/project/attributes/svgs/inside.svg
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="82.25"
+ height="62.8125"
+ viewBox="0 0 82.250001 62.812498"
+ enable-background="new 0 0 100 40.213"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="inside.svg"><metadata
+ id="metadata11"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs9" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1127"
+ inkscape:window-height="715"
+ id="namedview7"
+ showgrid="true"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="7.5654772"
+ inkscape:cx="36.498832"
+ inkscape:cy="30.14794"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"><inkscape:grid
+ type="xygrid"
+ id="grid3089"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ originx="6.1249997px"
+ originy="0.0057492093px" /></sodipodi:namedview>
+
+
+<g
+ id="g3879"
+ style="fill:#ffffff"
+ transform="translate(6.125,22.59375)"><path
+ inkscape:connector-curvature="0"
+ id="path3093"
+ d="m 2.5,-4.7812508 0,44.9999998 5,0 0,-44.9999998 -5,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" /><path
+ inkscape:connector-curvature="0"
+ id="path3095"
+ d="m 35,-22.593751 -1.125,0.5625 -40,20.0000003 2.25,4.46875 L 35,-17.000001 73.875,2.4374993 l 2.25,-4.46875 -40,-20.0000003 -1.125,-0.5625 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" /><path
+ inkscape:connector-curvature="0"
+ id="path3097"
+ d="m 62.5,-4.7812508 0,44.9999998 5,0 0,-44.9999998 -5,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" /></g><g
+ transform="matrix(0.13724816,0,0,0.12084762,15.553325,22.811822)"
+ id="g3139"><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135"
+ d="M 31.88911,103.12086 247.77445,26.586263 358.2442,118.28339 141.63684,205.64835 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4"
+ d="M 30.848294,111.52289 136.26388,212.60632 135.54185,247.98553 32.292345,146.90209 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8"
+ d="m 145.6502,211.52328 213.71926,-85.92092 -7.22025,28.15897 -207.22104,93.14116 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8-1"
+ d="m 37.70753,161.34257 93.14116,93.14117 0,54.87387 -90.253061,-102.52749 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8-1-8"
+ d="M 139.51298,257.01083 340.2358,167.47979 328.68341,216.57746 138.06894,309.71863 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /></g></svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/investigation.svg b/main/project/attributes/svgs/investigation.svg
new file mode 100644
index 0000000..741bd64
--- /dev/null
+++ b/main/project/attributes/svgs/investigation.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ x="0px"
+ y="0px"
+ width="71.096977"
+ height="71.156075"
+ viewBox="0 0 71.096977 71.156075"
+ enable-background="new 0 0 100 100"
+ xml:space="preserve"
+ id="svg2"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="investigation.svg"><metadata
+ id="metadata16"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs14" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview12"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="2.36"
+ inkscape:cx="35.893"
+ inkscape:cy="35.170074"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2" />
+<g
+ id="Captions"
+ transform="matrix(-1,0,0,1,85.203975,-14.014)"
+ style="fill:#ffffff">
+</g>
+<g
+ id="Your_Icon"
+ transform="matrix(-1,0,0,1,85.203975,-14.014)"
+ style="fill:#ffffff">
+ <g
+ id="g6"
+ style="fill:#ffffff">
+ <g
+ id="g8"
+ style="fill:#ffffff">
+ <path
+ clip-rule="evenodd"
+ d="m 64.816,55.141 -0.893,-0.893 c -0.096,-0.096 -0.198,-0.181 -0.298,-0.27 2.301,-3.934 3.625,-8.507 3.625,-13.392 0,-14.677 -11.896,-26.572 -26.572,-26.572 -14.675,0 -26.571,11.896 -26.571,26.572 0,14.673 11.896,26.574 26.571,26.574 4.854,0 9.4,-1.309 13.317,-3.582 0.093,0.105 0.183,0.213 0.283,0.313 l 0.931,0.931 c 1.761,-1.084 4.038,-2.612 5.493,-4.068 1.55,-1.549 3.094,-3.911 4.114,-5.613 z m -24.157,4.003 c -10.25,0 -18.559,-8.309 -18.559,-18.559 0,-10.251 8.309,-18.559 18.559,-18.559 10.25,0 18.558,8.308 18.558,18.559 0,10.25 -8.308,18.559 -18.558,18.559 z M 82.846,73.168 66.623,56.946 c -0.68,1.359 -1.938,3.222 -4.263,5.547 -2.208,2.209 -3.993,3.446 -5.332,4.148 l 16.14,16.142 c 1.402,-1.494 3.3,-3.494 4.768,-4.962 1.537,-1.536 3.515,-3.375 4.91,-4.653 z m 1.743,2.361 c -0.828,1.207 -2.142,2.836 -4.249,4.943 -1.983,1.983 -3.549,3.27 -4.732,4.105 2.507,1.118 5.548,0.657 7.605,-1.397 2.068,-2.07 2.522,-5.135 1.376,-7.651 z"
+ id="path10"
+ inkscape:connector-curvature="0"
+ style="fill-rule:evenodd;fill:#ffffff" />
+ </g>
+ </g>
+</g>
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/kids.svg b/main/project/attributes/svgs/kids.svg
index 8535d49..6f9849d 100644
--- a/main/project/attributes/svgs/kids.svg
+++ b/main/project/attributes/svgs/kids.svg
@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
-
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
@@ -9,27 +7,21 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- id="Layer_1"
+ version="1.1"
+ id="Bear"
x="0px"
y="0px"
- width="53.403"
- height="41.112946"
- viewBox="0 0 53.403001 41.112946"
- enable-background="new 0 0 68.906 100"
+ width="63.230682"
+ height="68.21875"
+ viewBox="0 0 266.51217 287.87016"
+ enable-background="new 0 0 309.361 421.981"
xml:space="preserve"
- inkscape:version="0.47 r22583"
+ inkscape:version="0.48.3.1 r9886"
sodipodi:docname="kids.svg"><metadata
- id="metadata2917"><rdf:RDF><cc:Work
+ id="metadata20"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs2915"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 50 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="68.905998 : 50 : 1"
- inkscape:persp3d-origin="34.452999 : 33.333333 : 1"
- id="perspective2919" /></defs><sodipodi:namedview
+ id="defs18" /><sodipodi:namedview
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1"
@@ -39,22 +31,75 @@
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="640"
- inkscape:window-height="504"
- id="namedview2913"
+ inkscape:window-height="480"
+ id="namedview16"
showgrid="false"
inkscape:zoom="2.36"
- inkscape:cx="26.699999"
- inkscape:cy="-8.8869998"
- inkscape:window-x="0"
+ inkscape:cx="31.638548"
+ inkscape:cy="18.21875"
+ inkscape:window-x="49"
inkscape:window-y="24"
inkscape:window-maximized="0"
- inkscape:current-layer="Layer_1" />
+ inkscape:current-layer="Bear"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+<path
+ id="Arm"
+ d="m 231.35965,276.886 c -18.414,0 -35.671,-16.001 -41.033,-38.047 -2.884,-11.853 -2.05,-23.97 2.35,-34.12 4.744,-10.944 13.396,-18.665 23.736,-21.18 2.461,-0.599 4.998,-0.903 7.539,-0.903 18.413,0 35.669,16.001 41.031,38.047 6.197,25.486 -5.505,50.294 -26.085,55.301 -2.463,0.598 -4.999,0.902 -7.538,0.902 z m -7.408,-74.25 c -0.949,0 -1.895,0.113 -2.811,0.337 -5.748,1.397 -8.804,6.678 -10.114,9.7 -2.64,6.088 -3.101,13.902 -1.267,21.438 3.158,12.984 12.443,22.774 21.6,22.774 0.948,0 1.895,-0.113 2.811,-0.336 9.698,-2.359 14.909,-16.62 11.379,-31.142 -3.159,-12.98 -12.443,-22.771 -21.598,-22.771 z"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+<path
+ id="Arm_1_"
+ d="m 35.015646,276.842 c -2.666,0 -5.323,-0.334 -7.898,-0.992 -10.31,-2.633 -18.8719996,-10.451 -23.4899996,-21.451 -4.28200004,-10.199 -4.977,-22.326 -1.958,-34.146 5.649,-22.121 22.5479996,-37.572 41.0949996,-37.572 2.666,0 5.324,0.334 7.899,0.992 10.309,2.632 18.871,10.45 23.489,21.451 4.282,10.199 4.978,22.325 1.958,34.146 -5.65,22.121 -22.55,37.572 -41.095,37.572 z m 7.749,-74.162 c -9.102,0 -18.438,9.683 -21.717,22.522 -1.92,7.517 -1.548,15.336 1.02,21.454 1.275,3.038 4.271,8.353 9.999,9.815 0.959,0.245 1.951,0.37 2.949,0.37 9.101,0 18.438,-9.683 21.718,-22.523 1.919,-7.516 1.547,-15.335 -1.021,-21.454 -1.275,-3.038 -4.27,-8.353 -9.998,-9.814 -0.961,-0.245 -1.952,-0.37 -2.95,-0.37 z"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+<path
+ id="Ear_1_"
+ d="m 230.97965,7.918 c -7.822,-5.02 -16.834,-7.785 -25.375,-7.785 -11.742,0 -21.72,5.052 -27.374,13.862 -10.175,15.857 -2.95,38.032 16.448,50.484 7.821,5.021 16.833,7.785 25.374,7.785 11.742,0 21.72,-5.052 27.375,-13.862 10.177,-15.857 2.952,-38.031 -16.448,-50.484 z m 2.245,44.652 c -5.7,8.881 -20.346,9.645 -32.714,1.707 -12.368,-7.939 -17.774,-21.57 -12.076,-30.451 5.698,-8.878 20.345,-9.643 32.713,-1.705 12.368,7.939 17.775,21.571 12.077,30.449 z"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+<path
+ id="Ear"
+ d="M 88.581646,13.566 C 82.915646,4.945 73.043646,0 61.496646,0 c -8.678,0 -17.813,2.863 -25.723,8.06 -8.455,5.555 -14.928,13.342 -18.226,21.927 -3.883,10.106 -3.036,20.579 2.322,28.732 5.667,8.623 15.54,13.567 27.087,13.567 8.677,0 17.812,-2.862 25.722,-8.059 8.456,-5.556 14.929,-13.343 18.227,-21.928 3.881,-10.105 3.034,-20.577 -2.324,-28.733 z m -21.866,40.543 c -12.282,8.07 -26.934,7.464 -32.729,-1.354 -5.794,-8.816 -0.534,-22.508 11.748,-30.578 12.283,-8.07 26.935,-7.465 32.729,1.352 5.794,8.819 0.536,22.51 -11.748,30.58 z"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+<path
+ style="fill:#ffffff"
+ d="m 133.01968,14.373728 c -57.138004,0 -103.385349,38.978583 -103.385349,87.033582 0,31.446 19.729899,58.95528 49.450898,74.24228 -8.687998,5.788 -16.568691,12.98492 -23.472693,21.23092 10.250999,7.369 15.028263,23.44933 10.813263,39.95633 -5.135998,20.104 -21.586467,33.15993 -36.791468,29.27493 -0.914998,-0.23302 -1.906249,-0.44822 -2.769251,-0.79122 -0.587,5.17301 -0.791214,10.46929 -0.791214,15.82429 0,2.27882 0.02321,4.47753 0.131869,6.72532 l 34.285956,0 c 6.904677,-39.25292 37.018119,-68.83565 73.055459,-68.83565 36.03719,0 66.02009,29.58347 72.92359,68.83565 l 33.36288,0 c 0.10706,-2.23116 0.26373,-4.46354 0.26373,-6.72532 0,-5.303 -0.34809,-10.56842 -0.92308,-15.69242 -0.853,0.32501 -1.73638,0.57222 -2.63738,0.79122 -15.248,3.709 -31.62373,-9.63941 -36.52773,-29.80241 -3.945,-16.214 0.77639,-31.84598 10.68139,-39.29698 -6.95699,-8.358 -14.95443,-15.64366 -23.73643,-21.49466 29.723,-15.287 49.58277,-42.79528 49.58277,-74.24228 0,-48.054999 -46.37921,-87.033582 -103.51721,-87.033582 z M 98.60185,93.758903 c 5.257,0 9.49457,4.237572 9.49457,9.494577 0,5.257 -4.23757,9.62644 -9.49457,9.62644 -5.256001,0 -9.626441,-4.36944 -9.626441,-9.62644 0,-5.257005 4.37044,-9.494577 9.626441,-9.494577 z m 69.495,0 c 5.256,0 9.62644,4.237572 9.62644,9.494577 0,5.257 -4.37044,9.62644 -9.62644,9.62644 -5.257,0 -9.49458,-4.36944 -9.49458,-9.62644 0,-5.257005 4.23758,-9.494577 9.49458,-9.494577 z m -34.81344,15.033077 c 23.334,0 42.1981,15.24522 42.1981,34.02221 0,18.777 -18.8641,34.02222 -42.1981,34.02222 -23.334,0 -42.198096,-15.24522 -42.198096,-34.02222 0,-18.77699 18.864096,-34.02221 42.198096,-34.02221 z"
+ id="Top"
+ inkscape:connector-curvature="0" />
+<ellipse
+ id="Nose"
+ cx="155.388"
+ cy="131.813"
+ rx="18"
+ ry="11.75"
+ style="fill:#ffffff"
+ sodipodi:cx="155.388"
+ sodipodi:cy="131.813"
+ sodipodi:rx="18"
+ sodipodi:ry="11.75"
+ transform="translate(-21.351354,0)" />
+<path
+ d="m 135.36965,143.063 c -0.002,4.049 0.334,7.935 0.334,12"
+ id="path12"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
<path
- d="m 45.185,0.01794383 c -7.767,-0.379 -9.261,5.37099997 -9.261,5.37099997 0,0 -3.6,-2.203 -9.222,-2.203 -5.626,0 -9.229,2.203 -9.229,2.203 0,0 -1.491,-5.74999997 -9.258,-5.37099997 C 3.69,0.23494383 0,4.0169438 0,8.5489438 0,12.792944 2.789,18.489944 7.338,18.633944 l 0.586,0.018 c -0.137,0.772 -0.183,2.922 -0.183,3.49 0,10.457 8.507,18.971 18.96,18.971 10.45,0 18.957,-8.514 18.957,-18.971 0,-0.568 -0.049,-2.718 -0.179,-3.49 l 0.579,-0.018 c 4.553,-0.144 7.345,-5.841 7.345,-10.0850002 0.001,-4.532 -3.693,-8.31399997 -8.218,-8.53099997 z M 16.495,21.082944 c 0,-1.386 1.129,-2.515 2.519,-2.515 1.389,0 2.519,1.129 2.519,2.515 0,1.396 -1.13,2.519 -2.519,2.519 -1.39,0 -2.519,-1.123 -2.519,-2.519 z m 18.619,11.201 c -0.066,0.147 -1.624,3.582 -4.925,3.582 -1.428,0 -2.592,-0.337 -3.494,-0.958 -0.943,0.572 -2.119,0.874 -3.532,0.874 -3.606,0 -5.3,-3.284 -5.367,-3.417 -0.382,-0.75 -0.084,-1.67 0.659,-2.056 0.748,-0.393 1.673,-0.102 2.066,0.649 0.007,0.018 0.933,1.754 2.641,1.754 1.203,0 1.813,-0.294 2.087,-0.495 0,-0.358 0,-1.796 0,-2.413 -1.049,-0.239 -1.828,-1.179 -1.828,-2.287 0,-1.288 1.049,-2.343 2.34,-2.343 l 2.136,-0.018 c 1.218,0 2.252,1.084 2.252,2.361 0,1.105 -0.803,2.017 -1.831,2.213 0,0.652 0,2.276 0,2.592 0.214,0.186 0.723,0.477 1.87,0.477 1.298,0 2.118,-1.744 2.122,-1.758 0.168,-0.375 0.474,-0.67 0.855,-0.81 0.383,-0.147 0.8,-0.13 1.172,0.039 0.566,0.249 0.91,0.811 0.91,1.399 0,0.207 -0.045,0.414 -0.133,0.615 z m -0.692,-8.682 c -1.385,0 -2.515,-1.123 -2.515,-2.519 0,-1.386 1.13,-2.515 2.515,-2.515 1.393,0 2.522,1.129 2.522,2.515 10e-4,1.396 -1.129,2.519 -2.522,2.519 z"
- id="path2911"
- style="fill:#ffffff" />
-</svg> \ No newline at end of file
+ sodipodi:type="arc"
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:4.9000001;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path2988"
+ sodipodi:cx="30.084745"
+ sodipodi:cy="67.58316"
+ sodipodi:rx="14.40678"
+ sodipodi:ry="13.347458"
+ d="m 44.491526,67.58316 a 14.40678,13.347458 0 1 1 -0.01517,-0.612409 L 30.084745,67.58316 z"
+ transform="matrix(4.4545058,0,0,4.2198099,-0.25809025,-3.5761101)"
+ sodipodi:start="0"
+ sodipodi:end="6.2372871" /></svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/landf.svg b/main/project/attributes/svgs/landf.svg
index 9a11752..7449075 100644
--- a/main/project/attributes/svgs/landf.svg
+++ b/main/project/attributes/svgs/landf.svg
@@ -65,7 +65,7 @@
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="1.9598977"
inkscape:cx="124.00257"
diff --git a/main/project/attributes/svgs/letterbox.svg b/main/project/attributes/svgs/letterbox.svg
new file mode 100644
index 0000000..fccd1fb
--- /dev/null
+++ b/main/project/attributes/svgs/letterbox.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ width="70.833336"
+ height="45.833241"
+ id="svg6584"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="letterbox.svg">
+ <sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview7"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="2.36"
+ inkscape:cx="35.416667"
+ inkscape:cy="22.9166"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg6584" />
+ <defs
+ id="defs6586" />
+ <metadata
+ id="metadata6589">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-14.583333,-979.44536)"
+ id="layer1"
+ style="fill:#ffffff">
+ <path
+ d="m 18.750003,979.44536 c -4.16667,0 -2.08334,1.41375 0,3.125 L 47.916667,1006.5287 81.25,982.57036 c 2.083334,-1.71125 4.166667,-3.125 0,-3.125 l -33.333333,0 z m -4.16667,6.24999 0,35.41665 c 0,2.0833 2.10937,4.1666 3.77604,4.1666 l 63.281252,0 c 1.666667,0 3.776042,-2.0833 3.776042,-4.1666 l 0,-35.41665 -37.5,27.08335 z"
+ id="path7085"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/main/project/attributes/svgs/link_only.svg b/main/project/attributes/svgs/link_only.svg
new file mode 100644
index 0000000..0ae9537
--- /dev/null
+++ b/main/project/attributes/svgs/link_only.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="34.53125"
+ height="35.078125"
+ viewBox="0 0 34.53125 35.078123"
+ enable-background="new 0 0 100 71.313"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="link_only.svg"><metadata
+ id="metadata2916"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs2914"><inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 35.656502 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 35.656502 : 1"
+ inkscape:persp3d-origin="50 : 23.771001 : 1"
+ id="perspective2918" /></defs><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="653"
+ inkscape:window-height="504"
+ id="namedview2912"
+ showgrid="false"
+ inkscape:zoom="3.3093544"
+ inkscape:cx="5.0157967"
+ inkscape:cy="5.3120332"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+
+
+
+
+
+
+
+<text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ x="-2.6367188"
+ y="28.124998"
+ id="text2986"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2988"
+ x="-2.6367188"
+ y="28.124998">@</tspan></text>
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/maintenance.svg b/main/project/attributes/svgs/maintenance.svg
new file mode 100644
index 0000000..ba80fa1
--- /dev/null
+++ b/main/project/attributes/svgs/maintenance.svg
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="100px"
+ height="99.989px"
+ viewBox="0 0 100 99.989"
+ enable-background="new 0 0 100 99.989"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="maintenance.svg"><metadata
+ id="metadata2909"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs2907"><inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 49.994499 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 49.994499 : 1"
+ inkscape:persp3d-origin="50 : 33.329666 : 1"
+ id="perspective2911" /></defs><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="852"
+ inkscape:window-height="715"
+ id="namedview2905"
+ showgrid="false"
+ inkscape:zoom="2.3602597"
+ inkscape:cx="50.000003"
+ inkscape:cy="49.994502"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" />
+<polygon
+ points="67.298,0 67.298,32.713 100,32.713 100,67.333 67.562,67.333 67.562,99.989 32.702,99.989 32.702,67.333 0,67.333 0,32.713 32.569,32.713 32.569,0 "
+ id="polygon2903"
+ style="fill:#ffffff"
+ transform="matrix(0.79661017,0,0,0.79661017,10.169491,10.168373)" />
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/moving_target.svg b/main/project/attributes/svgs/moving_target.svg
new file mode 100644
index 0000000..36bbc41
--- /dev/null
+++ b/main/project/attributes/svgs/moving_target.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="119.27042"
+ height="111.0576"
+ viewBox="0 0 119.27042 111.0576"
+ enable-background="new 0 0 70.312 100"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="moving_target.svg"><metadata
+ id="metadata11"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs9" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1317"
+ inkscape:window-height="744"
+ id="namedview7"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="2.36"
+ inkscape:cx="104.02866"
+ inkscape:cy="27.583014"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="Layer_1" />
+<path
+ d="m 74.632307,20.023842 c 5.175917,0 9.376009,-4.481457 9.376009,-10.008669 C 84.008316,4.4830839 79.808224,0 74.632307,0 c -5.176729,0 -9.374385,4.4830839 -9.374385,10.015173 0,5.527212 4.197656,10.008669 9.374385,10.008669 z"
+ id="path3"
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff" />
+<path
+ d="m 104.355,68.226556 c 0.82863,-2.6211 -0.83108,-19.914391 -0.83108,-19.914391 l -10.356704,-20.957246 4.14399,-2.096302 7.872424,13.623558 5.79963,-5.240275 -7.04461,-16.768493 -18.643874,-1.044781 c -1.24255,2.620137 -9.114979,7.857523 -10.772248,8.384247 -1.657269,0.524798 -0.830261,16.767529 -0.830261,16.767529 l -11.599257,0.525761 0.828635,10.99957 19.472504,-2.097265 2.073617,-8.383284 c 0,0 2.89982,7.862338 3.72683,9.432879 0.82863,1.571505 -0.82701,3.667807 -0.82701,3.667807 l -11.187789,8.383284 0.827821,29.869182 h 8.287158 l 1.65727,-23.05452 9.53052,-7.859443 -0.83107,16.242733 h 22.376374 l 1.24255,-11.004385 c -2.48672,-4.718365 -15.74731,3.144935 -14.91542,0.523835 z"
+ id="path5"
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff" />
+<g
+ transform="matrix(0.21308617,0,0,0.18762333,-6.5733455,52.947161)"
+ id="g3139"><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135"
+ d="M 31.88911,103.12086 247.77445,26.586263 358.2442,118.28339 141.63684,205.64835 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4"
+ d="M 30.848294,111.52289 136.26388,212.60632 135.54185,247.98553 32.292345,146.90209 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8"
+ d="m 145.6502,211.52328 213.71926,-85.92092 -7.22025,28.15897 -207.22104,93.14116 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8-1"
+ d="m 37.70753,161.34257 93.14116,93.14117 0,54.87387 -90.253061,-102.52749 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8-1-8"
+ d="M 139.51298,257.01083 340.2358,167.47979 328.68341,216.57746 138.06894,309.71863 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /></g></svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/nightcache.svg b/main/project/attributes/svgs/nightcache.svg
index 091bc91..f1748b3 100644
--- a/main/project/attributes/svgs/nightcache.svg
+++ b/main/project/attributes/svgs/nightcache.svg
@@ -11,9 +11,9 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2"
version="1.1"
- inkscape:version="0.47 r22583"
- width="63.320835"
- height="70.843979"
+ inkscape:version="0.48.3.1 r9886"
+ width="63.435875"
+ height="70.973412"
sodipodi:docname="nightcache.svg">
<metadata
id="metadata8">
@@ -67,45 +67,60 @@
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="749"
+ inkscape:window-width="1317"
+ inkscape:window-height="744"
id="namedview4"
showgrid="false"
inkscape:zoom="3.6694845"
inkscape:cx="42.161139"
- inkscape:cy="39.941451"
- inkscape:window-x="0"
+ inkscape:cy="40.070882"
+ inkscape:window-x="49"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
showguides="true"
- inkscape:guide-bbox="true" />
+ inkscape:guide-bbox="true"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+ <path
+ id="path3751"
+ d="m 9.1691499,34.987407 c 9.6460271,0 17.4937031,-7.847676 17.4937031,-17.493703 C 26.662853,7.847675 18.815177,0 9.1691499,0 7.4894039,0 5.8191059,0.241763 4.2051359,0.718641 L 0,1.961394 4.2051359,3.204146 c 6.2837381,1.856782 10.6725591,7.732917 10.6725591,14.289558 0,6.556289 -4.388821,12.432075 -10.6722091,14.288856 l -4.2037369,1.241704 4.2033869,1.243801 c 1.61432,0.47723 3.284268,0.719342 4.964014,0.719342 l 0,0 z m 0,-32.39589 c 8.2171411,0 14.9018351,6.685394 14.9018351,14.902187 0,8.216792 -6.684694,14.902186 -14.9018351,14.902186 -0.01504,0 -0.0301,0 -0.04548,0 5.0689761,-3.134172 8.3455461,-8.764346 8.3455461,-14.902186 0,-6.137492 -3.27657,-11.767315 -8.3448461,-14.902187 0.01539,0 0.0301,0 0.04478,0 l 0,0 z"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
<g
- id="g3696"
- transform="translate(7.1186533,25.419341)"
- style="stroke-width:2.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none;fill:none;stroke:#ffffff;stroke-opacity:1">
+ transform="matrix(0.16719484,0,0,0.14721581,3.3511552,25.377931)"
+ id="g3139">
+ <path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135"
+ d="M 31.88911,103.12086 247.77445,26.586263 358.2442,118.28339 141.63684,205.64835 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
<path
- sodipodi:nodetypes="ccccccc"
- id="path2854"
- d="M 6.7858628,12.241164 7.1850312,27.54262 22.486486,44.174636 54.686071,29.405405 54.819127,15.434512 39.251559,1.995842 6.7858628,12.241164 z"
- style="fill:none;stroke:#ffffff;stroke-width:2.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4"
+ d="M 30.848294,111.52289 136.26388,212.60632 135.54185,247.98553 32.292345,146.90209 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
<path
- sodipodi:nodetypes="ccc"
- id="path2860"
- d="M 6.6528067,12.108108 22.220374,27.941788 54.819127,15.83368"
- style="fill:none;stroke:#ffffff;stroke-width:2.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8"
+ d="m 145.6502,211.52328 213.71926,-85.92092 -7.22025,28.15897 -207.22104,93.14116 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
<path
- sodipodi:nodetypes="cc"
- id="path2862"
- d="M 22.486486,43.908524 22.35343,27.409564"
- style="fill:none;stroke:#ffffff;stroke-width:2.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8-1"
+ d="m 37.70753,161.34257 93.14116,93.14117 0,54.87387 -90.253061,-102.52749 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
<path
- id="path2864"
- d="M 7.0519751,19.027027 22.35343,33.397089 54.952183,21.022869"
- style="fill:none;stroke:#ffffff;stroke-width:2.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8-1-8"
+ d="M 139.51298,257.01083 340.2358,167.47979 328.68341,216.57746 138.06894,309.71863 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
</g>
- <path
- id="path3751"
- d="m 9.1691499,34.987407 c 9.6460271,0 17.4937031,-7.847676 17.4937031,-17.493703 C 26.662853,7.8476753 18.815177,0 9.1691499,0 7.4894039,0 5.8191059,0.2417629 4.2051359,0.7186413 L 0,1.9613939 4.2051359,3.2041466 C 10.488874,5.0609284 14.877695,10.937063 14.877695,17.493704 c 0,6.556289 -4.388821,12.432075 -10.6722091,14.288856 l -4.2037369,1.241704 4.2033869,1.243801 c 1.61432,0.47723 3.284268,0.719342 4.964014,0.719342 l 0,0 z m 0,-32.3958898 c 8.2171411,0 14.9018351,6.6853937 14.9018351,14.9021868 0,8.216792 -6.684694,14.902186 -14.9018351,14.902186 -0.01504,0 -0.0301,0 -0.04548,0 5.0689761,-3.134172 8.3455461,-8.764346 8.3455461,-14.902186 0,-6.137492 -3.27657,-11.7673151 -8.3448461,-14.9021868 0.01539,0 0.0301,0 0.04478,0 l 0,0 z"
- style="fill:#ffffff" />
</svg>
diff --git a/main/project/attributes/svgs/no_gps.svg b/main/project/attributes/svgs/no_gps.svg
new file mode 100644
index 0000000..b77f695
--- /dev/null
+++ b/main/project/attributes/svgs/no_gps.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="62.141964"
+ height="54.864502"
+ viewBox="0 0 62.141964 54.8645"
+ enable-background="new 0 0 100 40.213"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="no_gps.svg"><metadata
+ id="metadata11"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs9" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1040"
+ inkscape:window-height="700"
+ id="namedview7"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="3.21"
+ inkscape:cx="57.200771"
+ inkscape:cy="4.2062187"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" />
+
+
+<text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ x="-3.3658481"
+ y="29.6875"
+ id="text2983"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2985"
+ x="-3.3658481"
+ y="29.6875">NO</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-size:28.46728515999999942px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ x="-1.4178042"
+ y="54.461399"
+ id="text2987"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2989"
+ x="-1.4178042"
+ y="54.461399">GPS</tspan></text>
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/oc_only.svg b/main/project/attributes/svgs/oc_only.svg
new file mode 100644
index 0000000..5d82e76
--- /dev/null
+++ b/main/project/attributes/svgs/oc_only.svg
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="58.789062"
+ height="58.263783"
+ viewBox="0 0 58.789062 58.26378"
+ enable-background="new 0 0 100 71.313"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="oc_only.svg"><metadata
+ id="metadata2916"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs2914"><inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 35.656502 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 35.656502 : 1"
+ inkscape:persp3d-origin="50 : 23.771001 : 1"
+ id="perspective2918" /></defs><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="653"
+ inkscape:window-height="504"
+ id="namedview2912"
+ showgrid="false"
+ inkscape:zoom="3.3093544"
+ inkscape:cx="44.517712"
+ inkscape:cy="6.2154255"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+
+
+
+
+
+<text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ x="-1.9921875"
+ y="29.687498"
+ id="text2987"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2989"
+ x="-1.9921875"
+ y="29.687498">OC</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-size:25.13268852px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ x="-1.0273132"
+ y="52.839638"
+ id="text2991"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2993"
+ x="-1.0273132"
+ y="52.839638">only</tspan></text>
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/onehour.svg b/main/project/attributes/svgs/onehour.svg
index d526309..7b4a817 100644
--- a/main/project/attributes/svgs/onehour.svg
+++ b/main/project/attributes/svgs/onehour.svg
@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
-
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
@@ -9,27 +7,21 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- id="Layer_1"
+ version="1.1"
x="0px"
y="0px"
- width="85.750015"
- height="85.59375"
- viewBox="0 0 85.750018 85.59375"
- enable-background="new 0 0 89.783 100"
+ width="100px"
+ height="100px"
+ viewBox="-0.999 -1 100 100"
+ overflow="visible"
+ enable-background="new -0.999 -1 100 100"
xml:space="preserve"
- inkscape:version="0.47 r22583"
- sodipodi:docname="onehour.svg"><metadata
- id="metadata3005"><rdf:RDF><cc:Work
+ id="svg2"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="noun_project_2306.svg"><metadata
+ id="metadata12"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
- id="defs3003"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 42.796875 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="85.750015 : 42.796875 : 1"
- inkscape:persp3d-origin="42.875008 : 28.53125 : 1"
- id="perspective9" /></defs><sodipodi:namedview
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1"
@@ -38,33 +30,33 @@
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="749"
- id="namedview3001"
+ inkscape:window-width="1317"
+ inkscape:window-height="744"
+ id="namedview10"
showgrid="false"
- inkscape:zoom="7.64"
- inkscape:cx="26.632344"
- inkscape:cy="49.999997"
- inkscape:window-x="0"
+ inkscape:zoom="5.97"
+ inkscape:cx="84.710233"
+ inkscape:cy="45.925865"
+ inkscape:window-x="49"
inkscape:window-y="24"
inkscape:window-maximized="1"
- inkscape:current-layer="Layer_1"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0" />
+ inkscape:current-layer="svg2" />
+<defs
+ id="defs4">
+</defs>
<path
- d="m 45.528007,42.71875 c 0,-10.462 0,-20.921 0,-31.383 0,-3.42 -5.304,-3.42 -5.304,0 0,10.461 0,20.921 0,31.383 0,3.42 5.304,3.42 5.304,0 l 0,0 z"
- id="path2997"
- inkscape:connector-curvature="0"
+ d="M48.999,98C21.98,98,0,76.019,0,49C0,21.982,21.98,0,48.999,0C76.02,0,98.002,21.982,98.002,49 C98.002,76.019,76.02,98,48.999,98L48.999,98z M48.999,10.187c-21.402,0-38.813,17.412-38.813,38.813s17.412,38.813,38.813,38.813 c21.405,0,38.817-17.412,38.817-38.813S70.403,10.187,48.999,10.187L48.999,10.187z"
+ id="path6"
style="fill:#ffffff" />
<path
- d="M 42.875007,-1.5975477e-6 C 19.264491,-1.5975477e-6 0.05112733,19.183474 7.3750297e-6,42.781248 c -2.24920287e-5,0.01038 1.50716673e-5,0.02087 0,0.03125 C 0.05137172,66.410068 19.264636,85.593748 42.875007,85.593748 c 23.611369,0 42.823639,-19.182684 42.875,-42.78125 2.3e-5,-0.01053 -1.5e-5,-0.02072 0,-0.03125 C 85.698888,19.182478 66.486528,-1.5975477e-6 42.875007,-1.5975477e-6 z m 0,5.3124999975477 c 20.686698,0 37.511713,16.7937496 37.5625,37.4687496 -1.7e-5,0.01042 2.6e-5,0.02083 0,0.03125 -0.05081,20.674999 -16.875802,37.46875 -37.5625,37.46875 -20.6857,0 -37.5116885,-16.793751 -37.5624996,-37.46875 -2.56e-5,-0.01042 1.71e-5,-0.02083 0,-0.03125 C 5.3633194,22.106248 22.18931,5.3124984 42.875007,5.3124984 z"
- id="path2999"
+ style="fill:#ffffff"
+ d="m 39.812,59.016 0,-31.39 c 0,-3.383 2.743,-6.125 6.125,-6.125 3.382,0 6.127,2.742 6.127,6.125 0,0 0.202085,11.609739 0,19.141 0.08472,0.06146 -12.252,12.249 -12.252,12.249 z"
+ id="path8"
inkscape:connector-curvature="0"
- style="fill:#ffffff" />
+ sodipodi:nodetypes="cssscc" />
<path
+ style="fill:#ffffff"
+ d="M 39.848784,59.016 68.19702,37.494236 c 3.055179,-2.319469 3.872848,-6.384175 1.827836,-9.077843 -2.045013,-2.693668 -6.181139,-3 -9.236319,-0.680532 0,0 -10.606925,7.798972 -17.286194,13.123546 C 43.39561,40.834067 39.848784,59.016 39.848784,59.016 z"
+ id="path8-0"
inkscape:connector-curvature="0"
- d="m 44.925444,44.425111 c 4.67057,-6.987588 9.3398,-13.973172 14.010369,-20.960759 1.526796,-2.284224 -2.882849,-5.231672 -4.409645,-2.947448 -4.670123,6.98692 -9.339799,13.973171 -14.010368,20.960759 -1.526797,2.284224 2.882848,5.231672 4.409644,2.947448 l 0,0 z"
- id="path2997-7"
- style="fill:#ffffff" /></svg> \ No newline at end of file
+ sodipodi:nodetypes="cssscc" /></svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/other_cache.svg b/main/project/attributes/svgs/other_cache.svg
new file mode 100644
index 0000000..211f077
--- /dev/null
+++ b/main/project/attributes/svgs/other_cache.svg
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="390.21774"
+ height="336.3049"
+ viewBox="0 0 390.21774 336.30489"
+ enable-background="new 0 0 100 52.629"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="other_cache.svg"><metadata
+ id="metadata9"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs7" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1317"
+ inkscape:window-height="744"
+ id="namedview5"
+ showgrid="false"
+ inkscape:zoom="1.1660156"
+ inkscape:cx="191.24958"
+ inkscape:cy="101.62816"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="Layer_1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+
+<g
+ id="g3139"><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135"
+ d="M 31.88911,103.12086 247.77445,26.586263 358.2442,118.28339 141.63684,205.64835 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4"
+ d="M 30.848294,111.52289 136.26388,212.60632 135.54185,247.98553 32.292345,146.90209 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8"
+ d="m 145.6502,211.52328 213.71926,-85.92092 -7.22025,28.15897 -207.22104,93.14116 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8-1"
+ d="m 37.70753,161.34257 93.14116,93.14117 0,54.87387 -90.253061,-102.52749 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8-1-8"
+ d="M 139.51298,257.01083 340.2358,167.47979 328.68341,216.57746 138.06894,309.71863 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /></g></svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/overnight.svg b/main/project/attributes/svgs/overnight.svg
new file mode 100644
index 0000000..6d2c32e
--- /dev/null
+++ b/main/project/attributes/svgs/overnight.svg
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="198.78125"
+ height="122.75"
+ viewBox="0 0 198.78125 122.75"
+ enable-background="new 0 0 100 40.213"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="overnight.svg"><metadata
+ id="metadata11"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs9" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1040"
+ inkscape:window-height="700"
+ id="namedview7"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="3.21"
+ inkscape:cx="104.88827"
+ inkscape:cy="52.497968"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" />
+
+
+
+
+<path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
+ d="M 0,-9.9477642e-7 0,122.75 l 10,0 L 10,-9.9477641e-7 l -10,0 z"
+ id="path2987"
+ inkscape:connector-curvature="0" /><path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
+ d="m 5,80.062499 0,10 188.46875,0 0,-10 -188.46875,0 z"
+ id="path2989"
+ inkscape:connector-curvature="0" /><path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
+ d="m 188.78125,56.093749 0,59.187501 10,0 0,-59.187501 -10,0 z"
+ id="path2991"
+ inkscape:connector-curvature="0" /><path
+ sodipodi:type="arc"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="path3761"
+ sodipodi:cx="-14.797508"
+ sodipodi:cy="40.066994"
+ sodipodi:rx="13.239876"
+ sodipodi:ry="13.239876"
+ d="m -1.5576324,40.066994 a 13.239876,13.239876 0 1 1 -26.4797516,0 13.239876,13.239876 0 1 1 26.4797516,0 z"
+ transform="matrix(1.3131431,0,0,1.3131431,57.305661,-2.2987478)" /><rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3763"
+ width="115.57632"
+ height="23.364487"
+ x="59.837036"
+ y="44.863235" /></svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/parkngrab.svg b/main/project/attributes/svgs/parkngrab.svg
index 92c26ee..c18668f 100644
--- a/main/project/attributes/svgs/parkngrab.svg
+++ b/main/project/attributes/svgs/parkngrab.svg
@@ -11,9 +11,9 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2"
version="1.1"
- inkscape:version="0.47 r22583"
- width="65.290451"
- height="66.819588"
+ inkscape:version="0.48.3.1 r9886"
+ width="64.682953"
+ height="66.861275"
sodipodi:docname="parkngrab.svg">
<metadata
id="metadata8">
@@ -52,43 +52,58 @@
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="749"
+ inkscape:window-width="1317"
+ inkscape:window-height="744"
id="namedview4"
showgrid="false"
inkscape:zoom="2.7405038"
inkscape:cx="-51.256849"
- inkscape:cy="51.890155"
- inkscape:window-x="0"
+ inkscape:cy="51.931841"
+ inkscape:window-x="49"
inkscape:window-y="24"
inkscape:window-maximized="1"
- inkscape:current-layer="svg2" />
+ inkscape:current-layer="svg2"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+ <path
+ id="path3703"
+ d="M 15.150824,0 H 0 v 35.758378 h 6.8981489 v -11.74484 h 7.9465841 c 6.01063,0.0068 11.819577,-5.118811 11.810632,-11.985134 C 26.664065,5.930885 21.782219,0.001789 15.150824,0 z M 14.713143,17.442579 H 6.9857569 V 6.637113 h 7.8157081 c 2.53348,-0.0093 5.085912,2.341816 5.085912,5.479256 0,3.139585 -2.378283,5.319059 -5.174234,5.32621 z"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
<g
- id="g3696"
- transform="translate(9.0882706,21.394953)"
- style="stroke-width:2.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none;stroke:#ffffff;stroke-opacity:1">
+ transform="matrix(0.16719484,0,0,0.14721581,4.5982359,21.265794)"
+ id="g3139">
+ <path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135"
+ d="M 31.88911,103.12086 247.77445,26.586263 358.2442,118.28339 141.63684,205.64835 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
<path
- sodipodi:nodetypes="ccccccc"
- id="path2854"
- d="M 6.7858628,12.241164 7.1850312,27.54262 22.486486,44.174636 54.686071,29.405405 54.819127,15.434512 39.251559,1.995842 6.7858628,12.241164 z"
- style="fill:none;stroke:#ffffff;stroke-width:2.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4"
+ d="M 30.848294,111.52289 136.26388,212.60632 135.54185,247.98553 32.292345,146.90209 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
<path
- sodipodi:nodetypes="ccc"
- id="path2860"
- d="M 6.6528067,12.108108 22.220374,27.941788 54.819127,15.83368"
- style="fill:none;stroke:#ffffff;stroke-width:2.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8"
+ d="m 145.6502,211.52328 213.71926,-85.92092 -7.22025,28.15897 -207.22104,93.14116 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
<path
- sodipodi:nodetypes="cc"
- id="path2862"
- d="M 22.486486,43.908524 22.35343,27.409564"
- style="fill:none;stroke:#ffffff;stroke-width:2.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8-1"
+ d="m 37.70753,161.34257 93.14116,93.14117 0,54.87387 -90.253061,-102.52749 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
<path
- id="path2864"
- d="M 7.0519751,19.027027 22.35343,33.397089 54.952183,21.022869"
- style="fill:none;stroke:#ffffff;stroke-width:2.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8-1-8"
+ d="M 139.51298,257.01083 340.2358,167.47979 328.68341,216.57746 138.06894,309.71863 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
</g>
- <path
- id="path3703"
- d="M 15.150824,0 H 0 v 35.758378 h 6.8981489 v -11.74484 h 7.9465841 c 6.01063,0.0068 11.819577,-5.118811 11.810632,-11.985134 C 26.664034,5.9308856 21.782219,0.0017891 15.150824,0 z M 14.713143,17.442579 H 6.9857569 V 6.6371137 h 7.8157081 c 2.53348,-0.0093 5.085912,2.3418151 5.085912,5.4792553 0,3.139585 -2.378283,5.319059 -5.174234,5.32621 z"
- style="fill:#ffffff" />
</svg>
diff --git a/main/project/attributes/svgs/partnership.svg b/main/project/attributes/svgs/partnership.svg
index 9e672f8..bd5eaea 100644
--- a/main/project/attributes/svgs/partnership.svg
+++ b/main/project/attributes/svgs/partnership.svg
@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
@@ -9,117 +7,62 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="681.46454"
- height="467.98532"
- id="svg2"
version="1.1"
- inkscape:version="0.47 r22583"
- sodipodi:docname="partnership.svg">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2830"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2830-8"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2830-6"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2830-7"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2881"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- id="perspective3978" />
- <inkscape:perspective
- id="perspective3968"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#009674"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.02781"
- inkscape:cx="340.73227"
- inkscape:cy="233.99266"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1280"
- inkscape:window-height="749"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid2818"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Ebene 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(341.3208,-508.97144)">
- <path
- style="fill:#ffffff;stroke:none"
- d="m -54.29353,508.97144 c -0.72735,0 -7.11059,1.5366 -14.17715,3.42414 -16.10499,4.30179 -28.8361,7.57157 -58.03021,14.83795 -12.68735,3.15788 -29.55576,7.42578 -37.48536,9.49149 -7.92959,2.06571 -22.85164,5.79479 -33.16012,8.29003 l -18.74267,4.53548 -10.5728,7.41898 c -5.81503,4.07556 -14.4655,10.22974 -19.22325,13.66654 -4.75776,3.4368 -12.89275,9.11327 -18.08188,12.6453 l -9.43141,6.42777 -34.06121,0 -34.06121,0 0.24029,117.50217 0.24029,117.50217 26.76238,0.27032 26.79241,0.2403 18.38224,17.06064 c 25.28859,23.44493 29.58453,27.23601 30.45685,26.91256 0.78448,-0.29088 57.98147,-54.26218 78.45493,-74.03958 14.86731,-14.36185 13.74858,-14.23671 31.20776,-2.9736 24.19647,15.60939 33.04434,21.20778 35.23262,22.34704 1.92495,1.00215 2.50418,0.8017 4.80582,-1.68204 1.43938,-1.55328 3.04568,-3.41977 3.57432,-4.14501 7.88117,-10.81227 17.63954,-21.00137 20.09432,-20.99541 2.71224,0.007 6.72077,2.62405 20.69504,13.45629 24.62559,19.08868 34.32115,26.54817 38.50658,29.58579 5.12964,3.7229 28.37217,21.15326 38.08609,28.56456 3.76911,2.87569 7.13173,5.90133 7.44901,6.72814 0.75799,1.9753 -1.89432,8.63883 -5.31643,13.39621 l -2.73331,3.81462 0,28.59459 0,28.62464 3.60436,-2.04247 c 1.9824,-1.13126 9.65969,-5.60544 17.06064,-9.912 7.40096,-4.30655 15.51077,-8.98365 18.02181,-10.42261 l 4.56552,-2.6432 0,-42.982 c 0,-39.14307 -0.15039,-43.25323 -1.68203,-46.01567 -0.92512,-1.66854 -5.57475,-6.6144 -10.33251,-10.99331 -16.11232,-14.82931 -68.22843,-63.95304 -69.56416,-65.56933 -1.38381,-1.67445 -1.819,-16.01556 -0.60073,-19.85402 0.80252,-2.52851 4.30887,-2.50449 7.56916,0.0601 2.22286,1.7485 2.52305,2.69943 2.52305,7.65927 l 0,5.64683 41.81059,39.16739 41.81059,39.19743 0,46.25596 c 0,25.43752 0.25854,46.48446 0.57069,46.79662 0.6095,0.6095 12.39273,-6.33029 27.54332,-16.21962 l 9.37134,-6.09738 0,-56.97894 0,-56.9489 L 83.7535,738.11872 C 61.68571,715.86648 41.57046,695.24957 39.05942,692.31329 c -4.42721,-5.17692 -4.56552,-5.5269 -4.56552,-11.56399 0,-3.42413 0.27032,-7.56915 0.60072,-9.22115 0.53314,-2.6657 0.96969,-3.00364 3.90473,-3.00364 6.10293,0 7.0285,1.16748 7.0285,8.80065 l 0,6.78821 44.69408,44.90433 44.69407,44.90433 0,61.30418 c 0,61.18644 9.7e-4,61.33366 1.95237,60.82359 1.07512,-0.28115 10.26624,-5.51703 20.42471,-11.62407 l 18.47235,-11.11344 0,-67.07115 0,-67.07115 -12.94566,-12.49512 C 138.74214,702.97258 81.05426,646.89473 63.59911,629.71756 l -17.48115,-17.24086 -7.0285,5.3765 c -3.85397,2.95157 -10.67492,8.27076 -15.16835,11.80429 -11.16515,8.77996 -12.0361,9.28482 -17.15076,10.24239 -10.67334,1.99827 -9.76181,1.32503 -9.76181,7.3589 l 0,5.40654 -22.58732,16.82036 c -37.49164,27.92848 -42.26119,31.4091 -45.41495,33.03997 -2.59126,1.34 -6.9641,1.56189 -30.27663,1.56189 l -27.24297,0 -14.3874,-13.03577 c -7.89952,-7.16855 -17.68587,-15.92714 -21.74632,-19.46355 -6.13052,-5.33935 -7.39388,-6.93955 -7.44901,-9.40138 -0.0608,-2.71622 0.93046,-3.68268 11.86436,-11.53395 6.56362,-4.71313 22.56699,-16.2904 35.56303,-25.74114 l 23.6386,-17.18079 0,-20.9053 c 0,-15.56607 0.30685,-21.14403 1.20145,-21.86645 1.07424,-0.86748 14.93705,-8.36533 54.06541,-29.2554 6.87232,-3.66903 13.06887,-7.23186 13.75665,-7.89956 1.01717,-0.98747 -0.81603,-2.86825 -9.85192,-10.03213 -6.10987,-4.84405 -11.7077,-8.80065 -12.43505,-8.80065 z m 83.8915,0.78094 c -1.3019,0.0315 -2.17737,0.28266 -3.33403,0.63077 -2.33986,0.7042 -6.53499,2.75802 -9.31127,4.56552 -4.53961,2.95551 -47.46134,26.04069 -83.62117,44.9644 -7.57602,3.9648 -15.8061,8.43804 -18.29213,9.94203 l -4.53549,2.73331 0,20.36464 0,20.39467 -12.82552,9.55156 c -7.05782,5.2666 -17.92425,13.25804 -24.14922,17.75148 -6.22497,4.49343 -15.61326,11.30597 -20.84522,15.13831 l -9.49148,6.96844 8.41018,7.65926 c 4.63794,4.21541 8.87273,7.6838 9.40137,7.68931 0.52864,0.006 6.43116,-3.76305 13.12588,-8.38014 6.69472,-4.61709 16.72987,-11.54597 22.28697,-15.37861 5.55709,-3.83264 10.91568,-6.96843 11.89439,-6.96843 5.24966,0 8.03065,6.5672 4.23512,10.0021 -1.00043,0.90539 -8.46146,6.15191 -16.58006,11.6541 -8.1186,5.5022 -15.2104,10.35174 -15.73904,10.78305 -0.52864,0.4313 -2.475,1.75051 -4.32523,2.91352 -1.85024,1.16302 -3.96945,2.51351 -4.71571,3.00364 -1.09455,0.7189 -0.81587,1.34948 1.44174,3.33403 l 2.79338,2.46298 24.74995,0.03 24.74994,0.03 6.00727,-4.20509 c 3.30161,-2.31346 16.82035,-12.31754 30.03634,-22.22689 l 24.02908,-18.02181 0.48058,-26.04151 0.48058,-26.01147 2.6432,-1.50181 c 2.37801,-1.32946 2.90838,-1.32933 5.28639,0 l 2.6432,1.50181 0.27033,17.12072 0.27033,17.15075 4.74574,-0.45055 c 3.1015,-0.29802 5.83022,-1.30771 7.89956,-2.91352 1.74036,-1.35053 10.07418,-7.89047 18.53242,-14.53759 11.46397,-9.00927 16.08879,-12.08881 18.14195,-12.10465 2.81628,-0.0217 15.87438,12.2533 83.26074,78.27471 11.36575,11.13553 29.44276,28.81029 40.15859,39.28753 l 19.46354,19.07308 -0.03,62.14519 c -0.022,34.18373 -0.0411,64.19968 -0.03,66.71071 l 0.03,4.56553 21.74631,0 21.71627,0 23.09795,-22.34704 23.06791,-22.34704 30.63707,-0.30036 30.63706,-0.27033 0,-114.34835 0,-114.31832 -27.48325,0 -27.45321,0 -8.56036,-7.20872 c -4.6993,-3.96479 -8.81414,-7.20872 -9.16109,-7.20872 -0.34694,0 -5.44689,-4.01955 -11.3237,-8.95083 -5.87681,-4.93127 -11.25129,-9.30779 -11.92442,-9.70174 -0.67314,-0.39394 -10.62118,-3.02741 -22.10675,-5.85708 -11.48558,-2.82969 -27.79563,-6.8899 -36.25386,-9.01091 -8.45824,-2.121 -23.81282,-5.84162 -34.12129,-8.29003 -10.30847,-2.44841 -21.33781,-5.25952 -24.50965,-6.24756 -3.17184,-0.98803 -13.5524,-3.61869 -23.06791,-5.82705 -9.51552,-2.20836 -24.00505,-5.70456 -32.19896,-7.77941 C 41.245,511.61151 33.50371,509.65778 29.598,509.75231 z m -173.8203,286.78699 c -0.7895,0.2899 -27.51849,25.49123 -70.46526,66.47042 -10.44063,9.9623 -18.98297,18.41016 -18.98297,18.77272 0,0.65161 4.3514,4.38864 24.02908,20.57489 5.55071,4.56585 13.5402,11.14942 17.75147,14.6277 4.21128,3.47827 8.13812,6.18621 8.74058,6.0373 0.60246,-0.1489 6.93269,-6.97444 14.05701,-15.16835 7.12432,-8.19391 14.65935,-17.11957 16.73024,-19.82399 3.00916,-3.9297 31.27584,-37.19598 49.80025,-58.63093 2.61154,-3.02186 3.15352,-4.22513 2.25273,-4.956 -6.06973,-4.92473 -42.84926,-28.29442 -43.91313,-27.90376 z m 80.64757,5.25636 -2.61316,2.52305 c -1.44822,1.3943 -5.67086,6.25273 -9.37134,10.78305 -3.70047,4.53031 -22.40711,26.59418 -41.57029,49.04934 -19.16319,22.45516 -34.84216,41.05925 -34.84216,41.33001 0,0.27075 -4.12325,5.30895 -9.16108,11.20355 -5.03783,5.89461 -8.82496,11.05911 -8.41018,11.47389 0.41479,0.41479 13.51289,4.04103 29.10522,8.04974 15.59231,4.0087 30.51692,7.87591 33.16012,8.59039 2.64319,0.71448 5.07217,1.35325 5.3765,1.41171 0.30433,0.0584 1.45946,-0.87642 2.58313,-2.07251 1.12366,-1.19609 4.56379,-5.4861 7.62923,-9.52152 3.06543,-4.03542 11.93644,-15.57732 19.73387,-25.65104 7.79744,-10.07371 14.17716,-18.575 14.17716,-18.89285 0,-0.31786 2.29375,-3.48841 5.10618,-7.02851 2.81242,-3.5401 11.5291,-14.86198 19.37344,-25.17045 7.84433,-10.30847 14.64279,-19.24615 15.10827,-19.85402 0.55443,-0.72404 -0.40738,-2.27412 -2.79337,-4.53549 -2.00321,-1.89859 -4.01746,-3.47963 -4.47542,-3.48422 -0.45795,-0.005 -7.16206,-4.87288 -14.89802,-10.84312 -7.73596,-5.97022 -16.10596,-12.32844 -18.62254,-14.11708 l -4.59556,-3.24392 z m -85.03288,12.9757 4.02487,3.90472 4.02487,3.93476 -4.74574,4.26516 c -2.612,2.34842 -4.74574,4.8621 -4.74574,5.58676 0,0.72465 4.34297,4.60769 9.64166,8.62043 l 9.64167,7.29883 -3.12378,4.35527 c -1.71905,2.39375 -3.35877,4.46531 -3.6344,4.6256 -0.27563,0.16029 -6.56594,-4.25108 -13.9669,-9.79185 -7.40095,-5.54076 -13.75873,-10.5633 -14.14711,-11.17352 -1.75087,-2.75087 -0.26784,-5.17996 8.13984,-13.18595 l 8.89076,-8.44021 z m 83.83143,5.64683 c 2.14042,-0.0431 9.8812,6.03165 9.07097,7.11861 -0.42324,0.56781 -2.82284,3.69777 -5.34646,6.96843 -2.52362,3.27068 -4.36178,6.35175 -4.05491,6.84829 0.30688,0.49653 4.23962,3.01029 8.74058,5.58676 4.50095,2.57647 8.19819,5.21784 8.19992,5.85709 0.004,1.3033 -5.00743,9.8867 -5.76698,9.88195 -0.26817,-0.002 -3.94077,-2.13574 -8.16989,-4.74574 -4.22911,-2.61001 -9.9029,-6.06911 -12.61526,-7.6893 -5.15056,-3.07664 -7.93887,-7.36949 -6.45781,-9.97207 2.21916,-3.89963 15.37925,-19.83348 16.39984,-19.85402 z m 56.97894,24.02907 c -0.47731,0.0457 -0.79129,0.44938 -1.29156,1.26153 -1.10803,1.79881 -6.60698,8.98719 -27.84369,36.46412 -6.44543,8.33936 -13.66053,17.9301 -16.03941,21.29576 -2.37888,3.36566 -11.16838,15.02817 -19.55366,25.9514 -8.38526,10.92324 -15.09802,20.04449 -14.89802,20.2445 0.20001,0.2 10.10086,2.79272 21.9866,5.76697 11.88574,2.97427 23.32622,6.02181 25.44078,6.75818 2.11456,0.73639 4.52846,1.35644 5.37651,1.38167 0.91861,0.0273 3.44403,-3.08146 6.24756,-7.65926 2.58811,-4.22608 10.70777,-16.87739 18.0218,-28.11402 7.31403,-11.23663 13.54376,-21.0735 13.84675,-21.86646 0.303,-0.79296 3.2061,-5.55071 6.45782,-10.57279 10.70307,-16.53022 14.92806,-23.68934 14.92806,-25.2906 0,-1.39695 -23.94679,-20.81178 -30.45685,-24.68987 -1.10571,-0.65868 -1.74538,-0.97674 -2.22269,-0.93113 z m -273.39078,4.59556 c -0.13772,0.007 -0.25996,0.0358 -0.36044,0.0901 -1.23741,0.66977 -26.61219,23.23851 -26.61219,23.66864 0,0.6374 32.94313,30.19801 33.6407,30.18652 0.52864,-0.009 6.80023,-5.6306 13.93686,-12.49511 l 12.9757,-12.49512 -6.24756,-5.85709 c -18.76378,-17.63367 -25.26718,-23.1919 -27.33307,-23.09794 z m 272.12925,9.79185 c 1.10083,0 8.95083,6.16498 8.95083,7.0285 0,0.51675 -1.5409,2.83797 -3.42414,5.13622 -1.88324,2.29825 -3.15573,4.59851 -2.82342,5.13621 0.33232,0.5377 2.95452,2.4877 5.82705,4.32524 2.87253,1.83752 5.22633,3.61332 5.22633,3.93476 0,0.32144 -0.75692,1.71831 -1.68204,3.12378 -0.92512,1.40547 -2.13687,3.3918 -2.70327,4.41534 -0.56641,1.02355 -1.43146,1.96112 -1.92232,2.07251 -0.49088,0.11138 -5.33446,-2.79114 -10.75301,-6.45782 -9.40918,-6.36708 -9.85192,-6.81637 -9.85192,-10.09221 0,-2.81709 1.13832,-4.78966 6.33766,-11.02333 3.48178,-4.17443 6.55381,-7.5992 6.81825,-7.5992 z m -233.9831,31.71838 c -0.42454,0 -4.00805,3.26646 -7.95963,7.26879 l -7.17868,7.29883 3.36407,2.91353 c 1.85024,1.61118 7.47304,5.67459 12.49512,9.0109 5.02207,3.33632 13.67254,9.32578 19.22325,13.3061 5.55072,3.98032 10.4242,7.24726 10.81309,7.26879 0.38888,0.0215 3.63281,-1.52789 7.20872,-3.42414 9.45055,-5.01149 9.33371,-4.77911 4.74574,-8.92079 -7.20608,-6.50513 -41.92039,-34.72201 -42.71168,-34.72201 z m 261.28614,15.40864 c -0.89345,0.28065 -2.71083,3.12314 -16.12952,24.47962 -5.97432,9.50839 -10.87315,17.65329 -10.87315,18.11191 0,0.95415 11.89792,0.0409 21.14558,-1.62196 l 6.24756,-1.11134 0.27033,-19.94414 c 0.14288,-10.9655 -0.0733,-19.92064 -0.48059,-19.91409 -0.0544,8.8e-4 -0.12065,-0.0187 -0.18021,0 z m -184.24292,35.9535 c -0.11645,0.01 -0.20418,0.054 -0.24029,0.0901 -1.24502,1.24503 23.78672,22.63739 25.41074,21.71628 0.58242,-0.33034 4.15623,-2.9592 7.9296,-5.85709 7.96796,-6.11927 8.75492,-5.27817 -8.83069,-9.73177 -6.42247,-1.62651 -14.45714,-3.78418 -17.84158,-4.80582 -2.9614,-0.89393 -5.61269,-1.47655 -6.42778,-1.41171 z m 77.37361,20.72508 c -1.18363,0.008 -1.68818,1.37804 -2.16261,5.91716 -0.34063,3.25893 -0.36773,6.17847 -0.0601,6.48785 0.71918,0.72325 12.01594,1.66317 22.55729,1.86225 8.17105,0.1543 8.25238,0.12257 10.45264,-2.85345 1.78706,-2.41712 1.95935,-3.13054 0.90109,-3.78458 -1.51436,-0.93593 -29.373,-7.64425 -31.68834,-7.62923 z"
- id="rect4001" />
- </g>
-</svg>
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="100"
+ height="64.844002"
+ viewBox="0 0 100 64.844"
+ enable-background="new 0 0 100 64.844"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="partnership.svg"><metadata
+ id="metadata15"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs13" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview11"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="3.21"
+ inkscape:cx="50"
+ inkscape:cy="32.422"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" />
+<path
+ d="m 24.948,11.444999 c 0,6.328 -5.13,11.445 -11.432,11.445 -6.341,0 -11.458,-5.117 -11.458,-11.445 C 2.057,5.1299991 7.174,-8.8500977e-7 13.516,-8.8500977e-7 19.818,-8.8500977e-7 24.948,5.1299991 24.948,11.444999 z"
+ id="path3"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+<path
+ d="m 75.052,11.444999 c 0,6.328 5.131,11.445 11.433,11.445 6.341,0 11.472,-5.117 11.472,-11.445 C 97.956,5.1299991 92.825,-8.8500977e-7 86.484,-8.8500977e-7 80.183,-8.8500977e-7 75.052,5.1299991 75.052,11.444999 z"
+ id="path5"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+<path
+ d="m 43.672,50.780999 c -0.26,-2.435 0.677,-4.688 2.266,-6.328 -9.688,-1.849 -13.659,-6.575 -17.109,-10.847 -1.68,-2.096 -3.281,-4.088 -5.404,-5.495 -0.065,-0.039 -0.143,-0.039 -0.195,-0.091 -1.81,-1.498 -4.102,-2.448 -6.627,-2.448 H 10.418 C 4.688,25.572999 0,30.247999 0,35.976999 v 28.867 h 27.018 v -18.659 c 3.945,3.451 9.519,6.732 18.086,8.164 -0.716,-1.041 -1.276,-2.213 -1.432,-3.568 z"
+ id="path7"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+<path
+ d="m 89.597,25.572999 h -6.198 c -2.513,0 -4.817,0.951 -6.614,2.448 -0.065,0.052 -0.144,0.052 -0.195,0.091 -2.123,1.406 -3.725,3.386 -5.417,5.495 -3.789,4.688 -8.086,10.039 -20.104,11.367 -2.721,0.312 -4.674,2.761 -4.375,5.482 0.273,2.539 2.422,4.414 4.921,4.414 0.183,0 0.365,-0.014 0.561,-0.026 10.182,-1.133 16.484,-4.753 20.82,-8.594 v 18.594 H 100 v -28.867 c 0,-5.729 -4.688,-10.404 -10.403,-10.404 z"
+ id="path9"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/poi.svg b/main/project/attributes/svgs/poi.svg
new file mode 100644
index 0000000..9c8dc94
--- /dev/null
+++ b/main/project/attributes/svgs/poi.svg
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="99.999252"
+ height="99.997253"
+ viewBox="0 0 99.999252 99.997252"
+ enable-background="new 0 0 99.999 99.998"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="poi.svg"><metadata
+ id="metadata11"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs9" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview7"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="2.3600648"
+ inkscape:cx="49.999377"
+ inkscape:cy="49.997624"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" />
+<path
+ d="m 49.915,56.69925 c 1.843,-1.818 1.843,-4.797 0,-6.615 -1.818,-1.843 -4.798,-1.843 -6.615,0 l -9.366,9.341 v -13.229 c 0,-2.575 -2.096,-4.696 -4.696,-4.696 -2.575,0 -4.696,2.121 -4.696,4.696 v 13.229 l -9.342,-9.341 c -1.843,-1.843 -4.797,-1.843 -6.64,0 -1.843,1.818 -1.843,4.796 0,6.615 l 9.341,9.342 -13.229,0.025 c -2.576,0 -4.672,2.096 -4.672,4.695 0,2.575 2.096,4.696 4.672,4.696 H 17.9 l -9.341,9.341 c -1.843,1.844 -1.843,4.797 0,6.641 1.843,1.818 4.797,1.818 6.64,0 l 9.316,-9.342 0.025,13.205 c 0,2.6 2.121,4.695 4.696,4.695 2.601,0 4.696,-2.096 4.696,-4.695 v -13.23 l 9.366,9.367 c 1.817,1.818 4.797,1.818 6.615,0 1.843,-1.844 1.843,-4.797 0,-6.641 l -9.342,-9.341 h 13.232 c 2.575,0 4.696,-2.121 4.696,-4.696 0,-2.6 -2.121,-4.695 -4.696,-4.695 H 40.574 l 9.341,-9.367 z"
+ id="path3"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+<path
+ d="m 55.166,9.3862494 c 0,-2.575 2.096,-4.671 4.696,-4.671 2.6,0 4.696,2.096 4.696,4.671 V 28.80125 L 92.002,1.3822494 c 1.818,-1.84299994 4.797,-1.84299994 6.615,0 1.843,1.818 1.843,4.797 0,6.615 L 71.198,35.44125 h 19.415 c 2.575,0 4.671,2.095 4.671,4.696 0,2.575 -2.096,4.696 -4.671,4.696 l -30.726,-0.025 c -1.212,0 -2.398,-0.455 -3.333,-1.363 -0.909,-0.909 -1.363,-2.121 -1.363,-3.308 L 55.166,9.3862494 z"
+ id="path5"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/poisonoak.svg b/main/project/attributes/svgs/poisonoak.svg
index 546a6d5..f0a0a6d 100644
--- a/main/project/attributes/svgs/poisonoak.svg
+++ b/main/project/attributes/svgs/poisonoak.svg
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
@@ -9,48 +9,64 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- id="Layer_1"
- x="0px"
- y="0px"
- width="100px"
- height="95.21px"
- viewBox="0 0 100 95.21"
- enable-background="new 0 0 100 95.21"
- xml:space="preserve"
- inkscape:version="0.47 r22583"
- sodipodi:docname="poisonoak.svg"><metadata
- id="metadata2883"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs2881"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 47.605 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="100 : 47.605 : 1"
- inkscape:persp3d-origin="50 : 31.736666 : 1"
- id="perspective2885" /></defs><sodipodi:namedview
- pagecolor="#009674"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:window-width="640"
- inkscape:window-height="504"
- id="namedview2879"
- showgrid="false"
- inkscape:zoom="2.4787312"
- inkscape:cx="50"
- inkscape:cy="47.605"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="0"
- inkscape:current-layer="Layer_1" />
-<path
- d="m 50,8.4503716 c -22.712234,0 -41.1244915,17.6827084 -41.1244915,42.2940724 0,8.86644 4.9949805,15.477613 12.9788895,19.785815 0.894869,4.374823 2.521754,8.812156 3.983318,10.851108 3.669127,5.118355 20.771158,5.378261 24.162284,5.378261 3.390303,0 20.492334,-0.259906 24.162284,-5.377438 1.461564,-2.039775 3.089272,-6.477108 3.98414,-10.851931 C 86.129511,66.222057 91.124492,59.610884 91.124492,50.744444 91.124492,26.13308 72.711412,8.4503716 50,8.4503716 z m 0,2.5719254 c 7.328384,0 13.270051,5.940844 13.270051,13.269229 0,7.328384 -5.941667,13.269228 -13.270051,13.269228 -7.329207,0 -13.269228,-5.940844 -13.269228,-13.269228 0,-7.328385 5.940021,-13.269229 13.269228,-13.269229 z M 16.864352,55.751762 c -1.927916,0 -3.755488,-0.420293 -5.40787,-1.159711 -0.233588,-1.241137 -0.360251,-2.522576 -0.360251,-3.847607 0,-7.983909 1.969041,-15.303246 5.448995,-21.515512 0.107746,-0.0016 0.212203,-0.01645 0.319949,-0.01645 7.329207,0 13.269228,5.940844 13.269228,13.269229 -8.22e-4,7.329207 -5.940844,13.270051 -13.270051,13.270051 z M 71.639707,79.533233 C 70.224202,81.507208 62.158045,83.60867 50,83.60867 37.842778,83.60867 29.777443,81.507208 28.360293,79.531588 26.553282,77.011479 24.330092,69.579461 24.2865,64.790925 28.499293,58.866531 38.742582,54.912 50,54.912 c 11.257418,0 21.501529,3.954531 25.714322,9.878925 -0.04359,4.788536 -2.267604,12.219731 -4.074615,14.742308 z m 11.5749,-23.781471 c -7.327562,0 -13.269229,-5.940844 -13.269229,-13.269229 0,-7.329207 5.941667,-13.269228 13.269229,-13.269228 0.107746,0 0.212202,0.01398 0.319948,0.01645 3.479955,6.211443 5.448995,13.531602 5.448995,21.515511 0,1.324209 -0.12584,2.60647 -0.36025,3.847608 -1.653205,0.738595 -3.479955,1.158888 -5.408693,1.158888 z"
- id="path2877"
- style="fill:#ffffff" />
-</svg> \ No newline at end of file
+ width="659.70728"
+ height="720.22192"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="poisonoak.svg">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="316.07589"
+ inkscape:cy="428.78936"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="959"
+ inkscape:window-height="555"
+ inkscape:window-x="405"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-33.924109,-240.92962)">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ d="m 365.6954,295.21873 c 113.84883,-0.61335 323.87722,81.95966 269.33447,181.98274 -184.70896,41.03027 -391.767,38.50899 -545.853604,0 C 48.526203,359.62956 241.29632,295.88891 365.6954,295.21873 z"
+ id="rect2985"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sccs" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ d="m 295.05569,525.73021 c 53.48262,7.17829 99.38289,2.32542 138.30689,0 58.33549,58.33549 84.07174,272.61444 0,356.68618 -32.59925,32.59925 -105.70764,32.59925 -138.30689,0 -84.07174,-84.07174 -58.33549,-298.35069 0,-356.68618 z"
+ id="rect2987"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ </g>
+</svg>
diff --git a/main/project/attributes/svgs/puzzle.svg b/main/project/attributes/svgs/puzzle.svg
new file mode 100644
index 0000000..fc32e0f
--- /dev/null
+++ b/main/project/attributes/svgs/puzzle.svg
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg1"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.3.1 r9886"
+ width="291.81256"
+ height="364.14044"
+ sodipodi:docname="puzzle.svg"
+ version="1.1">
+ <metadata
+ id="metadata3117" />
+ <defs
+ id="defs3">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 250 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="500 : 250 : 1"
+ inkscape:persp3d-origin="250 : 166.66667 : 1"
+ id="perspective3121" />
+ <linearGradient
+ id="linearGradient1085">
+ <stop
+ style="stop-color: rgb(127, 0, 0); stop-opacity: 1;"
+ offset="0.0000000"
+ id="stop1086" />
+ <stop
+ style="stop-color: rgb(255, 0, 0); stop-opacity: 1;"
+ offset="1.0000000"
+ id="stop1087" />
+ </linearGradient>
+ <radialGradient
+ xlink:href="#linearGradient1085"
+ id="radialGradient1088"
+ cx="1.7995006"
+ cy="-0.033503532"
+ r="2.1367373"
+ fx="1.7995006"
+ fy="-0.033503532" />
+ <radialGradient
+ xlink:href="#linearGradient1085"
+ id="radialGradient1089"
+ cx="-1.8538072"
+ cy="-0.028270273"
+ r="2.1367373"
+ fx="-1.8538072"
+ fy="-0.028270273" />
+ <radialGradient
+ xlink:href="#linearGradient1085"
+ id="radialGradient1090"
+ cx="-0.34090281"
+ cy="-1.884181"
+ r="2.1367373"
+ fx="-0.34090281"
+ fy="-1.884181"
+ gradientTransform="scale(0.751916,1.32993)" />
+ <radialGradient
+ xlink:href="#linearGradient1085"
+ id="radialGradient1091"
+ cx="-0.33888963"
+ cy="0.86286521"
+ r="2.1367373"
+ fx="-0.33888963"
+ fy="0.86286521"
+ gradientTransform="scale(0.751916,1.32993)" />
+ <radialGradient
+ xlink:href="#linearGradient1085"
+ id="radialGradient1092"
+ cx="0.86051458"
+ cy="-0.022911092"
+ r="2.1367371"
+ fx="0.86051458"
+ fy="-0.022911092" />
+ <radialGradient
+ xlink:href="#linearGradient1085"
+ id="radialGradient1093"
+ cx="-2.7927938"
+ cy="-0.031800985"
+ r="2.1367373"
+ fx="-2.7927938"
+ fy="-0.031800985" />
+ <radialGradient
+ xlink:href="#linearGradient1085"
+ id="radialGradient1094"
+ cx="-0.34090281"
+ cy="-1.1746118"
+ r="2.1367373"
+ fx="-0.34090281"
+ fy="-1.1746118"
+ gradientTransform="scale(0.751916,1.32993)" />
+ <radialGradient
+ xlink:href="#linearGradient1085"
+ id="radialGradient1095"
+ cx="-0.33623907"
+ cy="1.5691054"
+ r="2.1367371"
+ fx="-0.33623907"
+ fy="1.5691054"
+ gradientTransform="scale(0.751916,1.32993)" />
+ <radialGradient
+ xlink:href="#linearGradient1085"
+ id="radialGradient1096"
+ cx="200.6837"
+ cy="118.1623"
+ r="216.88765"
+ fx="200.6837"
+ fy="118.1623"
+ gradientTransform="scale(0.89519467,1.1170755)"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.6394773"
+ inkscape:cx="145.90627"
+ inkscape:cy="182.07022"
+ inkscape:window-width="1317"
+ inkscape:window-height="744"
+ showgrid="true"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg1" />
+ <path
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccc"
+ id="path1248"
+ d="m 141.5625,6.2966911 c -15.19944,0.559541 -32.24863,5.6533059 -41.34375,16.5624999 -13.22926,28.187733 18.90771,15.172914 22.6875,34.6875 C 126.68604,77.061281 104,78.140441 104,78.140441 l 0,0 -97.75,0 c 0,0 0.125,96.937509 0.125,96.937499 0,0 1.07917,22.68603 20.59375,18.90625 15.8556,-3.07108 10.23276,-24.87804 22.6875,-25.84375 2.87417,-0.22286 6.7148,0.67576 12,3.15625 10.9092,9.09512 16.00296,26.14431 16.5625,41.34375 0.20656,5.61095 -0.2833,10.88794 -1.25,15.5 -0.0248,0.20469 -0.0673,0.42017 -0.0937,0.625 -1.69391,13.11441 -6.7618,26.4178 -15.96875,34.09375 -28.18774,13.22927 -15.17291,-18.90772 -34.6875,-22.6875 -14.2182,-2.75393 -18.61045,8.47834 -19.96875,14.8125 l 0,102.90625 c 0,0 98.09376,-0.78126 98.09375,-0.78125 0,0 22.68603,-1.07918 18.90625,-20.59375 -3.77979,-19.51459 -35.88551,-6.49978 -22.65625,-34.6875 9.09512,-10.9092 26.11306,-16.00297 41.3125,-16.5625 5.61095,-0.20656 10.88796,0.28329 15.5,1.25 0.20469,0.0248 0.42018,0.0673 0.625,0.0937 13.11441,1.69391 26.44906,6.76179 34.125,15.96875 13.22927,28.18774 -18.90771,15.1729 -22.6875,34.6875 -3.77979,19.51458 18.90625,20.59374 18.90625,20.59375 l 97.1875,0.0312 c 0,0 -0.62501,-98.25001 -0.625,-98.25 0,0 -1.07918,-22.68605 -20.59375,-18.90625 -19.51459,3.77979 -6.49978,35.91675 -34.6875,22.6875 -10.9092,-9.09512 -16.00297,-26.14431 -16.5625,-41.34375 -0.20656,-5.61095 0.28329,-10.88795 1.25,-15.5 0.0248,-0.20469 0.0673,-0.42019 0.0937,-0.625 1.69391,-13.11441 6.76179,-26.41782 15.96875,-34.09375 5.2852,-2.48049 9.12583,-3.37911 12,-3.15625 12.45474,0.96571 6.83189,22.74142 22.6875,25.8125 18.2079,3.5267 20.26129,-15.33972 20.46875,-17.96875 l 0,-98.406249 -102.15625,0 c -6.40559,-1.48184 -16.96423,-5.99178 -14.28125,-19.84365 3.77978,-19.514589 35.88552,-6.49976 22.65625,-34.6875 C 184.1053,14.402247 170.80191,9.3343571 157.6875,7.6404411 c -0.20483,-0.02645 -0.42031,-0.06894 -0.625,-0.09375 -4.61205,-0.966697 -9.88905,-1.456557 -15.5,-1.25 z"
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:12.50000000000000000;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" />
+ <metadata
+ id="metadata3119">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:title />
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Nicu Buculei</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <cc:license
+ rdf:resource="http://web.resource.org/cc/PublicDomain" />
+ <dc:format>image/svg+xml</dc:format>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://web.resource.org/cc/PublicDomain">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ id="text3169" />
+ <path
+ inkscape:connector-curvature="0"
+ style="font-size:40px;font-style:normal;font-weight:bold;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Charter"
+ id="path3181"
+ d="m 161.33204,205.10132 -38.88809,0 0,-5.20394 c -5e-5,-5.80571 1.18488,-10.9388 3.55487,-15.39942 2.36987,-4.53125 7.361,-10.26622 14.97351,-17.20486 l 6.89428,-6.15981 c 4.09345,-3.68157 7.07376,-7.15086 8.94101,-10.40787 1.93895,-3.25679 2.90846,-6.51364 2.90857,-9.77064 -1.1e-4,-4.95604 -1.72369,-8.81472 -5.17072,-11.57614 -3.4472,-2.83196 -8.25886,-4.24796 -14.43493,-4.24812 -5.81712,1.6e-4 -12.10096,1.20377 -18.85158,3.61088 -6.75066,2.33659 -13.78857,5.84134 -21.11372,10.51413 l 0,-33.34776 c 8.68961,-2.97349 16.62521,-5.16838 23.8068,-6.584543 7.18153,-1.415894 14.11172,-2.123923 20.79058,-2.124086 17.52291,1.63e-4 30.88062,3.540249 40.07308,10.620319 9.19229,7.00954 13.78846,17.27582 13.78857,30.79884 -1.1e-4,6.93869 -1.40053,13.16924 -4.20121,18.69171 -2.8009,5.45184 -7.57666,11.32841 -14.32721,17.6297 l -6.89429,6.05356 c -4.88353,4.38977 -8.07928,7.92986 -9.58736,10.62027 -1.5082,2.61978 -2.26227,5.52263 -2.26216,8.70868 l 0,4.7791 m -38.88809,15.71806 38.88809,0 0,37.80821 -38.88809,0 0,-37.80821" />
+</svg>
diff --git a/main/project/attributes/svgs/railway.svg b/main/project/attributes/svgs/railway.svg
new file mode 100644
index 0000000..1ded551
--- /dev/null
+++ b/main/project/attributes/svgs/railway.svg
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="74.844002"
+ height="100"
+ viewBox="0 0 74.844 100"
+ enable-background="new 0 0 74.844 100"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="railway.svg"><metadata
+ id="metadata9"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs7" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview5"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="2.36"
+ inkscape:cx="37.422"
+ inkscape:cy="50"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" />
+<path
+ d="m 65.377999,100 h 9.466 l -16.823,-24.954 c 3.229,-0.508 5.898,-1.999 8.021,-4.447 2.135,-2.447 3.203,-5.352 3.203,-8.704 v -48.75 c 0,-3.607 -1.289,-6.699 -3.867,-9.284 -2.592,-2.578 -5.756,-3.861 -9.48,-3.861 h -36.953 c -3.75,0 -6.901,1.283 -9.4789999,3.861 -2.578,2.584 -3.867,5.677 -3.867,9.284 v 48.75 c 0,3.353 1.094,6.289 3.294,8.802 2.1879999,2.514 4.8309999,3.959 7.9299999,4.35 L -8.8500977e-7,100 H 9.4659991 l 1.6139999,-2.402 h 52.682 l 1.616,2.402 z m -5.625,-33.079 c -1.146,1.158 -2.644,1.744 -4.44,1.744 -1.68,0 -3.099,-0.586 -4.258,-1.744 -1.159,-1.166 -1.745,-2.637 -1.745,-4.447 0,-1.673 0.586,-3.118 1.745,-4.349 1.159,-1.224 2.578,-1.843 4.258,-1.843 1.797,0 3.294,0.619 4.44,1.843 1.158,1.23 1.744,2.676 1.744,4.349 0,1.81 -0.586,3.281 -1.744,4.447 z m -46.029,-52.546 c 0,-1.803 0.586,-3.288 1.745,-4.453 1.146,-1.159 2.63,-1.738 4.44,-1.738 h 35.013 c 1.81,0 3.32,0.58 4.544,1.738 1.237,1.166 1.85,2.65 1.85,4.453 v 15.599 c 0,1.81 -0.612,3.294 -1.85,4.453 -1.224,1.159 -2.734,1.731 -4.544,1.731 h -35.013 c -1.81,0 -3.294,-0.573 -4.44,-1.731 -1.159,-1.159 -1.745,-2.644 -1.745,-4.453 V 14.375 z m 1.354,52.546 c -1.172,-1.166 -1.745,-2.637 -1.745,-4.447 0,-1.673 0.573,-3.118 1.745,-4.349 1.172,-1.224 2.643,-1.843 4.453,-1.843 1.667,0 3.086,0.619 4.258,1.843 1.159,1.23 1.745,2.676 1.745,4.349 0,1.811 -0.586,3.281 -1.745,4.447 -1.172,1.158 -2.591,1.744 -4.258,1.744 -1.81,0 -3.281,-0.586 -4.453,-1.744 z m 1.42,22.617 4.388,-6.557 h 33.073 l 4.401,6.557 h -41.862 z"
+ id="path3"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/s_tool.svg b/main/project/attributes/svgs/s_tool.svg
index 2125558..ebcdbbd 100644
--- a/main/project/attributes/svgs/s_tool.svg
+++ b/main/project/attributes/svgs/s_tool.svg
@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
-
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
@@ -9,27 +7,21 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
+ version="1.1"
id="Layer_1"
x="0px"
y="0px"
- width="73.041px"
- height="100px"
- viewBox="0 0 73.041 100"
- enable-background="new 0 0 73.041 100"
+ width="98.927536"
+ height="99.996468"
+ viewBox="0 0 98.927536 99.996468"
+ enable-background="new 0 0 100 100"
xml:space="preserve"
- inkscape:version="0.47 r22583"
+ inkscape:version="0.48.3.1 r9886"
sodipodi:docname="s_tool.svg"><metadata
- id="metadata2930"><rdf:RDF><cc:Work
+ id="metadata25"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs2928"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 50 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="73.041 : 50 : 1"
- inkscape:persp3d-origin="36.5205 : 33.333333 : 1"
- id="perspective2932" /></defs><sodipodi:namedview
+ id="defs23" /><sodipodi:namedview
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1"
@@ -39,22 +31,38 @@
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="640"
- inkscape:window-height="504"
- id="namedview2926"
+ inkscape:window-height="480"
+ id="namedview21"
showgrid="false"
- inkscape:zoom="2.36"
- inkscape:cx="36.5205"
- inkscape:cy="50"
- inkscape:window-x="0"
+ inkscape:zoom="3.337544"
+ inkscape:cx="44.231188"
+ inkscape:cy="49.251061"
+ inkscape:window-x="49"
inkscape:window-y="24"
inkscape:window-maximized="0"
- inkscape:current-layer="Layer_1" />
+ inkscape:current-layer="Layer_1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+
+
+
+
<path
- d="M21.462,72.617c0-3.271,2.651-5.919,5.921-5.919c3.269,0,5.919,2.648,5.919,5.919c0,3.27-2.65,5.919-5.919,5.919 C24.114,78.536,21.462,75.886,21.462,72.617z M29.671,45.33c-1.523-0.128-3.055-0.128-4.578,0l-2.707,7.382 c-1.968,0.493-3.833,1.281-5.531,2.294l-7.151-3.303c-1.167,0.987-2.249,2.07-3.236,3.237l3.307,7.135 c-1.044,1.738-1.806,3.616-2.29,5.532l-7.391,2.721c-0.127,1.523-0.127,3.054,0,4.579l7.383,2.706 c0.492,1.968,1.28,3.834,2.292,5.529l-3.301,7.152c0.987,1.166,2.069,2.25,3.236,3.236l7.135-3.306 c1.739,1.043,3.616,1.805,5.532,2.287l2.721,7.393c1.523,0.127,3.054,0.127,4.578,0l2.707-7.384c1.968-0.491,3.833-1.279,5.53-2.292 l7.151,3.302c1.166-0.986,2.25-2.07,3.237-3.236l-3.308-7.134c1.044-1.74,1.806-3.617,2.29-5.534l7.391-2.72 c0.127-1.525,0.127-3.056,0-4.579l-7.382-2.706c-0.493-1.969-1.282-3.834-2.294-5.531l3.302-7.15 c-0.986-1.167-2.07-2.25-3.236-3.237l-7.134,3.307c-1.74-1.043-3.617-1.805-5.533-2.29L29.671,45.33z"
- id="path2922"
- style="fill:#ffffff" />
+ d="m 21.045539,36.941396 58.384,58.04 c 4.448,4.423 11.662,4.423 16.11,0 4.447,-4.421 4.447,-11.592 0,-16.016 l -58.383,-58.04 c 0.712,-5.508 -1.041,-11.2699997 -5.296,-15.4999997 -5.107,-5.07800002 -12.434,-6.584 -18.872,-4.54900002 3.752,3.72700002 6.652,6.67900002 7.565,7.58500002 3.262,3.2439997 4.035,7.7329997 1.728,10.0259997 l -3.684,3.663 c -2.307,2.293 -6.823,1.525 -10.085,-1.718 -0.911,-0.907 -3.88,-3.789 -7.63099997,-7.521 -2.04700003,6.402 -0.532,13.685 4.57599997,18.763 4.255,4.231 10.049,5.974 15.588,5.267 z"
+ id="path15"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccc" />
<path
- d="M41.483,28.352c-1.25-3.021,0.185-6.483,3.205-7.735c3.02-1.25,6.484,0.185,7.733,3.205 c1.252,3.021-0.184,6.483-3.203,7.734C46.198,32.807,42.735,31.373,41.483,28.352z M38.626,0c-1.458,0.465-2.871,1.051-4.23,1.751 l0.325,7.858c-1.63,1.208-3.052,2.649-4.232,4.235l-7.871-0.315c-0.7,1.359-1.286,2.773-1.752,4.23l5.786,5.326 c-0.299,2.005-0.285,4.031,0.002,5.987l-5.788,5.341c0.465,1.457,1.051,2.871,1.752,4.23l7.857-0.325 c1.207,1.63,2.649,3.053,4.235,4.232l-0.315,7.87c1.359,0.701,2.773,1.286,4.23,1.752l5.326-5.786 c2.006,0.298,4.031,0.285,5.986-0.002l5.344,5.788c1.455-0.466,2.869-1.053,4.229-1.753l-0.323-7.855 c1.628-1.208,3.051-2.65,4.23-4.236l7.871,0.315c0.7-1.359,1.285-2.773,1.752-4.23l-5.786-5.326 c0.298-2.007,0.284-4.031-0.003-5.986l5.788-5.344c-0.466-1.457-1.051-2.871-1.751-4.229l-7.858,0.325 c-1.206-1.63-2.649-3.052-4.234-4.232l0.314-7.871C58.151,1.051,56.737,0.465,55.281,0l-5.325,5.785 c-2.008-0.298-4.032-0.284-5.987,0.002L38.626,0z"
- id="path2924"
- style="fill:#ffffff" />
+ d="m 20.895539,98.602396 29.443,-29.272 -3.843,-3.822 -27.491,27.33 c -0.651,0.648 -1.795,0.558 -2.556,-0.195 -0.76,-0.759 -0.849,-1.897 -0.198,-2.543 l 27.49,-27.33 -4.405,-4.381 -27.49,27.332 c -0.65,0.645 -1.794,0.557 -2.556,-0.198 -0.761,-0.756 -0.849,-1.896 -0.198,-2.539 l 27.49,-27.332 -3.844,-3.821 -29.443,29.272 c -2.85099997,2.832 -1.22,9.046 3.641,13.877 4.86,4.833 11.109,6.455004 13.96,3.622 z"
+ id="path17"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+<polygon
+ points="98.928,10.264 92.153,3.526 69.45,19.361 67.244,27.537 57.351,37.373 64.886,44.862 74.778,35.026 83.002,32.835 "
+ id="polygon19"
+ style="fill:#ffffff"
+ transform="translate(-4.6096679e-4,3.9627762e-4)" />
</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/seasonal.svg b/main/project/attributes/svgs/seasonal.svg
index 55f39f5..fe52864 100644
--- a/main/project/attributes/svgs/seasonal.svg
+++ b/main/project/attributes/svgs/seasonal.svg
@@ -51,7 +51,7 @@
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="2.7337906"
inkscape:cx="79.766037"
diff --git a/main/project/attributes/svgs/snow_proof.svg b/main/project/attributes/svgs/snow_proof.svg
new file mode 100644
index 0000000..353f37f
--- /dev/null
+++ b/main/project/attributes/svgs/snow_proof.svg
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="82.25"
+ height="76.422325"
+ viewBox="0 0 82.250001 76.422323"
+ enable-background="new 0 0 100 40.213"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="snow_proof.svg"><metadata
+ id="metadata11"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs9" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1127"
+ inkscape:window-height="715"
+ id="namedview7"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="5.868284"
+ inkscape:cx="12.62146"
+ inkscape:cy="38.390005"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"><inkscape:grid
+ type="xygrid"
+ id="grid3089"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ originx="6.1249997px"
+ originy="-9.9999958px" /></sodipodi:namedview>
+
+
+<g
+ id="g3879"
+ style="fill:#ffffff"
+ transform="matrix(1,0,0,0.8407045,6.125,42.610239)"><path
+ inkscape:connector-curvature="0"
+ id="path3093"
+ d="m 2.5,-4.7812508 0,44.9999998 5,0 0,-44.9999998 -5,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" /><path
+ inkscape:connector-curvature="0"
+ id="path3095"
+ d="m 35,-22.593751 -1.125,0.5625 -40,20.0000003 2.25,4.46875 L 35,-17.000001 73.875,2.4374993 l 2.25,-4.46875 -40,-20.0000003 -1.125,-0.5625 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" /><path
+ inkscape:connector-curvature="0"
+ id="path3097"
+ d="m 62.5,-4.7812508 0,44.9999998 5,0 0,-44.9999998 -5,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" /></g><path
+ inkscape:connector-curvature="0"
+ id="path5156"
+ d="m 67.909958,21.422317 0.863942,1.275926 h 1.608832 l 0.742269,-1.275926 -0.782026,-1.358714 h -1.61189 l -0.821127,1.358714 z m 0.662537,10.261139 V 28.79848 l -1.61189,0.906538 -0.821128,-0.470089 v -1.016415 l 2.390422,-1.358715 V 24.963714 L 66.79568,26.07821 v -2.008801 l -1.657764,0.955469 v 2.723547 l -0.906757,0.561835 -0.766298,-0.507006 v -1.825309 l -2.516025,1.419442 -1.074521,-0.452177 v -1.151194 l 2.640757,-1.443689 -1.651647,-0.830302 v -1.053332 l 0.937338,-0.513122 2.369014,1.394976 1.645531,-0.949353 -0.03976,-0.03036 -1.682229,-0.964862 1.633298,-1.013575 -1.639414,-0.949354 -2.368795,1.391919 -0.888626,-0.442565 v -1.050274 l 1.603153,-0.900641 -2.558622,-1.389296 V 15.89921 l 0.982993,-0.50657 2.521705,1.456141 v -1.856109 l 0.760181,-0.512904 0.931441,0.537369 -0.0061,2.778157 1.694243,0.967702 -0.0059,-1.962928 1.776815,0.955688 v -1.896084 l -2.390422,-1.361555 v -1.007459 l 0.821128,-0.476206 1.611891,0.906757 v -2.879078 l 0.922266,-0.60465 0.930785,0.60465 v 2.879078 l 1.670215,-0.925106 0.839913,0.555719 v 0.906757 l -2.473211,1.401093 v 1.896084 l 1.691622,-1.031924 v 2.063848 l 1.742957,-0.949789 v -2.970387 l 0.839694,-0.390795 0.882072,0.390795 v 1.899143 l 2.594884,-1.40153 0.907194,0.55266 v 1.074521 l -2.534157,1.441068 1.584585,0.888189 v 1.026026 l -0.821345,0.455017 -2.433018,-1.43801 -1.682447,1.068623 1.627181,1.014013 -1.676112,0.964643 1.731378,0.906539 2.433018,-1.358934 0.781588,0.552661 v 0.980153 l -1.526479,0.857826 2.430397,1.443907 v 1.133283 l -1.028867,0.470089 -2.3878,-1.358934 v 1.798222 L 74.760776,28.315943 73.9213,27.836679 v -2.729661 l -1.767644,-1.00724 v 1.896084 l -1.691622,-1.032143 v 1.896085 l 2.390639,1.358715 v 1.07474 l -0.82484,0.411983 -1.602716,-0.906538 v 2.884976 l -0.930567,0.598096 -0.922048,-0.598315 z"
+ style="fill:#ffffff" /><path
+ inkscape:connector-curvature="0"
+ id="path5156-0"
+ d="m 45.505059,10.984835 0.863942,1.275926 h 1.608832 l 0.742269,-1.275926 -0.782026,-1.3587139 h -1.61189 l -0.821127,1.3587139 z m 0.662537,10.261139 v -2.884976 l -1.61189,0.906538 -0.821128,-0.470089 V 17.781032 L 46.125,16.422317 v -1.896085 l -1.734219,1.114496 v -2.008801 l -1.657764,0.955469 v 2.723547 l -0.906757,0.561835 -0.766298,-0.507006 v -1.825309 l -2.516025,1.419442 -1.074521,-0.452177 v -1.151194 l 2.640757,-1.443689 -1.651647,-0.830302 v -1.053332 l 0.937338,-0.513122 2.369014,1.394976 1.645531,-0.949353 -0.03976,-0.03036 L 41.68842,10.96649 43.321718,9.9529151 41.682304,9.0035611 39.313509,10.39548 38.424883,9.9529151 v -1.050274 l 1.603153,-0.900641 -2.558622,-1.389296 v -1.150976 l 0.982993,-0.50657 2.521705,1.456141 v -1.856109 l 0.760181,-0.512904 0.931441,0.537369 -0.0061,2.778157 1.694243,0.967702 -0.0059,-1.962928 1.776815,0.955688 V 5.4221901 L 43.73437,4.0606351 V 3.0531757 l 0.821128,-0.4762061 1.611891,0.9067575 V 0.60464862 L 47.089655,-1.2829595e-6 48.02044,0.60464862 V 3.4837271 l 1.670215,-0.9251065 0.839913,0.5557191 v 0.9067574 l -2.473211,1.401093 v 1.896084 l 1.691622,-1.031924 v 2.063848 l 1.742957,-0.949789 v -2.970387 l 0.839694,-0.390795 0.882072,0.390795 v 1.899143 l 2.594884,-1.40153 0.907194,0.55266 v 1.074521 l -2.534157,1.441068 1.584585,0.888189 v 1.026026 l -0.821345,0.4550169 -2.433018,-1.4380099 -1.682447,1.068623 1.627181,1.0140129 -1.676112,0.964643 1.731378,0.906539 2.433018,-1.358934 0.781588,0.552661 v 0.980153 l -1.526479,0.857826 2.430397,1.443907 v 1.133283 l -1.028867,0.470089 -2.3878,-1.358934 v 1.798222 l -0.857825,0.479264 -0.839476,-0.479264 v -2.729661 l -1.767644,-1.00724 v 1.896084 l -1.691622,-1.032143 v 1.896085 l 2.390639,1.358715 v 1.07474 l -0.82484,0.411983 -1.602716,-0.906538 v 2.884976 l -0.930567,0.598096 -0.922048,-0.598315 z"
+ style="fill:#ffffff" /><path
+ inkscape:connector-curvature="0"
+ id="path5156-7"
+ d="m 11.881303,18.744856 0.863942,1.275926 h 1.608831 l 0.742269,-1.275926 -0.782026,-1.358714 H 12.70243 l -0.821127,1.358714 z m 0.662537,10.26114 V 26.12102 l -1.61189,0.906538 -0.821128,-0.470089 v -1.016415 l 2.390422,-1.358715 v -1.896086 l -1.734219,1.114497 v -2.008802 l -1.6577641,0.955469 v 2.723548 L 8.2025039,25.6328 7.4362049,25.125794 v -1.825309 l -2.516025,1.419442 -1.074521,-0.452177 v -1.151194 l 2.640757,-1.44369 -1.651647,-0.830302 v -1.053332 l 0.937338,-0.513122 2.369015,1.394976 1.645531,-0.949353 -0.03976,-0.03036 -1.682229,-0.964862 1.633298,-1.013575 -1.639414,-0.949354 -2.368796,1.391919 -0.888626,-0.442565 v -1.050274 l 1.603153,-0.900641 -2.558622,-1.389296 v -1.150976 l 0.982993,-0.50657 2.521705,1.456141 v -1.856109 l 0.760182,-0.512904 0.931441,0.537369 -0.0061,2.778157 1.6942431,0.967702 -0.0059,-1.962928 1.776815,0.955688 v -1.896084 l -2.390422,-1.361555 v -1.007459 l 0.821128,-0.476206 1.611891,0.906757 V 8.3646698 l 0.922266,-0.60465 0.930784,0.60465 v 2.8790782 l 1.670215,-0.925106 0.839913,0.555719 v 0.906757 L 14.4336,13.182211 v 1.896084 l 1.691622,-1.031924 v 2.063848 l 1.742957,-0.949789 v -2.970387 l 0.839694,-0.390795 0.882072,0.390795 v 1.899143 l 2.594884,-1.40153 0.907194,0.55266 v 1.074521 l -2.534157,1.441068 1.584585,0.888189 v 1.026026 l -0.821345,0.455017 -2.433018,-1.43801 -1.682447,1.068623 1.627181,1.014013 -1.676112,0.964643 1.731378,0.906539 2.433018,-1.358934 0.781588,0.552661 v 0.980153 l -1.526479,0.857826 2.430397,1.443908 v 1.133283 l -1.028867,0.470089 -2.3878,-1.358934 v 1.798222 L 18.73212,25.638483 17.892644,25.159219 V 22.429557 L 16.125,21.422317 v 1.896085 l -1.691622,-1.032144 v 1.896086 l 2.390639,1.358715 v 1.07474 l -0.82484,0.411983 -1.602716,-0.906538 v 2.884976 l -0.930566,0.598096 -0.922048,-0.598315 z"
+ style="fill:#ffffff" /><g
+ transform="matrix(0.14142807,0,0,0.12452805,13.986295,36.595044)"
+ id="g3139"><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135"
+ d="M 31.88911,103.12086 247.77445,26.586263 358.2442,118.28339 141.63684,205.64835 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4"
+ d="M 30.848294,111.52289 136.26388,212.60632 135.54185,247.98553 32.292345,146.90209 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8"
+ d="m 145.6502,211.52328 213.71926,-85.92092 -7.22025,28.15897 -207.22104,93.14116 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8-1"
+ d="m 37.70753,161.34257 93.14116,93.14117 0,54.87387 -90.253061,-102.52749 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /><path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="rect3135-4-8-1-8"
+ d="M 139.51298,257.01083 340.2358,167.47979 328.68341,216.57746 138.06894,309.71863 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" /></g></svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/specific_times.svg b/main/project/attributes/svgs/specific_times.svg
new file mode 100644
index 0000000..54b73ab
--- /dev/null
+++ b/main/project/attributes/svgs/specific_times.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ x="0px"
+ y="0px"
+ width="124.8533"
+ height="98"
+ viewBox="-0.999 -1 124.8533 98"
+ overflow="visible"
+ enable-background="new -0.999 -1 100 100"
+ xml:space="preserve"
+ id="svg2"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="specific_times.svg"
+ style="overflow:visible"><metadata
+ id="metadata12"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1317"
+ inkscape:window-height="744"
+ id="namedview10"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="4.1213235"
+ inkscape:cx="110.71719"
+ inkscape:cy="46.662333"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg2" />
+<defs
+ id="defs4">
+</defs>
+<path
+ d="M 48,97 C 20.981,97 -0.999,75.019 -0.999,48 -0.999,20.982 20.981,-1 48,-1 75.021,-1 97.003,20.982 97.003,48 97.003,75.019 75.021,97 48,97 l 0,0 z M 48,9.187 C 26.598,9.187 9.187,26.599 9.187,48 9.187,69.401 26.599,86.813 48,86.813 69.405,86.813 86.817,69.401 86.817,48 86.817,26.599 69.404,9.187 48,9.187 l 0,0 z"
+ id="path6"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+
+<path
+ inkscape:connector-curvature="0"
+ d="M 71.677352,44.399107 42.464601,60.197387 27.532559,32.586407 c -1.609273,-2.975723 -0.500855,-6.692445 2.473989,-8.301243 2.974843,-1.608797 6.693728,-0.502685 8.303002,2.473038 l 9.105263,16.836628 18.43576,-9.970075 c 2.974844,-1.608798 6.692445,-0.500855 8.301243,2.473989 1.608322,2.973963 0.500379,6.691565 -2.474464,8.300363 z"
+ id="path8"
+ style="fill:#ffffff" /><text
+ xml:space="preserve"
+ style="font-size:133.52758789px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ x="90.472404"
+ y="97"
+ id="text2983"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2985"
+ x="90.472404"
+ y="97">!</tspan></text>
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/stealth.svg b/main/project/attributes/svgs/stealth.svg
index ab218b6..dcc8579 100644
--- a/main/project/attributes/svgs/stealth.svg
+++ b/main/project/attributes/svgs/stealth.svg
@@ -37,7 +37,7 @@
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="214.11428"
diff --git a/main/project/attributes/svgs/swamp.svg b/main/project/attributes/svgs/swamp.svg
new file mode 100644
index 0000000..5d40229
--- /dev/null
+++ b/main/project/attributes/svgs/swamp.svg
@@ -0,0 +1,522 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="93.529999"
+ height="61.864407"
+ viewBox="0 0 93.529997 61.864407"
+ enable-background="new 0 0 77.039 100"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="swamp.svg"><metadata
+ id="metadata242"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs240" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1317"
+ inkscape:window-height="744"
+ id="namedview238"
+ showgrid="false"
+ inkscape:zoom="2.36"
+ inkscape:cx="-6.8566056"
+ inkscape:cy="46.610171"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="Layer_1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+<pattern
+ x="-11.48"
+ y="100"
+ width="69"
+ height="69"
+ patternUnits="userSpaceOnUse"
+ id="Polka_Dot_Pattern"
+ viewBox="2.125 -70.896 69 69"
+ overflow="visible">
+ <g
+ id="g4">
+ <polygon
+ fill="none"
+ points="71.125,-1.896 2.125,-1.896 2.125,-70.896 71.125,-70.896 "
+ id="polygon6" />
+ <polygon
+ fill="#000000"
+ points="71.125,-1.896 2.125,-1.896 2.125,-70.896 71.125,-70.896 "
+ id="polygon8" />
+ <g
+ id="g10">
+ <path
+ fill="#000000"
+ d="M61.772-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path12" />
+ <path
+ fill="#000000"
+ d="M54.105-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path14" />
+ <path
+ fill="#000000"
+ d="M46.439-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path16" />
+ <path
+ fill="#000000"
+ d="M38.772-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path18" />
+ <path
+ fill="#000000"
+ d="M31.105-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path20" />
+ <path
+ fill="#000000"
+ d="M23.439-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path22" />
+ <path
+ fill="#000000"
+ d="M15.772-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path24" />
+ <path
+ fill="#000000"
+ d="M8.105-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path26" />
+ <path
+ fill="#000000"
+ d="M0.439-71.653c0.018,0.072,0.008,0.127-0.026,0.19C0.361-71.362,0.3-71.4,0.248-71.335 c-0.051,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224c0.002,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path28" />
+ </g>
+ <g
+ id="g30">
+ <path
+ fill="#000000"
+ d="M69.439-71.653c0.018,0.072,0.008,0.127-0.026,0.19c-0.052,0.101-0.113,0.063-0.165,0.128 c-0.051,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224c0.002,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path32" />
+ </g>
+ <path
+ fill="#000000"
+ d="M0.495-71.653c0.018,0.072,0.008,0.127-0.026,0.19c-0.052,0.101-0.113,0.063-0.165,0.128 c-0.051,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224C0.5-71.68,0.503-71.744,0.51-71.626 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path34" />
+ <g
+ id="g36">
+ <g
+ id="g38">
+ <path
+ fill="#000000"
+ d="M69.439-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path40" />
+ <path
+ fill="#000000"
+ d="M61.778-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path42" />
+ <path
+ fill="#000000"
+ d="M54.118-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path44" />
+ <path
+ fill="#000000"
+ d="M46.458-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path46" />
+ <path
+ fill="#000000"
+ d="M38.797-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path48" />
+ <path
+ fill="#000000"
+ d="M31.137-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path50" />
+ <path
+ fill="#000000"
+ d="M23.477-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path52" />
+ <path
+ fill="#000000"
+ d="M15.816-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path54" />
+ <path
+ fill="#000000"
+ d="M8.156-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path56" />
+ <path
+ fill="#000000"
+ d="M0.495-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143C2-61.45,2.217-61.397,2.391-61.46c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path58" />
+ </g>
+ <g
+ id="g60">
+ <path
+ fill="#000000"
+ d="M69.439-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path62" />
+ <path
+ fill="#000000"
+ d="M61.778-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path64" />
+ <path
+ fill="#000000"
+ d="M54.118-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path66" />
+ <path
+ fill="#000000"
+ d="M46.458-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path68" />
+ <path
+ fill="#000000"
+ d="M38.797-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path70" />
+ <path
+ fill="#000000"
+ d="M31.137-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path72" />
+ <path
+ fill="#000000"
+ d="M23.477-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path74" />
+ <path
+ fill="#000000"
+ d="M15.816-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path76" />
+ <path
+ fill="#000000"
+ d="M8.156-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path78" />
+ <path
+ fill="#000000"
+ d="M0.495-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224C0.5-56.374,0.503-56.438,0.51-56.32 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path80" />
+ </g>
+ <g
+ id="g82">
+ <path
+ fill="#000000"
+ d="M69.439-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path84" />
+ <path
+ fill="#000000"
+ d="M61.778-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path86" />
+ <path
+ fill="#000000"
+ d="M54.118-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path88" />
+ <path
+ fill="#000000"
+ d="M46.458-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path90" />
+ <path
+ fill="#000000"
+ d="M38.797-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path92" />
+ <path
+ fill="#000000"
+ d="M31.137-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path94" />
+ <path
+ fill="#000000"
+ d="M23.477-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path96" />
+ <path
+ fill="#000000"
+ d="M15.816-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path98" />
+ <path
+ fill="#000000"
+ d="M8.156-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path100" />
+ <path
+ fill="#000000"
+ d="M0.495-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path102" />
+ </g>
+ <g
+ id="g104">
+ <path
+ fill="#000000"
+ d="M69.439-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path106" />
+ <path
+ fill="#000000"
+ d="M61.778-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path108" />
+ <path
+ fill="#000000"
+ d="M54.118-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path110" />
+ <path
+ fill="#000000"
+ d="M46.458-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path112" />
+ <path
+ fill="#000000"
+ d="M38.797-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path114" />
+ <path
+ fill="#000000"
+ d="M31.137-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path116" />
+ <path
+ fill="#000000"
+ d="M23.477-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path118" />
+ <path
+ fill="#000000"
+ d="M15.816-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path120" />
+ <path
+ fill="#000000"
+ d="M8.156-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 C8.15-41.004,8.149-41.02,8.14-41.04"
+ id="path122" />
+ <path
+ fill="#000000"
+ d="M0.495-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path124" />
+ </g>
+ <g
+ id="g126">
+ <path
+ fill="#000000"
+ d="M69.439-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path128" />
+ <path
+ fill="#000000"
+ d="M61.778-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path130" />
+ <path
+ fill="#000000"
+ d="M54.118-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path132" />
+ <path
+ fill="#000000"
+ d="M46.458-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path134" />
+ <path
+ fill="#000000"
+ d="M38.797-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path136" />
+ <path
+ fill="#000000"
+ d="M31.137-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path138" />
+ <path
+ fill="#000000"
+ d="M23.477-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path140" />
+ <path
+ fill="#000000"
+ d="M15.816-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path142" />
+ <path
+ fill="#000000"
+ d="M8.156-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path144" />
+ <path
+ fill="#000000"
+ d="M0.495-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224C0.5-33.416,0.503-33.48,0.51-33.362 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path146" />
+ </g>
+ <g
+ id="g148">
+ <path
+ fill="#000000"
+ d="M69.439-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path150" />
+ <path
+ fill="#000000"
+ d="M61.778-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path152" />
+ <path
+ fill="#000000"
+ d="M54.118-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path154" />
+ <path
+ fill="#000000"
+ d="M46.458-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path156" />
+ <path
+ fill="#000000"
+ d="M38.797-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path158" />
+ <path
+ fill="#000000"
+ d="M31.137-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path160" />
+ <path
+ fill="#000000"
+ d="M23.477-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path162" />
+ <path
+ fill="#000000"
+ d="M15.816-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path164" />
+ <path
+ fill="#000000"
+ d="M8.156-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path166" />
+ <path
+ fill="#000000"
+ d="M0.495-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path168" />
+ </g>
+ <g
+ id="g170">
+ <path
+ fill="#000000"
+ d="M69.439-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path172" />
+ <path
+ fill="#000000"
+ d="M61.778-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path174" />
+ <path
+ fill="#000000"
+ d="M54.118-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path176" />
+ <path
+ fill="#000000"
+ d="M46.458-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path178" />
+ <path
+ fill="#000000"
+ d="M38.797-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path180" />
+ <path
+ fill="#000000"
+ d="M31.137-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path182" />
+ <path
+ fill="#000000"
+ d="M23.477-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path184" />
+ <path
+ fill="#000000"
+ d="M15.816-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path186" />
+ <path
+ fill="#000000"
+ d="M8.156-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path188" />
+ <path
+ fill="#000000"
+ d="M0.495-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224C0.5-18.11,0.503-18.175,0.51-18.057 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path190" />
+ </g>
+ <g
+ id="g192">
+ <path
+ fill="#000000"
+ d="M69.439-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362C69-9.692,69.159-9.523,69.154-9.4c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path194" />
+ <path
+ fill="#000000"
+ d="M61.778-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path196" />
+ <path
+ fill="#000000"
+ d="M54.118-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path198" />
+ <path
+ fill="#000000"
+ d="M46.458-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path200" />
+ <path
+ fill="#000000"
+ d="M38.797-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path202" />
+ <path
+ fill="#000000"
+ d="M31.137-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path204" />
+ <path
+ fill="#000000"
+ d="M23.477-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path206" />
+ <path
+ fill="#000000"
+ d="M15.816-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053C17.933-7.969,17.839-8.227,18-8.34 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path208" />
+ <path
+ fill="#000000"
+ d="M8.156-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 C7.915-10.05,7.866-9.836,7.886-9.75C7.717-9.692,7.876-9.523,7.871-9.4C7.868-9.351,7.83-9.295,7.826-9.239 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C9.114-7.652,9.321-7.799,9.48-7.837c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path210" />
+ <path
+ fill="#000000"
+ d="M0.495-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 C0.254-10.05,0.205-9.836,0.225-9.75C0.056-9.692,0.215-9.523,0.21-9.4c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37C0.33-8.671,0.501-8.456,0.668-8.325c0.19,0.148,0.365,0.572,0.608,0.631 C1.454-7.652,1.66-7.799,1.819-7.837C2-7.88,2.217-7.827,2.391-7.89c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46C3.477-8.933,3.471-8.995,3.5-9.071 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path212" />
+ </g>
+ </g>
+ <g
+ id="g214">
+ <path
+ fill="#000000"
+ d="M69.439-2.778c0.018,0.072,0.008,0.127-0.026,0.19C69.361-2.487,69.3-2.525,69.248-2.46 c-0.051,0.063-0.099,0.276-0.079,0.362C69-2.04,69.159-1.871,69.154-1.748c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C70.397,0,70.604-0.146,70.763-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224c0.002,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path216" />
+ <path
+ fill="#000000"
+ d="M61.778-2.778c0.018,0.072,0.007,0.127-0.026,0.19C61.7-2.487,61.64-2.525,61.587-2.46 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C62.737,0,62.943-0.146,63.103-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C61.915-3.117,61.78-3.02,61.781-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path218" />
+ <path
+ fill="#000000"
+ d="M54.118-2.778c0.018,0.072,0.007,0.127-0.026,0.19C54.04-2.487,53.98-2.525,53.927-2.46 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C55.077,0,55.283-0.146,55.442-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C54.255-3.117,54.12-3.02,54.121-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path220" />
+ <path
+ fill="#000000"
+ d="M46.458-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C47.416,0,47.623-0.146,47.782-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C46.594-3.117,46.459-3.02,46.46-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path222" />
+ <path
+ fill="#000000"
+ d="M38.797-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C39.756,0,39.962-0.146,40.122-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C38.934-3.117,38.799-3.02,38.8-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path224" />
+ <path
+ fill="#000000"
+ d="M31.137-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C32.095,0,32.302-0.146,32.461-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C31.273-3.117,31.139-3.02,31.14-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path226" />
+ <path
+ fill="#000000"
+ d="M23.477-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C24.435,0,24.642-0.146,24.801-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
+ id="path228" />
+ <path
+ fill="#000000"
+ d="M15.816-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C16.774,0,16.981-0.146,17.14-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 C15.81-2.74,15.809-2.756,15.8-2.776"
+ id="path230" />
+ <path
+ fill="#000000"
+ d="M8.156-2.778c0.018,0.072,0.007,0.127-0.026,0.19C8.077-2.487,8.018-2.525,7.965-2.46 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35C7.868-1.698,7.83-1.643,7.826-1.587 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C9.114,0,9.321-0.146,9.48-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789C8.954-3.54,8.847-3.448,8.692-3.367 c-0.17,0.088-0.139,0.166-0.318,0.224C8.292-3.117,8.158-3.02,8.159-2.92C8.16-2.805,8.164-2.869,8.17-2.751 C8.15-2.74,8.149-2.756,8.14-2.776"
+ id="path232" />
+ <path
+ fill="#000000"
+ d="M0.495-2.778c0.018,0.072,0.008,0.127-0.026,0.19C0.417-2.487,0.356-2.525,0.304-2.46 C0.253-2.397,0.205-2.184,0.225-2.098C0.056-2.04,0.215-1.871,0.21-1.748c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37C0.33-1.019,0.501-0.804,0.668-0.673c0.19,0.148,0.365,0.572,0.608,0.631 C1.454,0,1.66-0.146,1.819-0.185C2-0.228,2.217-0.175,2.391-0.237c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46C3.477-1.28,3.471-1.343,3.5-1.419 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789C1.293-3.54,1.187-3.448,1.031-3.367 c-0.17,0.088-0.139,0.166-0.318,0.224C0.632-3.117,0.498-3.02,0.498-2.92C0.5-2.805,0.503-2.869,0.51-2.751 C0.489-2.74,0.488-2.756,0.479-2.776"
+ id="path234" />
+ </g>
+ </g>
+</pattern>
+<path
+ d="m 63.830892,22.391152 c 0.668339,-1.835237 -0.180111,-2.504025 -1.369466,-2.937008 -1.189356,-0.432983 -2.504026,0.18011 -2.937009,1.369466 l -4.261559,8.966881 H 54.346137 L 57.717926,5.763974 C 57.937561,4.517576 57.105731,3.329118 55.859332,3.109483 54.612934,2.889398 53.424027,3.721678 53.204392,4.968076 L 49.762536,22.686695 H 48.845815 V 2.291576 C 48.845815,1.026762 47.819951,0 46.554688,0 45.288976,0 44.263112,1.026762 44.263112,2.291576 v 20.395119 h -0.91672 L 39.901841,4.928551 C 39.681756,3.682152 38.493747,2.849873 37.2469,3.069508 36.000501,3.289144 35.168671,4.477601 35.388307,5.724449 l 3.375381,18.337102 h -0.91672 L 33.810883,13.167805 c -0.432534,-1.188907 -1.747653,-1.802449 -2.937458,-1.369466 -1.188907,0.432534 -1.802449,1.748101 -1.134559,3.583339 l 3.982186,12.117686 v 5.499873 c 0.0027,5.966542 5.491788,11.91422 12.833636,11.916017 7.341399,-0.0018 10.609882,-4.213051 13.122441,-11.111136 l 4.153763,-11.412966 z"
+ id="path236"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+<path
+ style="fill:#ffffff"
+ d="m 11.701224,36.662606 c -2.1199995,0 -4.1434999,0.50575 -5.9374998,1.34375 -1.747,0.793 -3.6999999,1.25 -5.75000003,1.25 l 0,8.625 c 2.05000013,0 4.00200003,-0.42675 5.75000003,-1.21875 1.7939999,-0.839 3.8175003,-1.34375 5.9374998,-1.34375 2.119,0 4.1445,0.50475 5.9375,1.34375 1.747,0.792 3.7,1.21875 5.75,1.21875 2.038,0 4.002,-0.42675 5.75,-1.21875 1.817,-0.839 3.8405,-1.34375 5.9375,-1.34375 0.169625,0 0.331638,0.02506 0.5,0.03125 -2.401047,-2.187945 -4.047658,-5.023172 -4.65625,-8 -0.616321,0.191515 -1.202836,0.389485 -1.78125,0.65625 -1.747,0.793 -3.712,1.25 -5.75,1.25 -2.05,0 -4.003,-0.457 -5.75,-1.25 -1.793,-0.838 -3.8185,-1.34375 -5.9375,-1.34375 z m 70.125,0 c -2.097,0 -4.11225,0.50575 -5.90625,1.34375 -1.747,0.793 -3.73125,1.25 -5.78125,1.25 -2.026,0 -4.003,-0.457 -5.75,-1.25 -0.694197,-0.325174 -1.430287,-0.569355 -2.1875,-0.78125 -1.320173,3.342171 -2.851332,6.094443 -4.84375,8.15625 0.361703,-0.0292 0.726838,-0.0625 1.09375,-0.0625 2.121,0 4.1495,0.50475 5.9375,1.34375 1.747,0.792 3.724,1.21875 5.75,1.21875 2.049,0 4.03425,-0.42675 5.78125,-1.21875 1.794,-0.839 3.80925,-1.34375 5.90625,-1.34375 2.119,0 4.1435,0.50475 5.9375,1.34375 1.761998,0.787974 3.734024,1.214282 5.75,1.21875 l 0,-8.625 c -2.027,0 -3.979,-0.457 -5.75,-1.25 -1.793,-0.838 -3.8185,-1.34375 -5.9375,-1.34375 z"
+ id="path3115"
+ inkscape:connector-curvature="0" /><path
+ inkscape:connector-curvature="0"
+ d="m 93.529999,61.864408 c -2.027,0 -3.983,-0.442 -5.754,-1.234 -1.794,-0.839 -3.82,-1.328 -5.939,-1.328 -2.097,0 -4.123,0.489 -5.917,1.328 -1.747,0.792 -3.728,1.234 -5.777,1.234 -2.026,0 -4.006,-0.442 -5.753,-1.234 -1.788,-0.839 -3.814,-1.328 -5.935,-1.328 -2.097,0 -4.123,0.489 -5.917,1.328 -1.77,0.792 -3.727,1.234 -5.776,1.234 -2.026,0 -4.006,-0.442 -5.753,-1.234 -1.793,-0.839 -3.82,-1.328 -5.94,-1.328 -2.097,0 -4.123,0.489 -5.94,1.328 -1.748,0.792 -3.704,1.234 -5.742,1.234 -2.05,0 -4.007,-0.442 -5.754,-1.234 -1.793,-0.839 -3.82,-1.328 -5.939,-1.328 -2.1199995,0 -4.1459995,0.489 -5.9399995,1.328 -1.748,0.792 -3.704,1.234 -5.75400023242187,1.234 v -8.619 C 2.0499995,53.245408 4.0059995,52.780408 5.7529995,51.987408 c 1.794,-0.838 3.82,-1.327 5.9399995,-1.327 2.119,0 4.146,0.489 5.939,1.327 1.747,0.793 3.704,1.258 5.754,1.258 2.038,0 3.995,-0.465 5.742,-1.258 1.817,-0.838 3.843,-1.327 5.94,-1.327 2.12,0 4.146,0.489 5.94,1.327 1.747,0.793 3.727,1.258 5.753,1.258 2.05,0 4.007,-0.465 5.776,-1.258 1.794,-0.838 3.82,-1.327 5.917,-1.327 2.12,0 4.146,0.489 5.935,1.327 1.747,0.793 3.727,1.258 5.753,1.258 2.05,0 4.03,-0.465 5.777,-1.258 1.794,-0.838 3.82,-1.327 5.917,-1.327 2.119,0 4.146,0.489 5.939,1.327 1.771,0.793 3.727,1.258 5.754,1.258 v 8.619 z"
+ id="path3115-2"
+ style="fill:#ffffff" /></svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/syringe.svg b/main/project/attributes/svgs/syringe.svg
new file mode 100644
index 0000000..287c946
--- /dev/null
+++ b/main/project/attributes/svgs/syringe.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="74.536003"
+ height="73.662003"
+ viewBox="0 0 74.536003 73.662003"
+ enable-background="new 0 0 100 100"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="firstaid.svg"><metadata
+ id="metadata11"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs9" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview7"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="2.36"
+ inkscape:cx="33.194"
+ inkscape:cy="32.912"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" />
+<polygon
+ points="79.953,30.445 85.734,24.664 89.414,28.345 91.342,26.417 74.174,9.25 72.247,11.178 76.101,15.03 70.32,20.812 "
+ id="polygon3"
+ style="fill:#ffffff"
+ transform="translate(-16.806,-9.25)" />
+<polygon
+ points="58.763,28.522 54.909,32.376 60.689,38.156 58.763,40.083 52.981,34.303 49.127,38.157 54.907,43.938 52.981,45.865 47.2,40.084 31.784,55.5 33.101,63.513 16.806,82.912 37.262,67.673 45.273,68.989 79.958,34.305 66.469,20.815 60.69,26.594 66.471,32.376 64.543,34.303 "
+ id="polygon5"
+ style="fill:#ffffff"
+ transform="translate(-16.806,-9.25)" />
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/teamwork.svg b/main/project/attributes/svgs/teamwork.svg
index e7c636b..df5ff27 100644
--- a/main/project/attributes/svgs/teamwork.svg
+++ b/main/project/attributes/svgs/teamwork.svg
@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
-
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
@@ -9,27 +7,21 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
+ version="1.1"
id="Layer_1"
x="0px"
y="0px"
- width="100px"
- height="85.416px"
- viewBox="0 0 100 85.416"
- enable-background="new 0 0 100 85.416"
+ width="78.333"
+ height="94.000999"
+ viewBox="0 0 78.333 94.000999"
+ enable-background="new 0 0 100 100"
xml:space="preserve"
- inkscape:version="0.47 r22583"
+ inkscape:version="0.48.3.1 r9886"
sodipodi:docname="teamwork.svg"><metadata
- id="metadata25"><rdf:RDF><cc:Work
+ id="metadata21"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs23"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 42.708 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="100 : 42.708 : 1"
- inkscape:persp3d-origin="50 : 28.472 : 1"
- id="perspective27" /></defs><sodipodi:namedview
+ id="defs19" /><sodipodi:namedview
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1"
@@ -39,56 +31,55 @@
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="640"
- inkscape:window-height="504"
- id="namedview21"
+ inkscape:window-height="480"
+ id="namedview17"
showgrid="false"
- inkscape:zoom="2.7629484"
- inkscape:cx="50"
- inkscape:cy="42.708"
- inkscape:window-x="0"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="2.36"
+ inkscape:cx="39.433"
+ inkscape:cy="47.001"
+ inkscape:window-x="49"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" />
<g
id="g3"
- style="fill:#ffffff">
+ style="fill:#ffffff"
+ transform="translate(-10.567,-3)">
<path
- d="M60.082,20.987H39.918c-3.231,0-5.851,2.618-5.851,5.85v27.44c0,3.231,2.62,5.852,5.851,5.852h0.033v19.436 c0,3.231,2.546,5.852,5.689,5.852h8.722c3.14,0,5.688-2.62,5.688-5.852V60.129h0.032c3.231,0,5.851-2.62,5.851-5.852v-27.44 C65.932,23.605,63.313,20.987,60.082,20.987z"
+ d="m 29.367,34.304 c 3.094,0 5.919,-1.122 8.106,-2.973 -3.069,-3.341 -4.972,-7.769 -4.972,-12.665 0,-2.99 0.716,-5.806 1.958,-8.317 -1.558,-0.69 -3.277,-1.083 -5.092,-1.083 -6.931,0 -12.547,5.604 -12.547,12.52 0,6.914 5.617,12.518 12.547,12.518 z"
id="path5"
- style="fill:#ffffff" />
- <circle
- cx="50"
- cy="9.55"
- r="9.55"
- id="circle7"
- style="fill:#ffffff" />
-</g>
-<g
- id="g9"
- style="fill:#ffffff">
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
<path
- d="M94.986,23.268H77.708c-2.771,0-5.014,2.245-5.014,5.014v23.514c0,2.771,2.243,5.016,5.014,5.016h0.028v16.654 c0,2.77,2.182,5.014,4.873,5.014h7.475c2.691,0,4.874-2.244,4.874-5.014V56.811h0.027c2.771,0,5.015-2.245,5.015-5.016V28.281 C100,25.513,97.756,23.268,94.986,23.268z"
- id="path11"
- style="fill:#ffffff" />
- <circle
- cx="86.347"
- cy="13.469"
- r="8.184"
- id="circle13"
- style="fill:#ffffff" />
-</g>
-<g
- id="g15"
- style="fill:#ffffff">
+ d="m 70.101,18.667 c 0,4.896 -1.903,9.324 -4.974,12.665 2.188,1.851 5.014,2.973 8.107,2.973 6.929,0 12.545,-5.604 12.545,-12.518 0,-6.915 -5.616,-12.52 -12.545,-12.52 -1.814,0 -3.534,0.393 -5.092,1.084 1.243,2.509 1.959,5.325 1.959,8.316 z"
+ id="path7"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
+ <path
+ d="M 29.367,65.667 26.24,37.513 C 19.086,37.886 10.567,40.6 10.567,40.6 L 13.7,62.533 19.967,68.8 v 18.8 c 0,0 4.117,3.134 7.833,3.134 3.67,0 7.833,-3.134 7.833,-3.134 V 69.844 l -6.266,-4.177 z"
+ id="path9"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
<path
- d="M22.292,23.268H5.014C2.245,23.268,0,25.513,0,28.281v23.514c0,2.771,2.245,5.016,5.014,5.016h0.028v16.654 c0,2.77,2.184,5.014,4.874,5.014h7.474c2.692,0,4.874-2.244,4.874-5.014V56.811h0.028c2.769,0,5.014-2.245,5.014-5.016V28.281 C27.305,25.513,25.06,23.268,22.292,23.268z"
- id="path17"
- style="fill:#ffffff" />
- <circle
- cx="13.653"
- cy="13.469"
- r="8.183"
- id="circle19"
- style="fill:#ffffff" />
+ d="m 76.324,37.851 -3.09,27.816 -9.4,6.267 V 87.6 c 0,0 4.117,3.134 7.833,3.134 3.671,0 7.834,-3.134 7.834,-3.134 V 68.8 L 86.438,63.139 88.9,41.063 c 0,0 -6.291,-2.288 -12.576,-3.212 z"
+ id="path11"
+ style="fill:#ffffff"
+ inkscape:connector-curvature="0" />
</g>
+<path
+ clip-rule="evenodd"
+ d="m 18.8,37.6 c 0,0 12.504,-3.133 21.934,-3.133 9.371,0 21.934,3.133 21.934,3.133 l -3.134,25.067 -9.399,6.267 v 21.933 c 0,0 -4.729,3.134 -9.4,3.134 -4.729,0 -9.4,-3.134 -9.4,-3.134 V 68.934 L 21.935,62.667 18.8,37.6 z"
+ id="path13"
+ style="fill:#ffffff;fill-rule:evenodd"
+ inkscape:connector-curvature="0" />
+<path
+ clip-rule="evenodd"
+ d="m 40.734,0 c 8.651,0 15.667,7.013 15.667,15.667 0,8.652 -7.016,15.667 -15.667,15.667 -8.653,0 -15.667,-7.015 -15.667,-15.667 C 25.067,7.013 32.08,0 40.734,0 z"
+ id="path15"
+ style="fill:#ffffff;fill-rule:evenodd"
+ inkscape:connector-curvature="0" />
</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/thorn.svg b/main/project/attributes/svgs/thorn.svg
index b3d690c..1e56be4 100644
--- a/main/project/attributes/svgs/thorn.svg
+++ b/main/project/attributes/svgs/thorn.svg
@@ -128,7 +128,7 @@
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="7.5005314"
inkscape:cx="1.8267393"
diff --git a/main/project/attributes/svgs/ticks.svg b/main/project/attributes/svgs/ticks.svg
index 4d9df5c..4f394fa 100644
--- a/main/project/attributes/svgs/ticks.svg
+++ b/main/project/attributes/svgs/ticks.svg
@@ -93,7 +93,7 @@
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="8.2995898"
inkscape:cx="23.893119"
diff --git a/main/project/attributes/svgs/tide.svg b/main/project/attributes/svgs/tide.svg
new file mode 100644
index 0000000..56588cf
--- /dev/null
+++ b/main/project/attributes/svgs/tide.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="100px"
+ height="91.67px"
+ viewBox="0 0 100 91.67"
+ enable-background="new 0 0 100 91.67"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="tide.svg"><metadata
+ id="metadata11"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs9" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview7"
+ showgrid="false"
+ inkscape:zoom="2.5744519"
+ inkscape:cx="50"
+ inkscape:cy="45.834999"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" />
+<path
+ d="M100,49.995v18.491c-2.231-0.952-4.878-2.505-5.552-4.595c-0.869-2.637-2.007-7.91,2.778-8.335 c0,0-6.035-7.041-11.113,2.783c-3.838,7.485-6.567,10.757-8.33,11.108h-2.778c-1.758-0.425-4.531-2.402-5.557-5.557 c-0.869-2.637-2.007-7.91,2.778-8.335c0,0-6.04-7.041-11.113,2.783c-3.857,7.485-6.558,10.757-8.335,11.108h-2.773 c-1.763-0.425-4.531-2.402-5.557-5.557c-0.869-2.637-2.007-7.91,2.778-8.335c0,0-6.045-7.041-11.113,2.783 c-3.857,7.485-6.558,10.757-8.33,11.108H25c-1.748-0.425-4.526-2.402-5.552-5.557c-0.859-2.637-2.017-7.91,2.778-8.335 c0,0-6.05-7.041-11.113,2.783C8.325,63.74,3.276,66.914,0,68.413V39.839C6.284,18.242,22.441,0,38.892,0 c8.423,0,14.526,1.86,16.67,5.566c2.046,3.462,2.124,9.854-2.783,11.104c-2.056,0.527-7.08-0.908-8.33-2.778 c-0.869-1.304-2.603-2.173,0-5.557c-14.458-3.691-25.166,31.45,8.33,36.113c4.443-17.012,17.544-30.557,30.557-30.557 c6.484,0,9.463,2.695,11.113,5.552c1.558,2.666,0.986,7.383-2.778,8.335c-1.582,0.425-4.78-1.221-5.557-2.769 c-0.776-1.562-0.605-4.429,2.778-5.566C77.222,16.455,69.17,48.413,100,49.995z"
+ id="path3"
+ style="fill:#ffffff" />
+<path
+ d="M19.448,69.448c0,0-6.05-7.046-11.113,2.778C6.26,76.25,2.93,79.023,0,80.811V91.67h100v-8.335 c-1.763-0.425-7.31-2.397-8.33-5.552c-0.869-2.646-2.007-7.91,2.778-8.335c0,0-6.03-7.046-11.113,2.778 c-3.838,7.49-6.567,10.757-8.33,11.108h-2.778c-1.758-0.425-4.531-2.397-5.557-5.552c-0.869-2.646-2.007-7.91,2.778-8.335 c0,0-6.04-7.046-11.113,2.778c-3.857,7.49-6.558,10.757-8.33,11.108h-2.778c-1.763-0.425-4.531-2.397-5.557-5.552 c-0.864-2.646-2.007-7.91,2.778-8.335c0,0-6.045-7.046-11.108,2.778c-3.862,7.49-6.558,10.757-8.34,11.108h-2.773 c-1.753-0.425-4.531-2.397-5.557-5.552C15.811,75.137,14.653,69.873,19.448,69.448z"
+ id="path5"
+ style="fill:#ffffff" />
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/treeclimbing.svg b/main/project/attributes/svgs/treeclimbing.svg
index e0c4227..2c71f46 100644
--- a/main/project/attributes/svgs/treeclimbing.svg
+++ b/main/project/attributes/svgs/treeclimbing.svg
@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
-
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
@@ -9,27 +7,21 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
+ version="1.1"
id="Layer_1"
x="0px"
y="0px"
- width="61.784px"
- height="100px"
- viewBox="0 0 61.784 100"
- enable-background="new 0 0 61.784 100"
+ width="74.820999"
+ height="100"
+ viewBox="0 0 74.820999 100"
+ enable-background="new 0 0 100 100"
xml:space="preserve"
- inkscape:version="0.47 r22583"
+ inkscape:version="0.48.3.1 r9886"
sodipodi:docname="treeclimbing.svg"><metadata
- id="metadata2894"><rdf:RDF><cc:Work
+ id="metadata9"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs2892"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 50 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="61.784 : 50 : 1"
- inkscape:persp3d-origin="30.892 : 33.333333 : 1"
- id="perspective2896" /></defs><sodipodi:namedview
+ id="defs7" /><sodipodi:namedview
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1"
@@ -39,18 +31,23 @@
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="640"
- inkscape:window-height="504"
- id="namedview2890"
+ inkscape:window-height="480"
+ id="namedview5"
showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
inkscape:zoom="2.36"
- inkscape:cx="30.892"
+ inkscape:cx="37.626"
inkscape:cy="50"
- inkscape:window-x="0"
+ inkscape:window-x="49"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" />
-<path
- d="M30.892,100h4.558V76.894l0.003,0.005h25.463c0.491-0.006,0.868-0.526,0.868-1.038c0-0.188-0.048-0.363-0.139-0.516 l-13.293-22.36c-0.146-0.242-0.345-0.923,0.424-1.051l3.312-0.336c0.489-0.007,0.863-0.525,0.863-1.037 c0-0.188-0.053-0.363-0.143-0.516L42.12,31.705c-0.214-0.335-0.116-0.824,0.339-0.893l1.933-0.329 c0.488-0.083,0.773-0.661,0.688-1.169c-0.021-0.118-0.061-0.231-0.116-0.329l-7.709-13.36c-0.15-0.284,0.027-0.622,0.284-0.7 l1.008-0.306c0.475-0.142,0.686-0.756,0.536-1.248c-0.023-0.078-0.057-0.154-0.096-0.22L31.641,0.428 C31.482,0.173,31.215,0,30.892,0c-0.322,0-0.59,0.173-0.748,0.428l-7.345,12.724c-0.039,0.066-0.072,0.142-0.097,0.22 c-0.149,0.492,0.062,1.105,0.537,1.248l1.009,0.306c0.256,0.078,0.435,0.416,0.284,0.7l-7.71,13.36 c-0.055,0.098-0.094,0.211-0.114,0.329c-0.087,0.508,0.199,1.086,0.686,1.169l1.933,0.329c0.455,0.069,0.553,0.558,0.338,0.893 L8.976,50.045c-0.089,0.152-0.142,0.327-0.142,0.516c0,0.511,0.374,1.03,0.863,1.037l3.312,0.336 c0.767,0.128,0.568,0.809,0.425,1.051L0.139,75.345C0.049,75.497,0,75.672,0,75.86c0,0.512,0.378,1.032,0.868,1.038h25.464 l0.003-0.005V100H30.892z"
- id="path2888"
- style="fill:#ffffff" />
+<polygon
+ points="61.741,29 70.647,29 50.101,0 28.92,29 37.828,29 18.647,58 27.554,58 12.374,87 45,87 45,100 55,100 55,87 87.195,87 72.015,58 80.921,58 "
+ id="polygon3"
+ style="fill:#ffffff"
+ transform="translate(-12.374,0)" />
</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/icon_not_found.svg b/main/project/attributes/svgs/unknown.svg
index 94c9052..94c9052 100644
--- a/main/project/attributes/svgs/icon_not_found.svg
+++ b/main/project/attributes/svgs/unknown.svg
diff --git a/main/project/attributes/svgs/uv.svg b/main/project/attributes/svgs/uv.svg
index c2595c6..4b43afb 100644
--- a/main/project/attributes/svgs/uv.svg
+++ b/main/project/attributes/svgs/uv.svg
@@ -79,7 +79,7 @@
pagecolor="#009674"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="1.0"
+ inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="1.02781"
inkscape:cx="95.564462"
diff --git a/main/project/attributes/svgs/webcam.svg b/main/project/attributes/svgs/webcam.svg
new file mode 100644
index 0000000..67dc03b
--- /dev/null
+++ b/main/project/attributes/svgs/webcam.svg
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="84.423676"
+ height="40.213001"
+ viewBox="0 0 84.423676 40.213"
+ enable-background="new 0 0 100 40.213"
+ xml:space="preserve"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="webcam.svg"><metadata
+ id="metadata11"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs9" /><sodipodi:namedview
+ pagecolor="#009674"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview7"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="3.21"
+ inkscape:cx="34.423676"
+ inkscape:cy="20.106499"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" />
+<polygon
+ points="0,40.213 0,0 75.344,0 75.344,20.106 75.344,40.213 "
+ id="polygon3"
+ style="fill:#ffffff"
+ transform="scale(0.79326391,1)" />
+<polygon
+ points="100,20.106 100,3.508 75.344,20.106 100,36.705 "
+ id="polygon5"
+ style="fill:#ffffff"
+ transform="translate(-15.576324,-6.2561035e-7)" />
+</svg> \ No newline at end of file
diff --git a/main/project/attributes/svgs/wirelessbeacon.svg b/main/project/attributes/svgs/wirelessbeacon.svg
index d23015f..2e18438 100644
--- a/main/project/attributes/svgs/wirelessbeacon.svg
+++ b/main/project/attributes/svgs/wirelessbeacon.svg
@@ -18,7 +18,7 @@
viewBox="0 0 100 83.419"
enable-background="new 0 0 100 83.419"
xml:space="preserve"
- inkscape:version="0.47 r22583"
+ inkscape:version="0.48.3.1 r9886"
sodipodi:docname="wirelessbeacon.svg"><metadata
id="metadata3283"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
@@ -38,54 +38,54 @@
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
- inkscape:window-width="640"
- inkscape:window-height="504"
+ inkscape:window-width="1317"
+ inkscape:window-height="744"
id="namedview3279"
showgrid="false"
- inkscape:zoom="2.8290917"
- inkscape:cx="49.999999"
- inkscape:cy="41.709498"
- inkscape:window-x="0"
+ inkscape:zoom="7.1566431"
+ inkscape:cx="50"
+ inkscape:cy="41.709499"
+ inkscape:window-x="49"
inkscape:window-y="24"
- inkscape:window-maximized="0"
+ inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" />
<path
fill-opacity="0.875"
d="M68.2,55.555l4.742,4.792c6.451-6.143,10.461-14.861,10.461-24.532c0-9.521-3.901-18.122-10.184-24.25 l-5.159,5.356c5.06,4.861,8.228,11.724,8.228,19.317C76.288,43.797,73.217,50.701,68.2,55.555z"
id="path3263"
- style="fill:#ffffff" />
+ style="fill:#ffffff;fill-opacity:1" />
<path
fill-opacity="0.875"
d="M56.625,43.85l5.856,5.923c3.591-3.371,5.857-8.176,5.857-13.535c0-5.425-2.322-10.297-5.996-13.676 l-5.858,6.063c2.083,1.862,3.486,4.559,3.486,7.613C59.971,39.257,58.664,41.993,56.625,43.85z"
id="path3265"
- style="fill:#ffffff" />
+ style="fill:#ffffff;fill-opacity:1" />
<path
fill-opacity="0.875"
d="M20.082,7.333l-5.996-6.063C5.388,10.352,0,22.63,0,36.237c0,13.575,5.286,25.895,13.945,34.967 l6.137-6.203C12.987,57.483,8.646,47.283,8.646,36.097C8.646,24.914,12.987,14.819,20.082,7.333z"
id="path3267"
- style="fill:#ffffff" />
+ style="fill:#ffffff;fill-opacity:1" />
<path
fill-opacity="0.875"
d="M78.66,66.129l6.137,6.202C94.124,63.162,100,50.43,100,36.237C100,21.979,94.071,9.186,84.658,0 L78.66,6.064c7.797,7.588,12.691,18.201,12.691,30.032C91.352,47.896,86.418,58.51,78.66,66.129z"
id="path3269"
- style="fill:#ffffff" />
+ style="fill:#ffffff;fill-opacity:1" />
<path
fill-opacity="0.875"
d="M25.661,12.972c-5.5,6.013-8.926,14.014-8.926,22.843c0,9.017,3.499,17.218,9.205,23.266l4.742-4.796 c-4.303-4.749-6.974-11.085-6.974-18.047c0-6.996,2.628-13.424,6.974-18.19L25.661,12.972z"
id="path3271"
- style="fill:#ffffff" />
+ style="fill:#ffffff;fill-opacity:1" />
<path
fill-opacity="0.875"
d="M42.258,42.583c-1.398-1.747-2.23-3.93-2.23-6.346c0-2.48,0.897-4.718,2.371-6.486l-5.858-5.779 c-2.938,3.268-4.882,7.514-4.882,12.265c0,4.718,1.84,9.005,4.743,12.268L42.258,42.583z"
id="path3273"
- style="fill:#ffffff" />
+ style="fill:#ffffff;fill-opacity:1" />
<path
d="M45.838,36.237c0,2.324,1.865,4.208,4.16,4.208c2.298,0,4.159-1.884,4.159-4.208c0-2.321-1.861-4.204-4.159-4.204 C47.703,32.033,45.838,33.917,45.838,36.237z"
id="path3275"
- style="fill:#ffffff" />
+ style="fill:#ffffff;fill-opacity:1" />
<path
fill-opacity="0.875"
d="M45.313,46.234L34.497,83.419h30.286L53.966,46.234C51.102,46.874,48.226,47.098,45.313,46.234z"
id="path3277"
- style="fill:#ffffff" />
+ style="fill:#ffffff;fill-opacity:1" />
</svg> \ No newline at end of file
diff --git a/main/res/drawable-mdpi/attribute__strikethru.png b/main/res/drawable-mdpi/attribute__strikethru.png
index 3f00745..68475a1 100644
--- a/main/res/drawable-mdpi/attribute__strikethru.png
+++ b/main/res/drawable-mdpi/attribute__strikethru.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_abandonedbuilding.png b/main/res/drawable-mdpi/attribute_abandonedbuilding.png
index 20be7ba..b8eac27 100644
--- a/main/res/drawable-mdpi/attribute_abandonedbuilding.png
+++ b/main/res/drawable-mdpi/attribute_abandonedbuilding.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_aircraft.png b/main/res/drawable-mdpi/attribute_aircraft.png
new file mode 100644
index 0000000..0c5f731
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_aircraft.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_all_seasons.png b/main/res/drawable-mdpi/attribute_all_seasons.png
new file mode 100644
index 0000000..f7acdea
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_all_seasons.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_arithmetic.png b/main/res/drawable-mdpi/attribute_arithmetic.png
new file mode 100644
index 0000000..df77b23
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_arithmetic.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_ask_owner.png b/main/res/drawable-mdpi/attribute_ask_owner.png
new file mode 100644
index 0000000..f3c7240
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_ask_owner.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_available.png b/main/res/drawable-mdpi/attribute_available.png
index c587fa7..bcfefa7 100644
--- a/main/res/drawable-mdpi/attribute_available.png
+++ b/main/res/drawable-mdpi/attribute_available.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_bicycles.png b/main/res/drawable-mdpi/attribute_bicycles.png
index 53ea040..5c643de 100644
--- a/main/res/drawable-mdpi/attribute_bicycles.png
+++ b/main/res/drawable-mdpi/attribute_bicycles.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_boat.png b/main/res/drawable-mdpi/attribute_boat.png
index f4db083..48b7d43 100644
--- a/main/res/drawable-mdpi/attribute_boat.png
+++ b/main/res/drawable-mdpi/attribute_boat.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_breeding.png b/main/res/drawable-mdpi/attribute_breeding.png
new file mode 100644
index 0000000..2012c2f
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_breeding.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_campfires.png b/main/res/drawable-mdpi/attribute_campfires.png
index 229bb40..d66a66b 100644
--- a/main/res/drawable-mdpi/attribute_campfires.png
+++ b/main/res/drawable-mdpi/attribute_campfires.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_camping.png b/main/res/drawable-mdpi/attribute_camping.png
index 15f2891..8a15178 100644
--- a/main/res/drawable-mdpi/attribute_camping.png
+++ b/main/res/drawable-mdpi/attribute_camping.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_cave.png b/main/res/drawable-mdpi/attribute_cave.png
new file mode 100644
index 0000000..b52095d
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_cave.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_cliff.png b/main/res/drawable-mdpi/attribute_cliff.png
index 31b6921..3d4fb23 100644
--- a/main/res/drawable-mdpi/attribute_cliff.png
+++ b/main/res/drawable-mdpi/attribute_cliff.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_climbing.png b/main/res/drawable-mdpi/attribute_climbing.png
index 585b841..60a56e5 100644
--- a/main/res/drawable-mdpi/attribute_climbing.png
+++ b/main/res/drawable-mdpi/attribute_climbing.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_compass.png b/main/res/drawable-mdpi/attribute_compass.png
new file mode 100644
index 0000000..efa2b25
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_compass.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_cow.png b/main/res/drawable-mdpi/attribute_cow.png
index 2a2a2ce..d64d152 100644
--- a/main/res/drawable-mdpi/attribute_cow.png
+++ b/main/res/drawable-mdpi/attribute_cow.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_danger.png b/main/res/drawable-mdpi/attribute_danger.png
index 25e0fe0..051227e 100644
--- a/main/res/drawable-mdpi/attribute_danger.png
+++ b/main/res/drawable-mdpi/attribute_danger.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_dangerousanimals.png b/main/res/drawable-mdpi/attribute_dangerousanimals.png
index 9ba4ea4..bec8d66 100644
--- a/main/res/drawable-mdpi/attribute_dangerousanimals.png
+++ b/main/res/drawable-mdpi/attribute_dangerousanimals.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_day.png b/main/res/drawable-mdpi/attribute_day.png
new file mode 100644
index 0000000..a92e56c
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_day.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_dogs.png b/main/res/drawable-mdpi/attribute_dogs.png
index f7f0628..b277300 100644
--- a/main/res/drawable-mdpi/attribute_dogs.png
+++ b/main/res/drawable-mdpi/attribute_dogs.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_fee.png b/main/res/drawable-mdpi/attribute_fee.png
index aa0c950..d9dd5e2 100644
--- a/main/res/drawable-mdpi/attribute_fee.png
+++ b/main/res/drawable-mdpi/attribute_fee.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_field_puzzle.png b/main/res/drawable-mdpi/attribute_field_puzzle.png
index e524761..5fc07ca 100644
--- a/main/res/drawable-mdpi/attribute_field_puzzle.png
+++ b/main/res/drawable-mdpi/attribute_field_puzzle.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_firstaid.png b/main/res/drawable-mdpi/attribute_firstaid.png
index 2c2433f..2439bc3 100644
--- a/main/res/drawable-mdpi/attribute_firstaid.png
+++ b/main/res/drawable-mdpi/attribute_firstaid.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_flashlight.png b/main/res/drawable-mdpi/attribute_flashlight.png
index c4b68d4..5b11acd 100644
--- a/main/res/drawable-mdpi/attribute_flashlight.png
+++ b/main/res/drawable-mdpi/attribute_flashlight.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_food.png b/main/res/drawable-mdpi/attribute_food.png
index d14902c..c27db8c 100644
--- a/main/res/drawable-mdpi/attribute_food.png
+++ b/main/res/drawable-mdpi/attribute_food.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_frontyard.png b/main/res/drawable-mdpi/attribute_frontyard.png
index 40affd2..5bc6712 100644
--- a/main/res/drawable-mdpi/attribute_frontyard.png
+++ b/main/res/drawable-mdpi/attribute_frontyard.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_fuel.png b/main/res/drawable-mdpi/attribute_fuel.png
index 363ea34..da21cb5 100644
--- a/main/res/drawable-mdpi/attribute_fuel.png
+++ b/main/res/drawable-mdpi/attribute_fuel.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_hike_long.png b/main/res/drawable-mdpi/attribute_hike_long.png
index 70ca001..2c41b3d 100644
--- a/main/res/drawable-mdpi/attribute_hike_long.png
+++ b/main/res/drawable-mdpi/attribute_hike_long.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_hike_med.png b/main/res/drawable-mdpi/attribute_hike_med.png
index d368721..67ad4cd 100644
--- a/main/res/drawable-mdpi/attribute_hike_med.png
+++ b/main/res/drawable-mdpi/attribute_hike_med.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_hike_short.png b/main/res/drawable-mdpi/attribute_hike_short.png
index ce421ae..d6186fa 100644
--- a/main/res/drawable-mdpi/attribute_hike_short.png
+++ b/main/res/drawable-mdpi/attribute_hike_short.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_hiking.png b/main/res/drawable-mdpi/attribute_hiking.png
index 1579be0..019f875 100644
--- a/main/res/drawable-mdpi/attribute_hiking.png
+++ b/main/res/drawable-mdpi/attribute_hiking.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_hills.png b/main/res/drawable-mdpi/attribute_hills.png
new file mode 100644
index 0000000..207824f
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_hills.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_horses.png b/main/res/drawable-mdpi/attribute_horses.png
index 171a70f..f1839d1 100644
--- a/main/res/drawable-mdpi/attribute_horses.png
+++ b/main/res/drawable-mdpi/attribute_horses.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_hunting.png b/main/res/drawable-mdpi/attribute_hunting.png
index 816ad49..11be3b0 100644
--- a/main/res/drawable-mdpi/attribute_hunting.png
+++ b/main/res/drawable-mdpi/attribute_hunting.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_icon_not_found.png b/main/res/drawable-mdpi/attribute_icon_not_found.png
deleted file mode 100644
index 33e0ce2..0000000
--- a/main/res/drawable-mdpi/attribute_icon_not_found.png
+++ /dev/null
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_in_water.png b/main/res/drawable-mdpi/attribute_in_water.png
new file mode 100644
index 0000000..087f3b0
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_in_water.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_inside.png b/main/res/drawable-mdpi/attribute_inside.png
new file mode 100644
index 0000000..316c1ec
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_inside.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_investigation.png b/main/res/drawable-mdpi/attribute_investigation.png
new file mode 100644
index 0000000..99b21b2
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_investigation.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_jeeps.png b/main/res/drawable-mdpi/attribute_jeeps.png
index e2cec60..380cd73 100644
--- a/main/res/drawable-mdpi/attribute_jeeps.png
+++ b/main/res/drawable-mdpi/attribute_jeeps.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_kids.png b/main/res/drawable-mdpi/attribute_kids.png
index f322f5b..b268a6c 100644
--- a/main/res/drawable-mdpi/attribute_kids.png
+++ b/main/res/drawable-mdpi/attribute_kids.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_landf.png b/main/res/drawable-mdpi/attribute_landf.png
index 1b27327..082bdeb 100644
--- a/main/res/drawable-mdpi/attribute_landf.png
+++ b/main/res/drawable-mdpi/attribute_landf.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_letterbox.png b/main/res/drawable-mdpi/attribute_letterbox.png
new file mode 100644
index 0000000..a186001
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_letterbox.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_link_only.png b/main/res/drawable-mdpi/attribute_link_only.png
new file mode 100644
index 0000000..2cef71b
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_link_only.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_maintenance.png b/main/res/drawable-mdpi/attribute_maintenance.png
new file mode 100644
index 0000000..f191c96
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_maintenance.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_mine.png b/main/res/drawable-mdpi/attribute_mine.png
index 221e210..6e9a1c4 100644
--- a/main/res/drawable-mdpi/attribute_mine.png
+++ b/main/res/drawable-mdpi/attribute_mine.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_motorcycles.png b/main/res/drawable-mdpi/attribute_motorcycles.png
index adf0abb..37cf1a1 100644
--- a/main/res/drawable-mdpi/attribute_motorcycles.png
+++ b/main/res/drawable-mdpi/attribute_motorcycles.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_moving_target.png b/main/res/drawable-mdpi/attribute_moving_target.png
new file mode 100644
index 0000000..c897538
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_moving_target.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_night.png b/main/res/drawable-mdpi/attribute_night.png
index 416d965..e3f95d4 100644
--- a/main/res/drawable-mdpi/attribute_night.png
+++ b/main/res/drawable-mdpi/attribute_night.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_nightcache.png b/main/res/drawable-mdpi/attribute_nightcache.png
index 6163808..e9b114a 100644
--- a/main/res/drawable-mdpi/attribute_nightcache.png
+++ b/main/res/drawable-mdpi/attribute_nightcache.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_no_gps.png b/main/res/drawable-mdpi/attribute_no_gps.png
new file mode 100644
index 0000000..e0bcb44
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_no_gps.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_oc_only.png b/main/res/drawable-mdpi/attribute_oc_only.png
new file mode 100644
index 0000000..bad932f
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_oc_only.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_onehour.png b/main/res/drawable-mdpi/attribute_onehour.png
index eb28014..8d999a7 100644
--- a/main/res/drawable-mdpi/attribute_onehour.png
+++ b/main/res/drawable-mdpi/attribute_onehour.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_other_cache.png b/main/res/drawable-mdpi/attribute_other_cache.png
new file mode 100644
index 0000000..f9b63b5
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_other_cache.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_overnight.png b/main/res/drawable-mdpi/attribute_overnight.png
new file mode 100644
index 0000000..41b538e
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_overnight.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_parking.png b/main/res/drawable-mdpi/attribute_parking.png
index 26e43cc..79c60f7 100644
--- a/main/res/drawable-mdpi/attribute_parking.png
+++ b/main/res/drawable-mdpi/attribute_parking.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_parkngrab.png b/main/res/drawable-mdpi/attribute_parkngrab.png
index 8cc4fcc..1622473 100644
--- a/main/res/drawable-mdpi/attribute_parkngrab.png
+++ b/main/res/drawable-mdpi/attribute_parkngrab.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_partnership.png b/main/res/drawable-mdpi/attribute_partnership.png
index 228c009..8b94092 100644
--- a/main/res/drawable-mdpi/attribute_partnership.png
+++ b/main/res/drawable-mdpi/attribute_partnership.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_phone.png b/main/res/drawable-mdpi/attribute_phone.png
index 1225f2b..17111e0 100644
--- a/main/res/drawable-mdpi/attribute_phone.png
+++ b/main/res/drawable-mdpi/attribute_phone.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_picnic.png b/main/res/drawable-mdpi/attribute_picnic.png
index 88229ea..82e23af 100644
--- a/main/res/drawable-mdpi/attribute_picnic.png
+++ b/main/res/drawable-mdpi/attribute_picnic.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_poi.png b/main/res/drawable-mdpi/attribute_poi.png
new file mode 100644
index 0000000..7f8f28a
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_poi.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_poisonoak.png b/main/res/drawable-mdpi/attribute_poisonoak.png
index 7112410..13b73c3 100644
--- a/main/res/drawable-mdpi/attribute_poisonoak.png
+++ b/main/res/drawable-mdpi/attribute_poisonoak.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_public.png b/main/res/drawable-mdpi/attribute_public.png
index 5fcf129..880c8bd 100644
--- a/main/res/drawable-mdpi/attribute_public.png
+++ b/main/res/drawable-mdpi/attribute_public.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_puzzle.png b/main/res/drawable-mdpi/attribute_puzzle.png
new file mode 100644
index 0000000..f7efe46
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_puzzle.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_quads.png b/main/res/drawable-mdpi/attribute_quads.png
index 844657c..63cd95d 100644
--- a/main/res/drawable-mdpi/attribute_quads.png
+++ b/main/res/drawable-mdpi/attribute_quads.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_railway.png b/main/res/drawable-mdpi/attribute_railway.png
new file mode 100644
index 0000000..47e841b
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_railway.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_rappelling.png b/main/res/drawable-mdpi/attribute_rappelling.png
index c97d891..2b0b232 100644
--- a/main/res/drawable-mdpi/attribute_rappelling.png
+++ b/main/res/drawable-mdpi/attribute_rappelling.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_restrooms.png b/main/res/drawable-mdpi/attribute_restrooms.png
index 0d1a841..38db042 100644
--- a/main/res/drawable-mdpi/attribute_restrooms.png
+++ b/main/res/drawable-mdpi/attribute_restrooms.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_rv.png b/main/res/drawable-mdpi/attribute_rv.png
index c344108..8626b0f 100644
--- a/main/res/drawable-mdpi/attribute_rv.png
+++ b/main/res/drawable-mdpi/attribute_rv.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_s_tool.png b/main/res/drawable-mdpi/attribute_s_tool.png
index 5ce3a92..cb23090 100644
--- a/main/res/drawable-mdpi/attribute_s_tool.png
+++ b/main/res/drawable-mdpi/attribute_s_tool.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_scenic.png b/main/res/drawable-mdpi/attribute_scenic.png
index f800b40..5e73402 100644
--- a/main/res/drawable-mdpi/attribute_scenic.png
+++ b/main/res/drawable-mdpi/attribute_scenic.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_scuba.png b/main/res/drawable-mdpi/attribute_scuba.png
index 2fa5faa..3ab8bf7 100644
--- a/main/res/drawable-mdpi/attribute_scuba.png
+++ b/main/res/drawable-mdpi/attribute_scuba.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_seasonal.png b/main/res/drawable-mdpi/attribute_seasonal.png
index 8046ebf..77c277c 100644
--- a/main/res/drawable-mdpi/attribute_seasonal.png
+++ b/main/res/drawable-mdpi/attribute_seasonal.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_skiis.png b/main/res/drawable-mdpi/attribute_skiis.png
index 5589442..963c3a3 100644
--- a/main/res/drawable-mdpi/attribute_skiis.png
+++ b/main/res/drawable-mdpi/attribute_skiis.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_snow_proof.png b/main/res/drawable-mdpi/attribute_snow_proof.png
new file mode 100644
index 0000000..4a98e99
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_snow_proof.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_snowmobiles.png b/main/res/drawable-mdpi/attribute_snowmobiles.png
index 412046e..55a1a43 100644
--- a/main/res/drawable-mdpi/attribute_snowmobiles.png
+++ b/main/res/drawable-mdpi/attribute_snowmobiles.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_snowshoes.png b/main/res/drawable-mdpi/attribute_snowshoes.png
index 1da4519..e6985a0 100644
--- a/main/res/drawable-mdpi/attribute_snowshoes.png
+++ b/main/res/drawable-mdpi/attribute_snowshoes.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_specific_times.png b/main/res/drawable-mdpi/attribute_specific_times.png
new file mode 100644
index 0000000..074a1d2
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_specific_times.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_stealth.png b/main/res/drawable-mdpi/attribute_stealth.png
index d6d04e1..4d92cdb 100644
--- a/main/res/drawable-mdpi/attribute_stealth.png
+++ b/main/res/drawable-mdpi/attribute_stealth.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_stroller.png b/main/res/drawable-mdpi/attribute_stroller.png
index f8309b2..3dd8bc2 100644
--- a/main/res/drawable-mdpi/attribute_stroller.png
+++ b/main/res/drawable-mdpi/attribute_stroller.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_swamp.png b/main/res/drawable-mdpi/attribute_swamp.png
new file mode 100644
index 0000000..bc06506
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_swamp.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_swimming.png b/main/res/drawable-mdpi/attribute_swimming.png
index 0768b9e..f03a257 100644
--- a/main/res/drawable-mdpi/attribute_swimming.png
+++ b/main/res/drawable-mdpi/attribute_swimming.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_syringe.png b/main/res/drawable-mdpi/attribute_syringe.png
new file mode 100644
index 0000000..e483bbc
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_syringe.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_teamwork.png b/main/res/drawable-mdpi/attribute_teamwork.png
index ee0df0b..94a50e7 100644
--- a/main/res/drawable-mdpi/attribute_teamwork.png
+++ b/main/res/drawable-mdpi/attribute_teamwork.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_thorn.png b/main/res/drawable-mdpi/attribute_thorn.png
index 1800f87..3339d17 100644
--- a/main/res/drawable-mdpi/attribute_thorn.png
+++ b/main/res/drawable-mdpi/attribute_thorn.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_ticks.png b/main/res/drawable-mdpi/attribute_ticks.png
index 65108a3..b24d1b9 100644
--- a/main/res/drawable-mdpi/attribute_ticks.png
+++ b/main/res/drawable-mdpi/attribute_ticks.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_tide.png b/main/res/drawable-mdpi/attribute_tide.png
new file mode 100644
index 0000000..0da23fe
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_tide.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_touristok.png b/main/res/drawable-mdpi/attribute_touristok.png
index f264340..58cd2d5 100644
--- a/main/res/drawable-mdpi/attribute_touristok.png
+++ b/main/res/drawable-mdpi/attribute_touristok.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_treeclimbing.png b/main/res/drawable-mdpi/attribute_treeclimbing.png
index c2623a3..25993cc 100644
--- a/main/res/drawable-mdpi/attribute_treeclimbing.png
+++ b/main/res/drawable-mdpi/attribute_treeclimbing.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_unknown.png b/main/res/drawable-mdpi/attribute_unknown.png
new file mode 100644
index 0000000..909ef34
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_unknown.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_uv.png b/main/res/drawable-mdpi/attribute_uv.png
index 859478e..473ff8d 100644
--- a/main/res/drawable-mdpi/attribute_uv.png
+++ b/main/res/drawable-mdpi/attribute_uv.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_wading.png b/main/res/drawable-mdpi/attribute_wading.png
index 653bfdc..a397cb4 100644
--- a/main/res/drawable-mdpi/attribute_wading.png
+++ b/main/res/drawable-mdpi/attribute_wading.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_water.png b/main/res/drawable-mdpi/attribute_water.png
index 59ba217..21ce41c 100644
--- a/main/res/drawable-mdpi/attribute_water.png
+++ b/main/res/drawable-mdpi/attribute_water.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_webcam.png b/main/res/drawable-mdpi/attribute_webcam.png
new file mode 100644
index 0000000..5828ae5
--- /dev/null
+++ b/main/res/drawable-mdpi/attribute_webcam.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_wheelchair.png b/main/res/drawable-mdpi/attribute_wheelchair.png
index c6fccd1..76237b0 100644
--- a/main/res/drawable-mdpi/attribute_wheelchair.png
+++ b/main/res/drawable-mdpi/attribute_wheelchair.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_winter.png b/main/res/drawable-mdpi/attribute_winter.png
index 29d7421..c5862dc 100644
--- a/main/res/drawable-mdpi/attribute_winter.png
+++ b/main/res/drawable-mdpi/attribute_winter.png
Binary files differ
diff --git a/main/res/drawable-mdpi/attribute_wirelessbeacon.png b/main/res/drawable-mdpi/attribute_wirelessbeacon.png
index a3b05c1..73aeaca 100644
--- a/main/res/drawable-mdpi/attribute_wirelessbeacon.png
+++ b/main/res/drawable-mdpi/attribute_wirelessbeacon.png
Binary files differ
diff --git a/main/res/layout-land/coords.xml b/main/res/layout-land/coords.xml
index aa09600..1388187 100644
--- a/main/res/layout-land/coords.xml
+++ b/main/res/layout-land/coords.xml
@@ -3,7 +3,6 @@
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:background="?background_color"
android:orientation="vertical" >
<LinearLayout style="@style/action_bar" >
diff --git a/main/res/layout-land/navigate.xml b/main/res/layout-land/navigate.xml
index 0beffb4..d13f345 100644
--- a/main/res/layout-land/navigate.xml
+++ b/main/res/layout-land/navigate.xml
@@ -2,8 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color" >
+ android:orientation="vertical">
<LinearLayout style="@style/action_bar">
<ImageView style="@style/action_bar_action"
android:onClick="goHome" />
@@ -91,7 +90,6 @@
android:layout_marginRight="1dip"
android:layout_marginLeft="1dip"
android:layout_gravity="center_vertical"
- android:layout_centerInParent="true"
android:keepScreenOn="true"
android:gravity="center"
android:padding="4dip"
diff --git a/main/res/layout/about.xml b/main/res/layout/about.xml
deleted file mode 100644
index 39ad8ff..0000000
--- a/main/res/layout/about.xml
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color" >
- <LinearLayout style="@style/action_bar">
- <ImageView style="@style/action_bar_action"
- android:onClick="goHome" />
- <View style="@style/action_bar_separator" />
- <TextView style="@style/action_bar_title" />
- </LinearLayout>
- <ScrollView
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:padding="4dip"
- android:orientation="vertical" >
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dip"
- android:orientation="vertical" >
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_marginTop="10dip"
- android:orientation="vertical" >
- <ImageView
- android:layout_width="200dip"
- android:layout_height="200dip"
- android:layout_margin="10dip"
- android:layout_gravity="center"
- android:gravity="center"
- android:scaleType="fitXY"
- android:src="@drawable/cgeo_logo" />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="10dip"
- android:layout_marginRight="10dip"
- android:layout_marginTop="5dip"
- android:layout_gravity="left"
- android:textSize="14dip"
- android:textColor="?text_color"
- android:text="@string/quote" />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="10dip"
- android:layout_marginRight="10dip"
- android:layout_marginBottom="5dip"
- android:layout_gravity="right"
- android:textSize="14dip"
- android:textColor="?text_color"
- android:text="@string/powered_by" />
- </LinearLayout>
- <RelativeLayout style="@style/separator_horizontal_layout" >
- <View style="@style/separator_horizontal" />
- <TextView style="@style/separator_horizontal_headline"
- android:text="@string/about_version" />
- </RelativeLayout>
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="10dip"
- android:layout_marginRight="10dip"
- android:layout_marginBottom="5dip"
- android:layout_gravity="left"
- android:textSize="14dip"
- android:textStyle="bold"
- android:textColor="?text_color"
- android:id="@+id/about_version_string" />
- <RelativeLayout style="@style/separator_horizontal_layout" >
- <View style="@style/separator_horizontal" />
- <TextView style="@style/separator_horizontal_headline"
- android:text="@string/about_donate" />
- </RelativeLayout>
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dip"
- android:orientation="horizontal"
- android:gravity="center_horizontal" >
- <Button style="@style/button_full"
- android:layout_width="280dip"
- android:singleLine="false"
- android:lines="2"
- android:onClick="donate"
- android:text="@string/about_donation_more" />
- </LinearLayout>
- <RelativeLayout style="@style/separator_horizontal_layout" >
- <View style="@style/separator_horizontal" />
- <TextView style="@style/separator_horizontal_headline"
- android:text="@string/about_detail" />
- </RelativeLayout>
- <TextView android:id="@+id/support"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="10dip"
- android:layout_marginRight="10dip"
- android:layout_marginBottom="5dip"
- android:layout_gravity="left"
- android:textSize="14dip"
- android:textColor="?text_color"
- android:textColorLink="?text_color_link"
- android:linksClickable="false"
- android:focusable="true"
- android:clickable="true"
- android:onClick="support"
- android:text="@string/support" />
- <TextView android:id="@+id/website"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="10dip"
- android:layout_marginRight="10dip"
- android:layout_marginBottom="5dip"
- android:layout_gravity="left"
- android:textSize="14dip"
- android:textColor="?text_color"
- android:textColorLink="?text_color_link"
- android:linksClickable="false"
- android:focusable="true"
- android:clickable="true"
- android:onClick="website"
- android:text="@string/website" />
- <TextView android:id="@+id/facebook"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="10dip"
- android:layout_marginRight="10dip"
- android:layout_marginBottom="5dip"
- android:layout_gravity="left"
- android:textSize="14dip"
- android:textColor="?text_color"
- android:textColorLink="?text_color_link"
- android:linksClickable="false"
- android:focusable="true"
- android:clickable="true"
- android:onClick="facebook"
- android:text="@string/facebook" />
- <TextView android:id="@+id/twitter"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="10dip"
- android:layout_marginRight="10dip"
- android:layout_marginBottom="5dip"
- android:layout_gravity="left"
- android:textSize="14dip"
- android:textColor="?text_color"
- android:textColorLink="?text_color_link"
- android:linksClickable="false"
- android:focusable="true"
- android:clickable="true"
- android:onClick="twitter"
- android:text="@string/twitter" />
- <TextView android:id="@+id/nutshellmanual"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="10dip"
- android:layout_marginRight="10dip"
- android:layout_marginBottom="5dip"
- android:layout_gravity="left"
- android:textSize="14dip"
- android:textColor="?text_color"
- android:textColorLink="?text_color_link"
- android:linksClickable="false"
- android:focusable="true"
- android:clickable="true"
- android:onClick="nutshellmanual"
- android:text="@string/nutshellmanual" />
- <RelativeLayout style="@style/separator_horizontal_layout" >
- <View style="@style/separator_horizontal" />
- <TextView style="@style/separator_horizontal_headline"
- android:text="@string/about_changelog" />
- </RelativeLayout>
- <TextView android:id="@+id/changelog"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_margin="7dip"
- android:layout_gravity="left"
- android:paddingLeft="3dip"
- android:textSize="12dip"
- android:linksClickable="true"
- android:textColorLink="?text_color_link"
- android:textColor="?text_color"
- android:text="@string/changelog" />
- <RelativeLayout style="@style/separator_horizontal_layout" >
- <View style="@style/separator_horizontal" />
- <TextView style="@style/separator_horizontal_headline"
- android:text="@string/about_contributors" />
- </RelativeLayout>
- <TextView android:id="@+id/contributors"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_margin="7dip"
- android:layout_gravity="left"
- android:paddingLeft="3dip"
- android:textSize="14dip"
- android:linksClickable="true"
- android:textColorLink="?text_color_link"
- android:textColor="?text_color"
- android:text="@string/contributors" />
- </LinearLayout>
- </ScrollView>
-</LinearLayout>
diff --git a/main/res/layout/about_activity.xml b/main/res/layout/about_activity.xml
new file mode 100644
index 0000000..01b04e1
--- /dev/null
+++ b/main/res/layout/about_activity.xml
@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical" >
+
+ <LinearLayout style="@style/action_bar" >
+
+ <ImageView
+ style="@style/action_bar_action"
+ android:onClick="goHome" />
+
+ <View style="@style/action_bar_separator" />
+
+ <TextView style="@style/action_bar_title" />
+ </LinearLayout>
+
+ <ScrollView
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"
+ android:padding="4dip" >
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="10dip"
+ android:orientation="vertical" >
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:layout_marginTop="10dip"
+ android:orientation="vertical" >
+
+ <ImageView
+ android:layout_width="200dip"
+ android:layout_height="200dip"
+ android:layout_gravity="center"
+ android:layout_margin="10dip"
+ android:gravity="center"
+ android:scaleType="fitXY"
+ android:src="@drawable/cgeo_logo" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:layout_marginLeft="10dip"
+ android:layout_marginRight="10dip"
+ android:layout_marginTop="5dip"
+ android:text="@string/quote"
+ android:textColor="?text_color"
+ android:textSize="14dip" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="right"
+ android:layout_marginBottom="5dip"
+ android:layout_marginLeft="10dip"
+ android:layout_marginRight="10dip"
+ android:text="@string/powered_by"
+ android:textColor="?text_color"
+ android:textSize="14dip" />
+ </LinearLayout>
+
+ <RelativeLayout style="@style/separator_horizontal_layout" >
+
+ <View style="@style/separator_horizontal" />
+
+ <TextView
+ style="@style/separator_horizontal_headline"
+ android:text="@string/about_version" />
+ </RelativeLayout>
+
+ <TextView
+ android:id="@+id/about_version_string"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:layout_marginBottom="5dip"
+ android:layout_marginLeft="10dip"
+ android:layout_marginRight="10dip"
+ android:textColor="?text_color"
+ android:textIsSelectable="true"
+ android:textSize="14dip"
+ android:textStyle="bold" />
+
+ <RelativeLayout style="@style/separator_horizontal_layout" >
+
+ <View style="@style/separator_horizontal" />
+
+ <TextView
+ style="@style/separator_horizontal_headline"
+ android:text="@string/about_donate" />
+ </RelativeLayout>
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="10dip"
+ android:gravity="center_horizontal"
+ android:orientation="horizontal" >
+
+ <Button
+ style="@style/button_full"
+ android:layout_width="280dip"
+ android:lines="2"
+ android:onClick="donate"
+ android:singleLine="false"
+ android:text="@string/about_donation_more" />
+ </LinearLayout>
+
+ <RelativeLayout style="@style/separator_horizontal_layout" >
+
+ <View style="@style/separator_horizontal" />
+
+ <TextView
+ style="@style/separator_horizontal_headline"
+ android:text="@string/about_detail" />
+ </RelativeLayout>
+
+ <TextView
+ android:id="@+id/support"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:layout_marginBottom="5dip"
+ android:layout_marginLeft="10dip"
+ android:layout_marginRight="10dip"
+ android:clickable="true"
+ android:focusable="true"
+ android:linksClickable="false"
+ android:onClick="support"
+ android:text="@string/support"
+ android:textColor="?text_color"
+ android:textColorLink="?text_color_link"
+ android:textSize="14dip" />
+
+ <TextView
+ android:id="@+id/website"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:layout_marginBottom="5dip"
+ android:layout_marginLeft="10dip"
+ android:layout_marginRight="10dip"
+ android:clickable="true"
+ android:focusable="true"
+ android:linksClickable="false"
+ android:onClick="website"
+ android:text="@string/website"
+ android:textColor="?text_color"
+ android:textColorLink="?text_color_link"
+ android:textSize="14dip" />
+
+ <TextView
+ android:id="@+id/facebook"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:layout_marginBottom="5dip"
+ android:layout_marginLeft="10dip"
+ android:layout_marginRight="10dip"
+ android:clickable="true"
+ android:focusable="true"
+ android:linksClickable="false"
+ android:onClick="facebook"
+ android:text="@string/facebook"
+ android:textColor="?text_color"
+ android:textColorLink="?text_color_link"
+ android:textSize="14dip" />
+
+ <TextView
+ android:id="@+id/twitter"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:layout_marginBottom="5dip"
+ android:layout_marginLeft="10dip"
+ android:layout_marginRight="10dip"
+ android:clickable="true"
+ android:focusable="true"
+ android:linksClickable="false"
+ android:onClick="twitter"
+ android:text="@string/twitter"
+ android:textColor="?text_color"
+ android:textColorLink="?text_color_link"
+ android:textSize="14dip" />
+
+ <TextView
+ android:id="@+id/nutshellmanual"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:layout_marginBottom="5dip"
+ android:layout_marginLeft="10dip"
+ android:layout_marginRight="10dip"
+ android:clickable="true"
+ android:focusable="true"
+ android:linksClickable="false"
+ android:onClick="nutshellmanual"
+ android:text="@string/nutshellmanual"
+ android:textColor="?text_color"
+ android:textColorLink="?text_color_link"
+ android:textSize="14dip" />
+
+ <RelativeLayout style="@style/separator_horizontal_layout" >
+
+ <View style="@style/separator_horizontal" />
+
+ <TextView
+ style="@style/separator_horizontal_headline"
+ android:text="@string/about_changelog" />
+ </RelativeLayout>
+
+ <TextView
+ android:id="@+id/changelog"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:layout_margin="7dip"
+ android:linksClickable="true"
+ android:paddingLeft="3dip"
+ android:text="@string/changelog"
+ android:textColor="?text_color"
+ android:textColorLink="?text_color_link"
+ android:textSize="12dip" />
+
+ <RelativeLayout style="@style/separator_horizontal_layout" >
+
+ <View style="@style/separator_horizontal" />
+
+ <TextView
+ style="@style/separator_horizontal_headline"
+ android:text="@string/about_contributors" />
+ </RelativeLayout>
+
+ <TextView
+ android:id="@+id/contributors"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:layout_margin="7dip"
+ android:linksClickable="true"
+ android:paddingLeft="3dip"
+ android:text="@string/contributors"
+ android:textColor="?text_color"
+ android:textColorLink="?text_color_link"
+ android:textSize="14dip" />
+ </LinearLayout>
+ </ScrollView>
+
+</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/addresses.xml b/main/res/layout/addresses.xml
index 1c7bc81..1f8665e 100644
--- a/main/res/layout/addresses.xml
+++ b/main/res/layout/addresses.xml
@@ -2,8 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color" >
+ android:orientation="vertical">
<LinearLayout style="@style/action_bar">
<ImageView style="@style/action_bar_action"
android:onClick="goHome" />
diff --git a/main/res/layout/addresses_item.xml b/main/res/layout/addresses_item.xml
index 0699a6f..3ea27ff 100644
--- a/main/res/layout/addresses_item.xml
+++ b/main/res/layout/addresses_item.xml
@@ -1,32 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/button_map"
- android:layout_height="wrap_content"
- android:layout_width="fill_parent"
- android:layout_margin="3dip"
- android:paddingLeft="5dip"
- android:paddingRight="5dip"
- android:paddingBottom="7dip"
- android:paddingTop="7dip"
- android:orientation="vertical"
- android:background="?background_color" >
- <TextView android:id="@+id/label"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:scrollHorizontally="true"
- android:textSize="22dip"
- android:gravity="left"
- android:singleLine="false"
- android:ellipsize="marquee"
- android:textColor="?text_color" />
- <TextView android:id="@+id/distance"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:scrollHorizontally="true"
- android:textSize="12dip"
- android:gravity="left"
- android:lines="1"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textColor="?text_color" />
+ android:id="@+id/button_map"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_margin="3dip"
+ android:background="?background_color"
+ android:orientation="vertical"
+ android:paddingBottom="7dip"
+ android:paddingLeft="5dip"
+ android:paddingRight="5dip"
+ android:paddingTop="7dip" >
+
+ <TextView
+ android:id="@+id/label"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:ellipsize="marquee"
+ android:gravity="left"
+ android:scrollHorizontally="true"
+ android:singleLine="false"
+ android:textColor="?text_color"
+ android:textIsSelectable="false"
+ android:textSize="22dip" />
+
+ <TextView
+ android:id="@+id/distance"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:ellipsize="marquee"
+ android:gravity="left"
+ android:lines="1"
+ android:scrollHorizontally="true"
+ android:singleLine="true"
+ android:textColor="?text_color"
+ android:textIsSelectable="false"
+ android:textSize="12dip" />
+
</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/attribute_descriptions.xml b/main/res/layout/attribute_descriptions.xml
index 1d2459f..45dd3cd 100644
--- a/main/res/layout/attribute_descriptions.xml
+++ b/main/res/layout/attribute_descriptions.xml
@@ -1,14 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/attribute_descriptions"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" >
- <TextView android:id="@+id/attribute_descriptions_textview"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:textSize="14dip"
- android:textColor="?text_color"
- android:textColorLink="?text_color_link"
- android:linksClickable="true" />
-</LinearLayout>
+ android:id="@+id/attribute_descriptions"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content" >
+
+ <TextView
+ android:id="@+id/attribute_descriptions_textview"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:linksClickable="true"
+ android:textColor="?text_color"
+ android:textColorLink="?text_color_link"
+ android:textIsSelectable="false"
+ android:textSize="14dip" />
+
+</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/cache_information_item.xml b/main/res/layout/cache_information_item.xml
new file mode 100644
index 0000000..e9df7f5
--- /dev/null
+++ b/main/res/layout/cache_information_item.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="3dip" >
+
+ <TextView
+ android:id="@+id/name"
+ android:layout_width="80dip"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentTop="false"
+ android:layout_centerVertical="true"
+ android:layout_gravity="left|top"
+ android:layout_marginRight="4dip"
+ android:ellipsize="end"
+ android:gravity="right"
+ android:lines="1"
+ android:scrollHorizontally="true"
+ android:singleLine="true"
+ android:text="@null"
+ android:textColor="?text_color_headline"
+ android:textIsSelectable="false"
+ android:textSize="12dip" />
+
+ <TextView
+ android:id="@+id/value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerVertical="true"
+ android:layout_marginRight="5dip"
+ android:layout_toRightOf="@+id/name"
+ android:gravity="center_vertical"
+ android:textColor="?text_color"
+ android:textIsSelectable="false"
+ android:textSize="14dip" />
+
+ <LinearLayout
+ android:id="@+id/stars"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerVertical="true"
+ android:layout_toRightOf="@+id/value"
+ android:baselineAligned="false"
+ android:gravity="center_vertical"
+ android:orientation="horizontal"
+ android:visibility="gone" >
+ </LinearLayout>
+
+ <TextView
+ android:id="@+id/addition"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerVertical="true"
+ android:layout_marginLeft="5dip"
+ android:layout_toRightOf="@+id/stars"
+ android:gravity="center_vertical"
+ android:textColor="?text_color_grey"
+ android:textIsSelectable="false"
+ android:textSize="11dip"
+ android:visibility="gone" />
+
+</RelativeLayout> \ No newline at end of file
diff --git a/main/res/layout/cache_layout.xml b/main/res/layout/cache_layout.xml
deleted file mode 100644
index 256026c..0000000
--- a/main/res/layout/cache_layout.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="3dip" >
- <TextView android:id="@+id/name"
- android:layout_width="80dip"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="false"
- android:layout_alignParentLeft="true"
- android:layout_gravity="left|top"
- android:layout_marginRight="4dip"
- android:gravity="right"
- android:lines="1"
- android:singleLine="true"
- android:scrollHorizontally="true"
- android:ellipsize="end"
- android:textSize="12dip"
- android:textColor="?text_color_headline"
- android:text="@null" android:layout_centerVertical="true"/>
- <TextView android:id="@+id/value"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="5dip"
- android:textSize="14dip"
- android:textColor="?text_color" android:gravity="center_vertical" android:layout_toRightOf="@+id/name"
- android:layout_centerVertical="true"/>
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" android:id="@+id/stars" android:layout_toRightOf="@+id/value"
- android:layout_centerVertical="true" android:visibility="gone" android:baselineAligned="false"
- android:gravity="center_vertical">
- </LinearLayout>
- <TextView android:id="@+id/addition"
- android:visibility="gone"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="5dip"
- android:textSize="11dip"
- android:textColor="?text_color_grey" android:gravity="center_vertical"
- android:layout_centerVertical="true" android:layout_toRightOf="@+id/stars"/>
-</RelativeLayout> \ No newline at end of file
diff --git a/main/res/layout/caches.xml b/main/res/layout/caches.xml
index 6e39fee..3381341 100644
--- a/main/res/layout/caches.xml
+++ b/main/res/layout/caches.xml
@@ -2,8 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color" >
+ android:orientation="vertical">
<LinearLayout style="@style/action_bar">
<ImageView style="@style/action_bar_action"
android:onClick="goHome" />
diff --git a/main/res/layout/caches_item.xml b/main/res/layout/caches_item.xml
index db2bcbd..e3b861c 100644
--- a/main/res/layout/caches_item.xml
+++ b/main/res/layout/caches_item.xml
@@ -1,164 +1,184 @@
<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cc="http://schemas.android.com/apk/res/cgeo.geocaching"
- android:id="@+id/one_cache"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:background="?background_color" >
-
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:cc="http://schemas.android.com/apk/res/cgeo.geocaching"
+ android:id="@+id/one_cache"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:background="?background_color" >
+
<!-- selection mode checkbox -->
-
- <CheckBox android:id="@+id/checkbox"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerVertical="true"
- android:layout_alignParentLeft="true"
- android:layout_gravity="left"
- android:paddingRight="5dip"
- android:gravity="left|center_horizontal"
- android:visibility="gone" />
-
- <!-- "found" marker, vertical green/red line -->
-
- <ImageView android:id="@+id/log_status_mark"
- android:layout_width="2dip"
- android:layout_height="30dip"
- android:layout_centerVertical="true"
- android:layout_toRightOf="@id/checkbox"
- android:layout_marginRight="4dip"
- android:scaleType="fitXY"
- android:visibility="gone"
- android:src="@drawable/mark_green" />
-
- <!-- cache name and icon -->
-
- <TextView android:id="@+id/text"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginRight="110dip"
- android:layout_toRightOf="@+id/log_status_mark"
- android:layout_gravity="left"
- android:paddingTop="5dip"
- android:paddingRight="3dip"
- android:lines="1"
- android:singleLine="true"
- android:scrollHorizontally="true"
- android:ellipsize="marquee"
- android:textSize="18dip"
- android:textColor="?text_color" />
-
- <!-- cache attributes and other info -->
-
- <TextView android:id="@+id/info"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="30dip"
- android:layout_marginRight="110dip"
- android:layout_alignParentBottom="true"
- android:layout_toRightOf="@id/log_status_mark"
- android:layout_gravity="left"
- android:paddingRight="3dip"
- android:paddingBottom="5dip"
- android:lines="1"
- android:singleLine="true"
- android:scrollHorizontally="true"
- android:ellipsize="marquee"
- android:textSize="12dip"
- android:textColor="?text_color_grey" />
-
- <!-- real text based direction and distance -->
-
- <RelativeLayout android:id="@+id/direction_layout"
- android:visibility="gone"
- android:layout_width="78dip"
- android:layout_height="wrap_content"
- android:layout_centerVertical="true"
- android:layout_alignParentRight="true"
- android:layout_marginTop="1dip"
- android:layout_marginBottom="1dip"
- android:layout_marginRight="30dip" >
- <view class="cgeo.geocaching.ui.DistanceView"
- android:id="@+id/distance"
- android:layout_width="78dip"
- android:layout_height="wrap_content"
- android:layout_centerHorizontal="true"
- android:layout_gravity="center"
- android:lines="1"
- android:singleLine="true"
- android:scrollHorizontally="true"
- android:ellipsize="marquee"
- android:textSize="16dip"
- android:textColor="?text_color"
- android:gravity="center" />
- <view class="cgeo.geocaching.ui.CompassMiniView"
- android:id="@+id/direction"
- android:layout_width="78dip"
- android:layout_height="28px"
- android:layout_marginTop="21dip"
- android:layout_centerHorizontal="true"
- android:layout_gravity="center"
- android:minWidth="28px"
- android:minHeight="28px"
- android:gravity="center"
- cc:skin="?compass" />
- </RelativeLayout>
-
- <!-- image based direction and distance -->
-
- <RelativeLayout android:id="@+id/dirimg_layout"
- android:visibility="gone"
- android:layout_width="78dip"
- android:layout_height="wrap_content"
- android:layout_centerVertical="true"
- android:layout_alignParentRight="true"
- android:layout_marginTop="1dip"
- android:layout_marginBottom="1dip"
- android:layout_marginRight="30dip" >
- <ImageView android:id="@+id/dirimg"
- android:layout_width="55dip"
- android:layout_height="30dip"
- android:layout_centerInParent="true"
- android:layout_gravity="center"
- android:gravity="center"
- android:scaleType="fitXY"
- android:src="@null" />
- </RelativeLayout>
-
- <!-- inventory and favorites -->
-
- <RelativeLayout
- android:layout_width="35dip"
- android:layout_height="wrap_content"
- android:layout_centerVertical="true"
- android:layout_alignParentRight="true"
- android:layout_marginTop="1dip"
- android:layout_marginBottom="1dip">
-
- <ImageView android:id="@+id/inventory"
- android:layout_width="35dip"
- android:layout_height="22dip"
- android:layout_gravity="center_vertical|center_horizontal"
- android:layout_alignParentTop="true"
- android:scaleType="center"
- android:src="@drawable/trackable_all"
- android:background="?inventory"/>
- <TextView android:id="@+id/favourite"
- android:layout_width="35dip"
- android:layout_height="wrap_content"
- android:layout_marginTop="22dip"
- android:layout_centerHorizontal="true"
- android:layout_alignParentBottom="true"
- android:layout_gravity="center"
- android:gravity="center"
- android:paddingLeft="3dip"
- android:paddingRight="3dip"
- android:paddingBottom="1dip"
- android:lines="1"
- android:singleLine="true"
- android:scrollHorizontally="true"
- android:ellipsize="marquee"
- android:textSize="12dip"
- android:textStyle="bold"
- android:background="?favourite"
- android:textColor="?text_color" />
- </RelativeLayout>
+
+ <CheckBox
+ android:id="@+id/checkbox"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_centerVertical="true"
+ android:layout_gravity="left"
+ android:gravity="left|center_horizontal"
+ android:paddingRight="5dip"
+ android:visibility="gone" />
+
+ <!-- "found" marker, vertical green/red line -->
+
+ <ImageView
+ android:id="@+id/log_status_mark"
+ android:layout_width="2dip"
+ android:layout_height="30dip"
+ android:layout_centerVertical="true"
+ android:layout_marginRight="4dip"
+ android:layout_toRightOf="@id/checkbox"
+ android:scaleType="fitXY"
+ android:src="@drawable/mark_green"
+ android:visibility="gone" />
+
+ <!-- cache name and icon -->
+
+ <TextView
+ android:id="@+id/text"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:layout_marginRight="110dip"
+ android:layout_toRightOf="@+id/log_status_mark"
+ android:ellipsize="marquee"
+ android:lines="1"
+ android:paddingRight="3dip"
+ android:paddingTop="5dip"
+ android:scrollHorizontally="true"
+ android:singleLine="true"
+ android:textColor="?text_color"
+ android:textIsSelectable="false"
+ android:textSize="18dip" />
+
+ <!-- cache attributes and other info -->
+
+ <TextView
+ android:id="@+id/info"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_gravity="left"
+ android:layout_marginRight="110dip"
+ android:layout_marginTop="30dip"
+ android:layout_toRightOf="@id/log_status_mark"
+ android:ellipsize="marquee"
+ android:lines="1"
+ android:paddingBottom="5dip"
+ android:paddingRight="3dip"
+ android:scrollHorizontally="true"
+ android:singleLine="true"
+ android:textColor="?text_color_grey"
+ android:textIsSelectable="false"
+ android:textSize="12dip" />
+
+ <!-- real text based direction and distance -->
+
+ <RelativeLayout
+ android:id="@+id/direction_layout"
+ android:layout_width="78dip"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_centerVertical="true"
+ android:layout_marginBottom="1dip"
+ android:layout_marginRight="30dip"
+ android:layout_marginTop="1dip"
+ android:visibility="gone" >
+
+ <view
+ android:id="@+id/distance"
+ android:layout_width="78dip"
+ android:layout_height="wrap_content"
+ android:layout_centerHorizontal="true"
+ android:layout_gravity="center"
+ class="cgeo.geocaching.ui.DistanceView"
+ android:ellipsize="marquee"
+ android:gravity="center"
+ android:lines="1"
+ android:scrollHorizontally="true"
+ android:singleLine="true"
+ android:textColor="?text_color"
+ android:textSize="16dip" />
+
+ <view
+ android:id="@+id/direction"
+ android:layout_width="78dip"
+ android:layout_height="28px"
+ android:layout_centerHorizontal="true"
+ android:layout_gravity="center"
+ android:layout_marginTop="21dip"
+ class="cgeo.geocaching.ui.CompassMiniView"
+ android:gravity="center"
+ android:minHeight="28px"
+ android:minWidth="28px"
+ cc:skin="?compass" />
+ </RelativeLayout>
+
+ <!-- image based direction and distance -->
+
+ <RelativeLayout
+ android:id="@+id/dirimg_layout"
+ android:layout_width="78dip"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_centerVertical="true"
+ android:layout_marginBottom="1dip"
+ android:layout_marginRight="30dip"
+ android:layout_marginTop="1dip"
+ android:visibility="gone" >
+
+ <ImageView
+ android:id="@+id/dirimg"
+ android:layout_width="55dip"
+ android:layout_height="30dip"
+ android:layout_centerInParent="true"
+ android:layout_gravity="center"
+ android:gravity="center"
+ android:scaleType="fitXY"
+ android:src="@null" />
+ </RelativeLayout>
+
+ <!-- inventory and favorites -->
+
+ <RelativeLayout
+ android:layout_width="35dip"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_centerVertical="true"
+ android:layout_marginBottom="1dip"
+ android:layout_marginTop="1dip" >
+
+ <ImageView
+ android:id="@+id/inventory"
+ android:layout_width="35dip"
+ android:layout_height="22dip"
+ android:layout_alignParentTop="true"
+ android:layout_gravity="center_vertical|center_horizontal"
+ android:background="?inventory"
+ android:scaleType="center"
+ android:src="@drawable/trackable_all" />
+
+ <TextView
+ android:id="@+id/favourite"
+ android:layout_width="35dip"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_centerHorizontal="true"
+ android:layout_gravity="center"
+ android:layout_marginTop="22dip"
+ android:background="?favourite"
+ android:ellipsize="marquee"
+ android:gravity="center"
+ android:lines="1"
+ android:paddingBottom="1dip"
+ android:paddingLeft="3dip"
+ android:paddingRight="3dip"
+ android:scrollHorizontally="true"
+ android:singleLine="true"
+ android:textColor="?text_color"
+ android:textIsSelectable="false"
+ android:textSize="12dip"
+ android:textStyle="bold" />
+ </RelativeLayout>
+
</RelativeLayout> \ No newline at end of file
diff --git a/main/res/layout/cacheview.xml b/main/res/layout/cacheview.xml
index 89d7152..3dcf9d8 100644
--- a/main/res/layout/cacheview.xml
+++ b/main/res/layout/cacheview.xml
@@ -3,7 +3,6 @@
xmlns:app="http://schemas.android.com/apk/res/cgeo.geocaching"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:background="?background_color"
android:orientation="vertical" >
<LinearLayout style="@style/action_bar" >
diff --git a/main/res/layout/cacheview_details.xml b/main/res/layout/cacheview_details.xml
index 62ee2af..8bb5ad5 100644
--- a/main/res/layout/cacheview_details.xml
+++ b/main/res/layout/cacheview_details.xml
@@ -67,6 +67,7 @@
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_gravity="left"
+ android:layout_centerVertical="true"
android:layout_marginLeft="6dip"
android:layout_marginRight="130dip"
android:paddingRight="3dip"
@@ -91,6 +92,37 @@
</RelativeLayout>
</LinearLayout>
+ <!-- list box -->
+
+ <RelativeLayout
+ android:id="@+id/list_box"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:visibility="gone" >
+
+ <TextView
+ android:id="@+id/list_text"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_gravity="left"
+ android:layout_centerVertical="true"
+ android:layout_marginLeft="6dip"
+ android:layout_marginRight="130dip"
+ android:paddingRight="3dip"
+ android:textColor="?text_color"
+ android:textSize="14dip" />
+
+ <Button
+ android:id="@+id/change_list"
+ style="@style/button_small"
+ android:layout_alignParentRight="true"
+ android:text="@string/cache_list_change"
+ android:visibility="visible" />
+
+ </RelativeLayout>
+
<!-- Watchlist box -->
<LinearLayout
@@ -114,6 +146,7 @@
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_gravity="left"
+ android:layout_centerVertical="true"
android:layout_marginLeft="6dip"
android:layout_marginRight="130dip"
android:paddingRight="3dip"
@@ -159,6 +192,7 @@
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_gravity="left"
+ android:layout_centerVertical="true"
android:layout_marginLeft="6dip"
android:layout_marginRight="130dip"
android:paddingRight="3dip"
@@ -180,7 +214,7 @@
android:visibility="gone" />
</RelativeLayout>
</LinearLayout>
-
+
<!-- License Box -->
<LinearLayout
diff --git a/main/res/layout/coords.xml b/main/res/layout/coords.xml
index 5720fa8..ddb2f4e 100644
--- a/main/res/layout/coords.xml
+++ b/main/res/layout/coords.xml
@@ -3,7 +3,6 @@
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:background="?background_color"
android:orientation="vertical" >
<LinearLayout style="@style/action_bar" >
diff --git a/main/res/layout/edit_waypoint_activity.xml b/main/res/layout/edit_waypoint_activity.xml
index 46134a0..4c95284 100644
--- a/main/res/layout/edit_waypoint_activity.xml
+++ b/main/res/layout/edit_waypoint_activity.xml
@@ -2,7 +2,6 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:background="?background_color"
android:orientation="vertical" >
<LinearLayout style="@style/action_bar" >
diff --git a/main/res/layout/editor.xml b/main/res/layout/editor.xml
index e07d31f..9b7dc33 100644
--- a/main/res/layout/editor.xml
+++ b/main/res/layout/editor.xml
@@ -2,8 +2,7 @@
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical"
- android:background="?background_color" >
+ android:orientation="vertical">
<EditText
android:id="@+id/editorEditText"
diff --git a/main/res/layout/fieldnote_export_dialog.xml b/main/res/layout/fieldnote_export_dialog.xml
index ca0b01d..02ab182 100644
--- a/main/res/layout/fieldnote_export_dialog.xml
+++ b/main/res/layout/fieldnote_export_dialog.xml
@@ -2,15 +2,14 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="?background_color"
android:orientation="vertical"
android:padding="3dip" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textColor="?text_color"
- android:text="@string/export_fieldnotes_info" />
+ android:text="@string/export_fieldnotes_info"
+ android:textColor="?text_color" />
<CheckBox
android:id="@+id/upload"
@@ -23,9 +22,4 @@
android:enabled="false"
android:text="@string/export_fieldnotes_onlynew" />
- <Button
- android:id="@+id/export"
- style="@style/button_full"
- android:text="@string/export" />
-
</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/filter_bar.xml b/main/res/layout/filter_bar.xml
index 9df8f84..6d12ae1 100644
--- a/main/res/layout/filter_bar.xml
+++ b/main/res/layout/filter_bar.xml
@@ -14,6 +14,7 @@
<TextView
android:id="@+id/filter_text"
- style="@style/filter_bar_text" />
+ style="@style/filter_bar_text"
+ android:textIsSelectable="false" />
</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/gpx.xml b/main/res/layout/gpx.xml
index 1c7bc81..1f8665e 100644
--- a/main/res/layout/gpx.xml
+++ b/main/res/layout/gpx.xml
@@ -2,8 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color" >
+ android:orientation="vertical">
<LinearLayout style="@style/action_bar">
<ImageView style="@style/action_bar_action"
android:onClick="goHome" />
diff --git a/main/res/layout/gpx_export_dialog.xml b/main/res/layout/gpx_export_dialog.xml
index a997d6b..9c97848 100644
--- a/main/res/layout/gpx_export_dialog.xml
+++ b/main/res/layout/gpx_export_dialog.xml
@@ -2,7 +2,6 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="?background_color"
android:orientation="vertical"
android:padding="3dip" >
@@ -10,17 +9,12 @@
android:id="@id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textColor="?text_color"
- android:text="@string/export_gpx_info" />
+ android:text="@string/export_gpx_info"
+ android:textColor="?text_color" />
<CheckBox
android:id="@+id/share"
style="@style/checkbox_full"
android:text="@string/init_share_after_export" />
- <Button
- android:id="@+id/export"
- style="@style/button_full"
- android:text="@string/export" />
-
</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/gpx_item.xml b/main/res/layout/gpx_item.xml
index 8c0ac7b..df735bc 100644
--- a/main/res/layout/gpx_item.xml
+++ b/main/res/layout/gpx_item.xml
@@ -1,33 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/button_map"
- android:layout_height="wrap_content"
- android:layout_width="fill_parent"
- android:layout_margin="3dip"
- android:paddingLeft="5dip"
- android:paddingRight="5dip"
- android:paddingBottom="7dip"
- android:paddingTop="7dip"
- android:orientation="vertical"
- android:background="?background_color" >
- <TextView android:id="@+id/filepath"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:scrollHorizontally="true"
- android:textSize="12dip"
- android:gravity="right"
- android:lines="1"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textColor="?text_color_grey" />
- <TextView android:id="@+id/filename"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:scrollHorizontally="true"
- android:textSize="22dip"
- android:gravity="left"
- android:lines="1"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textColor="?text_color" />
+ android:id="@+id/button_map"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_margin="3dip"
+ android:background="?background_color"
+ android:orientation="vertical"
+ android:paddingBottom="7dip"
+ android:paddingLeft="5dip"
+ android:paddingRight="5dip"
+ android:paddingTop="7dip" >
+
+ <TextView
+ android:id="@+id/filepath"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:ellipsize="marquee"
+ android:gravity="right"
+ android:lines="1"
+ android:scrollHorizontally="true"
+ android:singleLine="true"
+ android:textColor="?text_color_grey"
+ android:textIsSelectable="false"
+ android:textSize="12dip" />
+
+ <TextView
+ android:id="@+id/filename"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:ellipsize="marquee"
+ android:gravity="left"
+ android:lines="1"
+ android:scrollHorizontally="true"
+ android:singleLine="true"
+ android:textColor="?text_color"
+ android:textIsSelectable="false"
+ android:textSize="22dip" />
+
</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/init.xml b/main/res/layout/init.xml
index 28e0a3c..730e5b7 100644
--- a/main/res/layout/init.xml
+++ b/main/res/layout/init.xml
@@ -2,8 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color" >
+ android:orientation="vertical">
<LinearLayout style="@style/action_bar">
<ImageView style="@style/action_bar_action"
android:onClick="goHome" />
@@ -198,40 +197,43 @@
<CheckBox android:id="@+id/captcha"
style="@style/checkbox_full"
android:text="@string/init_captcha" />
+ <CheckBox android:id="@+id/livelist"
+ style="@style/checkbox_full"
+ android:text="@string/init_livelist" />
<CheckBox android:id="@+id/loaddirectionimg"
- style="@style/checkbox_full"
+ style="@style/checkbox_full"
android:text="@string/init_loaddirectionimg" />
- <CheckBox android:id="@+id/useenglish"
- style="@style/checkbox_full"
- android:text="@string/init_useenglish" />
- <CheckBox android:id="@+id/exclude"
- style="@style/checkbox_full"
- android:text="@string/init_exclude" />
- <CheckBox android:id="@+id/disabled"
- style="@style/checkbox_full"
- android:text="@string/init_disabled" />
+ <CheckBox android:id="@+id/useenglish"
+ style="@style/checkbox_full"
+ android:text="@string/init_useenglish" />
+ <CheckBox android:id="@+id/units"
+ style="@style/checkbox_full"
+ android:text="@string/init_units" />
+ <CheckBox android:id="@+id/exclude"
+ style="@style/checkbox_full"
+ android:text="@string/init_exclude" />
+ <CheckBox android:id="@+id/disabled"
+ style="@style/checkbox_full"
+ android:text="@string/init_disabled" />
<CheckBox android:id="@+id/trackautovisit"
- style="@style/checkbox_full"
+ style="@style/checkbox_full"
android:text="@string/init_trackautovisit" />
- <CheckBox android:id="@+id/units"
- style="@style/checkbox_full"
- android:text="@string/init_units" />
- <CheckBox android:id="@+id/livelist"
- style="@style/checkbox_full"
- android:text="@string/init_livelist" />
- <CheckBox android:id="@+id/log_offline"
- style="@style/checkbox_full"
- android:text="@string/init_log_offline" />
- <CheckBox android:id="@+id/trail"
- style="@style/checkbox_full"
- android:text="@string/init_maptrail" />
+ <CheckBox android:id="@+id/log_offline"
+ style="@style/checkbox_full"
+ android:text="@string/init_log_offline" />
+ <CheckBox android:id="@+id/choose_list"
+ style="@style/checkbox_full"
+ android:text="@string/init_choose_list" />
+ <CheckBox android:id="@+id/trail"
+ style="@style/checkbox_full"
+ android:text="@string/init_maptrail" />
<CheckBox android:id="@+id/plain_logs"
- style="@style/checkbox_full"
+ style="@style/checkbox_full"
android:text="@string/init_plain_logs" />
<CheckBox android:id="@+id/use_native_ua"
- style="@style/checkbox_full"
+ style="@style/checkbox_full"
android:text="@string/init_use_native_ua" />
- </LinearLayout>
+ </LinearLayout>
<!-- ** -->
<RelativeLayout style="@style/separator_horizontal_layout" >
<View style="@style/separator_horizontal" />
diff --git a/main/res/layout/livemapinfo.xml b/main/res/layout/livemapinfo.xml
index 66f9da4..5dd8ccd 100644
--- a/main/res/layout/livemapinfo.xml
+++ b/main/res/layout/livemapinfo.xml
@@ -1,56 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/live_map_scroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:background="?background_color_transparent"
- android:orientation="vertical" >
+ android:orientation="vertical"
+ android:padding="4dip" >
- <LinearLayout style="@style/action_bar" >
-
- <TextView style="@style/action_bar_title" />
- </LinearLayout>
-
- <ScrollView
- android:id="@+id/live_map_scroll"
+ <LinearLayout
android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- android:padding="4dip" >
+ android:layout_height="wrap_content"
+ android:orientation="vertical" >
- <LinearLayout
+ <TextView
+ android:id="@+id/live_map_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:orientation="vertical" >
-
- <TextView
- android:id="@+id/live_map_text"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/live_map_notification"
- android:textColor="?text_color"
- android:textSize="14dip" />
+ android:text="@string/live_map_notification"
+ android:textColor="?text_color"
+ android:textSize="14dip" />
- <RelativeLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" >
-
- <CheckBox
- android:id="@+id/live_map_hint_hide"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:text="@string/live_map_note_dontshow"
- android:visibility="gone" />
-
- <Button
- android:id="@+id/live_map_hint_ok"
- style="@style/button_small"
- android:layout_width="60dip"
- android:layout_alignParentRight="true"
- android:layout_marginRight="1dip"
- android:text="@string/live_map_note_close" />
- </RelativeLayout>
- </LinearLayout>
- </ScrollView>
+ <CheckBox
+ android:id="@+id/live_map_hint_hide"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:text="@string/live_map_note_dontshow"
+ android:visibility="gone" />
+ </LinearLayout>
-</LinearLayout> \ No newline at end of file
+</ScrollView> \ No newline at end of file
diff --git a/main/res/layout/main.xml b/main/res/layout/main.xml
index 575fe1f..0f9aff0 100644
--- a/main/res/layout/main.xml
+++ b/main/res/layout/main.xml
@@ -1,199 +1,256 @@
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/mainscreen"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_gravity="center" >
- <LinearLayout style="@style/action_bar">
- <ImageView style="@style/action_bar_icon_cgeo"
- android:onClick="showAbout" />
- <TextView style="@style/action_bar_title" />
- <View style="@style/action_bar_separator" />
- <ImageView style="@style/action_bar_action"
- android:src="@drawable/actionbar_search"
- android:onClick="goSearch" />
- <View style="@style/action_bar_separator" />
- <ImageView style="@style/action_bar_action"
- android:src="@drawable/actionbar_manual"
- android:onClick="goManual" />
- </LinearLayout>
- <fragment android:id="@+id/status"
- android:visibility="invisible"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_marginLeft="16dip"
- android:layout_marginRight="16dip"
- android:layout_marginTop="60dip"
- android:name="cgeo.geocaching.StatusFragment" />
-<!-- ** -->
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="45dip"
- android:layout_centerInParent="true"
- android:gravity="center"
- android:orientation="vertical" >
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:layout_margin="4dip"
- android:gravity="center_horizontal"
- android:orientation="horizontal" >
- <LinearLayout
- android:layout_width="74dip"
- android:layout_height="wrap_content"
- android:layout_margin="4dip"
- android:orientation="vertical"
- android:onClick="cgeoFindOnMap" >
- <View
- android:id="@+id/map"
- style="@style/icon_mainscreen"
- android:background="@drawable/main_live" />
- <TextView
- style="@style/icon_mainscreen_text"
- android:text="@string/live_map_button" />
- </LinearLayout>
- <LinearLayout
- android:layout_width="74dip"
- android:layout_height="wrap_content"
- android:layout_margin="4dip"
- android:orientation="vertical">
- <View
- android:id="@+id/nearest"
- style="@style/icon_mainscreen"
- android:background="@drawable/main_nearby_disabled" />
- <TextView
- style="@style/icon_mainscreen_text"
- android:text="@string/caches_nearby_button" />
- </LinearLayout>
- <RelativeLayout
- android:layout_width="74dip"
- android:layout_height="wrap_content"
- android:layout_margin="4dip"
- android:onClick="cgeoFindByOffline" >
- <TextView android:id="@+id/offline_count"
- style="@style/icon_mainscreen_count" />
- <LinearLayout
- android:layout_width="74dip"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:layout_alignParentTop="true" >
- <View
- android:id="@+id/search_offline"
- style="@style/icon_mainscreen"
- android:background="@drawable/main_stored" />
- <TextView
- style="@style/icon_mainscreen_text"
- android:text="@string/stored_caches_button" />
- </LinearLayout>
- </RelativeLayout>
- </LinearLayout>
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_margin="4dip"
- android:gravity="center_horizontal"
- android:orientation="horizontal" >
- <LinearLayout
- android:layout_width="74dip"
- android:layout_height="wrap_content"
- android:layout_margin="4dip"
- android:orientation="vertical"
- android:onClick="cgeoSearch" >
- <View
- android:id="@+id/advanced_button"
- style="@style/icon_mainscreen"
- android:background="@drawable/main_search" />
- <TextView
- style="@style/icon_mainscreen_text"
- android:text="@string/advanced_search_button" />
- </LinearLayout>
- <LinearLayout
- android:layout_width="74dip"
- android:layout_height="wrap_content"
- android:layout_margin="4dip"
- android:orientation="vertical"
- android:onClick="cgeoPoint" >
- <View
- android:id="@+id/any_button"
- style="@style/icon_mainscreen"
- android:background="@drawable/main_any" />
- <TextView
- style="@style/icon_mainscreen_text"
- android:text="@string/any_button" />
- </LinearLayout>
- <LinearLayout
- android:layout_width="74dip"
- android:layout_height="wrap_content"
- android:layout_margin="4dip"
- android:orientation="vertical"
- android:onClick="cgeoFilter" >
- <View
- android:id="@+id/filter_button"
- style="@style/icon_mainscreen"
- android:background="@drawable/main_filter" />
- <TextView android:id="@+id/filter_button_title"
- style="@style/icon_mainscreen_text"
- android:text="@null" />
- </LinearLayout>
- </LinearLayout>
- </LinearLayout>
-<!-- ** -->
- <RelativeLayout android:id="@+id/helper"
- android:visibility="gone"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_marginLeft="16dip"
- android:layout_marginRight="16dip"
- android:layout_marginBottom="64dip"
- android:background="@drawable/helper_bcg" >
- <ImageView
- android:layout_width="32dip"
- android:layout_height="32dip"
- android:layout_alignParentLeft="true"
- android:layout_gravity="center"
- android:gravity="center"
- android:layout_margin="4dip"
- android:scaleType="center"
- android:src="@drawable/actionbar_manual" />
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_marginLeft="34dip"
- android:layout_gravity="center"
- android:gravity="center"
- android:padding="4dip"
- android:textSize="14dip"
- android:textColor="@color/text_icon"
- android:text="@string/helper" />
- </RelativeLayout>
-<!-- ** -->
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_marginRight="6dip"
- android:layout_marginLeft="6dip"
- android:orientation="vertical"
- android:onClick="cgeoNavSettings">
- <TextView android:id="@+id/user_info"
- style="@style/location_current"
- android:text="@string/init_login_popup_working"/>
- <TextView android:id="@+id/nav_location"
- style="@style/location_current"
- android:text="@string/loc_trying" />
- <RelativeLayout
- android:layout_width="fill_parent"
- android:layout_height="16dip" >
- <TextView android:id="@+id/nav_type"
- style="@style/location_current_type" />
- <TextView android:id="@+id/nav_accuracy"
- style="@style/location_current_accuracy" />
- <TextView android:id="@+id/nav_satellites"
- style="@style/location_current_satellites" />
- </RelativeLayout>
- </LinearLayout>
-</RelativeLayout>
+ android:id="@+id/mainscreen"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:layout_gravity="center" >
+
+ <LinearLayout style="@style/action_bar" >
+
+ <ImageView
+ style="@style/action_bar_icon_cgeo"
+ android:onClick="showAbout" />
+
+ <TextView style="@style/action_bar_title" />
+
+ <View style="@style/action_bar_separator" />
+
+ <ImageView
+ style="@style/action_bar_action"
+ android:onClick="goSearch"
+ android:src="@drawable/actionbar_search" />
+
+ <View style="@style/action_bar_separator" />
+
+ <ImageView
+ style="@style/action_bar_action"
+ android:onClick="goManual"
+ android:src="@drawable/actionbar_manual" />
+ </LinearLayout>
+
+ <fragment
+ android:id="@+id/status"
+ android:name="cgeo.geocaching.StatusFragment"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentTop="true"
+ android:layout_marginLeft="16dip"
+ android:layout_marginRight="16dip"
+ android:layout_marginTop="60dip" />
+ <!-- ** -->
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_centerInParent="true"
+ android:layout_marginTop="45dip"
+ android:gravity="center"
+ android:orientation="vertical" >
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="fill_parent"
+ android:layout_margin="4dip"
+ android:gravity="center_horizontal"
+ android:orientation="horizontal" >
+
+ <LinearLayout
+ android:layout_width="74dip"
+ android:layout_height="wrap_content"
+ android:layout_margin="4dip"
+ android:onClick="cgeoFindOnMap"
+ android:orientation="vertical" >
+
+ <View
+ android:id="@+id/map"
+ style="@style/icon_mainscreen"
+ android:background="@drawable/main_live" />
+
+ <TextView
+ style="@style/icon_mainscreen_text"
+ android:text="@string/live_map_button" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="74dip"
+ android:layout_height="wrap_content"
+ android:layout_margin="4dip"
+ android:orientation="vertical" >
+
+ <View
+ android:id="@+id/nearest"
+ style="@style/icon_mainscreen"
+ android:background="@drawable/main_nearby_disabled" />
+
+ <TextView
+ style="@style/icon_mainscreen_text"
+ android:text="@string/caches_nearby_button" />
+ </LinearLayout>
+
+ <RelativeLayout
+ android:layout_width="74dip"
+ android:layout_height="wrap_content"
+ android:layout_margin="4dip"
+ android:onClick="cgeoFindByOffline" >
+
+ <TextView
+ android:id="@+id/offline_count"
+ style="@style/icon_mainscreen_count"
+ android:textIsSelectable="false" />
+
+ <LinearLayout
+ android:layout_width="74dip"
+ android:layout_height="wrap_content"
+ android:layout_alignParentTop="true"
+ android:orientation="vertical" >
+
+ <View
+ android:id="@+id/search_offline"
+ style="@style/icon_mainscreen"
+ android:background="@drawable/main_stored" />
+
+ <TextView
+ style="@style/icon_mainscreen_text"
+ android:text="@string/stored_caches_button" />
+ </LinearLayout>
+ </RelativeLayout>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:layout_margin="4dip"
+ android:gravity="center_horizontal"
+ android:orientation="horizontal" >
+
+ <LinearLayout
+ android:layout_width="74dip"
+ android:layout_height="wrap_content"
+ android:layout_margin="4dip"
+ android:onClick="cgeoSearch"
+ android:orientation="vertical" >
+
+ <View
+ android:id="@+id/advanced_button"
+ style="@style/icon_mainscreen"
+ android:background="@drawable/main_search" />
+
+ <TextView
+ style="@style/icon_mainscreen_text"
+ android:text="@string/advanced_search_button" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="74dip"
+ android:layout_height="wrap_content"
+ android:layout_margin="4dip"
+ android:onClick="cgeoPoint"
+ android:orientation="vertical" >
+
+ <View
+ android:id="@+id/any_button"
+ style="@style/icon_mainscreen"
+ android:background="@drawable/main_any" />
+
+ <TextView
+ style="@style/icon_mainscreen_text"
+ android:text="@string/any_button" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="74dip"
+ android:layout_height="wrap_content"
+ android:layout_margin="4dip"
+ android:onClick="cgeoFilter"
+ android:orientation="vertical" >
+
+ <View
+ android:id="@+id/filter_button"
+ style="@style/icon_mainscreen"
+ android:background="@drawable/main_filter" />
+
+ <TextView
+ android:id="@+id/filter_button_title"
+ style="@style/icon_mainscreen_text"
+ android:text="@null" />
+ </LinearLayout>
+ </LinearLayout>
+ </LinearLayout>
+ <!-- ** -->
+
+ <RelativeLayout
+ android:id="@+id/helper"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_marginBottom="64dip"
+ android:layout_marginLeft="16dip"
+ android:layout_marginRight="16dip"
+ android:background="@drawable/helper_bcg"
+ android:visibility="gone" >
+
+ <ImageView
+ android:layout_width="32dip"
+ android:layout_height="32dip"
+ android:layout_alignParentLeft="true"
+ android:layout_gravity="center"
+ android:layout_margin="4dip"
+ android:gravity="center"
+ android:scaleType="center"
+ android:src="@drawable/actionbar_manual" />
+
+ <TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_gravity="center"
+ android:layout_marginLeft="34dip"
+ android:gravity="center"
+ android:padding="4dip"
+ android:text="@string/helper"
+ android:textColor="@color/text_icon"
+ android:textSize="14dip" />
+ </RelativeLayout>
+ <!-- ** -->
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_marginLeft="6dip"
+ android:layout_marginRight="6dip"
+ android:onClick="cgeoNavSettings"
+ android:orientation="vertical" >
+
+ <TextView
+ android:id="@+id/user_info"
+ style="@style/location_current"
+ android:text="@string/init_login_popup_working" />
+
+ <TextView
+ android:id="@+id/nav_location"
+ style="@style/location_current"
+ android:text="@string/loc_trying" />
+
+ <RelativeLayout
+ android:layout_width="fill_parent"
+ android:layout_height="16dip" >
+
+ <TextView
+ android:id="@+id/nav_type"
+ style="@style/location_current_type"
+ android:textIsSelectable="false" />
+
+ <TextView
+ android:id="@+id/nav_accuracy"
+ style="@style/location_current_accuracy"
+ android:textIsSelectable="false" />
+
+ <TextView
+ android:id="@+id/nav_satellites"
+ style="@style/location_current_satellites"
+ android:textIsSelectable="false" />
+ </RelativeLayout>
+ </LinearLayout>
+
+</RelativeLayout> \ No newline at end of file
diff --git a/main/res/layout/map_google.xml b/main/res/layout/map_google.xml
index af55cb2..c969d4f 100644
--- a/main/res/layout/map_google.xml
+++ b/main/res/layout/map_google.xml
@@ -2,8 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color" >
+ android:orientation="vertical">
<LinearLayout style="@style/action_bar">
<ImageView style="@style/action_bar_action"
android:onClick="goHome" />
diff --git a/main/res/layout/map_mapsforge.xml b/main/res/layout/map_mapsforge.xml
index f727814..97df488 100644
--- a/main/res/layout/map_mapsforge.xml
+++ b/main/res/layout/map_mapsforge.xml
@@ -2,8 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color" >
+ android:orientation="vertical">
<LinearLayout style="@style/action_bar">
<ImageView style="@style/action_bar_action"
android:onClick="goHome" />
diff --git a/main/res/layout/map_mapsforge_old.xml b/main/res/layout/map_mapsforge_old.xml
index 00ee46d..0246a95 100644
--- a/main/res/layout/map_mapsforge_old.xml
+++ b/main/res/layout/map_mapsforge_old.xml
@@ -2,8 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color" >
+ android:orientation="vertical">
<LinearLayout style="@style/action_bar">
<ImageView style="@style/action_bar_action"
android:onClick="goHome" />
diff --git a/main/res/layout/map_static.xml b/main/res/layout/map_static.xml
index 410ad3f..0e4190d 100644
--- a/main/res/layout/map_static.xml
+++ b/main/res/layout/map_static.xml
@@ -2,8 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color" >
+ android:orientation="vertical">
<LinearLayout style="@style/action_bar">
<ImageView style="@style/action_bar_action"
android:onClick="goHome" />
diff --git a/main/res/layout/mapfile_item.xml b/main/res/layout/mapfile_item.xml
index a024b81..c30315a 100644
--- a/main/res/layout/mapfile_item.xml
+++ b/main/res/layout/mapfile_item.xml
@@ -1,33 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/mapfile_item"
- android:layout_height="wrap_content"
- android:layout_width="fill_parent"
- android:layout_margin="3dip"
- android:paddingLeft="5dip"
- android:paddingRight="5dip"
- android:paddingBottom="7dip"
- android:paddingTop="7dip"
- android:orientation="vertical"
- android:background="?background_color" >
- <TextView android:id="@+id/mapfilepath"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:scrollHorizontally="true"
- android:textSize="12dip"
- android:gravity="right"
- android:lines="1"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textColor="?text_color_grey" />
- <TextView android:id="@+id/mapfilename"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:scrollHorizontally="true"
- android:textSize="22dip"
- android:gravity="left"
- android:lines="1"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textColor="?text_color" />
+ android:id="@+id/mapfile_item"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_margin="3dip"
+ android:background="?background_color"
+ android:orientation="vertical"
+ android:paddingBottom="7dip"
+ android:paddingLeft="5dip"
+ android:paddingRight="5dip"
+ android:paddingTop="7dip" >
+
+ <TextView
+ android:id="@+id/mapfilepath"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:ellipsize="marquee"
+ android:gravity="right"
+ android:lines="1"
+ android:scrollHorizontally="true"
+ android:singleLine="true"
+ android:textColor="?text_color_grey"
+ android:textIsSelectable="false"
+ android:textSize="12dip" />
+
+ <TextView
+ android:id="@+id/mapfilename"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:ellipsize="marquee"
+ android:gravity="left"
+ android:lines="1"
+ android:scrollHorizontally="true"
+ android:singleLine="true"
+ android:textColor="?text_color"
+ android:textIsSelectable="false"
+ android:textSize="22dip" />
+
</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/navigate.xml b/main/res/layout/navigate.xml
index 61cfe2a..2819f21 100644
--- a/main/res/layout/navigate.xml
+++ b/main/res/layout/navigate.xml
@@ -1,99 +1,133 @@
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color" >
- <LinearLayout style="@style/action_bar">
- <ImageView style="@style/action_bar_action"
- android:onClick="goHome" />
- <View style="@style/action_bar_separator" />
- <TextView style="@style/action_bar_title" />
- <View style="@style/action_bar_separator" />
- <ImageView style="@style/action_bar_action"
- android:src="@drawable/actionbar_manual"
- android:onClick="goManual" />
- </LinearLayout>
- <RelativeLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent" >
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical" >
+
+ <LinearLayout style="@style/action_bar" >
+
+ <ImageView
+ style="@style/action_bar_action"
+ android:onClick="goHome" />
+
+ <View style="@style/action_bar_separator" />
+
+ <TextView style="@style/action_bar_title" />
+
+ <View style="@style/action_bar_separator" />
+
+ <ImageView
+ style="@style/action_bar_action"
+ android:onClick="goManual"
+ android:src="@drawable/actionbar_manual" />
+ </LinearLayout>
+
+ <RelativeLayout
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent" >
+
<LinearLayout
- android:layout_width="fill_parent"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" >
+
+ <TextView
+ android:id="@+id/destination"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:textColor="?text_color"
+ android:textSize="14dip" />
+
+ <TextView
+ android:id="@+id/cacheinfo"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:orientation="vertical">
- <TextView android:id="@+id/destination"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:textSize="14dip"
- android:textColor="?text_color"/>
- <TextView android:id="@+id/cacheinfo"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:textSize="14dip"
- android:textColor="?text_color"/>
+ android:layout_gravity="center"
+ android:textColor="?text_color"
+ android:textSize="14dip" />
+
<RelativeLayout
- android:layout_width="fill_parent"
- android:layout_height="30dip" >
- <TextView android:id="@+id/heading"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="3dip"
- android:layout_alignParentLeft="true"
- android:layout_gravity="left"
- android:textSize="26dip"
- android:textColor="?text_color"
- android:text="@null" />
- <TextView android:id="@+id/distance"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="3dip"
- android:layout_alignParentRight="true"
- android:layout_gravity="right"
- android:textSize="26dip"
- android:textColor="?text_color"
- android:text="@null" />
- </RelativeLayout>
+ android:layout_width="fill_parent"
+ android:layout_height="30dip" >
+
+ <TextView
+ android:id="@+id/heading"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_gravity="left"
+ android:layout_marginLeft="3dip"
+ android:text="@null"
+ android:textColor="?text_color"
+ android:textSize="26dip" />
+
+ <TextView
+ android:id="@+id/distance"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_gravity="right"
+ android:layout_marginRight="3dip"
+ android:text="@null"
+ android:textColor="?text_color"
+ android:textSize="26dip" />
+ </RelativeLayout>
+ </LinearLayout>
+
+ <view
+ android:id="@+id/rose"
+ android:layout_width="fill_parent"
+ android:layout_height="295dip"
+ android:layout_centerInParent="true"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginBottom="1dip"
+ android:layout_marginLeft="1dip"
+ android:layout_marginRight="1dip"
+ android:layout_marginTop="6dip"
+ class="cgeo.geocaching.ui.CompassView"
+ android:gravity="center"
+ android:keepScreenOn="true"
+ android:minHeight="289dip"
+ android:minWidth="289dip"
+ android:padding="4dip" />
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_marginLeft="6dip"
+ android:layout_marginRight="6dip"
+ android:orientation="vertical" >
+
+ <TextView
+ android:id="@+id/nav_location"
+ style="@style/location_current"
+ android:text="@string/loc_trying" />
+
+ <RelativeLayout
+ android:layout_width="fill_parent"
+ android:layout_height="16dip" >
+
+ <TextView
+ android:id="@+id/nav_type"
+ style="@style/location_current_type"
+ android:textColor="?text_color_grey"
+ android:textIsSelectable="false" />
+
+ <TextView
+ android:id="@+id/nav_accuracy"
+ style="@style/location_current_accuracy"
+ android:textColor="?text_color_grey"
+ android:textIsSelectable="false" />
+
+ <TextView
+ android:id="@+id/nav_satellites"
+ style="@style/location_current_satellites"
+ android:textColor="?text_color_grey"
+ android:textIsSelectable="false" />
+ </RelativeLayout>
</LinearLayout>
- <view class="cgeo.geocaching.ui.CompassView"
- android:id="@+id/rose"
- android:layout_width="fill_parent"
- android:layout_height="295dip"
- android:layout_marginTop="6dip"
- android:layout_marginBottom="1dip"
- android:layout_marginRight="1dip"
- android:layout_marginLeft="1dip"
- android:layout_gravity="center_horizontal"
- android:layout_centerInParent="true"
- android:keepScreenOn="true"
- android:gravity="center"
- android:padding="4dip"
- android:minWidth="289dip"
- android:minHeight="289dip" />
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_marginRight="6dip"
- android:layout_marginLeft="6dip"
- android:orientation="vertical">
- <TextView android:id="@+id/nav_location"
- style="@style/location_current"
- android:text="@string/loc_trying" />
- <RelativeLayout
- android:layout_width="fill_parent"
- android:layout_height="16dip" >
- <TextView android:id="@+id/nav_type"
- style="@style/location_current_type"
- android:textColor="?text_color_grey" />
- <TextView android:id="@+id/nav_accuracy"
- style="@style/location_current_accuracy"
- android:textColor="?text_color_grey" />
- <TextView android:id="@+id/nav_satellites"
- style="@style/location_current_satellites"
- android:textColor="?text_color_grey" />
- </RelativeLayout>
- </LinearLayout>
- </RelativeLayout>
+ </RelativeLayout>
+
</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/point.xml b/main/res/layout/point.xml
index cb453e3..4fd020e 100644
--- a/main/res/layout/point.xml
+++ b/main/res/layout/point.xml
@@ -2,7 +2,6 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:background="?background_color"
android:orientation="vertical" >
<LinearLayout style="@style/action_bar" >
<ImageView
diff --git a/main/res/layout/popup.xml b/main/res/layout/popup.xml
index 201b9e6..1e4c762 100644
--- a/main/res/layout/popup.xml
+++ b/main/res/layout/popup.xml
@@ -1,70 +1,98 @@
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color_transparent" >
- <LinearLayout style="@style/action_bar">
- <TextView style="@style/action_bar_title" />
- <View style="@style/action_bar_separator" />
- <ImageView android:id="@+id/defaultNavigation"
- style="@style/action_bar_action"
- android:src="@drawable/actionbar_compass_dark"
- android:onClick="goDefaultNavigation"
- android:longClickable="true" />
- <View style="@style/action_bar_separator"
- android:id="@+id/separator"
- />
- <ImageView style="@style/action_bar_action"
- android:src="@drawable/actionbar_manual"
- android:onClick="goManual" />
- </LinearLayout>
- <ScrollView android:id="@+id/details_list_box"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:padding="4dip"
- android:orientation="vertical" >
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical" >
- <LinearLayout android:id="@+id/details_list"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical" >
- </LinearLayout>
- <Button style="@style/button_small" android:id="@+id/more_details" android:text="@string/popup_more"
- android:layout_width="fill_parent" android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"/>
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical" >
+
+ <LinearLayout style="@style/action_bar" >
+
+ <TextView style="@style/action_bar_title" />
+
+ <View style="@style/action_bar_separator" />
+
+ <ImageView
+ android:id="@+id/defaultNavigation"
+ style="@style/action_bar_action"
+ android:longClickable="true"
+ android:onClick="goDefaultNavigation"
+ android:src="@drawable/actionbar_compass_dark" />
+
+ <View
+ android:id="@+id/separator"
+ style="@style/action_bar_separator" />
+
+ <ImageView
+ style="@style/action_bar_action"
+ android:onClick="goManual"
+ android:src="@drawable/actionbar_manual" />
+ </LinearLayout>
+
+ <ScrollView
+ android:id="@+id/details_list_box"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"
+ android:padding="4dip" >
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" >
+
+ <LinearLayout
+ android:id="@+id/details_list"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" >
+ </LinearLayout>
+
+ <Button
+ android:id="@+id/more_details"
+ style="@style/button_small"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:text="@string/popup_more" />
+
<RelativeLayout style="@style/separator_horizontal_layout" >
+
<View style="@style/separator_horizontal" />
</RelativeLayout>
+
<RelativeLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content" >
+
+ <TextView
+ android:id="@+id/offline_text"
android:layout_width="fill_parent"
- android:layout_height="wrap_content" >
- <TextView android:id="@+id/offline_text"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginLeft="6dip"
- android:layout_marginRight="130dip"
- android:layout_alignParentLeft="true"
- android:layout_gravity="left"
- android:paddingRight="3dip"
- android:textSize="14dip"
- android:textColor="?text_color" />
- <Button style="@style/button_small"
- android:id="@+id/offline_refresh"
- android:visibility="gone"
- android:layout_width="60dip"
- android:layout_marginRight="71dip"
- android:layout_alignParentRight="true"
- android:text="@string/cache_offline_refresh" />
- <Button style="@style/button_small"
- android:id="@+id/offline_store"
- android:layout_width="60dip"
- android:layout_alignParentRight="true"
- android:text="@string/cache_offline_store" />
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_gravity="left"
+ android:layout_marginLeft="6dip"
+ android:layout_marginRight="130dip"
+ android:paddingRight="3dip"
+ android:textColor="?text_color"
+ android:textIsSelectable="false"
+ android:textSize="14dip" />
+
+ <Button
+ android:id="@+id/offline_refresh"
+ style="@style/button_small"
+ android:layout_width="60dip"
+ android:layout_alignParentRight="true"
+ android:layout_marginRight="71dip"
+ android:text="@string/cache_offline_refresh"
+ android:visibility="gone" />
+
+ <Button
+ android:id="@+id/offline_store"
+ style="@style/button_small"
+ android:layout_width="60dip"
+ android:layout_alignParentRight="true"
+ android:text="@string/cache_offline_store" />
</RelativeLayout>
- </LinearLayout>
- </ScrollView>
+ </LinearLayout>
+ </ScrollView>
+
</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/reset_cache_coords_dialog.xml b/main/res/layout/reset_cache_coords_dialog.xml
deleted file mode 100644
index 67ffda3..0000000
--- a/main/res/layout/reset_cache_coords_dialog.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="?background_color"
- android:orientation="vertical"
- android:padding="3dip" >
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="?text_color"
- android:text="@string/waypoint_reset_cache_coords_info" />
-
- <RadioGroup
- android:id="@+id/modify_cache_coordinates_group"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" >
-
- <RadioButton
- android:id="@+id/reset_cache_coordinates_local"
- style="@style/radiobutton_wrap"
- android:checked="true"
- android:text="@string/waypoint_localy_reset_cache_coords" />
-
- <RadioButton
- android:id="@+id/reset_cache_coordinates_local_and_remote"
- style="@style/radiobutton_wrap"
- android:text="@string/waypoint_reset_local_and_remote_cache_coords"
- android:visibility="gone" />
- </RadioGroup>
-
- <Button
- android:id="@+id/reset"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_margin="3dip"
- android:text="@string/waypoint_reset" />
-
-</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/search.xml b/main/res/layout/search.xml
index 5869962..45fb1e6 100644
--- a/main/res/layout/search.xml
+++ b/main/res/layout/search.xml
@@ -3,7 +3,6 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:background="?background_color"
android:orientation="vertical" >
<LinearLayout style="@style/action_bar" >
@@ -89,13 +88,13 @@
<TextView
style="@style/separator_horizontal_headline"
- android:text="@string/search_gc" />
+ android:text="@string/search_geo" />
</RelativeLayout>
<AutoCompleteTextView
android:id="@+id/geocode"
style="@style/edittext_full"
- android:hint="@string/search_gc"
+ android:hint="@string/search_geo"
android:imeOptions="actionGo"
android:inputType="textCapCharacters"
android:text="GC"
@@ -104,7 +103,7 @@
<Button
android:id="@+id/display_geocode"
style="@style/button_full"
- android:text="@string/search_gc_button" />
+ android:text="@string/search_geo_button" />
<!-- ** -->
<RelativeLayout style="@style/separator_horizontal_layout" >
diff --git a/main/res/layout/simple_dir_chooser.xml b/main/res/layout/simple_dir_chooser.xml
index 1b6b659..32f8c00 100644
--- a/main/res/layout/simple_dir_chooser.xml
+++ b/main/res/layout/simple_dir_chooser.xml
@@ -3,8 +3,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color">
+ android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
diff --git a/main/res/layout/simple_dir_item.xml b/main/res/layout/simple_dir_item.xml
index 6261127..e268943 100644
--- a/main/res/layout/simple_dir_item.xml
+++ b/main/res/layout/simple_dir_item.xml
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="horizontal"
- android:background="?background_color" >
- <CheckBox android:text=""
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:background="?background_color"
+ android:orientation="horizontal" >
+
+ <CheckBox
android:id="@+id/CheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:checked="false"/>
- <TextView
- android:id="@+id/TextView01"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:textStyle="bold"
- android:layout_marginTop="5dip"
- android:layout_marginLeft="5dip"
- android:textColor="?text_color"/>
-</LinearLayout>
+ android:checked="false"
+ android:text="" />
+
+ <TextView
+ android:id="@+id/TextView01"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="5dip"
+ android:layout_marginTop="5dip"
+ android:singleLine="true"
+ android:textColor="?text_color"
+ android:textIsSelectable="false"
+ android:textStyle="bold" />
+
+</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/simple_list_item_1.xml b/main/res/layout/simple_list_item_1.xml
index 039b0c1..4e8898d 100644
--- a/main/res/layout/simple_list_item_1.xml
+++ b/main/res/layout/simple_list_item_1.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2006 The Android Open Source Project
+<!--
+ Copyright (C) 2006 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -18,9 +19,9 @@
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
- android:paddingLeft="6dip"
android:minHeight="?android:attr/listPreferredItemHeight"
+ android:paddingLeft="6dip"
+ android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="?text_color"
-/>
+ android:textIsSelectable="false" />
diff --git a/main/res/layout/simple_way_point.xml b/main/res/layout/simple_way_point.xml
index a1b7f33..88f76e7 100644
--- a/main/res/layout/simple_way_point.xml
+++ b/main/res/layout/simple_way_point.xml
@@ -1,25 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/linearLayout1" android:layout_width="wrap_content"
- android:layout_height="wrap_content">
- <ImageView android:layout_width="wrap_content" android:src="@drawable/waypoint_waypoint"
- android:id="@+id/imageView1" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="10dp"></ImageView>
- <RelativeLayout android:layout_height="wrap_content"
- android:id="@+id/relativeLayout1" android:layout_width="match_parent">
- <TextView android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:id="@+id/simple_way_point_latitude" android:layout_width="wrap_content"
- android:layout_alignParentLeft="true" android:layout_alignParentTop="true"
- android:text="@string/latitude" android:layout_marginLeft="10dp"></TextView>
- <TextView android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:id="@+id/simple_way_point_longitude" android:layout_width="wrap_content"
- android:layout_below="@+id/simple_way_point_latitude" android:text="@string/longitude"
- android:layout_marginLeft="10dp"></TextView>
- <TextView android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:id="@+id/date" android:layout_width="wrap_content"
- android:layout_alignParentRight="true" android:layout_alignParentTop="true"
- android:layout_marginRight="10dp"></TextView>
- </RelativeLayout>
-</LinearLayout>
+ android:id="@+id/linearLayout1"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" >
+
+ <ImageView
+ android:id="@+id/imageView1"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_marginLeft="10dp"
+ android:src="@drawable/waypoint_waypoint" >
+ </ImageView>
+
+ <RelativeLayout
+ android:id="@+id/relativeLayout1"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" >
+
+ <TextView
+ android:id="@+id/simple_way_point_latitude"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentTop="true"
+ android:layout_marginLeft="10dp"
+ android:text="@string/latitude"
+ android:textAppearance="?android:attr/textAppearanceSmall" >
+ </TextView>
+
+ <TextView
+ android:id="@+id/simple_way_point_longitude"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/simple_way_point_latitude"
+ android:layout_marginLeft="10dp"
+ android:text="@string/longitude"
+ android:textAppearance="?android:attr/textAppearanceSmall" >
+ </TextView>
+
+ <TextView
+ android:id="@+id/date"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentTop="true"
+ android:layout_marginRight="10dp"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textIsSelectable="false" >
+ </TextView>
+ </RelativeLayout>
+
+</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/spoilers.xml b/main/res/layout/spoilers.xml
index 233972a..5513934 100644
--- a/main/res/layout/spoilers.xml
+++ b/main/res/layout/spoilers.xml
@@ -2,7 +2,6 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:background="?background_color"
android:orientation="vertical" >
<LinearLayout style="@style/action_bar" >
diff --git a/main/res/layout/status.xml b/main/res/layout/status.xml
index 6d9aba3..4b1d55f 100644
--- a/main/res/layout/status.xml
+++ b/main/res/layout/status.xml
@@ -1,22 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/status"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/status"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:background="@drawable/helper_bcg" >
- <ImageView android:id="@+id/status_icon"
+ android:background="@drawable/helper_bcg"
+ android:visibility="invisible" >
+
+ <ImageView
+ android:id="@+id/status_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_margin="4dip" />
- <TextView android:id="@+id/status_message"
+
+ <TextView
+ android:id="@+id/status_message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:layout_toRightOf="@id/status_icon"
android:layout_centerVertical="true"
+ android:layout_toRightOf="@id/status_icon"
android:gravity="center"
android:padding="4dip"
- android:textSize="14dip"
- android:textColor="@color/text_icon" />
+ android:textColor="@color/text_icon"
+ android:textIsSelectable="false"
+ android:textSize="14dip" />
+
</RelativeLayout> \ No newline at end of file
diff --git a/main/res/layout/touch.xml b/main/res/layout/touch.xml
index 0341e39..6a37726 100644
--- a/main/res/layout/touch.xml
+++ b/main/res/layout/touch.xml
@@ -2,8 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color" >
+ android:orientation="vertical">
<LinearLayout style="@style/action_bar">
<ImageView style="@style/action_bar_action"
android:onClick="goHome" />
@@ -48,6 +47,7 @@
android:hint="@string/log_new_log_text"
android:singleLine="false"
android:lines="5"
+ android:maxLength="4000"
android:inputType="textMultiLine|textCapSentences" />
<LinearLayout android:id="@+id/tweet_box"
android:layout_width="fill_parent"
diff --git a/main/res/layout/trackable_activity.xml b/main/res/layout/trackable_activity.xml
index fe61409..edc69e6 100644
--- a/main/res/layout/trackable_activity.xml
+++ b/main/res/layout/trackable_activity.xml
@@ -3,7 +3,6 @@
xmlns:app="http://schemas.android.com/apk/res/cgeo.geocaching"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:background="?background_color"
android:orientation="vertical" >
<LinearLayout style="@style/action_bar" >
diff --git a/main/res/layout/auth.xml b/main/res/layout/twitter_authorization_activity.xml
index ea06d9c..dadac5a 100644
--- a/main/res/layout/auth.xml
+++ b/main/res/layout/twitter_authorization_activity.xml
@@ -2,7 +2,6 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:background="?background_color"
android:orientation="vertical"
android:visibility="visible" >
diff --git a/main/res/layout/useful_apps.xml b/main/res/layout/useful_apps.xml
index 1d7aecd..b95a7c2 100644
--- a/main/res/layout/useful_apps.xml
+++ b/main/res/layout/useful_apps.xml
@@ -2,8 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color" >
+ android:orientation="vertical">
<LinearLayout style="@style/action_bar">
<ImageView style="@style/action_bar_action"
android:onClick="goHome" />
diff --git a/main/res/layout/useful_apps_item.xml b/main/res/layout/useful_apps_item.xml
index 7dcb777..5c8f6f0 100644
--- a/main/res/layout/useful_apps_item.xml
+++ b/main/res/layout/useful_apps_item.xml
@@ -12,7 +12,8 @@
<TextView
android:id="@+id/title"
- style="@style/separator_horizontal_headline" />
+ style="@style/separator_horizontal_headline"
+ android:textIsSelectable="true" />
</RelativeLayout>
<LinearLayout
@@ -41,6 +42,7 @@
android:padding="3dip"
android:textColor="?text_color"
android:textColorLink="?text_color_link"
+ android:textIsSelectable="false"
android:textSize="14dip" />
</LinearLayout>
diff --git a/main/res/layout/visit.xml b/main/res/layout/visit.xml
index d9243d7..fde4cd3 100644
--- a/main/res/layout/visit.xml
+++ b/main/res/layout/visit.xml
@@ -2,8 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color" >
+ android:orientation="vertical">
<LinearLayout style="@style/action_bar">
<ImageView style="@style/action_bar_action"
android:onClick="goHome" />
@@ -50,6 +49,7 @@
android:singleLine="false"
android:layout_height="wrap_content"
android:minLines="5"
+ android:maxLength="4000"
android:inputType="textMultiLine|textCapSentences"/>
<LinearLayout android:id="@+id/tweet_box"
android:layout_width="fill_parent"
diff --git a/main/res/layout/visit_trackable.xml b/main/res/layout/visit_trackable.xml
index b4750cf..360e553 100644
--- a/main/res/layout/visit_trackable.xml
+++ b/main/res/layout/visit_trackable.xml
@@ -1,50 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="5dip"
- android:paddingLeft="10dip"
- android:paddingRight="10dip"
- android:paddingBottom="10dip"
- android:orientation="horizontal" >
- <LinearLayout android:id="@+id/info"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="2"
- android:orientation="vertical" >
- <TextView android:id="@+id/name"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:gravity="left"
- android:lines="1"
- android:singleLine="true"
- android:scrollHorizontally="true"
- android:ellipsize="marquee"
- android:textSize="14dip"
- android:textColor="?text_color" />
- <TextView android:id="@+id/trackcode"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:gravity="left"
- android:lines="1"
- android:singleLine="true"
- android:scrollHorizontally="true"
- android:ellipsize="marquee"
- android:textSize="14dip"
- android:textColor="?text_color" />
- </LinearLayout>
- <TextView android:id="@+id/action"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:layout_gravity="right"
- android:gravity="right"
- android:lines="1"
- android:singleLine="true"
- android:scrollHorizontally="true"
- android:ellipsize="marquee"
- android:textSize="14dip"
- android:textColor="?text_color" />
-</LinearLayout>
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="5dip"
+ android:orientation="horizontal"
+ android:paddingBottom="10dip"
+ android:paddingLeft="10dip"
+ android:paddingRight="10dip" >
+
+ <LinearLayout
+ android:id="@+id/info"
+ android:layout_width="0dip"
+ android:layout_height="wrap_content"
+ android:layout_weight="2"
+ android:orientation="vertical" >
+
+ <TextView
+ android:id="@+id/name"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:ellipsize="marquee"
+ android:gravity="left"
+ android:lines="1"
+ android:scrollHorizontally="true"
+ android:singleLine="true"
+ android:textColor="?text_color"
+ android:textIsSelectable="false"
+ android:textSize="14dip" />
+
+ <TextView
+ android:id="@+id/trackcode"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:ellipsize="marquee"
+ android:gravity="left"
+ android:lines="1"
+ android:scrollHorizontally="true"
+ android:singleLine="true"
+ android:textColor="?text_color"
+ android:textIsSelectable="false"
+ android:textSize="14dip" />
+ </LinearLayout>
+
+ <TextView
+ android:id="@+id/action"
+ android:layout_width="0dip"
+ android:layout_height="wrap_content"
+ android:layout_gravity="right"
+ android:layout_weight="1"
+ android:ellipsize="marquee"
+ android:gravity="right"
+ android:lines="1"
+ android:scrollHorizontally="true"
+ android:singleLine="true"
+ android:textColor="?text_color"
+ android:textIsSelectable="false"
+ android:textSize="14dip" />
+
+</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/waypoint_popup.xml b/main/res/layout/waypoint_popup.xml
index 9e6911b..5feec43 100644
--- a/main/res/layout/waypoint_popup.xml
+++ b/main/res/layout/waypoint_popup.xml
@@ -2,8 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="?background_color_transparent" >
+ android:orientation="vertical">
<LinearLayout style="@style/action_bar">
<TextView style="@style/action_bar_title" />
<View style="@style/action_bar_separator" />
diff --git a/main/res/values-cs/strings.xml b/main/res/values-cs/strings.xml
index 52ebed5..dba7430 100644
--- a/main/res/values-cs/strings.xml
+++ b/main/res/values-cs/strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<resources>
+<resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name">c:geo</string>
<string name="app_name_compass">c:geo kompas</string>
@@ -33,6 +33,16 @@
<string name="ape">Keš projektu APE</string>
<string name="gchq">Ústředí Groundspeaku</string>
<string name="gps">Gps cache exhibit</string>
+ <string name="unknown">Neznámý typ</string>
+
+ <string name="cache_size_micro">Mikro</string>
+ <string name="cache_size_small">Malá</string>
+ <string name="cache_size_regular">Střední</string>
+ <string name="cache_size_large">Velká</string>
+ <string name="cache_size_other">Jiná</string>
+ <string name="cache_size_virtual">Virtuální</string>
+ <string name="cache_size_notchosen">Nezvoleno</string>
+ <string name="cache_size_unknown">Neznámá</string>
<!-- waypoints -->
<string name="wp_final">Cíl</string>
@@ -41,6 +51,7 @@
<string name="wp_pkg">parkoviště</string>
<string name="wp_trailhead">rozcestník</string>
<string name="wp_waypoint">referenční bod</string>
+ <string name="wp_original">původní souřadnice</string>
<!-- logs -->
<string name="log_found">Nález</string>
@@ -54,13 +65,18 @@
<string name="log_retrieved">Vytažen z keše</string>
<string name="log_placed">Umístěn</string>
<string name="log_grabbed">Převzat</string>
+ <string name="log_movecollection">Přesun do sbírky</string>
+ <string name="log_moveinventory">Přesun do inventáře</string>
<string name="log_maintained">Udržována</string>
<string name="log_maintenance_needed">Vyžaduje údržbu</string>
<string name="log_update">Změna souřadnic</string>
<string name="log_archived">Archivace</string>
+ <string name="log_unarchived">Odarchivována</string>
<string name="log_needs_archived">Vyžaduje archivaci</string>
<string name="log_discovered">Viděn</string>
- <string name="log_reviewer">Poznámka kontroly</string>
+ <string name="log_reviewer">Poznámka revírníka</string>
+ <string name="log_retractlisting">Vrácení listingu</string>
+ <string name="log_marked_missing">Označeno za ztracené</string>
<string name="log_tb_nothing">Beze změny</string>
<string name="log_tb_visit">Návštěva</string>
<string name="log_tb_drop">Nechat zde</string>
@@ -71,6 +87,7 @@
<string name="log_post">Odeslat log</string>
<string name="log_post_rate">Odeslat log a hlasovat</string>
<string name="log_post_no_rate">Odeslat log a nehlasovat</string>
+ <string name="log_post_not_possible">Načítám logovací stránku…</string>
<string name="log_add">Přidat</string>
<string name="log_rating">Hlasovat</string>
<string name="log_no_rating">Nehlasovat</string>
@@ -95,6 +112,15 @@
<string name="log_webcam">Vyfocen webkamerou</string>
<string name="log_new_log">Log</string>
<string name="log_new_log_text">Text logu</string>
+ <string name="log_announcement">Oznámení</string>
+ <string name="log_today">Dnes</string>
+ <string name="log_yesterday">Včera</string>
+ <string name="log_smilies">Smajlíci</string>
+
+ <!-- translation -->
+ <string name="translate_to_sys_lang">Překlad do jazyka %s</string>
+ <string name="translate_to_english">Překlad do angličtiny</string>
+ <string name="translate_length_warning">Překlad může selhat s velkým množstvím textu.</string>
<!-- errors -->
<string name="err_none">ok</string>
@@ -103,11 +129,16 @@
<string name="err_server">selhalo připojení k serveru Geocaching.com (server umřel?)</string>
<string name="err_login">nejsou uložené žádné přihlašovací údaje</string>
<string name="err_login_failed">promiňte, ale c:geo se nemůže přihlásit.</string>
+ <string name="err_login_failed_toast">c:geo se nemůže přihlásit. c:geo bude pracovat offline s uloženými kešemi. Zkontrolujte uživatelské jméno a heslo nebo povolte internetové připojení.</string>
<string name="err_unknown">nastala neznámá chyba</string>
<string name="err_comm">nastala neznámá chyba při komunikaci</string>
<string name="err_missing_auth">nevyplněné uživatelské jméno a/nebo heslo.</string>
<string name="err_wrong">uložené přihlašovací údaje jsou špatné</string>
+ <string name="err_maintenance">Web Geocaching.com je nedostupný z důvodu údržby. c:geo pracuje v režimu offline jen s uloženými kešemi.</string>
<string name="err_license">uživatel nepotvrdil souhlas s licenčním ujednáním serveru Geocaching.com</string>
+ <string name="err_unvalidated_account">Musíte nejdříve ověřit svůj účet na Geocaching.com</string>
+ <string name="err_unpublished">Vybraná keš nebyla publikována.</string>
+ <string name="err_premium_only">Tato keš je k dispozici pouze pro platící uživatele Geocaching.com.</string>
<string name="err_detail_open">c:geo nedokáže načíst detaily keše.</string>
<string name="err_detail_cache">c:geo nedokáže načíst detaily keše. Je to opravdu keš?</string>
<string name="err_detail_cache_find">c:geo nemůže najít keš</string>
@@ -115,9 +146,13 @@
<string name="err_detail_cache_find_any">c:geo nemůže najít žádnou keš.</string>
<string name="err_detail_cache_find_next">c:geo nemůže najít další keš.</string>
<string name="err_detail_cache_forgot">c:geo zapomnělo, jakou keš chcete zobrazit.</string>
- <string name="err_detail_cache_forgot_visit">c:geo zapomělo, jakou keš jste pohlížel.</string>
+ <string name="err_detail_google_maps_limit_reached">c:geo nemohlo stáhnout statické mapy. Možná byl překročen limit pro stahování google maps.</string>
<string name="err_detail_no_spoiler">c:geo nenašlo žádný obrázek pro tuto keš.</string>
<string name="err_detail_no_map_static">c:geo nenašlo žádnou statickou mapu pro tuto keš.</string>
+ <string name="err_detail_not_load_map_static">c:geo nemohlo načíst statické mapy.</string>
+ <string name="err_detail_still_working">Stále pracuji na jiném úkolu.</string>
+ <string name="err_watchlist_still_managing">Stále upravuji Váš watchlist.</string>
+ <string name="err_watchlist_failed">Změna tvého watchlistu selhala.</string>
<string name="err_application_no">c:geo nemůže najít žádnou použitelnou aplikaci.</string>
<string name="err_auth_initialize">c:geo nedokázalo zahájit autorizaci.</string>
<string name="err_auth_process">Autorizace selhala.</string>
@@ -127,10 +162,13 @@
<string name="err_dwld_details_failed">c:geo nemůže stáhnout detaily keše</string>
<string name="err_load_descr_failed">c:geo nemůže stáhnout popis keše.</string>
<string name="err_location_unknown">c:geo nezná souřadnice keše</string>
- <string name="err_tb_display">"C:geo nemůže zobrazit trackable. Je to opravdu trackable?</string>
- <string name="err_tb_details_open">C:geo nemůže otevřít podrobnosti k trackable.</string>
- <string name="err_tb_forgot_saw">C:geo zapomělo, který trackable jste prohlíželi.</string>
- <string name="err_tb_find">c:geo nemůže najít trackable.</string>
+ <string name="err_missing_device_name">Prosím zadejte název zařízení před registrací.</string>
+ <string name="err_favorite_failed">Označení oblíbenosti keše selhalo.</string>
+
+ <string name="err_tb_display">"C:geo nemůže zobrazit sledovatelný předmět. Je to opravdu sledovatelný předmět?</string>
+ <string name="err_tb_details_open">C:geo nemůže otevřít podrobnosti ke sledovatelnému předmětu.</string>
+ <string name="err_tb_forgot_saw">C:geo zapomělo, který sledovatelný předmět jste prohlíželi.</string>
+ <string name="err_tb_find">c:geo nemůže najít sledovatelný předmět.</string>
<string name="err_tb_find_that">c:geo nemůže najít toto trackable.</string>
<string name="err_waypoint_cache_unknown">c:geo neví k jeké keši chcete přidat bod trasy.</string>
<string name="err_waypoint_add_failed">c:geo nemůže přidat bod trasy.</string>
@@ -147,9 +185,10 @@
<string name="err_log_failed_server">c:geo nemohlo odeslat log, protože server neodpovídá.</string>
<string name="err_log_post_failed">c:geo nemohlo odeslat log.</string>
<string name="err_search_address_forgot">c:geo zapomělo adresu, kterou se pokoušíte najít.</string>
- <string name="err_parse_lat">c:geo nemůže dopočítat šířku.</string>
- <string name="err_parse_lon">c:geo nemůže dopočítat délku.</string>
+ <string name="err_parse_lat">c:geo nemůže dopočítat zeměpisnou šířku.</string>
+ <string name="err_parse_lon">c:geo nemůže dopočítat zeměpisnou délku.</string>
<string name="err_parse_dist">c:geo nemůže dopočítat vzdálenost.</string>
+ <string name="err_parse_lat_lon">c:geo nemůže dopočítat zeměpisnout šířku nebo délku.</string>
<string name="warn_save_nothing">není nic k uložení.</string>
<string name="warn_no_cache_coord">Není k dispozici žádná keš se souřadnicemi.</string>
<string name="warn_no_coordinates">Nezískány souřadnice</string>
@@ -162,11 +201,19 @@
<string name="warn_search_help_user">Zadejte jméno uživatele z Geocaching.com.</string>
<string name="warn_search_help_tb">Zadejte kód trackable. Například \"TB29QMZ\".</string>
<string name="warn_log_text_fill">prosím vyplňte nějaký text do logu.</string>
+ <string name="warn_load_images">c:geo nemohlo načíst obrázky.</string>
+ <string name="warn_invalid_mapfile">Vybraný soubor není platným souborem mapsforge verze 0.3.0.\nOffline nejsou k dispozici.</string>
+ <string name="warn_deprecated_mapfile">Používáte zastaralou verzi(0.2.4) mapsforge offline mapového souboru souboru 0.2.4 map file.\nZvažte stažení nové verze pro mapsforge 0.3.0 map.\nPodpora map pro verzi 0.2.4 bude ukončena příštím vydáním aplikace.</string>
+ <string name="warn_nonexistant_mapfile">Vybraný mapový soubor neexistuje.\nOffline mapy nejsou k dispozici.</string>
+ <string name="warn_rendertheme_missing">Téma pro mapu není k dispozici.</string>
+
<string name="info_log_posted">c:geo úspěšně zaslalo log.</string>
<string name="info_log_saved">c:geo úspěšně uložilo log.</string>
<string name="info_log_cleared">Log byl vyprázdněn.</string>
<string name="info_log_type_changed">Typ logu byl změněn!</string>
+ <string name="info_storing_static_maps">Zkouším uložit statické mapy</string>
+
<!-- location service -->
<string name="loc_last">poslední známá</string>
<string name="loc_net">Síť</string>
@@ -201,7 +248,10 @@
<string name="caches_downloading">Stahuji keše…\nETA:</string>
<string name="caches_eta_ltm">méně než minutu</string>
<plurals name="caches_eta_mins">
- <item quantity="other">minuty</item>
+ <item quantity="zero">minut</item>
+ <item quantity="one">minuta</item>
+ <item quantity="few">minuty</item>
+ <item quantity="other">minut</item>
</plurals>
<string name="caches_store_offline">Uložit pro offline</string>
<string name="caches_store_selected">Uložit vybrané</string>
@@ -215,7 +265,7 @@
<string name="caches_sort_size">Velikosti</string>
<string name="caches_sort_favorites">Oblíbenosti</string>
<string name="caches_sort_name">Jména</string>
- <string name="caches_sort_gccode">GC-kódu</string>
+ <string name="caches_sort_geocode">Geokódu</string>
<string name="caches_sort_rating">Hodnocení</string>
<string name="caches_sort_vote">Hlasů (vlastní hodnocení)</string>
<string name="caches_sort_inventory">Počtu položek v inventáři</string>
@@ -236,6 +286,7 @@
<string name="caches_drop_stored">Smazat uložené</string>
<string name="caches_drop_progress">Mažu keše</string>
<string name="caches_drop_all_and_list">Vymaž všechny a zruš seznam</string>
+ <string name="caches_delete_events">Vymaž proběhlé eventy</string>
<string name="caches_refresh_selected">Aktualizovat vybrané</string>
<string name="caches_refresh_all">Aktualizovat vše</string>
<string name="caches_move_selected">Přesuň vybrané</string>
@@ -253,16 +304,19 @@
<string name="caches_filter_track">Se sledovatelnými předměty</string>
<string name="caches_filter_clear">Vymaž filtry</string>
<string name="caches_filter_modified">S upravenými souřadnicemi</string>
+ <string name="caches_filter_origin">Původ</string>
<string name="caches_removing_from_history">Mažu z Historie…</string>
<!-- caches lists -->
<string name="list_menu">Seznam</string>
<string name="list_menu_create">Vytvoř nový seznam</string>
+ <string name="list_menu_all_lists">Všechny keše</string>
<string name="list_menu_drop">Zahoď aktuální seznam</string>
<string name="list_menu_change">Změň seznam</string>
<string name="list_menu_rename">Přejmenuj aktuální seznam</string>
<string name="list_title">Vyber seznam</string>
<string name="list_inbox">Uložené</string>
+ <string name="list_all_lists">Všechny keše</string>
<string name="list_dialog_create_title">Nový seznam</string>
<string name="list_dialog_create">Vytvoř</string>
<string name="list_dialog_cancel">Zruš</string>
@@ -286,6 +340,10 @@
<!-- init -->
<string name="init_geocaching">Geocaching.com</string>
+ <string name="init_oc">opencaching.de</string>
+ <string name="init_oc_activate">Aktivuj opencaching.de na živé mapě a v hledání</string>
+ <string name="init_oc_username_description">Vložte svůj přístup na opencaching.de pro povolení možnosti označovat nálezy.</string>
+ <string name="init_oc_username">Vložte své uživatelské jméno</string>
<string name="init_gcvote">gcvote.com</string>
<string name="init_twitter">Twitter</string>
<string name="init_username">Uživatelské jméno</string>
@@ -309,6 +367,7 @@
<string name="init_signature_template_datetime">Datum a čas</string>
<string name="init_signature_template_user">Uživatel</string>
<string name="init_signature_template_number">Číslo (pořadí nálezu)</string>
+ <string name="init_signature_template_owner">Vlastník</string>
<string name="init_details">Detaily keše</string>
<string name="init_ratingwanted">Načti hodnocení keše z GCvote.com</string>
<string name="init_elevationwanted">Načti výšková data ke keši</string>
@@ -330,6 +389,7 @@
<string name="init_save_log_img">Ulož obrázky z logů</string>
<string name="init_units">Používat imperiální jednotky vzdálenosti</string>
<string name="init_log_offline">Offline logování\n(Při logování nezobrazovat online logovací obrazovku a neodesílat log na server)</string>
+ <string name="init_choose_list">Zeptat se na seznam pro uložení keše</string>
<string name="init_livelist">Zobrazovat směr v seznamu keší</string>
<string name="init_altitude">Výšková korekce</string>
<string name="init_altitude_description">Pokud Vaše GPS špatně počítá výšku, můžete ji korigovat zde. Stačí zadat kladné či záporné číslo v metrech.</string>
@@ -352,7 +412,13 @@
<string name="init_mapsources">Zdroje map</string>
<string name="init_mapsources_description">Zde můžete vybrat zdroj map. Alternativou ke Google maps jsou různé typy OpenStreetMap, jakož i offline mapové podklady (Více viz na <a href="http://code.google.com/p/mapsforge/">http://code.google.com/p/mapsforge/</a>).</string>
<string name="init_mapsource_select">Vyber zdroj mapy</string>
+ <string name="init_map_directory_description">Složka s offline mapami</string>
+ <string name="init_gpx_exportdir">Složka pro GPX Export</string>
+ <string name="init_gpx_importdir">Složka pro GPX Import</string>
+ <string name="init_gpx_exportdir_description">Zde můžete vybrat složku pro GPX exporty.</string>
+ <string name="init_gpx_importdir_description">Zde můžete vybrat složku pro GPX importy.</string>
<string name="init_maptrail">Zobrazuj trasu na mapě</string>
+ <string name="init_share_after_export">Zobrazuj nabídku pro sdílení po GPX exportu</string>
<string name="init_trackautovisit">Nastav sledovatelné předměty na \"Návštěva\" jako výchozí.</string>
<string name="init_sigautoinsert">Automaticky vkládej podpis</string>
<string name="init_loaddirectionimg">V případě potřeby stáhni směrový obrázek (jen Basic Member)</string>
@@ -366,7 +432,22 @@
<string name="init_dbonsdcard_title">Umístění databáze</string>
<string name="init_dbonsdcard_note">Databáze c:geo může být umístěna na SD kartě. Ušetříte tím část interní paměti, avšak za cenu případného snížení rychlosti aplikace. Bez SD karty aplikace nebude následně fungovat.</string>
<string name="init_dbonsdcard">Databáze na SD kartě</string>
+ <string name="init_dbmove_dbmove">Přesouvám databázi</string>
+ <string name="init_dbmove_running">Přesouvám databázi</string>
+ <string name="init_dbmove_success">Databáze byla úspěšně přesunuta.</string>
+ <string name="init_dbmove_failed">Přesun databáze se nezdařil.</string>
+ <string name="init_plain_logs">Zobrazuj logy s barvami</string>
+ <string name="init_use_native_ua">Tvářit se jako webový prohlížeč. Řeší problémy v některých sítích.</string>
+ <string name="init_rendertheme_folder">Složka s tématy map (nepovinné)</string>
+
+ <!-- map sources -->
+ <string name="map_source_google_map">Google: Mapa</string>
+ <string name="map_source_google_satellite">Google: Satelitní</string>
+ <string name="map_source_osm_mapnik">OSM: Mapnik</string>
+ <string name="map_source_osm_cyclemap">OSM: Cyclemap</string>
+ <string name="map_source_osm_offline">OSM: Offline</string>
+ <string name="init_sendToCgeo">Send to c:geo</string>
<string name="init_sendToCgeo_name">Jméno vašeho zařízení:</string>
<string name="init_sendToCgeo_description"><b>Send2cgeo</b> umožnuje stahování keší pomocí speciálního pluginu pro Firefox a Chrome. Před registrací si přečtěte <a href="http://send2.cgeo.org/">http://send2.cgeo.org/</a>. Registraci proveďte pouze pokud potřebujete send2cgeo. c:geo bude normálně fungovat i bez registrace.</string>
<string name="init_sendToCgeo_register">Požádat o registraci</string>
@@ -417,9 +498,10 @@
<string name="cache_log_images_title">Obrázky z logů</string>
<string name="cache_log_image_default_title">Fotografie</string>
<string name="cache_personal_note">Osobní poznámka</string>
+ <string name="cache_personal_note_edit">Upravit</string>
<string name="cache_description">Popis</string>
<string name="cache_description_long">Dlouhý popis</string>
- <string name="cache_description_table_note">Popis obsahuje tabulkové formátování, které je pravděpodobně nutné prohlížet na geocaching.com, aby bylo správně zobrazené.</string>
+ <string name="cache_description_table_note">Popis obsahuje tabulkové formátování, které je pravděpodobně nutné prohlížet na %s, aby bylo správně zobrazené.</string>
<string name="cache_watchlist_on">Tato je ve vašem watchlistu.</string>
<string name="cache_watchlist_not_on">Tato keš není ve vašem watchlistu.</string>
<string name="cache_watchlist_add">Přidej na Watchlist</string>
@@ -428,6 +510,10 @@
<string name="cache_favpoint_not_on">Tato keš nepatří mezi vaše oblíbené.</string>
<string name="cache_favpoint_add">Přidat k oblíbeným</string>
<string name="cache_favpoint_remove">Odstranit z oblíbených</string>
+ <string name="cache_list_text">Seznam</string>
+ <string name="cache_list_change">Přesun</string>
+ <string name="cache_list_unknown">Není v seznamu</string>
+ <string name="cache_images">Obrázky</string>
<string name="cache_waypoints">Body trasy</string>
<plurals name="waypoints">
@@ -436,47 +522,111 @@
</plurals>
<string name="cache_waypoints_add">Přidat bod</string>
- <string name="cache_hint">nápověda</string>
- <string name="cache_logs">logbook</string>
+ <string name="cache_hint">Nápověda</string>
+ <string name="cache_logs">Návštěvní kniha</string>
+ <string name="cache_logsfriends">Návštěvní kniha (Přátelé)</string>
<string name="cache_dialog_loading_details">Načítám detaily keše…</string>
- <string name="cache_dialog_offline_save_title">offline</string>
+ <string name="cache_dialog_loading_details_status_loadpage">Načítám stránku</string>
+ <string name="cache_dialog_loading_details_status_details">Zpracovávám detaily</string>
+ <string name="cache_dialog_loading_details_status_spoilers">Nahrávám obrázky</string>
+ <string name="cache_dialog_loading_details_status_logs">Náhrávám návštěvy</string>
+ <string name="cache_dialog_loading_details_status_waypoints">Zpracovávám body trasy</string>
+ <string name="cache_dialog_loading_details_status_gcvote">Nahrávám hodnocení z GCVote</string>
+ <string name="cache_dialog_loading_details_status_elevation">Nahrávám výšková data</string>
+ <string name="cache_dialog_loading_details_status_cache">Zapisuji data do mezipaměti</string>
+ <string name="cache_dialog_loading_details_status_render">Vykresluji pohled</string>
+ <string name="cache_dialog_offline_save_title">Offline</string>
<string name="cache_dialog_offline_save_message">Ukládám keš pro použití offline…</string>
- <string name="cache_dialog_offline_drop_title">offline</string>
+ <string name="cache_dialog_offline_drop_title">Offline</string>
<string name="cache_dialog_offline_drop_message">Odstraňuji keš z paměti zařízení…</string>
<string name="cache_dialog_refresh_title">Aktualizace</string>
<string name="cache_dialog_refresh_message">Aktualizuji detaily keše…</string>
+ <string name="cache_dialog_watchlist_add_title">Seznam sledovaných</string>
+ <string name="cache_dialog_watchlist_add_message">Přidávám keš na seznam sledovaných…</string>
+ <string name="cache_dialog_watchlist_remove_title">Seznam sledovaných</string>
+ <string name="cache_dialog_watchlist_remove_message">Odstraňuji keš ze seznamu sledovaných…</string>
+ <string name="cache_dialog_favourite_add_title">Oblíbené</string>
+ <string name="cache_dialog_favourite_add_message">Přidávám keš k oblíbených…</string>
+ <string name="cache_dialog_favourite_remove_title">Oblíbené</string>
+ <string name="cache_dialog_favourite_remove_message">Odstraňuji keš z oblíbených…</string>
<string name="cache_menu_navigate">Navigovat</string>
+ <string name="cache_menu_navigation_drive">Navigace (Řízení)</string>
+ <string name="cache_menu_navigation_walk">Navigace (Chůze)</string>
+ <string name="cache_menu_maps_directions">Směry podle Google Maps</string>
<string name="cache_menu_radar">Radar</string>
<string name="cache_menu_map">Zobrazit na mapě</string>
- <string name="cache_menu_map_ext">Zobrazit na jiné mapě</string>
<string name="cache_menu_map_static">Statické mapy</string>
+ <string name="cache_menu_download_map_static">Stáhnout statické mapy</string>
+ <string name="cache_menu_rmaps">Rmaps</string>
+ <string name="cache_menu_map_ext">Zobrazit na jiné mapě</string>
+ <string name="cache_menu_streetview">Street View</string>
<string name="cache_menu_browser">Otevřít v prohlížečí</string>
- <string name="cache_menu_visit">zapsat návštěvu</string>
+ <string name="cache_menu_visit">Zapsat návštěvu</string>
+ <string name="cache_menu_visit_offline">Zapsat návštěvu (offline)</string>
<string name="cache_menu_spoilers">obrázky</string>
<string name="cache_menu_around">Keš v okolí</string>
- <string name="cache_menu_event">přidat do kalendáře</string>
- <string name="cache_menu_details">detaily</string>
- <string name="cache_status">status</string>
- <string name="cache_status_offline_log">připravený log</string>
- <string name="cache_status_found">nalezena</string>
- <string name="cache_status_archived">archivována</string>
- <string name="cache_status_disabled">zrušena</string>
- <string name="cache_status_premium">pouze pro platící uživatele</string>
- <string name="cache_geocode">gc kód</string>
- <string name="cache_name">název</string>
- <string name="cache_type">typ</string>
- <string name="cache_distance">vzdálenost</string>
- <string name="cache_difficulty">obtížnost</string>
- <string name="cache_terrain">terén</string>
- <string name="cache_rating">hodnocení</string>
- <string name="cache_owner">zakladatel</string>
- <string name="cache_hidden">skryta</string>
- <string name="cache_event">datum</string>
- <string name="cache_location">místo</string>
- <string name="cache_coordinates">souřadnice</string>
- <string name="cache_spoiler_images_title">Spoiler images</string>
- <string name="cache_spoiler_images_loading">Loading spoiler images…</string>
+ <string name="cache_menu_event">Přidat do kalendáře</string>
+ <string name="cache_menu_details">Detaily</string>
+ <string name="cache_menu_share">Sdílet cache</string>
+ <string name="cache_menu_move_list">Přesuň do jiného seznamu</string>
+ <string name="cache_menu_gcc">GCC</string>
+ <string name="cache_menu_whereyougo">WhereYouGo</string>
+ <string name="cache_menu_oruxmaps">OruxMaps</string>
+ <string name="cache_menu_cachebeacon">Cache Beacon</string>
+ <string name="cache_status">Status</string>
+ <string name="cache_status_offline_log">Připravený log</string>
+ <string name="cache_status_found">Nalezena</string>
+ <string name="cache_status_archived">Archivována</string>
+ <string name="cache_status_disabled">Zrušena</string>
+ <string name="cache_status_premium">Pouze pro platící uživatele</string>
+ <string name="cache_status_not_premium">Přístupná všem uživatelům</string>
+ <string name="cache_geocode">GC kód</string>
+ <string name="cache_name">Název</string>
+ <string name="cache_type">Typ</string>
+ <string name="cache_size">Velikost</string>
+ <string name="cache_distance">Vzdálenost</string>
+ <string name="cache_difficulty">Obtížnost</string>
+ <string name="cache_terrain">Terén</string>
+ <string name="cache_rating">Hodnocení</string>
+ <string name="cache_own_rating">Vlastní hodnocení</string>
+ <string name="cache_rating_of">z</string>
+ <string name="cache_favourite">Oblíbená</string>
+ <string name="cache_owner">Zakladatel</string>
+ <string name="cache_hidden">Skryta</string>
+ <string name="cache_event">Datum</string>
+ <string name="cache_location">Místo</string>
+ <string name="cache_coordinates">Souřadnice</string>
+ <string name="cache_coordinates_original">Původní souřadnice</string>
+ <string name="cache_spoiler_images_title">Obrázky s nápovědou</string>
+ <string name="cache_spoiler_images_loading">Načítám obrázky s nápovědou…</string>
+ <string name="cache_images_title">Obrázky</string>
+ <string name="cache_images_loading">Načítám obrázky…</string>
+ <string name="cache_log_types">Typy záznamů</string>
+ <string name="cache_coordinates_no">Tato keš nemá souřadnice.</string>
+ <string name="cache_clear_history">Vymazat historii</string>
+ <string name="cache_remove_from_history">Vymazat z historie</string>
+ <string name="cache_license">Licence</string>
+ <string name="cache_image">Obrázek</string>
+ <string name="cache_image_open_file">Otevřít jako soubor</string>
+ <string name="cache_image_open_browser">Otevřít v prohlížeči</string>
+ <string name="cache_share_field">Sdílet</string>
+ <string name="cache_time_full_hours">hodin</string>
+ <string name="cache_listed_on">Zveřejněno na %s</string>
+
+ <!-- editor dialog -->
+ <string name="editor_save">Uložit</string>
+ <!-- file list base -->
+ <string name="file_searching_in">Hledám soubory\nv</string>
+ <string name="file_searching_sdcard_in">Žádné soubory ve výchozích složkách:\n%1$s\n\nHledám soubory na celé SD kartě:\n</string>
+ <string name="file_list_no_files">c:geo nenašlo žádné vhodné soubory.</string>
+ <string name="file_searching">Hledám odpovídající soubory</string>
+ <string name="file_title_searching">Hledám</string>
+
+ <!-- simple_dir_chooser -->
+ <string name="simple_dir_chooser_title">Zvolte složku</string>
+ <string name="simple_dir_chooser_current_path">Cesta:</string>
+
<!-- gpx -->
<string name="gpx_import_loading_caches">nahrávání keší z .gpx souboru</string>
<string name="gpx_import_loading_waypoints">Načítám soubor s waypointy</string>
@@ -493,6 +643,8 @@
<string name="gpx_import_error_unexpected">Neočekávaná chyba</string>
<string name="gpx_import_confirm">Chcete nahrát GPX soubor do c:geo?</string>
<string name="gpx_import_canceled">GPX import byl zrušen</string>
+ <string name="gpx_import_delete_title">Smazat soubor</string>
+ <string name="gpx_import_delete_message">Chcete smazat %s?</string>
<!-- map file select -->
<string name="map_file_select_title">Vyber mapový soubor</string>
@@ -504,9 +656,11 @@
<string name="web_downloaded">Staženo</string>
<!-- popup -->
- <string name="popup_more">více detailů</string>
+ <string name="popup_more">Více detailů</string>
<!-- waypoint -->
+ <string name="waypoint">Bod trasy</string>
+ <string name="waypoint_cache_coordinates">Souřadnice keše</string>
<string name="waypoint_custom">vlastní</string>
<string name="waypoint_my_coordinates">Aktuální poloha</string>
<string name="waypoint_bearing">Směr</string>
@@ -514,25 +668,44 @@
<string name="waypoint_name">Název</string>
<string name="waypoint_edit">Upravit</string>
<string name="waypoint_delete">Smazat</string>
- <string name="waypoint_edit_title">Úprava waypointu</string>
+ <string name="waypoint_edit_title">Úprava bodu trasy</string>
<string name="waypoint_add_title">Nový bod trasy</string>
<string name="waypoint_note">Poznámka</string>
<string name="waypoint_save">Uložit</string>
<string name="waypoint_loading">Načítání bodu trasy…</string>
- <string name="waypoint_set_as_cache_coords">Nastavit jako souřadnice keše</string>
- <string name="waypoint_reset_cache_coords">Obnovit původní souřadnice keše</string>
+ <string name="waypoint_do_not_touch_cache_coordinates">Neměnit souřadnice keše</string>
+ <string name="waypoint_set_as_cache_coords">Nastavit jako souřadnice keše v c:geo</string>
+ <string name="waypoint_save_and_modify_on_website">Nastavit jako souřadnice keše v c:geo a na webu</string>
+ <string name="waypoint_reset_cache_coords">Obnovit původní souřadnice keše v c:geo</string>
<string name="waypoint_coordinates_has_been_reset_on_website">Souřadnice keše byly obnoveny na webu.</string>
<string name="waypoint_coordinates_being_reset_on_website">Souřadnice keše se obnovují na webu.</string>
- <string name="waypoint_reset_cache_coords_info">Možnosti obnovy</string>
<string name="waypoint_reset">Obnova</string>
<string name="waypoint_localy_reset_cache_coords">Obnovit souřadnice keše v zařízení</string>
+ <string name="waypoint_reset_local_and_remote_cache_coords">Obnovit původní souřadnice v c:geo a na webu</string>
+ <string name="waypoint_being_saved">Bod trasy se ukládá…</string>
<string name="waypoint_coordinates_couldnt_be_modified_on_website">Souřadnice keše nemohou být změněny na webu.</string>
<string name="waypoint_coordinates_upload_error">Při nahrávání souřadnic na web se vyskytla chyba.</string>
<string name="waypoint_coordinates_uploading_to_website">Nahrávám %s na web</string>
- <string name="waypoint_coordinates_reseting_on_website">Obnovuji původní souřadnice keše na webu.</string>
<string name="waypoint_coordinates_has_been_modified_on_website">Souřadnice keše na webu byly změněny na %s.</string>
- <string name="waypoint_coordinates_has_been_set_as_cache_coordinates">Souřadnice keše byly v zařízení změněny na: %s.</string>
+ <string name="waypoint_done">Hotovo</string>
+ <string name="waypoint_duplicate">Zdvojit</string>
+ <string name="waypoint_copy_of">Kopie</string>
+
+ <string name="search_history">Historie</string>
+ <string name="search_history_empty">Žádný předchozí cíl</string>
+ <string name="search_remove_destination">Cíl smazán</string>
+ <string name="search_clear_history">Vymazat historii</string>
+ <string name="search_history_cleared">Historie vymazána</string>
+ <string name="waypoint_coordinate_formats_plain">Prostý</string>
+
+ <!-- distance units -->
+ <string name="unit_m">m (metry)</string>
+ <string name="unit_km">km (kilometry)</string>
+ <string name="unit_ft">ft (stopy)</string>
+ <string name="unit_yd">yd (yardy)</string>
+ <string name="unit_mi">mi (míle)</string>
+
<!-- visit -->
<string name="visit_tweet">informovat o nálezu na twitteru</string>
@@ -540,20 +713,37 @@
<string name="map_map">Mapa</string>
<string name="map_live">Aktivní mapa</string>
<string name="map_view_map">Vybrat typ mapy</string>
+ <string name="map_modes">Režimy mapy</string>
<string name="map_trail_show">Zobraziy záznam trasy</string>
<string name="map_trail_hide">Skrýt záznam trasy</string>
+ <string name="map_circles_show">Zobraz kruhy</string>
+ <string name="map_circles_hide">Schovej kruhy</string>
+ <string name="map_theme_builtin">Výchozí</string>
+ <string name="map_theme_select">Vyber téma mapy</string>
<string name="map_live_enable">Povolit aktivní mapu</string>
<string name="map_live_disable">Zakázat aktivní mapu</string>
<string name="map_static_title">Statické mapy</string>
<string name="map_static_loading">Načítání statických map…</string>
+ <string name="map_token_err">Protože c:geo může stáhnout jen částečná data, souřadnice keší nemusí být přesné.</string>
+ <string name="map_as_list">Zobraz jako seznam</string>
+ <string name="map_strategy">Strategie</string>
+ <string name="map_strategy_title">Strategie aktivní mapy</string>
+ <string name="map_strategy_fastest">Nejrychlejší</string>
+ <string name="map_strategy_fast">Rychlá</string>
+ <string name="map_strategy_auto">Závislá na rychlosti</string>
+ <string name="map_strategy_detailed">Detailní</string>
+ <string name="live_map_notification">Na nové aktivní mapě nemusí být souřadnice vždy přesné. Pravděpodobně nepřesné souřadnice jsou označeny oranžovým kruhem.\nOtevření detailů keše nebo uložení pro offline použití získá vždy přesné souřadnice.\n\nVíce informací o všech změnách lze najít na stránce \"O c:geo\" v aplikaci.</string>
+ <string name="live_map_note_dontshow">Příště nezobrazovat</string>
<!-- search -->
+ <string name="search_bar_hint">Hledej kešky</string>
+ <string name="search_bar_desc">Keše (GC-kód, klíčové slovo), Sledovatelné předměty (TB-kód)</string>
<string name="search_coordinates">Souřadnice</string>
<string name="search_coordinates_button">Hledat podle souřadnic</string>
<string name="search_address">Adresa</string>
<string name="search_address_button">Hledat podle adresy</string>
- <string name="search_gc">Geokód</string>
- <string name="search_gc_button">Hledat podle geokódu</string>
+ <string name="search_geo">Geokód</string>
+ <string name="search_geo_button">Hledat podle geokódu</string>
<string name="search_kw">Klíčová slova</string>
<string name="search_kw_prefill">Klíčové slovo</string>
<string name="search_kw_button">Hledat dle klíčového slova</string>
@@ -568,11 +758,12 @@
<string name="search_tb_button">Vyhledávání trackable</string>
<string name="search_destination">Cíl</string>
<string name="search_direction_rel">Od této polohy</string>
- <string name="search_address_started">vyhledávání míst</string>
- <string name="search_address_result">místa nalezena</string>
+ <string name="search_address_started">Vyhledávání míst</string>
+ <string name="search_address_result">Nalezená místa</string>
+ <string name="search_own_caches">Hledej moje keše</string>
<!-- trackable -->
- <string name="trackable">Trackable</string>
+ <string name="trackable">Sledovatelný předmět</string>
<string name="trackable_details_loading">Načítání detailů…</string>
<string name="trackable_log_touch">Hlášení zahlédnutí</string>
<string name="trackable_browser_open">Otevřít v prohlížeči</string>
@@ -584,11 +775,22 @@
<string name="trackable_type">Typ</string>
<string name="trackable_owner">Vlastník</string>
<string name="trackable_spotted">Viděn</string>
+ <string name="trackable_spotted_in_cache">V</string>
+ <string name="trackable_spotted_at_user">V rukou</string>
+ <string name="trackable_spotted_unknown_location">Neznámé umístění</string>
+ <string name="trackable_spotted_owner">V rukou vlastníka</string>
<string name="trackable_origin">Původ</string>
<string name="trackable_unknown">Neznámý</string>
<string name="trackable_released">Vypuštění</string>
<string name="trackable_distance">Nacestoval</string>
<string name="trackable_touch">Dotyk</string>
+
+ <!-- user -->
+ <string name="user_menu_title">O</string>
+ <string name="user_menu_view_hidden">Skryté keše</string>
+ <string name="user_menu_view_found">Nalezené keše</string>
+ <string name="user_menu_open_browser">Otevřít profil v prohlížeči</string>
+ <string name="user_menu_send_message">Odeslat zprávu</string>
<!-- navigation -->
<string name="navigation">Navigace</string>
@@ -597,19 +799,262 @@
<string name="use_compass">Použít kompas</string>
<string name="destination_select">Vyberte cíl</string>
<string name="destination_set">Cíl nastaven</string>
+ <string name="navigation_direct_navigation">Přímá navigace</string>
+ <string name="navigation_target">Cíl</string>
<!-- license -->
<string name="license">Licence</string>
- <string name="license_show">zobrazit licenci</string>
- <string name="license_dismiss">zamítnutí</string>
+ <string name="license_show">Zobrazit licenci</string>
+ <string name="license_dismiss">Zamítnout</string>
+
+ <!-- helpers -->
+ <string name="helper_manual_title">Manuál</string>
+ <string name="helper_manual_description">Rozsáhlý manuál k c:geo obsahuje popis všech možností aplikace (včetně skrytých).</string>
+ <string name="helper_calendar_title">c:geo modul kalendáře</string>
+ <string name="helper_calendar_missing">c:geo modul kalendáře není nainstalován.</string>
+ <string name="helper_calendar_description">Umožňuje exportovat keše typu událost přímo do kalendáře.</string>
+ <string name="helper_locus_title">Locus</string>
+ <string name="helper_locus_description">Jednoduše použitelná aplikace ke zobrazování vektorových i rastrových map, včetně možnosti jejich stažení(jen rastrové) pro offline použití. Dále umožňuje nahrávání trasy, práci s body zájmu a dalšími užitečnými funkcemi.</string>
+ <string name="helper_gpsstatus_title">GPS Status</string>
+ <string name="helper_gpsstatus_description">Můžete používat radar z této aplikace v c:geo. Dále nabízí mnoho GPS informací.</string>
+ <string name="helper_bluetoothgps_title">Bluetooth GPS</string>
+ <string name="helper_bluetoothgps_description">Umožňuje používat externí GPS přijímač k získání přesnější polohy a také může ušetřit energii v baterii.</string>
+ <string name="helper_barcode_title">Barcode Scanner</string>
+ <string name="helper_barcode_description">Existují skripty pro Greasemonkey and weby které zobrazují geokód jako čárový kód. S touto aplikací může c:geo přečíst tyto kódy rovnou z obrazovky počítače.</string>
+
+ <!-- add-ons -->
+ <string name="addon_missing_title">Chybějící modul</string>
+ <string name="addon_download_prompt">Stáhnout teď z Google Play.</string>
+
+ <!-- export -->
+ <string name="export">Export</string>
+ <string name="export_exportedto">exportováno do</string>
+ <string name="export_failed">Export selhal</string>
+ <string name="export_fieldnotes">Poznámky z terénu</string>
+ <string name="export_fieldnotes_info">Poznámky z terénu budou uloženy do /sdcard/field-notes s názvem souboru podle aktuálního data a času.</string>
+ <string name="export_fieldnotes_upload">Nahrát na geocaching.com</string>
+ <string name="export_fieldnotes_uploading">Nahrávám…</string>
+ <string name="export_fieldnotes_upload_success">Nahrání na geocaching.com bylo úspěšné</string>
+ <string name="export_fieldnotes_onlynew">Jen od předchozího nahrání</string>
+ <string name="export_fieldnotes_creating">Vytvářím soubor poznámek z terénu…</string>
+ <string name="export_gpx">GPX</string>
+ <string name="export_gpx_info">GPX soubor bude exportován do %1$s s názvem souboru podle aktuálního data a času.</string>
+ <string name="export_gpx_to">Odeslat GPX</string>
+
+ <!-- attributes (permissions -> allowed, not allowed) -->
+ <string name="attribute_dogs_yes">Vstup se psy povolen</string>
+ <string name="attribute_dogs_no">Vstup se psy zakázán</string>
+ <string name="attribute_bicycles_yes">Jízdní kola povolena</string>
+ <string name="attribute_bicycles_no">Jízdní kola zakázána</string>
+ <string name="attribute_motorcycles_yes">Motocykly povoleny</string>
+ <string name="attribute_motorcycles_no">Motocykly zakázány</string>
+ <string name="attribute_quads_yes">Čtyřkolky povoleny</string>
+ <string name="attribute_quads_no">Čtyřkolky zakázány</string>
+ <string name="attribute_jeeps_yes">Off-road vozidla povolena</string>
+ <string name="attribute_jeeps_no">Off-road vozidla zakázána</string>
+ <string name="attribute_snowmobiles_yes">Sněžné skůtry povoleny</string>
+ <string name="attribute_snowmobiles_no">Sněžné skůtry zakázány</string>
+ <string name="attribute_horses_yes">Koně povoleny</string>
+ <string name="attribute_horses_no">Zakáz koní</string>
+ <string name="attribute_campfires_yes">Táborové ohně povoleny</string>
+ <string name="attribute_campfires_no">Táborové ohně zakázány</string>
+ <string name="attribute_rv_yes">Kamiony povoleny</string>
+ <string name="attribute_rv_no">Kamiony zakázány</string>
+ <string name="attribute_kids_yes">Doporučeno pro děti</string>
+ <string name="attribute_kids_no">Nedoporučeno pro děti</string>
+ <string name="attribute_onehour_yes">Trvá méně než hodinu</string>
+ <string name="attribute_onehour_no">Trvá více než hodinu</string>
+ <string name="attribute_scenic_yes">Výhled do krajiny</string>
+ <string name="attribute_scenic_no">Žádný výhled</string>
+ <string name="attribute_hiking_yes">Náročný výstup</string>
+ <string name="attribute_hiking_no">Žádný náročný výstup</string>
+ <string name="attribute_climbing_yes">Těžké lezení</string>
+ <string name="attribute_climbing_no">Žádné těžké lezení</string>
+ <string name="attribute_wading_yes">Může být potřeba se brodit</string>
+ <string name="attribute_wading_no">Netřeba se brodit</string>
+ <string name="attribute_swimming_yes">Může být potřeba plavat</string>
+ <string name="attribute_swimming_no">Netřeba plavat</string>
+ <string name="attribute_available_yes">Přístupná kdykoliv</string>
+ <string name="attribute_available_no">Přístupná po omezenou dobu</string>
+ <string name="attribute_night_yes">Doporučeno lovit v noci</string>
+ <string name="attribute_night_no">Nedoporučuje se lovit v noci</string>
+ <string name="attribute_winter_yes">Přístupná v zimě</string>
+ <string name="attribute_winter_no">Nepřístupná v zimě</string>
+ <string name="attribute_stealth_yes">Nutno dávat pozor</string>
+ <string name="attribute_stealth_no">Není třeba dávat pozor</string>
+ <string name="attribute_firstaid_yes">Potřebuje údržbu</string>
+ <string name="attribute_firstaid_no">Nepotřebuje údržbu</string>
+ <string name="attribute_cow_yes">Dávejte pozor na domácí zvířata</string>
+ <string name="attribute_cow_no">Žádná domácí zvířata</string>
+ <string name="attribute_field_puzzle_yes">Hádanka v terénu</string>
+ <string name="attribute_field_puzzle_no">Žádná hádanka v terénu</string>
+ <string name="attribute_nightcache_yes">Noční keš</string>
+ <string name="attribute_nightcache_no">Nevhodná pro lov v noci</string>
+ <string name="attribute_parkngrab_yes">Zaparkuj a odlov</string>
+ <string name="attribute_parkngrab_no">Žádný drive-in</string>
+ <string name="attribute_abandonedbuilding_yes">Opuštěné budovy</string>
+ <string name="attribute_abandonedbuilding_no">Žádné opuštěné budovy</string>
+ <string name="attribute_hike_short_yes">Krátký výstup (méně než 1 km)</string>
+ <string name="attribute_hike_short_no">Žádný krátký výstup</string>
+ <string name="attribute_hike_med_yes">Střední výstup (1 až 10 km)</string>
+ <string name="attribute_hike_med_no">Žádný střední výstup</string>
+ <string name="attribute_hike_long_yes">Dlouhý výstup (více než 10 km)</string>
+ <string name="attribute_hike_long_no">Žádný dlouhý výstup</string>
+ <string name="attribute_seasonal_yes">Sezónní přístup</string>
+ <string name="attribute_seasonal_no">Žádný sezónní přístup</string>
+ <string name="attribute_touristok_yes">Vhodná pro turisty</string>
+ <string name="attribute_touristok_no">Nevhodná pro turisty</string>
+ <string name="attribute_frontyard_yes">Soukromý pozemek</string>
+ <string name="attribute_frontyard_no">Žádný soukromý pozemek</string>
+ <string name="attribute_teamwork_yes">Týmová práce vyžadována</string>
+ <string name="attribute_teamwork_no">Týmová práce není třeba</string>
+ <string name="attribute_landf_yes">Výprava ztráty a nálezy</string>
+ <string name="attribute_landf_no">Žádná výprava ztráty a nálezy</string>
+ <string name="attribute_partnership_yes">Partnerská keš</string>
+ <string name="attribute_partnership_no">Není partnerská keš</string>
+ <string name="attribute_fee_yes">Vstupní nebo parkovací poplatky</string>
+ <string name="attribute_fee_no">Bez vstupních nebo parkovacích poplatků</string>
+ <string name="attribute_rappelling_yes">Lezecká výstroj nutná</string>
+ <string name="attribute_rappelling_no">Lezecká výstroj není třeba</string>
+ <string name="attribute_boat_yes">Loď je potřeba</string>
+ <string name="attribute_boat_no">Loď není potřeba/string>
+ <string name="attribute_scuba_yes">Potápěčský přístroj je nutný</string>
+ <string name="attribute_scuba_no">Potápěčský přístroj není potřeba</string>
+ <string name="attribute_flashlight_yes">Svítilna je potreba</string>
+ <string name="attribute_flashlight_no">Svítilna není potřeba</string>
+ <string name="attribute_uv_yes">UV světlo je potřeba</string>
+ <string name="attribute_uv_no">UV světlo není potřeba</string>
+ <string name="attribute_snowshoes_yes">Sněžnice jsou potřeba</string>
+ <string name="attribute_snowshoes_no">Sněžnice nejsou potřeba</string>
+ <string name="attribute_skiis_yes">Běžky jsou potřeba</string>
+ <string name="attribute_skiis_no">Běžky nejsou potřeba</string>
+ <string name="attribute_s_tool_yes">Speciální nástroj je nutný</string>
+ <string name="attribute_s_tool_no">Speciální nástroj není nutný</string>
+ <string name="attribute_wirelessbeacon_yes">Bezdrátový maják</string>
+ <string name="attribute_wirelessbeacon_no">Žádný bezdrátový maják</string>
+ <string name="attribute_treeclimbing_yes">Lezení na strom</string>
+ <string name="attribute_treeclimbing_no">Není třeba lézt na strom</string>
+ <string name="attribute_poisonoak_yes">Jedovaté rostliny</string>
+ <string name="attribute_poisonoak_no">Žádné jedovaté rostliny</string></string>
+ <string name="attribute_dangerousanimals_yes">Nebezpečná zvířata</string>
+ <string name="attribute_dangerousanimals_no">Žádná nebezpečná zvířata</string>
+ <string name="attribute_ticks_yes">Klíšťata</string>
+ <string name="attribute_ticks_no">Žádná klíštata</string>
+ <string name="attribute_mine_yes">Opuštěné doly</string>
+ <string name="attribute_mine_no">Žádné opuštěné doly</string>
+ <string name="attribute_cliff_yes">Útesy / padající kameny</string>
+ <string name="attribute_cliff_no">Žádné útesy / padající kameny</string>
+ <string name="attribute_hunting_yes">Lov zvěře</string>
+ <string name="attribute_hunting_no">Žádný lov zvěře</string>
+ <string name="attribute_danger_yes">Nebezpečné prostředí</string>
+ <string name="attribute_danger_no">Žádné nebezpečené prostředí</string>
+ <string name="attribute_thorn_yes">Trní</string>
+ <string name="attribute_thorn_no">Žádné trní</string>
+ <string name="attribute_wheelchair_yes">Přístupné invalidům</string>
+ <string name="attribute_wheelchair_no">Nepřístupné invalidům</string>
+ <string name="attribute_parking_yes">Parkoviště k dispozici</string>
+ <string name="attribute_parking_no">Žádné parkoviště k dispozici</string>
+ <string name="attribute_public_yes">Hromadná doprava</string>
+ <string name="attribute_public_no">Hromadná doprava nedostupná</string>
+ <string name="attribute_water_yes">Pitná voda poblíž</string>
+ <string name="attribute_water_no">Žádná pitná voda poblíž</string>
+ <string name="attribute_restrooms_yes">Věřejné záchody poblíž</string>
+ <string name="attribute_restrooms_no">Žádné veřejné záchody poblíž</string>
+ <string name="attribute_phone_yes">Telefon poblíž</string>
+ <string name="attribute_phone_no">Žádný telefon poblíž</string>
+ <string name="attribute_picnic_yes">Piknikové stoly poblíž</string>
+ <string name="attribute_picnic_no">Žádné piknikové stoly k dispozici</string>
+ <string name="attribute_camping_yes">Možnost kempování</string>
+ <string name="attribute_camping_no">Žádné kempování</string>
+ <string name="attribute_stroller_yes">Přístupné s kočárkem</string>
+ <string name="attribute_stroller_no">Nepřístupné s kočárkem</string>
+ <string name="attribute_fuel_yes">Čerpací stanice poblíž</string>
+ <string name="attribute_fuel_no">Žádná čerpací stanice poblíž</string>
+ <string name="attribute_food_yes">Jídlo poblíž</string>
+ <string name="attribute_food_no">Žádné jídlo poblíž</string>
+ <string name="attribute_oc_only_yes">Zapisovatelné pouze na Opencachingu</string>
+ <string name="attribute_oc_only_no">Zapisovatelné nejen Opencachingu</string>
+ <string name="attribute_link_only_yes">Pouze odkaz na jiný geocachingový portál</string>
+ <string name="attribute_link_only_no">Není jen odkazem na jiný geocachingový portál</string>
+ <string name="attribute_letterbox_yes">Letterbox (potřebujete razítko)</string>
+ <string name="attribute_letterbox_no">Není letterbox (nepotřebujete razítko)</string>
+ <string name="attribute_railway_yes">Železnice v blízkosti</string>
+ <string name="attribute_railway_no">Žádná železnice v blízkosti</string>
+ <string name="attribute_syringe_yes">První pomoc dostupná</string>
+ <string name="attribute_syringe_no">První pomoc nedostupná</string>
+ <string name="attribute_swamp_yes">Bažiny a močály</string>
+ <string name="attribute_swamp_no">Žádné bažiny či močály</string>
+ <string name="attribute_hills_yes">Kopcovitý terén</string>
+ <string name="attribute_hills_no">Žádný kopcovitý terén</string>
+ <string name="attribute_poi_yes">Zajímavosti</string>
+ <string name="attribute_poi_no">Žádné zajímavosti</string>
+ <string name="attribute_moving_target_yes">Cíl přesunu</string>
+ <string name="attribute_moving_target_no">Bez cíle přesunu</string>
+ <string name="attribute_webcam_yes">Webkamera</string>
+ <string name="attribute_webcam_no">Bez webkamery</string>
+ <string name="attribute_inside_yes">Uzavřené místnosti (jeskyně, budovy etc.)</string>
+ <string name="attribute_inside_no">Žádné uzavřené místnosti</string>
+ <string name="attribute_in_water_yes">Ve vodě</string>
+ <string name="attribute_in_water_no">Mimo vodu</string>
+ <string name="attribute_no_gps_yes">Bez GPS</string>
+ <string name="attribute_no_gps_no">S GPS</string>
+ <string name="attribute_overnight_yes">Nezbytné přenocovat</string>
+ <string name="attribute_overnight_no">Bez přenocování</string>
+ <string name="attribute_specific_times_yes">Dostupné ve specifické době</string>
+ <string name="attribute_specific_times_no">Dostupné v každé době</string>
+ <string name="attribute_day_yes">Jen ve dne</string>
+ <string name="attribute_day_no">Dostupné vždy</string>
+ <string name="attribute_tide_yes">Příliv a odliv</string>
+ <string name="attribute_tide_no">Žádný příliv a odliv</string>
+ <string name="attribute_all_seasons_yes">V každém ročním období</string>
+ <string name="attribute_all_seasons_no">Mimo každé roční období</string>
+ <string name="attribute_breeding_yes">Chráněné krajinné oblasti</string>
+ <string name="attribute_breeding_no">Mimo chráněné krajinné oblasti</string>
+ <string name="attribute_snow_proof_yes">Sněhuvzodrná skrýš</string>
+ <string name="attribute_snow_proof_no">Žádná sněhuvzorná skrýš</string>
+ <string name="attribute_compass_yes">Kompas</string>
+ <string name="attribute_compass_no">Bez kompasu</string>
+ <string name="attribute_cave_yes">Vybavení do jeskyně</string>
+ <string name="attribute_cave_no">Bez vybavení do jeskyně</string>
+ <string name="attribute_aircraft_yes">Letadlo</string>
+ <string name="attribute_aircraft_no">Bez letadel</string>
+ <string name="attribute_investigation_yes">Výzkum</string>
+ <string name="attribute_investigation_no">Bez výzkumu</string>
+ <string name="attribute_puzzle_yes">Puzzle / Hádanka</string>
+ <string name="attribute_puzzle_no">Žádné puzzle / Hádanka </string>
+ <string name="attribute_arithmetic_yes">Aritmetická úloha</string>
+ <string name="attribute_arithmetic_no">Žádná aritmetická úloha</string>
+ <string name="attribute_other_cache_yes">Jiná keše</string>
+ <string name="attribute_other_cache_no">Žádná jiná keš</string>
+ <string name="attribute_ask_owner_yes">Zeptejte se vlastníka na startovní podmínky</string>
+ <string name="attribute_ask_owner_no">Neptejte se vlastníka na startovní podmínky</string>
+ <string name="attribute_unknown_yes">Neznámý atribut</string>
+ <string name="attribute_unknown_no">Neznámý atribut negativní</string>
<!-- next things -->
<string name="legal_note">Před používáním služeb serveru Geocaching.com je potřeba souhlasit s <a href="http://www.geocaching.com/about/disclaimer.aspx">licenčním ujednáním Groundspeaku</a>.</string>
+ <string name="quote">Učinit geocaching lehčí, a uživatelé línější.</string>
+ <string name="powered_by">carnero</string>
<string name="support">podpora: <a href="mailto:support@cgeo.org">support@cgeo.org</a></string>
<string name="website">web: <a href="http://cgeo.org/">cgeo.org</a></string>
<string name="facebook">facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">c:geo page</a> </string>
<string name="twitter">twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
+ <string name="nutshellmanual">Manual: <a href="http://manual.cgeo.org/">c:geo v kostce</a></string>
<string name="about_twitter">Chcete, aby <b>c:geo</b> napsalo na Váš Twitter pokaždé, když zapíšete nález kešky?</string>
<string name="about_auth_1">Pomocí následujícího procesu můžete umožnit <b>c:geo</b> aplikaci odesílání příspěvků na Váš Twitter.</string>
<string name="about_auth_2">Tapnutím na tlačítko "zahájit autorizaci" celý proces začne. Tento proces otevře webovou stránku Twitteru, kde se budete muset přihlásit a tlačítkem Accept pak umožnit aplikaci <b>c:geo</b>přístup k Vašemu Twitteru. Twitter Vám přidělí PIN kód pokud tapnete na Accept. Tento kód zkopírujte a vložte do aplikace <b>c:geo</b>. A potvrďte. To je vše.</string>
+
+ <!-- status (used via string based resource loading) -->
+ <string name="status_new_release" tools:ignore="UnusedResources">Nové vydání je k dispozici.\nKlikněte k instalaci.</string>
+ <string name="status_new_nightly" tools:ignore="UnusedResources">Nové noční sestavení je k dispozici.\nKlikněte k instalaci.</string>
+ <string name="status_new_rc" tools:ignore="UnusedResources">Nový kandidát k vydání je k dispozici.\nKlikněte k instalaci.</string>
+ <string name="status_geocaching_change" tools:ignore="UnusedResources">Nedávné změny na geocaching.com rozbily c:geo.\nPracujeme na tom, zkuste znovu brzy.</string>
+ <string name="status_geocaching_livemap" tools:ignore="UnusedResources">Nedávné změny on geocaching.com rozbily aktivní mapu c:geo.\nPracujeme na tom, zkuste znovu brzy.</string>
+
+ <string name="clipboard_copy_ok">Zkopírováno do schránky</string>
+ <plurals name="days_ago">
+ <item quantity="one">včera</item>
+ <item quantity="few">%d dny zpět</item>
+ <item quantity="many">%d dnů zpět</item>
+ </plurals>
</resources>
diff --git a/main/res/values-da/strings.xml b/main/res/values-da/strings.xml
index d98a7fe..cfe5b17 100644
--- a/main/res/values-da/strings.xml
+++ b/main/res/values-da/strings.xml
@@ -259,8 +259,8 @@
<string name="search_coordinates_button">Søg fra koordinater</string>
<string name="search_address">Adresse</string>
<string name="search_address_button">Søg adresse</string>
- <string name="search_gc">Geocode</string>
- <string name="search_gc_button">Søg geocode</string>
+ <string name="search_geo">Geocode</string>
+ <string name="search_geo_button">Søg geocode</string>
<string name="search_kw">Nøgleord</string>
<string name="search_kw_prefill">Nøgleord</string>
<string name="search_kw_button">Søg efter nøgleord</string>
diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml
index 73298f1..ca2af61 100644
--- a/main/res/values-de/strings.xml
+++ b/main/res/values-de/strings.xml
@@ -53,6 +53,7 @@
<string name="wp_pkg">Parkplatz</string>
<string name="wp_trailhead">Ausgangspunkt</string>
<string name="wp_waypoint">Referenzpunkt</string>
+ <string name="wp_original">Ursprüngliche Koordinaten</string>
<!-- logs -->
<string name="log_found">Gefunden</string>
@@ -126,7 +127,7 @@
<string name="err_none">OK</string>
<string name="err_start">Kommunikation nicht gestartet</string>
<string name="err_parse">Parsing der Anmeldung gescheitert</string>
- <string name="err_server">Verbindung zu Geocaching.com konnte nicht hergestellt werden (Server oder Verbindung inaktiv?)</string>
+ <string name="err_server">Verbindung zu geocaching.com konnte nicht hergestellt werden (Server oder Verbindung inaktiv?)</string>
<string name="err_login">Keine Anmeldedaten gespeichert.</string>
<string name="err_login_failed">Login fehlgeschlagen.</string>
<string name="err_login_failed_toast">c:geo konnte sich nicht einloggen und arbeitet im Offline-Modus. Bitte die Login-Daten in den Einstellungen überprüfen oder eine Internetverbindung herstellen.</string>
@@ -135,9 +136,10 @@
<string name="err_missing_auth">Benutzername oder Passwort nicht gesetzt.</string>
<string name="err_wrong">Falsche Anmeldedaten</string>
<string name="err_maintenance">Geocaching.com wird zur Zeit gewartet, bitte später erneut versuchen. c:geo arbeitet im Offline-Modus.</string>
- <string name="err_license">Die Geocaching.com Nutzungsbedingungen wurden nicht akzeptiert. c:geo kann deshalb keine Koordinaten laden.</string>
+ <string name="err_license">Die geocaching.com Nutzungsbedingungen wurden nicht akzeptiert. c:geo kann deshalb keine Koordinaten laden.</string>
+ <string name="err_unvalidated_account">Die Logindaten müssen zuerst auf geocaching.com validiert werden.</string>
<string name="err_unpublished">Der aufgerufene Cache ist noch nicht veröffentlicht</string>
- <string name="err_premium_only">Der Cache ist nur für Premium Mitglieder von Geocaching.com verfügbar</string>
+ <string name="err_premium_only">Der Cache ist nur für Premium-Mitglieder von geocaching.com verfügbar</string>
<string name="err_detail_open">c:geo konnte die Cache-Details nicht öffnen.</string>
<string name="err_detail_cache">c:geo konnte diesen Cache nicht darstellen. Ist es wirklich ein Cache?</string>
<string name="err_detail_cache_find">c:geo konnte keinen Cache finden.</string>
@@ -145,7 +147,6 @@
<string name="err_detail_cache_find_any">c:geo konnte keine Caches finden.</string>
<string name="err_detail_cache_find_next">c:geo konnte die nächsten Caches nicht finden.</string>
<string name="err_detail_cache_forgot">c:geo hat vergessen, welcher Cache aufgerufen werden sollte.</string>
- <string name="err_detail_cache_forgot_visit">c:geo hat vergessen, welcher Cache besucht werden sollte.</string>
<string name="err_detail_google_maps_limit_reached">c:geo kann die statischen Karten nicht herunterladen. Google Maps Limit könnte erreicht sein.</string>
<string name="err_detail_no_spoiler">c:geo hat kein Hinweisbild für diesen Cache gefunden.</string>
<string name="err_detail_no_map_static">c:geo hat keine statische Karte für diesen Cache gefunden.</string>
@@ -201,7 +202,7 @@
<string name="warn_search_help_address">Adresse oder Ort eingeben, z.B. Straßenname und Ort \"Dorfstraße 333, Berlin, Deutschland\", Ort \"Berlin\" oder den Namen eines beliebigen Ortes wie z.B. \"Tiergarten\".</string>
<string name="warn_search_help_gccode">GC-Code eingeben. z.B. \"GC1VCAZ\".</string>
<string name="warn_search_help_keyword">Stichwörter eingeben, die im Namen des zu suchenden Caches enthalten sind.</string>
- <string name="warn_search_help_user">Name eines Benutzers auf Geocaching.com eingeben.</string>
+ <string name="warn_search_help_user">Name eines Benutzers auf geocaching.com eingeben.</string>
<string name="warn_search_help_tb">Code des Trackables eingeben, z.B. \"TB29QMZ\".</string>
<string name="warn_log_text_fill">Bitte Text einfügen.</string>
<string name="warn_load_images">c:geo konnte die Bilder nicht laden.</string>
@@ -267,7 +268,7 @@
<string name="caches_sort_size">Größe</string>
<string name="caches_sort_favorites">Beliebtheit</string>
<string name="caches_sort_name">Name</string>
- <string name="caches_sort_gccode">GC-Code</string>
+ <string name="caches_sort_geocode">Geo-Code</string>
<string name="caches_sort_rating">Bewertung</string>
<string name="caches_sort_vote">Eigene Bewertung</string>
<string name="caches_sort_inventory">Inventaranzahl</string>
@@ -306,6 +307,7 @@
<string name="caches_filter_track">Mit Trackables</string>
<string name="caches_filter_clear">Filter zurücksetzen</string>
<string name="caches_filter_modified">Mit geänderten Koordinaten</string>
+ <string name="caches_filter_origin">Herkunft</string>
<string name="caches_removing_from_history">Lösche aus Verlauf…</string>
<!-- caches lists -->
@@ -388,6 +390,7 @@
<string name="init_save_log_img">Logbilder abspeichern</string>
<string name="init_units">Imperiale Einheiten (Meilen/Fuß)</string>
<string name="init_log_offline">Offline loggen (Dialog für Online-Log nicht anzeigen)</string>
+ <string name="init_choose_list">Beim Speichern von Caches nach Liste fragen</string>
<string name="init_livelist">Richtung zum Cache in der Cache-Liste anzeigen</string>
<string name="init_altitude">Höhenkorrektur</string>
<string name="init_altitude_description">Falls das GPS eine falsche Höhe ermittelt, kann dies durch Angabe eines positiven oder negativen Wertes in Metern korrigiert werden.</string>
@@ -496,7 +499,7 @@
<string name="cache_personal_note_edit">Bearbeiten</string>
<string name="cache_description">Beschreibung</string>
<string name="cache_description_long">Ausführliche Beschreibung</string>
- <string name="cache_description_table_note">Diese Beschreibung enthält Tabellenelemente, die evtl. nur auf Geocaching.com korrekt angezeigt werden.</string>
+ <string name="cache_description_table_note">Diese Beschreibung enthält Tabellenelemente, die evtl. nur auf %s korrekt angezeigt werden.</string>
<string name="cache_watchlist_on">Dieser Cache ist auf deiner Watchlist.</string>
<string name="cache_watchlist_not_on">Dieser Cache ist nicht auf deiner Watchlist.</string>
<string name="cache_watchlist_add">Hinzufügen</string>
@@ -505,8 +508,10 @@
<string name="cache_favpoint_not_on">Dieser Cache ist kein Favorit.</string>
<string name="cache_favpoint_add">Hinzufügen</string>
<string name="cache_favpoint_remove">Entfernen</string>
+ <string name="cache_list_text">Liste:</string>
+ <string name="cache_list_change">Verschieben</string>
+ <string name="cache_list_unknown">In keiner Liste</string>
<string name="cache_images">Bilder</string>
- <string name="cache_images_loading">Lade Bilder…</string>
<string name="cache_waypoints">Wegpunkte</string>
<plurals name="waypoints">
<item quantity="one">1 Wegpunkt</item>
@@ -536,6 +541,10 @@
<string name="cache_dialog_watchlist_add_message">Füge den Cache deiner Watchlist hinzu…</string>
<string name="cache_dialog_watchlist_remove_title">Watchlist</string>
<string name="cache_dialog_watchlist_remove_message">Entferne den Cache von deiner Watchlist…</string>
+ <string name="cache_dialog_favourite_add_title">Favorit</string>
+ <string name="cache_dialog_favourite_add_message">Füge den Cache als dein Favorit hinzu…</string>
+ <string name="cache_dialog_favourite_remove_title">Favorit</string>
+ <string name="cache_dialog_favourite_remove_message">Entferne den Cache von deinen Favoriten…</string>
<string name="cache_menu_navigate">Navigieren</string>
<string name="cache_menu_navigation_drive">Navigation (Fahren)</string>
<string name="cache_menu_navigation_walk">Navigation (Gehen)</string>
@@ -585,6 +594,7 @@
<string name="cache_coordinates_original">Ursprüngliche Koordinaten</string>
<string name="cache_spoiler_images_title">Hinweisbilder</string>
<string name="cache_spoiler_images_loading">Lade Hinweisbilder…</string>
+ <string name="cache_images_loading">Lade Bilder…</string>
<string name="cache_log_types">Logs</string>
<string name="cache_coordinates_no">Dieser Cache hat keine Koordinaten.</string>
<string name="cache_clear_history">Verlauf leeren</string>
@@ -595,7 +605,8 @@
<string name="cache_image_open_browser">Im Browser öffnen</string>
<string name="cache_share_field">Weiterleiten</string>
<string name="cache_time_full_hours">Uhr</string>
-
+ <string name="cache_listed_on">Geführt auf %s</string>
+
<!-- editor dialog -->
<string name="editor_save">Speichern</string>
@@ -657,19 +668,20 @@
<string name="waypoint_note">Notiz</string>
<string name="waypoint_save">Speichern</string>
<string name="waypoint_loading">Lade Wegpunkt…</string>
+ <string name="waypoint_do_not_touch_cache_coordinates">Cache-Koordinaten nicht ändern</string>
<string name="waypoint_set_as_cache_coords">Als Cache-Koordinaten lokal setzen</string>
+ <string name="waypoint_save_and_modify_on_website">Als Cache-Koordinaten lokal und auf Webseite setzen</string>
<string name="waypoint_reset_cache_coords">Zurücksetzen</string>
<string name="waypoint_coordinates_has_been_reset_on_website">Koordinaten auf Webseite zurückgesetzt</string>
<string name="waypoint_coordinates_being_reset_on_website">Koordinaten werden zurückgesetzt</string>
- <string name="waypoint_reset_cache_coords_info">Rücksetz-Optionen</string>
<string name="waypoint_reset">Zurücksetzen</string>
<string name="waypoint_localy_reset_cache_coords">Koodinaten lokal zurücksetzen</string>
+ <string name="waypoint_reset_local_and_remote_cache_coords">Koordinaten lokal und auf Webseite zurücksetzen</string>
+ <string name="waypoint_being_saved">Wegpunkt wird gespeichert…</string>
<string name="waypoint_coordinates_couldnt_be_modified_on_website">Cache-Koordinaten auf der Webseite konnten nicht zurückgesetzt werden</string>
<string name="waypoint_coordinates_upload_error">Fehler beim Hochladen der Koordinaten zur Webseite</string>
<string name="waypoint_coordinates_uploading_to_website">Setze %s auf der Webseite</string>
- <string name="waypoint_coordinates_reseting_on_website">Setze Koordinaten auf der Webseite zurück</string>
<string name="waypoint_coordinates_has_been_modified_on_website">Koordinaten wurden auf der Webseite geändert: %s</string>
- <string name="waypoint_coordinates_has_been_set_as_cache_coordinates">Koordinaten wurden lokal geändert: %s</string>
<string name="waypoint_done">Fertig</string>
<string name="waypoint_duplicate">Duplizieren</string>
<string name="waypoint_copy_of">Kopie von</string>
@@ -715,7 +727,6 @@
<string name="map_strategy_auto">Geschwindigkeitsabhängig</string>
<string name="map_strategy_detailed">Detailliert</string>
<string name="live_map_notification">Auf der neuen Live-Karte sind die Koordinaten nicht immer genau. Eventuell ungenaue Koordinaten sind mit einem orangen Kreis markiert.\nDas Öffnen der Cache-Details oder das Speichern des Cache liefert immer genaue Koordinaten.\n\nMehr Informationen über alle Änderungen befinden sich auf der \"Über c:geo\"-Seite in der App.</string>
- <string name="live_map_note_close">Schließen</string>
<string name="live_map_note_dontshow">Nicht mehr anzeigen</string>
<!-- search -->
@@ -725,8 +736,8 @@
<string name="search_coordinates_button">Suche mit Koordinaten</string>
<string name="search_address">Adresse</string>
<string name="search_address_button">Suche mit Adresse</string>
- <string name="search_gc">GC-Code</string>
- <string name="search_gc_button">Suche mit GC-Code</string>
+ <string name="search_geo">Geo-Code</string>
+ <string name="search_geo_button">Suche mit Geo-Code</string>
<string name="search_kw">Stichworte</string>
<string name="search_kw_prefill">Stichwörter</string>
<string name="search_kw_button">Suche mit Stichwörtern</string>
@@ -773,6 +784,7 @@
<string name="user_menu_view_hidden">Versteckte Caches</string>
<string name="user_menu_view_found">Gefundene Caches</string>
<string name="user_menu_open_browser">Profil im Browser öffnen</string>
+ <string name="user_menu_send_message">Nachricht senden</string>
<!-- navigation -->
<string name="navigation">Navigation</string>
@@ -823,11 +835,7 @@
<string name="export_gpx_info">GPX-Datei wird nach %1$s mit dem aktuellen Datum und Zeit als Dateiname exportiert.</string>
<string name="export_gpx_to">Exportierte GPX-Datei senden an</string>
- <!-- attribute unknown -->
- <string name="attribute_unknown_yes">Unbekannte Attribute vorhanden</string>
- <string name="attribute_unknown_no">Keine unbekannten Attribute</string>
-
- <!-- attributes (permissions -> allowed, not allowed) -->
+ <!-- attributes -->
<string name="attribute_dogs_yes">Hunde erlaubt</string>
<string name="attribute_dogs_no">Hunde nicht erlaubt</string>
<string name="attribute_bicycles_yes">Fahrräder erlaubt</string>
@@ -846,8 +854,6 @@
<string name="attribute_campfires_no">Lagerfeuer nicht erlaubt</string>
<string name="attribute_rv_yes">Wohnmobile erlaubt</string>
<string name="attribute_rv_no">Wohnmobile nicht erlaubt</string>
-
- <!-- attributes (conditions -> yes, no) -->
<string name="attribute_kids_yes">Für Kinder geeignet</string>
<string name="attribute_kids_no">Nicht für Kinder geeignet</string>
<string name="attribute_onehour_yes">Benötigt weniger als eine Stunde</string>
@@ -900,8 +906,6 @@
<string name="attribute_landf_no">Keine \'Lost and found\' Tour</string>
<string name="attribute_partnership_yes">Partnerschafts-Cache</string>
<string name="attribute_partnership_no">kein Partnerschafts-Cache</string>
-
- <!-- attributes (equipment -> required, not required) -->
<string name="attribute_fee_yes">Eintrittsgeld notwendig</string>
<string name="attribute_fee_no">Kein Eintrittsgeld notwendig</string>
<string name="attribute_rappelling_yes">Kletterausrüstung notwendig</string>
@@ -924,8 +928,6 @@
<string name="attribute_wirelessbeacon_no">Kein Radiosignal</string>
<string name="attribute_treeclimbing_yes">Auf Bäume klettern notwendig</string>
<string name="attribute_treeclimbing_no">Auf Bäume klettern nicht notwendig</string>
-
- <!-- attributes (hazards -> present, not present) -->
<string name="attribute_poisonoak_yes">Giftige Pflanzen</string>
<string name="attribute_poisonoak_no">Keine giftigen Pflanzen</string>
<string name="attribute_dangerousanimals_yes">Gefährliche Tiere</string>
@@ -942,8 +944,6 @@
<string name="attribute_danger_no">Kein gefährliches Gebiet</string>
<string name="attribute_thorn_yes">Dornen</string>
<string name="attribute_thorn_no">Keine Dornen</string>
-
- <!-- attributes (facilities -> yes, no) -->
<string name="attribute_wheelchair_yes">Rollstuhlgängig</string>
<string name="attribute_wheelchair_no">Nicht Rollstuhlgängig</string>
<string name="attribute_parking_yes">Parkplatz vorhanden</string>
@@ -966,9 +966,67 @@
<string name="attribute_fuel_no">Keine Tankstelle in der Nähe</string>
<string name="attribute_food_yes">Lebensmittel in der Nähe</string>
<string name="attribute_food_no">Keine Lebensmittel in der Nähe</string>
+ <string name="attribute_oc_only_yes">Nur bei Opencaching logbar</string>
+ <string name="attribute_oc_only_no">Nicht nur bei Opencaching logbar</string>
+ <string name="attribute_link_only_yes">Nur ein Link auf ein anderes Caching Portal</string>
+ <string name="attribute_link_only_no">Nicht nur ein Link auf ein anderes Caching Portal</string>
+ <string name="attribute_letterbox_yes">Letterbox (benötigt Stempel)</string>
+ <string name="attribute_letterbox_no">Keine Letterbox (benötigt keinen Stempel)</string>
+ <string name="attribute_railway_yes">Aktive Eisenbahnlinien in der Nähe</string>
+ <string name="attribute_railway_no">Keine aktiven Eisenbahnlinien in der Nähe</string>
+ <string name="attribute_syringe_yes">Erste Hilfe verfügbar</string>
+ <string name="attribute_syringe_no">Keine Erste Hilfe verfügbar</string>
+ <string name="attribute_swamp_yes">Sumpfig / matschiges Gelände</string>
+ <string name="attribute_swamp_no">Nicht sumpfig / kein matschiges Gelände</string>
+ <string name="attribute_hills_yes">Hügeliges Gelände</string>
+ <string name="attribute_hills_no">Kein hügeliges Gelände</string>
+ <string name="attribute_poi_yes">Interessanter Ort</string>
+ <string name="attribute_poi_no">Uninteressanter Ort</string>
+ <string name="attribute_moving_target_yes">Bewegliches Ziel</string>
+ <string name="attribute_moving_target_no">Unbewegliches Ziel</string>
+ <string name="attribute_webcam_yes">Webcam am Ziel</string>
+ <string name="attribute_webcam_no">Keine Webcam am Ziel</string>
+ <string name="attribute_inside_yes">In geschlossenen Räumen (Höhle, Gebäude, etc.)</string>
+ <string name="attribute_inside_no">Nicht in geschlossenen Räumen (Höhle, Gebäude, etc.)</string>
+ <string name="attribute_in_water_yes">Im Wasser</string>
+ <string name="attribute_in_water_no">Nicht im Wasser</string>
+ <string name="attribute_no_gps_yes">Ohne GPS (Letterboxen, cistes, compass-juggling, ...)</string>
+ <string name="attribute_no_gps_no">Mit GPS</string>
+ <string name="attribute_overnight_yes">Übernachtung erforderlich</string>
+ <string name="attribute_overnight_no">Keine Übernachtung erforderlich</string>
+ <string name="attribute_specific_times_yes">Nur zu bestimmten Uhrzeiten</string>
+ <string name="attribute_specific_times_no">Nicht nur zu bestimmten Uhrzeiten</string>
+ <string name="attribute_day_yes">Nur tagsüber</string>
+ <string name="attribute_day_no">Nicht nur tagsüber</string>
+ <string name="attribute_tide_yes">Gezeiten</string>
+ <string name="attribute_tide_no">Keine Gezeiten</string>
+ <string name="attribute_all_seasons_yes">Ganzjährig zugängig</string>
+ <string name="attribute_all_seasons_no">Nicht ganzjährig zugängig</string>
+ <string name="attribute_breeding_yes">Brutsaison / Naturschutz</string>
+ <string name="attribute_breeding_no">Keine Brutsaison / Kein Naturschutz</string>
+ <string name="attribute_snow_proof_yes">Schneesicheres Versteck</string>
+ <string name="attribute_snow_proof_no">Kein schneesicheres Versteck</string>
+ <string name="attribute_compass_yes">Kompass benötigt</string>
+ <string name="attribute_compass_no">Kein Kompass benötigt</string>
+ <string name="attribute_cave_yes">Höhlenausrüstung nötig</string>
+ <string name="attribute_cave_no">Keine Höhlenausrüstung nötig</string>
+ <string name="attribute_aircraft_yes">Fluggerät nötig</string>
+ <string name="attribute_aircraft_no">Kein Fluggerät nötig</string>
+ <string name="attribute_investigation_yes">Recherche nötig</string>
+ <string name="attribute_investigation_no">Keine Recherche nötig</string>
+ <string name="attribute_puzzle_yes">Rätsel</string>
+ <string name="attribute_puzzle_no">Keine Rätsel</string>
+ <string name="attribute_arithmetic_yes">Rechenaufgabe</string>
+ <string name="attribute_arithmetic_no">Keine Rechenaufgaben</string>
+ <string name="attribute_other_cache_yes">Anderer Cachetyp</string>
+ <string name="attribute_other_cache_no">Kein anderer Cachetyp</string>
+ <string name="attribute_ask_owner_yes">Startbedingungen beim Owner erfragen</string>
+ <string name="attribute_ask_owner_no">Keine Startbedingungen beim Owner erfragen</string>
+ <string name="attribute_unknown_yes">Unbekannte Attribute vorhanden</string>
+ <string name="attribute_unknown_no">Keine unbekannten Attribute</string>
<!-- next things -->
- <string name="legal_note">Um die Dienste von Geocaching.com nutzen zu können, müssen die <a href="http://www.geocaching.com/about/termsofuse.aspx">Groundspeak-Nutzungsbedingungen</a> (englisch) akzeptiert werden.</string>
+ <string name="legal_note">Um die Dienste von geocaching.com nutzen zu können, müssen die <a href="http://www.geocaching.com/about/termsofuse.aspx">Groundspeak-Nutzungsbedingungen</a> (englisch) akzeptiert werden.</string>
<string name="quote">Um Geocachen einfacher zu machen, um es Anwendern bequemer zu machen.</string>
<string name="powered_by">carnero</string>
<string name="support">Support: <a href="mailto:support@cgeo.org">support@cgeo.org</a></string>
diff --git a/main/res/values-es/strings.xml b/main/res/values-es/strings.xml
index f0fe8e1..7215d72 100644
--- a/main/res/values-es/strings.xml
+++ b/main/res/values-es/strings.xml
@@ -125,7 +125,6 @@
<string name="err_detail_cache_find_any">Lo siento, c:geo no puede encontrar algunos escondites.</string>
<string name="err_detail_cache_find_next">Lo siento, c:geo no puede encontrar los siguientes escondites.</string>
<string name="err_detail_cache_forgot">Lo siento, c:geo ha olvidado el escondite que quieres.</string>
- <string name="err_detail_cache_forgot_visit">Lo siento, c:geo ha olvidado que escondite has visitado.</string>
<string name="err_detail_no_spoiler">c:geo no ha encontrado imágenes/pista para este escondite.</string>
<string name="err_detail_no_map_static">c:geo no ha encontrado mapas estáticos para este escondite.</string>
<string name="err_detail_not_load_map_static">Lo siento, c:geo no ha podido cargar mapas estáticos.</string>
@@ -236,7 +235,7 @@
<string name="caches_sort_size">tamaño</string>
<string name="caches_sort_favorites">popularidad</string>
<string name="caches_sort_name">nombre</string>
- <string name="caches_sort_gccode">Código GC</string>
+ <string name="caches_sort_geocode">Código</string>
<string name="caches_sort_rating">valoración</string>
<string name="caches_sort_vote">votar (valoración propia)</string>
<string name="caches_sort_inventory">recuento de inventario</string>
@@ -539,8 +538,8 @@
<string name="search_coordinates_button">Buscar por coordenadas</string>
<string name="search_address">Dirección</string>
<string name="search_address_button">Buscar por dirección</string>
- <string name="search_gc">Geocode</string>
- <string name="search_gc_button">Buscar por código</string>
+ <string name="search_geo">Geocode</string>
+ <string name="search_geo_button">Buscar por código</string>
<string name="search_kw">Palabras clave</string>
<string name="search_kw_prefill">palabra clave</string>
<string name="search_kw_button">Buscar por palabra clave</string>
diff --git a/main/res/values-fr/strings.xml b/main/res/values-fr/strings.xml
index d75d8b4..b229b6c 100644
--- a/main/res/values-fr/strings.xml
+++ b/main/res/values-fr/strings.xml
@@ -143,7 +143,6 @@
<string name="err_detail_cache_find_any">c:geo ne peut pas trouver de caches.</string>
<string name="err_detail_cache_find_next">c:geo ne peut pas trouver les caches suivantes.</string>
<string name="err_detail_cache_forgot">c:geo a oublié la cache demandée.</string>
- <string name="err_detail_cache_forgot_visit">c:geo a oublié la cache que vous avez visité.</string>
<string name="err_detail_google_maps_limit_reached">c:geo n\'a pas pu charger les cartes statiques. La limite de Google Maps est peut être temporairement atteinte.</string>
<string name="err_detail_no_spoiler">c:geo n\'a pas trouvé d\'image indice pour cette cache.</string>
<string name="err_detail_no_map_static">c:geo n\'a pas trouvé de cartes statiques pour cette cache.</string>
@@ -263,7 +262,7 @@
<string name="caches_sort_size">taille</string>
<string name="caches_sort_favorites">popularité</string>
<string name="caches_sort_name">nom</string>
- <string name="caches_sort_gccode">code GC</string>
+ <string name="caches_sort_geocode">Geocode</string>
<string name="caches_sort_rating">note</string>
<string name="caches_sort_vote">vote (note perso)</string>
<string name="caches_sort_inventory">nombre d\'objets dans l\'inventaire</string>
@@ -365,7 +364,7 @@
<string name="init_openlastdetailspage">Réouvrir les détails à la dernière page ouverte</string>
<string name="init_autoload">Afficher automatiquement les descriptions longues</string>
<string name="init_other">Autres options</string>
- <string name="init_skin">Aspect sobre (nécessite le redémarrage de c:geo)</string>
+ <string name="init_skin">Fond clair (nécessite le redémarrage de c:geo)</string>
<string name="init_address">Afficher l\'adresse sur l\'accueil</string>
<string name="init_captcha">Afficher le CAPTCHA si nécessaire</string>
<string name="init_useenglish">Utiliser l\'anglais dans c:geo\n(redémarrage nécessaire)</string>
@@ -476,7 +475,7 @@
<string name="cache_personal_note">Note personnelle</string>
<string name="cache_description">Description</string>
<string name="cache_description_long">Description longue</string>
- <string name="cache_description_table_note">La description contient des informations de formattages qui nécessitent possiblement d\'être vues sur le site geocaching.com pour être affichées correctement.</string>
+ <string name="cache_description_table_note">La description contient des informations de formattages qui nécessitent possiblement d\'être vues sur le site %s pour être affichées correctement.</string>
<string name="cache_watchlist_on">Cette cache est dans votre liste de suivi.</string>
<string name="cache_watchlist_not_on">Cette cache n\'est pas dans votre liste de suivi.</string>
<string name="cache_watchlist_add">Ajouter à votre liste de suivi</string>
@@ -663,7 +662,6 @@
<string name="map_strategy_auto">En fonction du déplacement</string>
<string name="map_strategy_detailed">Détaillée</string>
<string name="live_map_notification">Lors de l\'affichage de la carte active, certaines coordonnées de géocaches peuvent être imprécises et sont indiquées par un cercle orange.\nDemander les détails d\'une géocache ou la sauver pour une utilisation hors-ligne récupérera les coordonnées exactes.\n\nVous trouverez plus d\'informations sur les changements sur la page \"À propos de c:geo\".</string>
- <string name="live_map_note_close">Fermer</string>
<string name="live_map_note_dontshow">Ne plus afficher</string>
<!-- search -->
@@ -673,8 +671,8 @@
<string name="search_coordinates_button">Recherche par coordonnées</string>
<string name="search_address">Adresse</string>
<string name="search_address_button">Recherche par adresse</string>
- <string name="search_gc">Geocode</string>
- <string name="search_gc_button">Recherche par geocode</string>
+ <string name="search_geo">Geocode</string>
+ <string name="search_geo_button">Recherche par geocode</string>
<string name="search_kw">Mots clés</string>
<string name="search_kw_prefill">Mot clé</string>
<string name="search_kw_button">Recherche par mot clé</string>
diff --git a/main/res/values-hu/strings.xml b/main/res/values-hu/strings.xml
index 94da99f..ec5e06e 100644
--- a/main/res/values-hu/strings.xml
+++ b/main/res/values-hu/strings.xml
@@ -143,7 +143,6 @@
<string name="err_detail_cache_find_any">Sajnáljuk, a c:geo nem talál geoládákat.</string>
<string name="err_detail_cache_find_next">Sajnáljuk, a c:geo nem találja a következő geoládákat.</string>
<string name="err_detail_cache_forgot">Sajnáljuk, a c:geo elfelejtette melyik geoládát szeretnéd.</string>
- <string name="err_detail_cache_forgot_visit">Sajnáljuk, a c:geo elfelejtette melyik geoládát látogattad meg.</string>
<string name="err_detail_google_maps_limit_reached">A c:geonak nem sikerült letölteni a statikus térképeket. Lehet hogy elérted a Google Maps limitjét.</string>
<string name="err_detail_no_spoiler">A c:geo nem talált spoiler képeket ehhez a ládához.</string>
<string name="err_detail_no_map_static">A c:geo nem talált statikus térképeket ehhez a ládához.</string>
@@ -265,7 +264,6 @@
<string name="caches_sort_size">méret</string>
<string name="caches_sort_favorites">sikeresség</string>
<string name="caches_sort_name">név</string>
- <string name="caches_sort_gccode">GC-kód</string>
<string name="caches_sort_rating">osztályzat</string>
<string name="caches_sort_vote">szavazat (saját osztályzat)</string>
<string name="caches_sort_inventory">tárgyak száma</string>
@@ -492,7 +490,7 @@
<string name="cache_personal_note_edit">Szerkesztés</string>
<string name="cache_description">Leírás</string>
<string name="cache_description_long">Hosszú leírás</string>
- <string name="cache_description_table_note">A leírás táblázatot is tartalmaz aminek helyes megjelenítéséhez szükség lehet a geocaching.com meglátogatására.</string>
+ <string name="cache_description_table_note">A leírás táblázatot is tartalmaz aminek helyes megjelenítéséhez szükség lehet a %s meglátogatására.</string>
<string name="cache_watchlist_on">Ez a láda a figyelőlistádon van.</string>
<string name="cache_watchlist_not_on">Ez a láda nincs a figyelőlistádon.</string>
<string name="cache_watchlist_add">Figyelőlistához adás</string>
@@ -698,7 +696,6 @@
<string name="map_strategy_auto">Sebességfüggő</string>
<string name="map_strategy_detailed">Részletes</string>
<string name="live_map_notification">A koordináták az élő térképen nem mindig pontosak. A vélhetően pontatlan koordinátákat narancssárga kör jelöli.\nA geoláda részleteinek megnyitása vagy a geoláda mentése mindig pontos koordinátákkal történik.\n\nTovábbi információ az összes változásról a \"A c:georól\" oldalon található az appon belül.</string>
- <string name="live_map_note_close">Bezárás</string>
<string name="live_map_note_dontshow">Ne mutasd újra</string>
@@ -709,8 +706,6 @@
<string name="search_coordinates_button">Keresés koordinátákkal</string>
<string name="search_address">Cím</string>
<string name="search_address_button">Keresés címmel</string>
- <string name="search_gc">GC-kód</string>
- <string name="search_gc_button">Keresés GC-kóddal</string>
<string name="search_kw">Kulcsszavak</string>
<string name="search_kw_prefill">Kulcsszó</string>
<string name="search_kw_button">Keresés kulcsszóval</string>
diff --git a/main/res/values-it/strings.xml b/main/res/values-it/strings.xml
index 4d6ce59..e9883e9 100644
--- a/main/res/values-it/strings.xml
+++ b/main/res/values-it/strings.xml
@@ -138,6 +138,7 @@
<string name="err_wrong">Informazioni di login errate</string>
<string name="err_maintenance">Geocaching.com è in manutenzione, riprovare più tardi. Attivata la modalità offline.</string>
<string name="err_license">L\'utente non ha approvato le condizione del Geocaching.com license agreement, così c:geo non può caricare le coordinate dei cache.</string>
+ <string name="err_unvalidated_account">Come prima cosa devi convalidare il tuo account su Geocaching.com.</string>
<string name="err_unpublished">Il cache richiesto è stato ritirato</string>
<string name="err_premium_only">Cache disponibile solo per utenti premium di Geocaching.com</string>
<string name="err_detail_open">c:geo non può aprire i dettagli del cache.</string>
@@ -147,7 +148,6 @@
<string name="err_detail_cache_find_any">c:geo non trova nessun geocache.</string>
<string name="err_detail_cache_find_next">c:geo non trova il prossimo geocache.</string>
<string name="err_detail_cache_forgot">c:geo ha dimenticato quale geocache hai richiesto.</string>
- <string name="err_detail_cache_forgot_visit">c:geo ha dimenticato quale cache hai visitato.</string>
<string name="err_detail_google_maps_limit_reached">c:geo non riesce a scaricare le mappe statiche. Forse raggiunto il limite di google map. Riprova domani.</string>
<string name="err_detail_no_spoiler">c:geo non trova alcuna immagine spoiler per questo cache.</string>
<string name="err_detail_no_map_static">c:geo non trova alcuna mappa statica per questo cache.</string>
@@ -270,7 +270,6 @@
<string name="caches_sort_size">Dimensione</string>
<string name="caches_sort_favorites">Popolarità</string>
<string name="caches_sort_name">Nome</string>
- <string name="caches_sort_gccode">GC-code</string>
<string name="caches_sort_rating">Voto</string>
<string name="caches_sort_vote">Il tuo voto</string>
<string name="caches_sort_inventory">Oggetti trackables</string>
@@ -491,7 +490,7 @@
<string name="cache_personal_note">Note personali</string>
<string name="cache_description">Descrizione</string>
<string name="cache_description_long">Descrizione estesa</string>
- <string name="cache_description_table_note">La descrizione contiene una tabella formattata in modo tale che potresti aver bisogno di andare su geocaching.com per vederla correttamente.</string>
+ <string name="cache_description_table_note">La descrizione contiene una tabella formattata in modo tale che potresti aver bisogno di andare su %s per vederla correttamente.</string>
<string name="cache_watchlist_on">Questo cache è nella tua watchlist.</string>
<string name="cache_watchlist_not_on">Questo cache non è nella tua watchlist.</string>
<string name="cache_watchlist_add">Aggiungi alla watchlist</string>
@@ -551,8 +550,6 @@
<string name="cache_menu_visit_offline">Scrivi Log offline</string>
<string name="cache_menu_spoilers">Immagini spoiler</string>
<string name="cache_menu_around">Cache qui intorno</string>
- <string name="cache_menu_set_as_cache_coords">Setta come coordinate cache</string>
- <string name="cache_menu_upload_wpt_to_gc_com">Setta come coordinate cache e carica il waypoint su Geocaching.com</string>
<string name="cache_menu_event">Aggiungi al calendario</string>
<string name="cache_menu_details">Dettagli</string>
<string name="cache_menu_share">Condividi cache</string>
@@ -599,6 +596,7 @@
<string name="cache_image_open_browser">Apri nel browser</string>
<string name="cache_share_field">Condividi</string>
<string name="cache_time_full_hours">Precise</string>
+ <string name="cache_listed_on">Elencato su %s</string>
<!-- editor dialog -->
<string name="editor_save">Salva</string>
@@ -666,16 +664,14 @@
<string name="waypoint_save_and_modify_on_website">Setta come coordinate cache in c:geo e su web</string>
<string name="waypoint_reset_cache_coords">Resetta le coordinate cache</string>
<string name="waypoint_coordinates_being_reset_on_website">Le coordinate sono in fase di reset su web</string>
- <string name="waypoint_reset_cache_coords_info">Opzioni di reset</string>
<string name="waypoint_reset">Reset</string>
<string name="waypoint_localy_reset_cache_coords">Resetta in c:geo</string>
<string name="waypoint_reset_local_and_remote_cache_coords">Resetta in c:geo e su web.</string>
+ <string name="waypoint_being_saved">Salvataggio Waypoint…</string>
<string name="waypoint_coordinates_couldnt_be_modified_on_website">Il sito web non supporta la modifica delle coordinate</string>
<string name="waypoint_coordinates_upload_error">Errore durante il caricamento delle coordinate su web</string>
<string name="waypoint_coordinates_uploading_to_website">Caricamento delle coordinate %s su web</string>
- <string name="waypoint_coordinates_reseting_on_website">Reset alle coordinate originali su web</string>
<string name="waypoint_coordinates_has_been_modified_on_website">Le coordinate cache su web sono state modificate in: %s.</string>
- <string name="waypoint_coordinates_has_been_set_as_cache_coordinates">Le coordinate cache sono state modificate in c:geo in: %s.</string>
<string name="waypoint_done">Fatto</string>
<string name="waypoint_duplicate">Duplicato</string>
<string name="waypoint_copy_of">Copia di</string>
@@ -721,7 +717,6 @@
<string name="map_strategy_auto">In base alla tua velocità</string>
<string name="map_strategy_detailed">Dettagliata</string>
<string name="live_map_notification">Nella nuova Mappa Live le coordinate potrebbero non essere sempre precise. Coordinate possibilmente imprecise sono marcate da un cerchio arancione.\nAprendo i dettagli del cache o salvando il cache per uso offline farà calcolare sempre coordinate precise.\n\nInformazioni addizionali su tutte le modifiche si possono trovare nel menu \"Info c:geo\" sulla pagina principale di questa app.</string>
- <string name="live_map_note_close">Chiudi</string>
<string name="live_map_note_dontshow">Non mostrare ancora</string>
<!-- search -->
@@ -731,8 +726,6 @@
<string name="search_coordinates_button">Cerca per coordinate</string>
<string name="search_address">Indirizzo</string>
<string name="search_address_button">Cerca per indirizzo</string>
- <string name="search_gc">GC-code</string>
- <string name="search_gc_button">Cerca per GC-code</string>
<string name="search_kw">Parole chiave</string>
<string name="search_kw_prefill">Parola chiave</string>
<string name="search_kw_button">Cerca per parola chiave</string>
@@ -779,6 +772,7 @@
<string name="user_menu_view_hidden">Cache nascosti</string>
<string name="user_menu_view_found">Cache trovati</string>
<string name="user_menu_open_browser">Apri profilo nel browser</string>
+ <string name="user_menu_send_message">Invia messaggio</string>
<!-- navigation -->
<string name="navigation">Navigazione</string>
diff --git a/main/res/values-ja/strings.xml b/main/res/values-ja/strings.xml
index 00b7c61..050bb36 100644
--- a/main/res/values-ja/strings.xml
+++ b/main/res/values-ja/strings.xml
@@ -53,6 +53,7 @@
<string name="wp_pkg">駐車場</string>
<string name="wp_trailhead">出発地点</string>
<string name="wp_waypoint">参考地点</string>
+ <string name="wp_original">オリジナル座標</string> <!-- 「初公開時の座標」の方がいいかも -->
<!-- logs -->
<string name="log_found">見つかった</string>
@@ -72,9 +73,12 @@
<string name="log_maintenance_needed">メンテナンスが必要</string>
<string name="log_update">座標を更新</string>
<string name="log_archived">アーカイブされた</string>
+ <string name="log_unarchived">アーカイブから戻った</string>
<string name="log_needs_archived">アーカイブされるべき</string>
<string name="log_discovered">発見した</string>
<string name="log_reviewer">レビューノート</string>
+ <string name="log_retractlisting">Retract Listing</string>
+ <string name="log_marked_missing">行方不明としてマーク</string>
<string name="log_tb_nothing">何もしない</string>
<string name="log_tb_visit">訪れた</string>
<string name="log_tb_drop">ここに置く</string>
@@ -113,6 +117,7 @@
<string name="log_announcement">アナウンス</string>
<string name="log_today">今日</string>
<string name="log_yesterday">昨日</string>
+ <string name="log_smilies">スマイルマーク</string>
<!-- translation -->
<string name="translate_to_sys_lang">%sに翻訳</string>
@@ -133,6 +138,7 @@
<string name="err_wrong">ログイン情報が間違っています</string>
<string name="err_maintenance">Geocaching.comはメンテナンス中で接続できません。 保存済みキャッシュのみでオフラインで動作します。</string>
<string name="err_license">Geocaching.comのライセンス契約に同意しなかったのでキャッシュの座標を見ることはできません。</string>
+ <string name="err_unvalidated_account">Geocaching.comでアカウントを有効化してください。</string>
<string name="err_unpublished">The requested cache is unpublished.</string>
<string name="err_premium_only">このキャッシュはプレミアム会員のみ有効です。</string>
<string name="err_detail_open">キャッシュの詳細を開くことができません。</string>
@@ -142,7 +148,6 @@
<string name="err_detail_cache_find_any">キャッシュ情報が一つも見つかりません。</string>
<string name="err_detail_cache_find_next">次のキャッシュ情報が見つかりません。</string>
<string name="err_detail_cache_forgot">c:geo forgot which geocache you want.</string>
- <string name="err_detail_cache_forgot_visit">c:geo forgot which cache you visited.</string>
<string name="err_detail_google_maps_limit_reached">オフライン用の地図のダウンロードに失敗しました。大量のデータをダウンロードしたと判断されGoogleマップ側に制限されたかもしれません。</string>
<string name="err_detail_no_spoiler">このキャッシュのスポイラー画像を見つけることができませんでした。</string>
<string name="err_detail_no_map_static">このキャッシュのオフライン地図を見つけることができませんでした。</string>
@@ -153,13 +158,14 @@
<string name="err_application_no">適切なアプリケーションが見つかりません。</string>
<string name="err_auth_initialize">認証プロセスの初期化に失敗しました。</string>
<string name="err_auth_process">認証プロセスに失敗しました。</string>
- <string name="err_cannot_log_visit">ログを保存するのに十分な情報がありません。キャッシュの詳細を全て入力してください。</string>
+ <string name="err_cannot_log_visit">ログを書くことができません。キャッシュの詳細画面から書き込みしてみてください。</string>
<string name="err_init_cleared">ログイン情報を消去することができません。</string>
<string name="err_download_fail">キャッシュ情報のダウンロードに失敗しました。</string>
- <string name="err_dwld_details_failed">キャッシュ情報の詳細をダウンロードすることができません。</string>
+ <string name="err_dwld_details_failed">キャッシュ情報の詳細をダウンロードすることができませんでした。</string>
<string name="err_load_descr_failed">キャッシュの説明をロードすることができません。</string>
<string name="err_location_unknown">キャッシュの場所が分かりません。</string>
<string name="err_missing_device_name">登録するにはこの端末のモデル番号を入力してください。</string>
+ <string name="err_favorite_failed">お気に入りの変更に失敗しました。</string>
<string name="err_tb_display">トラッカブルアイテムを表示することができません。本当にトラッカブルアイテムですか?</string>
<string name="err_tb_details_open">トラッカブルアイテムの詳細を開くことができません。</string>
@@ -205,6 +211,7 @@
<string name="warn_invalid_mapfile">選択した地図ファイルはMapsforge version 0.3.0フォーマットの地図ファイルではありません。\nオフライン地図は利用できません。</string>
<string name="warn_deprecated_mapfile">Mapsforge version 0.2.4フォーマットの地図ファイルは非推奨です。\nMapsforge version 0.3.0フォーマットに変更した方がいいでしょう。次のリリースでversion 0.2.4はサポートされなくなります。</string>
<string name="warn_nonexistant_mapfile">選択した地図ファイルは存在しません。\nオフライン地図は利用できません。</string>
+ <string name="warn_rendertheme_missing">地図のテーマファイルが見つかりません。</string>
<string name="info_log_posted">ログを投稿しました。</string>
@@ -221,7 +228,7 @@
<string name="loc_sat">衛星</string>
<string name="loc_trying">住所確認中</string>
<string name="loc_no_addr">住所不明</string>
- <string name="loc_gps_disabled">GPSは無効</string>
+ <string name="loc_gps_disabled">GPS無効</string>
<!-- standard menu -->
<string name="menu_about">c:geoについて</string>
@@ -263,7 +270,6 @@
<string name="caches_sort_size">サイズ</string>
<string name="caches_sort_favorites">人気</string>
<string name="caches_sort_name">名前</string>
- <string name="caches_sort_gccode">GCコード</string>
<string name="caches_sort_rating">評価</string>
<string name="caches_sort_vote">Vote (Own Rating)</string>
<string name="caches_sort_inventory">目録の数</string>
@@ -284,6 +290,7 @@
<string name="caches_drop_stored">削除</string>
<string name="caches_drop_progress">キャッシュを削除中</string>
<string name="caches_drop_all_and_list">全て削除し、リストも消去</string>
+ <string name="caches_delete_events">過去のイベントを削除</string>
<string name="caches_refresh_selected">選択したキャッシュを更新</string>
<string name="caches_refresh_all">全てのキャッシュを更新</string>
<string name="caches_move_selected">選択したキャッシュを移動</string>
@@ -336,19 +343,23 @@
<!-- init -->
<string name="init_geocaching">Geocaching.com</string>
+ <string name="init_oc">opencaching.de</string>
+ <string name="init_oc_activate">オンライン地図や検索でopencaching.deも使用する</string>
+ <string name="init_oc_username_description">見つけたキャッシュなどをマークするにはopencaching.deのユーザ名を入力してください。</string>
+ <string name="init_oc_username">ユーザ名</string>
<string name="init_gcvote">GCvote.com</string>
<string name="init_twitter">Twitter</string>
<string name="init_username">ユーザ名</string>
<string name="init_password">パスワード</string>
<string name="init_passvote">パスワード</string>
- <string name="init_login">ログインをチェックしてログイン情報を保存</string>
+ <string name="init_login">ログイン確認とログイン情報を保存</string>
<string name="init_login_popup">ログイン</string>
<string name="init_login_popup_working">ログイン中…</string>
<string name="init_login_popup_ok">ログイン完了</string>
<string name="init_login_popup_failed">ログイン失敗</string>
<string name="init_login_popup_failed_reason">ログインに失敗しました。原因: </string>
- <string name="init_twitter_authorize">c:geoを認証する</string>
- <string name="init_twitter_publish">キャッシュが見つかったら状況をツイートする</string>
+ <string name="init_twitter_authorize">c:geoを認証</string>
+ <string name="init_twitter_publish">キャッシュが見つかったら状況をツイート</string>
<string name="init_signature">署名</string>
<string name="init_signature_help_button">ヘルプ</string>
<string name="init_signature_help_title">署名のヒント</string>
@@ -365,22 +376,22 @@
<string name="init_elevationwanted">キャッシュの標高値を取得</string> <!-- 正確に訳すと高度値 -->
<string name="init_friendlogswanted">友達の書いたログを別ページに表示</string>
<string name="init_openlastdetailspage">キャッシュ情報の表示では最後に表示したページを開く</string>
- <string name="init_autoload">キャッシュの説明を自動的に全て表示する</string>
+ <string name="init_autoload">キャッシュの説明を自動的に全て表示</string>
<string name="init_other">その他のオプション</string>
- <string name="init_skin">明るい色のスキン\n(c:geoの再起動が必要)</string>
- <string name="init_address">メイン画面での現在地を座標値の代わりに地名で表示する</string>
- <string name="init_captcha">必要ならCAPTCHAを表示する(ベーシック会員のみ)</string>
- <string name="init_useenglish">c:geoを英語表示にする\n(c:geoの再起動が必要)</string>
+ <string name="init_skin">明るい色のスキンを使用\n(c:geoの再起動が必要)</string>
+ <string name="init_address">メイン画面での現在地を座標値の代わりに地名で表示</string>
+ <string name="init_captcha">必要ならCAPTCHAを表示(ベーシック会員のみ)</string>
+ <string name="init_useenglish">英語表示\n(c:geoの再起動が必要)</string>
<string name="init_exclude">自分で所有または見つけたキャッシュは除く</string>
<string name="init_showwaypoints">オンライン地図でウェイポイントの表示</string>
<string name="init_showwaypoint_description">地図に表示されてるキャッシュ数が入力した数より少ない場合にはウェイポイントも地図に表示します。</string>
<string name="init_disabled">無効化キャッシュは除く</string>
- <string name="init_offline">オフライン用にキャッシュの地図を保存する</string>
- <string name="init_offline_wp">オフライン用にウェイポイントの地図を保存する</string>
- <string name="init_save_log_img">オフライン用にログの添付画像を保存する</string>
- <string name="init_units">距離をマイル/フィートで表示\n(イギリス帝国単位)</string>
- <string name="init_log_offline">ログ書きをオフライン専用にする\n(ログを書く際にオフライン専用にし、オンラインでの投稿をしない。このチェックを外してもオフライン用に保存することは可能です)</string>
- <string name="init_livelist">キャッシュの一覧で方向をアイコン表示する</string>
+ <string name="init_offline">オフライン用にキャッシュの地図を保存</string>
+ <string name="init_offline_wp">オフライン用にウェイポイントの地図を保存</string>
+ <string name="init_save_log_img">オフライン用にログの添付画像を保存</string>
+ <string name="init_units">距離をマイル/フィートで表示</string>
+ <string name="init_log_offline">ログ書きをオフライン専用にする\n(ログを書く際にオンラインでの投稿をしない。このチェックを外してもオフライン用に保存することはできます。)</string>
+ <string name="init_livelist">キャッシュの一覧で方向をアイコン表示</string>
<string name="init_altitude">標高の修正</string>
<string name="init_altitude_description">もし現在地の標高が正しくないなら修正できます。正または負のメートル単位で入力してください。</string>
<string name="init_clear">ログイン情報を消去</string>
@@ -397,11 +408,12 @@
<string name="init_restore_failed">キャッシュのデータベースをリストアできませんでした。</string>
<string name="init_restore_running">キャッシュのデータベースをリストア中…</string>
<string name="init_restore_confirm">キャッシュのデータベースは空です。バックアップからリストアしますか?</string>
- <string name="init_backup_last">最終バックアップ日時:</string>
+ <string name="init_backup_last">前回バックアップ日時:</string>
<string name="init_backup_last_no">まだバックアップを取ったことがありません。</string>
<string name="init_mapsources">地図の設定</string>
- <string name="init_mapsources_description">オンライン地図をGoogleマップからOpenStreetMap(その派生オンライン地図やオフライン地図)に変更できます。詳細は<a href="http://code.google.com/p/mapsforge/">http://code.google.com/p/mapsforge/</a> (英語)をご覧ください。</string>
+ <string name="init_mapsources_description">オンライン地図をGoogleマップからOpenStreetMap(その派生オンライン地図やオフライン地図)に変更できます。詳細は<a href="http://code.google.com/p/mapsforge/">http://code.google.com/p/mapsforge/</a> (英語)をご覧ください。\nオフライン地図用のテーマも使用できます。</string>
<string name="init_mapsource_select">地図の選択</string>
+ <string name="init_map_directory_description">オフライン地図フォルダ</string>
<string name="init_gpx_exportdir">GPXエクスポートフォルダ</string>
<string name="init_gpx_importdir">GPXインポートフォルダ</string>
<string name="init_gpx_exportdir_description">GPXファイルへエクスポートする際の保存先フォルダを選択できます。</string>
@@ -409,7 +421,7 @@
<string name="init_maptrail">地図に軌跡を表示</string>
<string name="init_share_after_export">エクスポートした後に共有メニューを表示</string>
<string name="init_trackautovisit">「見つけた」ログを書く際に、持っているトラッカブルアイテムを自動的に「訪れた」にする</string>
- <string name="init_sigautoinsert">署名を自動的に挿入する</string>
+ <string name="init_sigautoinsert">署名を自動的に挿入</string>
<string name="init_loaddirectionimg">必要なら方向アイコンを取得(ベーシック会員のみ)</string>
<string name="init_default_navigation_tool">デフォルトのナビ</string>
<string name="init_default_navigation_tool_description">お好きなナビツールを選択できます。</string>
@@ -417,7 +429,7 @@
<string name="init_default_navigation_tool_2_description">2番目にお好きなナビツールを選択できます。キャッシュ情報のタイトルの右隣にあるナビアイコンを長押しすると起動できます。</string>
<string name="init_debug_title">デバッグ情報</string>
<string name="init_debug_note">c:geoのデバッグ情報を作成することができます。これは一般のユーザには役に立たないかもしれませんが、開発者には不具合の原因を調べるのに必要です。その時は下のチェックボックスをオンにしてログファイルを開発者に送ってください。詳しくは<a href="http://faq.cgeo.org/#1_11">c:geo FAQ - How do I send log to developers</a>(英語)をご覧ください。</string>
- <string name="init_debug">デバッグ情報を作成</string>
+ <string name="init_debug">デバッグ情報を作成する</string>
<string name="init_dbonsdcard_title">データベースの保存場所</string>
<string name="init_dbonsdcard_note">c:geoのデータベースを外部メディア(SDカード)に保存することもできます。その場合は端末の内蔵メモリの空き容量は増えますが、c:geoはSDカードなしでは使用できなくなり動作も少し遅くなるかもしれません。</string>
<string name="init_dbonsdcard">SDカードにデータベースを保存</string>
@@ -425,7 +437,11 @@
<string name="init_dbmove_running">データベースの移動中</string>
<string name="init_dbmove_success">データベースを移動しました。</string>
<string name="init_dbmove_failed">データベースの移動に失敗しました</string>
+ <string name="init_plain_logs">ログブックのフォントカラーを無効化</string>
+ <string name="init_use_native_ua">OSにブラウザとして認識させる\n(特定のインターネットプロバイダ経由でログインできない場合にチェックしてください。)</string>
+ <string name="init_rendertheme_folder">オフライン地図のテーマ用フォルダ(任意)</string>
+ <!-- map sources -->
<string name="map_source_google_map">Googleマップ:地図</string>
<string name="map_source_google_satellite">Googleマップ:航空写真</string>
<string name="map_source_osm_mapnik">OpenStreetMap</string>
@@ -435,7 +451,7 @@
<string name="init_sendToCgeo">Send to c:geo</string>
<string name="init_sendToCgeo_name">この端末のモデル番号:</string>
<string name="init_sendToCgeo_description"><b>Send 2 c:geo</b>はPCのブラウザ(FirefoxやChrome。InternetExplorerは非対応)で表示してるキャッシュ情報をアンドロイド端末に直接送ることができます。 登録する前に<a href="http://send2.cgeo.org/">http://send2.cgeo.org/</a> (英語)をお読みください。簡単な登録とブラウザに拡張機能のインストールが必要です。この<b>Send 2 c:geo</b>機能を使用しないのなら登録は不要です。</string>
- <string name="init_sendToCgeo_register">登録を申請する</string>
+ <string name="init_sendToCgeo_register">登録を申請</string>
<string name="init_sendToCgeo_registering">"Send to c:geo"にこの端末を登録しています…</string>
<string name="init_sendToCgeo_register_ok">登録しました。PINコードは####です。PCのブラウザでhttp://send2.cgeo.org/(英語)を開き、右下辺りの「Add a device…」からPINコードを入力して端末の登録を完了してください。</string>
<string name="init_sendToCgeo_register_fail">登録に失敗しました。</string>
@@ -446,9 +462,9 @@
<!-- auth -->
<string name="auth_twitter">Twitter</string>
- <string name="auth_authorize">c:geoを認証する</string>
- <string name="auth_start">認証を開始する</string>
- <string name="auth_again">再度認証を開始する</string>
+ <string name="auth_authorize">c:geoを認証</string>
+ <string name="auth_start">認証を開始</string>
+ <string name="auth_again">再度認証を開始</string>
<string name="auth_pin_hint">TwitterのPINコード</string>
<string name="auth_finish">完了</string>
<string name="auth_dialog_wait">Twitterからの返答を待っています…</string>
@@ -481,7 +497,8 @@
<string name="cache_log_images_loading">添付画像をロード中…</string>
<string name="cache_log_images_title">ログの添付画像</string>
<string name="cache_log_image_default_title">写真</string>
- <string name="cache_personal_note">Personal note</string>
+ <string name="cache_personal_note">パーソナルノート</string>
+ <string name="cache_personal_note_edit">編集</string>
<string name="cache_description">説明</string>
<string name="cache_description_long">全て表示</string>
<string name="cache_description_table_note">キャッシュ情報の説明にはhtmlを使ったテーブル表が含まれています。正しく表示するにはブラウザで開く必要があるかもしれません。</string>
@@ -493,6 +510,7 @@
<string name="cache_favpoint_not_on">このキャッシュはあなたのお気に入りに登録されていません。</string>
<string name="cache_favpoint_add">登録</string>
<string name="cache_favpoint_remove">削除</string>
+ <string name="cache_images">画像</string>
<string name="cache_waypoints">ウェイポイント</string>
<plurals name="waypoints">
@@ -523,9 +541,16 @@
<string name="cache_dialog_watchlist_add_message">ウォッチリストに追加中…</string>
<string name="cache_dialog_watchlist_remove_title">ウォッチリスト</string>
<string name="cache_dialog_watchlist_remove_message">ウォッチリストから削除中…</string>
+ <string name="cache_dialog_favourite_add_title">お気に入り</string>
+ <string name="cache_dialog_favourite_add_message">お気に入りに追加中…</string>
+ <string name="cache_dialog_favourite_remove_title">お気に入り</string>
+ <string name="cache_dialog_favourite_remove_message">お気に入りから削除中…</string>
<string name="cache_menu_navigate">ナビゲーション</string>
+ <string name="cache_menu_navigation_drive">ナビゲーション(自動車)</string>
+ <string name="cache_menu_navigation_walk">ナビゲーション(徒歩)</string>
+ <string name="cache_menu_maps_directions">Googleマップ 経路・乗換</string>
<string name="cache_menu_radar">レーダー</string>
- <string name="cache_menu_map">地図で表示</string>
+ <string name="cache_menu_map">地図</string>
<string name="cache_menu_map_static">オフライン地図</string>
<string name="cache_menu_download_map_static">オフライン用に地図をダウンロード</string>
<string name="cache_menu_rmaps">Rmaps</string>
@@ -544,12 +569,14 @@
<string name="cache_menu_whereyougo">WhereYouGo</string>
<string name="cache_menu_oruxmaps">OruxMaps</string>
<string name="cache_menu_cachebeacon">キャッシュビーコン</string>
+
<string name="cache_status">状態</string>
<string name="cache_status_offline_log">保存済みのログ</string>
<string name="cache_status_found">見つかった</string>
<string name="cache_status_archived">アーカイブ済み</string>
<string name="cache_status_disabled">無効化</string>
<string name="cache_status_premium">プレミア会員のみ</string>
+ <string name="cache_status_not_premium">全ての会員に閲覧可</string>
<string name="cache_geocode">GCコード</string>
<string name="cache_name">名前</string>
<string name="cache_type">タイプ</string>
@@ -566,9 +593,11 @@
<string name="cache_event">イベント日付</string>
<string name="cache_location">場所</string>
<string name="cache_coordinates">座標</string>
- <string name="cache_coordinates_original">出発地の座標</string>
+ <string name="cache_coordinates_original">オリジナル座標</string> <!-- 「初公開時の座標」の方がいいかも -->
<string name="cache_spoiler_images_title">スポイラー画像</string>
<string name="cache_spoiler_images_loading">スポイラー画像をロード中…</string>
+ <string name="cache_images_title">画像</string>
+ <string name="cache_images_loading">画像をロード中…</string>
<string name="cache_log_types">ログタイプ</string>
<string name="cache_coordinates_no">このキャッシュに座標値はありません。</string>
<string name="cache_clear_history">全履歴を削除</string>
@@ -578,7 +607,10 @@
<string name="cache_image_open_file">他のアプリで開く</string>
<string name="cache_image_open_browser">ブラウザで開く</string>
<string name="cache_share_field">共有</string>
- <string name="cache_time_full_hours">時</string> <!-- issues#1858 main/src/cgeo/geocaching/cgCache.java:public String guessEventTimeMinutes()説明分からイベントキャッシュの開催時間を推測 -->
+ <string name="cache_time_full_hours">時</string> <!-- issues#1858 main/src/cgeo/geocaching/Geocache.java:public String guessEventTimeMinutes()説明分からイベントキャッシュの開催時間を推測 -->
+
+ <!-- editor dialog -->
+ <string name="editor_save">保存</string>
<!-- file list base -->
<string name="file_searching_in">ファイルを検索中:\n</string>
@@ -607,10 +639,13 @@
<string name="gpx_import_error_unexpected">予期せぬエラー</string>
<string name="gpx_import_confirm">c:geoにGPXファイルをインポートしますか?</string>
<string name="gpx_import_canceled">GPXファイルのインポートが中止されました</string>
+ <string name="gpx_import_delete_title">ファイル削除</string>
+ <string name="gpx_import_delete_message">%sを削除しますか?</string>
<!-- map file select -->
<string name="map_file_select_title">地図ファイルの選択</string>
+ <!-- theme file select -->
<!-- import -->
<string name="web_import_title">Webからインポート(Send 2 c:geo経由)</string>
<string name="web_import_waiting">Webから新しいキャッシュ情報を確認中…</string>
@@ -635,6 +670,20 @@
<string name="waypoint_note">メモ</string>
<string name="waypoint_save">保存</string>
<string name="waypoint_loading">ウェイポイントをロード中…</string>
+ <string name="waypoint_do_not_touch_cache_coordinates">キャッシュ座標を変更しない</string>
+ <string name="waypoint_set_as_cache_coords">c:geo内部のみでキャッシュ座標を変更</string>
+ <string name="waypoint_save_and_modify_on_website">c:geo内部とWebサイトでキャッシュ座標を変更</string>
+ <string name="waypoint_reset_cache_coords">キャッシュ座標をリセット</string>
+ <string name="waypoint_coordinates_has_been_reset_on_website">Webサイトでのキャッシュ座標をリセットしました。</string>
+ <string name="waypoint_coordinates_being_reset_on_website">Webサイトでのキャッシュ座標をリセットしています…</string>
+ <string name="waypoint_reset">リセット</string>
+ <string name="waypoint_localy_reset_cache_coords">c:geo内部のみでリセット</string>
+ <string name="waypoint_reset_local_and_remote_cache_coords">c:geo内部とWebサイトでリセット</string>
+ <string name="waypoint_being_saved">ウェイポイントを保存中…</string>
+ <string name="waypoint_coordinates_couldnt_be_modified_on_website">Webサイトではキャッシュ座標の修正に対応していません。</string>
+ <string name="waypoint_coordinates_upload_error">Webサイトで座標の修正中にエラーが起こりました。</string>
+ <string name="waypoint_coordinates_uploading_to_website">Webサイトに座標 %s をアップロードしています。</string>
+ <string name="waypoint_coordinates_has_been_modified_on_website">Webサイトのキャッシュ座標は %s に修正されました。</string>
<string name="waypoint_done">決定</string>
<string name="waypoint_duplicate">複製</string>
<string name="waypoint_copy_of">コピー ~ </string>
@@ -647,18 +696,11 @@
<string name="waypoint_coordinate_formats_plain">プレーン</string>
<!-- distance units -->
- <string-array name="distance_units">
- <item>@string/unit_m</item>
- <item>@string/unit_km</item>
- <item>@string/unit_ft</item>
- <item>@string/unit_yd</item>
- <item>@string/unit_mi</item>
- </string-array>
- <string name="unit_m">メートル</string>
- <string name="unit_km">キロメートル</string>
- <string name="unit_ft">フィート</string>
- <string name="unit_yd">ヤード</string>
- <string name="unit_mi">マイル</string>
+ <string name="unit_m">m</string>
+ <string name="unit_km">km</string>
+ <string name="unit_ft">ft</string>
+ <string name="unit_yd">yd</string>
+ <string name="unit_mi">mi</string>
<!-- visit -->
<string name="visit_tweet">この発見をTwitterでつぶやく</string>
@@ -667,16 +709,19 @@
<string name="map_map">地図</string>
<string name="map_live">オンライン地図</string>
<string name="map_view_map">地図の変更</string>
+ <string name="map_modes">表示切替</string>
<string name="map_trail_show">軌跡を表示</string>
<string name="map_trail_hide">軌跡を非表示</string>
<string name="map_circles_show">半径161mの円を表示</string>
<string name="map_circles_hide">円を非表示</string>
+ <string name="map_theme_builtin">デフォルト</string>
+ <string name="map_theme_select">地図のテーマを選択</string>
<string name="map_live_enable">オンラインで取得</string>
<string name="map_live_disable">保存済みキャッシュのみ</string>
<string name="map_static_title">オフライン地図</string>
<string name="map_static_loading">オフライン地図をロード中…</string>
<string name="map_token_err">部分的なデータのみダウンロード可能なのでキャッシュの座標は不正確かもしれません。</string>
- <string name="map_as_list">リストで表示</string>
+ <string name="map_as_list">リスト表示</string>
<string name="map_strategy">更新方法</string>
<string name="map_strategy_title">キャッシュ情報の取得方法</string>
<string name="map_strategy_fastest">最速(座標の概算値のみ)</string>
@@ -684,8 +729,7 @@
<string name="map_strategy_auto">自動(移動速度に依存)</string>
<string name="map_strategy_detailed">詳細(「速い」+詳細)</string>
<string name="live_map_notification">現バージョンではオンライン地図の座標は正確とは限りません。不正確と思われる座標のキャッシュはオレンジ色の丸で表示されます。\nキャッシュの詳細を表示したりオフライン用に保存する際には正確な座標を取得します。\n\n詳しくはアプリ内の「c:geoについて」の変更履歴(英語)をご覧ください。</string>
- <string name="live_map_note_close">閉じる</string>
- <string name="live_map_note_dontshow">再び表示をしない</string>
+ <string name="live_map_note_dontshow">再び表示しない</string>
<!-- search -->
@@ -695,8 +739,6 @@
<string name="search_coordinates_button">座標で検索</string>
<string name="search_address">住所</string>
<string name="search_address_button">住所で検索</string>
- <string name="search_gc">GCコード</string>
- <string name="search_gc_button">GCコードで検索</string>
<string name="search_kw">キーワード</string>
<string name="search_kw_prefill">キーワード</string>
<string name="search_kw_button">キーワードで検索</string>
@@ -743,6 +785,7 @@
<string name="user_menu_view_hidden">隠したキャッシュ</string>
<string name="user_menu_view_found">見つけたキャッシュ</string>
<string name="user_menu_open_browser">ブラウザでプロフィールを開く</string>
+ <string name="user_menu_send_message">メッセージを送信</string>
<!-- navigation -->
<string name="navigation">ナビゲーション</string>
@@ -761,9 +804,9 @@
<!-- helpers -->
<string name="helper_manual_title">マニュアル</string>
- <string name="helper_manual_description">c:geoのマニュアル(英語)はこのアプリで出来る事(隠れ機能も)の全てについて書いてあります。</string>
- <string name="helper_calendar_title">c:geo calendar plugin</string>
- <string name="helper_calendar_missing">c:geo calendar pluginはインストールされていません。</string>
+ <string name="helper_manual_description">c:geoのマニュアル(英語)はこのアプリでできる事(隠れ機能も)の全てについて書いてあります。</string>
+ <string name="helper_calendar_title">c:geo - カレンダープラグイン</string>
+ <string name="helper_calendar_missing">c:geo - カレンダープラグインはインストールされていません。</string>
<string name="helper_calendar_description">イベントキャッシュをカレンダーアプリに登録することができます。</string>
<string name="helper_locus_title">Locus</string>
<string name="helper_locus_description">シンプルで役に立つ地図アプリ。オフライン用に地図を直接ダウンロード(画像データのみ)することができます。軌跡(GPSログ)を記録したり、POIを扱ったり、その他もたくさん便利な機能があります。</string>
@@ -776,7 +819,7 @@
<!-- add-ons -->
<string name="addon_missing_title">プラグインが見つかりません</string>
- <string name="addon_download_prompt">Google Playからインストールしますか?</string>
+ <string name="addon_download_prompt">Playストアからインストールしますか?</string>
<!-- export -->
<string name="export">エクスポート</string>
@@ -949,7 +992,7 @@
<string name="about_auth_1"><b>c:geo</b>がTwitterにアクセスする許可を得るには次のようにしてください。</string>
<string name="about_auth_2">「認証を開始する」ボタンを押すとブラウザでTwitterのページが開きます。そのページにログインすれば<b>c:geo</b>があなたのアカウントにアクセルする許可が得られます。ログインに成功したら数字のPINコードが表示されるので、この下の入力欄にコピー&amp;ペーストして「完了」ボタンを押してください。</string>
- <!-- status -->
+ <!-- status (used via string based resource loading) -->
<string name="status_new_release" tools:ignore="UnusedResources">新しいバージョンがあります。\nクリックしてインストールしてください。</string>
<string name="status_new_nightly" tools:ignore="UnusedResources">新しいナイトリービルドがあります。\nクリックしてインストールしてください。</string>
<string name="status_new_rc" tools:ignore="UnusedResources">新しいRCバージョンがあります。\nクリックしてインストールしてください。</string>
diff --git a/main/res/values-nb/strings.xml b/main/res/values-nb/strings.xml
index b10871e..1cf6bf5 100644
--- a/main/res/values-nb/strings.xml
+++ b/main/res/values-nb/strings.xml
@@ -98,7 +98,6 @@
<string name="err_detail_cache_find_any">Beklager, c:geo klarte ikke finne geocacher..</string>
<string name="err_detail_cache_find_next">Beklager, c:geo klarte ikke å finne den neste geocachen.</string>
<string name="err_detail_cache_forgot">Beklager, c:geo glemte hvilken cache du ønsket.</string>
- <string name="err_detail_cache_forgot_visit">Beklager, c:geo glemte hvilken cache du fant.</string>
<string name="err_detail_no_spoiler">c:geo fant ingen bilder for denne cachen.</string>
<string name="err_detail_no_map_static">c:geo fant ingen statiske kart for denne cachen.</string>
<string name="err_application_no">c:geo klarte ikke å finne en passende applikasjon.</string>
@@ -340,8 +339,8 @@
<string name="search_coordinates_button">Søk med koordinater</string>
<string name="search_address">Adresse</string>
<string name="search_address_button">Søk med adresse</string>
- <string name="search_gc">Geokode</string>
- <string name="search_gc_button">Søk med geokode</string>
+ <string name="search_geo">Geokode</string>
+ <string name="search_geo_button">Søk med geokode</string>
<string name="search_kw">Nøkklord</string>
<string name="search_kw_prefill">Nøkkelord</string>
<string name="search_kw_button">Søk med nøkkelord</string>
diff --git a/main/res/values-nl/strings.xml b/main/res/values-nl/strings.xml
index 48de4aa..cb1b78e 100644
--- a/main/res/values-nl/strings.xml
+++ b/main/res/values-nl/strings.xml
@@ -140,7 +140,6 @@
<string name="err_detail_cache_find_any">Sorry, c:geo kan geen enkele geocache vinden.</string>
<string name="err_detail_cache_find_next">Sorry, c:geo kan de volgende cache niet vinden.</string>
<string name="err_detail_cache_forgot">Sorry, c:geo is kwijt welke geocache je wilde openen.</string>
- <string name="err_detail_cache_forgot_visit">Sorry, c:geo is vergeten welke cache je bezocht.</string>
<string name="err_detail_no_spoiler">c:geo Heeft geen spoiler images gevonden voor deze cache.</string>
<string name="err_detail_no_map_static">c:geo Heeft geen statische kaarten gevonden voor deze cache.</string>
<string name="err_detail_not_load_map_static">Sorry, c:geo kon de statische kaart niet laden.</string>
@@ -256,7 +255,7 @@
<string name="caches_sort_size">formaat</string>
<string name="caches_sort_favorites">populariteit</string>
<string name="caches_sort_name">naam</string>
- <string name="caches_sort_gccode">GC-code</string>
+ <string name="caches_sort_geocode">geocode</string>
<string name="caches_sort_rating">waardering</string>
<string name="caches_sort_vote">stemmen (eigen waardering)</string>
<string name="caches_sort_inventory">aantal items</string>
@@ -456,7 +455,7 @@
<string name="cache_personal_note">Persoonlijke aantekening</string>
<string name="cache_description">Omschrijving</string>
<string name="cache_description_long">Lange omschrijving</string>
- <string name="cache_description_table_note">Omschrijving bevat een tabel-layout welke misschien op geocaching.com bekeken moet worden.</string>
+ <string name="cache_description_table_note">Omschrijving bevat een tabel-layout welke misschien op %s bekeken moet worden.</string>
<string name="cache_watchlist_on">Deze cache komt voor op je watchlist.</string>
<string name="cache_watchlist_not_on">Deze cache komt niet voor op je watchlist.</string>
<string name="cache_watchlist_add">Voeg aan watchlist toe</string>
@@ -634,8 +633,8 @@
<string name="search_coordinates_button">Zoeken op coördinaten</string>
<string name="search_address">Adres</string>
<string name="search_address_button">Zoeken op adres</string>
- <string name="search_gc">Geocode</string>
- <string name="search_gc_button">Zoeken op geocode</string>
+ <string name="search_geo">Geocode</string>
+ <string name="search_geo_button">Zoeken op geocode</string>
<string name="search_kw">Trefwoorden</string>
<string name="search_kw_prefill">Trefwoord</string>
<string name="search_kw_button">Zoeken op trefwoord</string>
diff --git a/main/res/values-pl/strings.xml b/main/res/values-pl/strings.xml
index e8c4b63..0a9e96f 100644
--- a/main/res/values-pl/strings.xml
+++ b/main/res/values-pl/strings.xml
@@ -146,7 +146,6 @@
<string name="err_detail_cache_find_any">c:geo nie mógł znaleźć żadnej skrzynki.</string>
<string name="err_detail_cache_find_next">c:geo nie mógł znaleźć następnych skrzynek.</string>
<string name="err_detail_cache_forgot">c:geo zapomniał którą skrzynkę chcesz obejrzeć.</string>
- <string name="err_detail_cache_forgot_visit">c:geo zapomniał którą skrzynkę odwiedziłeś.</string>
<string name="err_detail_google_maps_limit_reached">c:geo nie był w stanie pobrać map statycznych. Może limit map Google został wyczerpany.</string>
<string name="err_detail_no_spoiler">c:geo nie znalazł zdjęcia spoilera dla tej skrzynki.</string>
<string name="err_detail_no_map_static">c:geo nie znalazł map statycznych dla tej skrzynki.</string>
@@ -268,7 +267,6 @@
<string name="caches_sort_size">rozmiaru</string>
<string name="caches_sort_favorites">popularności</string>
<string name="caches_sort_name">nazwy</string>
- <string name="caches_sort_gccode">GC-kodu</string>
<string name="caches_sort_rating">oceny</string>
<string name="caches_sort_vote">głosów (Twoja ocena)</string>
<string name="caches_sort_inventory">liczebności inwentarza</string>
@@ -496,7 +494,7 @@
<string name="cache_personal_note">Notatka osobista</string>
<string name="cache_description">Opis</string>
<string name="cache_description_long">Długi opis</string>
- <string name="cache_description_table_note">Opis zawiera formatowanie w formie tabeli, które w celu poprawnego wyświetlania może wymagać odwiedzenia geocaching.com.</string>
+ <string name="cache_description_table_note">Opis zawiera formatowanie w formie tabeli, które w celu poprawnego wyświetlania może wymagać odwiedzenia %s.</string>
<string name="cache_watchlist_on">Ta skrzynka jest na Twojej liście obserwowanych.</string>
<string name="cache_watchlist_not_on">Ta skrzynka nie jest na Twojej liście obserwowanych.</string>
<string name="cache_watchlist_add">Dodaj do listy obserwowanych</string>
@@ -555,8 +553,6 @@
<string name="cache_menu_visit_offline">Wpisz wizytę offline</string>
<string name="cache_menu_spoilers">Zdjęcia spoiler</string>
<string name="cache_menu_around">Skrzynki w okręgu</string>
- <string name="cache_menu_set_as_cache_coords">Ustaw jako współrzędne skrzynki</string>
- <string name="cache_menu_upload_wpt_to_gc_com">Ustaw jako współrzędne skrzynki i wyślij punkt nawigacji do Geocaching.com</string>
<string name="cache_menu_event">Dodaj do kalendarza</string>
<string name="cache_menu_details">Szczegóły</string>
<string name="cache_menu_share">Podziel się skrzynką</string>
@@ -670,16 +666,13 @@
<string name="waypoint_reset_cache_coords">Ustaw ponownie współrzędne skrzynki</string>
<string name="waypoint_coordinates_has_been_reset_on_website">Współrzędne skrzynki zostały ustawione ponownie na stronie WWW.</string>
<string name="waypoint_coordinates_being_reset_on_website">Ponowne ustawianie współrzędnych skrzynki na na stronie WWW…</string>
- <string name="waypoint_reset_cache_coords_info">Opcje ponownego ustawiania współrzędnych</string>
<string name="waypoint_reset">Ponowne ustawianie</string>
<string name="waypoint_localy_reset_cache_coords">Ponowne ustawianie w c:geo</string>
<string name="waypoint_reset_local_and_remote_cache_coords">Ponowne ustawianie w c:geo i na stronie WWW</string>
<string name="waypoint_coordinates_couldnt_be_modified_on_website">Strona WWW nie wspiera zmiany współrzędnych skrzynki.</string>
<string name="waypoint_coordinates_upload_error">Wystąpił błąd podczas modyfikacji współrzędnych na stronie WWW.</string>
<string name="waypoint_coordinates_uploading_to_website">Wysyłanie współrzędnych %s do strony WWW.</string>
- <string name="waypoint_coordinates_reseting_on_website">Powracanie do oryginalnych współrzędnych na stronie WWW.</string>
<string name="waypoint_coordinates_has_been_modified_on_website">Współrzędne skrzynki zostały zmienione na stronie WWW na: %s.</string>
- <string name="waypoint_coordinates_has_been_set_as_cache_coordinates">Współrzędne skrzynki zostały zmieonone w c:geo na: %s.</string>
<string name="waypoint_done">Wykonane</string>
<string name="waypoint_duplicate">Duplikat</string>
<string name="waypoint_copy_of">Kopia</string>
@@ -725,7 +718,6 @@
<string name="map_strategy_auto">Zależna od prędkości</string>
<string name="map_strategy_detailed">Szczegółowa</string>
<string name="live_map_notification">Na nowej mapie live, współrzędnie nie zawsze muszą być dokładne. Prawdopodobne niedokładne współrzędne są zaznaczane za pomocą pomarańczowych okręgów.\nOtworzenie współrzędnych skrzynki lub zapisanie skrzynki do użytku offline zawsze używa precyzyjnych współrzędnych.\n\nWięcej informacji na temat wszystkich zmian można odnaleźć na stronie \"O c:geo\" wewnątrz programu.</string>
- <string name="live_map_note_close">Zamknij</string>
<string name="live_map_note_dontshow">Nie pokazuj ponownie</string>
<!-- search -->
@@ -735,8 +727,6 @@
<string name="search_coordinates_button">Szukaj według współrzędnych</string>
<string name="search_address">Adres</string>
<string name="search_address_button">Szukaj według adresu</string>
- <string name="search_gc">GC-kod</string>
- <string name="search_gc_button">Szukaj według GC-kodu</string>
<string name="search_kw">Słowa kluczowe</string>
<string name="search_kw_prefill">Słowo kluczowe</string>
<string name="search_kw_button">Szukaj wg słowa kluczowego</string>
diff --git a/main/res/values-pt/strings.xml b/main/res/values-pt/strings.xml
index d8acac3..6bca8c6 100644
--- a/main/res/values-pt/strings.xml
+++ b/main/res/values-pt/strings.xml
@@ -144,7 +144,6 @@
<string name="err_detail_cache_find_any">O c:geo não encontra qualquer geocache.</string>
<string name="err_detail_cache_find_next">O c:geo não encontra as próximas geocaches.</string>
<string name="err_detail_cache_forgot">O c:geo esqueceu a geocache pretendida.</string>
- <string name="err_detail_cache_forgot_visit">O c:geo esqueceu a cache que visitou.</string>
<string name="err_detail_google_maps_limit_reached">O c:geo falhou no download dos mapas. Talvez o tenha atingido o limite do Google Maps.</string>
<string name="err_detail_no_spoiler">O c:geo não encontrou images spoiler para esta cache.</string>
<string name="err_detail_no_map_static">O c:geo não encontrou mapas estáticos para esta cache.</string>
@@ -266,7 +265,6 @@
<string name="caches_sort_size">tamanho</string>
<string name="caches_sort_favorites">popularidade</string>
<string name="caches_sort_name">nome</string>
- <string name="caches_sort_gccode">código GC</string>
<string name="caches_sort_rating">pontuação</string>
<string name="caches_sort_vote">votos (pontuação própria)</string>
<string name="caches_sort_inventory">somatório do inventário</string>
@@ -493,7 +491,7 @@
<string name="cache_personal_note_edit">Editar</string>
<string name="cache_description">Descrição</string>
<string name="cache_description_long">Descrição longa</string>
- <string name="cache_description_table_note">A descrição contém a formatação da tabela que pode ser necessário para ser vista correctamente em Geocaching.com.</string>
+ <string name="cache_description_table_note">A descrição contém a formatação da tabela que pode ser necessário para ser vista correctamente em %s.</string>
<string name="cache_watchlist_on">Esta cache está na sua lista de observação.</string>
<string name="cache_watchlist_not_on">Esta cache não está na sua lista de observação.</string>
<string name="cache_watchlist_add">Adicionar à lista de observação</string>
@@ -695,7 +693,6 @@
<string name="map_strategy_auto">Dependente da velocidade</string>
<string name="map_strategy_detailed">Detalhado</string>
<string name="live_map_notification">No novo mapa ao vivo as coordenadas podem nem sempre ser precisas. As coordenadas possivelmente imprecisas são marcadas com um círculo cor de laranja.\nAbrindo os detalhes da cache or gravando a cache para utilização offline fará com que obtenha as coordenadas precisas.\n\nMais informações em todas as alterações podem ser encontradas na página \"Sobre c:geo\" na aplicação.</string>
- <string name="live_map_note_close">Fechar</string>
<string name="live_map_note_dontshow">Não mostrar novamente</string>
@@ -706,8 +703,6 @@
<string name="search_coordinates_button">Pesquisar por coordenadas</string>
<string name="search_address">Endereço</string>
<string name="search_address_button">Pesquisar por endereço</string>
- <string name="search_gc">Código-GC</string>
- <string name="search_gc_button">Pesquisar por código-GC</string>
<string name="search_kw">Palavras-chave</string>
<string name="search_kw_prefill">Palavra-chave</string>
<string name="search_kw_button">Pesquisar por palavra-chave</string>
diff --git a/main/res/values-sk/strings.xml b/main/res/values-sk/strings.xml
index 0593da5..3b5c509 100644
--- a/main/res/values-sk/strings.xml
+++ b/main/res/values-sk/strings.xml
@@ -143,7 +143,6 @@
<string name="err_detail_cache_find_any">Prepáčte, c:geo nemôže nájsť žiadnu skrýšu.</string>
<string name="err_detail_cache_find_next">Prepáčte, c:geo nemôže nájsť ďalšiu skrýšu.</string>
<string name="err_detail_cache_forgot">Prepáčte, c:geo zabudlo, akú skrýšu chcete zobraziť.</string>
- <string name="err_detail_cache_forgot_visit">Prepáčte, c:geo zabudlo, akú skrýšu ste prezerali.</string>
<string name="err_detail_google_maps_limit_reached">c:geo sa nepodarilo prevziať statické mapy. Je možné, že bol dosiahnutý limit Google mapy.</string>
<string name="err_detail_no_spoiler">c:geo nenašla pre túto skrýšu žiaden spoilerový obrázok.</string>
<string name="err_detail_no_map_static">c:geo nenašla žiadnu statickú mapu pre túto skrýšu.</string>
@@ -265,7 +264,7 @@
<string name="caches_sort_size">veľkosti</string>
<string name="caches_sort_favorites">obľúbenosti</string>
<string name="caches_sort_name">názvu</string>
- <string name="caches_sort_gccode">GC kódu</string>
+ <string name="caches_sort_geocode">Geokódu</string>
<string name="caches_sort_rating">hodnotenia</string>
<string name="caches_sort_vote">hlasovania (vlastného hodn.)</string>
<string name="caches_sort_inventory">počtu položiek v skrýši</string>
@@ -492,7 +491,7 @@
<string name="cache_personal_note_edit">Upraviť</string>
<string name="cache_description">Popis</string>
<string name="cache_description_long">Dlhý popis</string>
- <string name="cache_description_table_note">Popis obsahuje formátovanie tabuľky, ktorý môže byť pre správne zobrazenie potrebné otvoriť v geocaching.com.</string>
+ <string name="cache_description_table_note">Popis obsahuje formátovanie tabuľky, ktorý môže byť pre správne zobrazenie potrebné otvoriť v %s.</string>
<string name="cache_watchlist_on">Skrýša je vo vašom zozname sledovaných.</string>
<string name="cache_watchlist_not_on">Skrýša nie je vo vašom zozname sledovaných.</string>
<string name="cache_watchlist_add">Pridať do zoznamu sledovaných</string>
@@ -700,7 +699,6 @@
<string name="map_strategy_auto">Podľa rýchlosti</string>
<string name="map_strategy_detailed">Podrobná</string>
<string name="live_map_notification">Na novej aktívnej mape nemusia byť súradnice vždy presné. Súradnice, ktoré môžu byť nepresné, sú označené oranžovým krúžkom.\nPo otvorení detailu skrýše, alebo po jej uložení pre použitie offline, sú získané vždy presné súradnice.\n\nViac informácií ku všetkým zmenám sa nachádzajú na stránke „O c:geo“ v aplikácii.</string>
- <string name="live_map_note_close">Zatvoriť</string>
<string name="live_map_note_dontshow">Nabudúce nezobrazovať</string>
@@ -711,8 +709,8 @@
<string name="search_coordinates_button">Hľadať podľa súradníc</string>
<string name="search_address">Adresa</string>
<string name="search_address_button">Hľadať podľa adresy</string>
- <string name="search_gc">Geokód</string>
- <string name="search_gc_button">Hľadať podľa Geokódu</string>
+ <string name="search_geo">Geokód</string>
+ <string name="search_geo_button">Hľadať podľa Geokódu</string>
<string name="search_kw">Kľúčové slová</string>
<string name="search_kw_prefill">Kľúčové slová</string>
<string name="search_kw_button">Hľadať podľa kľúčových slov</string>
diff --git a/main/res/values-sv/strings.xml b/main/res/values-sv/strings.xml
index 54a8824..b2d2ada 100644
--- a/main/res/values-sv/strings.xml
+++ b/main/res/values-sv/strings.xml
@@ -147,7 +147,6 @@
<string name="err_detail_cache_find_any">Tyvärr kan c:geo inte hitta någon geocache.</string>
<string name="err_detail_cache_find_next">Tyvärr kan c:geo inte hitta nästa geocache.</string>
<string name="err_detail_cache_forgot">Tyvärr glömde c:geo vilken geocache du ville se.</string>
- <string name="err_detail_cache_forgot_visit">Tyvärr glömde c:geo vilken cache tittade på.</string>
<string name="err_detail_google_maps_limit_reached">c:geo kunde inte hämta kartor. Eventuellt kan Google Maps gräns ha uppnåtts.</string>
<string name="err_detail_no_spoiler">c:geo hittade inga spoiler bilder för den här cachen.</string>
<string name="err_detail_no_map_static">c:geo hittade inga sparade kartor för denna cache.</string>
@@ -269,7 +268,6 @@
<string name="caches_sort_size">Storlek</string>
<string name="caches_sort_favorites">Favoriter</string>
<string name="caches_sort_name">Namn</string>
- <string name="caches_sort_gccode">GC-kod (ålder)</string>
<string name="caches_sort_rating">Betyg (GC-vote)</string>
<string name="caches_sort_vote">Betyg (eget)</string>
<string name="caches_sort_inventory">Antal trackable</string>
@@ -501,7 +499,7 @@
<string name="cache_personal_note_edit">Redigera</string>
<string name="cache_description">Beskrivning</string>
<string name="cache_description_long">Lång beskrivning</string>
- <string name="cache_description_table_note">Varning från c:geo! Beskrivningen innehåller HTML-tabeller som eventuellt kan behöva öppnas i en webbläsare för att visas på önskat sätt.</string>
+ <string name="cache_description_table_note">Varning från c:geo! Beskrivningen innehåller HTML-tabeller som eventuellt kan behöva öppnas i en webbläsare för att visas på önskat sätt %s.</string>
<string name="cache_watchlist_on">Den här cachen finns i din watchlist.</string>
<string name="cache_watchlist_not_on">Den här cachen finns inte i din watchlist.</string>
<string name="cache_watchlist_add">Lägg till i watchlist</string>
@@ -561,8 +559,6 @@
<string name="cache_menu_visit_offline">Logga besök offline</string>
<string name="cache_menu_spoilers">Spoiler bilder</string>
<string name="cache_menu_around">Cacher i närheten</string>
- <string name="cache_menu_set_as_cache_coords">Sätt som cachens koordinater</string>
- <string name="cache_menu_upload_wpt_to_gc_com">Sätt som cachens koordinater och ladda upp waypoint till Geocaching.com</string>
<string name="cache_menu_event">Lägg till i kalender</string>
<string name="cache_menu_details">Detaljer</string>
<string name="cache_menu_share">Skicka länk</string>
@@ -671,19 +667,19 @@
<string name="waypoint_note">Kommentar</string>
<string name="waypoint_save">Spara</string>
<string name="waypoint_loading">Laddar punkt…</string>
+ <string name="waypoint_do_not_touch_cache_coordinates">Ingen förändring av cachens koordinater</string>
<string name="waypoint_set_as_cache_coords">Ange som cachens koordinater i c:geo</string>
+ <string name="waypoint_save_and_modify_on_website">Ange som cachens koordinater i c:geo och på hemsidan</string>
<string name="waypoint_reset_cache_coords">Återställ cachens koordinater</string>
<string name="waypoint_coordinates_has_been_reset_on_website">Cachens koordinater har återställts på hemsidan.</string>
<string name="waypoint_coordinates_being_reset_on_website">Återställer cachens koordinater på hemsidan…</string>
- <string name="waypoint_reset_cache_coords_info">Återställningsalternativ</string>
<string name="waypoint_reset">Återställ</string>
<string name="waypoint_localy_reset_cache_coords">Återställ koordinaterna i c:geo</string>
+ <string name="waypoint_reset_local_and_remote_cache_coords">Återställ i c:geo och på hemsidan</string>
<string name="waypoint_coordinates_couldnt_be_modified_on_website">Hemsidan kan inte hantera att ändra cachens koordinater.</string>
<string name="waypoint_coordinates_upload_error">Ett fel inträffade när koordinaterna skulle ändras på hemsidan.</string>
<string name="waypoint_coordinates_uploading_to_website">Laddar upp koordinaterna %s till hemsidan.</string>
- <string name="waypoint_coordinates_reseting_on_website">Återställer till ursprungliga koordinaterna på hemsidan.</string>
<string name="waypoint_coordinates_has_been_modified_on_website">Cachens koordinater på hemsidan har ändrats till: %s.</string>
- <string name="waypoint_coordinates_has_been_set_as_cache_coordinates">Cachens koordinater har ändrats i c:geo till: %s.</string>
<string name="waypoint_done">Klar</string>
<string name="waypoint_duplicate">Duplicera</string>
<string name="waypoint_copy_of">Kopia av</string>
@@ -722,7 +718,6 @@
<string name="map_strategy_auto">Hastighetsberoende (gps)</string>
<string name="map_strategy_detailed">Exakta positioner</string>
<string name="live_map_notification">I den nya Live kartan så är koordinaterna inte alltid exakta. En cache med potentiellt oexakta koordinater är markerad med en orange cirkel.\nGenom att visa detaljer för cachen eller genom att spara cachen för offline kommer alltid exakta koordinater att hämtas.\n\nMer information om alla förändringar finns på \"Om c:geo\" sidan, som kan nås från c:geo\'s startsida.</string>
- <string name="live_map_note_close">Stäng</string>
<string name="live_map_note_dontshow">Visa inte mer</string>
<!-- search -->
@@ -732,8 +727,6 @@
<string name="search_coordinates_button">Sök med koordinater</string>
<string name="search_address">Adress</string>
<string name="search_address_button">Sök med adress</string>
- <string name="search_gc">GC-kod</string>
- <string name="search_gc_button">Sök med GC-kod</string>
<string name="search_kw">Nyckelord</string>
<string name="search_kw_prefill">Nyckelord</string>
<string name="search_kw_button">Sök med nyckelord</string>
@@ -780,6 +773,7 @@
<string name="user_menu_view_hidden">Gömda cacher</string>
<string name="user_menu_view_found">Hittade cacher</string>
<string name="user_menu_open_browser">Öppna profil i webbläsaren</string>
+ <string name="user_menu_send_message">Skicka meddelande</string>
<!-- navigation -->
<string name="navigation">Navigering</string>
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index 601f874..3f70e44 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -146,6 +146,7 @@
<string name="err_wrong">Login information incorrect</string>
<string name="err_maintenance">Geocaching.com is down for maintenance. c:geo works offline with Stored caches.</string>
<string name="err_license">You have not agreed to Geocaching.com license agreement, so c:geo can\'t load cache coordinates.</string>
+ <string name="err_unvalidated_account">You must validate your account on Geocaching.com web site first.</string>
<string name="err_unpublished">The requested cache is unpublished.</string>
<string name="err_premium_only">This Cache is only available to Geocaching.com Premium Members.</string>
<string name="err_detail_open">c:geo can\'t open geocache details.</string>
@@ -155,7 +156,6 @@
<string name="err_detail_cache_find_any">c:geo can\'t find any geocache.</string>
<string name="err_detail_cache_find_next">c:geo can\'t find next geocaches.</string>
<string name="err_detail_cache_forgot">c:geo forgot which geocache you want.</string>
- <string name="err_detail_cache_forgot_visit">c:geo forgot which cache you visited.</string>
<string name="err_detail_google_maps_limit_reached">c:geo failed to download static maps. Maybe google maps limit is reached.</string>
<string name="err_detail_no_spoiler">c:geo found no spoiler images for this cache.</string>
<string name="err_detail_no_map_static">c:geo found no static maps for this cache.</string>
@@ -278,7 +278,7 @@
<string name="caches_sort_size">Size</string>
<string name="caches_sort_favorites">Popularity</string>
<string name="caches_sort_name">Name</string>
- <string name="caches_sort_gccode">GC-Code</string>
+ <string name="caches_sort_geocode">Geo Code</string>
<string name="caches_sort_rating">Rating</string>
<string name="caches_sort_vote">Vote (Own Rating)</string>
<string name="caches_sort_inventory">Count of Inventory</string>
@@ -317,6 +317,7 @@
<string name="caches_filter_track">With Trackables</string>
<string name="caches_filter_clear">Clear filters</string>
<string name="caches_filter_modified">With modified coordinates</string>
+ <string name="caches_filter_origin">Origin</string>
<string name="caches_removing_from_history">Removing from History…</string>
<!-- caches lists -->
@@ -400,6 +401,7 @@
<string name="init_save_log_img">Save Images from Logs</string>
<string name="init_units">Use Imperial Units instead of Metric Units</string>
<string name="init_log_offline">Enable Offline Logging\n(Don\'t show online Log screen when logging, don\'t send the Log online)</string>
+ <string name="init_choose_list">Ask for list when storing caches</string>
<string name="init_livelist">Show Direction to caches in the list</string>
<string name="init_altitude">Altitude Correction</string>
<string name="init_altitude_description">If your GPS is calculating a wrong altitude, you can correct it with a positive or negative number. The correction always has to be given in meters.</string>
@@ -510,7 +512,7 @@
<string name="cache_personal_note_edit">Edit</string>
<string name="cache_description">Description</string>
<string name="cache_description_long">Long Description</string>
- <string name="cache_description_table_note">Description contains table formatting which may need to be viewed at geocaching.com to be seen correctly.</string>
+ <string name="cache_description_table_note">Description contains table formatting which may need to be viewed at %s to be seen correctly.</string>
<string name="cache_watchlist_on">This cache is on your watchlist.</string>
<string name="cache_watchlist_not_on">This cache is not on your watchlist.</string>
<string name="cache_watchlist_add">Add to Watchlist</string>
@@ -519,6 +521,9 @@
<string name="cache_favpoint_not_on">This cache is not one of your favorites.</string>
<string name="cache_favpoint_add">Add</string>
<string name="cache_favpoint_remove">Remove</string>
+ <string name="cache_list_text">List:</string>
+ <string name="cache_list_change">Move</string>
+ <string name="cache_list_unknown">Not in a list</string>
<string name="cache_images">Images</string>
<string name="cache_waypoints">Waypoints</string>
@@ -570,8 +575,6 @@
<string name="cache_menu_visit_offline">Log Visit offline</string>
<string name="cache_menu_spoilers">Spoiler images</string>
<string name="cache_menu_around">Caches around</string>
- <string name="cache_menu_set_as_cache_coords">Set as cache coords</string>
- <string name="cache_menu_upload_wpt_to_gc_com">Set as cache coords and upload waypoint to Geocaching.com</string>
<string name="cache_menu_event">Add to calendar</string>
<string name="cache_menu_details">Details</string>
<string name="cache_menu_share">Share cache</string>
@@ -588,7 +591,7 @@
<string name="cache_status_disabled">Disabled</string>
<string name="cache_status_premium">Premium Members only</string>
<string name="cache_status_not_premium">All Members Access</string>
- <string name="cache_geocode">GC-code</string>
+ <string name="cache_geocode">Geo code</string>
<string name="cache_name">Name</string>
<string name="cache_type">Type</string>
<string name="cache_size">Size</string>
@@ -619,6 +622,7 @@
<string name="cache_image_open_browser">Open in browser</string>
<string name="cache_share_field">Share</string>
<string name="cache_time_full_hours">o\'clock</string>
+ <string name="cache_listed_on">Listed on %s</string>
<!-- editor dialog -->
<string name="editor_save">Save</string>
@@ -687,16 +691,14 @@
<string name="waypoint_reset_cache_coords">Reset cache coordinates</string>
<string name="waypoint_coordinates_has_been_reset_on_website">Cache coordinates have been reset on website.</string>
<string name="waypoint_coordinates_being_reset_on_website">Resetting cache coordinates on website…</string>
- <string name="waypoint_reset_cache_coords_info">Coordinate reset options</string>
<string name="waypoint_reset">Reset</string>
<string name="waypoint_localy_reset_cache_coords">Reset in c:geo</string>
<string name="waypoint_reset_local_and_remote_cache_coords">Reset in c:geo and on website</string>
+ <string name="waypoint_being_saved">Waypoint is being saved…</string>
<string name="waypoint_coordinates_couldnt_be_modified_on_website">Website doesn\'t support modifying cache coordinates.</string>
<string name="waypoint_coordinates_upload_error">Error occurred while modifying coordinates on website.</string>
<string name="waypoint_coordinates_uploading_to_website">Uploading coordinates %s to website.</string>
- <string name="waypoint_coordinates_reseting_on_website">Resetting to original coordinates on website.</string>
<string name="waypoint_coordinates_has_been_modified_on_website">Cache coordinates on website have been modified to: %s.</string>
- <string name="waypoint_coordinates_has_been_set_as_cache_coordinates">Cache coordinates have been changed in c:geo to: %s.</string>
<string name="waypoint_done">Done</string>
<string name="waypoint_duplicate">Duplicate</string>
<string name="waypoint_copy_of">Copy of</string>
@@ -742,7 +744,6 @@
<string name="map_strategy_auto">Speed dependent</string>
<string name="map_strategy_detailed">Detailed</string>
<string name="live_map_notification">On the new live map coordinates may not always be precise. Possibly imprecise coordinates are marked by an orange circle.\nOpening the cache details or saving the cache for offline use will always obtain precise coordinates.\n\nMore information on all changes can be found on the \"About c:geo\" page inside the app.</string>
- <string name="live_map_note_close">Close</string>
<string name="live_map_note_dontshow">Do not show again</string>
@@ -753,8 +754,8 @@
<string name="search_coordinates_button">Search by coordinates</string>
<string name="search_address">Address</string>
<string name="search_address_button">Search by address</string>
- <string name="search_gc">GC-code</string>
- <string name="search_gc_button">Search by GC-code</string>
+ <string name="search_geo">Geo code</string>
+ <string name="search_geo_button">Search by geo code</string>
<string name="search_kw">Keywords</string>
<string name="search_kw_prefill">Keyword</string>
<string name="search_kw_button">Search by keyword</string>
@@ -801,6 +802,7 @@
<string name="user_menu_view_hidden">Caches hidden</string>
<string name="user_menu_view_found">Caches found</string>
<string name="user_menu_open_browser">Open profile in browser</string>
+ <string name="user_menu_send_message">Send message</string>
<!-- navigation -->
<string name="navigation">Navigation</string>
@@ -851,10 +853,7 @@
<string name="export_gpx_info">The GPX file will be exported to %1$s with current date and time as file name.</string>
<string name="export_gpx_to">Send exported GPX to</string>
- <!-- attribute unknown -->
- <string name="attribute_unknown_yes">Unknown attribute present</string>
- <string name="attribute_unknown_no">Unknown attribute not present</string>
- <!-- attributes (permissions -> allowed, not allowed) -->
+ <!-- GC attributes -->
<string name="attribute_dogs_yes">Dogs allowed</string>
<string name="attribute_dogs_no">Dogs not allowed</string>
<string name="attribute_bicycles_yes">Bicycles allowed</string>
@@ -873,8 +872,6 @@
<string name="attribute_campfires_no">Campfires not allowed</string>
<string name="attribute_rv_yes">Truck driver/RV allowed</string>
<string name="attribute_rv_no">Truck driver/RV not allowed</string>
-
- <!-- attributes (conditions -> yes, no) -->
<string name="attribute_kids_yes">Recommended for kids</string>
<string name="attribute_kids_no">Not recommended for kids</string>
<string name="attribute_onehour_yes">Takes less than an hour</string>
@@ -927,8 +924,6 @@
<string name="attribute_landf_no">No lost and found tour</string>
<string name="attribute_partnership_yes">Partnership cache</string>
<string name="attribute_partnership_no">No partnership cache</string>
-
- <!-- attributes (equipment -> required, not required) -->
<string name="attribute_fee_yes">Access or parking fee required</string>
<string name="attribute_fee_no">Access or parking fee not required</string>
<string name="attribute_rappelling_yes">Climbing gear required</string>
@@ -951,8 +946,6 @@
<string name="attribute_wirelessbeacon_no">No wireless beacon</string>
<string name="attribute_treeclimbing_yes">Tree climbing required</string>
<string name="attribute_treeclimbing_no">Tree climbing not required</string>
-
- <!-- attributes (hazards -> present, not present) -->
<string name="attribute_poisonoak_yes">Poisonous plants</string>
<string name="attribute_poisonoak_no">No poisonous plants</string>
<string name="attribute_dangerousanimals_yes">Dangerous animals</string>
@@ -969,8 +962,6 @@
<string name="attribute_danger_no">No dangerous area</string>
<string name="attribute_thorn_yes">Thorns</string>
<string name="attribute_thorn_no">No thorns</string>
-
- <!-- attributes (facilities -> yes, no) -->
<string name="attribute_wheelchair_yes">Wheelchair accessible</string>
<string name="attribute_wheelchair_no">Not wheelchair accessible</string>
<string name="attribute_parking_yes">Parking available</string>
@@ -993,6 +984,64 @@
<string name="attribute_fuel_no">No fuel nearby</string>
<string name="attribute_food_yes">Food nearby</string>
<string name="attribute_food_no">No food nearby</string>
+ <string name="attribute_oc_only_yes">Only loggable at Opencaching</string>
+ <string name="attribute_oc_only_no">Not only loggable at Opencaching</string>
+ <string name="attribute_link_only_yes">Hyperlink to another caching portal only</string>
+ <string name="attribute_link_only_no">Not only a hyperlink to another caching portal</string>
+ <string name="attribute_letterbox_yes">Letterbox (needs stamp)</string>
+ <string name="attribute_letterbox_no">No letterbox (no stamp needed)</string>
+ <string name="attribute_railway_yes">Active railway nearby</string>
+ <string name="attribute_railway_no">No active railway nearby</string>
+ <string name="attribute_syringe_yes">First aid available</string>
+ <string name="attribute_syringe_no">No first aid available</string>
+ <string name="attribute_swamp_yes">Swamp or marsh</string>
+ <string name="attribute_swamp_no">No swamp or marsh</string>
+ <string name="attribute_hills_yes">Hilly area</string>
+ <string name="attribute_hills_no">No hilly area</string>
+ <string name="attribute_poi_yes">Point of interest</string>
+ <string name="attribute_poi_no">No point of interest</string>
+ <string name="attribute_moving_target_yes">Moving target</string>
+ <string name="attribute_moving_target_no">No moving target</string>
+ <string name="attribute_webcam_yes">Webcam</string>
+ <string name="attribute_webcam_no">No webcam</string>
+ <string name="attribute_inside_yes">Within enclosed rooms (caves, buildings etc.)</string>
+ <string name="attribute_inside_no">Not within enclosed rooms</string>
+ <string name="attribute_in_water_yes">In the water</string>
+ <string name="attribute_in_water_no">Not in the water</string>
+ <string name="attribute_no_gps_yes">Without GPS (letterboxes, cistes, compass juggling ...)</string>
+ <string name="attribute_no_gps_no">With GPS</string>
+ <string name="attribute_overnight_yes">Overnight stay necessary</string>
+ <string name="attribute_overnight_no">No overnight stay necessary</string>
+ <string name="attribute_specific_times_yes">Only available at specified times</string>
+ <string name="attribute_specific_times_no">Not only available at specified times</string>
+ <string name="attribute_day_yes">by day only</string>
+ <string name="attribute_day_no">Not only by day</string>
+ <string name="attribute_tide_yes">Tide</string>
+ <string name="attribute_tide_no">No tide</string>
+ <string name="attribute_all_seasons_yes">All seasons</string>
+ <string name="attribute_all_seasons_no">Not all seasons</string>
+ <string name="attribute_breeding_yes">Breeding season / protected nature</string>
+ <string name="attribute_breeding_no">No breeding season / protected nature</string>
+ <string name="attribute_snow_proof_yes">Snow-proof hiding place</string>
+ <string name="attribute_snow_proof_no">No snow-proof hiding place</string>
+ <string name="attribute_compass_yes">Compass</string>
+ <string name="attribute_compass_no">No compass</string>
+ <string name="attribute_cave_yes">Cave equipment</string>
+ <string name="attribute_cave_no">No cave equipment</string>
+ <string name="attribute_aircraft_yes">Aircraft</string>
+ <string name="attribute_aircraft_no">No aircraft</string>
+ <string name="attribute_investigation_yes">Investigation</string>
+ <string name="attribute_investigation_no">No investigation</string>
+ <string name="attribute_puzzle_yes">Puzzle / Mystery</string>
+ <string name="attribute_puzzle_no">No puzzle / mystery</string>
+ <string name="attribute_arithmetic_yes">Arithmetical problem</string>
+ <string name="attribute_arithmetic_no">No arithmetical problem</string>
+ <string name="attribute_other_cache_yes">Other cache type</string>
+ <string name="attribute_other_cache_no">No other cache type</string>
+ <string name="attribute_ask_owner_yes">Ask owner for start conditions</string>
+ <string name="attribute_ask_owner_no">Don\'t ask owner for start conditions</string>
+ <string name="attribute_unknown_yes">Unknown attribute present</string>
+ <string name="attribute_unknown_no">No unknown attribute present</string>
<!-- next things -->
<string name="legal_note">To use the services of Geocaching.com, terms and conditions of the <a href="http://www.geocaching.com/about/termsofuse.aspx">Groundspeak disclaimer</a> have to be agreed.</string>
diff --git a/main/res/values/strings_not_translatable.xml b/main/res/values/strings_not_translatable.xml
index 3678357..1853fac 100644
--- a/main/res/values/strings_not_translatable.xml
+++ b/main/res/values/strings_not_translatable.xml
@@ -79,20 +79,25 @@
<string name="changelog" translatable="false">\n
<b>Next release</b>\n\n
<b>New Features/Functions:</b>\n
+ · Support of opencaching.de online API in live map and nearby search\n
+ · Support for searching opencaching.nl caches\n
· Alphabetical sorting of OSM:Offline maps in map selection\n
· Color markers also in trackable logbook\n
· Edit cache type filter by clicking on filter bar\n
- · Support for searching opencaching.nl caches\n
· Inverse sorting of cache lists (hit the same menu again)\n
- · view pager in trackable activity\n
- · menu item to delete past events\n
- · ability to select "all" list from main screen\n
+ · View pager in trackable activity\n
+ · Menu item to delete past events\n
+ · Settings: Option to ask for list to store caches in\n
+ · Change list in cache details\n
+ · Ability to select \"All\" list from main screen\n
+ · Default log type for event caches will be \"Attended\" if \"Will attend\" was logged before\n
+ · Improved and extended cache type detection on live map\n
\n
<b>Bugfixing:</b>\n
· Final flag icon lost when updating cache with self defined final\n
· Bad selection in directory chooser\n
- · Scanning geocode by QR code\n
- · Log type "Retract Listing" now parsed correctly\n
+ · Log type \"Retract Listing\" now parsed correctly\n
+ · Active cache detail page now remembered when rotating device\n
\n
<a href="https://github.com/cgeo/c-geo-opensource/issues?milestone=9&amp;state=closed">Detailed list of all changes</a>\n
\n
@@ -112,4 +117,4 @@
· Please refer to the release notes on the <a href="http://www.cgeo.org">c:geo-website</a>.\n
\n</string>
-</resources> \ No newline at end of file
+</resources>
diff --git a/main/res/values/themes.xml b/main/res/values/themes.xml
index 5c2c861..fdc2eeb 100644
--- a/main/res/values/themes.xml
+++ b/main/res/values/themes.xml
@@ -53,6 +53,7 @@
<!-- system values -->
<!-- own values: colors -->
+ <item name="android:windowBackground">@color/just_white</item>
<item name="text_color">@color/text_light</item>
<item name="text_color_headline">@color/text_headline_light</item>
<item name="text_color_grey">@color/text_grey_light</item>
@@ -121,4 +122,36 @@
<item name="compass">0</item>
</style>
+ <!-- TODO: Popup probably doesn't need all these fields set. Should delete unnecessary ones. -->
+ <style name="popup_light" parent="cgeo_popup">
+ <!-- system values -->
+
+ <!-- own values: colors -->
+ <item name="android:windowBackground">@color/just_white</item>
+ <item name="text_color">@color/text_light</item>
+ <item name="text_color_headline">@color/text_headline_light</item>
+ <item name="text_color_grey">@color/text_grey_light</item>
+ <item name="text_color_hint">@color/text_hint_light</item>
+ <item name="background_color">@color/background_light</item>
+ <item name="background_color_notice">@color/background_light_notice</item>
+ <item name="background_color_transparent">@color/background_light_transparent</item>
+ <item name="separator_color">@color/separator_light</item>
+
+ <!-- own values: drawables -->
+ <item name="button">@drawable/action_button_light</item>
+ <item name="input">@drawable/input_bcg_light</item>
+ <item name="inventory">@drawable/inventory_background_light</item>
+ <item name="favourite">@drawable/favourite_background_light</item>
+ <item name="favourite_r">@drawable/favourite_background_red_light</item>
+ <item name="favourite_o">@drawable/favourite_background_orange_light</item>
+ <item name="favourite_g">@drawable/favourite_background_green_light</item>
+ <item name="close">@drawable/map_close_light</item>
+ <item name="log_img_icon">@drawable/log_img_light</item>
+ <item name="actionbar_compass">@drawable/actionbar_compass_light</item>
+ <item name="progressSpinnerLarge">@android:style/Widget.ProgressBar.Large.Inverse</item>
+
+ <!-- own values: other -->
+ <item name="compass">1</item>
+ </style>
+
</resources> \ No newline at end of file
diff --git a/main/src/android/support/v4/app/FragmentListActivity.java b/main/src/android/support/v4/app/FragmentListActivity.java
index d392ac6..e3ed42c 100644
--- a/main/src/android/support/v4/app/FragmentListActivity.java
+++ b/main/src/android/support/v4/app/FragmentListActivity.java
@@ -188,6 +188,7 @@ public class FragmentListActivity extends FragmentActivity {
private boolean mFinishedStart = false;
private Runnable mRequestFocus = new Runnable() {
+ @Override
public void run() {
mList.focusableViewAvailable(mList);
}
@@ -305,6 +306,7 @@ public class FragmentListActivity extends FragmentActivity {
}
private AdapterView.OnItemClickListener mOnClickListener = new AdapterView.OnItemClickListener() {
+ @Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
onListItemClick((ListView)parent, v, position, id);
diff --git a/main/src/cgeo/geocaching/AboutActivity.java b/main/src/cgeo/geocaching/AboutActivity.java
index b7a14ff..c154ffb 100644
--- a/main/src/cgeo/geocaching/AboutActivity.java
+++ b/main/src/cgeo/geocaching/AboutActivity.java
@@ -17,7 +17,7 @@ public class AboutActivity extends AbstractActivity {
super.onCreate(savedInstanceState);
setTheme();
- setContentView(R.layout.about);
+ setContentView(R.layout.about_activity);
setTitle(res.getString(R.string.about));
((TextView) findViewById(R.id.about_version_string)).setText(Version.getVersionName(this));
diff --git a/main/src/cgeo/geocaching/AbstractLoggingActivity.java b/main/src/cgeo/geocaching/AbstractLoggingActivity.java
index eaeffb0..37c3643 100644
--- a/main/src/cgeo/geocaching/AbstractLoggingActivity.java
+++ b/main/src/cgeo/geocaching/AbstractLoggingActivity.java
@@ -51,7 +51,7 @@ public abstract class AbstractLoggingActivity extends AbstractActivity {
menu.findItem(MENU_SIGNATURE).setVisible(signatureAvailable);
boolean smileyVisible = false;
- final cgCache cache = getLogContext().getCache();
+ final Geocache cache = getLogContext().getCache();
if (cache != null && ConnectorFactory.getConnector(cache).equals(GCConnector.getInstance())) {
smileyVisible = true;
}
diff --git a/main/src/cgeo/geocaching/AbstractPopupActivity.java b/main/src/cgeo/geocaching/AbstractPopupActivity.java
index db9a04c..f903d00 100644
--- a/main/src/cgeo/geocaching/AbstractPopupActivity.java
+++ b/main/src/cgeo/geocaching/AbstractPopupActivity.java
@@ -1,6 +1,7 @@
package cgeo.geocaching;
import cgeo.geocaching.activity.AbstractActivity;
+import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.apps.cache.navi.NavigationAppFactory;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.LoadFlags;
@@ -37,9 +38,8 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
private static final int MENU_NAVIGATION = 3;
private static final int MENU_DEFAULT_NAVIGATION = 2;
private static final int MENU_SHOW_IN_BROWSER = 7;
- protected static final String EXTRA_GEOCODE = "geocode";
- protected cgCache cache = null;
+ protected Geocache cache = null;
protected String geocode = null;
protected CacheDetailsCreator details;
@@ -130,6 +130,8 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ // set theme
+ this.setTheme(ActivityMixin.getDialogTheme());
// set layout
setContentView(layout);
setTitle(res.getString(R.string.detail));
@@ -137,7 +139,7 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
// get parameters
final Bundle extras = getIntent().getExtras();
if (extras != null) {
- geocode = extras.getString(EXTRA_GEOCODE);
+ geocode = extras.getString(Intents.EXTRA_GEOCODE);
}
if (StringUtils.isBlank(geocode)) {
diff --git a/main/src/cgeo/geocaching/AdressListActivity.java b/main/src/cgeo/geocaching/AddressListActivity.java
index 8ce16dd..b1de065 100644
--- a/main/src/cgeo/geocaching/AdressListActivity.java
+++ b/main/src/cgeo/geocaching/AddressListActivity.java
@@ -16,7 +16,7 @@ import android.os.Bundle;
import java.util.List;
import java.util.Locale;
-public class AdressListActivity extends AbstractListActivity {
+public class AddressListActivity extends AbstractListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -27,7 +27,7 @@ public class AdressListActivity extends AbstractListActivity {
setTitle(res.getString(R.string.search_address_result));
// get parameters
- final String keyword = getIntent().getStringExtra("keyword");
+ final String keyword = getIntent().getStringExtra(Intents.EXTRA_KEYWORD);
if (keyword == null) {
showToast(res.getString(R.string.err_search_address_forgot));
@@ -46,7 +46,7 @@ public class AdressListActivity extends AbstractListActivity {
@Override
protected List<Address> doInBackground(Void... params) {
- final Geocoder geocoder = new Geocoder(AdressListActivity.this, Locale.getDefault());
+ final Geocoder geocoder = new Geocoder(AddressListActivity.this, Locale.getDefault());
try {
return geocoder.getFromLocationName(keyword, 20);
} catch (Exception e) {
@@ -55,7 +55,7 @@ public class AdressListActivity extends AbstractListActivity {
Log.i("No geocoder available");
}
else {
- Log.e("AdressListActivity.doInBackground", e);
+ Log.e("AddressListActivity.doInBackground", e);
}
return null;
}
@@ -70,7 +70,7 @@ public class AdressListActivity extends AbstractListActivity {
}
} else {
finish();
- cgeocaches.startActivityAddress(AdressListActivity.this, null, keyword);
+ cgeocaches.startActivityAddress(AddressListActivity.this, null, keyword);
}
}
diff --git a/main/src/cgeo/geocaching/CacheCache.java b/main/src/cgeo/geocaching/CacheCache.java
index e027a8a..e70b7a0 100644
--- a/main/src/cgeo/geocaching/CacheCache.java
+++ b/main/src/cgeo/geocaching/CacheCache.java
@@ -20,10 +20,10 @@ import java.util.Set;
public class CacheCache {
private static final int MAX_CACHED_CACHES = 1000;
- final private LeastRecentlyUsedMap<String, cgCache> cachesCache;
+ final private LeastRecentlyUsedMap<String, Geocache> cachesCache;
public CacheCache() {
- cachesCache = new LeastRecentlyUsedMap.LruCache<String, cgCache>(MAX_CACHED_CACHES);
+ cachesCache = new LeastRecentlyUsedMap.LruCache<String, Geocache>(MAX_CACHED_CACHES);
cachesCache.setRemoveHandler(new CacheRemoveHandler());
}
@@ -51,7 +51,7 @@ public class CacheCache {
* Cache
*
*/
- public void putCacheInCache(final cgCache cache) {
+ public void putCacheInCache(final Geocache cache) {
if (cache == null) {
throw new IllegalArgumentException("cache must not be null");
}
@@ -69,7 +69,7 @@ public class CacheCache {
* Geocode of the cache to retrieve from the cache
* @return cache if found, null else
*/
- public cgCache getCacheFromCache(final String geocode) {
+ public Geocache getCacheFromCache(final String geocode) {
if (StringUtils.isBlank(geocode)) {
throw new IllegalArgumentException("geocode must not be empty");
}
@@ -80,14 +80,14 @@ public class CacheCache {
public synchronized Set<String> getInViewport(final Viewport viewport, final CacheType cacheType) {
final Set<String> geocodes = new HashSet<String>();
- for (final cgCache cache : cachesCache.values()) {
+ for (final Geocache cache : cachesCache.values()) {
if (cache.getCoords() == null) {
// FIXME: this kludge must be removed, it is only present to help us debug the cases where
// caches contain null coordinates.
Log.e("CacheCache.getInViewport: got cache with null coordinates: " + cache.getGeocode());
continue;
}
- if ((CacheType.ALL == cacheType || cache.getType() == cacheType) && viewport.contains(cache)) {
+ if (cacheType.contains(cache) && viewport.contains(cache)) {
geocodes.add(cache.getGeocode());
}
}
@@ -99,10 +99,10 @@ public class CacheCache {
return StringUtils.join(cachesCache.keySet(), ' ');
}
- private static class CacheRemoveHandler implements RemoveHandler<cgCache> {
+ private static class CacheRemoveHandler implements RemoveHandler<Geocache> {
@Override
- public void onRemove(final cgCache removed) {
+ public void onRemove(final Geocache removed) {
// FIXME: as above, we sometimes get caches with null coordinates, that may then provoke
// a NullPointerException down the invocation chain.
if (removed.getCoords() != null) {
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java
index 634eea6..f35d599 100644
--- a/main/src/cgeo/geocaching/CacheDetailActivity.java
+++ b/main/src/cgeo/geocaching/CacheDetailActivity.java
@@ -19,13 +19,15 @@ import cgeo.geocaching.network.HtmlImage;
import cgeo.geocaching.network.Network;
import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.ui.AbstractCachingPageViewCreator;
+import cgeo.geocaching.ui.AnchorAwareLinkMovementMethod;
import cgeo.geocaching.ui.CacheDetailsCreator;
import cgeo.geocaching.ui.DecryptTextClickListener;
-import cgeo.geocaching.ui.EditorDialog;
import cgeo.geocaching.ui.Formatter;
import cgeo.geocaching.ui.ImagesList;
import cgeo.geocaching.ui.ImagesList.ImageType;
import cgeo.geocaching.ui.LoggingUI;
+import cgeo.geocaching.ui.WeakReferenceHandler;
+import cgeo.geocaching.ui.dialog.EditorDialog;
import cgeo.geocaching.utils.BaseUtils;
import cgeo.geocaching.utils.CancellableHandler;
import cgeo.geocaching.utils.ClipboardUtils;
@@ -35,6 +37,7 @@ import cgeo.geocaching.utils.HtmlUtils;
import cgeo.geocaching.utils.ImageHelper;
import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.MatcherWrapper;
+import cgeo.geocaching.utils.RunnableWithArgument;
import cgeo.geocaching.utils.TranslationUtils;
import cgeo.geocaching.utils.UnknownTagsHandler;
@@ -45,7 +48,6 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import android.R.color;
-import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
@@ -53,6 +55,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
@@ -76,6 +79,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
+import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
@@ -88,7 +92,6 @@ import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
-import android.widget.RadioButton;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.TextView.BufferType;
@@ -129,8 +132,9 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
private static final int CONTEXT_MENU_WAYPOINT_RESET_ORIGINAL_CACHE_COORDINATES = 1241;
private static final Pattern DARK_COLOR_PATTERN = Pattern.compile(Pattern.quote("color=\"#") + "(0[0-9]){3}" + "\"");
+ public static final String STATE_PAGE_INDEX = "cgeo.geocaching.pageIndex";
- private cgCache cache;
+ private Geocache cache;
private final Progress progress = new Progress();
private SearchResult search;
@@ -214,9 +218,9 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
String name = null;
String guid = null;
if (geocode == null && extras != null) {
- geocode = extras.getString("geocode");
- name = extras.getString("name");
- guid = extras.getString("guid");
+ geocode = extras.getString(Intents.EXTRA_GEOCODE);
+ name = extras.getString(Intents.EXTRA_NAME);
+ guid = extras.getString(Intents.EXTRA_GUID);
}
// try to get data from URI
@@ -287,7 +291,9 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
});
- final int pageToOpen = Settings.isOpenLastDetailsPage() ? Settings.getLastDetailsPage() : 1;
+ final int pageToOpen = savedInstanceState != null ?
+ savedInstanceState.getInt(STATE_PAGE_INDEX, 0) :
+ Settings.isOpenLastDetailsPage() ? Settings.getLastDetailsPage() : 1;
createViewPager(pageToOpen, new OnPageSelectedListener() {
@Override
@@ -307,6 +313,12 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
@Override
+ public void onSaveInstanceState(final Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putInt(STATE_PAGE_INDEX, getCurrentItem());
+ }
+
+ @Override
public void onResume() {
super.onResume();
@@ -337,9 +349,10 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
final int viewId = view.getId();
contextMenuWPIndex = -1;
switch (viewId) {
- case R.id.value: // coordinates
+ case R.id.value: // coordinates, gc-code, name
clickedItemText = ((TextView) view).getText();
- buildOptionsContextmenu(menu, viewId, res.getString(R.string.cache_coordinates), true);
+ String itemTitle = (String) ((TextView) ((View) view.getParent()).findViewById(R.id.name)).getText();
+ buildOptionsContextmenu(menu, viewId, itemTitle, true);
break;
case R.id.shortdesc:
clickedItemText = ((TextView) view).getText();
@@ -498,7 +511,15 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
break;
case CONTEXT_MENU_WAYPOINT_RESET_ORIGINAL_CACHE_COORDINATES:
- new ResetCacheCoordinatesDialog(cache, cache.getWaypoint(index), this).show();
+ final Waypoint waypointReset = cache.getWaypoint(index);
+ if (ConnectorFactory.getConnector(cache).supportsOwnCoordinates()) {
+ createResetCacheCoordinatesDialog(cache, waypointReset).show();
+ }
+ else {
+ final ProgressDialog progressDialog = ProgressDialog.show(this, getString(R.string.cache), getString(R.string.waypoint_reset), true);
+ final HandlerResetCoordinates handler = new HandlerResetCoordinates(this, progressDialog, false);
+ new ResetCoordsThread(cache, handler, waypointReset, true, false, progressDialog).start();
+ }
break;
default:
@@ -677,7 +698,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
@Override
public void run() {
- search = cgCache.searchByGeocode(geocode, StringUtils.isBlank(geocode) ? guid : null, 0, false, handler);
+ search = Geocache.searchByGeocode(geocode, StringUtils.isBlank(geocode) ? guid : null, 0, false, handler);
handler.sendMessage(Message.obtain());
}
}
@@ -757,14 +778,14 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
/**
- * Tries to navigate to the {@link cgCache} of this activity.
+ * Tries to navigate to the {@link Geocache} of this activity.
*/
private void startDefaultNavigation() {
NavigationAppFactory.startDefaultNavigationApplication(1, this, cache);
}
/**
- * Tries to navigate to the {@link cgCache} of this activity.
+ * Tries to navigate to the {@link Geocache} of this activity.
*/
private void startDefaultNavigation2() {
NavigationAppFactory.startDefaultNavigationApplication(2, this, cache);
@@ -833,7 +854,8 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
private void showUserActionsDialog(final CharSequence name) {
final CharSequence[] items = { res.getString(R.string.user_menu_view_hidden),
res.getString(R.string.user_menu_view_found),
- res.getString(R.string.user_menu_open_browser)
+ res.getString(R.string.user_menu_open_browser),
+ res.getString(R.string.user_menu_send_message)
};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
@@ -851,6 +873,9 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
case 2:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/profile/?u=" + Network.encode(name.toString()))));
return;
+ case 3:
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/email/?u=" + Network.encode(name.toString()))));
+ return;
default:
break;
}
@@ -878,7 +903,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
public static void startActivity(final Context context, final String geocode) {
final Intent detailIntent = new Intent(context, CacheDetailActivity.class);
- detailIntent.putExtra("geocode", geocode);
+ detailIntent.putExtra(Intents.EXTRA_GEOCODE, geocode);
context.startActivity(detailIntent);
}
@@ -1023,8 +1048,8 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
final boolean strikethru = !CacheAttribute.isEnabled(attributeName);
- final CacheAttribute attrib = CacheAttribute.getByGcRawName(CacheAttribute.trimAttributeName(attributeName));
- if (attrib != CacheAttribute.UNKNOWN) {
+ final CacheAttribute attrib = CacheAttribute.getByRawName(CacheAttribute.trimAttributeName(attributeName));
+ if (attrib != null) {
noAttributeIconsFound = false;
Drawable d = res.getDrawable(attrib.drawableId);
iv.setImageDrawable(d);
@@ -1038,7 +1063,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
fl.addView(strikethruImage);
}
} else {
- Drawable d = res.getDrawable(R.drawable.attribute_icon_not_found);
+ Drawable d = res.getDrawable(R.drawable.attribute_unknown);
iv.setImageDrawable(d);
}
@@ -1065,10 +1090,11 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
for (String attributeName : cache.getAttributes()) {
final boolean enabled = CacheAttribute.isEnabled(attributeName);
// search for a translation of the attribute
- CacheAttribute attrib = CacheAttribute.getByGcRawName(CacheAttribute.trimAttributeName(attributeName));
- if (attrib != CacheAttribute.UNKNOWN) {
- attributeName = attrib.getL10n(enabled);
+ CacheAttribute attrib = CacheAttribute.getByRawName(CacheAttribute.trimAttributeName(attributeName));
+ if (attrib == null) {
+ attrib = CacheAttribute.UNKNOWN;
}
+ attributeName = attrib.getL10n(enabled);
if (buffer.length() > 0) {
buffer.append('\n');
}
@@ -1121,10 +1147,10 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
span.setSpan(new ForegroundColorSpan(res.getColor(R.color.archived_cache_color)), 0, span.toString().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
- details.add(R.string.cache_name, span);
+ registerForContextMenu(details.add(R.string.cache_name, span));
details.add(R.string.cache_type, cache.getType().getL10n());
details.addSize(cache);
- details.add(R.string.cache_geocode, cache.getGeocode());
+ registerForContextMenu(details.add(R.string.cache_geocode, cache.getGeocode()));
details.addCacheState(cache);
details.addDistance(cache, cacheDistanceView);
@@ -1196,12 +1222,12 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
// cache attributes
- if (cache.getAttributes().isNotEmpty()) {
+ if (!cache.getAttributes().isEmpty()) {
new AttributeViewBuilder().fillView((LinearLayout) view.findViewById(R.id.attributes_innerbox));
view.findViewById(R.id.attributes_box).setVisibility(View.VISIBLE);
}
- updateOfflineBox();
+ updateOfflineBox(view, cache, res, new RefreshCacheClickListener(), new DropCacheClickListener(), new StoreCacheClickListener());
// watchlist
Button buttonWatchlistAdd = (Button) view.findViewById(R.id.add_to_watchlist);
@@ -1217,6 +1243,11 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
buttonFavPointRemove.setOnClickListener(new FavoriteRemoveClickListener());
updateFavPointBox();
+ // list
+ Button buttonChangeList = (Button) view.findViewById(R.id.change_list);
+ buttonChangeList.setOnClickListener(new ChangeListClickListener());
+ updateListBox();
+
// data license
IConnector connector = ConnectorFactory.getConnector(cache);
if (connector != null) {
@@ -1286,6 +1317,21 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
return;
}
+ if (Settings.getChooseList()) {
+ // let user select list to store cache in
+ new StoredList.UserInterface(CacheDetailActivity.this).promptForListSelection(R.string.list_title,
+ new RunnableWithArgument<Integer>() {
+ @Override
+ public void run(final Integer selectedListId) {
+ storeCache(selectedListId);
+ }
+ }, true, StoredList.TEMPORARY_LIST_ID);
+ } else {
+ storeCache(StoredList.TEMPORARY_LIST_ID);
+ }
+ }
+
+ protected void storeCache(int listId) {
final StoreCacheHandler storeCacheHandler = new StoreCacheHandler();
progress.show(CacheDetailActivity.this, res.getString(R.string.cache_dialog_offline_save_title), res.getString(R.string.cache_dialog_offline_save_message), true, storeCacheHandler.cancelMessage());
@@ -1294,7 +1340,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
storeThread.interrupt();
}
- storeThread = new StoreCacheThread(storeCacheHandler);
+ storeThread = new StoreCacheThread(listId, storeCacheHandler);
storeThread.start();
}
}
@@ -1321,15 +1367,17 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
private class StoreCacheThread extends Thread {
+ final private int listId;
final private CancellableHandler handler;
- public StoreCacheThread(final CancellableHandler handler) {
+ public StoreCacheThread(final int listId, final CancellableHandler handler) {
+ this.listId = listId;
this.handler = handler;
}
@Override
public void run() {
- cache.store(handler);
+ cache.store(listId, handler);
}
}
@@ -1514,6 +1562,38 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
/**
+ * Listener for "change list" button
+ */
+ private class ChangeListClickListener implements View.OnClickListener {
+ @Override
+ public void onClick(View view) {
+ new StoredList.UserInterface(CacheDetailActivity.this).promptForListSelection(R.string.list_title,
+ new RunnableWithArgument<Integer>() {
+ @Override
+ public void run(final Integer selectedListId) {
+ switchListById(selectedListId);
+ }
+ }, true, cache.getListId());
+ }
+ }
+
+ /**
+ * move cache to another list
+ *
+ * @param listId
+ * the ID of the list
+ */
+ public void switchListById(int listId) {
+ if (listId < 0) {
+ return;
+ }
+
+ Settings.saveLastList(listId);
+ cgData.moveToList(cache, listId);
+ updateListBox();
+ }
+
+ /**
* shows/hides buttons, sets text in watchlist box
*/
private void updateWatchlistBox() {
@@ -1527,7 +1607,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
Button buttonRemove = (Button) view.findViewById(R.id.remove_from_watchlist);
TextView text = (TextView) view.findViewById(R.id.watchlist_text);
- if (cache.isOnWatchlist() || cache.isOwn()) {
+ if (cache.isOnWatchlist() || cache.isOwner()) {
buttonAdd.setVisibility(View.GONE);
buttonRemove.setVisibility(View.VISIBLE);
text.setText(R.string.cache_watchlist_on);
@@ -1538,7 +1618,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
// the owner of a cache has it always on his watchlist. Adding causes an error
- if (cache.isOwn()) {
+ if (cache.isOwner()) {
buttonAdd.setEnabled(false);
buttonAdd.setVisibility(View.GONE);
buttonRemove.setEnabled(false);
@@ -1554,7 +1634,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
LinearLayout layout = (LinearLayout) view.findViewById(R.id.favpoint_box);
boolean supportsFavoritePoints = cache.supportsFavoritePoints();
layout.setVisibility(supportsFavoritePoints ? View.VISIBLE : View.GONE);
- if (!supportsFavoritePoints || cache.isOwn() || !Settings.isPremiumMember()) {
+ if (!supportsFavoritePoints || cache.isOwner() || !Settings.isPremiumMember()) {
return;
}
Button buttonAdd = (Button) view.findViewById(R.id.add_to_favpoint);
@@ -1581,6 +1661,31 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
/**
+ * shows/hides/updates list box
+ */
+ private void updateListBox() {
+ View box = view.findViewById(R.id.list_box);
+
+ if (cache.isOffline()) {
+ // show box
+ box.setVisibility(View.VISIBLE);
+
+ // update text
+ TextView text = (TextView) view.findViewById(R.id.list_text);
+ StoredList list = cgData.getList(cache.getListId());
+ if (list != null) {
+ text.setText(res.getString(R.string.cache_list_text) + " " + list.title);
+ } else {
+ // this should not happen
+ text.setText(R.string.cache_list_unknown);
+ }
+ } else {
+ // hide box
+ box.setVisibility(View.GONE);
+ }
+ }
+
+ /**
* Handler, called when watchlist add or remove is done
*/
private class WatchlistHandler extends Handler {
@@ -1596,46 +1701,6 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
}
- private void updateOfflineBox() {
- // offline use
- final TextView offlineText = (TextView) view.findViewById(R.id.offline_text);
- final Button offlineRefresh = (Button) view.findViewById(R.id.offline_refresh);
- final Button offlineStore = (Button) view.findViewById(R.id.offline_store);
-
- if (cache.isOffline()) {
- long diff = (System.currentTimeMillis() / (60 * 1000)) - (cache.getDetailedUpdate() / (60 * 1000)); // minutes
-
- String ago;
- if (diff < 15) {
- ago = res.getString(R.string.cache_offline_time_mins_few);
- } else if (diff < 50) {
- ago = res.getString(R.string.cache_offline_time_about) + " " + diff + " " + res.getString(R.string.cache_offline_time_mins);
- } else if (diff < 90) {
- ago = res.getString(R.string.cache_offline_time_about) + " " + res.getString(R.string.cache_offline_time_hour);
- } else if (diff < (48 * 60)) {
- ago = res.getString(R.string.cache_offline_time_about) + " " + (diff / 60) + " " + res.getString(R.string.cache_offline_time_hours);
- } else {
- ago = res.getString(R.string.cache_offline_time_about) + " " + (diff / (24 * 60)) + " " + res.getString(R.string.cache_offline_time_days);
- }
-
- offlineText.setText(res.getString(R.string.cache_offline_stored) + "\n" + ago);
- offlineRefresh.setOnClickListener(new RefreshCacheClickListener());
-
- offlineStore.setText(res.getString(R.string.cache_offline_drop));
- offlineStore.setClickable(true);
- offlineStore.setOnClickListener(new DropCacheClickListener());
- } else {
- offlineText.setText(res.getString(R.string.cache_offline_not_ready));
- offlineRefresh.setOnClickListener(new RefreshCacheClickListener());
-
- offlineStore.setText(res.getString(R.string.cache_offline_store));
- offlineStore.setClickable(true);
- offlineStore.setOnClickListener(new StoreCacheClickListener());
- }
- offlineRefresh.setVisibility(cache.supportsRefresh() ? View.VISIBLE : View.GONE);
- offlineRefresh.setClickable(true);
- }
-
private class PreviewMapTask extends AsyncTask<Void, Void, BitmapDrawable> {
@Override
protected BitmapDrawable doInBackground(Void... parameters) {
@@ -1658,7 +1723,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
}
- private Bitmap decode(final cgCache cache) {
+ private Bitmap decode(final Geocache cache) {
return StaticMapsProvider.getPreviewMap(cache.getGeocode());
}
@@ -1872,7 +1937,9 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
// sometimes technically incorrect.
if (unknownTagsHandler.isProblematicDetected() && descriptionView != null) {
final int startPos = description.length();
- ((Editable) description).append("\n\n").append(res.getString(R.string.cache_description_table_note));
+ final IConnector connector = ConnectorFactory.getConnector(cache);
+ final Spanned tableNote = Html.fromHtml(res.getString(R.string.cache_description_table_note, "<a href=\"" + cache.getUrl() + "\">" + connector.getName() + "</a>"));
+ ((Editable) description).append("\n\n").append(tableNote);
((Editable) description).setSpan(new StyleSpan(Typeface.ITALIC), startPos, description.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
publishProgress();
}
@@ -1892,7 +1959,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
if (description != null) {
if (StringUtils.isNotBlank(descriptionString)) {
descriptionView.setText(description, TextView.BufferType.SPANNABLE);
- descriptionView.setMovementMethod(LinkMovementMethod.getInstance());
+ descriptionView.setMovementMethod(AnchorAwareLinkMovementMethod.getInstance());
fixBlackTextColor(descriptionView, descriptionString);
}
@@ -1978,7 +2045,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
}
- final List<LogEntry> logs = allLogs ? cache.getLogs().asList() : cache.getFriendsLogs();
+ final List<LogEntry> logs = allLogs ? cache.getLogs() : cache.getFriendsLogs();
view.setAdapter(new ArrayAdapter<LogEntry>(CacheDetailActivity.this, R.layout.cacheview_logs_item, logs) {
final UserActionsClickListener userActionsClickListener = new UserActionsClickListener();
final DecryptTextClickListener decryptTextClickListener = new DecryptTextClickListener();
@@ -2231,72 +2298,74 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
public static void startActivity(final Context context, final String geocode, final String cacheName) {
final Intent cachesIntent = new Intent(context, CacheDetailActivity.class);
- cachesIntent.putExtra("geocode", geocode);
- cachesIntent.putExtra("name", cacheName);
+ cachesIntent.putExtra(Intents.EXTRA_GEOCODE, geocode);
+ cachesIntent.putExtra(Intents.EXTRA_NAME, cacheName);
context.startActivity(cachesIntent);
}
public static void startActivityGuid(final Context context, final String guid, final String cacheName) {
final Intent cacheIntent = new Intent(context, CacheDetailActivity.class);
- cacheIntent.putExtra("guid", guid);
- cacheIntent.putExtra("name", cacheName);
+ cacheIntent.putExtra(Intents.EXTRA_GUID, guid);
+ cacheIntent.putExtra(Intents.EXTRA_NAME, cacheName);
context.startActivity(cacheIntent);
}
/**
* A dialog to allow the user to select reseting coordinates local/remote/both.
*/
- private class ResetCacheCoordinatesDialog extends AlertDialog {
+ private AlertDialog createResetCacheCoordinatesDialog(final Geocache cache, final Waypoint wpt) {
- final RadioButton resetBoth;
- final RadioButton resetLocal;
-
- public ResetCacheCoordinatesDialog(final cgCache cache, final Waypoint wpt, final Activity activity) {
- super(activity);
-
- View layout = activity.getLayoutInflater().inflate(R.layout.reset_cache_coords_dialog, null);
- setView(layout);
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(R.string.waypoint_reset_cache_coords);
- resetLocal = (RadioButton) layout.findViewById(R.id.reset_cache_coordinates_local);
- resetBoth = (RadioButton) layout.findViewById(R.id.reset_cache_coordinates_local_and_remote);
+ String[] items = new String[] {res.getString(R.string.waypoint_localy_reset_cache_coords), res.getString(R.string.waypoint_reset_local_and_remote_cache_coords)};
+ builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
- if (ConnectorFactory.getConnector(cache).supportsOwnCoordinates()) {
- resetBoth.setVisibility(View.VISIBLE);
+ @Override
+ public void onClick(DialogInterface dialog, final int which) {
+ dialog.dismiss();
+ final ProgressDialog progressDialog = ProgressDialog.show(CacheDetailActivity.this, getString(R.string.cache), getString(R.string.waypoint_reset), true);
+ final HandlerResetCoordinates handler = new HandlerResetCoordinates(CacheDetailActivity.this, progressDialog, which == 1);
+ new ResetCoordsThread(cache, handler, wpt, which == 0 || which == 1, which == 1, progressDialog).start();
}
+ });
+ return builder.create();
+ }
- layout.findViewById(R.id.reset).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- dismiss();
- final ProgressDialog p = ProgressDialog.show(CacheDetailActivity.this, res.getString(R.string.cache), res.getString(R.string.waypoint_reset), true);
- final Handler h = new Handler() {
- private boolean remoteFinished = false;
- private boolean localFinished = false;
+ private static class HandlerResetCoordinates extends WeakReferenceHandler<CacheDetailActivity> {
+ private boolean remoteFinished = false;
+ private boolean localFinished = false;
+ private final ProgressDialog progressDialog;
+ private final boolean resetRemote;
- @Override
- public void handleMessage(Message msg) {
- if (msg.what == ResetCoordsThread.LOCAL) {
- localFinished = true;
- } else {
- remoteFinished = true;
- }
+ protected HandlerResetCoordinates(CacheDetailActivity activity, ProgressDialog progressDialog, boolean resetRemote) {
+ super(activity);
+ this.progressDialog = progressDialog;
+ this.resetRemote = resetRemote;
+ }
- if ((localFinished) && (remoteFinished || !resetBoth.isChecked())) {
- p.dismiss();
- notifyDataSetChanged();
- }
- }
+ @Override
+ public void handleMessage(Message msg) {
+ if (msg.what == ResetCoordsThread.LOCAL) {
+ localFinished = true;
+ } else {
+ remoteFinished = true;
+ }
- };
- new ResetCoordsThread(cache, h, wpt, resetLocal.isChecked() || resetBoth.isChecked(), resetBoth.isChecked(), p).start();
+ if (localFinished && (remoteFinished || !resetRemote)) {
+ progressDialog.dismiss();
+ final CacheDetailActivity activity = getActivity();
+ if (activity != null) {
+ activity.notifyDataSetChanged();
}
- });
+ }
}
+
}
private class ResetCoordsThread extends Thread {
- private final cgCache cache;
+ private final Geocache cache;
private final Handler handler;
private final boolean local;
private final boolean remote;
@@ -2305,7 +2374,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
public static final int LOCAL = 0;
public static final int ON_WEBSITE = 1;
- public ResetCoordsThread(cgCache cache, Handler handler, final Waypoint wpt, boolean local, boolean remote, final ProgressDialog progress) {
+ public ResetCoordsThread(Geocache cache, Handler handler, final Waypoint wpt, boolean local, boolean remote, final ProgressDialog progress) {
this.cache = cache;
this.handler = handler;
this.local = local;
@@ -2378,7 +2447,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
pages.add(Page.DETAILS);
final int detailsIndex = pages.size() - 1;
pages.add(Page.DESCRIPTION);
- if (cache.getLogs().isNotEmpty()) {
+ if (!cache.getLogs().isEmpty()) {
pages.add(Page.LOGS);
}
if (CollectionUtils.isNotEmpty(cache.getFriendsLogs())) {
@@ -2422,4 +2491,47 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
}
+ static void updateOfflineBox(final View view, final Geocache cache, final Resources res,
+ final OnClickListener refreshCacheClickListener,
+ final OnClickListener dropCacheClickListener,
+ final OnClickListener storeCacheClickListener) {
+ // offline use
+ final TextView offlineText = (TextView) view.findViewById(R.id.offline_text);
+ final Button offlineRefresh = (Button) view.findViewById(R.id.offline_refresh);
+ final Button offlineStore = (Button) view.findViewById(R.id.offline_store);
+
+ if (cache.isOffline()) {
+ long diff = (System.currentTimeMillis() / (60 * 1000)) - (cache.getDetailedUpdate() / (60 * 1000)); // minutes
+
+ String ago;
+ if (diff < 15) {
+ ago = res.getString(R.string.cache_offline_time_mins_few);
+ } else if (diff < 50) {
+ ago = res.getString(R.string.cache_offline_time_about) + " " + diff + " " + res.getString(R.string.cache_offline_time_mins);
+ } else if (diff < 90) {
+ ago = res.getString(R.string.cache_offline_time_about) + " " + res.getString(R.string.cache_offline_time_hour);
+ } else if (diff < (48 * 60)) {
+ ago = res.getString(R.string.cache_offline_time_about) + " " + (diff / 60) + " " + res.getString(R.string.cache_offline_time_hours);
+ } else {
+ ago = res.getString(R.string.cache_offline_time_about) + " " + (diff / (24 * 60)) + " " + res.getString(R.string.cache_offline_time_days);
+ }
+
+ offlineText.setText(res.getString(R.string.cache_offline_stored) + "\n" + ago);
+ offlineRefresh.setOnClickListener(refreshCacheClickListener);
+
+ offlineStore.setText(res.getString(R.string.cache_offline_drop));
+ offlineStore.setClickable(true);
+ offlineStore.setOnClickListener(dropCacheClickListener);
+ } else {
+ offlineText.setText(res.getString(R.string.cache_offline_not_ready));
+ offlineRefresh.setOnClickListener(refreshCacheClickListener);
+
+ offlineStore.setText(res.getString(R.string.cache_offline_store));
+ offlineStore.setClickable(true);
+ offlineStore.setOnClickListener(storeCacheClickListener);
+ }
+ offlineRefresh.setVisibility(cache.supportsRefresh() ? View.VISIBLE : View.GONE);
+ offlineRefresh.setClickable(true);
+ }
+
}
diff --git a/main/src/cgeo/geocaching/CachePopup.java b/main/src/cgeo/geocaching/CachePopup.java
index 4bda294..e6d0148 100644
--- a/main/src/cgeo/geocaching/CachePopup.java
+++ b/main/src/cgeo/geocaching/CachePopup.java
@@ -6,6 +6,7 @@ import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.ui.CacheDetailsCreator;
import cgeo.geocaching.utils.CancellableHandler;
import cgeo.geocaching.utils.Log;
+import cgeo.geocaching.utils.RunnableWithArgument;
import org.apache.commons.lang3.StringUtils;
@@ -15,7 +16,6 @@ import android.content.res.Configuration;
import android.os.Handler;
import android.os.Message;
import android.view.View;
-import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -90,47 +90,8 @@ public class CachePopup extends AbstractPopupActivity {
addCacheDetails();
// offline use
- final TextView offlineText = (TextView) findViewById(R.id.offline_text);
- final Button offlineRefresh = (Button) findViewById(R.id.offline_refresh);
- final Button offlineStore = (Button) findViewById(R.id.offline_store);
-
- if (cache.getListId() > 0) {
- final long diff = (System.currentTimeMillis() / (60 * 1000)) - (cache.getDetailedUpdate() / (60 * 1000)); // minutes
-
- String ago;
- if (diff < 15) {
- ago = res.getString(R.string.cache_offline_time_mins_few);
- } else if (diff < 50) {
- ago = res.getString(R.string.cache_offline_time_about) + " " + diff + " " + res.getString(R.string.cache_offline_time_mins);
- } else if (diff < 90) {
- ago = res.getString(R.string.cache_offline_time_about) + " " + res.getString(R.string.cache_offline_time_hour);
- } else if (diff < (48 * 60)) {
- ago = res.getString(R.string.cache_offline_time_about) + " " + (diff / 60) + " " + res.getString(R.string.cache_offline_time_hours);
- } else {
- ago = res.getString(R.string.cache_offline_time_about) + " " + (diff / (24 * 60)) + " " + res.getString(R.string.cache_offline_time_days);
- }
-
- offlineText.setText(res.getString(R.string.cache_offline_stored) + "\n" + ago);
-
- offlineRefresh.setVisibility(View.VISIBLE);
- offlineRefresh.setEnabled(true);
- offlineRefresh.setOnClickListener(new RefreshCacheClickListener());
-
- offlineStore.setText(res.getString(R.string.cache_offline_drop));
- offlineStore.setEnabled(true);
- offlineStore.setOnClickListener(new DropCacheClickListener());
- } else {
- offlineText.setText(res.getString(R.string.cache_offline_not_ready));
-
- offlineRefresh.setVisibility(View.GONE);
- offlineRefresh.setEnabled(false);
- offlineRefresh.setOnTouchListener(null);
- offlineRefresh.setOnClickListener(null);
+ CacheDetailActivity.updateOfflineBox(findViewById(android.R.id.content), cache, res, new RefreshCacheClickListener(), new DropCacheClickListener(), new StoreCacheClickListener());
- offlineStore.setText(res.getString(R.string.cache_offline_store));
- offlineStore.setEnabled(true);
- offlineStore.setOnClickListener(new StoreCacheClickListener());
- }
} catch (Exception e) {
Log.e("cgeopopup.init", e);
}
@@ -154,22 +115,39 @@ public class CachePopup extends AbstractPopupActivity {
return;
}
+ if (Settings.getChooseList()) {
+ // let user select list to store cache in
+ new StoredList.UserInterface(CachePopup.this).promptForListSelection(R.string.list_title,
+ new RunnableWithArgument<Integer>() {
+ @Override
+ public void run(final Integer selectedListId) {
+ storeCache(selectedListId);
+ }
+ }, true, StoredList.TEMPORARY_LIST_ID);
+ } else {
+ storeCache(StoredList.TEMPORARY_LIST_ID);
+ }
+ }
+
+ protected void storeCache(final int listId) {
final StoreCacheHandler storeCacheHandler = new StoreCacheHandler();
progress.show(CachePopup.this, res.getString(R.string.cache_dialog_offline_save_title), res.getString(R.string.cache_dialog_offline_save_message), true, storeCacheHandler.cancelMessage());
- new StoreCacheThread(storeCacheHandler).start();
+ new StoreCacheThread(listId, storeCacheHandler).start();
}
}
private class StoreCacheThread extends Thread {
+ final private int listId;
final private CancellableHandler handler;
- public StoreCacheThread(final CancellableHandler handler) {
+ public StoreCacheThread(final int listId, final CancellableHandler handler) {
+ this.listId = listId;
this.handler = handler;
}
@Override
public void run() {
- cache.store(handler);
+ cache.store(listId, handler);
invalidateOptionsMenuCompatible();
}
}
@@ -235,7 +213,7 @@ public class CachePopup extends AbstractPopupActivity {
}
/**
- * Tries to navigate to the {@link cgCache} of this activity.
+ * Tries to navigate to the {@link Geocache} of this activity.
*/
@Override
protected void startDefaultNavigation2() {
@@ -249,7 +227,7 @@ public class CachePopup extends AbstractPopupActivity {
public static void startActivity(final Context context, final String geocode) {
final Intent popupIntent = new Intent(context, CachePopup.class);
- popupIntent.putExtra(EXTRA_GEOCODE, geocode);
+ popupIntent.putExtra(Intents.EXTRA_GEOCODE, geocode);
context.startActivity(popupIntent);
}
diff --git a/main/src/cgeo/geocaching/EditWaypointActivity.java b/main/src/cgeo/geocaching/EditWaypointActivity.java
index 3958d5f..3c8789f 100644
--- a/main/src/cgeo/geocaching/EditWaypointActivity.java
+++ b/main/src/cgeo/geocaching/EditWaypointActivity.java
@@ -11,6 +11,7 @@ import cgeo.geocaching.enumerations.WaypointType;
import cgeo.geocaching.geopoint.DistanceParser;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.GeopointFormatter;
+import cgeo.geocaching.ui.dialog.CoordinatesInputDialog;
import cgeo.geocaching.utils.BaseUtils;
import cgeo.geocaching.utils.GeoDirHandler;
import cgeo.geocaching.utils.Log;
@@ -20,6 +21,7 @@ import org.apache.commons.lang3.StringUtils;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
+import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
@@ -81,7 +83,7 @@ public class EditWaypointActivity extends AbstractActivity {
else {
((EditText) findViewById(R.id.note)).setText(StringUtils.trimToEmpty(waypoint.getNote()));
}
- cgCache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_ONLY);
+ Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_ONLY);
setCoordsModificationVisibility(ConnectorFactory.getConnector(geocode), cache);
}
@@ -112,9 +114,9 @@ public class EditWaypointActivity extends AbstractActivity {
// get parameters
Bundle extras = getIntent().getExtras();
if (extras != null) {
- geocode = extras.getString("geocode");
- wpCount = extras.getInt("count", 0);
- id = extras.getInt("waypoint");
+ geocode = extras.getString(Intents.EXTRA_GEOCODE);
+ wpCount = extras.getInt(Intents.EXTRA_COUNT, 0);
+ id = extras.getInt(Intents.EXTRA_WAYPOINT_ID);
}
if (StringUtils.isBlank(geocode) && id <= 0) {
@@ -159,7 +161,7 @@ public class EditWaypointActivity extends AbstractActivity {
}
if (geocode != null) {
- cgCache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
IConnector con = ConnectorFactory.getConnector(geocode);
setCoordsModificationVisibility(con, cache);
}
@@ -169,7 +171,7 @@ public class EditWaypointActivity extends AbstractActivity {
disableSuggestions((EditText) findViewById(R.id.distance));
}
- private void setCoordsModificationVisibility(IConnector con, cgCache cache) {
+ private void setCoordsModificationVisibility(IConnector con, Geocache cache) {
if (cache != null && (cache.getType() == CacheType.MYSTERY || cache.getType() == CacheType.MULTI)) {
findViewById(R.id.modify_cache_coordinates_group).setVisibility(View.VISIBLE);
findViewById(R.id.modify_cache_coordinates_local_and_remote).setVisibility(con.supportsOwnCoordinates() ? View.VISIBLE : View.GONE);
@@ -290,10 +292,10 @@ public class EditWaypointActivity extends AbstractActivity {
} else if (gpTemp != null) {
gp = gpTemp;
}
- cgCache cache = cgData.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
- cgeocoords coordsDialog = new cgeocoords(EditWaypointActivity.this, cache, gp, app.currentGeo());
+ Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
+ CoordinatesInputDialog coordsDialog = new CoordinatesInputDialog(EditWaypointActivity.this, cache, gp, app.currentGeo());
coordsDialog.setCancelable(true);
- coordsDialog.setOnCoordinateUpdate(new cgeocoords.CoordinateUpdate() {
+ coordsDialog.setOnCoordinateUpdate(new CoordinatesInputDialog.CoordinateUpdate() {
@Override
public void update(final Geopoint gp) {
((Button) findViewById(R.id.buttonLatitude)).setText(gp.format(GeopointFormatter.Format.LAT_DECMINUTE));
@@ -352,11 +354,17 @@ public class EditWaypointActivity extends AbstractActivity {
}
}
+ public static final int SUCCESS = 0;
+ public static final int UPLOAD_START = 1;
+ public static final int UPLOAD_ERROR = 2;
+ public static final int UPLOAD_NOT_POSSIBLE = 3;
+ public static final int UPLOAD_SUCCESS = 4;
+ public static final int SAVE_ERROR = 5;
+
private class coordsListener implements View.OnClickListener {
@Override
public void onClick(View arg0) {
- // TODO Show progress across whole function, it is performing very long time on slower devices
final String bearingText = ((EditText) findViewById(R.id.bearing)).getText().toString();
// combine distance from EditText and distanceUnit saved from Spinner
final String distanceText = ((EditText) findViewById(R.id.distance)).getText().toString() + distanceUnit;
@@ -408,121 +416,118 @@ public class EditWaypointActivity extends AbstractActivity {
coords = coords.project(bearing, distance);
}
- String name = ((EditText) findViewById(R.id.name)).getText().toString().trim();
// if no name is given, just give the waypoint its number as name
- if (StringUtils.isEmpty(name)) {
- name = res.getString(R.string.waypoint) + " " + (wpCount + 1);
- }
+ final String givenName = ((EditText) findViewById(R.id.name)).getText().toString().trim();
+ final String name = StringUtils.isNotEmpty(givenName) ? givenName : res.getString(R.string.waypoint) + " " + (wpCount + 1);
final String note = ((EditText) findViewById(R.id.note)).getText().toString().trim();
+ final Geopoint coordsToSave = coords;
+ final ProgressDialog progress = ProgressDialog.show(EditWaypointActivity.this, getString(R.string.cache), getString(R.string.waypoint_being_saved), true);
+ final Handler finishHandler = new Handler() {
- final Waypoint waypoint = new Waypoint(name, type, own);
- waypoint.setGeocode(geocode);
- waypoint.setPrefix(prefix);
- waypoint.setLookup(lookup);
- waypoint.setCoords(coords);
- waypoint.setNote(note);
- waypoint.setId(id);
-
- cgCache cache = cgData.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
- if (null != cache && cache.addOrChangeWaypoint(waypoint, true)) {
- cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
- StaticMapsProvider.removeWpStaticMaps(id, geocode);
- if (Settings.isStoreOfflineWpMaps()) {
- StaticMapsProvider.storeWaypointStaticMap(cache, waypoint, false);
- }
- final RadioButton modifyLocal = (RadioButton) findViewById(R.id.modify_cache_coordinates_local);
- final RadioButton modifyBoth = (RadioButton) findViewById(R.id.modify_cache_coordinates_local_and_remote);
- if (modifyLocal.isChecked() || modifyBoth.isChecked()) {
- if (!cache.hasUserModifiedCoords()) {
- final Waypoint origWaypoint = new Waypoint(cgeoapplication.getInstance().getString(R.string.cache_coordinates_original), WaypointType.ORIGINAL, false);
- origWaypoint.setCoords(cache.getCoords());
- cache.addOrChangeWaypoint(origWaypoint, false);
- cache.setUserModifiedCoords(true);
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case UPLOAD_SUCCESS:
+ showToast(getString(R.string.waypoint_coordinates_has_been_modified_on_website, coordsToSave));
+ //$FALL-THROUGH$
+ case SUCCESS:
+ progress.dismiss();
+ finish();
+ break;
+ case UPLOAD_START:
+ progress.setMessage(getString(R.string.waypoint_coordinates_uploading_to_website, coordsToSave));
+ break;
+ case UPLOAD_ERROR:
+ progress.dismiss();
+ finish();
+ showToast(getString(R.string.waypoint_coordinates_upload_error));
+ break;
+ case UPLOAD_NOT_POSSIBLE:
+ progress.dismiss();
+ finish();
+ showToast(getString(R.string.waypoint_coordinates_couldnt_be_modified_on_website));
+ break;
+ case SAVE_ERROR:
+ progress.dismiss();
+ finish(); //TODO: should we close activity here ?
+ showToast(res.getString(R.string.err_waypoint_add_failed));
+ break;
}
- cache.setCoords(waypoint.getCoords());
- cgData.saveChangedCache(cache);
}
- if (modifyBoth.isChecked() && waypoint.getCoords() != null) {
- if (cache.supportsOwnCoordinates()) {
- final ProgressDialog progress = ProgressDialog.show(EditWaypointActivity.this, getString(R.string.cache), getString(R.string.waypoint_coordinates_uploading_to_website, waypoint.getCoords()), true);
- Handler finishHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- progress.dismiss();
- finish();
+ };
+
+ class SaveWptTask extends AsyncTask<Void, Void, Void> {
+
+ @Override
+ protected Void doInBackground(Void... params) {
+ final Waypoint waypoint = new Waypoint(name, type, own);
+ waypoint.setGeocode(geocode);
+ waypoint.setPrefix(prefix);
+ waypoint.setLookup(lookup);
+ waypoint.setCoords(coordsToSave);
+ waypoint.setNote(note);
+ waypoint.setId(id);
+
+ Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
+ if (null != cache && cache.addOrChangeWaypoint(waypoint, true)) {
+ cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
+ StaticMapsProvider.removeWpStaticMaps(id, geocode);
+ if (Settings.isStoreOfflineWpMaps()) {
+ StaticMapsProvider.storeWaypointStaticMap(cache, waypoint, false);
+ }
+ final RadioButton modifyLocal = (RadioButton) findViewById(R.id.modify_cache_coordinates_local);
+ final RadioButton modifyBoth = (RadioButton) findViewById(R.id.modify_cache_coordinates_local_and_remote);
+ if (modifyLocal.isChecked() || modifyBoth.isChecked()) {
+ if (!cache.hasUserModifiedCoords()) {
+ final Waypoint origWaypoint = new Waypoint(cgeoapplication.getInstance().getString(R.string.cache_coordinates_original), WaypointType.ORIGINAL, false);
+ origWaypoint.setCoords(cache.getCoords());
+ cache.addOrChangeWaypoint(origWaypoint, false);
+ cache.setUserModifiedCoords(true);
}
- };
- new UploadModifiedCoordsThread(cache, waypoint.getCoords(), progress, finishHandler).start();
+ cache.setCoords(waypoint.getCoords());
+ cgData.saveChangedCache(cache);
+ }
+ if (modifyBoth.isChecked() && waypoint.getCoords() != null) {
+ finishHandler.sendEmptyMessage(UPLOAD_START);
+
+ if (cache.supportsOwnCoordinates()) {
+ boolean result = uploadModifiedCoords(cache, waypoint.getCoords());
+ finishHandler.sendEmptyMessage(result ? SUCCESS : UPLOAD_ERROR);
+ } else {
+ showToast(getString(R.string.waypoint_coordinates_couldnt_be_modified_on_website));
+ finishHandler.sendEmptyMessage(UPLOAD_NOT_POSSIBLE);
+ }
+ } else {
+ finishHandler.sendEmptyMessage(SUCCESS);
+ }
} else {
- showToast(getString(R.string.waypoint_coordinates_couldnt_be_modified_on_website));
+ finishHandler.sendEmptyMessage(SAVE_ERROR);
}
- } else {
- finish();
+ return null;
}
- } else {
- showToast(res.getString(R.string.err_waypoint_add_failed));
}
+ new SaveWptTask().execute();
}
}
- private class UploadModifiedCoordsThread extends Thread {
-
- private final Geopoint waypoint_uploaded;
- private final ProgressDialog progress;
- private final cgCache cache;
- private final Handler handler;
-
- public UploadModifiedCoordsThread(cgCache cache, Geopoint wpt, ProgressDialog progress, Handler finishHandler) {
- this.cache = cache;
- this.waypoint_uploaded = wpt;
- this.progress = progress;
- this.handler = finishHandler;
- }
-
- @Override
- public void run() {
- boolean result = false;
- IConnector con = ConnectorFactory.getConnector(cache);
- if (con.supportsOwnCoordinates()) {
- result = con.uploadModifiedCoordinates(cache, waypoint_uploaded);
- }
- final boolean res = result;
- runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- if (res) {
- showToast(getString(R.string.waypoint_coordinates_has_been_modified_on_website, waypoint_uploaded.getCoords().toString()));
- } else {
- showToast(getString(R.string.waypoint_coordinates_upload_error));
- }
- if (progress != null) {
- progress.dismiss();
- }
- handler.sendMessage(Message.obtain());
- }
- });
- }
+ private static boolean uploadModifiedCoords(final Geocache cache, final Geopoint waypointUploaded) {
+ final IConnector con = ConnectorFactory.getConnector(cache);
+ return con.supportsOwnCoordinates() && con.uploadModifiedCoordinates(cache, waypointUploaded);
}
@Override
- public void goManual(View view) {
- if (id >= 0) {
- ActivityMixin.goManual(this, "c:geo-waypoint-edit");
- } else {
- ActivityMixin.goManual(this, "c:geo-waypoint-new");
- }
+ public void goManual(final View view) {
+ ActivityMixin.goManual(this, id >= 0 ? "c:geo-waypoint-edit" : "c:geo-waypoint-new");
}
public static void startActivityEditWaypoint(final Context context, final int waypointId) {
- final Intent editIntent = new Intent(context, EditWaypointActivity.class);
- editIntent.putExtra("waypoint", waypointId);
- context.startActivity(editIntent);
+ context.startActivity(new Intent(context, EditWaypointActivity.class)
+ .putExtra(Intents.EXTRA_WAYPOINT_ID, waypointId));
}
- public static void startActivityAddWaypoint(final Context context, final cgCache cache) {
- final Intent addWptIntent = new Intent(context, EditWaypointActivity.class);
- addWptIntent.putExtra("geocode", cache.getGeocode()).putExtra("count", cache.getWaypoints().size());
- context.startActivity(addWptIntent);
+ public static void startActivityAddWaypoint(final Context context, final Geocache cache) {
+ context.startActivity(new Intent(context, EditWaypointActivity.class)
+ .putExtra(Intents.EXTRA_GEOCODE, cache.getGeocode())
+ .putExtra(Intents.EXTRA_COUNT, cache.getWaypoints().size()));
}
}
diff --git a/main/src/cgeo/geocaching/cgCache.java b/main/src/cgeo/geocaching/Geocache.java
index 24bd66b..18a315c 100644
--- a/main/src/cgeo/geocaching/cgCache.java
+++ b/main/src/cgeo/geocaching/Geocache.java
@@ -47,6 +47,7 @@ import java.util.Collections;
import java.util.Date;
import java.util.EnumSet;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
@@ -54,7 +55,7 @@ import java.util.regex.Pattern;
/**
* Internal c:geo representation of a "cache"
*/
-public class cgCache implements ICache, IWaypoint {
+public class Geocache implements ICache, IWaypoint {
private long updated = 0;
private long detailedUpdate = 0;
@@ -69,48 +70,58 @@ public class cgCache implements ICache, IWaypoint {
private String ownerDisplayName = "";
private String ownerUserId = "";
private Date hidden = null;
- private String hint = "";
+ /**
+ * lazy initialized
+ */
+ private String hint = null;
private CacheSize size = CacheSize.UNKNOWN;
private float difficulty = 0;
private float terrain = 0;
private Float direction = null;
private Float distance = null;
- private String latlon = "";
- private String location = "";
+ /**
+ * lazy initialized
+ */
+ private String location = null;
private Geopoint coords = null;
private boolean reliableLatLon = false;
private Double elevation = null;
private String personalNote = null;
- private String shortdesc = "";
+ /**
+ * lazy initialized
+ */
+ private String shortdesc = null;
+ /**
+ * lazy initialized
+ */
private String description = null;
private boolean disabled = false;
private boolean archived = false;
private boolean premiumMembersOnly = false;
private boolean found = false;
private boolean favorite = false;
- private boolean own = false;
private int favoritePoints = 0;
private float rating = 0; // valid ratings are larger than zero
private int votes = 0;
private float myVote = 0; // valid ratings are larger than zero
private int inventoryItems = 0;
private boolean onWatchlist = false;
- private LazyInitializedList<String> attributes = new LazyInitializedList<String>() {
+ private List<String> attributes = new LazyInitializedList<String>() {
@Override
- protected List<String> loadFromDatabase() {
+ public List<String> call() {
return cgData.loadAttributes(geocode);
}
};
- private LazyInitializedList<Waypoint> waypoints = new LazyInitializedList<Waypoint>() {
+ private List<Waypoint> waypoints = new LazyInitializedList<Waypoint>() {
@Override
- protected List<Waypoint> loadFromDatabase() {
+ public List<Waypoint> call() {
return cgData.loadWaypoints(geocode);
}
};
private List<Image> spoilers = null;
- private LazyInitializedList<LogEntry> logs = new LazyInitializedList<LogEntry>() {
+ private List<LogEntry> logs = new LazyInitializedList<LogEntry>() {
@Override
- protected List<LogEntry> loadFromDatabase() {
+ public List<LogEntry> call() {
return cgData.loadLogs(geocode);
}
};
@@ -133,7 +144,7 @@ public class cgCache implements ICache, IWaypoint {
/**
* Create a new cache. To be used everywhere except for the GPX parser
*/
- public cgCache() {
+ public Geocache() {
// empty
}
@@ -143,7 +154,7 @@ public class cgCache implements ICache, IWaypoint {
*
* @param gpxParser
*/
- public cgCache(GPXParser gpxParser) {
+ public Geocache(GPXParser gpxParser) {
setReliableLatLon(true);
setAttributes(Collections.<String> emptyList());
setWaypoints(Collections.<Waypoint> emptyList(), false);
@@ -170,7 +181,7 @@ public class cgCache implements ICache, IWaypoint {
* the other version, or null if non-existent
* @return true if this cache is "equal" to the other version
*/
- public boolean gatherMissingFrom(final cgCache other) {
+ public boolean gatherMissingFrom(final Geocache other) {
if (other == null) {
return false;
}
@@ -187,7 +198,6 @@ public class cgCache implements ICache, IWaypoint {
reliableLatLon = other.reliableLatLon;
archived = other.archived;
found = other.found;
- own = other.own;
disabled = other.disabled;
favorite = other.favorite;
onWatchlist = other.onWatchlist;
@@ -235,8 +245,8 @@ public class cgCache implements ICache, IWaypoint {
if (hidden == null) {
hidden = other.hidden;
}
- if (StringUtils.isBlank(hint)) {
- hint = other.hint;
+ if (StringUtils.isBlank(getHint())) {
+ hint = other.getHint();
}
if (size == null || CacheSize.UNKNOWN == size) {
size = other.size;
@@ -253,11 +263,8 @@ public class cgCache implements ICache, IWaypoint {
if (distance == null) {
distance = other.distance;
}
- if (StringUtils.isBlank(latlon)) {
- latlon = other.latlon;
- }
- if (StringUtils.isBlank(location)) {
- location = other.location;
+ if (StringUtils.isBlank(getLocation())) {
+ location = other.getLocation();
}
if (coords == null) {
coords = other.coords;
@@ -268,11 +275,11 @@ public class cgCache implements ICache, IWaypoint {
if (personalNote == null) { // don't use StringUtils.isBlank here. Otherwise we cannot recognize a note which was deleted on GC
personalNote = other.personalNote;
}
- if (StringUtils.isBlank(shortdesc)) {
- shortdesc = other.shortdesc;
+ if (StringUtils.isBlank(getShortDescription())) {
+ shortdesc = other.getShortDescription();
}
- if (StringUtils.isBlank(description)) {
- description = other.description;
+ if (StringUtils.isBlank(getDescription())) {
+ description = other.getDescription();
}
// FIXME: this makes no sense to favor this over the other. 0 should not be a special case here as it is
// in the range of acceptable values. This is probably the case at other places (rating, votes, etc.) too.
@@ -289,14 +296,17 @@ public class cgCache implements ICache, IWaypoint {
myVote = other.myVote;
}
if (attributes.isEmpty()) {
- attributes.set(other.attributes);
+ attributes.clear();
+ if (other.attributes != null) {
+ attributes.addAll(other.attributes);
+ }
}
if (waypoints.isEmpty()) {
- this.setWaypoints(other.waypoints.asList(), false);
+ this.setWaypoints(other.waypoints, false);
}
else {
- ArrayList<Waypoint> newPoints = new ArrayList<Waypoint>(waypoints.asList());
- Waypoint.mergeWayPoints(newPoints, other.waypoints.asList(), false);
+ ArrayList<Waypoint> newPoints = new ArrayList<Waypoint>(waypoints);
+ Waypoint.mergeWayPoints(newPoints, other.waypoints, false);
this.setWaypoints(newPoints, false);
}
if (spoilers == null) {
@@ -311,7 +321,10 @@ public class cgCache implements ICache, IWaypoint {
inventoryItems = other.inventoryItems;
}
if (logs.isEmpty()) { // keep last known logs if none
- logs.set(other.logs);
+ logs.clear();
+ if (other.logs != null) {
+ logs.addAll(other.logs);
+ }
}
if (logCounts.isEmpty()) {
logCounts = other.logCounts;
@@ -345,14 +358,13 @@ public class cgCache implements ICache, IWaypoint {
* the other cache to compare this one to
* @return true if both caches have the same content
*/
- private boolean isEqualTo(final cgCache other) {
+ private boolean isEqualTo(final Geocache other) {
return detailed == other.detailed &&
StringUtils.equalsIgnoreCase(geocode, other.geocode) &&
StringUtils.equalsIgnoreCase(name, other.name) &&
cacheType == other.cacheType &&
size == other.size &&
found == other.found &&
- own == other.own &&
premiumMembersOnly == other.premiumMembersOnly &&
difficulty == other.difficulty &&
terrain == other.terrain &&
@@ -363,17 +375,16 @@ public class cgCache implements ICache, IWaypoint {
listId == other.listId &&
StringUtils.equalsIgnoreCase(ownerDisplayName, other.ownerDisplayName) &&
StringUtils.equalsIgnoreCase(ownerUserId, other.ownerUserId) &&
- StringUtils.equalsIgnoreCase(description, other.description) &&
+ StringUtils.equalsIgnoreCase(getDescription(), other.getDescription()) &&
StringUtils.equalsIgnoreCase(personalNote, other.personalNote) &&
- StringUtils.equalsIgnoreCase(shortdesc, other.shortdesc) &&
- StringUtils.equalsIgnoreCase(latlon, other.latlon) &&
- StringUtils.equalsIgnoreCase(location, other.location) &&
+ StringUtils.equalsIgnoreCase(getShortDescription(), other.getShortDescription()) &&
+ StringUtils.equalsIgnoreCase(getLocation(), other.getLocation()) &&
favorite == other.favorite &&
favoritePoints == other.favoritePoints &&
onWatchlist == other.onWatchlist &&
(hidden != null ? hidden.equals(other.hidden) : null == other.hidden) &&
StringUtils.equalsIgnoreCase(guid, other.guid) &&
- StringUtils.equalsIgnoreCase(hint, other.hint) &&
+ StringUtils.equalsIgnoreCase(getHint(), other.getHint()) &&
StringUtils.equalsIgnoreCase(cacheId, other.cacheId) &&
(direction != null ? direction.equals(other.direction) : null == other.direction) &&
(distance != null ? distance.equals(other.distance) : null == other.distance) &&
@@ -427,7 +438,7 @@ public class cgCache implements ICache, IWaypoint {
return false;
}
final Boolean found = Pattern.compile(guid, Pattern.CASE_INSENSITIVE).matcher(page).find();
- Log.i("cgCache.isGuidContainedInPage: guid '" + guid + "' " + (found ? "" : "not ") + "found");
+ Log.i("Geocache.isGuidContainedInPage: guid '" + guid + "' " + (found ? "" : "not ") + "found");
return found;
}
@@ -472,14 +483,13 @@ public class cgCache implements ICache, IWaypoint {
}
public List<LogType> getPossibleLogTypes() {
- boolean isOwner = getOwnerUserId() != null && getOwnerUserId().equalsIgnoreCase(Settings.getUsername());
- List<LogType> logTypes = new ArrayList<LogType>();
+ final List<LogType> logTypes = new LinkedList<LogType>();
if (isEventCache()) {
logTypes.add(LogType.WILL_ATTEND);
logTypes.add(LogType.NOTE);
logTypes.add(LogType.ATTENDED);
logTypes.add(LogType.NEEDS_ARCHIVE);
- if (isOwner) {
+ if (isOwner()) {
logTypes.add(LogType.ANNOUNCEMENT);
}
} else if (CacheType.WEBCAM == cacheType) {
@@ -495,7 +505,7 @@ public class cgCache implements ICache, IWaypoint {
logTypes.add(LogType.NEEDS_ARCHIVE);
logTypes.add(LogType.NEEDS_MAINTENANCE);
}
- if (isOwner) {
+ if (isOwner()) {
logTypes.add(LogType.OWNER_MAINTENANCE);
logTypes.add(LogType.TEMP_DISABLE_LISTING);
logTypes.add(LogType.ENABLE_LISTING);
@@ -593,8 +603,8 @@ public class cgCache implements ICache, IWaypoint {
}
@Override
- public boolean isOwn() {
- return own;
+ public boolean isOwner() {
+ return getConnector().isOwner(this);
}
@Override
@@ -602,21 +612,39 @@ public class cgCache implements ICache, IWaypoint {
return ownerUserId;
}
+ /**
+ * Attention, calling this method may trigger a database access for the cache!
+ */
@Override
public String getHint() {
+ initializeCacheTexts();
return hint;
}
+ /**
+ * Attention, calling this method may trigger a database access for the cache!
+ */
@Override
public String getDescription() {
- if (description == null) {
- description = StringUtils.defaultString(cgData.getCacheDescription(geocode));
- }
+ initializeCacheTexts();
return description;
}
+ /**
+ * loads long text parts of a cache on demand (but all fields together)
+ */
+ private void initializeCacheTexts() {
+ if (description == null || shortdesc == null || hint == null || location == null) {
+ cgData.loadCacheTexts(this);
+ }
+ }
+
+ /**
+ * Attention, calling this method may trigger a database access for the cache!
+ */
@Override
public String getShortDescription() {
+ initializeCacheTexts();
return shortdesc;
}
@@ -639,8 +667,12 @@ public class cgCache implements ICache, IWaypoint {
return guid;
}
+ /**
+ * Attention, calling this method may trigger a database access for the cache!
+ */
@Override
public String getLocation() {
+ initializeCacheTexts();
return location;
}
@@ -718,7 +750,7 @@ public class cgCache implements ICache, IWaypoint {
}
@Override
- public LazyInitializedList<String> getAttributes() {
+ public List<String> getAttributes() {
return attributes;
}
@@ -840,14 +872,6 @@ public class cgCache implements ICache, IWaypoint {
this.distance = distance;
}
- public String getLatlon() {
- return latlon;
- }
-
- public void setLatlon(String latlon) {
- this.latlon = latlon;
- }
-
@Override
public Geopoint getCoords() {
return coords;
@@ -876,11 +900,7 @@ public class cgCache implements ICache, IWaypoint {
this.elevation = elevation;
}
- public String getShortdesc() {
- return shortdesc;
- }
-
- public void setShortdesc(String shortdesc) {
+ public void setShortDescription(String shortdesc) {
this.shortdesc = shortdesc;
}
@@ -934,7 +954,7 @@ public class cgCache implements ICache, IWaypoint {
* @return always non <code>null</code>
*/
public List<Waypoint> getWaypoints() {
- return waypoints.asList();
+ return waypoints;
}
/**
@@ -946,7 +966,10 @@ public class cgCache implements ICache, IWaypoint {
* @return <code>true</code> if waypoints successfully added to waypoint database
*/
public boolean setWaypoints(List<Waypoint> waypoints, boolean saveToDatabase) {
- this.waypoints.set(waypoints);
+ this.waypoints.clear();
+ if (waypoints != null) {
+ this.waypoints.addAll(waypoints);
+ }
finalDefined = false;
if (waypoints != null) {
for (Waypoint waypoint : waypoints) {
@@ -962,7 +985,7 @@ public class cgCache implements ICache, IWaypoint {
/**
* @return never <code>null</code>
*/
- public LazyInitializedList<LogEntry> getLogs() {
+ public List<LogEntry> getLogs() {
return logs;
}
@@ -984,7 +1007,10 @@ public class cgCache implements ICache, IWaypoint {
* the log entries
*/
public void setLogs(List<LogEntry> logs) {
- this.logs.set(logs);
+ this.logs.clear();
+ if (logs != null) {
+ this.logs.addAll(logs);
+ }
}
public boolean isLogOffline() {
@@ -1076,12 +1102,11 @@ public class cgCache implements ICache, IWaypoint {
this.found = found;
}
- public void setOwn(boolean own) {
- this.own = own;
- }
-
public void setAttributes(List<String> attributes) {
- this.attributes.set(attributes);
+ this.attributes.clear();
+ if (attributes != null) {
+ this.attributes.addAll(attributes);
+ }
}
public void setSpoilers(List<Image> spoilers) {
@@ -1149,7 +1174,7 @@ public class cgCache implements ICache, IWaypoint {
public boolean addOrChangeWaypoint(final Waypoint waypoint, boolean saveToDatabase) {
waypoint.setGeocode(geocode);
- if (waypoint.getId() <= 0) { // this is a new waypoint
+ if (waypoint.getId() < 0) { // this is a new waypoint
waypoints.add(waypoint);
if (waypoint.isFinalWithCoords()) {
finalDefined = true;
@@ -1230,7 +1255,7 @@ public class cgCache implements ICache, IWaypoint {
if (waypoint == null) {
return false;
}
- if (waypoint.getId() <= 0) {
+ if (waypoint.getId() < 0) {
return false;
}
if (waypoint.isUserDefined()) {
@@ -1333,7 +1358,7 @@ public class cgCache implements ICache, IWaypoint {
matcher = new MatcherWrapper(coordPattern, note);
}
} catch (Exception e) {
- Log.e("cgCache.parseWaypointsFromNote", e);
+ Log.e("Geocache.parseWaypointsFromNote", e);
}
}
@@ -1358,16 +1383,22 @@ public class cgCache implements ICache, IWaypoint {
if (this == obj) {
return true;
}
- if (!(obj instanceof cgCache)) {
+ if (!(obj instanceof Geocache)) {
return false;
}
// just compare the geocode even if that is not what "equals" normally does
- return StringUtils.isNotBlank(geocode) && geocode.equals(((cgCache) obj).geocode);
+ return StringUtils.isNotBlank(geocode) && geocode.equals(((Geocache) obj).geocode);
}
public void store(CancellableHandler handler) {
- final int listId = Math.max(getListId(), StoredList.STANDARD_LIST_ID);
- storeCache(this, null, listId, false, handler);
+ store(StoredList.TEMPORARY_LIST_ID, handler);
+ }
+
+ public void store(final int listId, CancellableHandler handler) {
+ int newListId = listId < StoredList.STANDARD_LIST_ID
+ ? Math.max(getListId(), StoredList.STANDARD_LIST_ID)
+ : listId;
+ storeCache(this, null, newListId, false, handler);
}
public void setZoomlevel(int zoomlevel) {
@@ -1447,9 +1478,9 @@ public class cgCache implements ICache, IWaypoint {
storeCache(null, geocode, newListId, true, handler);
}
- public static void storeCache(cgCache origCache, String geocode, int listId, boolean forceRedownload, CancellableHandler handler) {
+ public static void storeCache(Geocache origCache, String geocode, int listId, boolean forceRedownload, CancellableHandler handler) {
try {
- cgCache cache;
+ Geocache cache;
// get cache details, they may not yet be complete
if (origCache != null) {
// only reload the cache if it was already stored or doesn't have full details (by checking the description)
@@ -1534,7 +1565,7 @@ public class cgCache implements ICache, IWaypoint {
public static SearchResult searchByGeocode(final String geocode, final String guid, final int listId, final boolean forceReload, final CancellableHandler handler) {
if (StringUtils.isBlank(geocode) && StringUtils.isBlank(guid)) {
- Log.e("cgCache.searchByGeocode: No geocode nor guid given");
+ Log.e("Geocache.searchByGeocode: No geocode nor guid given");
return null;
}
@@ -1612,7 +1643,7 @@ public class cgCache implements ICache, IWaypoint {
* @return
*/
public boolean hasAttribute(CacheAttribute attribute, boolean yes) {
- cgCache fullCache = cgData.loadCache(getGeocode(), EnumSet.of(LoadFlag.LOAD_ATTRIBUTES));
+ Geocache fullCache = cgData.loadCache(getGeocode(), EnumSet.of(LoadFlag.LOAD_ATTRIBUTES));
if (fullCache == null) {
fullCache = this;
}
diff --git a/main/src/cgeo/geocaching/ICache.java b/main/src/cgeo/geocaching/ICache.java
index 030c53f..6d0d89a 100644
--- a/main/src/cgeo/geocaching/ICache.java
+++ b/main/src/cgeo/geocaching/ICache.java
@@ -4,7 +4,6 @@
package cgeo.geocaching;
import cgeo.geocaching.enumerations.LogType;
-import cgeo.geocaching.utils.LazyInitializedList;
import java.util.Date;
import java.util.List;
@@ -28,7 +27,7 @@ public interface ICache extends IBasicCache {
/**
* @return true if the user is the owner of the cache, false else
*/
- public boolean isOwn();
+ public boolean isOwner();
/**
* @return true is the cache is archived, false else
@@ -107,7 +106,7 @@ public interface ICache extends IBasicCache {
*
* @return the list of attributes for this cache
*/
- public LazyInitializedList<String> getAttributes();
+ public List<String> getAttributes();
/**
* @return the list of trackables in this cache
diff --git a/main/src/cgeo/geocaching/IWaypoint.java b/main/src/cgeo/geocaching/IWaypoint.java
index 78e3b43..2b992e1 100644
--- a/main/src/cgeo/geocaching/IWaypoint.java
+++ b/main/src/cgeo/geocaching/IWaypoint.java
@@ -1,12 +1,14 @@
-/**
- *
- */
package cgeo.geocaching;
import cgeo.geocaching.enumerations.WaypointType;
public interface IWaypoint extends ILogable, ICoordinates {
+ /**
+ * Return an unique waypoint id.
+ *
+ * @return a non-negative id if set, -1 if unset
+ */
public abstract int getId();
public abstract WaypointType getWaypointType();
diff --git a/main/src/cgeo/geocaching/Intents.java b/main/src/cgeo/geocaching/Intents.java
new file mode 100644
index 0000000..07e1c13
--- /dev/null
+++ b/main/src/cgeo/geocaching/Intents.java
@@ -0,0 +1,28 @@
+package cgeo.geocaching;
+
+public class Intents {
+
+ private Intents() {
+ // Do not instantiate
+ }
+
+ private static final String PREFIX = "cgeo.geocaching.intent.extra.";
+
+ public static final String EXTRA_ADDRESS = PREFIX + "address";
+ public static final String EXTRAS_COORDS = PREFIX + "coords";
+ public static final String EXTRA_COUNT = PREFIX + "count";
+ public static final String EXTRA_GEOCODE = PREFIX + "geocode";
+ public static final String EXTRA_GUID = PREFIX + "guid";
+ public static final String EXTRA_ID = PREFIX + "id";
+ public static final String EXTRA_KEYWORD = PREFIX + "keyword";
+ public static final String EXTRA_KEYWORD_SEARCH = PREFIX + "keyword_search";
+ public static final String EXTRA_LIST_ID = PREFIX + "list_id";
+ public static final String EXTRA_LIST_TYPE = PREFIX + "list_type";
+ public static final String EXTRA_MAP_FILE = PREFIX + "map_file";
+ public static final String EXTRA_NAME = PREFIX + "name";
+ public static final String EXTRA_SEARCH = PREFIX + "search";
+ public static final String EXTRA_START_DIR = PREFIX + "start_dir";
+ public static final String EXTRA_TRACKING_CODE = PREFIX + "tracking_code";
+ public static final String EXTRA_USERNAME = PREFIX + "username";
+ public static final String EXTRA_WAYPOINT_ID = PREFIX + "waypoint_id";
+}
diff --git a/main/src/cgeo/geocaching/LiveMapInfo.java b/main/src/cgeo/geocaching/LiveMapInfo.java
deleted file mode 100644
index 2fee940..0000000
--- a/main/src/cgeo/geocaching/LiveMapInfo.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package cgeo.geocaching;
-
-import cgeo.geocaching.activity.AbstractActivity;
-
-import android.os.Bundle;
-import android.view.View;
-import android.widget.Button;
-import android.widget.CheckBox;
-
-public class LiveMapInfo extends AbstractActivity {
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- setContentView(R.layout.livemapinfo);
-
- final int showCount = Settings.getLiveMapHintShowCount();
-
- if (showCount > 2) {
- final CheckBox cb = (CheckBox) findViewById(R.id.live_map_hint_hide);
- cb.setVisibility(View.VISIBLE);
- }
-
- final Button closeButton = (Button) findViewById(R.id.live_map_hint_ok);
- closeButton.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- final CheckBox cb = (CheckBox) findViewById(R.id.live_map_hint_hide);
- if (cb.isChecked()) {
- Settings.setHideLiveHint(true);
- }
- finish();
- }
- });
-
- Settings.setLiveMapHintShowCount(showCount + 1);
- }
-
- @Override
- protected void onStop() {
-
- final CheckBox cb = (CheckBox) findViewById(R.id.live_map_hint_hide);
- if (cb.isChecked()) {
- Settings.setHideLiveHint(true);
- }
-
- super.onStop();
- }
-
-}
diff --git a/main/src/cgeo/geocaching/LogTrackableActivity.java b/main/src/cgeo/geocaching/LogTrackableActivity.java
index 0217c08..b8983ba 100644
--- a/main/src/cgeo/geocaching/LogTrackableActivity.java
+++ b/main/src/cgeo/geocaching/LogTrackableActivity.java
@@ -7,8 +7,8 @@ import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.network.Network;
import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.twitter.Twitter;
-import cgeo.geocaching.ui.DateDialog;
import cgeo.geocaching.ui.Formatter;
+import cgeo.geocaching.ui.dialog.DateDialog;
import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.LogTemplateProvider.LogContext;
@@ -119,11 +119,11 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat
// get parameters
final Bundle extras = getIntent().getExtras();
if (extras != null) {
- geocode = extras.getString("geocode");
- guid = extras.getString("guid");
+ geocode = extras.getString(Intents.EXTRA_GEOCODE);
+ guid = extras.getString(Intents.EXTRA_GUID);
- if (StringUtils.isNotBlank(extras.getString("trackingcode"))) {
- ((EditText) findViewById(R.id.tracking)).setText(extras.getString("trackingcode"));
+ if (StringUtils.isNotBlank(extras.getString(Intents.EXTRA_TRACKING_CODE))) {
+ ((EditText) findViewById(R.id.tracking)).setText(extras.getString(Intents.EXTRA_TRACKING_CODE));
}
}
@@ -357,9 +357,9 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat
public static void startActivity(final Context context, final Trackable trackable) {
final Intent logTouchIntent = new Intent(context, LogTrackableActivity.class);
- logTouchIntent.putExtra("geocode", trackable.getGeocode());
- logTouchIntent.putExtra("guid", trackable.getGuid());
- logTouchIntent.putExtra("trackingcode", trackable.getTrackingcode());
+ logTouchIntent.putExtra(Intents.EXTRA_GEOCODE, trackable.getGeocode());
+ logTouchIntent.putExtra(Intents.EXTRA_GUID, trackable.getGuid());
+ logTouchIntent.putExtra(Intents.EXTRA_TRACKING_CODE, trackable.getTrackingcode());
context.startActivity(logTouchIntent);
}
diff --git a/main/src/cgeo/geocaching/SearchActivity.java b/main/src/cgeo/geocaching/SearchActivity.java
index 4c9a230..ddb9483 100644
--- a/main/src/cgeo/geocaching/SearchActivity.java
+++ b/main/src/cgeo/geocaching/SearchActivity.java
@@ -7,6 +7,7 @@ import cgeo.geocaching.connector.capability.ISearchByGeocode;
import cgeo.geocaching.connector.gc.GCConstants;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.GeopointFormatter;
+import cgeo.geocaching.ui.dialog.CoordinatesInputDialog;
import cgeo.geocaching.utils.BaseUtils;
import cgeo.geocaching.utils.EditUtils;
import cgeo.geocaching.utils.GeoDirHandler;
@@ -32,8 +33,6 @@ import java.util.Locale;
public class SearchActivity extends AbstractActivity {
- private static final String EXTRAS_KEYWORDSEARCH = "keywordsearch";
-
private static final int MENU_SEARCH_OWN_CACHES = 1;
private EditText latEdit = null;
private EditText lonEdit = null;
@@ -50,7 +49,7 @@ public class SearchActivity extends AbstractActivity {
Intent intent = getIntent();
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
final String query = intent.getStringExtra(SearchManager.QUERY);
- final boolean keywordSearch = intent.getBooleanExtra(EXTRAS_KEYWORDSEARCH, true);
+ final boolean keywordSearch = intent.getBooleanExtra(Intents.EXTRA_KEYWORD_SEARCH, true);
if (instantSearch(query, keywordSearch)) {
setResult(RESULT_OK);
@@ -111,7 +110,7 @@ public class SearchActivity extends AbstractActivity {
final IConnector connector = ConnectorFactory.getConnector(geocode);
if (connector instanceof ISearchByGeocode) {
final Intent cachesIntent = new Intent(this, CacheDetailActivity.class);
- cachesIntent.putExtra("geocode", geocode.toUpperCase(Locale.US));
+ cachesIntent.putExtra(Intents.EXTRA_GEOCODE, geocode.toUpperCase(Locale.US));
startActivity(cachesIntent);
return true;
}
@@ -120,7 +119,7 @@ public class SearchActivity extends AbstractActivity {
final String trackable = BaseUtils.getMatch(query, GCConstants.PATTERN_TB_CODE, true, 0, "", false);
if (StringUtils.isNotBlank(trackable)) {
final Intent trackablesIntent = new Intent(this, TrackableActivity.class);
- trackablesIntent.putExtra("geocode", trackable.toUpperCase(Locale.US));
+ trackablesIntent.putExtra(Intents.EXTRA_GEOCODE, trackable.toUpperCase(Locale.US));
startActivity(trackablesIntent);
return true;
}
@@ -257,9 +256,9 @@ public class SearchActivity extends AbstractActivity {
@Override
public void onClick(View arg0) {
- cgeocoords coordsDialog = new cgeocoords(SearchActivity.this, null, null, app.currentGeo());
+ CoordinatesInputDialog coordsDialog = new CoordinatesInputDialog(SearchActivity.this, null, null, app.currentGeo());
coordsDialog.setCancelable(true);
- coordsDialog.setOnCoordinateUpdate(new cgeocoords.CoordinateUpdate() {
+ coordsDialog.setOnCoordinateUpdate(new CoordinatesInputDialog.CoordinateUpdate() {
@Override
public void update(Geopoint gp) {
((Button) findViewById(R.id.buttonLatitude)).setText(gp.format(GeopointFormatter.Format.LAT_DECMINUTE));
@@ -334,8 +333,8 @@ public class SearchActivity extends AbstractActivity {
return;
}
- final Intent addressesIntent = new Intent(this, AdressListActivity.class);
- addressesIntent.putExtra("keyword", addText);
+ final Intent addressesIntent = new Intent(this, AddressListActivity.class);
+ addressesIntent.putExtra(Intents.EXTRA_KEYWORD, addText);
startActivity(addressesIntent);
}
@@ -409,7 +408,7 @@ public class SearchActivity extends AbstractActivity {
}
final Intent trackablesIntent = new Intent(this, TrackableActivity.class);
- trackablesIntent.putExtra("geocode", trackableText.toUpperCase(Locale.US));
+ trackablesIntent.putExtra(Intents.EXTRA_GEOCODE, trackableText.toUpperCase(Locale.US));
startActivity(trackablesIntent);
}
@@ -432,7 +431,7 @@ public class SearchActivity extends AbstractActivity {
final Intent searchIntent = new Intent(fromActivity, SearchActivity.class);
searchIntent.setAction(Intent.ACTION_SEARCH).
putExtra(SearchManager.QUERY, scan).
- putExtra(SearchActivity.EXTRAS_KEYWORDSEARCH, false);
+ putExtra(Intents.EXTRA_KEYWORD_SEARCH, false);
fromActivity.startActivityForResult(searchIntent, cgeo.SEARCH_REQUEST_CODE);
}
}
diff --git a/main/src/cgeo/geocaching/SearchResult.java b/main/src/cgeo/geocaching/SearchResult.java
index d1b1df6..b0540f2 100644
--- a/main/src/cgeo/geocaching/SearchResult.java
+++ b/main/src/cgeo/geocaching/SearchResult.java
@@ -8,6 +8,7 @@ import cgeo.geocaching.enumerations.LoadFlags.SaveFlag;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.gcvote.GCVote;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import android.os.Parcel;
@@ -101,7 +102,7 @@ public class SearchResult implements Parcelable {
* @param cache the cache to include
*/
- public SearchResult(final cgCache cache) {
+ public SearchResult(final Geocache cache) {
this(Collections.singletonList(cache));
}
@@ -110,9 +111,9 @@ public class SearchResult implements Parcelable {
*
* @param caches the non-null collection of caches to include
*/
- public SearchResult(final Collection<cgCache> caches) {
+ public SearchResult(final Collection<Geocache> caches) {
this();
- for (final cgCache cache : caches) {
+ for (final Geocache cache : caches) {
addCache(cache);
}
}
@@ -190,13 +191,13 @@ public class SearchResult implements Parcelable {
SearchResult result = new SearchResult(this);
result.geocodes.clear();
- final ArrayList<cgCache> cachesForVote = new ArrayList<cgCache>();
- final Set<cgCache> caches = cgData.loadCaches(geocodes, LoadFlags.LOAD_CACHE_OR_DB);
- for (cgCache cache : caches) {
+ final ArrayList<Geocache> cachesForVote = new ArrayList<Geocache>();
+ final Set<Geocache> caches = cgData.loadCaches(geocodes, LoadFlags.LOAD_CACHE_OR_DB);
+ for (Geocache cache : caches) {
// Is there any reason to exclude the cache from the list?
final boolean excludeCache = (excludeDisabled && cache.isDisabled()) ||
- (excludeMine && (cache.isOwn() || cache.isFound())) ||
- (cacheType != CacheType.ALL && cacheType != cache.getType());
+ (excludeMine && (cache.isOwner() || cache.isFound())) ||
+ (!cacheType.contains(cache));
if (!excludeCache) {
result.addCache(cache);
cachesForVote.add(cache);
@@ -206,14 +207,11 @@ public class SearchResult implements Parcelable {
return result;
}
- public cgCache getFirstCacheFromResult(final EnumSet<LoadFlag> loadFlags) {
- if (geocodes != null && geocodes.size() >= 1) {
- return cgData.loadCache((String) geocodes.toArray()[0], loadFlags);
- }
- return null;
+ public Geocache getFirstCacheFromResult(final EnumSet<LoadFlag> loadFlags) {
+ return CollectionUtils.isNotEmpty(geocodes) ? cgData.loadCache(geocodes.iterator().next(), loadFlags) : null;
}
- public Set<cgCache> getCachesFromSearchResult(final EnumSet<LoadFlag> loadFlags) {
+ public Set<Geocache> getCachesFromSearchResult(final EnumSet<LoadFlag> loadFlags) {
return cgData.loadCaches(geocodes, loadFlags);
}
@@ -231,7 +229,7 @@ public class SearchResult implements Parcelable {
}
/** Add the cache geocode to the search and store the cache in the CacheCache */
- public boolean addCache(final cgCache cache) {
+ public boolean addCache(final Geocache cache) {
addGeocode(cache.getGeocode());
return cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_CACHE));
}
diff --git a/main/src/cgeo/geocaching/Settings.java b/main/src/cgeo/geocaching/Settings.java
index 96aab88..0c157e1 100644
--- a/main/src/cgeo/geocaching/Settings.java
+++ b/main/src/cgeo/geocaching/Settings.java
@@ -86,6 +86,7 @@ public final class Settings {
private static final String KEY_MEMBER_STATUS = "memberstatus";
private static final String KEY_COORD_INPUT_FORMAT = "coordinputformat";
private static final String KEY_LOG_OFFLINE = "log_offline";
+ private static final String KEY_CHOOSE_LIST = "choose_list";
private static final String KEY_LOAD_DIRECTION_IMG = "loaddirectionimg";
private static final String KEY_GC_CUSTOM_DATE = "gccustomdate";
private static final String KEY_SHOW_WAYPOINTS_THRESHOLD = "gcshowwaypointsthreshold";
@@ -128,7 +129,7 @@ public final class Settings {
Min,
Sec;
- static coordInputFormatEnum fromInt(int id) {
+ public static coordInputFormatEnum fromInt(int id) {
final coordInputFormatEnum[] values = coordInputFormatEnum.values();
if (id < 0 || id >= values.length) {
return Min;
@@ -204,6 +205,7 @@ public final class Settings {
e.putString(KEY_MEMBER_STATUS, old.getString(KEY_MEMBER_STATUS, ""));
e.putInt(KEY_COORD_INPUT_FORMAT, old.getInt(KEY_COORD_INPUT_FORMAT, 0));
e.putBoolean(KEY_LOG_OFFLINE, old.getBoolean(KEY_LOG_OFFLINE, false));
+ e.putBoolean(KEY_CHOOSE_LIST, old.getBoolean(KEY_CHOOSE_LIST, false));
e.putBoolean(KEY_LOAD_DIRECTION_IMG, old.getBoolean(KEY_LOAD_DIRECTION_IMG, true));
e.putString(KEY_GC_CUSTOM_DATE, old.getString(KEY_GC_CUSTOM_DATE, null));
e.putInt(KEY_SHOW_WAYPOINTS_THRESHOLD, old.getInt(KEY_SHOW_WAYPOINTS_THRESHOLD, 0));
@@ -552,6 +554,20 @@ public final class Settings {
return sharedPrefs.getBoolean(KEY_LOG_OFFLINE, false);
}
+ static void setChooseList(final boolean choose) {
+ editSharedSettings(new PrefRunnable() {
+
+ @Override
+ public void edit(Editor edit) {
+ edit.putBoolean(KEY_CHOOSE_LIST, choose);
+ }
+ });
+ }
+
+ public static boolean getChooseList() {
+ return sharedPrefs.getBoolean(KEY_CHOOSE_LIST, false);
+ }
+
static void setLoadDirImg(final boolean value) {
editSharedSettings(new PrefRunnable() {
@@ -1381,12 +1397,6 @@ public final class Settings {
}
}
- public static String getPreferencesName() {
- // There is currently no Android API to get the file name of the shared preferences. Let's hardcode
- // it without needing a cgeoapplication instance.
- return "cgeo.geocaching_preferences";
- }
-
public static boolean getPlainLogs() {
return sharedPrefs.getBoolean(KEY_PLAIN_LOGS, false);
}
diff --git a/main/src/cgeo/geocaching/SettingsActivity.java b/main/src/cgeo/geocaching/SettingsActivity.java
index 64a086d..3463204 100644
--- a/main/src/cgeo/geocaching/SettingsActivity.java
+++ b/main/src/cgeo/geocaching/SettingsActivity.java
@@ -521,6 +521,17 @@ public class SettingsActivity extends AbstractActivity {
}
});
+ final CheckBox chooseList = (CheckBox) findViewById(R.id.choose_list);
+ chooseList.setChecked(Settings.getChooseList());
+ chooseList.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ Settings.setChooseList(!Settings.getChooseList());
+ chooseList.setChecked(Settings.getChooseList());
+ }
+ });
+
final CheckBox plainLogs = (CheckBox) findViewById(R.id.plain_logs);
plainLogs.setChecked(Settings.getPlainLogs());
plainLogs.setOnClickListener(new View.OnClickListener() {
@@ -973,8 +984,8 @@ public class SettingsActivity extends AbstractActivity {
switch (requestCode) {
case SELECT_MAPFILE_REQUEST:
- if (data.hasExtra("mapfile")) {
- final String mapFile = data.getStringExtra("mapfile");
+ if (data.hasExtra(Intents.EXTRA_MAP_FILE)) {
+ final String mapFile = data.getStringExtra(Intents.EXTRA_MAP_FILE);
Settings.setMapFile(mapFile);
if (!Settings.isValidMapFile(Settings.getMapFile())) {
showToast(res.getString(R.string.warn_invalid_mapfile));
@@ -1019,10 +1030,7 @@ public class SettingsActivity extends AbstractActivity {
if (resultCode != RESULT_OK) {
return;
}
- // we may come back from either our selfmade chooser or from the Open Intent manager
- final String directory = data.hasExtra(SimpleDirChooser.EXTRA_CHOSEN_DIR) ?
- data.getStringExtra(SimpleDirChooser.EXTRA_CHOSEN_DIR) :
- new File(data.getData().getPath()).getAbsolutePath();
+ final String directory = new File(data.getData().getPath()).getAbsolutePath();
if (StringUtils.isNotBlank(directory)) {
runnableSetDir.run(directory);
EditText directoryText = (EditText) findViewById(textField);
@@ -1032,19 +1040,18 @@ public class SettingsActivity extends AbstractActivity {
}
private void selectDirectory(String startDirectory, int directoryKind) {
- Intent dirChooser;
try {
- dirChooser = new Intent(FileManagerIntents.ACTION_PICK_DIRECTORY);
+ final Intent dirChooser = new Intent(FileManagerIntents.ACTION_PICK_DIRECTORY);
if (StringUtils.isNotBlank(startDirectory)) {
- dirChooser.setData(Uri.parse("file://" + new File(startDirectory).getAbsolutePath()));
+ dirChooser.setData(Uri.fromFile(new File(startDirectory)));
}
dirChooser.putExtra(FileManagerIntents.EXTRA_TITLE, res.getString(R.string.simple_dir_chooser_title));
dirChooser.putExtra(FileManagerIntents.EXTRA_BUTTON_TEXT, res.getString(android.R.string.ok));
startActivityForResult(dirChooser, directoryKind);
} catch (android.content.ActivityNotFoundException ex) {
// OI file manager not available
- dirChooser = new Intent(this, SimpleDirChooser.class);
- dirChooser.putExtra(SimpleDirChooser.START_DIR, startDirectory);
+ final Intent dirChooser = new Intent(this, SimpleDirChooser.class);
+ dirChooser.putExtra(Intents.EXTRA_START_DIR, startDirectory);
startActivityForResult(dirChooser, directoryKind);
}
}
diff --git a/main/src/cgeo/geocaching/StaticMapsActivity.java b/main/src/cgeo/geocaching/StaticMapsActivity.java
index 263b6b8..d7cef65 100644
--- a/main/src/cgeo/geocaching/StaticMapsActivity.java
+++ b/main/src/cgeo/geocaching/StaticMapsActivity.java
@@ -177,7 +177,7 @@ public class StaticMapsActivity extends AbstractActivity {
}
private boolean downloadStaticMaps() {
- final cgCache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
if (waypoint_id == null) {
showToast(res.getString(R.string.info_storing_static_maps));
StaticMapsProvider.storeCacheStaticMap(cache, true);
diff --git a/main/src/cgeo/geocaching/StaticMapsProvider.java b/main/src/cgeo/geocaching/StaticMapsProvider.java
index b418400..6feacc2 100644
--- a/main/src/cgeo/geocaching/StaticMapsProvider.java
+++ b/main/src/cgeo/geocaching/StaticMapsProvider.java
@@ -80,7 +80,7 @@ public class StaticMapsProvider {
}
}
- public static void downloadMaps(cgCache cache) {
+ public static void downloadMaps(Geocache cache) {
if (cache == null) {
Log.e("downloadMaps - missing input parameter cache");
return;
@@ -105,7 +105,7 @@ public class StaticMapsProvider {
}
}
- public static void storeWaypointStaticMap(cgCache cache, Waypoint waypoint, boolean waitForResult) {
+ public static void storeWaypointStaticMap(Geocache cache, Waypoint waypoint, boolean waitForResult) {
int edge = StaticMapsProvider.guessMaxDisplaySide();
storeWaypointStaticMap(cache.getGeocode(), edge, waypoint, waitForResult);
}
@@ -128,12 +128,12 @@ public class StaticMapsProvider {
downloadMaps(geocode, wpMarkerUrl, WAYPOINT_PREFIX + waypoint.getId() + '_', wpLatlonMap, edge, null, waitForResult);
}
- public static void storeCacheStaticMap(cgCache cache, final boolean waitForResult) {
+ public static void storeCacheStaticMap(Geocache cache, final boolean waitForResult) {
int edge = guessMaxDisplaySide();
storeCacheStaticMap(cache, edge, waitForResult);
}
- private static void storeCacheStaticMap(final cgCache cache, final int edge, final boolean waitForResult) {
+ private static void storeCacheStaticMap(final Geocache cache, final int edge, final boolean waitForResult) {
final String latlonMap = cache.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA);
final Parameters waypoints = new Parameters();
for (final Waypoint waypoint : cache.getWaypoints()) {
@@ -148,7 +148,7 @@ public class StaticMapsProvider {
downloadMaps(cache.getGeocode(), cacheMarkerUrl, "", latlonMap, edge, waypoints, waitForResult);
}
- public static void storeCachePreviewMap(final cgCache cache) {
+ public static void storeCachePreviewMap(final Geocache cache) {
if (cache == null) {
Log.e("storeCachePreviewMap - missing input parameter cache");
return;
@@ -193,7 +193,7 @@ public class StaticMapsProvider {
}
}
- private static String getCacheMarkerUrl(final cgCache cache) {
+ private static String getCacheMarkerUrl(final Geocache cache) {
StringBuilder url = new StringBuilder(MARKERS_URL);
url.append("marker_cache_").append(cache.getType().id);
if (cache.isFound()) {
@@ -229,7 +229,7 @@ public class StaticMapsProvider {
* @param cache
* @return <code>true</code> if at least one mapfile exists; <code>false</code> otherwise
*/
- public static boolean hasStaticMap(final cgCache cache) {
+ public static boolean hasStaticMap(final Geocache cache) {
if (cache == null) {
return false;
}
diff --git a/main/src/cgeo/geocaching/StoredList.java b/main/src/cgeo/geocaching/StoredList.java
index d6f0993..5a6f132 100644
--- a/main/src/cgeo/geocaching/StoredList.java
+++ b/main/src/cgeo/geocaching/StoredList.java
@@ -1,6 +1,6 @@
package cgeo.geocaching;
-import cgeo.geocaching.activity.IAbstractActivity;
+import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.utils.RunnableWithArgument;
import org.apache.commons.lang3.StringUtils;
@@ -50,19 +50,15 @@ public class StoredList {
if (!(obj instanceof StoredList)) {
return false;
}
- StoredList other = (StoredList) obj;
- if (id != other.id) {
- return false;
- }
- return true;
+ return id == ((StoredList) obj).id;
}
public static class UserInterface {
- private final IAbstractActivity activity;
+ private final Activity activity;
private final cgeoapplication app;
private final Resources res;
- public UserInterface(final IAbstractActivity activity) {
+ public UserInterface(final Activity activity) {
this.activity = activity;
app = cgeoapplication.getInstance();
res = app.getResources();
@@ -97,7 +93,7 @@ public class StoredList {
final CharSequence[] items = new CharSequence[listsTitle.size()];
- AlertDialog.Builder builder = new AlertDialog.Builder((Activity) activity);
+ AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(res.getString(titleId));
builder.setItems(listsTitle.toArray(items), new DialogInterface.OnClickListener() {
@Override
@@ -127,20 +123,20 @@ public class StoredList {
final int newId = cgData.createList(listName);
if (newId >= cgData.customListIdOffset) {
- activity.showToast(res.getString(R.string.list_dialog_create_ok));
+ ActivityMixin.showToast(activity, res.getString(R.string.list_dialog_create_ok));
if (runAfterwards != null) {
runAfterwards.run(newId);
}
} else {
- activity.showToast(res.getString(R.string.list_dialog_create_err));
+ ActivityMixin.showToast(activity, res.getString(R.string.list_dialog_create_err));
}
}
});
}
private void handleListNameInput(final String defaultValue, int dialogTitle, int buttonTitle, final RunnableWithArgument<String> runnable) {
- final AlertDialog.Builder alert = new AlertDialog.Builder((Activity) activity);
- final View view = ((Activity) activity).getLayoutInflater().inflate(R.layout.list_create_dialog, null);
+ final AlertDialog.Builder alert = new AlertDialog.Builder(activity);
+ final View view = activity.getLayoutInflater().inflate(R.layout.list_create_dialog, null);
final EditText input = (EditText) view.findViewById(R.id.text);
input.setText(defaultValue);
diff --git a/main/src/cgeo/geocaching/TrackableActivity.java b/main/src/cgeo/geocaching/TrackableActivity.java
index df3c6e4..fea4521 100644
--- a/main/src/cgeo/geocaching/TrackableActivity.java
+++ b/main/src/cgeo/geocaching/TrackableActivity.java
@@ -52,7 +52,7 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
private final int resId;
- private Page(final int resId) {
+ Page(final int resId) {
this.resId = resId;
}
}
@@ -126,10 +126,10 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
// try to get data from extras
if (extras != null) {
- geocode = extras.getString("geocode");
- name = extras.getString("name");
- guid = extras.getString("guid");
- id = extras.getString("id");
+ geocode = extras.getString(Intents.EXTRA_GEOCODE);
+ name = extras.getString(Intents.EXTRA_NAME);
+ guid = extras.getString(Intents.EXTRA_GUID);
+ id = extras.getString(Intents.EXTRA_ID);
}
// try to get data from URI
@@ -216,6 +216,7 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
menu.add(viewId, 1, 0, res.getString(R.string.user_menu_view_hidden));
menu.add(viewId, 2, 0, res.getString(R.string.user_menu_view_found));
menu.add(viewId, 3, 0, res.getString(R.string.user_menu_open_browser));
+ menu.add(viewId, 4, 0, res.getString(R.string.user_menu_send_message));
}
@Override
@@ -230,6 +231,9 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
case 3:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/profile/?u=" + Network.encode(contextMenuUser))));
return true;
+ case 4:
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/email/?u=" + Network.encode(contextMenuUser))));
+ return true;
default:
return false;
}
@@ -353,9 +357,9 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
public static void startActivity(final AbstractActivity fromContext,
final String guid, final String geocode, final String name) {
final Intent trackableIntent = new Intent(fromContext, TrackableActivity.class);
- trackableIntent.putExtra("guid", guid);
- trackableIntent.putExtra("geocode", geocode);
- trackableIntent.putExtra("name", name);
+ trackableIntent.putExtra(Intents.EXTRA_GUID, guid);
+ trackableIntent.putExtra(Intents.EXTRA_GEOCODE, geocode);
+ trackableIntent.putExtra(Intents.EXTRA_NAME, name);
fromContext.startActivity(trackableIntent);
}
diff --git a/main/src/cgeo/geocaching/VisitCacheActivity.java b/main/src/cgeo/geocaching/VisitCacheActivity.java
index 760d992..b2c6625 100644
--- a/main/src/cgeo/geocaching/VisitCacheActivity.java
+++ b/main/src/cgeo/geocaching/VisitCacheActivity.java
@@ -10,8 +10,8 @@ import cgeo.geocaching.gcvote.GCVote;
import cgeo.geocaching.loaders.UrlLoader;
import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.twitter.Twitter;
-import cgeo.geocaching.ui.DateDialog;
import cgeo.geocaching.ui.Formatter;
+import cgeo.geocaching.ui.dialog.DateDialog;
import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.LogTemplateProvider;
import cgeo.geocaching.utils.LogTemplateProvider.LogContext;
@@ -66,7 +66,7 @@ public class VisitCacheActivity extends AbstractLoggingActivity implements DateD
private static final int SELECT_IMAGE = 101;
private LayoutInflater inflater = null;
- private cgCache cache = null;
+ private Geocache cache = null;
private ProgressDialog waitDialog = null;
private String cacheid = null;
private String geocode = null;
@@ -568,7 +568,7 @@ public class VisitCacheActivity extends AbstractLoggingActivity implements DateD
if (logResult.left == StatusCode.NO_ERROR) {
final LogEntry logNow = new LogEntry(date, typeSelected, log);
- cache.getLogs().prepend(logNow);
+ cache.getLogs().add(0, logNow);
if (typeSelected == LogType.FOUND_IT) {
cache.setFound(true);
@@ -625,7 +625,7 @@ public class VisitCacheActivity extends AbstractLoggingActivity implements DateD
}
private void selectAllTrackablesAction() {
- Builder alert = new AlertDialog.Builder(VisitCacheActivity.this);
+ Builder alert = new AlertDialog.Builder(this);
alert.setTitle(res.getString(R.string.log_tb_changeall));
String[] tbLogTypes = getTBLogTypes();
alert.setItems(tbLogTypes, new OnClickListener() {
@@ -654,7 +654,7 @@ public class VisitCacheActivity extends AbstractLoggingActivity implements DateD
}
private void selectLogType() {
- Builder alert = new AlertDialog.Builder(VisitCacheActivity.this);
+ Builder alert = new AlertDialog.Builder(this);
String[] choices = new String[possibleLogTypes.size()];
for (int i = 0; i < choices.length; i++) {
choices[i] = possibleLogTypes.get(i).getL10n();
@@ -672,7 +672,7 @@ public class VisitCacheActivity extends AbstractLoggingActivity implements DateD
private void selectTrackableAction(View view) {
final int realViewId = view.getId();
- Builder alert = new AlertDialog.Builder(VisitCacheActivity.this);
+ Builder alert = new AlertDialog.Builder(this);
final TrackableLog trackableLog = actionButtons.get(realViewId);
alert.setTitle(trackableLog.name);
String[] tbLogTypes = getTBLogTypes();
diff --git a/main/src/cgeo/geocaching/Waypoint.java b/main/src/cgeo/geocaching/Waypoint.java
index 7a8b787..1d88c40 100644
--- a/main/src/cgeo/geocaching/Waypoint.java
+++ b/main/src/cgeo/geocaching/Waypoint.java
@@ -8,13 +8,15 @@ import org.apache.commons.lang3.StringUtils;
import android.content.res.Resources;
import android.widget.TextView;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
public class Waypoint implements IWaypoint, Comparable<Waypoint> {
public static final String PREFIX_OWN = "OWN";
private static final int ORDER_UNDEFINED = -2;
- private int id = 0;
+ private int id = -1;
private String geocode = "geocode";
private WaypointType waypointType = WaypointType.WAYPOINT;
private String prefix = "";
@@ -46,7 +48,7 @@ public class Waypoint implements IWaypoint, Comparable<Waypoint> {
public Waypoint(final Waypoint other) {
merge(other);
this.waypointType = other.waypointType;
- id = 0;
+ id = -1;
}
public void setIcon(final Resources res, final TextView nameView) {
@@ -77,31 +79,25 @@ public class Waypoint implements IWaypoint, Comparable<Waypoint> {
note = old.note;
}
}
+ if (id < 0) {
+ id = old.id;
+ }
}
- public static void mergeWayPoints(List<Waypoint> newPoints,
- List<Waypoint> oldPoints, boolean forceMerge) {
- // copy user modified details of the waypoints
- if (newPoints != null && oldPoints != null) {
- for (Waypoint old : oldPoints) {
- if (old != null) {
- boolean merged = false;
- if (StringUtils.isNotEmpty(old.name)) {
- for (Waypoint waypoint : newPoints) {
- if (waypoint != null && waypoint.name != null) {
- if (old.name.equalsIgnoreCase(waypoint.name)) {
- waypoint.merge(old);
- merged = true;
- break;
- }
- }
- }
- }
- // user added waypoints should also be in the new list
- if (!merged && (old.isUserDefined() || forceMerge)) {
- newPoints.add(old);
- }
- }
+ public static void mergeWayPoints(final List<Waypoint> newPoints, final List<Waypoint> oldPoints, final boolean forceMerge) {
+ // Build a map of new waypoints for faster subsequent lookups
+ final Map<String, Waypoint> newPrefixes = new HashMap<String, Waypoint>(newPoints.size());
+ for (final Waypoint waypoint : newPoints) {
+ newPrefixes.put(waypoint.getPrefix(), waypoint);
+ }
+
+ // Copy user modified details of the old waypoints over the new ones
+ for (final Waypoint oldWaypoint : oldPoints) {
+ final String prefix = oldWaypoint.getPrefix();
+ if (newPrefixes.containsKey(prefix)) {
+ newPrefixes.get(prefix).merge(oldWaypoint);
+ } else if (oldWaypoint.isUserDefined() || forceMerge) {
+ newPoints.add(oldWaypoint);
}
}
}
diff --git a/main/src/cgeo/geocaching/WaypointPopup.java b/main/src/cgeo/geocaching/WaypointPopup.java
index a69b729..766d43d 100644
--- a/main/src/cgeo/geocaching/WaypointPopup.java
+++ b/main/src/cgeo/geocaching/WaypointPopup.java
@@ -17,7 +17,6 @@ import android.widget.LinearLayout;
import android.widget.TextView;
public class WaypointPopup extends AbstractPopupActivity {
- private static final String EXTRA_WAYPOINT_ID = "waypoint_id";
private int waypointId = 0;
private Waypoint waypoint = null;
@@ -31,7 +30,7 @@ public class WaypointPopup extends AbstractPopupActivity {
// get parameters
final Bundle extras = getIntent().getExtras();
if (extras != null) {
- waypointId = extras.getInt(EXTRA_WAYPOINT_ID);
+ waypointId = extras.getInt(Intents.EXTRA_WAYPOINT_ID);
}
}
@@ -83,7 +82,7 @@ public class WaypointPopup extends AbstractPopupActivity {
}
/**
- * Tries to navigate to the {@link cgCache} of this activity.
+ * Tries to navigate to the {@link Geocache} of this activity.
*/
@Override
protected void startDefaultNavigation2() {
@@ -97,8 +96,8 @@ public class WaypointPopup extends AbstractPopupActivity {
public static void startActivity(final Context context, final int waypointId, final String geocode) {
final Intent popupIntent = new Intent(context, WaypointPopup.class);
- popupIntent.putExtra(EXTRA_WAYPOINT_ID, waypointId);
- popupIntent.putExtra(EXTRA_GEOCODE, geocode);
+ popupIntent.putExtra(Intents.EXTRA_WAYPOINT_ID, waypointId);
+ popupIntent.putExtra(Intents.EXTRA_GEOCODE, geocode);
context.startActivity(popupIntent);
}
diff --git a/main/src/cgeo/geocaching/activity/AbstractViewPagerActivity.java b/main/src/cgeo/geocaching/activity/AbstractViewPagerActivity.java
index 56431d4..366a59d 100644
--- a/main/src/cgeo/geocaching/activity/AbstractViewPagerActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractViewPagerActivity.java
@@ -237,8 +237,8 @@ public abstract class AbstractViewPagerActivity<Page extends Enum<Page>> extends
pageOrder.addAll(pagesAndIndex.getLeft());
// switch to details page, if we're out of bounds
- final int defaultPage = pagesAndIndex.getRight().intValue();
- if (viewPager.getCurrentItem() < 0 || viewPager.getCurrentItem() >= viewPagerAdapter.getCount()) {
+ final int defaultPage = pagesAndIndex.getRight();
+ if (getCurrentItem() < 0 || getCurrentItem() >= viewPagerAdapter.getCount()) {
viewPager.setCurrentItem(defaultPage, false);
}
@@ -267,6 +267,10 @@ public abstract class AbstractViewPagerActivity<Page extends Enum<Page>> extends
}
protected final boolean isCurrentPage(Page page) {
- return viewPager.getCurrentItem() == getPageIndex(page);
+ return getCurrentItem() == getPageIndex(page);
+ }
+
+ protected int getCurrentItem() {
+ return viewPager.getCurrentItem();
}
}
diff --git a/main/src/cgeo/geocaching/activity/ActivityMixin.java b/main/src/cgeo/geocaching/activity/ActivityMixin.java
index 8900593..de2dade 100644
--- a/main/src/cgeo/geocaching/activity/ActivityMixin.java
+++ b/main/src/cgeo/geocaching/activity/ActivityMixin.java
@@ -79,6 +79,22 @@ public final class ActivityMixin {
}
}
+ public static int getTheme() {
+ if (Settings.isLightSkin()) {
+ return R.style.light;
+ }
+
+ return R.style.dark;
+ }
+
+ public static int getDialogTheme() {
+ if (Settings.isLightSkin()) {
+ return R.style.popup_light;
+ }
+
+ return R.style.popup_dark;
+ }
+
public static void showToast(final Activity activity, final String text) {
if (StringUtils.isNotBlank(text)) {
Toast toast = Toast.makeText(activity, text, Toast.LENGTH_LONG);
diff --git a/main/src/cgeo/geocaching/activity/Progress.java b/main/src/cgeo/geocaching/activity/Progress.java
index 1aa1942..34e7623 100644
--- a/main/src/cgeo/geocaching/activity/Progress.java
+++ b/main/src/cgeo/geocaching/activity/Progress.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.activity;
-import cgeo.geocaching.ui.CustomProgressDialog;
+import cgeo.geocaching.ui.dialog.CustomProgressDialog;
import android.app.ProgressDialog;
import android.content.Context;
diff --git a/main/src/cgeo/geocaching/apps/AbstractApp.java b/main/src/cgeo/geocaching/apps/AbstractApp.java
index 678b98c..c95e8b4 100644
--- a/main/src/cgeo/geocaching/apps/AbstractApp.java
+++ b/main/src/cgeo/geocaching/apps/AbstractApp.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.apps;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.cgeo;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.utils.ProcessUtils;
@@ -56,7 +56,7 @@ public abstract class AbstractApp implements App {
}
@Override
- public boolean isEnabled(cgCache cache) {
+ public boolean isEnabled(Geocache cache) {
return cache != null;
}
}
diff --git a/main/src/cgeo/geocaching/apps/AbstractLocusApp.java b/main/src/cgeo/geocaching/apps/AbstractLocusApp.java
index ad421f6..53620e4 100644
--- a/main/src/cgeo/geocaching/apps/AbstractLocusApp.java
+++ b/main/src/cgeo/geocaching/apps/AbstractLocusApp.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.apps;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.Waypoint;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.CacheSize;
@@ -66,8 +66,8 @@ public abstract class AbstractLocusApp extends AbstractApp {
for (Object o : objectsToShow) {
Point p = null;
// get icon and Point
- if (o instanceof cgCache) {
- p = getCachePoint((cgCache) o, withCacheWaypoints, withCacheDetails);
+ if (o instanceof Geocache) {
+ p = getCachePoint((Geocache) o, withCacheWaypoints, withCacheDetails);
} else if (o instanceof Waypoint) {
p = getWaypointPoint((Waypoint) o);
}
@@ -104,7 +104,7 @@ public abstract class AbstractLocusApp extends AbstractApp {
* should be false for all if more then 200 Caches are transferred
* @return null, when the <code>Point</code> could not be constructed
*/
- private static Point getCachePoint(cgCache cache, boolean withWaypoints, boolean withCacheDetails) {
+ private static Point getCachePoint(Geocache cache, boolean withWaypoints, boolean withCacheDetails) {
if (cache == null || cache.getCoords() == null) {
return null;
}
diff --git a/main/src/cgeo/geocaching/apps/App.java b/main/src/cgeo/geocaching/apps/App.java
index 9d6d371..bc99526 100644
--- a/main/src/cgeo/geocaching/apps/App.java
+++ b/main/src/cgeo/geocaching/apps/App.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.apps;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
public interface App {
public boolean isInstalled();
@@ -17,5 +17,5 @@ public interface App {
* @param cache
* @return
*/
- boolean isEnabled(final cgCache cache);
+ boolean isEnabled(final Geocache cache);
}
diff --git a/main/src/cgeo/geocaching/apps/LocusDataStorageProvider.java b/main/src/cgeo/geocaching/apps/LocusDataStorageProvider.java
index 6897f95..03954f5 100644
--- a/main/src/cgeo/geocaching/apps/LocusDataStorageProvider.java
+++ b/main/src/cgeo/geocaching/apps/LocusDataStorageProvider.java
@@ -4,16 +4,12 @@ import menion.android.locus.addon.publiclib.geoData.PointsData;
import menion.android.locus.addon.publiclib.utils.DataCursor;
import menion.android.locus.addon.publiclib.utils.DataStorage;
-import org.apache.commons.collections.CollectionUtils;
-
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Parcel;
-import java.util.ArrayList;
-
/**
* code provided by menion - developer of Locus
*/
@@ -23,20 +19,14 @@ public class LocusDataStorageProvider extends ContentProvider {
public Cursor query(Uri aUri, String[] aProjection, String aSelection,
String[] aSelectionArgs, String aSortOrder) {
- DataCursor cursor = new DataCursor(new String[] { "data" });
-
- ArrayList<PointsData> data = DataStorage.getData();
- if (CollectionUtils.isEmpty(data)) {
- return cursor;
- }
+ final DataCursor cursor = new DataCursor(new String[] { "data" });
- for (int i = 0; i < data.size(); i++) {
- // get byte array
- Parcel par = Parcel.obtain();
- data.get(i).writeToParcel(par, 0);
- byte[] byteData = par.marshall();
- // add to row
- cursor.addRow(new Object[] { byteData });
+ for (final PointsData item : DataStorage.getData()) {
+ final Parcel par = Parcel.obtain();
+ item.writeToParcel(par, 0);
+ // add byte array to row
+ cursor.addRow(new Object[] { par.marshall() });
+ par.recycle();
}
// data filled to cursor, clear reference to prevent some memory issue
DataStorage.clearData();
diff --git a/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java b/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java
index 8087d6d..fd7d4b5 100644
--- a/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.apps.cache;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.apps.AbstractApp;
import cgeo.geocaching.apps.cache.navi.CacheNavigationApp;
@@ -14,7 +14,7 @@ abstract class AbstractGeneralApp extends AbstractApp implements CacheNavigation
}
@Override
- public void navigate(Activity activity, cgCache cache) {
+ public void navigate(Activity activity, Geocache cache) {
final Intent intent = getLaunchIntent();
if (intent != null) {
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
diff --git a/main/src/cgeo/geocaching/apps/cache/CacheBeaconApp.java b/main/src/cgeo/geocaching/apps/cache/CacheBeaconApp.java
index 4ba336f..9cfafb4 100644
--- a/main/src/cgeo/geocaching/apps/cache/CacheBeaconApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/CacheBeaconApp.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.apps.cache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.enumerations.CacheAttribute;
public class CacheBeaconApp extends AbstractGeneralApp {
@@ -11,8 +11,8 @@ public class CacheBeaconApp extends AbstractGeneralApp {
}
@Override
- public boolean isEnabled(cgCache cache) {
- return cache.hasAttribute(CacheAttribute.WIRELESS_BEACON, true);
+ public boolean isEnabled(Geocache cache) {
+ return cache.hasAttribute(CacheAttribute.WIRELESSBEACON, true);
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java b/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java
index 8c06d7a..39e1963 100644
--- a/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.apps.cache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.enumerations.CacheType;
public class WhereYouGoApp extends AbstractGeneralApp {
@@ -10,7 +10,7 @@ public class WhereYouGoApp extends AbstractGeneralApp {
}
@Override
- public boolean isEnabled(cgCache cache) {
+ public boolean isEnabled(Geocache cache) {
return cache.getType() == CacheType.WHERIGO;
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java
index 67aa849..a3ea57e 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.apps.cache.navi;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.Waypoint;
import cgeo.geocaching.apps.AbstractApp;
@@ -20,7 +20,7 @@ abstract class AbstractPointNavigationApp extends AbstractApp implements CacheNa
}
@Override
- public void navigate(Activity activity, cgCache cache) {
+ public void navigate(Activity activity, Geocache cache) {
navigate(activity, cache.getCoords());
}
@@ -30,7 +30,7 @@ abstract class AbstractPointNavigationApp extends AbstractApp implements CacheNa
}
@Override
- public boolean isEnabled(cgCache cache) {
+ public boolean isEnabled(Geocache cache) {
return cache.getCoords() != null;
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java
index e6bf9f4..d089e82 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java
@@ -5,7 +5,7 @@ import cgeo.geocaching.R;
import cgeo.geocaching.StaticMapsActivity;
import cgeo.geocaching.StaticMapsProvider;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.cgData;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.apps.AbstractApp;
@@ -41,7 +41,7 @@ abstract class AbstractStaticMapsApp extends AbstractApp implements CacheNavigat
return false;
}
- protected static boolean invokeStaticMaps(final Activity activity, final cgCache cache, final Waypoint waypoint, final boolean download) {
+ protected static boolean invokeStaticMaps(final Activity activity, final Geocache cache, final Waypoint waypoint, final boolean download) {
final ILogable logable = cache != null && cache.getListId() != 0 ? cache : waypoint;
// If the cache is not stored for offline, cache seems to be null and waypoint may be null too
if (logable==null || logable.getGeocode()==null ) {
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/CacheNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/CacheNavigationApp.java
index e47150f..d47bdc0 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/CacheNavigationApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/CacheNavigationApp.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.apps.cache.navi;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.apps.App;
import android.app.Activity;
@@ -10,8 +10,8 @@ import android.app.Activity;
*
*/
public interface CacheNavigationApp extends App {
- void navigate(final Activity activity, final cgCache cache);
+ void navigate(final Activity activity, final Geocache cache);
@Override
- boolean isEnabled(final cgCache cache);
+ boolean isEnabled(final Geocache cache);
} \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java b/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
index 330c338..1ded9ac 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.apps.cache.navi;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeonavigate;
import cgeo.geocaching.apps.AbstractApp;
import cgeo.geocaching.geopoint.Geopoint;
@@ -38,13 +38,13 @@ class CompassApp extends AbstractApp implements CacheNavigationApp, WaypointNavi
}
@Override
- public void navigate(Activity activity, cgCache cache) {
+ public void navigate(Activity activity, Geocache cache) {
cgeonavigate.startActivity(activity, cache.getGeocode(), cache.getName(), cache.getCoords(), null,
Formatter.formatCacheInfoShort(cache));
}
@Override
- public boolean isEnabled(cgCache cache) {
+ public boolean isEnabled(Geocache cache) {
return cache.getGeocode() != null;
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java
index 846b9bc..bc422d4 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.apps.cache.navi;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.Waypoint;
import android.app.Activity;
@@ -13,7 +13,7 @@ class DownloadStaticMapsApp extends AbstractStaticMapsApp {
}
@Override
- public boolean isEnabled(cgCache cache) {
+ public boolean isEnabled(Geocache cache) {
return !cache.hasStaticMap();
}
@@ -23,7 +23,7 @@ class DownloadStaticMapsApp extends AbstractStaticMapsApp {
}
@Override
- public void navigate(Activity activity, cgCache cache) {
+ public void navigate(Activity activity, Geocache cache) {
invokeStaticMaps(activity, cache, null, true);
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java b/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java
index db842ad..2990f93 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.apps.cache.navi;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.apps.AbstractApp;
import cgeo.geocaching.enumerations.WaypointType;
import cgeo.geocaching.geopoint.Geopoint;
@@ -37,12 +37,12 @@ class InternalMap extends AbstractApp implements CacheNavigationApp, WaypointNav
}
@Override
- public void navigate(Activity activity, cgCache cache) {
+ public void navigate(Activity activity, Geocache cache) {
CGeoMap.startActivityGeoCode(activity, cache.getGeocode());
}
@Override
- public boolean isEnabled(cgCache cache) {
+ public boolean isEnabled(Geocache cache) {
return cache.getCoords() != null;
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java b/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java
index b326105..2d7702d 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.apps.cache.navi;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.Waypoint;
import cgeo.geocaching.apps.AbstractLocusApp;
@@ -26,7 +26,7 @@ class LocusApp extends AbstractLocusApp implements CacheNavigationApp, WaypointN
}
@Override
- public void navigate(Activity activity, cgCache cache) {
+ public void navigate(Activity activity, Geocache cache) {
showInLocus(Collections.singletonList(cache), true, false, activity);
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
index 8effc05..5545936 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.apps.cache.navi;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.apps.AbstractAppFactory;
@@ -96,7 +96,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
* Default way to handle selection of navigation tool.<br />
* A dialog is created for tool selection and the selected tool is started afterwards.
* <p />
- * Delegates to {@link #showNavigationMenu(Activity, cgCache, cgeo.geocaching.Waypoint, Geopoint, boolean, boolean)} with
+ * Delegates to {@link #showNavigationMenu(Activity, cgeo.geocaching.Geocache, cgeo.geocaching.Waypoint, Geopoint, boolean, boolean)} with
* <code>showInternalMap = true</code> and <code>showDefaultNavigation = false</code>
*
* @param activity
@@ -105,7 +105,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
* @param destination
*/
public static void showNavigationMenu(final Activity activity,
- final cgCache cache, final Waypoint waypoint, final Geopoint destination) {
+ final Geocache cache, final Waypoint waypoint, final Geopoint destination) {
showNavigationMenu(activity, cache, waypoint, destination, true, false);
}
@@ -125,10 +125,10 @@ public final class NavigationAppFactory extends AbstractAppFactory {
* @param showDefaultNavigation
* should be <code>false</code> by default
*
- * @see #showNavigationMenu(Activity, cgCache, cgeo.geocaching.Waypoint, Geopoint)
+ * @see #showNavigationMenu(Activity, cgeo.geocaching.Geocache, cgeo.geocaching.Waypoint, Geopoint)
*/
public static void showNavigationMenu(final Activity activity,
- final cgCache cache, final Waypoint waypoint, final Geopoint destination,
+ final Geocache cache, final Waypoint waypoint, final Geopoint destination,
final boolean showInternalMap, final boolean showDefaultNavigation) {
final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(R.string.cache_menu_navigate);
@@ -216,15 +216,15 @@ public final class NavigationAppFactory extends AbstractAppFactory {
/**
* Adds the installed navigation tools to the given menu.
- * Use {@link #onMenuItemSelected(MenuItem, Activity, cgCache)} on
+ * Use {@link #onMenuItemSelected(MenuItem, Activity, cgeo.geocaching.Geocache)} on
* selection event to start the selected navigation tool.
*
- * <b>Only use this way if {@link #showNavigationMenu(Activity, cgCache, cgeo.geocaching.Waypoint, Geopoint, boolean, boolean)} is
+ * <b>Only use this way if {@link #showNavigationMenu(Activity, cgeo.geocaching.Geocache, cgeo.geocaching.Waypoint, Geopoint, boolean, boolean)} is
* not suitable for the given usecase.</b>
*
* @param menu
*/
- public static void addMenuItems(final Menu menu, final cgCache cache) {
+ public static void addMenuItems(final Menu menu, final Geocache cache) {
for (NavigationAppsEnum navApp : getInstalledNavigationApps()) {
if (navApp.app instanceof CacheNavigationApp) {
CacheNavigationApp cacheApp = (CacheNavigationApp) navApp.app;
@@ -247,20 +247,20 @@ public final class NavigationAppFactory extends AbstractAppFactory {
}
/**
- * Handles menu selections for menu entries created with {@link #addMenuItems(Menu, cgCache)}.
+ * Handles menu selections for menu entries created with {@link #addMenuItems(Menu, cgeo.geocaching.Geocache)}.
*
* @param item
* @param activity
* @param cache
* @return
*/
- public static boolean onMenuItemSelected(final MenuItem item, Activity activity, cgCache cache) {
+ public static boolean onMenuItemSelected(final MenuItem item, Activity activity, Geocache cache) {
final App menuItem = getAppFromMenuItem(item);
navigateCache(activity, cache, menuItem);
return menuItem != null;
}
- private static void navigateCache(Activity activity, cgCache cache, App app) {
+ private static void navigateCache(Activity activity, Geocache cache, App app) {
if (app instanceof CacheNavigationApp) {
CacheNavigationApp cacheApp = (CacheNavigationApp) app;
cacheApp.navigate(activity, cache);
@@ -305,7 +305,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
* @param activity
* @param cache
*/
- public static void startDefaultNavigationApplication(int defaultNavigation, Activity activity, cgCache cache) {
+ public static void startDefaultNavigationApplication(int defaultNavigation, Activity activity, Geocache cache) {
if (cache == null || cache.getCoords() == null) {
ActivityMixin.showToast(activity, cgeoapplication.getInstance().getString(R.string.err_location_unknown));
return;
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java
index c94c4f4..2c6a8fc 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.apps.AbstractApp;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.GeopointFormatter.Format;
@@ -39,7 +39,7 @@ class RMapsApp extends AbstractApp implements CacheNavigationApp, WaypointNaviga
}
@Override
- public void navigate(Activity activity, cgCache cache) {
+ public void navigate(Activity activity, Geocache cache) {
navigate(activity, cache.getCoords(), cache.getGeocode(), cache.getName());
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java b/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java
index 4c3b87e..1dd57a3 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import android.app.Activity;
@@ -13,7 +13,7 @@ class StaticMapApp extends AbstractStaticMapsApp {
}
@Override
- public boolean isEnabled(cgCache cache) {
+ public boolean isEnabled(Geocache cache) {
return cache.hasStaticMap();
}
@@ -23,7 +23,7 @@ class StaticMapApp extends AbstractStaticMapsApp {
}
@Override
- public void navigate(Activity activity, cgCache cache) {
+ public void navigate(Activity activity, Geocache cache) {
invokeStaticMaps(activity, cache, null, false);
}
diff --git a/main/src/cgeo/geocaching/apps/cachelist/CacheListApp.java b/main/src/cgeo/geocaching/apps/cachelist/CacheListApp.java
index 519b394..ac5809e 100644
--- a/main/src/cgeo/geocaching/apps/cachelist/CacheListApp.java
+++ b/main/src/cgeo/geocaching/apps/cachelist/CacheListApp.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.apps.cachelist;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.apps.App;
import android.app.Activity;
@@ -10,7 +10,7 @@ import java.util.List;
interface CacheListApp extends App {
- boolean invoke(final List<cgCache> caches,
+ boolean invoke(final List<Geocache> caches,
final Activity activity, final SearchResult search);
}
diff --git a/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java b/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java
index b01c0ac..b747eee 100644
--- a/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java
+++ b/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.apps.cachelist;
import cgeo.geocaching.R;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.activity.IAbstractActivity;
import cgeo.geocaching.apps.AbstractAppFactory;
import cgeo.geocaching.utils.Log;
@@ -55,7 +55,7 @@ public final class CacheListAppFactory extends AbstractAppFactory {
}
}
- public static boolean onMenuItemSelected(final MenuItem item, final List<cgCache> caches, final IAbstractActivity activity,
+ public static boolean onMenuItemSelected(final MenuItem item, final List<Geocache> caches, final IAbstractActivity activity,
final SearchResult search) {
final CacheListApp app = (CacheListApp) getAppFromMenuItem(item, LazyHolder.apps);
if (app != null) {
diff --git a/main/src/cgeo/geocaching/apps/cachelist/InternalCacheListMap.java b/main/src/cgeo/geocaching/apps/cachelist/InternalCacheListMap.java
index d6e1fed..38fb499 100644
--- a/main/src/cgeo/geocaching/apps/cachelist/InternalCacheListMap.java
+++ b/main/src/cgeo/geocaching/apps/cachelist/InternalCacheListMap.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.apps.cachelist;
import cgeo.geocaching.R;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.apps.AbstractApp;
import cgeo.geocaching.maps.CGeoMap;
@@ -22,7 +22,7 @@ class InternalCacheListMap extends AbstractApp implements CacheListApp {
}
@Override
- public boolean invoke(List<cgCache> caches, Activity activity, final SearchResult search) {
+ public boolean invoke(List<Geocache> caches, Activity activity, final SearchResult search) {
CGeoMap.startActivitySearch(activity, search, null);
return true;
}
diff --git a/main/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java b/main/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java
index 65760c7..cd0289a 100644
--- a/main/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java
+++ b/main/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.apps.cachelist;
import cgeo.geocaching.R;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.apps.AbstractLocusApp;
import org.apache.commons.collections.CollectionUtils;
@@ -27,7 +27,7 @@ class LocusCacheListApp extends AbstractLocusApp implements CacheListApp {
* @see AbstractLocusApp#showInLocus
*/
@Override
- public boolean invoke(List<cgCache> cacheList, Activity activity, final SearchResult search) {
+ public boolean invoke(List<Geocache> cacheList, Activity activity, final SearchResult search) {
if (CollectionUtils.isEmpty(cacheList)) {
return false;
}
diff --git a/main/src/cgeo/geocaching/backup/CentralBackupAgent.java b/main/src/cgeo/geocaching/backup/CentralBackupAgent.java
index f6b9024..28a668c 100644
--- a/main/src/cgeo/geocaching/backup/CentralBackupAgent.java
+++ b/main/src/cgeo/geocaching/backup/CentralBackupAgent.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.backup;
-import cgeo.geocaching.Settings;
+import cgeo.geocaching.utils.ApplicationSettings;
import android.annotation.TargetApi;
import android.app.backup.BackupAgentHelper;
@@ -13,7 +13,7 @@ public class CentralBackupAgent extends BackupAgentHelper {
@Override
public void onCreate() {
- final SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, Settings.getPreferencesName());
+ final SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, ApplicationSettings.getPreferencesName());
addHelper(PREFS_BACKUP_KEY, helper);
}
diff --git a/main/src/cgeo/geocaching/cgData.java b/main/src/cgeo/geocaching/cgData.java
index 3ec1d14..cbbd852 100644
--- a/main/src/cgeo/geocaching/cgData.java
+++ b/main/src/cgeo/geocaching/cgData.java
@@ -59,12 +59,19 @@ public class cgData {
/** The list of fields needed for mapping. */
private static final String[] CACHE_COLUMNS = new String[] {
- "_id", "updated", "reason", "detailed", "detailedupdate", "visiteddate", "geocode", "cacheid", "guid", "type", "name", "own", "owner", "owner_real", "hidden", "hint", "size",
- "difficulty", "distance", "direction", "terrain", "latlon", "location", "latitude", "longitude", "elevation", "shortdesc",
- "favourite_cnt", "rating", "votes", "myvote", "disabled", "archived", "members", "found", "favourite", "inventorycoins", "inventorytags",
- "inventoryunknown", "onWatchlist", "personal_note", "reliable_latlon", "coordsChanged", "finalDefined"
- // reason is replaced by listId in cgCache
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
+ "updated", "reason", "detailed", "detailedupdate", "visiteddate", "geocode", "cacheid", "guid", "type", "name", "owner", "owner_real", "hidden", "hint", "size",
+ // 15 16 17 18 19 20 21 22 23
+ "difficulty", "direction", "distance", "terrain", "latlon", "location", "elevation", "personal_note", "shortdesc",
+ // 24 25 26 27 28 29 30 31 32
+ "favourite_cnt", "rating", "votes", "myvote", "disabled", "archived", "members", "found", "favourite",
+ // 33 34 35 36 37 38 39 40 41 42
+ "inventoryunknown", "onWatchlist", "reliable_latlon", "coordsChanged", "latitude", "longitude", "finalDefined", "_id", "inventorycoins", "inventorytags"
+ // reason is replaced by listId in Geocache
};
+
+ //TODO: remove "latlon" field from cache table
+
/** The list of fields needed for mapping. */
private static final String[] WAYPOINT_COLUMNS = new String[] { "_id", "geocode", "updated", "type", "prefix", "lookup", "name", "latlon", "latitude", "longitude", "note", "own" };
@@ -104,7 +111,6 @@ public class cgData {
+ "guid text, "
+ "type text, "
+ "name text, "
- + "own integer not null default 0, "
+ "owner text, "
+ "owner_real text, "
+ "hidden long, "
@@ -686,7 +692,7 @@ public class cgData {
// to NPE traces.
final int staleHistorySearches = db.delete(dbTableSearchDestionationHistory, "date is null", null);
if (staleHistorySearches > 0) {
- Log.w(String.format("cgData.dbHelper.onOpen: removed %d bad search history entries", staleHistorySearches));
+ Log.w(String.format(Locale.getDefault(), "cgData.dbHelper.onOpen: removed %d bad search history entries", staleHistorySearches));
}
}
@@ -940,7 +946,7 @@ public class cgData {
*
* @return true = cache saved successfully to the CacheCache/DB
*/
- public static boolean saveCache(cgCache cache, EnumSet<LoadFlags.SaveFlag> saveFlags) {
+ public static boolean saveCache(Geocache cache, EnumSet<LoadFlags.SaveFlag> saveFlags) {
if (cache == null) {
throw new IllegalArgumentException("cache must not be null");
}
@@ -984,7 +990,6 @@ public class cgData {
values.put("guid", cache.getGuid());
values.put("type", cache.getType().id);
values.put("name", cache.getName());
- values.put("own", cache.isOwn() ? 1 : 0);
values.put("owner", cache.getOwnerDisplayName());
values.put("owner_real", cache.getOwnerUserId());
if (cache.getHiddenDate() == null) {
@@ -996,14 +1001,13 @@ public class cgData {
values.put("size", cache.getSize() == null ? "" : cache.getSize().id);
values.put("difficulty", cache.getDifficulty());
values.put("terrain", cache.getTerrain());
- values.put("latlon", cache.getLatlon());
values.put("location", cache.getLocation());
values.put("distance", cache.getDistance());
values.put("direction", cache.getDirection());
putCoords(values, cache.getCoords());
values.put("reliable_latlon", cache.isReliableLatLon() ? 1 : 0);
values.put("elevation", cache.getElevation());
- values.put("shortdesc", cache.getShortdesc());
+ values.put("shortdesc", cache.getShortDescription());
values.put("personal_note", cache.getPersonalNote());
values.put("description", cache.getDescription());
values.put("favourite_cnt", cache.getFavoritePoints());
@@ -1051,7 +1055,7 @@ public class cgData {
return result;
}
- private static void saveAttributesWithoutTransaction(final cgCache cache) {
+ private static void saveAttributesWithoutTransaction(final Geocache cache) {
String geocode = cache.getGeocode();
database.delete(dbTableAttributes, "geocode = ?", new String[]{geocode});
@@ -1091,7 +1095,7 @@ public class cgData {
}
}
- public static boolean saveWaypoints(final cgCache cache) {
+ public static boolean saveWaypoints(final Geocache cache) {
init();
database.beginTransaction();
@@ -1108,9 +1112,8 @@ public class cgData {
return result;
}
- private static void saveOriginalWaypointsWithoutTransaction(final cgCache cache) {
+ private static void saveOriginalWaypointsWithoutTransaction(final Geocache cache) {
String geocode = cache.getGeocode();
- database.delete(dbTableWaypoints, "geocode = ? and type <> ? and own = 0", new String[]{geocode, "own"});
List<Waypoint> waypoints = cache.getWaypoints();
if (CollectionUtils.isNotEmpty(waypoints)) {
@@ -1133,8 +1136,12 @@ public class cgData {
values.put("note", oneWaypoint.getNote());
values.put("own", oneWaypoint.isUserDefined() ? 1 : 0);
- final long rowId = database.insert(dbTableWaypoints, null, values);
- oneWaypoint.setId((int) rowId);
+ if (oneWaypoint.getId() < 0) {
+ final long rowId = database.insert(dbTableWaypoints, null, values);
+ oneWaypoint.setId((int) rowId);
+ } else {
+ database.update(dbTableWaypoints, values, "_id = ?", new String[] { Integer.toString(oneWaypoint.getId(), 10) });
+ }
}
}
}
@@ -1219,7 +1226,7 @@ public class cgData {
return database.delete(dbTableWaypoints, "_id = " + id, null) > 0;
}
- private static void saveSpoilersWithoutTransaction(final cgCache cache) {
+ private static void saveSpoilersWithoutTransaction(final Geocache cache) {
String geocode = cache.getGeocode();
database.delete(dbTableSpoilers, "geocode = ?", new String[]{geocode});
@@ -1276,7 +1283,7 @@ public class cgData {
}
}
- private static void saveLogCountsWithoutTransaction(final cgCache cache) {
+ private static void saveLogCountsWithoutTransaction(final Geocache cache) {
String geocode = cache.getGeocode();
database.delete(dbTableLogCount, "geocode = ?", new String[]{geocode});
@@ -1352,7 +1359,7 @@ public class cgData {
return null;
}
- final Set<cgCache> caches = loadCaches(geocodes, LoadFlags.LOAD_CACHE_OR_DB);
+ final Set<Geocache> caches = loadCaches(geocodes, LoadFlags.LOAD_CACHE_OR_DB);
return Viewport.containing(caches);
}
@@ -1363,12 +1370,12 @@ public class cgData {
* The Geocode GCXXXX
* @return the loaded cache (if found). Can be null
*/
- public static cgCache loadCache(final String geocode, final EnumSet<LoadFlag> loadFlags) {
+ public static Geocache loadCache(final String geocode, final EnumSet<LoadFlag> loadFlags) {
if (StringUtils.isBlank(geocode)) {
throw new IllegalArgumentException("geocode must not be empty");
}
- final Set<cgCache> caches = loadCaches(Collections.singleton(geocode), loadFlags);
+ final Set<Geocache> caches = loadCaches(Collections.singleton(geocode), loadFlags);
return caches.isEmpty() ? null : caches.iterator().next();
}
@@ -1378,17 +1385,17 @@ public class cgData {
* @param geocodes
* @return Set of loaded caches. Never null.
*/
- public static Set<cgCache> loadCaches(final Set<String> geocodes, final EnumSet<LoadFlag> loadFlags) {
+ public static Set<Geocache> loadCaches(final Set<String> geocodes, final EnumSet<LoadFlag> loadFlags) {
if (CollectionUtils.isEmpty(geocodes)) {
- return new HashSet<cgCache>();
+ return new HashSet<Geocache>();
}
- Set<cgCache> result = new HashSet<cgCache>();
+ Set<Geocache> result = new HashSet<Geocache>();
Set<String> remaining = new HashSet<String>(geocodes);
if (loadFlags.contains(LoadFlag.LOAD_CACHE_BEFORE)) {
for (String geocode : new HashSet<String>(remaining)) {
- cgCache cache = cacheCache.getCacheFromCache(geocode);
+ Geocache cache = cacheCache.getCacheFromCache(geocode);
if (cache != null) {
result.add(cache);
remaining.remove(cache.getGeocode());
@@ -1404,16 +1411,16 @@ public class cgData {
loadFlags.contains(LoadFlag.LOAD_INVENTORY) ||
loadFlags.contains(LoadFlag.LOAD_OFFLINE_LOG)) {
- final Set<cgCache> cachesFromDB = loadCachesFromGeocodes(remaining, loadFlags);
+ final Set<Geocache> cachesFromDB = loadCachesFromGeocodes(remaining, loadFlags);
result.addAll(cachesFromDB);
- for (final cgCache cache : cachesFromDB) {
+ for (final Geocache cache : cachesFromDB) {
remaining.remove(cache.getGeocode());
}
}
if (loadFlags.contains(LoadFlag.LOAD_CACHE_AFTER)) {
for (String geocode : new HashSet<String>(remaining)) {
- cgCache cache = cacheCache.getCacheFromCache(geocode);
+ Geocache cache = cacheCache.getCacheFromCache(geocode);
if (cache != null) {
result.add(cache);
remaining.remove(cache.getGeocode());
@@ -1434,14 +1441,12 @@ public class cgData {
* @param loadFlags
* @return Set of loaded caches. Never null.
*/
- private static Set<cgCache> loadCachesFromGeocodes(final Set<String> geocodes, final EnumSet<LoadFlag> loadFlags) {
+ private static Set<Geocache> loadCachesFromGeocodes(final Set<String> geocodes, final EnumSet<LoadFlag> loadFlags) {
if (CollectionUtils.isEmpty(geocodes)) {
return Collections.emptySet();
}
-
- Log.d("cgData.loadCachesFromGeocodes(" + geocodes.toString() + ") from DB");
-
+ // do not log the entire collection of geo codes to the debug log. This can be more than 100 KB of text for large lists!
init();
final StringBuilder query = new StringBuilder("SELECT ");
@@ -1462,11 +1467,11 @@ public class cgData {
Cursor cursor = database.rawQuery(query.toString(), null);
try {
- final Set<cgCache> caches = new HashSet<cgCache>();
+ final Set<Geocache> caches = new HashSet<Geocache>();
int logIndex = -1;
while (cursor.moveToNext()) {
- cgCache cache = cgData.createCacheFromDatabaseContent(cursor);
+ Geocache cache = cgData.createCacheFromDatabaseContent(cursor);
if (loadFlags.contains(LoadFlag.LOAD_ATTRIBUTES)) {
cache.setAttributes(loadAttributes(cache.getGeocode()));
@@ -1541,52 +1546,14 @@ public class cgData {
* @param cursor
* @return Cache from DB
*/
- private static cgCache createCacheFromDatabaseContent(Cursor cursor) {
- cgCache cache = new cgCache();
+ private static Geocache createCacheFromDatabaseContent(Cursor cursor) {
+ Geocache cache = new Geocache();
if (cacheColumnIndex == null) {
- int[] local_cci = new int[41]; // use a local variable to avoid having the not yet fully initialized array be visible to other threads
- local_cci[0] = cursor.getColumnIndex("updated");
- local_cci[1] = cursor.getColumnIndex("reason");
- local_cci[2] = cursor.getColumnIndex("detailed");
- local_cci[3] = cursor.getColumnIndex("detailedupdate");
- local_cci[4] = cursor.getColumnIndex("visiteddate");
- local_cci[5] = cursor.getColumnIndex("geocode");
- local_cci[6] = cursor.getColumnIndex("cacheid");
- local_cci[7] = cursor.getColumnIndex("guid");
- local_cci[8] = cursor.getColumnIndex("type");
- local_cci[9] = cursor.getColumnIndex("name");
- local_cci[10] = cursor.getColumnIndex("own");
- local_cci[11] = cursor.getColumnIndex("owner");
- local_cci[12] = cursor.getColumnIndex("owner_real");
- local_cci[13] = cursor.getColumnIndex("hidden");
- local_cci[14] = cursor.getColumnIndex("hint");
- local_cci[15] = cursor.getColumnIndex("size");
- local_cci[16] = cursor.getColumnIndex("difficulty");
- local_cci[17] = cursor.getColumnIndex("direction");
- local_cci[18] = cursor.getColumnIndex("distance");
- local_cci[19] = cursor.getColumnIndex("terrain");
- local_cci[20] = cursor.getColumnIndex("latlon");
- local_cci[21] = cursor.getColumnIndex("location");
- local_cci[22] = cursor.getColumnIndex("elevation");
- local_cci[23] = cursor.getColumnIndex("personal_note");
- local_cci[24] = cursor.getColumnIndex("shortdesc");
- local_cci[25] = cursor.getColumnIndex("favourite_cnt");
- local_cci[26] = cursor.getColumnIndex("rating");
- local_cci[27] = cursor.getColumnIndex("votes");
- local_cci[28] = cursor.getColumnIndex("myvote");
- local_cci[29] = cursor.getColumnIndex("disabled");
- local_cci[30] = cursor.getColumnIndex("archived");
- local_cci[31] = cursor.getColumnIndex("members");
- local_cci[32] = cursor.getColumnIndex("found");
- local_cci[33] = cursor.getColumnIndex("favourite");
- local_cci[34] = cursor.getColumnIndex("inventoryunknown");
- local_cci[35] = cursor.getColumnIndex("onWatchlist");
- local_cci[36] = cursor.getColumnIndex("reliable_latlon");
- local_cci[37] = cursor.getColumnIndex("coordsChanged");
- local_cci[38] = cursor.getColumnIndex("latitude");
- local_cci[39] = cursor.getColumnIndex("longitude");
- local_cci[40] = cursor.getColumnIndex("finalDefined");
+ final int[] local_cci = new int[CACHE_COLUMNS.length]; // use a local variable to avoid having the not yet fully initialized array be visible to other threads
+ for (int i = 0; i < CACHE_COLUMNS.length; i++) {
+ local_cci[i] = cursor.getColumnIndex(CACHE_COLUMNS[i]);
+ }
cacheColumnIndex = local_cci;
}
@@ -1600,55 +1567,53 @@ public class cgData {
cache.setGuid(cursor.getString(cacheColumnIndex[7]));
cache.setType(CacheType.getById(cursor.getString(cacheColumnIndex[8])));
cache.setName(cursor.getString(cacheColumnIndex[9]));
- cache.setOwn(cursor.getInt(cacheColumnIndex[10]) == 1);
- cache.setOwnerDisplayName(cursor.getString(cacheColumnIndex[11]));
- cache.setOwnerUserId(cursor.getString(cacheColumnIndex[12]));
- long dateValue = cursor.getLong(cacheColumnIndex[13]);
+ cache.setOwnerDisplayName(cursor.getString(cacheColumnIndex[10]));
+ cache.setOwnerUserId(cursor.getString(cacheColumnIndex[11]));
+ long dateValue = cursor.getLong(cacheColumnIndex[12]);
if (dateValue != 0) {
cache.setHidden(new Date(dateValue));
}
- cache.setHint(cursor.getString(cacheColumnIndex[14]));
- cache.setSize(CacheSize.getById(cursor.getString(cacheColumnIndex[15])));
- cache.setDifficulty(cursor.getFloat(cacheColumnIndex[16]));
- int index = cacheColumnIndex[17];
+ // do not set cache.hint
+ cache.setSize(CacheSize.getById(cursor.getString(cacheColumnIndex[14])));
+ cache.setDifficulty(cursor.getFloat(cacheColumnIndex[15]));
+ int index = cacheColumnIndex[16];
if (cursor.isNull(index)) {
cache.setDirection(null);
} else {
cache.setDirection(cursor.getFloat(index));
}
- index = cacheColumnIndex[18];
+ index = cacheColumnIndex[17];
if (cursor.isNull(index)) {
cache.setDistance(null);
} else {
cache.setDistance(cursor.getFloat(index));
}
- cache.setTerrain(cursor.getFloat(cacheColumnIndex[19]));
- cache.setLatlon(cursor.getString(cacheColumnIndex[20]));
- cache.setLocation(cursor.getString(cacheColumnIndex[21]));
- cache.setCoords(getCoords(cursor, cacheColumnIndex[38], cacheColumnIndex[39]));
- index = cacheColumnIndex[22];
+ cache.setTerrain(cursor.getFloat(cacheColumnIndex[18]));
+ // do not set cache.location
+ cache.setCoords(getCoords(cursor, cacheColumnIndex[37], cacheColumnIndex[38]));
+ index = cacheColumnIndex[21];
if (cursor.isNull(index)) {
cache.setElevation(null);
} else {
cache.setElevation(cursor.getDouble(index));
}
- cache.setPersonalNote(cursor.getString(cacheColumnIndex[23]));
- cache.setShortdesc(cursor.getString(cacheColumnIndex[24]));
- // do not set cache.description !
- cache.setFavoritePoints(cursor.getInt(cacheColumnIndex[25]));
- cache.setRating(cursor.getFloat(cacheColumnIndex[26]));
- cache.setVotes(cursor.getInt(cacheColumnIndex[27]));
- cache.setMyVote(cursor.getFloat(cacheColumnIndex[28]));
- cache.setDisabled(cursor.getInt(cacheColumnIndex[29]) == 1);
- cache.setArchived(cursor.getInt(cacheColumnIndex[30]) == 1);
- cache.setPremiumMembersOnly(cursor.getInt(cacheColumnIndex[31]) == 1);
- cache.setFound(cursor.getInt(cacheColumnIndex[32]) == 1);
- cache.setFavorite(cursor.getInt(cacheColumnIndex[33]) == 1);
- cache.setInventoryItems(cursor.getInt(cacheColumnIndex[34]));
- cache.setOnWatchlist(cursor.getInt(cacheColumnIndex[35]) == 1);
- cache.setReliableLatLon(cursor.getInt(cacheColumnIndex[36]) > 0);
- cache.setUserModifiedCoords(cursor.getInt(cacheColumnIndex[37]) > 0);
- cache.setFinalDefined(cursor.getInt(cacheColumnIndex[40]) > 0);
+ cache.setPersonalNote(cursor.getString(cacheColumnIndex[22]));
+ // do not set cache.shortdesc
+ // do not set cache.description
+ cache.setFavoritePoints(cursor.getInt(cacheColumnIndex[24]));
+ cache.setRating(cursor.getFloat(cacheColumnIndex[25]));
+ cache.setVotes(cursor.getInt(cacheColumnIndex[26]));
+ cache.setMyVote(cursor.getFloat(cacheColumnIndex[27]));
+ cache.setDisabled(cursor.getInt(cacheColumnIndex[28]) == 1);
+ cache.setArchived(cursor.getInt(cacheColumnIndex[29]) == 1);
+ cache.setPremiumMembersOnly(cursor.getInt(cacheColumnIndex[30]) == 1);
+ cache.setFound(cursor.getInt(cacheColumnIndex[31]) == 1);
+ cache.setFavorite(cursor.getInt(cacheColumnIndex[32]) == 1);
+ cache.setInventoryItems(cursor.getInt(cacheColumnIndex[33]));
+ cache.setOnWatchlist(cursor.getInt(cacheColumnIndex[34]) == 1);
+ cache.setReliableLatLon(cursor.getInt(cacheColumnIndex[35]) > 0);
+ cache.setUserModifiedCoords(cursor.getInt(cacheColumnIndex[36]) > 0);
+ cache.setFinalDefined(cursor.getInt(cacheColumnIndex[39]) > 0);
Log.d("Loading " + cache.toString() + " (" + cache.getListId() + ") from DB");
@@ -2615,7 +2580,11 @@ public class cgData {
return status;
}
- public static void moveToList(final List<cgCache> caches, final int listId) {
+ public static void moveToList(final Geocache cache, final int listId) {
+ moveToList(Collections.singletonList(cache), listId);
+ }
+
+ public static void moveToList(final List<Geocache> caches, final int listId) {
if (listId == StoredList.ALL_LIST_ID) {
return;
}
@@ -2628,7 +2597,7 @@ public class cgData {
database.beginTransaction();
try {
- for (cgCache cache : caches) {
+ for (Geocache cache : caches) {
move.bindLong(1, listId);
move.bindString(2, cache.getGeocode());
move.execute();
@@ -2665,18 +2634,32 @@ public class cgData {
return result;
}
- public static String getCacheDescription(String geocode) {
+ public static String loadCacheTexts(final Geocache cache) {
+ final String geocode = cache.getGeocode();
if (StringUtils.isBlank(geocode)) {
return null;
}
init();
try {
- final SQLiteStatement description = PreparedStatements.getDescriptionOfGeocode();
- synchronized (description) {
- description.bindString(1, geocode);
- return description.simpleQueryForString();
+ final Cursor cursor = database.query(
+ dbTableCaches,
+ new String[] { "description", "shortdesc", "hint", "location" },
+ "geocode = ?",
+ new String[] { geocode },
+ null,
+ null,
+ null,
+ "1");
+
+ if (cursor.moveToFirst()) {
+ cache.setDescription(StringUtils.defaultString(cursor.getString(0)));
+ cache.setShortDescription(StringUtils.defaultString(cursor.getString(1)));
+ cache.setHint(StringUtils.defaultString(cursor.getString(2)));
+ cache.setLocation(StringUtils.defaultString(cursor.getString(3)));
}
+
+ cursor.close();
} catch (SQLiteDoneException e) {
// Do nothing, it only means we have no information on the cache
} catch (Exception e) {
@@ -2702,14 +2685,14 @@ public class cgData {
newlyCreatedDatabase = false;
}
- private static String whereGeocodeIn(Set<String> geocodes) {
+ private static StringBuilder whereGeocodeIn(Set<String> geocodes) {
final StringBuilder where = new StringBuilder();
if (geocodes != null && !geocodes.isEmpty()) {
StringBuilder all = new StringBuilder();
for (String geocode : geocodes) {
if (all.length() > 0) {
- all.append(", ");
+ all.append(',');
}
all.append(DatabaseUtils.sqlEscapeString(geocode));
}
@@ -2717,7 +2700,7 @@ public class cgData {
where.append("geocode in (").append(all).append(')');
}
- return where.toString();
+ return where;
}
/**
@@ -2732,7 +2715,7 @@ public class cgData {
public static Set<Waypoint> loadWaypoints(final Viewport viewport, boolean excludeMine, boolean excludeDisabled, CacheType type) {
final StringBuilder where = new StringBuilder(buildCoordinateWhere(dbTableWaypoints, viewport));
if (excludeMine) {
- where.append(" and ").append(dbTableCaches).append(".own == 0 and ").append(dbTableCaches).append(".found == 0");
+ where.append(" and ").append(dbTableCaches).append(".found == 0");
}
if (excludeDisabled) {
where.append(" and ").append(dbTableCaches).append(".disabled == 0");
@@ -2787,7 +2770,7 @@ public class cgData {
return result;
}
- public static boolean saveChangedCache(cgCache cache) {
+ public static boolean saveChangedCache(Geocache cache) {
return cgData.saveCache(cache, cache.getStorageLocation().contains(StorageLocation.DATABASE) ? LoadFlags.SAVE_ALL : EnumSet.of(SaveFlag.SAVE_CACHE));
}
@@ -2838,7 +2821,7 @@ public class cgData {
private static synchronized SQLiteStatement getStatement(final String key, final String query) {
SQLiteStatement statement = statements.get(key);
if (statement == null) {
- Log.d("Compiling " + key);
+ init();
statement = database.compileStatement(query);
statements.put(key, statement);
}
@@ -2869,10 +2852,6 @@ public class cgData {
return getStatement("InsertAttribute", "INSERT INTO " + dbTableAttributes + " (geocode, updated, attribute) VALUES (?, ?, ?)");
}
- private static SQLiteStatement getDescriptionOfGeocode() {
- return getStatement("descriptionFromGeocode", "SELECT description FROM " + dbTableCaches + " WHERE geocode = ?");
- }
-
private static SQLiteStatement getListIdOfGeocode() {
return getStatement("listFromGeocode", "SELECT reason FROM " + dbTableCaches + " WHERE geocode = ?");
}
@@ -2895,7 +2874,7 @@ public class cgData {
setVisitDate(Collections.singletonList(geocode), System.currentTimeMillis());
}
- public static void markDropped(List<cgCache> caches) {
+ public static void markDropped(List<Geocache> caches) {
moveToList(caches, StoredList.TEMPORARY_LIST_ID);
}
@@ -2907,9 +2886,9 @@ public class cgData {
return cgData.getBounds(Collections.singleton(geocode));
}
- public static void clearVisitDate(List<cgCache> caches) {
+ public static void clearVisitDate(List<Geocache> caches) {
ArrayList<String> geocodes = new ArrayList<String>(caches.size());
- for (cgCache cache : caches) {
+ for (Geocache cache : caches) {
geocodes.add(cache.getGeocode());
}
setVisitDate(geocodes, 0);
diff --git a/main/src/cgeo/geocaching/cgSelectMapfile.java b/main/src/cgeo/geocaching/cgSelectMapfile.java
index 3757c4f..ded81a7 100644
--- a/main/src/cgeo/geocaching/cgSelectMapfile.java
+++ b/main/src/cgeo/geocaching/cgSelectMapfile.java
@@ -31,7 +31,7 @@ public class cgSelectMapfile extends FileList<FileSelectionListAdapter> implemen
public void close() {
Intent intent = new Intent();
- intent.putExtra("mapfile", mapFile);
+ intent.putExtra(Intents.EXTRA_MAP_FILE, mapFile);
setResult(RESULT_OK, intent);
diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java
index fa83a60..7fbb112 100644
--- a/main/src/cgeo/geocaching/cgeocaches.java
+++ b/main/src/cgeo/geocaching/cgeocaches.java
@@ -72,12 +72,6 @@ import java.util.Set;
public class cgeocaches extends AbstractListActivity implements FilteredActivity {
- private static final String EXTRAS_USERNAME = "username";
- private static final String EXTRAS_ADDRESS = "address";
- private static final String EXTRAS_SEARCH = "search";
- private static final String EXTRAS_KEYWORD = "keyword";
- private static final String EXTRAS_LIST_TYPE = "type";
- private static final String EXTRAS_COORDS = "coords";
private static final int MAX_LIST_ITEMS = 1000;
private static final int MENU_REFRESH_STORED = 2;
private static final int MENU_CACHE_DETAILS = 4;
@@ -114,7 +108,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
private Geopoint coords = null;
private SearchResult search = null;
/** The list of shown caches shared with Adapter. Don't manipulate outside of main thread only with Handler */
- private final List<cgCache> cacheList = new ArrayList<cgCache>();
+ private final List<Geocache> cacheList = new ArrayList<Geocache>();
private CacheListAdapter adapter = null;
private LayoutInflater inflater = null;
private View listFooter = null;
@@ -287,11 +281,15 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
private void replaceCacheListFromSearch() {
if (search != null) {
- final Set<cgCache> cachesFromSearchResult = search.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB);
runOnUiThread(new Runnable() {
@Override
public void run() {
cacheList.clear();
+
+ // The database search was moved into the UI call intentionally. If this is done before the runOnUIThread,
+ // then we have 2 sets of caches in memory. This can lead to OOM for huge cache lists.
+ final Set<Geocache> cachesFromSearchResult = search.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB);
+
cacheList.addAll(cachesFromSearchResult);
adapter.reFilter();
updateTitle();
@@ -345,7 +343,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
startGeoAndDir();
} else {
if (search != null) {
- final Set<cgCache> cacheListTmp = search.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB);
+ final Set<Geocache> cacheListTmp = search.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB);
if (CollectionUtils.isNotEmpty(cacheListTmp)) {
cacheList.clear();
cacheList.addAll(cacheListTmp);
@@ -455,9 +453,9 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
// get parameters
Bundle extras = getIntent().getExtras();
if (extras != null) {
- Object typeObject = extras.get(EXTRAS_LIST_TYPE);
+ Object typeObject = extras.get(Intents.EXTRA_LIST_TYPE);
type = (typeObject instanceof CacheListType) ? (CacheListType) typeObject : CacheListType.OFFLINE;
- coords = (Geopoint) extras.getParcelable(EXTRAS_COORDS);
+ coords = (Geopoint) extras.getParcelable(Intents.EXTRAS_COORDS);
}
else {
extras = new Bundle();
@@ -480,7 +478,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
Thread threadPure;
AbstractSearchThread thread;
- final String username = extras.getString(EXTRAS_USERNAME);
+ final String username = extras.getString(Intents.EXTRA_USERNAME);
switch (type) {
case OFFLINE:
listId = Settings.getLastList();
@@ -532,7 +530,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
thread.start();
break;
case KEYWORD:
- final String keyword = extras.getString(EXTRAS_KEYWORD);
+ final String keyword = extras.getString(Intents.EXTRA_KEYWORD);
title = keyword;
setTitle(title);
showProgress(true);
@@ -543,7 +541,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
thread.start();
break;
case ADDRESS:
- final String address = extras.getString(EXTRAS_ADDRESS);
+ final String address = extras.getString(Intents.EXTRA_ADDRESS);
if (StringUtils.isNotBlank(address)) {
title = address;
} else {
@@ -586,7 +584,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
title = res.getString(R.string.map_map);
setTitle(title);
showProgress(true);
- search = (SearchResult) extras.get(EXTRAS_SEARCH);
+ search = (SearchResult) extras.get(Intents.EXTRA_SEARCH);
replaceCacheListFromSearch();
loadCachesHandler.sendMessage(Message.obtain());
break;
@@ -804,7 +802,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
}
private boolean containsEvents() {
- for (cgCache cache : adapter.getCheckedOrAllCaches()) {
+ for (Geocache cache : adapter.getCheckedOrAllCaches()) {
if (cache.isEventCache()) {
return true;
}
@@ -834,7 +832,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
invalidateOptionsMenuCompatible();
return true;
case MENU_REFRESH_STORED:
- refreshStored();
+ refreshStored(adapter.getCheckedOrAllCaches());
invalidateOptionsMenuCompatible();
return true;
case MENU_DROP_CACHES:
@@ -904,8 +902,8 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
public void deletePastEvents() {
progress.show(this, null, res.getString(R.string.caches_drop_progress), true, dropDetailsHandler.obtainMessage(MSG_CANCEL));
- final List<cgCache> deletion = new ArrayList<cgCache>();
- for (cgCache cache : adapter.getCheckedOrAllCaches()) {
+ final List<Geocache> deletion = new ArrayList<Geocache>();
+ for (Geocache cache : adapter.getCheckedOrAllCaches()) {
if (cache.isEventCache()) {
final Date eventDate = cache.getHiddenDate();
if (DateUtils.daysSince(eventDate.getTime()) > 0) {
@@ -953,7 +951,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
if (adapterInfo == null || adapterInfo.position >= adapter.getCount()) {
return;
}
- final cgCache cache = adapter.getItem(adapterInfo.position);
+ final Geocache cache = adapter.getItem(adapterInfo.position);
menu.setHeaderTitle(StringUtils.defaultIfBlank(cache.getName(), cache.getGeocode()));
@@ -1006,7 +1004,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
Log.w("cgeocaches.onContextItemSelected", e);
}
- final cgCache cache = adapterInfo != null ? getCacheFromAdapter(adapterInfo) : null;
+ final Geocache cache = adapterInfo != null ? getCacheFromAdapter(adapterInfo) : null;
// just in case the list got resorted while we are executing this code
if (cache == null) {
@@ -1023,8 +1021,8 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
break;
case MENU_CACHE_DETAILS:
final Intent cachesIntent = new Intent(this, CacheDetailActivity.class);
- cachesIntent.putExtra("geocode", cache.getGeocode());
- cachesIntent.putExtra("name", cache.getName());
+ cachesIntent.putExtra(Intents.EXTRA_GEOCODE, cache.getGeocode());
+ cachesIntent.putExtra(Intents.EXTRA_NAME, cache.getName());
startActivity(cachesIntent);
break;
case MENU_DROP_CACHE:
@@ -1048,8 +1046,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
}, true, listId);
break;
case MENU_STORE_CACHE:
- //FIXME: this must use the same handler like in the CacheDetailActivity. Will be done by moving the handler into the store method.
- cache.store(null);
+ refreshStored(Collections.singletonList(cache));
break;
case MENU_EXPORT:
ExportFactory.showExportMenu(Collections.singletonList(cache), this);
@@ -1072,8 +1069,8 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
* an adapterInfo
* @return the pointed cache
*/
- private cgCache getCacheFromAdapter(final AdapterContextMenuInfo adapterInfo) {
- final cgCache cache = adapter.getItem(adapterInfo.position);
+ private Geocache getCacheFromAdapter(final AdapterContextMenuInfo adapterInfo) {
+ final Geocache cache = adapter.getItem(adapterInfo.position);
if (cache.getGeocode().equalsIgnoreCase(contextMenuGeocode)) {
return cache;
}
@@ -1181,8 +1178,27 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
refreshCurrentList();
}
- public void refreshStored() {
- detailTotal = adapter.getCheckedOrAllCount();
+ public void refreshStored(final List<Geocache> caches) {
+ detailTotal = caches.size();
+ if (detailTotal == 0) {
+ return;
+ }
+
+ if (Settings.getChooseList() && type != CacheListType.OFFLINE) {
+ // let user select list to store cache in
+ new StoredList.UserInterface(this).promptForListSelection(R.string.list_title,
+ new RunnableWithArgument<Integer>() {
+ @Override
+ public void run(final Integer selectedListId) {
+ refreshStored(caches, selectedListId);
+ }
+ }, true, StoredList.TEMPORARY_LIST_ID);
+ } else {
+ refreshStored(caches, this.listId);
+ }
+ }
+
+ private void refreshStored(final List<Geocache> caches, final int storeListId) {
detailProgress = 0;
showProgress(false);
@@ -1200,7 +1216,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
detailProgressTime = System.currentTimeMillis();
- threadDetails = new LoadDetailsThread(loadDetailsHandler, listId);
+ threadDetails = new LoadDetailsThread(loadDetailsHandler, caches, storeListId);
threadDetails.start();
}
@@ -1419,11 +1435,11 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
final private int listIdLD;
private volatile boolean needToStop = false;
private long last = 0L;
- final private List<cgCache> selected;
+ final private List<Geocache> caches;
- public LoadDetailsThread(Handler handlerIn, int listId) {
+ public LoadDetailsThread(Handler handlerIn, List<Geocache> caches, int listId) {
handler = handlerIn;
- selected = adapter.getCheckedOrAllCaches();
+ this.caches = caches;
// in case of online lists, set the list id to the standard list
this.listIdLD = Math.max(listId, StoredList.STANDARD_LIST_ID);
@@ -1437,8 +1453,8 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
public void run() {
removeGeoAndDir();
- final List<cgCache> cachesWithStaticMaps = new ArrayList<cgCache>(selected.size());
- for (cgCache cache : selected) {
+ final List<Geocache> cachesWithStaticMaps = new ArrayList<Geocache>(this.caches.size());
+ for (Geocache cache : this.caches) {
if (Settings.isStoreOfflineMaps() && cache.hasStaticMap()) {
cachesWithStaticMaps.add(cache);
continue;
@@ -1450,7 +1466,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
}
}
- for (cgCache cache : cachesWithStaticMaps) {
+ for (Geocache cache : cachesWithStaticMaps) {
if (!refreshCache(cache)) {
break;
}
@@ -1468,7 +1484,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
* @return
* <code>false</code> if the storing was interrupted, <code>true</code> otherwise
*/
- private boolean refreshCache(cgCache cache) {
+ private boolean refreshCache(Geocache cache) {
try {
if (needToStop) {
throw new InterruptedException("Stopped storing process.");
@@ -1550,7 +1566,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
handler.sendMessage(handler.obtainMessage(1, response));
yield();
- cgCache.storeCache(null, response, listIdLFW, false, null);
+ Geocache.storeCache(null, response, listIdLFW, false, null);
handler.sendMessage(handler.obtainMessage(2, response));
yield();
@@ -1596,9 +1612,9 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
private class DropDetailsThread extends Thread {
final private Handler handler;
- final private List<cgCache> selected;
+ final private List<Geocache> selected;
- public DropDetailsThread(Handler handlerIn, List<cgCache> selectedIn) {
+ public DropDetailsThread(Handler handlerIn, List<Geocache> selectedIn) {
handler = handlerIn;
selected = selectedIn;
}
@@ -1616,7 +1632,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
private class RemoveFromHistoryThread extends Thread {
final private Handler handler;
- final private List<cgCache> selected;
+ final private List<Geocache> selected;
public RemoveFromHistoryThread(Handler handlerIn) {
handler = handlerIn;
@@ -1717,7 +1733,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
@Override
public void run() {
- final List<cgCache> caches = adapter.getCheckedCaches();
+ final List<Geocache> caches = adapter.getCheckedCaches();
cgData.moveToList(caches, listId);
handler.sendEmptyMessage(listId);
}
@@ -1789,7 +1805,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
// apply filter settings (if there's a filter)
Set<String> geocodes = new HashSet<String>();
- for (cgCache cache : adapter.getFilteredList()) {
+ for (Geocache cache : adapter.getFilteredList()) {
geocodes.add(cache.getGeocode());
}
@@ -1823,7 +1839,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
public static void startActivityOffline(final Context context) {
final Intent cachesIntent = new Intent(context, cgeocaches.class);
- cachesIntent.putExtra(EXTRAS_LIST_TYPE, CacheListType.OFFLINE);
+ cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.OFFLINE);
context.startActivity(cachesIntent);
}
@@ -1832,8 +1848,8 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
return;
}
final Intent cachesIntent = new Intent(context, cgeocaches.class);
- cachesIntent.putExtra(EXTRAS_LIST_TYPE, CacheListType.OWNER);
- cachesIntent.putExtra(EXTRAS_USERNAME, userName);
+ cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.OWNER);
+ cachesIntent.putExtra(Intents.EXTRA_USERNAME, userName);
context.startActivity(cachesIntent);
}
@@ -1850,8 +1866,8 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
return;
}
final Intent cachesIntent = new Intent(context, cgeocaches.class);
- cachesIntent.putExtra(EXTRAS_LIST_TYPE, CacheListType.USERNAME);
- cachesIntent.putExtra(EXTRAS_USERNAME, userName);
+ cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.USERNAME);
+ cachesIntent.putExtra(Intents.EXTRA_USERNAME, userName);
context.startActivity(cachesIntent);
}
@@ -1879,7 +1895,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
private void setDateComparatorForEventList() {
if (CollectionUtils.isNotEmpty(cacheList)) {
boolean eventsOnly = true;
- for (cgCache cache : cacheList) {
+ for (Geocache cache : cacheList) {
if (!cache.isEventCache()) {
eventsOnly = false;
break;
@@ -1902,22 +1918,22 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
return;
}
final Intent cachesIntent = new Intent(context, cgeocaches.class);
- cachesIntent.putExtra(EXTRAS_LIST_TYPE, CacheListType.NEAREST);
- cachesIntent.putExtra(EXTRAS_COORDS, coordsNow);
+ cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.NEAREST);
+ cachesIntent.putExtra(Intents.EXTRAS_COORDS, coordsNow);
context.startActivity(cachesIntent);
}
public static void startActivityHistory(Context context) {
final Intent cachesIntent = new Intent(context, cgeocaches.class);
- cachesIntent.putExtra(EXTRAS_LIST_TYPE, CacheListType.HISTORY);
+ cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.HISTORY);
context.startActivity(cachesIntent);
}
public static void startActivityAddress(final Context context, final Geopoint coords, final String address) {
final Intent addressIntent = new Intent(context, cgeocaches.class);
- addressIntent.putExtra(EXTRAS_LIST_TYPE, CacheListType.ADDRESS);
- addressIntent.putExtra(EXTRAS_COORDS, coords);
- addressIntent.putExtra(EXTRAS_ADDRESS, address);
+ addressIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.ADDRESS);
+ addressIntent.putExtra(Intents.EXTRAS_COORDS, coords);
+ addressIntent.putExtra(Intents.EXTRA_ADDRESS, address);
context.startActivity(addressIntent);
}
@@ -1926,8 +1942,8 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
return;
}
final Intent cachesIntent = new Intent(context, cgeocaches.class);
- cachesIntent.putExtra(EXTRAS_LIST_TYPE, CacheListType.COORDINATE);
- cachesIntent.putExtra(EXTRAS_COORDS, coords);
+ cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.COORDINATE);
+ cachesIntent.putExtra(Intents.EXTRAS_COORDS, coords);
context.startActivity(cachesIntent);
}
@@ -1945,15 +1961,15 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
return;
}
final Intent cachesIntent = new Intent(context, cgeocaches.class);
- cachesIntent.putExtra(EXTRAS_LIST_TYPE, CacheListType.KEYWORD);
- cachesIntent.putExtra(EXTRAS_KEYWORD, keyword);
+ cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.KEYWORD);
+ cachesIntent.putExtra(Intents.EXTRA_KEYWORD, keyword);
context.startActivity(cachesIntent);
}
public static void startActivityMap(final Context context, final SearchResult search) {
final Intent cachesIntent = new Intent(context, cgeocaches.class);
- cachesIntent.putExtra(EXTRAS_LIST_TYPE, CacheListType.MAP);
- cachesIntent.putExtra(EXTRAS_SEARCH, search);
+ cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.MAP);
+ cachesIntent.putExtra(Intents.EXTRA_SEARCH, search);
context.startActivity(cachesIntent);
}
}
diff --git a/main/src/cgeo/geocaching/cgeogpxes.java b/main/src/cgeo/geocaching/cgeogpxes.java
index 909263f..d512618 100644
--- a/main/src/cgeo/geocaching/cgeogpxes.java
+++ b/main/src/cgeo/geocaching/cgeogpxes.java
@@ -10,21 +10,17 @@ import org.apache.commons.lang3.StringUtils;
import android.app.Activity;
import android.content.Intent;
-import android.os.Bundle;
import java.io.File;
import java.util.Collections;
import java.util.List;
public class cgeogpxes extends FileList<GPXListAdapter> {
- private static final String EXTRAS_LIST_ID = "list";
public cgeogpxes() {
super(new String[] { "gpx", "loc", "zip" });
}
- private int listId = StoredList.STANDARD_LIST_ID;
-
@Override
protected GPXListAdapter getAdapter(List<File> files) {
return new GPXListAdapter(this, files);
@@ -36,26 +32,13 @@ public class cgeogpxes extends FileList<GPXListAdapter> {
}
@Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- final Bundle extras = getIntent().getExtras();
- if (extras != null) {
- listId = extras.getInt(EXTRAS_LIST_ID);
- }
- if (listId <= StoredList.TEMPORARY_LIST_ID) {
- listId = StoredList.STANDARD_LIST_ID;
- }
- }
-
- @Override
protected void setTitle() {
setTitle(res.getString(R.string.gpx_import_title));
}
public static void startSubActivity(Activity fromActivity, int listId) {
final Intent intent = new Intent(fromActivity, cgeogpxes.class);
- intent.putExtra(EXTRAS_LIST_ID, listId);
+ intent.putExtra(Intents.EXTRA_LIST_ID, listId);
fromActivity.startActivityForResult(intent, 0);
}
diff --git a/main/src/cgeo/geocaching/cgeopoint.java b/main/src/cgeo/geocaching/cgeopoint.java
index e399a97..9fb1905 100644
--- a/main/src/cgeo/geocaching/cgeopoint.java
+++ b/main/src/cgeo/geocaching/cgeopoint.java
@@ -6,6 +6,7 @@ import cgeo.geocaching.geopoint.DistanceParser;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.GeopointFormatter;
import cgeo.geocaching.ui.Formatter;
+import cgeo.geocaching.ui.dialog.CoordinatesInputDialog;
import cgeo.geocaching.utils.GeoDirHandler;
import cgeo.geocaching.utils.Log;
@@ -290,9 +291,9 @@ public class cgeopoint extends AbstractActivity {
if (latButton.getText().length() > 0 && lonButton.getText().length() > 0) {
gp = new Geopoint(latButton.getText().toString() + " " + lonButton.getText().toString());
}
- cgeocoords coordsDialog = new cgeocoords(cgeopoint.this, null, gp, app.currentGeo());
+ CoordinatesInputDialog coordsDialog = new CoordinatesInputDialog(cgeopoint.this, null, gp, app.currentGeo());
coordsDialog.setCancelable(true);
- coordsDialog.setOnCoordinateUpdate(new cgeocoords.CoordinateUpdate() {
+ coordsDialog.setOnCoordinateUpdate(new CoordinatesInputDialog.CoordinateUpdate() {
@Override
public void update(Geopoint gp) {
latButton.setText(gp.format(GeopointFormatter.Format.LAT_DECMINUTE));
diff --git a/main/src/cgeo/geocaching/connector/AbstractConnector.java b/main/src/cgeo/geocaching/connector/AbstractConnector.java
index 9604b5f..1eb8fbb 100644
--- a/main/src/cgeo/geocaching/connector/AbstractConnector.java
+++ b/main/src/cgeo/geocaching/connector/AbstractConnector.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.connector;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.enumerations.CacheRealm;
import cgeo.geocaching.geopoint.Geopoint;
@@ -31,7 +31,7 @@ public abstract class AbstractConnector implements IConnector {
* @return success
*/
@Override
- public boolean uploadModifiedCoordinates(cgCache cache, Geopoint wpt) {
+ public boolean uploadModifiedCoordinates(Geocache cache, Geopoint wpt) {
throw new UnsupportedOperationException();
}
@@ -39,7 +39,7 @@ public abstract class AbstractConnector implements IConnector {
* {@link IConnector}
*/
@Override
- public boolean deleteModifiedCoordinates(cgCache cache) {
+ public boolean deleteModifiedCoordinates(Geocache cache) {
throw new UnsupportedOperationException();
}
@@ -54,7 +54,7 @@ public abstract class AbstractConnector implements IConnector {
}
@Override
- public String getLicenseText(final cgCache cache) {
+ public String getLicenseText(final Geocache cache) {
return null;
}
diff --git a/main/src/cgeo/geocaching/connector/ConnectorFactory.java b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
index 6c8b7d9..561bae2 100644
--- a/main/src/cgeo/geocaching/connector/ConnectorFactory.java
+++ b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
@@ -48,7 +48,7 @@ public final class ConnectorFactory {
vpConns.add((ISearchByViewPort) conn);
}
}
- searchByViewPortConns = vpConns.toArray(new ISearchByViewPort[] {});
+ searchByViewPortConns = vpConns.toArray(new ISearchByViewPort[vpConns.size()]);
List<ISearchByCenter> centerConns = new ArrayList<ISearchByCenter>();
for (IConnector conn : connectors) {
@@ -57,7 +57,7 @@ public final class ConnectorFactory {
centerConns.add((ISearchByCenter) conn);
}
}
- searchByCenterConns = centerConns.toArray(new ISearchByCenter[] {});
+ searchByCenterConns = centerConns.toArray(new ISearchByCenter[centerConns.size()]);
}
public static IConnector[] getConnectors() {
diff --git a/main/src/cgeo/geocaching/connector/GeocachingAustraliaConnector.java b/main/src/cgeo/geocaching/connector/GeocachingAustraliaConnector.java
index 30d1a4b..ac2fb37 100644
--- a/main/src/cgeo/geocaching/connector/GeocachingAustraliaConnector.java
+++ b/main/src/cgeo/geocaching/connector/GeocachingAustraliaConnector.java
@@ -1,6 +1,7 @@
package cgeo.geocaching.connector;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
+import cgeo.geocaching.ICache;
import org.apache.commons.lang3.StringUtils;
@@ -12,7 +13,7 @@ public class GeocachingAustraliaConnector extends AbstractConnector {
}
@Override
- public String getCacheUrl(final cgCache cache) {
+ public String getCacheUrl(final Geocache cache) {
return getCacheUrlPrefix() + cache.getGeocode();
}
@@ -22,6 +23,11 @@ public class GeocachingAustraliaConnector extends AbstractConnector {
}
@Override
+ public boolean isOwner(final ICache cache) {
+ return false;
+ }
+
+ @Override
public boolean canHandle(final String geocode) {
return (StringUtils.startsWithIgnoreCase(geocode, "GA") || StringUtils.startsWithIgnoreCase(geocode, "TP")) && isNumericId(geocode.substring(2));
}
diff --git a/main/src/cgeo/geocaching/connector/GeopeitusConnector.java b/main/src/cgeo/geocaching/connector/GeopeitusConnector.java
index 6ef91db..500f752 100644
--- a/main/src/cgeo/geocaching/connector/GeopeitusConnector.java
+++ b/main/src/cgeo/geocaching/connector/GeopeitusConnector.java
@@ -1,6 +1,7 @@
package cgeo.geocaching.connector;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
+import cgeo.geocaching.ICache;
import org.apache.commons.lang3.StringUtils;
@@ -12,7 +13,7 @@ public class GeopeitusConnector extends AbstractConnector {
}
@Override
- public String getCacheUrl(final cgCache cache) {
+ public String getCacheUrl(final Geocache cache) {
return getCacheUrlPrefix() + StringUtils.stripStart(cache.getGeocode().substring(2), "0");
}
@@ -22,6 +23,11 @@ public class GeopeitusConnector extends AbstractConnector {
}
@Override
+ public boolean isOwner(final ICache cache) {
+ return false;
+ }
+
+ @Override
public boolean canHandle(String geocode) {
return StringUtils.startsWith(geocode, "GE") && isNumericId(geocode.substring(2));
}
diff --git a/main/src/cgeo/geocaching/connector/IConnector.java b/main/src/cgeo/geocaching/connector/IConnector.java
index 2944bed..da626f2 100644
--- a/main/src/cgeo/geocaching/connector/IConnector.java
+++ b/main/src/cgeo/geocaching/connector/IConnector.java
@@ -1,6 +1,7 @@
package cgeo.geocaching.connector;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.ICache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.enumerations.CacheRealm;
import cgeo.geocaching.geopoint.Geopoint;
@@ -26,7 +27,7 @@ public interface IConnector {
* @param cache
* @return
*/
- public String getCacheUrl(final cgCache cache);
+ public String getCacheUrl(final Geocache cache);
/**
* enable/disable watchlist controls in cache details
@@ -62,7 +63,7 @@ public interface IConnector {
* @param cache
* @return
*/
- public String getLicenseText(final cgCache cache);
+ public String getLicenseText(final Geocache cache);
/**
* enable/disable user actions in cache details
@@ -117,7 +118,7 @@ public interface IConnector {
* @param wpt
* @return success
*/
- public boolean uploadModifiedCoordinates(cgCache cache, Geopoint wpt);
+ public boolean uploadModifiedCoordinates(Geocache cache, Geopoint wpt);
/**
* Reseting of modified coordinates on website to details
@@ -125,7 +126,7 @@ public interface IConnector {
* @param cache
* @return success
*/
- public boolean deleteModifiedCoordinates(cgCache cache);
+ public boolean deleteModifiedCoordinates(Geocache cache);
/**
* The CacheRealm this cache belongs to
@@ -140,5 +141,14 @@ public interface IConnector {
*
* @return
*/
+
public boolean isActivated();
+
+ /**
+ * Check if the current user is the owner of the given cache.
+ *
+ * @param cache a cache that this connector must be able to handle
+ * @return <code>true</code> if the current user is the cache owner, <code>false</code> otherwise
+ */
+ public boolean isOwner(final ICache cache);
}
diff --git a/main/src/cgeo/geocaching/connector/UnknownConnector.java b/main/src/cgeo/geocaching/connector/UnknownConnector.java
index 991d31c..b6fc29a 100644
--- a/main/src/cgeo/geocaching/connector/UnknownConnector.java
+++ b/main/src/cgeo/geocaching/connector/UnknownConnector.java
@@ -1,6 +1,7 @@
package cgeo.geocaching.connector;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.ICache;
+import cgeo.geocaching.Geocache;
import org.apache.commons.lang3.StringUtils;
@@ -12,7 +13,7 @@ public class UnknownConnector extends AbstractConnector {
}
@Override
- public String getCacheUrl(cgCache cache) {
+ public String getCacheUrl(Geocache cache) {
return null; // we have no url for these caches
}
@@ -22,6 +23,11 @@ public class UnknownConnector extends AbstractConnector {
}
@Override
+ public boolean isOwner(final ICache cache) {
+ return false;
+ }
+
+ @Override
public boolean canHandle(final String geocode) {
return StringUtils.isNotBlank(geocode);
}
diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
index 8943835..2a38bd9 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
@@ -1,8 +1,10 @@
package cgeo.geocaching.connector.gc;
+import cgeo.geocaching.Geocache;
+import cgeo.geocaching.ICache;
import cgeo.geocaching.R;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Settings;
import cgeo.geocaching.cgData;
import cgeo.geocaching.connector.AbstractConnector;
import cgeo.geocaching.connector.capability.ISearchByCenter;
@@ -49,7 +51,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
}
@Override
- public String getCacheUrl(cgCache cache) {
+ public String getCacheUrl(Geocache cache) {
// it would also be possible to use "http://www.geocaching.com/seek/cache_details.aspx?wp=" + cache.getGeocode();
return "http://www.geocaching.com//seek/cache_details.aspx?wp=" + cache.getGeocode();
}
@@ -135,7 +137,13 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
return cacheHasReliableLatLon;
}
- public static boolean addToWatchlist(cgCache cache) {
+ @Override
+ public boolean isOwner(final ICache cache) {
+ return StringUtils.equalsIgnoreCase(cache.getOwnerUserId(), Settings.getUsername());
+
+ }
+
+ public static boolean addToWatchlist(Geocache cache) {
final boolean added = GCParser.addToWatchlist(cache);
if (added) {
cgData.saveChangedCache(cache);
@@ -143,7 +151,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
return added;
}
- public static boolean removeFromWatchlist(cgCache cache) {
+ public static boolean removeFromWatchlist(Geocache cache) {
final boolean removed = GCParser.removeFromWatchlist(cache);
if (removed) {
cgData.saveChangedCache(cache);
@@ -160,7 +168,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
* @return <code>true</code> if the cache was sucessfully added, <code>false</code> otherwise
*/
- public static boolean addToFavorites(cgCache cache) {
+ public static boolean addToFavorites(Geocache cache) {
final boolean added = GCParser.addToFavorites(cache);
if (added) {
cgData.saveChangedCache(cache);
@@ -177,7 +185,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
* @return <code>true</code> if the cache was sucessfully added, <code>false</code> otherwise
*/
- public static boolean removeFromFavorites(cgCache cache) {
+ public static boolean removeFromFavorites(Geocache cache) {
final boolean removed = GCParser.removeFromFavorites(cache);
if (removed) {
cgData.saveChangedCache(cache);
@@ -186,7 +194,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
}
@Override
- public boolean uploadModifiedCoordinates(cgCache cache, Geopoint wpt) {
+ public boolean uploadModifiedCoordinates(Geocache cache, Geopoint wpt) {
final boolean uploaded = GCParser.uploadModifiedCoordinates(cache, wpt);
if (uploaded) {
cgData.saveChangedCache(cache);
@@ -195,7 +203,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
}
@Override
- public boolean deleteModifiedCoordinates(cgCache cache) {
+ public boolean deleteModifiedCoordinates(Geocache cache) {
final boolean deleted = GCParser.deleteModifiedCoordinates(cache);
if (deleted) {
cgData.saveChangedCache(cache);
diff --git a/main/src/cgeo/geocaching/connector/gc/GCConstants.java b/main/src/cgeo/geocaching/connector/gc/GCConstants.java
index e67f6a8..8660ec4 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCConstants.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCConstants.java
@@ -68,7 +68,7 @@ public final class GCConstants {
public static final String MEMBER_STATUS_RENEW = "<a id=\"ctl00_hlRenew";
public static final String MEMBER_STATUS_PM = "Premium Member";
/** Use replaceAll("[,.]","") on the resulting string before converting to an int */
- public static final Pattern PATTERN_CACHES_FOUND = Pattern.compile("<strong style=\"display:block\">.*?([\\d,.]+) Caches Found");
+ public static final Pattern PATTERN_CACHES_FOUND = Pattern.compile("<strong[^>]*>.*?([\\d,.]+) Caches Found");
public static final Pattern PATTERN_AVATAR_IMAGE_PROFILE_PAGE = Pattern.compile("<img src=\"(http://img.geocaching.com/user/avatar/[0-9a-f-]+\\.jpg)\"[^>]*\\salt=\"Avatar\"");
public static final Pattern PATTERN_LOGIN_NAME_LOGIN_PAGE = Pattern.compile("<h4>Success:</h4> <p>You are logged in as[^<]*<strong><span id=\"ctl00_ContentBody_lbUsername\"[^>]*>([^<]+)[^<]*</span>");
public static final Pattern PATTERN_CUSTOMDATE = Pattern.compile("<option selected=\"selected\" value=\"([ /Mdy-]+)\">");
diff --git a/main/src/cgeo/geocaching/connector/gc/GCMap.java b/main/src/cgeo/geocaching/connector/gc/GCMap.java
index 9a8123d..2e1dff0 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCMap.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCMap.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.connector.gc;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.Settings;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.cgData;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.CacheSize;
@@ -68,7 +68,7 @@ public class GCMap {
}
for (int j = 0; j < dataArray.length(); j++) {
- final cgCache cache = new cgCache();
+ final Geocache cache = new Geocache();
JSONObject dataObject = dataArray.getJSONObject(j);
cache.setName(dataObject.getString("name"));
@@ -202,7 +202,7 @@ public class GCMap {
String id = entry.getKey();
List<UTFGridPosition> pos = entry.getValue();
UTFGridPosition xy = UTFGrid.getPositionInGrid(pos);
- cgCache cache = new cgCache();
+ Geocache cache = new Geocache();
cache.setDetailed(false);
cache.setReliableLatLon(false);
cache.setGeocode(id);
@@ -220,13 +220,13 @@ public class GCMap {
}
boolean exclude = false;
- if (Settings.isExcludeMyCaches() && (cache.isFound() || cache.isOwn())) { // workaround for BM
+ if (Settings.isExcludeMyCaches() && (cache.isFound() || cache.isOwner())) { // workaround for BM
exclude = true;
}
if (Settings.isExcludeDisabledCaches() && cache.isDisabled()) {
exclude = true;
}
- if (Settings.getCacheType() != CacheType.ALL && Settings.getCacheType() != cache.getType() && cache.getType() != CacheType.UNKNOWN) { // workaround for BM
+ if (!Settings.getCacheType().contains(cache) && cache.getType() != CacheType.UNKNOWN) { // workaround for BM
exclude = true;
}
if (!exclude) {
diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java
index e8de993..23102c9 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCParser.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java
@@ -1,5 +1,6 @@
package cgeo.geocaching.connector.gc;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.Image;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
@@ -8,7 +9,6 @@ import cgeo.geocaching.Settings;
import cgeo.geocaching.Trackable;
import cgeo.geocaching.TrackableLog;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgData;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.CacheSize;
@@ -30,7 +30,6 @@ import cgeo.geocaching.ui.DirectionImage;
import cgeo.geocaching.utils.BaseUtils;
import cgeo.geocaching.utils.CancellableHandler;
import cgeo.geocaching.utils.HtmlUtils;
-import cgeo.geocaching.utils.LazyInitializedList;
import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.MatcherWrapper;
@@ -122,7 +121,7 @@ public abstract class GCParser {
final int rows_count = rows.length;
for (int z = 1; z < rows_count; z++) {
- final cgCache cache = new cgCache();
+ final Geocache cache = new Geocache();
String row = rows[z];
// check for cache type presence
@@ -203,9 +202,6 @@ public abstract class GCParser {
// found it
cache.setFound(row.contains("/images/icons/16/found.png"));
- // own it
- cache.setOwn(row.contains("/images/icons/16/placed.png"));
-
// id
String result = BaseUtils.getMatch(row, GCConstants.PATTERN_SEARCH_ID, null);
if (null != result) {
@@ -293,8 +289,8 @@ public abstract class GCParser {
// get direction images
if (Settings.getLoadDirImg()) {
- final Set<cgCache> caches = searchResult.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB);
- for (cgCache cache : caches) {
+ final Set<Geocache> caches = searchResult.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB);
+ for (Geocache cache : caches) {
if (cache.getCoords() == null && StringUtils.isNotEmpty(cache.getDirectionImg())) {
DirectionImage.getDrawable(cache.getGeocode(), cache.getDirectionImg());
}
@@ -307,7 +303,7 @@ public abstract class GCParser {
static SearchResult parseCache(final String page, final CancellableHandler handler) {
final SearchResult searchResult = parseCacheFromText(page, handler);
if (searchResult != null && !searchResult.getGeocodes().isEmpty()) {
- final cgCache cache = searchResult.getFirstCacheFromResult(LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cache = searchResult.getFirstCacheFromResult(LoadFlags.LOAD_CACHE_OR_DB);
getExtraOnlineInfo(cache, page, handler);
cache.setDetailedUpdatedNow();
if (CancellableHandler.isCancelled(handler)) {
@@ -351,7 +347,7 @@ public abstract class GCParser {
return searchResult;
}
- final cgCache cache = new cgCache();
+ final Geocache cache = new Geocache();
cache.setDisabled(page.contains(GCConstants.STRING_DISABLED));
cache.setArchived(page.contains(GCConstants.STRING_ARCHIVED));
@@ -375,8 +371,6 @@ public abstract class GCParser {
// owner real name
cache.setOwnerUserId(Network.decode(BaseUtils.getMatch(page, GCConstants.PATTERN_OWNER_USERID, true, cache.getOwnerUserId())));
- cache.setOwn(StringUtils.equalsIgnoreCase(cache.getOwnerUserId(), Settings.getUsername()));
-
cache.setUserModifiedCoords(false);
String tableInside = page;
@@ -463,10 +457,10 @@ public abstract class GCParser {
cache.setOnWatchlist(BaseUtils.matches(page, GCConstants.PATTERN_WATCHLIST));
// latitude and longitude. Can only be retrieved if user is logged in
- cache.setLatlon(BaseUtils.getMatch(page, GCConstants.PATTERN_LATLON, true, cache.getLatlon()));
- if (StringUtils.isNotEmpty(cache.getLatlon())) {
+ String latlon = BaseUtils.getMatch(page, GCConstants.PATTERN_LATLON, true, "");
+ if (StringUtils.isNotEmpty(latlon)) {
try {
- cache.setCoords(new Geopoint(cache.getLatlon()));
+ cache.setCoords(new Geopoint(latlon));
cache.setReliableLatLon(true);
} catch (Geopoint.GeopointException e) {
Log.w("GCParser.parseCache: Failed to parse cache coordinates", e);
@@ -474,7 +468,7 @@ public abstract class GCParser {
}
// cache location
- cache.setLocation(BaseUtils.getMatch(page, GCConstants.PATTERN_LOCATION, true, cache.getLocation()));
+ cache.setLocation(BaseUtils.getMatch(page, GCConstants.PATTERN_LOCATION, true, ""));
// cache hint
String result = BaseUtils.getMatch(page, GCConstants.PATTERN_HINT, false, null);
@@ -492,7 +486,7 @@ public abstract class GCParser {
cache.setPersonalNote(BaseUtils.getMatch(page, GCConstants.PATTERN_PERSONALNOTE, true, cache.getPersonalNote()));
// cache short description
- cache.setShortdesc(BaseUtils.getMatch(page, GCConstants.PATTERN_SHORTDESC, true, cache.getShortdesc()));
+ cache.setShortDescription(BaseUtils.getMatch(page, GCConstants.PATTERN_SHORTDESC, true, ""));
// cache description
cache.setDescription(BaseUtils.getMatch(page, GCConstants.PATTERN_DESC, true, ""));
@@ -674,7 +668,7 @@ public abstract class GCParser {
waypoint.setLookup(BaseUtils.getMatch(wp[5], GCConstants.PATTERN_WPPREFIXORLOOKUPORLATLON, true, 2, waypoint.getLookup(), false));
// waypoint latitude and logitude
- String latlon = Html.fromHtml(BaseUtils.getMatch(wp[7], GCConstants.PATTERN_WPPREFIXORLOOKUPORLATLON, false, 2, "", false)).toString().trim();
+ latlon = Html.fromHtml(BaseUtils.getMatch(wp[7], GCConstants.PATTERN_WPPREFIXORLOOKUPORLATLON, false, 2, "", false)).toString().trim();
if (!StringUtils.startsWith(latlon, "???")) {
waypoint.setLatlon(latlon);
waypoint.setCoords(new Geopoint(latlon));
@@ -752,7 +746,7 @@ public abstract class GCParser {
}
// search results don't need to be filtered so load GCVote ratings here
- GCVote.loadRatings(new ArrayList<cgCache>(searchResult.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB)));
+ GCVote.loadRatings(new ArrayList<Geocache>(searchResult.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB)));
// save to application
search.setError(searchResult.getError());
@@ -1199,7 +1193,7 @@ public abstract class GCParser {
* the cache to add
* @return <code>false</code> if an error occurred, <code>true</code> otherwise
*/
- static boolean addToWatchlist(final cgCache cache) {
+ static boolean addToWatchlist(final Geocache cache) {
final String uri = "http://www.geocaching.com/my/watchlist.aspx?w=" + cache.getCacheId();
String page = Login.postRequestLogged(uri, null);
@@ -1225,7 +1219,7 @@ public abstract class GCParser {
* the cache to remove
* @return <code>false</code> if an error occurred, <code>true</code> otherwise
*/
- static boolean removeFromWatchlist(final cgCache cache) {
+ static boolean removeFromWatchlist(final Geocache cache) {
final String uri = "http://www.geocaching.com/my/watchlist.aspx?ds=1&action=rem&id=" + cache.getCacheId();
String page = Login.postRequestLogged(uri, null);
@@ -1274,11 +1268,11 @@ public abstract class GCParser {
* the cache to add
* @return <code>false</code> if an error occurred, <code>true</code> otherwise
*/
- static boolean addToFavorites(final cgCache cache) {
+ static boolean addToFavorites(final Geocache cache) {
return changeFavorite(cache, true);
}
- private static boolean changeFavorite(final cgCache cache, final boolean add) {
+ private static boolean changeFavorite(final Geocache cache, final boolean add) {
final String page = requestHtmlPage(cache.getGeocode(), null, "n", "0");
final String userToken = BaseUtils.getMatch(page, GCConstants.PATTERN_USERTOKEN, "");
if (StringUtils.isEmpty(userToken)) {
@@ -1308,7 +1302,7 @@ public abstract class GCParser {
* the cache to remove
* @return <code>false</code> if an error occurred, <code>true</code> otherwise
*/
- static boolean removeFromFavorites(final cgCache cache) {
+ static boolean removeFromFavorites(final Geocache cache) {
return changeFavorite(cache, false);
}
@@ -1510,7 +1504,7 @@ public abstract class GCParser {
* @param friends
* retrieve friend logs
*/
- private static List<LogEntry> loadLogsFromDetails(final String page, final cgCache cache, final boolean friends, final boolean getDataFromPage) {
+ private static List<LogEntry> loadLogsFromDetails(final String page, final Geocache cache, final boolean friends, final boolean getDataFromPage) {
String rawResponse;
if (!getDataFromPage) {
@@ -1697,7 +1691,7 @@ public abstract class GCParser {
params.put("tx", cacheType.guid);
}
- private static void getExtraOnlineInfo(final cgCache cache, final String page, final CancellableHandler handler) {
+ private static void getExtraOnlineInfo(final Geocache cache, final String page, final CancellableHandler handler) {
if (CancellableHandler.isCancelled(handler)) {
return;
}
@@ -1705,7 +1699,7 @@ public abstract class GCParser {
//cache.setLogs(loadLogsFromDetails(page, cache, false));
if (Settings.isFriendLogsWanted()) {
CancellableHandler.sendLoadProgressDetail(handler, R.string.cache_dialog_loading_details_status_logs);
- LazyInitializedList<LogEntry> allLogs = cache.getLogs();
+ List<LogEntry> allLogs = cache.getLogs();
List<LogEntry> friendLogs = loadLogsFromDetails(page, cache, true, false);
if (friendLogs != null) {
for (LogEntry log : friendLogs) {
@@ -1742,15 +1736,15 @@ public abstract class GCParser {
}
}
- public static boolean uploadModifiedCoordinates(cgCache cache, Geopoint wpt) {
+ public static boolean uploadModifiedCoordinates(Geocache cache, Geopoint wpt) {
return editModifiedCoordinates(cache, wpt);
}
- public static boolean deleteModifiedCoordinates(cgCache cache) {
+ public static boolean deleteModifiedCoordinates(Geocache cache) {
return editModifiedCoordinates(cache, null);
}
- public static boolean editModifiedCoordinates(cgCache cache, Geopoint wpt) {
+ public static boolean editModifiedCoordinates(Geocache cache, Geopoint wpt) {
final String page = requestHtmlPage(cache.getGeocode(), null, "n", "0");
final String userToken = BaseUtils.getMatch(page, GCConstants.PATTERN_USERTOKEN, "");
if (StringUtils.isEmpty(userToken)) {
diff --git a/main/src/cgeo/geocaching/connector/gc/IconDecoder.java b/main/src/cgeo/geocaching/connector/gc/IconDecoder.java
index 9c28048..98bd28a 100644
--- a/main/src/cgeo/geocaching/connector/gc/IconDecoder.java
+++ b/main/src/cgeo/geocaching/connector/gc/IconDecoder.java
@@ -1,6 +1,7 @@
package cgeo.geocaching.connector.gc;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Settings;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.enumerations.CacheType;
import android.graphics.Bitmap;
@@ -24,7 +25,7 @@ public abstract class IconDecoder {
private static final int CT_VIRTUAL = 11;
private static final int CT_LETTERBOX = 12;
- public static boolean parseMapPNG(final cgCache cache, Bitmap bitmap, UTFGridPosition xy, int zoomlevel) {
+ public static boolean parseMapPNG(final Geocache cache, Bitmap bitmap, UTFGridPosition xy, int zoomlevel) {
final int topX = xy.getX() * 4;
final int topY = xy.getY() * 4;
final int bitmapWidth = bitmap.getWidth();
@@ -105,7 +106,7 @@ public abstract class IconDecoder {
cache.setFound(true);
return true;
case CT_OWN:
- cache.setOwn(true);
+ cache.setOwnerUserId(Settings.getUsername());
return true;
case CT_MEGAEVENT:
cache.setType(CacheType.MEGA_EVENT);
diff --git a/main/src/cgeo/geocaching/connector/gc/Login.java b/main/src/cgeo/geocaching/connector/gc/Login.java
index 9a60f65..85b5272 100644
--- a/main/src/cgeo/geocaching/connector/gc/Login.java
+++ b/main/src/cgeo/geocaching/connector/gc/Login.java
@@ -132,6 +132,11 @@ public abstract class Login {
return StatusCode.WRONG_LOGIN_DATA; // wrong login
}
+ if (loginData.contains("You must validate your account before you can log in.")) {
+ Log.i("Failed to log in Geocaching.com as " + login.left + " because account needs to be validated first");
+ return StatusCode.UNVALIDATED_ACCOUNT;
+ }
+
Log.i("Failed to log in Geocaching.com as " + login.left + " for some unknown reason");
if (retry) {
Login.switchToEnglish(loginData);
diff --git a/main/src/cgeo/geocaching/connector/gc/Tile.java b/main/src/cgeo/geocaching/connector/gc/Tile.java
index 73ded4d..0e5ffe7 100644
--- a/main/src/cgeo/geocaching/connector/gc/Tile.java
+++ b/main/src/cgeo/geocaching/connector/gc/Tile.java
@@ -53,11 +53,15 @@ public class Tile {
private final Viewport viewPort;
public Tile(Geopoint origin, int zoomlevel) {
+ this(calcX(origin, clippedZoomlevel(zoomlevel)), calcY(origin, clippedZoomlevel(zoomlevel)), clippedZoomlevel(zoomlevel));
+ }
+
+ private Tile(int tileX, int tileY, int zoomlevel) {
- this.zoomlevel = Math.max(Math.min(zoomlevel, ZOOMLEVEL_MAX), ZOOMLEVEL_MIN);
+ this.zoomlevel = clippedZoomlevel(zoomlevel);
- tileX = calcX(origin);
- tileY = calcY(origin);
+ this.tileX = tileX;
+ this.tileY = tileY;
viewPort = new Viewport(getCoord(new UTFGridPosition(0, 0)), getCoord(new UTFGridPosition(63, 63)));
}
@@ -66,28 +70,34 @@ public class Tile {
return zoomlevel;
}
+ private static int clippedZoomlevel(int zoomlevel) {
+ return Math.max(Math.min(zoomlevel, ZOOMLEVEL_MAX), ZOOMLEVEL_MIN);
+ }
+
/**
* Calculate the tile for a Geopoint based on the Spherical Mercator.
*
* @see <a
* href="http://developers.cloudmade.com/projects/tiles/examples/convert-coordinates-to-tile-numbers">Cloudmade</a>
*/
- private int calcX(final Geopoint origin) {
- return (int) ((origin.getLongitude() + 180.0) / 360.0 * NUMBER_OF_TILES[this.zoomlevel]);
+ private static int calcX(final Geopoint origin, final int zoomlevel) {
+ // The cut of the fractional part instead of rounding to the nearest integer is intentional and part of the algorithm
+ return (int) ((origin.getLongitude() + 180.0) / 360.0 * NUMBER_OF_TILES[zoomlevel]);
}
/**
* Calculate the tile for a Geopoint based on the Spherical Mercator.
*
*/
- private int calcY(final Geopoint origin) {
+ private static int calcY(final Geopoint origin, final int zoomlevel) {
// double latRad = Math.toRadians(origin.getLatitude());
// return (int) ((1 - (Math.log(Math.tan(latRad) + (1 / Math.cos(latRad))) / Math.PI)) / 2 * numberOfTiles);
// Optimization from Bing
double sinLatRad = Math.sin(Math.toRadians(origin.getLatitude()));
- return (int) ((0.5 - Math.log((1 + sinLatRad) / (1 - sinLatRad)) / (4 * Math.PI)) * NUMBER_OF_TILES[this.zoomlevel]);
+ // The cut of the fractional part instead of rounding to the nearest integer is intentional and part of the algorithm
+ return (int) ((0.5 - Math.log((1 + sinLatRad) / (1 - sinLatRad)) / (4 * Math.PI)) * NUMBER_OF_TILES[zoomlevel]);
}
public int getX() {
@@ -121,7 +131,12 @@ public class Tile {
/**
* Calculates the maximum possible zoom level where the supplied points
- * are covered by adjacent tiles on the east/west axis.
+ * are covered by at least by the supplied number of
+ * adjacent tiles on the east/west axis.
+ * This criterion can be exactly met for even numbers of tiles
+ * while it may result in one more tile as requested for odd numbers
+ * of tiles.
+ *
* The order of the points (left/right) is irrelevant.
*
* @param left
@@ -130,17 +145,17 @@ public class Tile {
* Second point
* @return
*/
- public static int calcZoomLon(final Geopoint left, final Geopoint right) {
+ public static int calcZoomLon(final Geopoint left, final Geopoint right, final int numberOfTiles) {
int zoom = (int) Math.floor(
- Math.log(360.0 / Math.abs(left.getLongitude() - right.getLongitude()))
+ Math.log(360.0 * numberOfTiles / (2.0 * Math.abs(left.getLongitude() - right.getLongitude())))
/ Math.log(2)
);
Tile tileLeft = new Tile(left, zoom);
Tile tileRight = new Tile(right, zoom);
- if (tileLeft.tileX == tileRight.tileX) {
+ if (Math.abs(tileLeft.tileX - tileRight.tileX) < (numberOfTiles - 1)) {
zoom += 1;
}
@@ -149,7 +164,12 @@ public class Tile {
/**
* Calculates the maximum possible zoom level where the supplied points
- * are covered by adjacent tiles on the north/south axis.
+ * are covered by at least by the supplied number of
+ * adjacent tiles on the north/south axis.
+ * This criterion can be exactly met for even numbers of tiles
+ * while it may result in one more tile as requested for odd numbers
+ * of tiles.
+ *
* The order of the points (bottom/top) is irrelevant.
*
* @param bottom
@@ -158,21 +178,21 @@ public class Tile {
* Second point
* @return
*/
- public static int calcZoomLat(final Geopoint bottom, final Geopoint top) {
+ public static int calcZoomLat(final Geopoint bottom, final Geopoint top, final int numberOfTiles) {
int zoom = (int) Math.ceil(
- Math.log(2.0 * Math.PI /
+ Math.log(2.0 * Math.PI * numberOfTiles / (
Math.abs(
asinh(tanGrad(bottom.getLatitude()))
- asinh(tanGrad(top.getLatitude()))
- )
+ ) * 2.0)
) / Math.log(2)
);
Tile tileBottom = new Tile(bottom, zoom);
Tile tileTop = new Tile(top, zoom);
- if (Math.abs(tileBottom.tileY - tileTop.tileY) > 1) {
+ if (Math.abs(tileBottom.tileY - tileTop.tileY) > (numberOfTiles - 1)) {
zoom -= 1;
}
@@ -185,7 +205,7 @@ public class Tile {
/**
* Calculates the inverted hyperbolic sine
- * (after Bronstein, Semendjajew: Taschenbuch der Mathematik
+ * (after Bronstein, Semendjajew: Taschenbuch der Mathematik)
*
* @param x
* @return
@@ -233,19 +253,48 @@ public class Tile {
}
/**
- * Calculate needed tiles for the given viewport
+ * Calculate needed tiles for the given viewport to cover it with
+ * max 2x2 tiles
*
* @param viewport
* @return
*/
protected static Set<Tile> getTilesForViewport(final Viewport viewport) {
+ return getTilesForViewport(viewport, 2, Tile.ZOOMLEVEL_MIN);
+ }
+
+ /**
+ * Calculate needed tiles for the given viewport.
+ * You can define the minimum number of tiles on the longer axis
+ * and/or the minimum zoom level.
+ *
+ * @param viewport
+ * @param tilesOnAxis
+ * @param minZoom
+ * @return
+ */
+ protected static Set<Tile> getTilesForViewport(final Viewport viewport, final int tilesOnAxis, final int minZoom) {
Set<Tile> tiles = new HashSet<Tile>();
- int zoom = Math.min(Tile.calcZoomLon(viewport.bottomLeft, viewport.topRight),
- Tile.calcZoomLat(viewport.bottomLeft, viewport.topRight));
- tiles.add(new Tile(viewport.bottomLeft, zoom));
- tiles.add(new Tile(new Geopoint(viewport.getLatitudeMin(), viewport.getLongitudeMax()), zoom));
- tiles.add(new Tile(new Geopoint(viewport.getLatitudeMax(), viewport.getLongitudeMin()), zoom));
- tiles.add(new Tile(viewport.topRight, zoom));
+ int zoom = Math.max(
+ Math.min(Tile.calcZoomLon(viewport.bottomLeft, viewport.topRight, tilesOnAxis),
+ Tile.calcZoomLat(viewport.bottomLeft, viewport.topRight, tilesOnAxis)),
+ minZoom);
+
+ Tile tileBottomLeft = new Tile(viewport.bottomLeft, zoom);
+ Tile tileTopRight = new Tile(viewport.topRight, zoom);
+
+ int xLow = Math.min(tileBottomLeft.getX(), tileTopRight.getX());
+ int xHigh = Math.max(tileBottomLeft.getX(), tileTopRight.getX());
+
+ int yLow = Math.min(tileBottomLeft.getY(), tileTopRight.getY());
+ int yHigh = Math.max(tileBottomLeft.getY(), tileTopRight.getY());
+
+ for (int xNum = xLow; xNum <= xHigh; xNum++) {
+ for (int yNum = yLow; yNum <= yHigh; yNum++) {
+ tiles.add(new Tile(xNum, yNum, zoom));
+ }
+ }
+
return tiles;
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java b/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java
index 068ac88..6231c68 100644
--- a/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java
+++ b/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java
@@ -1,10 +1,15 @@
package cgeo.geocaching.connector.oc;
+import cgeo.geocaching.Geocache;
+import cgeo.geocaching.Image;
import cgeo.geocaching.LogEntry;
+import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.IConnector;
+import cgeo.geocaching.connector.gc.GCConnector;
+import cgeo.geocaching.enumerations.CacheAttribute;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LogType;
@@ -15,6 +20,7 @@ import org.apache.commons.lang3.StringUtils;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
+import android.content.res.Resources;
import android.sax.Element;
import android.sax.EndElementListener;
import android.sax.EndTextElementListener;
@@ -42,14 +48,18 @@ public class OC11XMLParser {
private static Pattern STRIP_DATE = Pattern.compile("\\+0([0-9]){1}\\:00");
private static Pattern LOCAL_URL = Pattern.compile("href=\"(.*)\"");
private static final int CACHE_PARSE_LIMIT = 250;
+ private static final Resources res = cgeoapplication.getInstance().getResources();
+
+ private static ImageHolder imageHolder = null;
private static class CacheHolder {
- public cgCache cache;
+ public Geocache cache;
public String latitude;
public String longitude;
}
private static class CacheLog {
+ public String id;
public String cacheId;
public LogEntry logEntry;
}
@@ -61,6 +71,13 @@ public class OC11XMLParser {
public String hint;
}
+ private static class ImageHolder {
+ public String url;
+ public String objectId;
+ protected String title;
+ protected boolean isSpoiler = false;
+ }
+
private static Date parseFullDate(final String date) {
final SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
ISO8601DATEFORMAT.setTimeZone(TimeZone.getTimeZone("UTC"));
@@ -160,7 +177,7 @@ public class OC11XMLParser {
}
}
- private static void setCacheStatus(final int statusId, final cgCache cache) {
+ private static void setCacheStatus(final int statusId, final Geocache cache) {
switch (statusId) {
case 1:
cache.setArchived(false);
@@ -178,7 +195,7 @@ public class OC11XMLParser {
}
private static void resetCache(final CacheHolder cacheHolder) {
- cacheHolder.cache = new cgCache(null);
+ cacheHolder.cache = new Geocache(null);
cacheHolder.cache.setReliableLatLon(true);
cacheHolder.cache.setDescription(StringUtils.EMPTY);
cacheHolder.latitude = "0.0";
@@ -197,9 +214,22 @@ public class OC11XMLParser {
desc.hint = StringUtils.EMPTY;
}
- public static Collection<cgCache> parseCaches(final InputStream stream) throws IOException {
+ protected static int attributeId;
+
+ public static Collection<Geocache> parseCaches(final InputStream stream) throws IOException {
+ // parse and return caches without filtering
+ return parseCaches(stream, true);
+ }
+
+ public static Collection<Geocache> parseCachesFiltered(final InputStream stream) throws IOException {
+ // parse caches and filter result
+ return parseCaches(stream, false);
+ }
+
+ private static Collection<Geocache> parseCaches(final InputStream stream, boolean ignoreFiltersIn) throws IOException {
- final Map<String, cgCache> caches = new HashMap<String, cgCache>();
+ final Map<String, Geocache> caches = new HashMap<String, Geocache>();
+ final Map<String, LogEntry> logs = new HashMap<String, LogEntry>();
final CacheHolder cacheHolder = new CacheHolder();
final CacheLog logHolder = new CacheLog();
@@ -208,6 +238,8 @@ public class OC11XMLParser {
final RootElement root = new RootElement("oc11xml");
final Element cacheNode = root.getChild("cache");
+ final boolean ignoreFilters = ignoreFiltersIn;
+
// cache
cacheNode.setStartElementListener(new StartElementListener() {
@@ -222,17 +254,31 @@ public class OC11XMLParser {
@Override
public void end() {
- cgCache cache = cacheHolder.cache;
+ Geocache cache = cacheHolder.cache;
Geopoint coords = new Geopoint(cacheHolder.latitude, cacheHolder.longitude);
- if (StringUtils.isNotBlank(cache.getGeocode())
- && !coords.equals(Geopoint.ZERO)
- && !cache.isArchived()
- && caches.size() < CACHE_PARSE_LIMIT) {
- cache.setCoords(coords);
+ cache.setCoords(coords);
+ if (caches.size() < CACHE_PARSE_LIMIT && isValid(cache) && (ignoreFilters || !isExcluded(cache))) {
cache.setDetailedUpdatedNow();
caches.put(cache.getCacheId(), cache);
}
}
+
+ private boolean isExcluded(Geocache cache) {
+ if (cache.isArchived()) {
+ return true;
+ }
+ if (cache.isDisabled() && Settings.isExcludeDisabledCaches()) {
+ return true;
+ }
+ if ((cache.isFound() || cache.isOwner()) && Settings.isExcludeMyCaches()) {
+ return true;
+ }
+ return !Settings.getCacheType().contains(cache);
+ }
+
+ private boolean isValid(Geocache cache) {
+ return StringUtils.isNotBlank(cache.getGeocode()) && !cache.getCoords().equals(Geopoint.ZERO);
+ }
});
// cache.id
@@ -289,7 +335,7 @@ public class OC11XMLParser {
if (attrs.getIndex("gccom") > -1) {
String gccode = attrs.getValue("gccom");
if (!StringUtils.isBlank(gccode)) {
- cacheHolder.cache.setDescription(String.format("Listed on geocaching com: <a href=\"http://coord.info/%s\">%s</a><br /><br />", gccode, gccode));
+ cacheHolder.cache.setDescription(res.getString(R.string.cache_listed_on, GCConnector.getInstance().getName()) + ": <a href=\"http://coord.info/" + gccode + "\">" + gccode + "</a><br /><br />");
}
}
}
@@ -363,7 +409,7 @@ public class OC11XMLParser {
}
});
- // cache.terrain
+ // cache.datehidden
cacheNode.getChild("datehidden").setEndTextElementListener(new EndTextElementListener() {
@Override
@@ -373,12 +419,56 @@ public class OC11XMLParser {
}
});
+ // cache.userid
+ final Element useridNode = cacheNode.getChild("userid");
+
+ useridNode.setStartElementListener(new StartElementListener() {
+
+ @Override
+ public void start(Attributes attributes) {
+ if (attributes.getIndex("id") > -1) {
+ cacheHolder.cache.setOwnerUserId(attributes.getValue("id"));
+ }
+ }
+ });
+
+ useridNode.setEndTextElementListener(new EndTextElementListener() {
+
+ @Override
+ public void end(String body) {
+ cacheHolder.cache.setOwnerDisplayName(body);
+ }
+ });
+
// cache.attributes.attribute
- cacheNode.getChild("attributes").getChild("attribute").setEndTextElementListener(new EndTextElementListener() {
+ final Element attributeNode = cacheNode.getChild("attributes").getChild("attribute");
+
+ attributeNode.setStartElementListener(new StartElementListener() {
+
+ @Override
+ public void start(Attributes attributes) {
+ if (attributes.getIndex("id") > -1) {
+ try {
+ attributeId = Integer.parseInt(attributes.getValue("id"));
+ } catch (NumberFormatException e) {
+ Log.w(String.format("Failed to parse attribute id of cache '%s'.", cacheHolder.cache.getGeocode()));
+ }
+ }
+ }
+ });
+
+ attributeNode.setEndTextElementListener(new EndTextElementListener() {
@Override
public void end(String body) {
- if (StringUtils.isNotBlank(body)) {
- cacheHolder.cache.getAttributes().add(body.trim());
+ CacheAttribute attribute = CacheAttribute.getByOcId(attributeId);
+ if (attribute != null) {
+ // semantic of attributes on opencaching is always "yes"
+ cacheHolder.cache.getAttributes().add(attribute.getAttributeName(true));
+ }
+ else {
+ if (StringUtils.isNotBlank(body)) {
+ cacheHolder.cache.getAttributes().add(body.trim());
+ }
}
}
});
@@ -398,9 +488,9 @@ public class OC11XMLParser {
@Override
public void end() {
- final cgCache cache = caches.get(descHolder.cacheId);
+ final Geocache cache = caches.get(descHolder.cacheId);
if (cache != null) {
- cache.setShortdesc(descHolder.shortDesc);
+ cache.setShortDescription(descHolder.shortDesc);
cache.setDescription(cache.getDescription() + descHolder.desc);
cache.setHint(descHolder.hint);
}
@@ -441,8 +531,7 @@ public class OC11XMLParser {
@Override
public void end(String body) {
- final String content = body.trim();
- descHolder.hint = content;
+ descHolder.hint = body.trim();
}
});
@@ -461,10 +550,11 @@ public class OC11XMLParser {
@Override
public void end() {
- final cgCache cache = caches.get(logHolder.cacheId);
+ final Geocache cache = caches.get(logHolder.cacheId);
if (cache != null && logHolder.logEntry.type != LogType.UNKNOWN) {
- cache.getLogs().prepend(logHolder.logEntry);
- if (logHolder.logEntry.type == LogType.FOUND_IT
+ logs.put(logHolder.id, logHolder.logEntry);
+ cache.getLogs().add(0, logHolder.logEntry);
+ if ((logHolder.logEntry.type == LogType.FOUND_IT || logHolder.logEntry.type == LogType.ATTENDED)
&& StringUtils.equalsIgnoreCase(logHolder.logEntry.author, Settings.getOCConnectorUserName())) {
cache.setFound(true);
cache.setVisitedDate(logHolder.logEntry.date);
@@ -473,6 +563,15 @@ public class OC11XMLParser {
}
});
+ // cachelog.id
+ cacheLog.getChild("id").setEndTextElementListener(new EndTextElementListener() {
+
+ @Override
+ public void end(String body) {
+ logHolder.id = StringUtils.trim(body);
+ }
+ });
+
// cachelog.cacheid
cacheLog.getChild("cacheid").setEndTextElementListener(new EndTextElementListener() {
@@ -530,6 +629,76 @@ public class OC11XMLParser {
}
});
+ // pictures
+ final Element picture = root.getChild("picture");
+
+ picture.setStartElementListener(new StartElementListener() {
+
+ @Override
+ public void start(Attributes attrs) {
+ imageHolder = new ImageHolder();
+ }
+ });
+
+ picture.setEndElementListener(new EndElementListener() {
+
+ @Override
+ public void end() {
+ if (imageHolder.isSpoiler) {
+ final Geocache cache = caches.get(imageHolder.objectId);
+ if (cache != null) {
+ Image spoiler = new Image(imageHolder.url, imageHolder.title);
+ cache.addSpoiler(spoiler);
+ }
+ }
+ else {
+ final LogEntry log = logs.get(imageHolder.objectId);
+ if (log != null) {
+ log.addLogImage(new Image(imageHolder.url, imageHolder.title));
+ }
+ }
+ }
+ });
+
+ // picture.object
+ picture.getChild("object").setEndTextElementListener(new EndTextElementListener() {
+
+ @Override
+ public void end(String body) {
+ imageHolder.objectId = StringUtils.trim(body);
+ }
+ });
+
+ // picture.title
+ picture.getChild("title").setEndTextElementListener(new EndTextElementListener() {
+
+ @Override
+ public void end(String body) {
+ imageHolder.title = StringUtils.trim(body);
+ }
+ });
+
+ // picture.url
+ picture.getChild("url").setEndTextElementListener(new EndTextElementListener() {
+
+ @Override
+ public void end(String body) {
+ imageHolder.url = StringUtils.trim(body);
+ }
+ });
+
+ // picture.attributes
+ picture.getChild("attributes").setStartElementListener(new StartElementListener() {
+
+ @Override
+ public void start(Attributes attributes) {
+ if (attributes.getIndex("spoiler") > -1) {
+ String spoiler = attributes.getValue("spoiler");
+ imageHolder.isSpoiler = ("1".equals(spoiler));
+ }
+ }
+ });
+
try {
Xml.parse(stream, Xml.Encoding.UTF_8, root.getContentHandler());
return caches.values();
@@ -539,6 +708,9 @@ public class OC11XMLParser {
}
}
+ /**
+ * Converts local links to absolute links targeting the OC website.
+ */
private static String linkify(String input) {
String result = input;
Matcher matcher = LOCAL_URL.matcher(result);
@@ -561,8 +733,8 @@ public class OC11XMLParser {
protected static String stripMarkup(String input) {
if (StringUtils.startsWith(input, PARAGRAPH_BEGIN) && StringUtils.endsWith(input, PARAGRAPH_END)) {
String inner = input.substring(PARAGRAPH_BEGIN.length(), input.length() - PARAGRAPH_END.length());
- if (inner.indexOf(PARAGRAPH_BEGIN) < 0) {
- return inner;
+ if (!inner.contains(PARAGRAPH_BEGIN)) {
+ return inner.trim();
}
}
return input;
diff --git a/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java b/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java
index 74968e7..69cf8a4 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.connector.oc;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.connector.capability.ISearchByGeocode;
import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.utils.CancellableHandler;
@@ -21,14 +21,14 @@ public class OCApiConnector extends OCConnector implements ISearchByGeocode {
}
@Override
- public String getLicenseText(final cgCache cache) {
+ public String getLicenseText(final Geocache cache) {
// NOT TO BE TRANSLATED
return "<a href=\"" + getCacheUrl(cache) + "\">" + getName() + "</a> data licensed under the Creative Commons BY-SA 3.0 License";
}
@Override
public SearchResult searchByGeocode(final String geocode, final String guid, final CancellableHandler handler) {
- final cgCache cache = OkapiClient.getCache(geocode);
+ final Geocache cache = OkapiClient.getCache(geocode);
if (cache == null) {
return null;
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCConnector.java b/main/src/cgeo/geocaching/connector/oc/OCConnector.java
index 24fd7d6..62dfb4c 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCConnector.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCConnector.java
@@ -1,6 +1,7 @@
package cgeo.geocaching.connector.oc;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
+import cgeo.geocaching.ICache;
import cgeo.geocaching.connector.AbstractConnector;
import cgeo.geocaching.enumerations.CacheRealm;
@@ -33,7 +34,7 @@ public class OCConnector extends AbstractConnector {
}
@Override
- public String getCacheUrl(cgCache cache) {
+ public String getCacheUrl(Geocache cache) {
return getCacheUrlPrefix() + cache.getGeocode();
}
@@ -48,6 +49,11 @@ public class OCConnector extends AbstractConnector {
}
@Override
+ public boolean isOwner(final ICache cache) {
+ return false;
+ }
+
+ @Override
protected String getCacheUrlPrefix() {
return "http://" + host + "/viewcache.php?wp=";
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java b/main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java
index 3a2f42e..678654f 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java
@@ -1,8 +1,9 @@
package cgeo.geocaching.connector.oc;
+import cgeo.geocaching.Geocache;
+import cgeo.geocaching.ICache;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.Settings;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.connector.capability.ISearchByCenter;
import cgeo.geocaching.connector.capability.ISearchByGeocode;
import cgeo.geocaching.connector.capability.ISearchByViewPort;
@@ -10,6 +11,8 @@ import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
import cgeo.geocaching.utils.CancellableHandler;
+import org.apache.commons.lang3.StringUtils;
+
public class OCXMLApiConnector extends OCConnector implements ISearchByGeocode, ISearchByCenter, ISearchByViewPort {
private final static double SEARCH_DISTANCE_LIMIT = 15.0;
@@ -21,7 +24,7 @@ public class OCXMLApiConnector extends OCConnector implements ISearchByGeocode,
@Override
public SearchResult searchByGeocode(final String geocode, final String guid, CancellableHandler handler) {
- final cgCache cache = OCXMLClient.getCache(geocode);
+ final Geocache cache = OCXMLClient.getCache(geocode);
if (cache == null) {
return null;
}
@@ -49,4 +52,9 @@ public class OCXMLApiConnector extends OCConnector implements ISearchByGeocode,
return Settings.isOCConnectorActive();
}
+ @Override
+ public boolean isOwner(ICache cache) {
+ return StringUtils.equalsIgnoreCase(cache.getOwnerDisplayName(), Settings.getOCConnectorUserName());
+ }
+
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCXMLClient.java b/main/src/cgeo/geocaching/connector/oc/OCXMLClient.java
index 88ba5a1..6767b48 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCXMLClient.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCXMLClient.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.connector.oc;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.cgData;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.IConnector;
@@ -29,9 +29,9 @@ public class OCXMLClient {
// Url for single cache requests
// http://www.opencaching.de/xml/ocxml11.php?modifiedsince=20060320000000&user=0&cache=1&cachedesc=1&cachelog=1&picture=1&removedobject=0&session=0&doctype=0&charset=utf-8&wp=OCC9BE
- public static cgCache getCache(final String geoCode) {
+ public static Geocache getCache(final String geoCode) {
try {
- final Parameters params = getOCXmlQueryParameters(true, true);
+ final Parameters params = getOCXmlQueryParameters(true, true, true);
params.put("wp", geoCode);
final InputStream data = request(ConnectorFactory.getConnector(geoCode), SERVICE_CACHE, params);
@@ -39,9 +39,9 @@ public class OCXMLClient {
return null;
}
- Collection<cgCache> caches = OC11XMLParser.parseCaches(new GZIPInputStream(data));
+ Collection<Geocache> caches = OC11XMLParser.parseCaches(new GZIPInputStream(data));
if (caches.iterator().hasNext()) {
- cgCache cache = caches.iterator().next();
+ Geocache cache = caches.iterator().next();
cgData.saveCache(cache, LoadFlags.SAVE_ALL);
return cache;
}
@@ -52,9 +52,9 @@ public class OCXMLClient {
}
}
- public static Collection<cgCache> getCachesAround(final Geopoint center, final double distance) {
+ public static Collection<Geocache> getCachesAround(final Geopoint center, final double distance) {
try {
- final Parameters params = getOCXmlQueryParameters(false, false);
+ final Parameters params = getOCXmlQueryParameters(false, false, false);
params.put("lat", GeopointFormatter.format(GeopointFormatter.Format.LAT_DECDEGREE_RAW, center));
params.put("lon", GeopointFormatter.format(GeopointFormatter.Format.LON_DECDEGREE_RAW, center));
params.put("distance", String.format(Locale.US, "%f", distance));
@@ -64,7 +64,7 @@ public class OCXMLClient {
return Collections.emptyList();
}
- return OC11XMLParser.parseCaches(new GZIPInputStream(data));
+ return OC11XMLParser.parseCachesFiltered(new GZIPInputStream(data));
} catch (IOException e) {
Log.e("Error parsing nearby search result", e);
return Collections.emptyList();
@@ -98,11 +98,18 @@ public class OCXMLClient {
return null;
}
- private static Parameters getOCXmlQueryParameters(final boolean withDescription, final boolean withLogs) {
- final Parameters params = new Parameters("modifiedsince", "20060320000000",
- "user", "0", "cache", "1", "cachedesc", withDescription ? "1" : "0",
- "cachelog", withLogs ? "1" : "0", "picture", "0", "removedobject", "0",
- "session", "0", "doctype", "0", "charset", "utf-8", "zip", "gzip");
- return params;
+ private static Parameters getOCXmlQueryParameters(final boolean withDescription, final boolean withLogs, final boolean withImages) {
+ return new Parameters("modifiedsince", "20000101000000",
+ "user", "0",
+ "cache", "1",
+ "cachedesc", withDescription ? "1" : "0",
+ "cachelog", withLogs ? "1" : "0",
+ "picture", withImages ? "1" : "0",
+ "removedobject", "0",
+ "session", "0",
+ "doctype", "0",
+ "charset", "utf-8",
+ "zip", "gzip",
+ "picturefromcachelog", withImages ? "1" : "0");
}
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
index 508d0b5..dbcfea5 100644
--- a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
+++ b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.connector.oc;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.Image;
import cgeo.geocaching.LogEntry;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgData;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.IConnector;
@@ -68,7 +68,7 @@ final public class OkapiClient {
private static final String SERVICE_NEAREST = "/okapi/services/caches/search/nearest";
- public static cgCache getCache(final String geoCode) {
+ public static Geocache getCache(final String geoCode) {
final Parameters params = new Parameters("cache_code", geoCode, "fields", SERVICE_CACHE_FIELDS);
final JSONObject data = request(ConnectorFactory.getConnector(geoCode), SERVICE_CACHE, params);
@@ -79,7 +79,7 @@ final public class OkapiClient {
return parseCache(data);
}
- public static List<cgCache> getCachesAround(final Geopoint center, IConnector connector) {
+ public static List<Geocache> getCachesAround(final Geopoint center, IConnector connector) {
String centerString = GeopointFormatter.format(GeopointFormatter.Format.LAT_DECDEGREE_RAW, center) + "|" + GeopointFormatter.format(GeopointFormatter.Format.LON_DECDEGREE_RAW, center);
final Parameters params = new Parameters("center", centerString);
final JSONObject data = request(connector, SERVICE_NEAREST, params);
@@ -91,7 +91,7 @@ final public class OkapiClient {
return parseCaches(data);
}
- private static List<cgCache> parseCaches(final JSONObject response) {
+ private static List<Geocache> parseCaches(final JSONObject response) {
try {
final JSONArray cachesResponse = response.getJSONArray("results");
if (cachesResponse != null) {
@@ -102,9 +102,9 @@ final public class OkapiClient {
geocodes.add(geocode);
}
}
- List<cgCache> caches = new ArrayList<cgCache>(geocodes.size());
+ List<Geocache> caches = new ArrayList<Geocache>(geocodes.size());
for (String geocode : geocodes) {
- cgCache cache = getCache(geocode);
+ Geocache cache = getCache(geocode);
if (cache != null) {
caches.add(cache);
}
@@ -117,8 +117,8 @@ final public class OkapiClient {
return null;
}
- private static cgCache parseCache(final JSONObject response) {
- final cgCache cache = new cgCache();
+ private static Geocache parseCache(final JSONObject response) {
+ final Geocache cache = new Geocache();
cache.setReliableLatLon(true);
try {
cache.setGeocode(response.getString(CACHE_CODE));
@@ -235,7 +235,7 @@ final public class OkapiClient {
return null;
}
- private static void setLocation(final cgCache cache, final String location) {
+ private static void setLocation(final Geocache cache, final String location) {
final String latitude = StringUtils.substringBefore(location, "|");
final String longitude = StringUtils.substringAfter(location, "|");
cache.setCoords(new Geopoint(latitude, longitude));
diff --git a/main/src/cgeo/geocaching/connector/ox/OXConnector.java b/main/src/cgeo/geocaching/connector/ox/OXConnector.java
index 98b1656..eec07e3 100644
--- a/main/src/cgeo/geocaching/connector/ox/OXConnector.java
+++ b/main/src/cgeo/geocaching/connector/ox/OXConnector.java
@@ -1,8 +1,9 @@
package cgeo.geocaching.connector.ox;
+import cgeo.geocaching.Geocache;
+import cgeo.geocaching.ICache;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.Settings;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.connector.AbstractConnector;
import cgeo.geocaching.connector.capability.ISearchByCenter;
import cgeo.geocaching.connector.capability.ISearchByGeocode;
@@ -26,7 +27,7 @@ public class OXConnector extends AbstractConnector implements ISearchByCenter, I
}
@Override
- public String getCacheUrl(cgCache cache) {
+ public String getCacheUrl(Geocache cache) {
return getCacheUrlPrefix() + cache.getGeocode();
}
@@ -41,14 +42,19 @@ public class OXConnector extends AbstractConnector implements ISearchByCenter, I
}
@Override
- public String getLicenseText(cgCache cache) {
+ public String getLicenseText(Geocache cache) {
// NOT TO BE TRANSLATED
return "<a href=\"" + getCacheUrl(cache) + "\">" + getName() + "</a> data licensed under the Creative Commons BY-SA 3.0 License";
}
@Override
+ public boolean isOwner(final ICache cache) {
+ return false;
+ }
+
+ @Override
public SearchResult searchByGeocode(String geocode, String guid, CancellableHandler handler) {
- final cgCache cache = OpenCachingApi.searchByGeoCode(geocode);
+ final Geocache cache = OpenCachingApi.searchByGeoCode(geocode);
if (cache == null) {
return null;
}
@@ -58,7 +64,7 @@ public class OXConnector extends AbstractConnector implements ISearchByCenter, I
@Override
public SearchResult searchByCenter(Geopoint center) {
- Collection<cgCache> caches = OpenCachingApi.searchByCenter(center);
+ Collection<Geocache> caches = OpenCachingApi.searchByCenter(center);
if (caches == null) {
return null;
}
diff --git a/main/src/cgeo/geocaching/connector/ox/OXGPXParser.java b/main/src/cgeo/geocaching/connector/ox/OXGPXParser.java
index 377785a..f40a3e8 100644
--- a/main/src/cgeo/geocaching/connector/ox/OXGPXParser.java
+++ b/main/src/cgeo/geocaching/connector/ox/OXGPXParser.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.connector.ox;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.files.GPX10Parser;
public class OXGPXParser extends GPX10Parser {
@@ -13,7 +13,7 @@ public class OXGPXParser extends GPX10Parser {
}
@Override
- protected void afterParsing(cgCache cache) {
+ protected void afterParsing(Geocache cache) {
cache.setUpdated(System.currentTimeMillis());
if (isDetailed) {
cache.setDetailedUpdate(cache.getUpdated());
diff --git a/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java b/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java
index 17be540..f25e289 100644
--- a/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java
+++ b/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.connector.ox;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.StoredList;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.GeopointFormatter;
import cgeo.geocaching.network.Network;
@@ -20,25 +20,25 @@ public class OpenCachingApi {
private static final String DEV_KEY = CryptUtils.rot13("PtqQnHo9RUTht3Np");
- public static cgCache searchByGeoCode(final String geocode) {
+ public static Geocache searchByGeoCode(final String geocode) {
final HttpResponse response = Network.getRequest("http://www.opencaching.com/api/geocache/" + geocode + ".gpx",
new Parameters(
"Authorization", DEV_KEY,
"log_limit", "30",
"hint", "true",
"description", "html"));
- final Collection<cgCache> caches = importCachesFromResponse(response, true);
+ final Collection<Geocache> caches = importCachesFromResponse(response, true);
if (CollectionUtils.isNotEmpty(caches)) {
return caches.iterator().next();
}
return null;
}
- private static Collection<cgCache> importCachesFromResponse(final HttpResponse response, final boolean isDetailed) {
+ private static Collection<Geocache> importCachesFromResponse(final HttpResponse response, final boolean isDetailed) {
if (response == null) {
return Collections.emptyList();
}
- Collection<cgCache> caches;
+ Collection<Geocache> caches;
try {
caches = new OXGPXParser(StoredList.STANDARD_LIST_ID, isDetailed).parse(response.getEntity().getContent(), null);
} catch (Exception e) {
@@ -48,7 +48,7 @@ public class OpenCachingApi {
return caches;
}
- public static Collection<cgCache> searchByCenter(final Geopoint center) {
+ public static Collection<Geocache> searchByCenter(final Geopoint center) {
final HttpResponse response = Network.getRequest("http://www.opencaching.com/api/geocache/.gpx",
new Parameters(
"Authorization", DEV_KEY,
diff --git a/main/src/cgeo/geocaching/enumerations/CacheAttribute.java b/main/src/cgeo/geocaching/enumerations/CacheAttribute.java
index 01d76f5..530869f 100644
--- a/main/src/cgeo/geocaching/enumerations/CacheAttribute.java
+++ b/main/src/cgeo/geocaching/enumerations/CacheAttribute.java
@@ -5,124 +5,190 @@ import cgeo.geocaching.cgeoapplication;
import org.apache.commons.lang3.StringUtils;
+import android.util.SparseArray;
+
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
-
public enum CacheAttribute {
- UNKNOWN(0, "unknown", R.drawable.attribute__strikethru, R.string.attribute_unknown_yes, R.string.attribute_unknown_no),
- DOGS(1, "dogs", R.drawable.attribute_dogs, R.string.attribute_dogs_yes, R.string.attribute_dogs_no),
- FEE(2, "fee", R.drawable.attribute_fee, R.string.attribute_fee_yes, R.string.attribute_fee_no),
- RAPPELLING(3, "rappelling", R.drawable.attribute_rappelling, R.string.attribute_rappelling_yes, R.string.attribute_rappelling_no),
- BOAT(4, "boat", R.drawable.attribute_boat, R.string.attribute_boat_yes, R.string.attribute_boat_no),
- SCUBA(5, "scuba", R.drawable.attribute_scuba, R.string.attribute_scuba_yes, R.string.attribute_scuba_no),
- KIDS(6, "kids", R.drawable.attribute_kids, R.string.attribute_kids_yes, R.string.attribute_kids_no),
- ONEHOUR(7, "onehour", R.drawable.attribute_onehour, R.string.attribute_onehour_yes, R.string.attribute_onehour_no),
- SCENIC(8, "scenic", R.drawable.attribute_scenic, R.string.attribute_scenic_yes, R.string.attribute_scenic_no),
- HIKING(9, "hiking", R.drawable.attribute_hiking, R.string.attribute_hiking_yes, R.string.attribute_hiking_no),
- CLIMBING(10, "climbing", R.drawable.attribute_climbing, R.string.attribute_climbing_yes, R.string.attribute_climbing_no),
- WADING(11, "wading", R.drawable.attribute_wading, R.string.attribute_wading_yes, R.string.attribute_wading_no),
- SWIMMING(12, "swimming", R.drawable.attribute_swimming, R.string.attribute_swimming_yes, R.string.attribute_swimming_no),
- AVAILABLE(13, "available", R.drawable.attribute_available, R.string.attribute_available_yes, R.string.attribute_available_no),
- NIGHT(14, "night", R.drawable.attribute_night, R.string.attribute_night_yes, R.string.attribute_night_no),
- WINTER(15, "winter", R.drawable.attribute_winter, R.string.attribute_winter_yes, R.string.attribute_winter_no),
- POISONOAK(17, "poisonoak", R.drawable.attribute_poisonoak, R.string.attribute_poisonoak_yes, R.string.attribute_poisonoak_no),
- DANGEROUSANIMALS(18, "dangerousanimals", R.drawable.attribute_dangerousanimals, R.string.attribute_dangerousanimals_yes, R.string.attribute_dangerousanimals_no),
- TICKS(19, "ticks", R.drawable.attribute_ticks, R.string.attribute_ticks_yes, R.string.attribute_ticks_no),
- MINE(29, "mine", R.drawable.attribute_mine, R.string.attribute_mine_yes, R.string.attribute_mine_no),
- CLIFF(21, "cliff", R.drawable.attribute_cliff, R.string.attribute_cliff_yes, R.string.attribute_cliff_no),
- HUNTING(22, "hunting", R.drawable.attribute_hunting, R.string.attribute_hunting_yes, R.string.attribute_hunting_no),
- DANGER(23, "danger", R.drawable.attribute_danger, R.string.attribute_danger_yes, R.string.attribute_danger_no),
- WHEELCHAIR(24, "wheelchair", R.drawable.attribute_wheelchair, R.string.attribute_wheelchair_yes, R.string.attribute_wheelchair_no),
- PARKING(25, "parking", R.drawable.attribute_parking, R.string.attribute_parking_yes, R.string.attribute_parking_no),
- PUBLIC(26, "public", R.drawable.attribute_public, R.string.attribute_public_yes, R.string.attribute_public_no),
- WATER(27, "water", R.drawable.attribute_water, R.string.attribute_water_yes, R.string.attribute_water_no),
- RESTROOMS(28, "restrooms", R.drawable.attribute_restrooms, R.string.attribute_restrooms_yes, R.string.attribute_restrooms_no),
- PHONE(29, "phone", R.drawable.attribute_phone, R.string.attribute_phone_yes, R.string.attribute_phone_no),
- PICNIC(30, "picnic", R.drawable.attribute_picnic, R.string.attribute_picnic_yes, R.string.attribute_picnic_no),
- CAMPING(31, "camping", R.drawable.attribute_camping, R.string.attribute_camping_yes, R.string.attribute_camping_no),
- BICYCLES(32, "bicycles", R.drawable.attribute_bicycles, R.string.attribute_bicycles_yes, R.string.attribute_bicycles_no),
- MOTORCYCLES(33, "motorcycles", R.drawable.attribute_motorcycles, R.string.attribute_motorcycles_yes, R.string.attribute_motorcycles_no),
- QUADS(34, "quads", R.drawable.attribute_quads, R.string.attribute_quads_yes, R.string.attribute_quads_no),
- JEEPS(35, "jeeps", R.drawable.attribute_jeeps, R.string.attribute_jeeps_yes, R.string.attribute_jeeps_no),
- SNOWMOBILES(36, "snowmobiles", R.drawable.attribute_snowmobiles, R.string.attribute_snowmobiles_yes, R.string.attribute_snowmobiles_no),
- HORSES(37, "horses", R.drawable.attribute_horses, R.string.attribute_horses_yes, R.string.attribute_horses_no),
- CAMPFIRES(38, "campfires", R.drawable.attribute_campfires, R.string.attribute_campfires_yes, R.string.attribute_campfires_no),
- THORN(39, "thorn", R.drawable.attribute_thorn, R.string.attribute_thorn_yes, R.string.attribute_thorn_no),
- STEALTH(40, "stealth", R.drawable.attribute_stealth, R.string.attribute_stealth_yes, R.string.attribute_stealth_no),
- STROLLER(41, "stroller", R.drawable.attribute_stroller, R.string.attribute_stroller_yes, R.string.attribute_stroller_no),
- FIRSTAID(42, "firstaid", R.drawable.attribute_firstaid, R.string.attribute_firstaid_yes, R.string.attribute_firstaid_no),
- COW(43, "cow", R.drawable.attribute_cow, R.string.attribute_cow_yes, R.string.attribute_cow_no),
- FLASHLIGHT(44, "flashlight", R.drawable.attribute_flashlight, R.string.attribute_flashlight_yes, R.string.attribute_flashlight_no),
- LANDF(45, "landf", R.drawable.attribute_landf, R.string.attribute_landf_yes, R.string.attribute_landf_no),
- RV(46, "rv", R.drawable.attribute_rv, R.string.attribute_rv_yes, R.string.attribute_rv_no),
- FIELD_PUZZLE(47, "field_puzzle", R.drawable.attribute_field_puzzle, R.string.attribute_field_puzzle_yes, R.string.attribute_field_puzzle_no),
- UV(48, "uv", R.drawable.attribute_uv, R.string.attribute_uv_yes, R.string.attribute_uv_no),
- SNOWSHOES(49, "snowshoes", R.drawable.attribute_snowshoes, R.string.attribute_snowshoes_yes, R.string.attribute_snowshoes_no),
- SKIIS(50, "skiis", R.drawable.attribute_skiis, R.string.attribute_skiis_yes, R.string.attribute_skiis_no),
- SPECIAL_TOOLS(51, "s_tool", R.drawable.attribute_s_tool, R.string.attribute_s_tool_yes, R.string.attribute_s_tool_no),
- NIGHTCACHE(52, "nightcache", R.drawable.attribute_nightcache, R.string.attribute_nightcache_yes, R.string.attribute_nightcache_no),
- PARKNGRAB(53, "parkngrab", R.drawable.attribute_parkngrab, R.string.attribute_parkngrab_yes, R.string.attribute_parkngrab_no),
- ABANDONED_BUILDING(54, "abandonedbuilding", R.drawable.attribute_abandonedbuilding, R.string.attribute_abandonedbuilding_yes, R.string.attribute_abandonedbuilding_no),
- HIKE_SHORT(55, "hike_short", R.drawable.attribute_hike_short, R.string.attribute_hike_short_yes, R.string.attribute_hike_short_no),
- HIKE_MED(56, "hike_med", R.drawable.attribute_hike_med, R.string.attribute_hike_med_yes, R.string.attribute_hike_med_no),
- HIKE_LONG(57, "hike_long", R.drawable.attribute_hike_long, R.string.attribute_hike_long_yes, R.string.attribute_hike_long_no),
- FUEL(58, "fuel", R.drawable.attribute_fuel, R.string.attribute_fuel_yes, R.string.attribute_fuel_no),
- FOOD(59, "food", R.drawable.attribute_food, R.string.attribute_food_yes, R.string.attribute_food_no),
- WIRELESS_BEACON(60, "wirelessbeacon", R.drawable.attribute_wirelessbeacon, R.string.attribute_wirelessbeacon_yes, R.string.attribute_wirelessbeacon_no),
- PARTNERSHIP(61, "partnership", R.drawable.attribute_partnership, R.string.attribute_partnership_yes, R.string.attribute_partnership_no),
- SEASONAL(62, "seasonal", R.drawable.attribute_seasonal, R.string.attribute_seasonal_yes, R.string.attribute_seasonal_no),
- TOURIST_OK(63, "touristok", R.drawable.attribute_touristok, R.string.attribute_touristok_yes, R.string.attribute_touristok_no),
- TREECLIMBING(64, "treeclimbing", R.drawable.attribute_treeclimbing, R.string.attribute_treeclimbing_yes, R.string.attribute_treeclimbing_no),
- FRONTYARD(65, "frontyard", R.drawable.attribute_frontyard, R.string.attribute_frontyard_yes, R.string.attribute_frontyard_no),
- TEAMWORK(66, "teamwork", R.drawable.attribute_teamwork, R.string.attribute_teamwork_yes, R.string.attribute_teamwork_no);
-
- private static final String INTERNAL_PRE = "attribute_";
+ // THIS LIST IS GENERATED: don't change anything here but in
+ // project/attributes/makeEnum.sh
+ DOGS(1, -1, "dogs", R.drawable.attribute_dogs, R.string.attribute_dogs_yes, R.string.attribute_dogs_no),
+ BICYCLES(32, -1, "bicycles", R.drawable.attribute_bicycles, R.string.attribute_bicycles_yes, R.string.attribute_bicycles_no),
+ MOTORCYCLES(33, -1, "motorcycles", R.drawable.attribute_motorcycles, R.string.attribute_motorcycles_yes, R.string.attribute_motorcycles_no),
+ QUADS(34, -1, "quads", R.drawable.attribute_quads, R.string.attribute_quads_yes, R.string.attribute_quads_no),
+ JEEPS(35, -1, "jeeps", R.drawable.attribute_jeeps, R.string.attribute_jeeps_yes, R.string.attribute_jeeps_no),
+ SNOWMOBILES(36, -1, "snowmobiles", R.drawable.attribute_snowmobiles, R.string.attribute_snowmobiles_yes, R.string.attribute_snowmobiles_no),
+ HORSES(37, -1, "horses", R.drawable.attribute_horses, R.string.attribute_horses_yes, R.string.attribute_horses_no),
+ CAMPFIRES(38, -1, "campfires", R.drawable.attribute_campfires, R.string.attribute_campfires_yes, R.string.attribute_campfires_no),
+ RV(46, -1, "rv", R.drawable.attribute_rv, R.string.attribute_rv_yes, R.string.attribute_rv_no),
+ KIDS(6, 59, "kids", R.drawable.attribute_kids, R.string.attribute_kids_yes, R.string.attribute_kids_no),
+ ONEHOUR(7, -1, "onehour", R.drawable.attribute_onehour, R.string.attribute_onehour_yes, R.string.attribute_onehour_no),
+ SCENIC(8, -1, "scenic", R.drawable.attribute_scenic, R.string.attribute_scenic_yes, R.string.attribute_scenic_no),
+ HIKING(9, 25, "hiking", R.drawable.attribute_hiking, R.string.attribute_hiking_yes, R.string.attribute_hiking_no),
+ CLIMBING(10, 28, "climbing", R.drawable.attribute_climbing, R.string.attribute_climbing_yes, R.string.attribute_climbing_no),
+ WADING(11, -1, "wading", R.drawable.attribute_wading, R.string.attribute_wading_yes, R.string.attribute_wading_no),
+ SWIMMING(12, 29, "swimming", R.drawable.attribute_swimming, R.string.attribute_swimming_yes, R.string.attribute_swimming_no),
+ AVAILABLE(13, 38, "available", R.drawable.attribute_available, R.string.attribute_available_yes, R.string.attribute_available_no),
+ NIGHT(14, -1, "night", R.drawable.attribute_night, R.string.attribute_night_yes, R.string.attribute_night_no),
+ WINTER(15, -1, "winter", R.drawable.attribute_winter, R.string.attribute_winter_yes, R.string.attribute_winter_no),
+ STEALTH(40, -1, "stealth", R.drawable.attribute_stealth, R.string.attribute_stealth_yes, R.string.attribute_stealth_no),
+ FIRSTAID(42, -1, "firstaid", R.drawable.attribute_firstaid, R.string.attribute_firstaid_yes, R.string.attribute_firstaid_no),
+ COW(43, -1, "cow", R.drawable.attribute_cow, R.string.attribute_cow_yes, R.string.attribute_cow_no),
+ FIELD_PUZZLE(47, -1, "field_puzzle", R.drawable.attribute_field_puzzle, R.string.attribute_field_puzzle_yes, R.string.attribute_field_puzzle_no),
+ NIGHTCACHE(52, 1, "nightcache", R.drawable.attribute_nightcache, R.string.attribute_nightcache_yes, R.string.attribute_nightcache_no),
+ PARKNGRAB(53, 24, "parkngrab", R.drawable.attribute_parkngrab, R.string.attribute_parkngrab_yes, R.string.attribute_parkngrab_no),
+ ABANDONEDBUILDING(54, -1, "abandonedbuilding", R.drawable.attribute_abandonedbuilding, R.string.attribute_abandonedbuilding_yes, R.string.attribute_abandonedbuilding_no),
+ HIKE_SHORT(55, -1, "hike_short", R.drawable.attribute_hike_short, R.string.attribute_hike_short_yes, R.string.attribute_hike_short_no),
+ HIKE_MED(56, -1, "hike_med", R.drawable.attribute_hike_med, R.string.attribute_hike_med_yes, R.string.attribute_hike_med_no),
+ HIKE_LONG(57, -1, "hike_long", R.drawable.attribute_hike_long, R.string.attribute_hike_long_yes, R.string.attribute_hike_long_no),
+ SEASONAL(62, 60, "seasonal", R.drawable.attribute_seasonal, R.string.attribute_seasonal_yes, R.string.attribute_seasonal_no),
+ TOURISTOK(63, -1, "touristok", R.drawable.attribute_touristok, R.string.attribute_touristok_yes, R.string.attribute_touristok_no),
+ FRONTYARD(65, -1, "frontyard", R.drawable.attribute_frontyard, R.string.attribute_frontyard_yes, R.string.attribute_frontyard_no),
+ TEAMWORK(66, -1, "teamwork", R.drawable.attribute_teamwork, R.string.attribute_teamwork_yes, R.string.attribute_teamwork_no),
+ LANDF(45, -1, "landf", R.drawable.attribute_landf, R.string.attribute_landf_yes, R.string.attribute_landf_no),
+ PARTNERSHIP(61, -1, "partnership", R.drawable.attribute_partnership, R.string.attribute_partnership_yes, R.string.attribute_partnership_no),
+ FEE(2, 36, "fee", R.drawable.attribute_fee, R.string.attribute_fee_yes, R.string.attribute_fee_no),
+ RAPPELLING(3, 49, "rappelling", R.drawable.attribute_rappelling, R.string.attribute_rappelling_yes, R.string.attribute_rappelling_no),
+ BOAT(4, 52, "boat", R.drawable.attribute_boat, R.string.attribute_boat_yes, R.string.attribute_boat_no),
+ SCUBA(5, 51, "scuba", R.drawable.attribute_scuba, R.string.attribute_scuba_yes, R.string.attribute_scuba_no),
+ FLASHLIGHT(44, 48, "flashlight", R.drawable.attribute_flashlight, R.string.attribute_flashlight_yes, R.string.attribute_flashlight_no),
+ UV(48, -1, "uv", R.drawable.attribute_uv, R.string.attribute_uv_yes, R.string.attribute_uv_no),
+ SNOWSHOES(49, -1, "snowshoes", R.drawable.attribute_snowshoes, R.string.attribute_snowshoes_yes, R.string.attribute_snowshoes_no),
+ SKIIS(50, -1, "skiis", R.drawable.attribute_skiis, R.string.attribute_skiis_yes, R.string.attribute_skiis_no),
+ S_TOOL(51, 46, "s_tool", R.drawable.attribute_s_tool, R.string.attribute_s_tool_yes, R.string.attribute_s_tool_no),
+ WIRELESSBEACON(60, -1, "wirelessbeacon", R.drawable.attribute_wirelessbeacon, R.string.attribute_wirelessbeacon_yes, R.string.attribute_wirelessbeacon_no),
+ TREECLIMBING(64, -1, "treeclimbing", R.drawable.attribute_treeclimbing, R.string.attribute_treeclimbing_yes, R.string.attribute_treeclimbing_no),
+ POISONOAK(17, 16, "poisonoak", R.drawable.attribute_poisonoak, R.string.attribute_poisonoak_yes, R.string.attribute_poisonoak_no),
+ DANGEROUSANIMALS(18, 17, "dangerousanimals", R.drawable.attribute_dangerousanimals, R.string.attribute_dangerousanimals_yes, R.string.attribute_dangerousanimals_no),
+ TICKS(19, 14, "ticks", R.drawable.attribute_ticks, R.string.attribute_ticks_yes, R.string.attribute_ticks_no),
+ MINE(20, 15, "mine", R.drawable.attribute_mine, R.string.attribute_mine_yes, R.string.attribute_mine_no),
+ CLIFF(21, 11, "cliff", R.drawable.attribute_cliff, R.string.attribute_cliff_yes, R.string.attribute_cliff_no),
+ HUNTING(22, 12, "hunting", R.drawable.attribute_hunting, R.string.attribute_hunting_yes, R.string.attribute_hunting_no),
+ DANGER(23, 9, "danger", R.drawable.attribute_danger, R.string.attribute_danger_yes, R.string.attribute_danger_no),
+ THORN(39, 13, "thorn", R.drawable.attribute_thorn, R.string.attribute_thorn_yes, R.string.attribute_thorn_no),
+ WHEELCHAIR(24, -1, "wheelchair", R.drawable.attribute_wheelchair, R.string.attribute_wheelchair_yes, R.string.attribute_wheelchair_no),
+ PARKING(25, 18, "parking", R.drawable.attribute_parking, R.string.attribute_parking_yes, R.string.attribute_parking_no),
+ PUBLIC(26, 19, "public", R.drawable.attribute_public, R.string.attribute_public_yes, R.string.attribute_public_no),
+ WATER(27, 20, "water", R.drawable.attribute_water, R.string.attribute_water_yes, R.string.attribute_water_no),
+ RESTROOMS(28, 21, "restrooms", R.drawable.attribute_restrooms, R.string.attribute_restrooms_yes, R.string.attribute_restrooms_no),
+ PHONE(29, 22, "phone", R.drawable.attribute_phone, R.string.attribute_phone_yes, R.string.attribute_phone_no),
+ PICNIC(30, -1, "picnic", R.drawable.attribute_picnic, R.string.attribute_picnic_yes, R.string.attribute_picnic_no),
+ CAMPING(31, -1, "camping", R.drawable.attribute_camping, R.string.attribute_camping_yes, R.string.attribute_camping_no),
+ STROLLER(41, -1, "stroller", R.drawable.attribute_stroller, R.string.attribute_stroller_yes, R.string.attribute_stroller_no),
+ FUEL(58, -1, "fuel", R.drawable.attribute_fuel, R.string.attribute_fuel_yes, R.string.attribute_fuel_no),
+ FOOD(59, -1, "food", R.drawable.attribute_food, R.string.attribute_food_yes, R.string.attribute_food_no),
+ OC_ONLY(-1, 6, "oc_only", R.drawable.attribute_oc_only, R.string.attribute_oc_only_yes, R.string.attribute_oc_only_no),
+ LINK_ONLY(-1, 7, "link_only", R.drawable.attribute_link_only, R.string.attribute_link_only_yes, R.string.attribute_link_only_no),
+ LETTERBOX(-1, 8, "letterbox", R.drawable.attribute_letterbox, R.string.attribute_letterbox_yes, R.string.attribute_letterbox_no),
+ RAILWAY(-1, 10, "railway", R.drawable.attribute_railway, R.string.attribute_railway_yes, R.string.attribute_railway_no),
+ SYRINGE(-1, 23, "syringe", R.drawable.attribute_syringe, R.string.attribute_syringe_yes, R.string.attribute_syringe_no),
+ SWAMP(-1, 26, "swamp", R.drawable.attribute_swamp, R.string.attribute_swamp_yes, R.string.attribute_swamp_no),
+ HILLS(-1, 27, "hills", R.drawable.attribute_hills, R.string.attribute_hills_yes, R.string.attribute_hills_no),
+ POI(-1, 30, "poi", R.drawable.attribute_poi, R.string.attribute_poi_yes, R.string.attribute_poi_no),
+ MOVING_TARGET(-1, 31, "moving_target", R.drawable.attribute_moving_target, R.string.attribute_moving_target_yes, R.string.attribute_moving_target_no),
+ WEBCAM(-1, 32, "webcam", R.drawable.attribute_webcam, R.string.attribute_webcam_yes, R.string.attribute_webcam_no),
+ INSIDE(-1, 33, "inside", R.drawable.attribute_inside, R.string.attribute_inside_yes, R.string.attribute_inside_no),
+ IN_WATER(-1, 34, "in_water", R.drawable.attribute_in_water, R.string.attribute_in_water_yes, R.string.attribute_in_water_no),
+ NO_GPS(-1, 35, "no_gps", R.drawable.attribute_no_gps, R.string.attribute_no_gps_yes, R.string.attribute_no_gps_no),
+ OVERNIGHT(-1, 37, "overnight", R.drawable.attribute_overnight, R.string.attribute_overnight_yes, R.string.attribute_overnight_no),
+ SPECIFIC_TIMES(-1, 39, "specific_times", R.drawable.attribute_specific_times, R.string.attribute_specific_times_yes, R.string.attribute_specific_times_no),
+ DAY(-1, 40, "day", R.drawable.attribute_day, R.string.attribute_day_yes, R.string.attribute_day_no),
+ TIDE(-1, 41, "tide", R.drawable.attribute_tide, R.string.attribute_tide_yes, R.string.attribute_tide_no),
+ ALL_SEASONS(-1, 42, "all_seasons", R.drawable.attribute_all_seasons, R.string.attribute_all_seasons_yes, R.string.attribute_all_seasons_no),
+ BREEDING(-1, 43, "breeding", R.drawable.attribute_breeding, R.string.attribute_breeding_yes, R.string.attribute_breeding_no),
+ SNOW_PROOF(-1, 44, "snow_proof", R.drawable.attribute_snow_proof, R.string.attribute_snow_proof_yes, R.string.attribute_snow_proof_no),
+ COMPASS(-1, 47, "compass", R.drawable.attribute_compass, R.string.attribute_compass_yes, R.string.attribute_compass_no),
+ CAVE(-1, 50, "cave", R.drawable.attribute_cave, R.string.attribute_cave_yes, R.string.attribute_cave_no),
+ AIRCRAFT(-1, 53, "aircraft", R.drawable.attribute_aircraft, R.string.attribute_aircraft_yes, R.string.attribute_aircraft_no),
+ INVESTIGATION(-1, 54, "investigation", R.drawable.attribute_investigation, R.string.attribute_investigation_yes, R.string.attribute_investigation_no),
+ PUZZLE(-1, 55, "puzzle", R.drawable.attribute_puzzle, R.string.attribute_puzzle_yes, R.string.attribute_puzzle_no),
+ ARITHMETIC(-1, 56, "arithmetic", R.drawable.attribute_arithmetic, R.string.attribute_arithmetic_yes, R.string.attribute_arithmetic_no),
+ OTHER_CACHE(-1, 57, "other_cache", R.drawable.attribute_other_cache, R.string.attribute_other_cache_yes, R.string.attribute_other_cache_no),
+ ASK_OWNER(-1, 58, "ask_owner", R.drawable.attribute_ask_owner, R.string.attribute_ask_owner_yes, R.string.attribute_ask_owner_no),
+ UNKNOWN(-1, -1, "unknown", R.drawable.attribute_unknown, R.string.attribute_unknown_yes, R.string.attribute_unknown_no);
+ // THIS LIST IS GENERATED: don't change anything here but in
+ // project/attributes/makeEnum.sh
+
private static final String INTERNAL_YES = "_yes";
private static final String INTERNAL_NO = "_no";
- public final int id;
- public final String gcRawName;
+ public static final int NO_ID = -1;
+
+ public final int gcid;
+ public final int ocid;
+ public final String rawName;
public final int drawableId;
public final int stringIdYes;
public final int stringIdNo;
- CacheAttribute(final int id, final String gcRawName, final int drawableId, final int stringIdYes, final int stringIdNo) {
- this.id = id;
- this.gcRawName = gcRawName;
+ CacheAttribute(final int gcid, final int ocid, final String rawName,
+ final int drawableId, final int stringIdYes, final int stringIdNo) {
+ this.gcid = gcid;
+ this.ocid = ocid;
+ this.rawName = rawName;
this.drawableId = drawableId;
this.stringIdYes = stringIdYes;
this.stringIdNo = stringIdNo;
}
+ /**
+ * get localized text
+ *
+ * @param enabled
+ * true: for positive text, false: for negative text
+ * @return the localized text
+ */
public String getL10n(final boolean enabled) {
- return cgeoapplication.getInstance().getResources().getString(enabled ? stringIdYes : stringIdNo);
+ return cgeoapplication.getInstance().getResources().getString(
+ enabled ? stringIdYes : stringIdNo);
}
private final static Map<String, CacheAttribute> FIND_BY_GCRAWNAME;
-
static {
final HashMap<String, CacheAttribute> mapGcRawNames = new HashMap<String, CacheAttribute>();
for (CacheAttribute attr : values()) {
- mapGcRawNames.put(attr.gcRawName, attr);
+ mapGcRawNames.put(attr.rawName, attr);
}
FIND_BY_GCRAWNAME = Collections.unmodifiableMap(mapGcRawNames);
}
- public static CacheAttribute getByGcRawName(final String gcRawName) {
- final CacheAttribute result = gcRawName != null ? FIND_BY_GCRAWNAME.get(gcRawName) : null;
- if (result == null) {
- return UNKNOWN;
+ private final static SparseArray<CacheAttribute> FIND_BY_GCID = new SparseArray<CacheAttribute>();
+ static {
+ for (CacheAttribute attr : values()) {
+ if (attr.gcid != NO_ID) {
+ FIND_BY_GCID.put(attr.gcid, attr);
+ }
+ }
+ }
+
+ private final static SparseArray<CacheAttribute> FIND_BY_OCID = new SparseArray<CacheAttribute>();
+ static {
+ for (CacheAttribute attr : values()) {
+ if (attr.ocid != NO_ID) {
+ FIND_BY_OCID.put(attr.ocid, attr);
+ }
}
- return result;
+ }
+
+ public static CacheAttribute getByRawName(final String rawName) {
+ return rawName != null ? FIND_BY_GCRAWNAME.get(rawName) : null;
+ }
+
+ public static CacheAttribute getByGcId(final int gcid) {
+ return FIND_BY_GCID.get(gcid);
+ }
+
+ public static CacheAttribute getByOcId(final int ocid) {
+ return FIND_BY_OCID.get(ocid);
}
public static String trimAttributeName(String attributeName) {
if (null == attributeName) {
return "";
}
- return attributeName.replace(INTERNAL_PRE, "").replace(INTERNAL_YES, "").replace(INTERNAL_NO, "").trim();
+ return attributeName.replace(INTERNAL_YES, "").replace(INTERNAL_NO, "").trim();
}
public static boolean isEnabled(final String attributeName) {
@@ -130,6 +196,6 @@ public enum CacheAttribute {
}
public String getAttributeName(final boolean yes) {
- return gcRawName + (yes ? INTERNAL_YES : INTERNAL_NO);
+ return rawName + (yes ? INTERNAL_YES : INTERNAL_NO);
}
}
diff --git a/main/src/cgeo/geocaching/enumerations/CacheType.java b/main/src/cgeo/geocaching/enumerations/CacheType.java
index 88bded2..528d3fa 100644
--- a/main/src/cgeo/geocaching/enumerations/CacheType.java
+++ b/main/src/cgeo/geocaching/enumerations/CacheType.java
@@ -1,5 +1,6 @@
package cgeo.geocaching.enumerations;
+import cgeo.geocaching.ICache;
import cgeo.geocaching.R;
import cgeo.geocaching.cgeoapplication;
@@ -94,4 +95,20 @@ public enum CacheType {
public String toString() {
return getL10n();
}
+
+ /**
+ * Whether this type contains the given cache.
+ *
+ * @param cache
+ * @return true if this is the ALL type or if this type equals the type of the cache.
+ */
+ public boolean contains(ICache cache) {
+ if (cache == null) {
+ return false;
+ }
+ if (this == ALL) {
+ return true;
+ }
+ return cache.getType() == this;
+ }
}
diff --git a/main/src/cgeo/geocaching/enumerations/StatusCode.java b/main/src/cgeo/geocaching/enumerations/StatusCode.java
index 1a1f05d..dc62225 100644
--- a/main/src/cgeo/geocaching/enumerations/StatusCode.java
+++ b/main/src/cgeo/geocaching/enumerations/StatusCode.java
@@ -16,6 +16,7 @@ public enum StatusCode {
COMMUNICATION_ERROR(R.string.err_comm),
WRONG_LOGIN_DATA(R.string.err_wrong),
UNAPPROVED_LICENSE(R.string.err_license),
+ UNVALIDATED_ACCOUNT(R.string.err_unvalidated_account),
UNPUBLISHED_CACHE(R.string.err_unpublished),
PREMIUM_ONLY(R.string.err_premium_only),
MAINTENANCE(R.string.err_maintenance),
diff --git a/main/src/cgeo/geocaching/export/Export.java b/main/src/cgeo/geocaching/export/Export.java
index 7a2b075..a1a873f 100644
--- a/main/src/cgeo/geocaching/export/Export.java
+++ b/main/src/cgeo/geocaching/export/Export.java
@@ -1,24 +1,24 @@
package cgeo.geocaching.export;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import android.app.Activity;
import java.util.List;
/**
- * Represents an exporter to export a {@link List} of {@link cgCache} to various formats.
+ * Represents an exporter to export a {@link List} of {@link cgeo.geocaching.Geocache} to various formats.
*/
interface Export {
/**
- * Export a {@link List} of {@link cgCache} to various formats.
+ * Export a {@link List} of {@link cgeo.geocaching.Geocache} to various formats.
*
* @param caches
- * The {@link List} of {@link cgCache} to be exported
+ * The {@link List} of {@link cgeo.geocaching.Geocache} to be exported
* @param activity
* optional: Some exporters might have an UI which requires an {@link Activity}
*/
- public void export(List<cgCache> caches, Activity activity);
+ public void export(List<Geocache> caches, Activity activity);
/**
* Get the localized name of this exporter.
diff --git a/main/src/cgeo/geocaching/export/ExportFactory.java b/main/src/cgeo/geocaching/export/ExportFactory.java
index d32a751..a3ecb0c 100644
--- a/main/src/cgeo/geocaching/export/ExportFactory.java
+++ b/main/src/cgeo/geocaching/export/ExportFactory.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.export;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.utils.Log;
import android.app.Activity;
@@ -34,11 +34,11 @@ public abstract class ExportFactory {
* Creates a dialog so that the user can select an exporter.
*
* @param caches
- * The {@link List} of {@link cgCache} to be exported
+ * The {@link List} of {@link cgeo.geocaching.Geocache} to be exported
* @param activity
* The {@link Activity} in whose context the dialog should be shown
*/
- public static void showExportMenu(final List<cgCache> caches, final Activity activity) {
+ public static void showExportMenu(final List<Geocache> caches, final Activity activity) {
final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(R.string.export).setIcon(R.drawable.ic_menu_share);
diff --git a/main/src/cgeo/geocaching/export/FieldnoteExport.java b/main/src/cgeo/geocaching/export/FieldnoteExport.java
index de78c22..5e1805a 100644
--- a/main/src/cgeo/geocaching/export/FieldnoteExport.java
+++ b/main/src/cgeo/geocaching/export/FieldnoteExport.java
@@ -1,11 +1,11 @@
package cgeo.geocaching.export;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
+import cgeo.geocaching.cgData;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.activity.Progress;
-import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgData;
import cgeo.geocaching.connector.gc.Login;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.network.Network;
@@ -18,8 +18,11 @@ import org.apache.commons.lang3.StringUtils;
import android.app.Activity;
import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Environment;
+import android.view.ContextThemeWrapper;
import android.view.View;
import android.widget.CheckBox;
@@ -53,57 +56,54 @@ class FieldnoteExport extends AbstractExport {
super(getString(R.string.export_fieldnotes));
}
- /**
- * A dialog to allow the user to set options for the export.
- *
- * Currently available options are: upload field notes, only new logs since last export/upload
- */
- private class ExportOptionsDialog extends AlertDialog {
- public ExportOptionsDialog(final List<cgCache> caches, final Activity activity) {
- super(activity);
-
- View layout = activity.getLayoutInflater().inflate(R.layout.fieldnote_export_dialog, null);
- setView(layout);
-
- final CheckBox uploadOption = (CheckBox) layout.findViewById(R.id.upload);
- final CheckBox onlyNewOption = (CheckBox) layout.findViewById(R.id.onlynew);
-
- uploadOption.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- onlyNewOption.setEnabled(uploadOption.isChecked());
- }
- });
-
- layout.findViewById(R.id.export).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- dismiss();
- new ExportTask(
- caches,
- activity,
- uploadOption.isChecked(),
- onlyNewOption.isChecked())
- .execute((Void) null);
- }
- });
- }
- }
-
@Override
- public void export(final List<cgCache> caches, final Activity activity) {
+ public void export(final List<Geocache> caches, final Activity activity) {
if (null == activity) {
// No activity given, so no user interaction possible.
// Start export with default parameters.
new ExportTask(caches, null, false, false).execute((Void) null);
} else {
// Show configuration dialog
- new ExportOptionsDialog(caches, activity).show();
+ getExportOptionsDialog(caches, activity).show();
}
}
+ private Dialog getExportOptionsDialog(final List<Geocache> caches, final Activity activity) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+
+ // AlertDialog has always dark style, so we have to apply it as well always
+ View layout = View.inflate(new ContextThemeWrapper(activity, R.style.dark), R.layout.fieldnote_export_dialog, null);
+ builder.setView(layout);
+
+ final CheckBox uploadOption = (CheckBox) layout.findViewById(R.id.upload);
+ final CheckBox onlyNewOption = (CheckBox) layout.findViewById(R.id.onlynew);
+
+ uploadOption.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ onlyNewOption.setEnabled(uploadOption.isChecked());
+ }
+ });
+
+ builder.setPositiveButton(R.string.export, new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ new ExportTask(
+ caches,
+ activity,
+ uploadOption.isChecked(),
+ onlyNewOption.isChecked())
+ .execute((Void) null);
+ }
+ });
+
+ return builder.create();
+ }
+
private class ExportTask extends AsyncTask<Void, Integer, Boolean> {
- private final List<cgCache> caches;
+ private final List<Geocache> caches;
private final Activity activity;
private final boolean upload;
private final boolean onlyNew;
@@ -116,7 +116,7 @@ class FieldnoteExport extends AbstractExport {
* Instantiates and configurates the task for exporting field notes.
*
* @param caches
- * The {@link List} of {@link cgCache} to be exported
+ * The {@link List} of {@link cgeo.geocaching.Geocache} to be exported
* @param activity
* optional: Show a progress bar and toasts
* @param upload
@@ -124,7 +124,7 @@ class FieldnoteExport extends AbstractExport {
* @param onlyNew
* Upload/export only new logs since last export
*/
- public ExportTask(final List<cgCache> caches, final Activity activity, final boolean upload, final boolean onlyNew) {
+ public ExportTask(final List<Geocache> caches, final Activity activity, final boolean upload, final boolean onlyNew) {
this.caches = caches;
this.activity = activity;
this.upload = upload;
@@ -143,7 +143,7 @@ class FieldnoteExport extends AbstractExport {
final StringBuilder fieldNoteBuffer = new StringBuilder();
try {
int i = 0;
- for (cgCache cache : caches) {
+ for (Geocache cache : caches) {
if (cache.isLogOffline()) {
appendFieldNote(fieldNoteBuffer, cache, cgData.loadLogOffline(cache.getGeocode()));
publishProgress(++i);
@@ -259,7 +259,7 @@ class FieldnoteExport extends AbstractExport {
}
}
- static void appendFieldNote(final StringBuilder fieldNoteBuffer, final cgCache cache, final LogEntry log) {
+ static void appendFieldNote(final StringBuilder fieldNoteBuffer, final Geocache cache, final LogEntry log) {
fieldNoteBuffer.append(cache.getGeocode())
.append(',')
.append(fieldNoteDateFormat.format(new Date(log.date)))
diff --git a/main/src/cgeo/geocaching/export/GpxExport.java b/main/src/cgeo/geocaching/export/GpxExport.java
index 9f6642f..74ee072 100644
--- a/main/src/cgeo/geocaching/export/GpxExport.java
+++ b/main/src/cgeo/geocaching/export/GpxExport.java
@@ -1,10 +1,10 @@
package cgeo.geocaching.export;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgData;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.activity.Progress;
@@ -13,26 +13,29 @@ import cgeo.geocaching.enumerations.LoadFlags;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.utils.BaseUtils;
import cgeo.geocaching.utils.Log;
+import cgeo.geocaching.utils.XmlUtils;
-import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
+import org.xmlpull.v1.XmlSerializer;
import android.app.Activity;
import android.app.AlertDialog;
+import android.app.Dialog;
import android.app.ProgressDialog;
+import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Environment;
+import android.util.Xml;
+import android.view.ContextThemeWrapper;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
-import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
-import java.io.Writer;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
@@ -41,13 +44,16 @@ import java.util.Locale;
class GpxExport extends AbstractExport {
private static final SimpleDateFormat dateFormatZ = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
+ public static final String PREFIX_XSI = "http://www.w3.org/2001/XMLSchema-instance";
+ public static final String PREFIX_GPX = "http://www.topografix.com/GPX/1/0";
+ public static final String PREFIX_GROUNDSPEAK = "http://www.groundspeak.com/cache/1/0";
protected GpxExport() {
super(getString(R.string.export_gpx));
}
@Override
- public void export(final List<cgCache> caches, final Activity activity) {
+ public void export(final List<Geocache> caches, final Activity activity) {
if (null == activity) {
// No activity given, so no user interaction possible.
// Start export with default parameters.
@@ -55,62 +61,57 @@ class GpxExport extends AbstractExport {
} else {
// Show configuration dialog
- new ExportOptionsDialog(caches, activity).show();
+ getExportDialog(caches, activity).show();
}
}
- /**
- * A dialog to allow the user to set options for the export.
- *
- * Currently available option is: opening of share menu after successful export
- */
- private class ExportOptionsDialog extends AlertDialog {
- public ExportOptionsDialog(final List<cgCache> caches, final Activity activity) {
- super(activity);
+ private Dialog getExportDialog(final List<Geocache> caches, final Activity activity) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(activity);
- View layout = activity.getLayoutInflater().inflate(R.layout.gpx_export_dialog, null);
- setView(layout);
+ // AlertDialog has always dark style, so we have to apply it as well always
+ View layout = View.inflate(new ContextThemeWrapper(activity, R.style.dark), R.layout.gpx_export_dialog, null);
+ builder.setView(layout);
- final TextView text = (TextView) layout.findViewById(R.id.info);
- text.setText(getString(R.string.export_gpx_info, Settings.getGpxExportDir()));
+ final TextView text = (TextView) layout.findViewById(R.id.info);
+ text.setText(getString(R.string.export_gpx_info, Settings.getGpxExportDir()));
- final CheckBox shareOption = (CheckBox) layout.findViewById(R.id.share);
+ final CheckBox shareOption = (CheckBox) layout.findViewById(R.id.share);
- shareOption.setChecked(Settings.getShareAfterExport());
+ shareOption.setChecked(Settings.getShareAfterExport());
- shareOption.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Settings.setShareAfterExport(shareOption.isChecked());
- }
- });
+ shareOption.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Settings.setShareAfterExport(shareOption.isChecked());
+ }
+ });
- layout.findViewById(R.id.export).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- dismiss();
- new ExportTask(caches, activity).execute((Void) null);
- }
- });
- }
+ builder.setPositiveButton(R.string.export, new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ new ExportTask(caches, activity).execute((Void) null);
+ }
+ });
+
+ return builder.create();
}
- private class ExportTask extends AsyncTask<Void, Integer, Boolean> {
- private final List<cgCache> caches;
+ private class ExportTask extends AsyncTask<Void, Integer, File> {
+ private final List<Geocache> caches;
private final Activity activity;
private final Progress progress = new Progress();
- private File exportFile;
- private Writer gpx;
/**
* Instantiates and configures the task for exporting field notes.
*
* @param caches
- * The {@link List} of {@link cgCache} to be exported
+ * The {@link List} of {@link cgeo.geocaching.Geocache} to be exported
* @param activity
* optional: Show a progress bar and toasts
*/
- public ExportTask(final List<cgCache> caches, final Activity activity) {
+ public ExportTask(final List<Geocache> caches, final Activity activity) {
this.caches = caches;
this.activity = activity;
}
@@ -124,164 +125,118 @@ class GpxExport extends AbstractExport {
}
@Override
- protected Boolean doInBackground(Void... params) {
+ protected File doInBackground(Void... params) {
// quick check for being able to write the GPX file
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
- return false;
+ return null;
}
+ final SimpleDateFormat fileNameDateFormat = new SimpleDateFormat("yyyyMMddHHmmss", Locale.US);
+ final File exportFile = new File(Settings.getGpxExportDir() + File.separatorChar + "export_" + fileNameDateFormat.format(new Date()) + ".gpx");
+ FileWriter writer = null;
try {
final File exportLocation = new File(Settings.getGpxExportDir());
exportLocation.mkdirs();
- final SimpleDateFormat fileNameDateFormat = new SimpleDateFormat("yyyyMMddHHmmss", Locale.US);
- exportFile = new File(Settings.getGpxExportDir() + File.separatorChar + "export_" + fileNameDateFormat.format(new Date()) + ".gpx");
-
- gpx = new BufferedWriter(new FileWriter(exportFile));
-
- gpx.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
- gpx.write("<gpx version=\"1.0\" creator=\"c:geo - http://www.cgeo.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.topografix.com/GPX/1/0\" xsi:schemaLocation=\"http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.groundspeak.com/cache/1/0/1 http://www.groundspeak.com/cache/1/0/1/cache.xsd\">");
+ final XmlSerializer gpx = Xml.newSerializer();
+ writer = new FileWriter(exportFile);
+ gpx.setOutput(writer);
+
+ gpx.startDocument("UTF-8", true);
+ gpx.setPrefix("", PREFIX_GPX);
+ gpx.setPrefix("xsi", PREFIX_XSI);
+ gpx.setPrefix("groundspeak", PREFIX_GROUNDSPEAK);
+ gpx.startTag(PREFIX_GPX, "gpx");
+ gpx.attribute("", "version", "1.0");
+ gpx.attribute("", "creator", "c:geo - http://www.cgeo.org/");
+ gpx.attribute(PREFIX_XSI, "schemaLocation",
+ PREFIX_GPX + " http://www.topografix.com/GPX/1/0/gpx.xsd " +
+ PREFIX_GROUNDSPEAK + " http://www.groundspeak.com/cache/1/0/1/cache.xsd");
for (int i = 0; i < caches.size(); i++) {
- final cgCache cache = cgData.loadCache(caches.get(i).getGeocode(), LoadFlags.LOAD_ALL_DB_ONLY);
+ final Geocache cache = cgData.loadCache(caches.get(i).getGeocode(), LoadFlags.LOAD_ALL_DB_ONLY);
- gpx.write("<wpt ");
- gpx.write("lat=\"");
- gpx.write(Double.toString(cache.getCoords().getLatitude()));
- gpx.write("\" ");
- gpx.write("lon=\"");
- gpx.write(Double.toString(cache.getCoords().getLongitude()));
- gpx.write("\">");
+ gpx.startTag(PREFIX_GPX, "wpt");
+ gpx.attribute("", "lat", Double.toString(cache.getCoords().getLatitude()));
+ gpx.attribute("", "lon", Double.toString(cache.getCoords().getLongitude()));
final Date hiddenDate = cache.getHiddenDate();
if (hiddenDate != null) {
- gpx.write("<time>");
- gpx.write(StringEscapeUtils.escapeXml(dateFormatZ.format(hiddenDate)));
- gpx.write("</time>");
+ XmlUtils.simpleText(gpx, PREFIX_GPX, "time", dateFormatZ.format(hiddenDate));
}
- gpx.write("<name>");
- gpx.write(StringEscapeUtils.escapeXml(cache.getGeocode()));
- gpx.write("</name>");
-
- gpx.write("<desc>");
- gpx.write(StringEscapeUtils.escapeXml(cache.getName()));
- gpx.write("</desc>");
-
- gpx.write("<url>");
- gpx.write(cache.getUrl());
- gpx.write("</url>");
-
- gpx.write("<urlname>");
- gpx.write(StringEscapeUtils.escapeXml(cache.getName()));
- gpx.write("</urlname>");
-
- gpx.write("<sym>");
- gpx.write(cache.isFound() ? "Geocache Found" : "Geocache");
- gpx.write("</sym>");
-
- gpx.write("<type>");
- gpx.write(StringEscapeUtils.escapeXml("Geocache|" + cache.getType().pattern));
- gpx.write("</type>");
-
- gpx.write("<groundspeak:cache ");
- gpx.write("id=\"");
- gpx.write(cache.getCacheId());
- gpx.write("\" available=\"");
- gpx.write(!cache.isDisabled() ? "True" : "False");
- gpx.write("\" archived=\"");
- gpx.write(cache.isArchived() ? "True" : "False");
- gpx.write("\" ");
- gpx.write("xmlns:groundspeak=\"http://www.groundspeak.com/cache/1/0/1\">");
-
- gpx.write("<groundspeak:name>");
- gpx.write(StringEscapeUtils.escapeXml(cache.getName()));
- gpx.write("</groundspeak:name>");
-
- gpx.write("<groundspeak:placed_by>");
- gpx.write(StringEscapeUtils.escapeXml(cache.getOwnerDisplayName()));
- gpx.write("</groundspeak:placed_by>");
-
- gpx.write("<groundspeak:owner>");
- gpx.write(StringEscapeUtils.escapeXml(cache.getOwnerUserId()));
- gpx.write("</groundspeak:owner>");
+ XmlUtils.multipleTexts(gpx, PREFIX_GPX,
+ "name", cache.getGeocode(),
+ "desc", cache.getName(),
+ "url", cache.getUrl(),
+ "urlname", cache.getName(),
+ "sym", cache.isFound() ? "Geocache Found" : "Geocache",
+ "type", "Geocache|" + cache.getType().pattern);
- gpx.write("<groundspeak:type>");
- gpx.write(StringEscapeUtils.escapeXml(cache.getType().pattern));
- gpx.write("</groundspeak:type>");
+ gpx.startTag(PREFIX_GROUNDSPEAK, "cache");
+ gpx.attribute("", "id", cache.getCacheId());
+ gpx.attribute("", "available", !cache.isDisabled() ? "True" : "False");
+ gpx.attribute("", "archives", cache.isArchived() ? "True" : "False");
- gpx.write("<groundspeak:container>");
- gpx.write(StringEscapeUtils.escapeXml(cache.getSize().id));
- gpx.write("</groundspeak:container>");
- writeAttributes(cache);
+ XmlUtils.multipleTexts(gpx, PREFIX_GROUNDSPEAK,
+ "name", cache.getName(),
+ "placed_by", cache.getOwnerDisplayName(),
+ "owner", cache.getOwnerUserId(),
+ "type", cache.getType().pattern,
+ "container", cache.getSize().id,
+ "difficulty", Float.toString(cache.getDifficulty()),
+ "terrain", Float.toString(cache.getTerrain()),
+ "country", cache.getLocation(),
+ "state", "",
+ "encoded_hints", cache.getHint());
- gpx.write("<groundspeak:difficulty>");
- gpx.write(Float.toString(cache.getDifficulty()));
- gpx.write("</groundspeak:difficulty>");
+ writeAttributes(gpx, cache);
- gpx.write("<groundspeak:terrain>");
- gpx.write(Float.toString(cache.getTerrain()));
- gpx.write("</groundspeak:terrain>");
+ gpx.startTag(PREFIX_GROUNDSPEAK, "short_description");
+ gpx.attribute("", "html", BaseUtils.containsHtml(cache.getShortDescription()) ? "True" : "False");
+ gpx.text(cache.getShortDescription());
+ gpx.endTag(PREFIX_GROUNDSPEAK, "short_description");
- gpx.write("<groundspeak:country>");
- gpx.write(StringEscapeUtils.escapeXml(cache.getLocation()));
- gpx.write("</groundspeak:country>");
+ gpx.startTag(PREFIX_GROUNDSPEAK, "long_description");
+ gpx.attribute("", "html", BaseUtils.containsHtml(cache.getDescription()) ? "True" : "False");
+ gpx.text(cache.getDescription());
+ gpx.endTag(PREFIX_GROUNDSPEAK, "long_description");
- gpx.write("<groundspeak:state></groundspeak:state>"); // c:geo cannot manage 2 separate fields, so we export as country
+ writeLogs(gpx, cache);
- gpx.write("<groundspeak:short_description html=\"");
- gpx.write(BaseUtils.containsHtml(cache.getShortDescription()) ? "True" : "False");
- gpx.write("\">");
- gpx.write(StringEscapeUtils.escapeXml(cache.getShortDescription()));
- gpx.write("</groundspeak:short_description>");
+ gpx.endTag(PREFIX_GROUNDSPEAK, "cache");
+ gpx.endTag(PREFIX_GPX, "wpt");
- gpx.write("<groundspeak:long_description html=\"");
- gpx.write(BaseUtils.containsHtml(cache.getDescription()) ? "True" : "False");
- gpx.write("\">");
- gpx.write(StringEscapeUtils.escapeXml(cache.getDescription()));
- gpx.write("</groundspeak:long_description>");
-
- gpx.write("<groundspeak:encoded_hints>");
- gpx.write(StringEscapeUtils.escapeXml(cache.getHint()));
- gpx.write("</groundspeak:encoded_hints>");
-
- writeLogs(cache);
-
- gpx.write("</groundspeak:cache>");
-
- gpx.write("</wpt>");
-
- writeWaypoints(cache);
+ writeWaypoints(gpx, cache);
publishProgress(i + 1);
}
- gpx.write("</gpx>");
-
- gpx.close();
- } catch (Exception e) {
+ gpx.endTag(PREFIX_GPX, "gpx");
+ gpx.endDocument();
+ } catch (final IOException e) {
Log.e("GpxExport.ExportTask export", e);
- if (gpx != null) {
+ if (writer != null) {
try {
- gpx.close();
- } catch (IOException ee) {
+ writer.close();
+ } catch (IOException e1) {
+ // Ignore double error
}
}
-
// delete partial gpx file on error
if (exportFile.exists()) {
exportFile.delete();
}
- return false;
+ return null;
}
- return true;
+ return exportFile;
}
- private void writeWaypoints(final cgCache cache) throws IOException {
+ private void writeWaypoints(final XmlSerializer gpx, final Geocache cache) throws IOException {
List<Waypoint> waypoints = cache.getWaypoints();
List<Waypoint> ownWaypoints = new ArrayList<Waypoint>(waypoints.size());
List<Waypoint> originWaypoints = new ArrayList<Waypoint>(waypoints.size());
@@ -300,12 +255,12 @@ class GpxExport extends AbstractExport {
} catch (NumberFormatException ex) {
Log.e("Unexpected origin waypoint prefix='" + prefix + "'", ex);
}
- writeCacheWaypoint(wp, prefix);
+ writeCacheWaypoint(gpx, wp, prefix);
}
for (Waypoint wp : ownWaypoints) {
maxPrefix++;
String prefix = StringUtils.leftPad(String.valueOf(maxPrefix), 2, '0');
- writeCacheWaypoint(wp, prefix);
+ writeCacheWaypoint(gpx, wp, prefix);
}
}
@@ -318,103 +273,78 @@ class GpxExport extends AbstractExport {
* @param prefix
* @throws IOException
*/
- private void writeCacheWaypoint(final Waypoint wp, final String prefix) throws IOException {
- gpx.write("<wpt lat=\"");
+ private void writeCacheWaypoint(final XmlSerializer gpx, final Waypoint wp, final String prefix) throws IOException {
+ gpx.startTag(PREFIX_GPX, "wpt");
final Geopoint coords = wp.getCoords();
- gpx.write(coords != null ? Double.toString(coords.getLatitude()) : ""); // TODO: check whether is the best way to handle unknown waypoint coordinates
- gpx.write("\" lon=\"");
- gpx.write(coords != null ? Double.toString(coords.getLongitude()) : "");
- gpx.write("\">");
-
- gpx.write("<name>");
- gpx.write(StringEscapeUtils.escapeXml(prefix));
- gpx.write(StringEscapeUtils.escapeXml(wp.getGeocode().substring(2)));
- gpx.write("</name>");
-
- gpx.write("<cmt>");
- gpx.write(StringEscapeUtils.escapeXml(wp.getNote()));
- gpx.write("</cmt>");
-
- gpx.write("<desc>");
- gpx.write(StringEscapeUtils.escapeXml(wp.getName()));
- gpx.write("</desc>");
-
- gpx.write("<sym>");
- gpx.write(StringEscapeUtils.escapeXml(wp.getWaypointType().toString())); //TODO: Correct identifier string
- gpx.write("</sym>");
-
- gpx.write("<type>Waypoint|");
- gpx.write(StringEscapeUtils.escapeXml(wp.getWaypointType().toString())); //TODO: Correct identifier string
- gpx.write("</type>");
-
- gpx.write("</wpt>");
+ gpx.attribute("", "lat", coords != null ? Double.toString(coords.getLatitude()) : ""); // TODO: check whether is the best way to handle unknown waypoint coordinates
+ gpx.attribute("", "lon", coords != null ? Double.toString(coords.getLongitude()) : "");
+ XmlUtils.multipleTexts(gpx, PREFIX_GPX,
+ "name", prefix + wp.getGeocode().substring(2),
+ "cmt", wp.getNote(),
+ "desc", wp.getName(),
+ "sym", wp.getWaypointType().toString(), //TODO: Correct identifier string
+ "type", "Waypoint|" + wp.getWaypointType().toString()); //TODO: Correct identifier string
+ gpx.endTag(PREFIX_GPX, "wpt");
}
- private void writeLogs(final cgCache cache) throws IOException {
+ private void writeLogs(final XmlSerializer gpx, final Geocache cache) throws IOException {
if (cache.getLogs().isEmpty()) {
return;
}
- gpx.write("<groundspeak:logs>");
+ gpx.startTag(PREFIX_GROUNDSPEAK, "logs");
for (LogEntry log : cache.getLogs()) {
- gpx.write("<groundspeak:log id=\"");
- gpx.write(Integer.toString(log.id));
- gpx.write("\">");
+ gpx.startTag(PREFIX_GROUNDSPEAK, "log");
+ gpx.attribute("", "id", Integer.toString(log.id));
- gpx.write("<groundspeak:date>");
- gpx.write(StringEscapeUtils.escapeXml(dateFormatZ.format(new Date(log.date))));
- gpx.write("</groundspeak:date>");
+ XmlUtils.multipleTexts(gpx, PREFIX_GROUNDSPEAK,
+ "date", dateFormatZ.format(new Date(log.date)),
+ "type", log.type.type);
- gpx.write("<groundspeak:type>");
- gpx.write(StringEscapeUtils.escapeXml(log.type.type));
- gpx.write("</groundspeak:type>");
+ gpx.startTag(PREFIX_GROUNDSPEAK, "finder");
+ gpx.attribute("", "id", log.author);
+ gpx.endTag(PREFIX_GROUNDSPEAK, "finder");
- gpx.write("<groundspeak:finder id=\"\">");
- gpx.write(StringEscapeUtils.escapeXml(log.author));
- gpx.write("</groundspeak:finder>");
+ gpx.startTag(PREFIX_GROUNDSPEAK, "text");
+ gpx.attribute("", "encoded", "False");
+ gpx.text(log.log);
+ gpx.endTag(PREFIX_GROUNDSPEAK, "text");
- gpx.write("<groundspeak:text encoded=\"False\">");
- gpx.write(StringEscapeUtils.escapeXml(log.log));
- gpx.write("</groundspeak:text>");
-
- gpx.write("</groundspeak:log>");
+ gpx.endTag(PREFIX_GROUNDSPEAK, "log");
}
- gpx.write("</groundspeak:logs>");
+ gpx.endTag(PREFIX_GROUNDSPEAK, "logs");
}
- private void writeAttributes(final cgCache cache) throws IOException {
+ private void writeAttributes(final XmlSerializer gpx, final Geocache cache) throws IOException {
if (cache.getAttributes().isEmpty()) {
return;
}
//TODO: Attribute conversion required: English verbose name, gpx-id
- gpx.write("<groundspeak:attributes>");
+ gpx.startTag(PREFIX_GROUNDSPEAK, "attributes");
for (String attribute : cache.getAttributes()) {
- final CacheAttribute attr = CacheAttribute.getByGcRawName(CacheAttribute.trimAttributeName(attribute));
+ final CacheAttribute attr = CacheAttribute.getByRawName(CacheAttribute.trimAttributeName(attribute));
+ if (attr == null) {
+ continue;
+ }
final boolean enabled = CacheAttribute.isEnabled(attribute);
- gpx.write("<groundspeak:attribute id=\"");
- gpx.write(Integer.toString(attr.id));
- gpx.write("\" inc=\"");
- if (enabled) {
- gpx.write('1');
- } else {
- gpx.write('0');
- }
- gpx.write("\">");
- gpx.write(StringEscapeUtils.escapeXml(attr.getL10n(enabled)));
- gpx.write("</groundspeak:attribute>");
+ gpx.startTag(PREFIX_GROUNDSPEAK, "attribute");
+ gpx.attribute("", "id", Integer.toString(attr.gcid));
+ gpx.attribute("", "inc", enabled ? "1" : "0");
+ gpx.text(attr.getL10n(enabled));
+ gpx.endTag(PREFIX_GROUNDSPEAK, "attribute");
}
- gpx.write("</groundspeak:attributes>");
+ gpx.endTag(PREFIX_GROUNDSPEAK, "attributes");
}
@Override
- protected void onPostExecute(Boolean result) {
+ protected void onPostExecute(final File exportFile) {
if (null != activity) {
progress.dismiss();
- if (result) {
+ if (exportFile != null) {
ActivityMixin.showToast(activity, getName() + ' ' + getString(R.string.export_exportedto) + ": " + exportFile.toString());
if (Settings.getShareAfterExport()) {
Intent shareIntent = new Intent();
diff --git a/main/src/cgeo/geocaching/files/FileList.java b/main/src/cgeo/geocaching/files/FileList.java
index 42c9f16..31daeb4 100644
--- a/main/src/cgeo/geocaching/files/FileList.java
+++ b/main/src/cgeo/geocaching/files/FileList.java
@@ -1,5 +1,6 @@
package cgeo.geocaching.files;
+import cgeo.geocaching.Intents;
import cgeo.geocaching.R;
import cgeo.geocaching.StoredList;
import cgeo.geocaching.activity.AbstractListActivity;
@@ -34,7 +35,7 @@ public abstract class FileList<T extends ArrayAdapter<File>> extends AbstractLis
private T adapter = null;
private ProgressDialog waitDialog = null;
private SearchFilesThread searchingThread = null;
- private int listId = StoredList.STANDARD_LIST_ID;
+ protected int listId = StoredList.STANDARD_LIST_ID;
private String[] extensions;
final private Handler changeWaitDialogHandler = new Handler() {
@@ -92,7 +93,7 @@ public abstract class FileList<T extends ArrayAdapter<File>> extends AbstractLis
Bundle extras = getIntent().getExtras();
if (extras != null) {
- listId = extras.getInt("list");
+ listId = extras.getInt(Intents.EXTRA_LIST_ID);
}
if (listId <= StoredList.TEMPORARY_LIST_ID) {
listId = StoredList.STANDARD_LIST_ID;
diff --git a/main/src/cgeo/geocaching/files/FileParser.java b/main/src/cgeo/geocaching/files/FileParser.java
index 0308d81..50b65a1 100644
--- a/main/src/cgeo/geocaching/files/FileParser.java
+++ b/main/src/cgeo/geocaching/files/FileParser.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.files;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.utils.CancellableHandler;
import java.io.BufferedReader;
@@ -26,7 +26,7 @@ public abstract class FileParser {
* @throws ParserException
* if the input stream contains data not matching the file format of the parser
*/
- public abstract Collection<cgCache> parse(final InputStream stream, final CancellableHandler progressHandler) throws IOException, ParserException;
+ public abstract Collection<Geocache> parse(final InputStream stream, final CancellableHandler progressHandler) throws IOException, ParserException;
/**
* Convenience method for parsing a file.
@@ -37,7 +37,7 @@ public abstract class FileParser {
* @throws IOException
* @throws ParserException
*/
- public Collection<cgCache> parse(final File file, final CancellableHandler progressHandler) throws IOException, ParserException {
+ public Collection<Geocache> parse(final File file, final CancellableHandler progressHandler) throws IOException, ParserException {
FileInputStream fis = new FileInputStream(file);
try {
return parse(fis, progressHandler);
@@ -72,7 +72,7 @@ public abstract class FileParser {
}
}
- protected static void fixCache(cgCache cache) {
+ protected static void fixCache(Geocache cache) {
if (cache.getInventory() != null) {
cache.setInventoryItems(cache.getInventory().size());
} else {
diff --git a/main/src/cgeo/geocaching/files/GPXImporter.java b/main/src/cgeo/geocaching/files/GPXImporter.java
index 750d5e0..b8dcbb3 100644
--- a/main/src/cgeo/geocaching/files/GPXImporter.java
+++ b/main/src/cgeo/geocaching/files/GPXImporter.java
@@ -1,10 +1,10 @@
package cgeo.geocaching.files;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.Settings;
import cgeo.geocaching.StaticMapsProvider;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgData;
import cgeo.geocaching.activity.IAbstractActivity;
import cgeo.geocaching.activity.Progress;
@@ -134,11 +134,11 @@ public class GPXImporter {
public void run() {
try {
importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_START));
- final Collection<cgCache> caches = doImport();
+ final Collection<Geocache> caches = doImport();
Log.i("Imported successfully " + caches.size() + " caches.");
final SearchResult search = new SearchResult();
- for (cgCache cache : caches) {
+ for (Geocache cache : caches) {
search.addCache(cache);
}
@@ -167,12 +167,12 @@ public class GPXImporter {
}
}
- protected abstract Collection<cgCache> doImport() throws IOException, ParserException;
+ protected abstract Collection<Geocache> doImport() throws IOException, ParserException;
private boolean importStaticMaps(final SearchResult importedCaches) {
int storedCacheMaps = 0;
for (String geocode : importedCaches.getGeocodes()) {
- cgCache cache = cgData.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
+ Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
Log.d("GPXImporter.ImportThread.importStaticMaps start downloadMaps for cache " + geocode);
StaticMapsProvider.downloadMaps(cache);
storedCacheMaps++;
@@ -194,7 +194,7 @@ public class GPXImporter {
}
@Override
- protected Collection<cgCache> doImport() throws IOException, ParserException {
+ protected Collection<Geocache> doImport() throws IOException, ParserException {
Log.i("Import LOC file: " + file.getAbsolutePath());
importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_FILE, R.string.gpx_import_loading_caches, (int) file.length()));
LocParser parser = new LocParser(listId);
@@ -209,7 +209,7 @@ public class GPXImporter {
}
@Override
- protected Collection<cgCache> doImport() throws IOException, ParserException {
+ protected Collection<Geocache> doImport() throws IOException, ParserException {
try {
// try to parse cache file as GPX 10
return doImport(new GPX10Parser(listId));
@@ -219,7 +219,7 @@ public class GPXImporter {
}
}
- protected abstract Collection<cgCache> doImport(GPXParser parser) throws IOException, ParserException;
+ protected abstract Collection<Geocache> doImport(GPXParser parser) throws IOException, ParserException;
}
static class ImportGpxFileThread extends ImportGpxThread {
@@ -231,10 +231,10 @@ public class GPXImporter {
}
@Override
- protected Collection<cgCache> doImport(GPXParser parser) throws IOException, ParserException {
+ protected Collection<Geocache> doImport(GPXParser parser) throws IOException, ParserException {
Log.i("Import GPX file: " + cacheFile.getAbsolutePath());
importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_FILE, R.string.gpx_import_loading_caches, (int) cacheFile.length()));
- Collection<cgCache> caches = parser.parse(cacheFile, progressHandler);
+ Collection<Geocache> caches = parser.parse(cacheFile, progressHandler);
final String wptsFilename = getWaypointsFileNameForGpxFile(cacheFile);
if (wptsFilename != null) {
@@ -260,7 +260,7 @@ public class GPXImporter {
}
@Override
- protected Collection<cgCache> doImport(GPXParser parser) throws IOException, ParserException {
+ protected Collection<Geocache> doImport(GPXParser parser) throws IOException, ParserException {
Log.i("Import GPX from uri: " + uri);
importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_FILE, R.string.gpx_import_loading_caches, -1));
InputStream is = contentResolver.openInputStream(uri);
@@ -279,8 +279,8 @@ public class GPXImporter {
}
@Override
- protected Collection<cgCache> doImport(GPXParser parser) throws IOException, ParserException {
- Collection<cgCache> caches = Collections.emptySet();
+ protected Collection<Geocache> doImport(GPXParser parser) throws IOException, ParserException {
+ Collection<Geocache> caches = Collections.emptySet();
// can't assume that GPX file comes before waypoint file in zip -> so we need two passes
// 1. parse GPX files
ZipInputStream zis = new ZipInputStream(getInputStream());
diff --git a/main/src/cgeo/geocaching/files/GPXParser.java b/main/src/cgeo/geocaching/files/GPXParser.java
index 22a7f41..5647d14 100644
--- a/main/src/cgeo/geocaching/files/GPXParser.java
+++ b/main/src/cgeo/geocaching/files/GPXParser.java
@@ -1,12 +1,12 @@
package cgeo.geocaching.files;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
import cgeo.geocaching.StoredList;
+import cgeo.geocaching.Trackable;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgData;
-import cgeo.geocaching.Trackable;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.enumerations.CacheSize;
@@ -80,7 +80,7 @@ public abstract class GPXParser extends FileParser {
final protected String namespace;
final private String version;
- private cgCache cache;
+ private Geocache cache;
private Trackable trackable = new Trackable();
private LogEntry log = null;
@@ -248,7 +248,7 @@ public abstract class GPXParser extends FileParser {
}
@Override
- public Collection<cgCache> parse(final InputStream stream, final CancellableHandler progressHandler) throws IOException, ParserException {
+ public Collection<Geocache> parse(final InputStream stream, final CancellableHandler progressHandler) throws IOException, ParserException {
resetCache();
final RootElement root = new RootElement(namespace, "gpx");
final Element waypoint = root.getChild(namespace, "wpt");
@@ -329,9 +329,9 @@ public abstract class GPXParser extends FileParser {
if (cache.getName().length() > 2) {
final String cacheGeocodeForWaypoint = "GC" + cache.getName().substring(2).toUpperCase(Locale.US);
// lookup cache for waypoint in already parsed caches
- final cgCache cacheForWaypoint = cgData.loadCache(cacheGeocodeForWaypoint, LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cacheForWaypoint = cgData.loadCache(cacheGeocodeForWaypoint, LoadFlags.LOAD_CACHE_OR_DB);
if (cacheForWaypoint != null) {
- final Waypoint waypoint = new Waypoint(cache.getShortdesc(), convertWaypointSym2Type(sym), false);
+ final Waypoint waypoint = new Waypoint(cache.getShortDescription(), convertWaypointSym2Type(sym), false);
waypoint.setId(-1);
waypoint.setGeocode(cacheGeocodeForWaypoint);
waypoint.setPrefix(cache.getName().substring(0, 2));
@@ -388,7 +388,7 @@ public abstract class GPXParser extends FileParser {
public void end(String body) {
desc = body;
- cache.setShortdesc(validate(body));
+ cache.setShortDescription(validate(body));
}
});
@@ -638,7 +638,7 @@ public abstract class GPXParser extends FileParser {
@Override
public void end(String shortDesc) {
- cache.setShortdesc(validate(shortDesc));
+ cache.setShortDescription(validate(shortDesc));
}
});
@@ -783,7 +783,7 @@ public abstract class GPXParser extends FileParser {
* @param cache
* currently imported cache
*/
- protected void afterParsing(cgCache cache) {
+ protected void afterParsing(Geocache cache) {
// can be overridden by sub classes
}
@@ -858,7 +858,14 @@ public abstract class GPXParser extends FileParser {
desc = null;
cmt = null;
- cache = new cgCache(this);
+ cache = new Geocache(this);
+
+ // explicitly set all properties which could lead to database access, if left as null value
+ cache.setLocation("");
+ cache.setDescription("");
+ cache.setShortDescription("");
+ cache.setHint("");
+
for (int i = 0; i < userData.length; i++) {
userData[i] = null;
}
diff --git a/main/src/cgeo/geocaching/files/LocParser.java b/main/src/cgeo/geocaching/files/LocParser.java
index 730e224..fe290c3 100644
--- a/main/src/cgeo/geocaching/files/LocParser.java
+++ b/main/src/cgeo/geocaching/files/LocParser.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.files;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgData;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.CacheType;
@@ -56,7 +56,7 @@ public final class LocParser extends FileParser {
private int listId;
public static void parseLoc(final SearchResult searchResult, final String fileContent) {
- final Map<String, cgCache> cidCoords = parseCoordinates(fileContent);
+ final Map<String, Geocache> cidCoords = parseCoordinates(fileContent);
// save found cache coordinates
final HashSet<String> contained = new HashSet<String>();
@@ -65,14 +65,14 @@ public final class LocParser extends FileParser {
contained.add(geocode);
}
}
- Set<cgCache> caches = cgData.loadCaches(contained, LoadFlags.LOAD_CACHE_OR_DB);
- for (cgCache cache : caches) {
- cgCache coord = cidCoords.get(cache.getGeocode());
+ Set<Geocache> caches = cgData.loadCaches(contained, LoadFlags.LOAD_CACHE_OR_DB);
+ for (Geocache cache : caches) {
+ Geocache coord = cidCoords.get(cache.getGeocode());
copyCoordToCache(coord, cache);
}
}
- private static void copyCoordToCache(final cgCache coord, final cgCache cache) {
+ private static void copyCoordToCache(final Geocache coord, final Geocache cache) {
cache.setCoords(coord.getCoords());
cache.setDifficulty(coord.getDifficulty());
cache.setTerrain(coord.getTerrain());
@@ -84,8 +84,8 @@ public final class LocParser extends FileParser {
}
}
- static Map<String, cgCache> parseCoordinates(final String fileContent) {
- final Map<String, cgCache> coords = new HashMap<String, cgCache>();
+ static Map<String, Geocache> parseCoordinates(final String fileContent) {
+ final Map<String, Geocache> coords = new HashMap<String, Geocache>();
if (StringUtils.isBlank(fileContent)) {
return coords;
}
@@ -95,7 +95,7 @@ public final class LocParser extends FileParser {
// parse coordinates
for (String pointString : points) {
- final cgCache pointCoord = parseCache(pointString);
+ final Geocache pointCoord = parseCache(pointString);
if (StringUtils.isNotBlank(pointCoord.getGeocode())) {
coords.put(pointCoord.getGeocode(), pointCoord);
}
@@ -121,17 +121,17 @@ public final class LocParser extends FileParser {
}
@Override
- public Collection<cgCache> parse(InputStream stream, CancellableHandler progressHandler) throws IOException, ParserException {
+ public Collection<Geocache> parse(InputStream stream, CancellableHandler progressHandler) throws IOException, ParserException {
// TODO: progress reporting happens during reading stream only, not during parsing
String streamContent = readStream(stream, progressHandler).toString();
- final Map<String, cgCache> coords = parseCoordinates(streamContent);
- final List<cgCache> caches = new ArrayList<cgCache>();
- for (Entry<String, cgCache> entry : coords.entrySet()) {
- cgCache coord = entry.getValue();
+ final Map<String, Geocache> coords = parseCoordinates(streamContent);
+ final List<Geocache> caches = new ArrayList<Geocache>();
+ for (Entry<String, Geocache> entry : coords.entrySet()) {
+ Geocache coord = entry.getValue();
if (StringUtils.isBlank(coord.getGeocode()) || StringUtils.isBlank(coord.getName())) {
continue;
}
- cgCache cache = new cgCache();
+ Geocache cache = new Geocache();
cache.setReliableLatLon(true);
copyCoordToCache(coord, cache);
caches.add(cache);
@@ -146,8 +146,8 @@ public final class LocParser extends FileParser {
return caches;
}
- public static cgCache parseCache(final String pointString) {
- final cgCache cache = new cgCache();
+ public static Geocache parseCache(final String pointString) {
+ final Geocache cache = new Geocache();
final MatcherWrapper matcherGeocode = new MatcherWrapper(patternGeocode, pointString);
if (matcherGeocode.find()) {
cache.setGeocode(matcherGeocode.group(1).trim());
diff --git a/main/src/cgeo/geocaching/files/SimpleDirChooser.java b/main/src/cgeo/geocaching/files/SimpleDirChooser.java
index c59b0cb..7520e2e 100644
--- a/main/src/cgeo/geocaching/files/SimpleDirChooser.java
+++ b/main/src/cgeo/geocaching/files/SimpleDirChooser.java
@@ -1,5 +1,6 @@
package cgeo.geocaching.files;
+import cgeo.geocaching.Intents;
import cgeo.geocaching.R;
import cgeo.geocaching.activity.ActivityMixin;
@@ -8,6 +9,7 @@ import org.apache.commons.lang3.StringUtils;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.LayoutInflater;
@@ -30,8 +32,6 @@ import java.util.List;
* Dialog for choosing a file or directory.
*/
public class SimpleDirChooser extends ListActivity {
- public static final String EXTRA_CHOSEN_DIR = "chosenDir";
- public static final String START_DIR = "start_dir";
private static final String PARENT_DIR = ".. ";
private File currentDir;
private FileArrayAdapter adapter;
@@ -42,7 +42,7 @@ public class SimpleDirChooser extends ListActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Bundle extras = getIntent().getExtras();
- currentDir = dirContaining(extras.getString(START_DIR));
+ currentDir = dirContaining(extras.getString(Intents.EXTRA_START_DIR));
ActivityMixin.setTheme(this);
setContentView(R.layout.simple_dir_chooser);
@@ -56,10 +56,8 @@ public class SimpleDirChooser extends ListActivity {
okButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- Intent intent = new Intent();
- String chosenDirName = File.separator + adapter.getItem(lastPosition).getName();
- intent.putExtra(EXTRA_CHOSEN_DIR, currentDir.getAbsolutePath() + chosenDirName);
- setResult(RESULT_OK, intent);
+ setResult(RESULT_OK, new Intent()
+ .setData(Uri.fromFile(new File(currentDir, adapter.getItem(lastPosition).getName()))));
finish();
}
});
diff --git a/main/src/cgeo/geocaching/filter/AbstractFilter.java b/main/src/cgeo/geocaching/filter/AbstractFilter.java
index f78a218..bc99959 100644
--- a/main/src/cgeo/geocaching/filter/AbstractFilter.java
+++ b/main/src/cgeo/geocaching/filter/AbstractFilter.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.filter;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import java.util.ArrayList;
import java.util.List;
@@ -13,9 +13,9 @@ abstract class AbstractFilter implements IFilter {
}
@Override
- public void filter(List<cgCache> list) {
- final List<cgCache> itemsToRemove = new ArrayList<cgCache>();
- for (cgCache item : list) {
+ public void filter(List<Geocache> list) {
+ final List<Geocache> itemsToRemove = new ArrayList<Geocache>();
+ for (Geocache item : list) {
if (!accepts(item)) {
itemsToRemove.add(item);
}
diff --git a/main/src/cgeo/geocaching/filter/AttributeFilter.java b/main/src/cgeo/geocaching/filter/AttributeFilter.java
index 837e9d1..4b6f382 100644
--- a/main/src/cgeo/geocaching/filter/AttributeFilter.java
+++ b/main/src/cgeo/geocaching/filter/AttributeFilter.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.filter;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.cgData;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.LoadFlags.LoadFlag;
@@ -34,8 +34,8 @@ class AttributeFilter extends AbstractFilter {
}
@Override
- public boolean accepts(final cgCache cache) {
- cgCache fullCache = cgData.loadCache(cache.getGeocode(), EnumSet.of(LoadFlag.LOAD_ATTRIBUTES));
+ public boolean accepts(final Geocache cache) {
+ Geocache fullCache = cgData.loadCache(cache.getGeocode(), EnumSet.of(LoadFlag.LOAD_ATTRIBUTES));
if (fullCache == null) {
fullCache = cache;
}
diff --git a/main/src/cgeo/geocaching/filter/DifficultyFilter.java b/main/src/cgeo/geocaching/filter/DifficultyFilter.java
index 368c20f..c0ec61a 100644
--- a/main/src/cgeo/geocaching/filter/DifficultyFilter.java
+++ b/main/src/cgeo/geocaching/filter/DifficultyFilter.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.filter;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
import java.util.ArrayList;
@@ -12,7 +12,7 @@ class DifficultyFilter extends AbstractRangeFilter {
}
@Override
- public boolean accepts(cgCache cache) {
+ public boolean accepts(Geocache cache) {
return rangeMin <= cache.getDifficulty() && cache.getDifficulty() < rangeMax;
}
diff --git a/main/src/cgeo/geocaching/filter/FilterUserInterface.java b/main/src/cgeo/geocaching/filter/FilterUserInterface.java
index e2472fd..be63a08 100644
--- a/main/src/cgeo/geocaching/filter/FilterUserInterface.java
+++ b/main/src/cgeo/geocaching/filter/FilterUserInterface.java
@@ -53,6 +53,7 @@ public final class FilterUserInterface {
register(R.string.cache_status, StateFilter.Factory.class);
register(R.string.caches_filter_track, TrackablesFilter.class);
register(R.string.caches_filter_modified, ModifiedFilter.class);
+ register(R.string.caches_filter_origin, OriginFilter.Factory.class);
// sort by localized names
Collections.sort(registry, new Comparator<FactoryEntry>() {
diff --git a/main/src/cgeo/geocaching/filter/IFilter.java b/main/src/cgeo/geocaching/filter/IFilter.java
index abc2d50..4a428f8 100644
--- a/main/src/cgeo/geocaching/filter/IFilter.java
+++ b/main/src/cgeo/geocaching/filter/IFilter.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.filter;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import java.util.List;
@@ -12,7 +12,7 @@ public interface IFilter {
* @param cache
* @return true if the filter accepts the cache, false otherwise
*/
- public abstract boolean accepts(final cgCache cache);
+ public abstract boolean accepts(final Geocache cache);
- public void filter(final List<cgCache> list);
+ public void filter(final List<Geocache> list);
} \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/filter/ModifiedFilter.java b/main/src/cgeo/geocaching/filter/ModifiedFilter.java
index f74bb4d..f3e57de 100644
--- a/main/src/cgeo/geocaching/filter/ModifiedFilter.java
+++ b/main/src/cgeo/geocaching/filter/ModifiedFilter.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.filter;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication;
class ModifiedFilter extends AbstractFilter implements IFilterFactory {
@@ -11,7 +11,7 @@ class ModifiedFilter extends AbstractFilter implements IFilterFactory {
}
@Override
- public boolean accepts(final cgCache cache) {
+ public boolean accepts(final Geocache cache) {
// modified on GC
return cache.hasUserModifiedCoords() || cache.hasFinalDefined();
}
diff --git a/main/src/cgeo/geocaching/filter/OriginFilter.java b/main/src/cgeo/geocaching/filter/OriginFilter.java
new file mode 100644
index 0000000..a880092
--- /dev/null
+++ b/main/src/cgeo/geocaching/filter/OriginFilter.java
@@ -0,0 +1,47 @@
+package cgeo.geocaching.filter;
+
+import cgeo.geocaching.Geocache;
+import cgeo.geocaching.connector.ConnectorFactory;
+import cgeo.geocaching.connector.IConnector;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+
+public class OriginFilter extends AbstractFilter {
+
+ private final IConnector connector;
+
+ public OriginFilter(IConnector connector) {
+ super(connector.getName());
+ this.connector = connector;
+ }
+
+ @Override
+ public boolean accepts(Geocache cache) {
+ return ConnectorFactory.getConnector(cache) == connector;
+ }
+
+ public static final class Factory implements IFilterFactory {
+
+ @Override
+ public IFilter[] getFilters() {
+ final ArrayList<OriginFilter> filters = new ArrayList<OriginFilter>();
+ for (IConnector connector : ConnectorFactory.getConnectors()) {
+ filters.add(new OriginFilter(connector));
+ }
+
+ // sort connectors by name
+ Collections.sort(filters, new Comparator<OriginFilter>() {
+
+ @Override
+ public int compare(OriginFilter lhs, OriginFilter rhs) {
+ return lhs.getName().compareToIgnoreCase(rhs.getName());
+ }
+ });
+
+ return filters.toArray(new OriginFilter[filters.size()]);
+ }
+
+ }
+}
diff --git a/main/src/cgeo/geocaching/filter/SizeFilter.java b/main/src/cgeo/geocaching/filter/SizeFilter.java
index b08c2ae..7a34c83 100644
--- a/main/src/cgeo/geocaching/filter/SizeFilter.java
+++ b/main/src/cgeo/geocaching/filter/SizeFilter.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.filter;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.enumerations.CacheSize;
import java.util.ArrayList;
@@ -14,7 +14,7 @@ class SizeFilter extends AbstractFilter {
}
@Override
- public boolean accepts(cgCache cache) {
+ public boolean accepts(Geocache cache) {
return cacheSize == cache.getSize();
}
diff --git a/main/src/cgeo/geocaching/filter/StateFilter.java b/main/src/cgeo/geocaching/filter/StateFilter.java
index f51329a..0df47c1 100644
--- a/main/src/cgeo/geocaching/filter/StateFilter.java
+++ b/main/src/cgeo/geocaching/filter/StateFilter.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.filter;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication;
import android.content.res.Resources;
@@ -25,7 +25,7 @@ abstract class StateFilter extends AbstractFilter {
}
@Override
- public boolean accepts(cgCache cache) {
+ public boolean accepts(Geocache cache) {
return cache.isFound();
}
@@ -37,7 +37,7 @@ abstract class StateFilter extends AbstractFilter {
}
@Override
- public boolean accepts(cgCache cache) {
+ public boolean accepts(Geocache cache) {
return cache.isArchived();
}
}
@@ -48,7 +48,7 @@ abstract class StateFilter extends AbstractFilter {
}
@Override
- public boolean accepts(cgCache cache) {
+ public boolean accepts(Geocache cache) {
return cache.isDisabled();
}
}
@@ -59,7 +59,7 @@ abstract class StateFilter extends AbstractFilter {
}
@Override
- public boolean accepts(cgCache cache) {
+ public boolean accepts(Geocache cache) {
return cache.isPremiumMembersOnly();
}
}
@@ -70,7 +70,7 @@ abstract class StateFilter extends AbstractFilter {
}
@Override
- public boolean accepts(cgCache cache) {
+ public boolean accepts(Geocache cache) {
return !cache.isPremiumMembersOnly();
}
}
@@ -81,7 +81,7 @@ abstract class StateFilter extends AbstractFilter {
}
@Override
- public boolean accepts(cgCache cache) {
+ public boolean accepts(Geocache cache) {
return cache.isLogOffline();
}
}
diff --git a/main/src/cgeo/geocaching/filter/TerrainFilter.java b/main/src/cgeo/geocaching/filter/TerrainFilter.java
index 5cee87e..f7703d5 100644
--- a/main/src/cgeo/geocaching/filter/TerrainFilter.java
+++ b/main/src/cgeo/geocaching/filter/TerrainFilter.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.filter;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import java.util.ArrayList;
@@ -13,7 +13,7 @@ class TerrainFilter extends AbstractRangeFilter {
}
@Override
- public boolean accepts(cgCache cache) {
+ public boolean accepts(Geocache cache) {
return rangeMin <= cache.getTerrain() && cache.getTerrain() < rangeMax;
}
diff --git a/main/src/cgeo/geocaching/filter/TrackablesFilter.java b/main/src/cgeo/geocaching/filter/TrackablesFilter.java
index 90def5b..3225daa 100644
--- a/main/src/cgeo/geocaching/filter/TrackablesFilter.java
+++ b/main/src/cgeo/geocaching/filter/TrackablesFilter.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.filter;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.cgeoapplication;
class TrackablesFilter extends AbstractFilter implements IFilterFactory {
@@ -10,7 +10,7 @@ class TrackablesFilter extends AbstractFilter implements IFilterFactory {
}
@Override
- public boolean accepts(cgCache cache) {
+ public boolean accepts(Geocache cache) {
return cache.hasTrackables();
}
diff --git a/main/src/cgeo/geocaching/filter/TypeFilter.java b/main/src/cgeo/geocaching/filter/TypeFilter.java
index 05b97e0..eeab552 100644
--- a/main/src/cgeo/geocaching/filter/TypeFilter.java
+++ b/main/src/cgeo/geocaching/filter/TypeFilter.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.filter;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.enumerations.CacheType;
import java.util.ArrayList;
@@ -14,7 +14,7 @@ class TypeFilter extends AbstractFilter {
}
@Override
- public boolean accepts(final cgCache cache) {
+ public boolean accepts(final Geocache cache) {
return cacheType == cache.getType();
}
diff --git a/main/src/cgeo/geocaching/gcvote/GCVote.java b/main/src/cgeo/geocaching/gcvote/GCVote.java
index fa17775..a053f31 100644
--- a/main/src/cgeo/geocaching/gcvote/GCVote.java
+++ b/main/src/cgeo/geocaching/gcvote/GCVote.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.gcvote;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.Settings;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.network.Network;
import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.utils.LeastRecentlyUsedMap;
@@ -13,6 +13,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -38,31 +39,16 @@ public final class GCVote {
* @return
*/
public static GCVoteRating getRating(String guid, String geocode) {
- List<String> guids = null;
- List<String> geocodes = null;
-
- if (StringUtils.isNotBlank(guid)) {
-
- GCVoteRating rating = ratingsCache.get(guid);
- if (rating != null) {
- return rating;
- }
- guids = new ArrayList<String>();
- guids.add(guid);
- } else if (StringUtils.isNotBlank(geocode)) {
- geocodes = new ArrayList<String>();
- geocodes.add(geocode);
- } else {
- return null;
+ if (StringUtils.isNotBlank(guid) && ratingsCache.containsKey(guid)) {
+ return ratingsCache.get(guid);
}
- final Map<String, GCVoteRating> ratings = getRating(guids, geocodes);
-
- if (MapUtils.isEmpty(ratings)) {
- return null;
- }
+ final Map<String, GCVoteRating> ratings = getRating(singletonOrNull(guid), singletonOrNull(geocode));
+ return MapUtils.isNotEmpty(ratings) ? ratings.values().iterator().next() : null;
+ }
- return ratings.values().iterator().next();
+ private static List<String> singletonOrNull(final String item) {
+ return StringUtils.isNotBlank(item) ? Collections.singletonList(item) : null;
}
/**
@@ -192,7 +178,7 @@ public final class GCVote {
* @param vote
* @return
*/
- public static boolean setRating(cgCache cache, double vote) {
+ public static boolean setRating(Geocache cache, double vote) {
if (!cache.supportsGCVote()) {
return false;
}
@@ -221,13 +207,13 @@ public final class GCVote {
return result.trim().equalsIgnoreCase("ok");
}
- public static void loadRatings(ArrayList<cgCache> caches) {
+ public static void loadRatings(ArrayList<Geocache> caches) {
if (!Settings.isRatingWanted()) {
return;
}
final ArrayList<String> guids = new ArrayList<String>(caches.size());
- for (final cgCache cache : caches) {
+ for (final Geocache cache : caches) {
String guid = cache.getGuid();
if (StringUtils.isNotBlank(guid)) {
guids.add(guid);
@@ -243,7 +229,7 @@ public final class GCVote {
if (MapUtils.isNotEmpty(ratings)) {
// save found cache coordinates
- for (cgCache cache : caches) {
+ for (Geocache cache : caches) {
if (ratings.containsKey(cache.getGuid())) {
GCVoteRating rating = ratings.get(cache.getGuid());
diff --git a/main/src/cgeo/geocaching/geopoint/Geopoint.java b/main/src/cgeo/geocaching/geopoint/Geopoint.java
index fc5bfbc..a4821b9 100644
--- a/main/src/cgeo/geocaching/geopoint/Geopoint.java
+++ b/main/src/cgeo/geocaching/geopoint/Geopoint.java
@@ -104,11 +104,9 @@ public final class Geopoint implements ICoordinates, Parcelable {
* @param lonDegFrac
*/
public Geopoint(final String latDir, final String latDeg, final String latDegFrac,
- final String lonDir, final String lonDeg, final String lonDegFrac) {
- latitude = Double.parseDouble(latDeg + "." + addZeros(Integer.parseInt(latDegFrac), 5)) *
- getLatSign(latDir);
- longitude = Double.parseDouble(lonDeg + "." + addZeros(Integer.parseInt(lonDegFrac), 5)) *
- getLonSign(lonDir);
+ final String lonDir, final String lonDeg, final String lonDegFrac) {
+ this(getLatSign(latDir) + latDeg + "." + addZeros(latDegFrac, 5),
+ getLonSign(lonDir) + lonDeg + "." + addZeros(lonDegFrac, 5));
}
/**
@@ -124,11 +122,9 @@ public final class Geopoint implements ICoordinates, Parcelable {
* @param lonMinFrac
*/
public Geopoint(final String latDir, final String latDeg, final String latMin, final String latMinFrac,
- final String lonDir, final String lonDeg, final String lonMin, final String lonMinFrac) {
- latitude = (Double.parseDouble(latDeg) + Double.parseDouble(latMin + "." + addZeros(Integer.parseInt(latMinFrac), 3)) / 60) *
- (getLatSign(latDir));
- longitude = (Double.parseDouble(lonDeg) + Double.parseDouble(lonMin + "." + addZeros(Integer.parseInt(lonMinFrac), 3)) / 60) *
- (getLonSign(lonDir));
+ final String lonDir, final String lonDeg, final String lonMin, final String lonMinFrac) {
+ this(latDir + " " + latDeg + " " + latMin + "." + addZeros(latMinFrac, 3),
+ lonDir + " " + lonDeg + " " + lonMin + "." + addZeros(lonMinFrac, 3));
}
/**
@@ -147,10 +143,8 @@ public final class Geopoint implements ICoordinates, Parcelable {
*/
public Geopoint(final String latDir, final String latDeg, final String latMin, final String latSec, final String latSecFrac,
final String lonDir, final String lonDeg, final String lonMin, final String lonSec, final String lonSecFrac) {
- latitude = (Double.parseDouble(latDeg) + Double.parseDouble(latMin) / 60 + Double.parseDouble(latSec + "." + addZeros(Integer.parseInt(latSecFrac), 3)) / 3600) *
- (getLatSign(latDir));
- longitude = (Double.parseDouble(lonDeg) + Double.parseDouble(lonMin) / 60 + Double.parseDouble(lonSec + "." + addZeros(Integer.parseInt(lonSecFrac), 3)) / 3600) *
- (getLonSign(lonDir));
+ this(latDir + " " + latDeg + " " + latMin + " " + latSec + "." + addZeros(latSecFrac, 3),
+ lonDir + " " + lonDeg + " " + lonMin + " " + lonSec + "." + addZeros(lonSecFrac, 3));
}
/**
@@ -580,16 +574,15 @@ public final class Geopoint implements ICoordinates, Parcelable {
return (Math.abs(deg) * 3600) % 60;
}
- private static String addZeros(final int value, final int len) {
- return StringUtils.leftPad(Integer.toString(value), len, '0');
+ private static String addZeros(final String value, final int len) {
+ return StringUtils.leftPad(value.trim(), len, '0');
}
- private static int getLonSign(final String lonDir) {
- return "W".equalsIgnoreCase(lonDir) ? -1 : 1;
+ private static String getLonSign(final String lonDir) {
+ return "W".equalsIgnoreCase(lonDir) ? "-" : "";
}
- private static int getLatSign(final String latDir) {
- return "S".equalsIgnoreCase(latDir) ? -1 : 1;
+ private static String getLatSign(final String latDir) {
+ return "S".equalsIgnoreCase(latDir) ? "-" : "";
}
-
}
diff --git a/main/src/cgeo/geocaching/geopoint/GeopointParser.java b/main/src/cgeo/geocaching/geopoint/GeopointParser.java
index 97a9ec8..ba86e70 100644
--- a/main/src/cgeo/geocaching/geopoint/GeopointParser.java
+++ b/main/src/cgeo/geocaching/geopoint/GeopointParser.java
@@ -11,6 +11,7 @@ import java.util.regex.Pattern;
* Parse coordinates.
*/
class GeopointParser {
+
private static class ResultWrapper {
final double result;
final int matcherPos;
@@ -23,12 +24,13 @@ class GeopointParser {
}
}
- // ( 1 ) ( 2 ) ( 3 ) ( 4 ) ( 5 )
- private static final Pattern patternLat = Pattern.compile("\\b([NS])\\s*(\\d+)°?(?:\\s*(\\d+)(?:[.,](\\d+)|'?\\s*(\\d+(?:[.,]\\d+)?)(?:''|\")?)?)?", Pattern.CASE_INSENSITIVE);
- private static final Pattern patternLon = Pattern.compile("\\b([WE])\\s*(\\d+)°?(?:\\s*(\\d+)(?:[.,](\\d+)|'?\\s*(\\d+(?:[.,]\\d+)?)(?:''|\")?)?)?", Pattern.CASE_INSENSITIVE);
+ // ( 1 ) ( 2 ) ( 3 ) ( 4 ) ( 5 )
+ private static final Pattern PATTERN_LAT = Pattern.compile("\\b([NS])\\s*(\\d+)°?(?:\\s*(\\d+)(?:[.,](\\d+)|'?\\s*(\\d+(?:[.,]\\d+)?)(?:''|\")?)?)?", Pattern.CASE_INSENSITIVE);
+ private static final Pattern PATTERN_LON = Pattern.compile("\\b([WE])\\s*(\\d+)°?(?:\\s*(\\d+)(?:[.,](\\d+)|'?\\s*(\\d+(?:[.,]\\d+)?)(?:''|\")?)?)?", Pattern.CASE_INSENSITIVE);
+
+ private static final Pattern PATTERN_BAD_BLANK = Pattern.compile("(\\d)[,.] (\\d{2,})");
- enum LatLon
- {
+ enum LatLon {
LAT,
LON
}
@@ -53,8 +55,7 @@ class GeopointParser {
* @throws Geopoint.ParseException
* if lat or lon could not be parsed
*/
- public static Geopoint parse(final String text)
- {
+ public static Geopoint parse(final String text) {
final ResultWrapper latitudeWrapper = parseHelper(text, LatLon.LAT);
final double lat = latitudeWrapper.result;
// cut away the latitude part when parsing the longitude
@@ -90,8 +91,7 @@ class GeopointParser {
* @throws Geopoint.ParseException
* if lat or lon could not be parsed
*/
- public static Geopoint parse(final String latitude, final String longitude)
- {
+ public static Geopoint parse(final String latitude, final String longitude) {
final double lat = parseLatitude(latitude);
final double lon = parseLongitude(longitude);
@@ -102,11 +102,13 @@ class GeopointParser {
* (non JavaDoc)
* Helper for coordinates-parsing.
*/
- private static ResultWrapper parseHelper(final String text, final LatLon latlon)
- {
+ private static ResultWrapper parseHelper(final String text, final LatLon latlon) {
+
+ MatcherWrapper matcher = new MatcherWrapper(PATTERN_BAD_BLANK, text);
+ String replaceSpaceAfterComma = matcher.replaceAll("$1.$2");
- final Pattern pattern = LatLon.LAT == latlon ? patternLat : patternLon;
- final MatcherWrapper matcher = new MatcherWrapper(pattern, text);
+ final Pattern pattern = LatLon.LAT == latlon ? PATTERN_LAT : PATTERN_LON;
+ matcher = new MatcherWrapper(pattern, replaceSpaceAfterComma);
if (matcher.find()) {
final double sign = matcher.group(1).equalsIgnoreCase("S") || matcher.group(1).equalsIgnoreCase("W") ? -1.0 : 1.0;
@@ -154,8 +156,7 @@ class GeopointParser {
* @throws Geopoint.ParseException
* if latitude could not be parsed
*/
- public static double parseLatitude(final String text)
- {
+ public static double parseLatitude(final String text) {
return parseHelper(text, LatLon.LAT).result;
}
@@ -169,8 +170,7 @@ class GeopointParser {
* @throws Geopoint.ParseException
* if longitude could not be parsed
*/
- public static double parseLongitude(final String text)
- {
+ public static double parseLongitude(final String text) {
return parseHelper(text, LatLon.LON).result;
}
}
diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java
index 47ca240..c917a37 100644
--- a/main/src/cgeo/geocaching/maps/CGeoMap.java
+++ b/main/src/cgeo/geocaching/maps/CGeoMap.java
@@ -1,15 +1,13 @@
package cgeo.geocaching.maps;
import cgeo.geocaching.DirectionProvider;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.IGeoData;
-import cgeo.geocaching.IWaypoint;
-import cgeo.geocaching.LiveMapInfo;
import cgeo.geocaching.R;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.Settings;
import cgeo.geocaching.StoredList;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgData;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.cgeocaches;
@@ -32,11 +30,13 @@ import cgeo.geocaching.maps.interfaces.MapProvider;
import cgeo.geocaching.maps.interfaces.MapSource;
import cgeo.geocaching.maps.interfaces.MapViewImpl;
import cgeo.geocaching.maps.interfaces.OnMapDragListener;
+import cgeo.geocaching.ui.dialog.LiveMapInfoDialogBuilder;
import cgeo.geocaching.utils.AngleUtils;
import cgeo.geocaching.utils.CancellableHandler;
import cgeo.geocaching.utils.GeoDirHandler;
import cgeo.geocaching.utils.LeastRecentlyUsedSet;
import cgeo.geocaching.utils.Log;
+import cgeo.geocaching.utils.RunnableWithArgument;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -178,7 +178,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
/** Count of caches currently visible */
private int cachesCnt = 0;
/** List of caches in the viewport */
- private LeastRecentlyUsedSet<cgCache> caches = null;
+ private LeastRecentlyUsedSet<Geocache> caches = null;
/** List of waypoints in the viewport */
private final LeastRecentlyUsedSet<Waypoint> waypoints = new LeastRecentlyUsedSet<Waypoint>(MAX_CACHES);
// storing for offline
@@ -336,13 +336,13 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
}
protected void countVisibleCaches() {
- final List<cgCache> protectedCaches = caches.getAsList();
+ final List<Geocache> protectedCaches = caches.getAsList();
int count = 0;
if (!protectedCaches.isEmpty()) {
final Viewport viewport = mapView.getViewport();
- for (final cgCache cache : protectedCaches) {
+ for (final Geocache cache : protectedCaches) {
if (cache != null && cache.getCoords() != null) {
if (viewport.contains(cache)) {
count++;
@@ -370,7 +370,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
app = (cgeoapplication) activity.getApplication();
int countBubbleCnt = cgData.getAllCachesCount();
- caches = new LeastRecentlyUsedSet<cgCache>(MAX_CACHES + countBubbleCnt);
+ caches = new LeastRecentlyUsedSet<Geocache>(MAX_CACHES + countBubbleCnt);
final MapProvider mapProvider = Settings.getMapProvider();
mapItemFactory = mapProvider.getMapItemFactory();
@@ -470,9 +470,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
prepareFilterBar();
if (!app.isLiveMapHintShown() && !Settings.getHideLiveMapHint()) {
- Intent hintIntent = new Intent(activity, LiveMapInfo.class);
- activity.startActivity(hintIntent);
- app.setLiveMapHintShown();
+ LiveMapInfoDialogBuilder.create(activity).show();
}
}
@@ -495,10 +493,13 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
if (!CollectionUtils.isEmpty(dirtyCaches)) {
for (String geocode : dirtyCaches) {
- cgCache cache = cgData.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
- // remove to update the cache
- caches.remove(cache);
- caches.add(cache);
+ Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
+ if (cache != null) {
+ // new collection type needs to remove first
+ caches.remove(cache);
+ // re-add to update the freshness
+ caches.add(cache);
+ }
}
dirtyCaches.clear();
// Update display
@@ -654,42 +655,18 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
return true;
}
- final LoadDetailsHandler loadDetailsHandler = new LoadDetailsHandler();
-
- waitDialog = new ProgressDialog(activity);
- waitDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
- waitDialog.setCancelable(true);
- waitDialog.setCancelMessage(loadDetailsHandler.cancelMessage());
- waitDialog.setMax(detailTotal);
- waitDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
-
- @Override
- public void onCancel(DialogInterface arg0) {
- try {
- if (loadDetailsThread != null) {
- loadDetailsThread.stopIt();
- }
-
- geoDirUpdate.startDir();
- } catch (Exception e) {
- Log.e("cgeocaches.onPrepareOptionsMenu.onCancel", e);
- }
- }
- });
-
- float etaTime = detailTotal * 7.0f / 60.0f;
- int roundedEta = Math.round(etaTime);
- if (etaTime < 0.4) {
- waitDialog.setMessage(res.getString(R.string.caches_downloading) + " " + res.getString(R.string.caches_eta_ltm));
- } else {
- waitDialog.setMessage(res.getString(R.string.caches_downloading) + " " + roundedEta + " " + res.getQuantityString(R.plurals.caches_eta_mins, roundedEta));
+ if (Settings.getChooseList()) {
+ // let user select list to store cache in
+ new StoredList.UserInterface(activity).promptForListSelection(R.string.list_title,
+ new RunnableWithArgument<Integer>() {
+ @Override
+ public void run(final Integer selectedListId) {
+ storeCaches(geocodes, selectedListId);
+ }
+ }, true, StoredList.TEMPORARY_LIST_ID);
+ } else {
+ storeCaches(geocodes, StoredList.STANDARD_LIST_ID);
}
- waitDialog.show();
-
- detailProgressTime = System.currentTimeMillis();
-
- loadDetailsThread = new LoadDetails(loadDetailsHandler, geocodes);
- loadDetailsThread.start();
}
return true;
case MENU_CIRCLE_MODE:
@@ -794,11 +771,11 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
*/
private Set<String> getGeocodesForCachesInViewport() {
final Set<String> geocodes = new HashSet<String>();
- final List<cgCache> cachesProtected = caches.getAsList();
+ final List<Geocache> cachesProtected = caches.getAsList();
final Viewport viewport = mapView.getViewport();
- for (final cgCache cache : cachesProtected) {
+ for (final Geocache cache : cachesProtected) {
if (viewport.contains(cache)) {
geocodes.add(cache.getGeocode());
}
@@ -1051,22 +1028,11 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
// check if map moved or zoomed
//TODO Portree Use Rectangle inside with bigger search window. That will stop reloading on every move
- boolean moved = false;
-
- if (liveChanged) {
- moved = true;
- } else if (isLiveEnabled && !downloaded) {
- moved = true;
- } else if (viewport == null) {
- moved = true;
- } else if (zoomNow != zoom) {
- moved = true;
- } else if (mapMoved(viewport, viewportNow) && (cachesCnt <= 0 || CollectionUtils.isEmpty(caches) || !viewport.includes(viewportNow))) {
- moved = true;
- }
+ final boolean moved = liveChanged || (isLiveEnabled && !downloaded) || (viewport == null) || zoomNow != zoom ||
+ (mapMoved(viewport, viewportNow) && (cachesCnt <= 0 || CollectionUtils.isEmpty(caches) || !viewport.includes(viewportNow)));
// update title on any change
- if (moved || zoomNow != zoom || !viewportNow.equals(viewport)) {
+ if (moved || !viewportNow.equals(viewport)) {
displayHandler.sendEmptyMessage(UPDATE_TITLE);
}
zoom = zoomNow;
@@ -1133,19 +1099,18 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
}
downloaded = true;
- Set<cgCache> cachesFromSearchResult = searchResult.getCachesFromSearchResult(LoadFlags.LOAD_WAYPOINTS);
- // to update the caches they have to be removed first
- caches.removeAll(cachesFromSearchResult);
+ Set<Geocache> cachesFromSearchResult = searchResult.getCachesFromSearchResult(LoadFlags.LOAD_WAYPOINTS);
+ // update the caches
caches.addAll(cachesFromSearchResult);
if (mapMode == MapMode.LIVE) {
final boolean excludeMine = Settings.isExcludeMyCaches();
final boolean excludeDisabled = Settings.isExcludeDisabledCaches();
- final List<cgCache> tempList = caches.getAsList();
+ final List<Geocache> tempList = caches.getAsList();
- for (cgCache cache : tempList) {
- if ((cache.isFound() && excludeMine) || (cache.isOwn() && excludeMine) || (cache.isDisabled() && excludeDisabled)) {
+ for (Geocache cache : tempList) {
+ if ((cache.isFound() && excludeMine) || (cache.isOwner() && excludeMine) || (cache.isDisabled() && excludeDisabled)) {
caches.remove(cache);
}
}
@@ -1162,7 +1127,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
else
{
//All waypoints from the viewed caches
- for (cgCache c : caches.getAsList()) {
+ for (Geocache c : caches.getAsList()) {
waypoints.addAll(c.getWaypoints());
}
}
@@ -1223,9 +1188,8 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
} while (count < 2);
if (searchResult != null) {
- Set<cgCache> result = searchResult.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB);
- // to update the caches they have to be removed first
- caches.removeAll(result);
+ Set<Geocache> result = searchResult.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB);
+ // update the caches
caches.addAll(result);
lastSearchResult = searchResult;
}
@@ -1260,7 +1224,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
}
// display caches
- final List<cgCache> cachesToDisplay = caches.getAsList();
+ final List<Geocache> cachesToDisplay = caches.getAsList();
final List<Waypoint> waypointsToDisplay = new ArrayList<Waypoint>(waypoints);
final List<CachesOverlayItemImpl> itemsToDisplay = new ArrayList<CachesOverlayItemImpl>();
@@ -1274,15 +1238,15 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
continue;
}
- itemsToDisplay.add(getItem(waypoint, null, waypoint));
+ itemsToDisplay.add(getWaypointItem(waypoint));
}
}
- for (cgCache cache : cachesToDisplay) {
+ for (Geocache cache : cachesToDisplay) {
if (cache == null || cache.getCoords() == null) {
continue;
}
- itemsToDisplay.add(getItem(cache, cache, null));
+ itemsToDisplay.add(getCacheItem(cache));
}
overlayCaches.updateItems(itemsToDisplay);
@@ -1319,7 +1283,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
final Waypoint waypoint = new Waypoint("some place", waypointTypeIntent != null ? waypointTypeIntent : WaypointType.WAYPOINT, false);
waypoint.setCoords(coordsIntent);
- final CachesOverlayItemImpl item = getItem(waypoint, null, waypoint);
+ final CachesOverlayItemImpl item = getWaypointItem(waypoint);
overlayCaches.updateItems(item);
displayHandler.sendEmptyMessage(INVALIDATE_MAP);
@@ -1358,6 +1322,51 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
}
/**
+ * store caches, invoked by "store offline" menu item
+ *
+ * @param listId
+ * the list to store the caches in
+ */
+ private void storeCaches(List<String> geocodes, int listId) {
+ final LoadDetailsHandler loadDetailsHandler = new LoadDetailsHandler();
+
+ waitDialog = new ProgressDialog(activity);
+ waitDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
+ waitDialog.setCancelable(true);
+ waitDialog.setCancelMessage(loadDetailsHandler.cancelMessage());
+ waitDialog.setMax(detailTotal);
+ waitDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
+
+ @Override
+ public void onCancel(DialogInterface arg0) {
+ try {
+ if (loadDetailsThread != null) {
+ loadDetailsThread.stopIt();
+ }
+
+ geoDirUpdate.startDir();
+ } catch (Exception e) {
+ Log.e("cgeocaches.onPrepareOptionsMenu.onCancel", e);
+ }
+ }
+ });
+
+ float etaTime = detailTotal * 7.0f / 60.0f;
+ int roundedEta = Math.round(etaTime);
+ if (etaTime < 0.4) {
+ waitDialog.setMessage(res.getString(R.string.caches_downloading) + " " + res.getString(R.string.caches_eta_ltm));
+ } else {
+ waitDialog.setMessage(res.getString(R.string.caches_downloading) + " " + roundedEta + " " + res.getQuantityString(R.plurals.caches_eta_mins, roundedEta));
+ }
+ waitDialog.show();
+
+ detailProgressTime = System.currentTimeMillis();
+
+ loadDetailsThread = new LoadDetails(loadDetailsHandler, geocodes, listId);
+ loadDetailsThread.start();
+ }
+
+ /**
* Thread to store the caches in the viewport. Started by Activity.
*/
@@ -1365,11 +1374,13 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
final private CancellableHandler handler;
final private List<String> geocodes;
+ final private int listId;
private long last = 0L;
- public LoadDetails(final CancellableHandler handler, final List<String> geocodes) {
+ public LoadDetails(final CancellableHandler handler, final List<String> geocodes, final int listId) {
this.handler = handler;
this.geocodes = geocodes;
+ this.listId = listId;
}
public void stopIt() {
@@ -1410,7 +1421,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
break;
}
- cgCache.storeCache(null, geocode, StoredList.STANDARD_LIST_ID, false, handler);
+ Geocache.storeCache(null, geocode, listId, false, handler);
}
} catch (Exception e) {
Log.e("cgeocaches.LoadDetails.run", e);
@@ -1615,117 +1626,100 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
dirtyCaches.add(geocode);
}
- /**
- * Returns a OverlayItem represented by an icon
- *
- * @param coord
- * The coords
- * @param cache
- * Cache
- * @param waypoint
- * Waypoint. Mutally exclusive with cache
- * @return
- */
- private CachesOverlayItemImpl getItem(final IWaypoint coord, final cgCache cache, final Waypoint waypoint) {
- if (cache != null) {
- final CachesOverlayItemImpl item = mapItemFactory.getCachesOverlayItem(coord, cache.getType());
-
- final int hashcode = new HashCodeBuilder()
- .append(cache.isReliableLatLon())
- .append(cache.getType().id)
- .append(cache.isDisabled() || cache.isArchived())
- .append(cache.getCacheRealm().id)
- .append(cache.isOwn())
- .append(cache.isFound())
- .append(cache.hasUserModifiedCoords())
- .append(cache.getPersonalNote())
- .append(cache.isLogOffline())
- .append(cache.getListId() > 0)
- .toHashCode();
-
- final LayerDrawable ldFromCache = overlaysCache.get(hashcode);
- if (ldFromCache != null) {
- item.setMarker(ldFromCache);
- return item;
- }
-
- // Set initial capacities to the maximum of layers and insets to avoid dynamic reallocation
- final ArrayList<Drawable> layers = new ArrayList<Drawable>(9);
- final ArrayList<int[]> insets = new ArrayList<int[]>(8);
-
- // background: disabled or not
- final Drawable marker = getResources().getDrawable(cache.isDisabled() || cache.isArchived() ? cache.getCacheRealm().markerDisabledId : cache.getCacheRealm().markerId);
- layers.add(marker);
- final int resolution = marker.getIntrinsicWidth() > 40 ? 1 : 0;
- // reliable or not
- if (!cache.isReliableLatLon()) {
- insets.add(INSET_RELIABLE[resolution]);
- layers.add(getResources().getDrawable(R.drawable.marker_notreliable));
- }
- // cache type
- layers.add(getResources().getDrawable(cache.getType().markerId));
- insets.add(INSET_TYPE[resolution]);
- // own
- if (cache.isOwn()) {
- layers.add(getResources().getDrawable(R.drawable.marker_own));
- insets.add(INSET_OWN[resolution]);
- // if not, checked if stored
- } else if (cache.getListId() > 0) {
- layers.add(getResources().getDrawable(R.drawable.marker_stored));
- insets.add(INSET_OWN[resolution]);
- }
- // found
- if (cache.isFound()) {
- layers.add(getResources().getDrawable(R.drawable.marker_found));
- insets.add(INSET_FOUND[resolution]);
- // if not, perhaps logged offline
- } else if (cache.isLogOffline()) {
- layers.add(getResources().getDrawable(R.drawable.marker_found_offline));
- insets.add(INSET_FOUND[resolution]);
- }
- // user modified coords
- if (cache.hasUserModifiedCoords()) {
- layers.add(getResources().getDrawable(R.drawable.marker_usermodifiedcoords));
- insets.add(INSET_USERMODIFIEDCOORDS[resolution]);
- }
- // personal note
- if (cache.getPersonalNote() != null) {
- layers.add(getResources().getDrawable(R.drawable.marker_personalnote));
- insets.add(INSET_PERSONALNOTE[resolution]);
- }
-
- final LayerDrawable ld = new LayerDrawable(layers.toArray(new Drawable[layers.size()]));
-
- int index = 1;
- for (final int[] inset : insets) {
- ld.setLayerInset(index++, inset[0], inset[1], inset[2], inset[3]);
- }
-
- overlaysCache.put(hashcode, ld);
-
- item.setMarker(ld);
+ private CachesOverlayItemImpl getCacheItem(final Geocache cache) {
+ final CachesOverlayItemImpl item = mapItemFactory.getCachesOverlayItem(cache, cache.getType());
+
+ final int hashcode = new HashCodeBuilder()
+ .append(cache.isReliableLatLon())
+ .append(cache.getType().id)
+ .append(cache.isDisabled() || cache.isArchived())
+ .append(cache.getCacheRealm().id)
+ .append(cache.isOwner())
+ .append(cache.isFound())
+ .append(cache.hasUserModifiedCoords())
+ .append(cache.getPersonalNote())
+ .append(cache.isLogOffline())
+ .append(cache.getListId() > 0)
+ .toHashCode();
+
+ final LayerDrawable ldFromCache = overlaysCache.get(hashcode);
+ if (ldFromCache != null) {
+ item.setMarker(ldFromCache);
return item;
}
- if (waypoint != null) {
-
- final CachesOverlayItemImpl item = mapItemFactory.getCachesOverlayItem(coord, null);
- Drawable[] layers = new Drawable[2];
- layers[0] = getResources().getDrawable(R.drawable.marker);
- layers[1] = getResources().getDrawable(waypoint.getWaypointType().markerId);
+ // Set initial capacities to the maximum of layers and insets to avoid dynamic reallocation
+ final ArrayList<Drawable> layers = new ArrayList<Drawable>(9);
+ final ArrayList<int[]> insets = new ArrayList<int[]>(8);
+
+ // background: disabled or not
+ final Drawable marker = getResources().getDrawable(cache.isDisabled() || cache.isArchived() ? cache.getCacheRealm().markerDisabledId : cache.getCacheRealm().markerId);
+ layers.add(marker);
+ final int resolution = marker.getIntrinsicWidth() > 40 ? 1 : 0;
+ // reliable or not
+ if (!cache.isReliableLatLon()) {
+ insets.add(INSET_RELIABLE[resolution]);
+ layers.add(getResources().getDrawable(R.drawable.marker_notreliable));
+ }
+ // cache type
+ layers.add(getResources().getDrawable(cache.getType().markerId));
+ insets.add(INSET_TYPE[resolution]);
+ // own
+ if (cache.isOwner()) {
+ layers.add(getResources().getDrawable(R.drawable.marker_own));
+ insets.add(INSET_OWN[resolution]);
+ // if not, checked if stored
+ } else if (cache.getListId() > 0) {
+ layers.add(getResources().getDrawable(R.drawable.marker_stored));
+ insets.add(INSET_OWN[resolution]);
+ }
+ // found
+ if (cache.isFound()) {
+ layers.add(getResources().getDrawable(R.drawable.marker_found));
+ insets.add(INSET_FOUND[resolution]);
+ // if not, perhaps logged offline
+ } else if (cache.isLogOffline()) {
+ layers.add(getResources().getDrawable(R.drawable.marker_found_offline));
+ insets.add(INSET_FOUND[resolution]);
+ }
+ // user modified coords
+ if (cache.hasUserModifiedCoords()) {
+ layers.add(getResources().getDrawable(R.drawable.marker_usermodifiedcoords));
+ insets.add(INSET_USERMODIFIEDCOORDS[resolution]);
+ }
+ // personal note
+ if (cache.getPersonalNote() != null) {
+ layers.add(getResources().getDrawable(R.drawable.marker_personalnote));
+ insets.add(INSET_PERSONALNOTE[resolution]);
+ }
+
+ final LayerDrawable ld = new LayerDrawable(layers.toArray(new Drawable[layers.size()]));
+
+ int index = 1;
+ for (final int[] inset : insets) {
+ ld.setLayerInset(index++, inset[0], inset[1], inset[2], inset[3]);
+ }
+
+ overlaysCache.put(hashcode, ld);
+
+ item.setMarker(ld);
+ return item;
+ }
- LayerDrawable ld = new LayerDrawable(layers);
- if (layers[0].getIntrinsicWidth() > 40) {
- ld.setLayerInset(1, 9, 12, 10, 13);
- } else {
- ld.setLayerInset(1, 9, 12, 8, 12);
- }
- item.setMarker(ld);
- return item;
+ private CachesOverlayItemImpl getWaypointItem(final Waypoint waypoint) {
+ final CachesOverlayItemImpl item = mapItemFactory.getCachesOverlayItem(waypoint, null);
+ final Drawable[] layers = new Drawable[] {
+ getResources().getDrawable(R.drawable.marker),
+ getResources().getDrawable(waypoint.getWaypointType().markerId)
+ };
+ final LayerDrawable ld = new LayerDrawable(layers);
+ if (layers[0].getIntrinsicWidth() > 40) {
+ ld.setLayerInset(1, 9, 12, 10, 13);
+ } else {
+ ld.setLayerInset(1, 9, 12, 8, 12);
}
-
- return null;
-
+ item.setMarker(ld);
+ return item;
}
}
diff --git a/main/src/cgeo/geocaching/maps/CachesOverlay.java b/main/src/cgeo/geocaching/maps/CachesOverlay.java
index fe1a19b..9bb4cef 100644
--- a/main/src/cgeo/geocaching/maps/CachesOverlay.java
+++ b/main/src/cgeo/geocaching/maps/CachesOverlay.java
@@ -5,7 +5,7 @@ import cgeo.geocaching.IWaypoint;
import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
import cgeo.geocaching.WaypointPopup;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.cgData;
import cgeo.geocaching.activity.Progress;
import cgeo.geocaching.connector.gc.GCMap;
@@ -227,7 +227,7 @@ public class CachesOverlay extends AbstractItemizedOverlay {
final IWaypoint coordinate = item.getCoord();
if (StringUtils.isNotBlank(coordinate.getCoordType()) && coordinate.getCoordType().equalsIgnoreCase("cache") && StringUtils.isNotBlank(coordinate.getGeocode())) {
- cgCache cache = cgData.loadCache(coordinate.getGeocode(), LoadFlags.LOAD_CACHE_OR_DB);
+ Geocache cache = cgData.loadCache(coordinate.getGeocode(), LoadFlags.LOAD_CACHE_OR_DB);
RequestDetailsThread requestDetailsThread = new RequestDetailsThread(cache);
if (!requestDetailsThread.requestRequired()) {
// don't show popup if we have enough details
@@ -237,7 +237,7 @@ public class CachesOverlay extends AbstractItemizedOverlay {
return true;
}
- if (coordinate.getCoordType() != null && coordinate.getCoordType().equalsIgnoreCase("waypoint") && coordinate.getId() > 0) {
+ if (coordinate.getCoordType() != null && coordinate.getCoordType().equalsIgnoreCase("waypoint") && coordinate.getId() >= 0) {
CGeoMap.markCacheAsDirty(coordinate.getGeocode());
WaypointPopup.startActivity(context, coordinate.getId(), coordinate.getGeocode());
} else {
@@ -280,9 +280,9 @@ public class CachesOverlay extends AbstractItemizedOverlay {
private class RequestDetailsThread extends Thread {
- private final cgCache cache;
+ private final Geocache cache;
- public RequestDetailsThread(cgCache cache) {
+ public RequestDetailsThread(Geocache cache) {
this.cache = cache;
}
diff --git a/main/src/cgeo/geocaching/network/Network.java b/main/src/cgeo/geocaching/network/Network.java
index 2545f4d..a4155be 100644
--- a/main/src/cgeo/geocaching/network/Network.java
+++ b/main/src/cgeo/geocaching/network/Network.java
@@ -383,13 +383,21 @@ public abstract class Network {
return response != null && response.getStatusLine().getStatusCode() == 200;
}
+ /**
+ * Get the result of a GET HTTP request returning a JSON body.
+ *
+ * @param uri the base URI of the GET HTTP request
+ * @param params the query parameters, or <code>null</code> if there are none
+ * @return a JSON object if the request was successful and the body could be decoded, <code>null</code> otherwise
+ */
public static JSONObject requestJSON(final String uri, final Parameters params) {
final HttpResponse response = request("GET", uri, params, new Parameters("Accept", "application/json, text/javascript, */*; q=0.01"), null);
- if (isSuccess(response)) {
+ final String responseData = Network.getResponseData(response, false);
+ if (responseData != null) {
try {
- return new JSONObject(Network.getResponseData(response));
+ return new JSONObject(responseData);
} catch (final JSONException e) {
- Log.e("Network.requestJSON", e);
+ Log.w("Network.requestJSON", e);
}
}
@@ -406,10 +414,26 @@ public abstract class Network {
}
}
+ /**
+ * Get the body of a HTTP response.
+ *
+ * {@link BaseUtils#replaceWhitespace(String)} will be called on the result
+ *
+ * @param response a HTTP response, which can be null
+ * @return the body if the response comes from a successful HTTP request, <code>null</code> otherwise
+ */
public static String getResponseData(final HttpResponse response) {
return Network.getResponseData(response, true);
}
+ /**
+ * Get the body of a HTTP response.
+ *
+ * @param response a HTTP response, which can be null
+ * @param replaceWhitespace <code>true</code> if {@link BaseUtils#replaceWhitespace(String)}
+ * should be called on the body
+ * @return the body if the response comes from a successful HTTP request, <code>null</code> otherwise
+ */
public static String getResponseData(final HttpResponse response, boolean replaceWhitespace) {
if (!isSuccess(response)) {
return null;
diff --git a/main/src/cgeo/geocaching/sorting/AbstractCacheComparator.java b/main/src/cgeo/geocaching/sorting/AbstractCacheComparator.java
index aebecd2..2dee713 100644
--- a/main/src/cgeo/geocaching/sorting/AbstractCacheComparator.java
+++ b/main/src/cgeo/geocaching/sorting/AbstractCacheComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.utils.Log;
@@ -11,7 +11,7 @@ import cgeo.geocaching.utils.Log;
public abstract class AbstractCacheComparator implements CacheComparator {
@Override
- public final int compare(final cgCache cache1, final cgCache cache2) {
+ public final int compare(final Geocache cache1, final Geocache cache2) {
try {
// first check that we have all necessary data for the comparison
if (!canCompare(cache1, cache2)) {
@@ -31,7 +31,7 @@ public abstract class AbstractCacheComparator implements CacheComparator {
* @param cache2
* @return
*/
- protected abstract boolean canCompare(final cgCache cache1, final cgCache cache2);
+ protected abstract boolean canCompare(final Geocache cache1, final Geocache cache2);
/**
* Compares two caches. Logging and exception handling is implemented outside this method already.
@@ -44,5 +44,5 @@ public abstract class AbstractCacheComparator implements CacheComparator {
* @return an integer < 0 if cache1 is less than cache2, 0 if they are equal, and > 0 if cache1 is greater than
* cache2.
*/
- protected abstract int compareCaches(final cgCache cache1, final cgCache cache2);
+ protected abstract int compareCaches(final Geocache cache1, final Geocache cache2);
}
diff --git a/main/src/cgeo/geocaching/sorting/CacheComparator.java b/main/src/cgeo/geocaching/sorting/CacheComparator.java
index c9b5150..7932729 100644
--- a/main/src/cgeo/geocaching/sorting/CacheComparator.java
+++ b/main/src/cgeo/geocaching/sorting/CacheComparator.java
@@ -2,8 +2,8 @@ package cgeo.geocaching.sorting;
import java.util.Comparator;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
-public interface CacheComparator extends Comparator<cgCache> {
+public interface CacheComparator extends Comparator<Geocache> {
}
diff --git a/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java b/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java
index bc63ef6..4d1a994 100644
--- a/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java
+++ b/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java
@@ -43,7 +43,7 @@ public class ComparatorUserInterface {
register(R.string.caches_sort_date_hidden, DateComparator.class);
register(R.string.caches_sort_difficulty, DifficultyComparator.class);
register(R.string.caches_sort_finds, FindsComparator.class);
- register(R.string.caches_sort_gccode, GeocodeComparator.class);
+ register(R.string.caches_sort_geocode, GeocodeComparator.class);
register(R.string.caches_sort_inventory, InventoryComparator.class);
register(R.string.caches_sort_name, NameComparator.class);
register(R.string.caches_sort_favorites, PopularityComparator.class);
diff --git a/main/src/cgeo/geocaching/sorting/DateComparator.java b/main/src/cgeo/geocaching/sorting/DateComparator.java
index 3136d47..3464103 100644
--- a/main/src/cgeo/geocaching/sorting/DateComparator.java
+++ b/main/src/cgeo/geocaching/sorting/DateComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.cgeoapplication;
import java.util.ArrayList;
@@ -12,19 +12,19 @@ import java.util.Date;
public class DateComparator extends AbstractCacheComparator {
@Override
- protected boolean canCompare(cgCache cache1, cgCache cache2) {
+ protected boolean canCompare(Geocache cache1, Geocache cache2) {
return true;
}
@Override
- protected int compareCaches(cgCache cache1, cgCache cache2) {
+ protected int compareCaches(Geocache cache1, Geocache cache2) {
final Date date1 = cache1.getHiddenDate();
final Date date2 = cache2.getHiddenDate();
if (date1 != null && date2 != null) {
final int dateDifference = date1.compareTo(date2);
// for equal dates, sort by distance
if (dateDifference == 0) {
- final ArrayList<cgCache> list = new ArrayList<cgCache>();
+ final ArrayList<Geocache> list = new ArrayList<Geocache>();
list.add(cache1);
list.add(cache2);
final DistanceComparator distanceComparator = new DistanceComparator(cgeoapplication.getInstance().currentGeo().getCoords(), list);
diff --git a/main/src/cgeo/geocaching/sorting/DifficultyComparator.java b/main/src/cgeo/geocaching/sorting/DifficultyComparator.java
index 123bab9..73d12fa 100644
--- a/main/src/cgeo/geocaching/sorting/DifficultyComparator.java
+++ b/main/src/cgeo/geocaching/sorting/DifficultyComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
/**
* sorts caches by difficulty
@@ -9,12 +9,12 @@ import cgeo.geocaching.cgCache;
public class DifficultyComparator extends AbstractCacheComparator {
@Override
- protected boolean canCompare(cgCache cache1, cgCache cache2) {
+ protected boolean canCompare(Geocache cache1, Geocache cache2) {
return cache1.getDifficulty() != 0.0 && cache2.getDifficulty() != 0.0;
}
@Override
- protected int compareCaches(final cgCache cache1, final cgCache cache2) {
+ protected int compareCaches(final Geocache cache1, final Geocache cache2) {
return Float.compare(cache1.getDifficulty(), cache2.getDifficulty());
}
} \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/sorting/DistanceComparator.java b/main/src/cgeo/geocaching/sorting/DistanceComparator.java
index 781359a..7b0afbb 100644
--- a/main/src/cgeo/geocaching/sorting/DistanceComparator.java
+++ b/main/src/cgeo/geocaching/sorting/DistanceComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.geopoint.Geopoint;
import java.util.List;
@@ -12,10 +12,10 @@ import java.util.List;
public class DistanceComparator extends AbstractCacheComparator {
final private Geopoint coords;
- final private List<cgCache> list;
+ final private List<Geocache> list;
private boolean cachedDistances;
- public DistanceComparator(final Geopoint coords, List<cgCache> list) {
+ public DistanceComparator(final Geopoint coords, List<Geocache> list) {
this.coords = coords;
this.list = list;
}
@@ -27,7 +27,7 @@ public class DistanceComparator extends AbstractCacheComparator {
if (cachedDistances) {
return;
}
- for (cgCache cache : list) {
+ for (Geocache cache : list) {
if (cache.getCoords() != null) {
cache.setDistance(coords.distanceTo(cache.getCoords()));
}
@@ -39,12 +39,12 @@ public class DistanceComparator extends AbstractCacheComparator {
}
@Override
- protected boolean canCompare(cgCache cache1, cgCache cache2) {
+ protected boolean canCompare(Geocache cache1, Geocache cache2) {
return true;
}
@Override
- protected int compareCaches(final cgCache cache1, final cgCache cache2) {
+ protected int compareCaches(final Geocache cache1, final Geocache cache2) {
calculateAllDistances();
if (cache1.getCoords() == null && cache2.getCoords() == null) {
return 0;
diff --git a/main/src/cgeo/geocaching/sorting/FindsComparator.java b/main/src/cgeo/geocaching/sorting/FindsComparator.java
index 47e3844..ba929b8 100644
--- a/main/src/cgeo/geocaching/sorting/FindsComparator.java
+++ b/main/src/cgeo/geocaching/sorting/FindsComparator.java
@@ -1,24 +1,24 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.cgData;
import cgeo.geocaching.enumerations.LogType;
public class FindsComparator extends AbstractCacheComparator {
@Override
- protected boolean canCompare(cgCache cache1, cgCache cache2) {
+ protected boolean canCompare(Geocache cache1, Geocache cache2) {
return cache1.getLogCounts() != null && cache2.getLogCounts() != null;
}
@Override
- protected int compareCaches(cgCache cache1, cgCache cache2) {
+ protected int compareCaches(Geocache cache1, Geocache cache2) {
int finds1 = getFindsCount(cache1);
int finds2 = getFindsCount(cache2);
return finds2 - finds1;
}
- private static int getFindsCount(cgCache cache) {
+ private static int getFindsCount(Geocache cache) {
if (cache.getLogCounts().isEmpty()) {
cache.setLogCounts(cgData.loadLogCounts(cache.getGeocode()));
}
diff --git a/main/src/cgeo/geocaching/sorting/GeocodeComparator.java b/main/src/cgeo/geocaching/sorting/GeocodeComparator.java
index fb93c0e..412649a 100644
--- a/main/src/cgeo/geocaching/sorting/GeocodeComparator.java
+++ b/main/src/cgeo/geocaching/sorting/GeocodeComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import org.apache.commons.lang3.StringUtils;
@@ -11,13 +11,13 @@ import org.apache.commons.lang3.StringUtils;
public class GeocodeComparator extends AbstractCacheComparator {
@Override
- protected boolean canCompare(cgCache cache1, cgCache cache2) {
+ protected boolean canCompare(Geocache cache1, Geocache cache2) {
return StringUtils.isNotBlank(cache1.getGeocode())
&& StringUtils.isNotBlank(cache2.getGeocode());
}
@Override
- protected int compareCaches(final cgCache cache1, final cgCache cache2) {
+ protected int compareCaches(final Geocache cache1, final Geocache cache2) {
final int lengthDiff = cache1.getGeocode().length() - cache2.getGeocode().length();
return lengthDiff != 0 ? lengthDiff : cache1.getGeocode().compareToIgnoreCase(cache2.getGeocode());
}
diff --git a/main/src/cgeo/geocaching/sorting/InventoryComparator.java b/main/src/cgeo/geocaching/sorting/InventoryComparator.java
index fb1360e..73ea2c5 100644
--- a/main/src/cgeo/geocaching/sorting/InventoryComparator.java
+++ b/main/src/cgeo/geocaching/sorting/InventoryComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
/**
* sorts caches by number of items in inventory
@@ -8,12 +8,12 @@ import cgeo.geocaching.cgCache;
public class InventoryComparator extends AbstractCacheComparator {
@Override
- protected boolean canCompare(final cgCache cache1, final cgCache cache2) {
+ protected boolean canCompare(final Geocache cache1, final Geocache cache2) {
return true;
}
@Override
- protected int compareCaches(final cgCache cache1, final cgCache cache2) {
+ protected int compareCaches(final Geocache cache1, final Geocache cache2) {
return cache2.getInventoryItems() - cache1.getInventoryItems();
}
}
diff --git a/main/src/cgeo/geocaching/sorting/InverseComparator.java b/main/src/cgeo/geocaching/sorting/InverseComparator.java
index d2fa085..1dc76e2 100644
--- a/main/src/cgeo/geocaching/sorting/InverseComparator.java
+++ b/main/src/cgeo/geocaching/sorting/InverseComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
/**
* comparator which inverses the sort order of the given other comparator
@@ -15,7 +15,7 @@ public class InverseComparator implements CacheComparator {
}
@Override
- public int compare(cgCache lhs, cgCache rhs) {
+ public int compare(Geocache lhs, Geocache rhs) {
return originalComparator.compare(rhs, lhs);
}
diff --git a/main/src/cgeo/geocaching/sorting/NameComparator.java b/main/src/cgeo/geocaching/sorting/NameComparator.java
index c32bc48..b432ad0 100644
--- a/main/src/cgeo/geocaching/sorting/NameComparator.java
+++ b/main/src/cgeo/geocaching/sorting/NameComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import org.apache.commons.lang3.StringUtils;
@@ -11,12 +11,12 @@ import org.apache.commons.lang3.StringUtils;
public class NameComparator extends AbstractCacheComparator {
@Override
- protected boolean canCompare(cgCache cache1, cgCache cache2) {
+ protected boolean canCompare(Geocache cache1, Geocache cache2) {
return StringUtils.isNotBlank(cache1.getName()) && StringUtils.isNotBlank(cache2.getName());
}
@Override
- protected int compareCaches(cgCache cache1, cgCache cache2) {
+ protected int compareCaches(Geocache cache1, Geocache cache2) {
return cache1.getNameForSorting().compareToIgnoreCase(cache2.getNameForSorting());
}
}
diff --git a/main/src/cgeo/geocaching/sorting/PopularityComparator.java b/main/src/cgeo/geocaching/sorting/PopularityComparator.java
index 62ad9a9..e256654 100644
--- a/main/src/cgeo/geocaching/sorting/PopularityComparator.java
+++ b/main/src/cgeo/geocaching/sorting/PopularityComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
/**
* sorts caches by popularity (favorite count)
@@ -9,12 +9,12 @@ import cgeo.geocaching.cgCache;
public class PopularityComparator extends AbstractCacheComparator {
@Override
- protected boolean canCompare(final cgCache cache1, final cgCache cache2) {
+ protected boolean canCompare(final Geocache cache1, final Geocache cache2) {
return true;
}
@Override
- protected int compareCaches(final cgCache cache1, final cgCache cache2) {
+ protected int compareCaches(final Geocache cache1, final Geocache cache2) {
return cache2.getFavoritePoints() - cache1.getFavoritePoints();
}
}
diff --git a/main/src/cgeo/geocaching/sorting/RatingComparator.java b/main/src/cgeo/geocaching/sorting/RatingComparator.java
index be071c5..72cf6c8 100644
--- a/main/src/cgeo/geocaching/sorting/RatingComparator.java
+++ b/main/src/cgeo/geocaching/sorting/RatingComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
/**
* sorts caches by gcvote.com rating
@@ -9,12 +9,12 @@ import cgeo.geocaching.cgCache;
public class RatingComparator extends AbstractCacheComparator {
@Override
- protected boolean canCompare(final cgCache cache1, final cgCache cache2) {
+ protected boolean canCompare(final Geocache cache1, final Geocache cache2) {
return true;
}
@Override
- protected int compareCaches(final cgCache cache1, final cgCache cache2) {
+ protected int compareCaches(final Geocache cache1, final Geocache cache2) {
final float rating1 = cache1.getRating();
final float rating2 = cache2.getRating();
// Voting can be disabled for caches, then assume an average rating instead
diff --git a/main/src/cgeo/geocaching/sorting/SizeComparator.java b/main/src/cgeo/geocaching/sorting/SizeComparator.java
index f946522..d128822 100644
--- a/main/src/cgeo/geocaching/sorting/SizeComparator.java
+++ b/main/src/cgeo/geocaching/sorting/SizeComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
/**
* sorts caches by size
@@ -9,12 +9,12 @@ import cgeo.geocaching.cgCache;
public class SizeComparator extends AbstractCacheComparator {
@Override
- protected boolean canCompare(cgCache cache1, cgCache cache2) {
+ protected boolean canCompare(Geocache cache1, Geocache cache2) {
return cache1.getSize() != null && cache2.getSize() != null;
}
@Override
- protected int compareCaches(cgCache cache1, cgCache cache2) {
+ protected int compareCaches(Geocache cache1, Geocache cache2) {
return cache2.getSize().comparable - cache1.getSize().comparable;
}
} \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/sorting/StateComparator.java b/main/src/cgeo/geocaching/sorting/StateComparator.java
index bda514f..b99c3c0 100644
--- a/main/src/cgeo/geocaching/sorting/StateComparator.java
+++ b/main/src/cgeo/geocaching/sorting/StateComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
/**
* sort caches by state (normal, disabled, archived)
@@ -9,16 +9,16 @@ import cgeo.geocaching.cgCache;
public class StateComparator extends AbstractCacheComparator {
@Override
- protected boolean canCompare(final cgCache cache1, final cgCache cache2) {
+ protected boolean canCompare(final Geocache cache1, final Geocache cache2) {
return true;
}
@Override
- protected int compareCaches(final cgCache cache1, final cgCache cache2) {
+ protected int compareCaches(final Geocache cache1, final Geocache cache2) {
return getState(cache1) - getState(cache2);
}
- private static int getState(final cgCache cache) {
+ private static int getState(final Geocache cache) {
if (cache.isDisabled()) {
return 1;
}
diff --git a/main/src/cgeo/geocaching/sorting/StorageTimeComparator.java b/main/src/cgeo/geocaching/sorting/StorageTimeComparator.java
index 32bef32..78ba742 100644
--- a/main/src/cgeo/geocaching/sorting/StorageTimeComparator.java
+++ b/main/src/cgeo/geocaching/sorting/StorageTimeComparator.java
@@ -1,16 +1,16 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
public class StorageTimeComparator extends AbstractCacheComparator {
@Override
- protected boolean canCompare(cgCache cache1, cgCache cache2) {
+ protected boolean canCompare(Geocache cache1, Geocache cache2) {
return true;
}
@Override
- protected int compareCaches(cgCache cache1, cgCache cache2) {
+ protected int compareCaches(Geocache cache1, Geocache cache2) {
if (cache1.getUpdated() < cache2.getUpdated()) {
return -1;
}
diff --git a/main/src/cgeo/geocaching/sorting/TerrainComparator.java b/main/src/cgeo/geocaching/sorting/TerrainComparator.java
index 9058a3c..be1e9bb 100644
--- a/main/src/cgeo/geocaching/sorting/TerrainComparator.java
+++ b/main/src/cgeo/geocaching/sorting/TerrainComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
/**
* sorts caches by terrain rating
@@ -9,12 +9,12 @@ import cgeo.geocaching.cgCache;
public class TerrainComparator extends AbstractCacheComparator {
@Override
- protected boolean canCompare(final cgCache cache1, final cgCache cache2) {
+ protected boolean canCompare(final Geocache cache1, final Geocache cache2) {
return cache1.getTerrain() != 0.0 && cache2.getTerrain() != 0.0;
}
@Override
- protected int compareCaches(final cgCache cache1, final cgCache cache2) {
+ protected int compareCaches(final Geocache cache1, final Geocache cache2) {
return Float.compare(cache1.getTerrain(), cache2.getTerrain());
}
}
diff --git a/main/src/cgeo/geocaching/sorting/VisitComparator.java b/main/src/cgeo/geocaching/sorting/VisitComparator.java
index 46d8c58..27d3170 100644
--- a/main/src/cgeo/geocaching/sorting/VisitComparator.java
+++ b/main/src/cgeo/geocaching/sorting/VisitComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
/**
* sorts caches by last visited date
@@ -9,12 +9,12 @@ import cgeo.geocaching.cgCache;
public class VisitComparator extends AbstractCacheComparator {
@Override
- protected boolean canCompare(final cgCache cache1, final cgCache cache2) {
+ protected boolean canCompare(final Geocache cache1, final Geocache cache2) {
return true;
}
@Override
- protected int compareCaches(final cgCache cache1, final cgCache cache2) {
+ protected int compareCaches(final Geocache cache1, final Geocache cache2) {
return Long.valueOf(cache2.getVisitedDate()).compareTo(cache1.getVisitedDate());
}
}
diff --git a/main/src/cgeo/geocaching/sorting/VoteComparator.java b/main/src/cgeo/geocaching/sorting/VoteComparator.java
index 09d1620..dc0304b 100644
--- a/main/src/cgeo/geocaching/sorting/VoteComparator.java
+++ b/main/src/cgeo/geocaching/sorting/VoteComparator.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.sorting;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
/**
* sorts caches by the users own voting (if available at all)
@@ -8,12 +8,12 @@ import cgeo.geocaching.cgCache;
public class VoteComparator extends AbstractCacheComparator {
@Override
- protected boolean canCompare(cgCache cache1, cgCache cache2) {
+ protected boolean canCompare(Geocache cache1, Geocache cache2) {
return true;
}
@Override
- protected int compareCaches(cgCache cache1, cgCache cache2) {
+ protected int compareCaches(Geocache cache1, Geocache cache2) {
// if there is no vote available, put that cache at the end of the list
return Float.compare(cache2.getMyVote(), cache1.getMyVote());
}
diff --git a/main/src/cgeo/geocaching/twitter/Twitter.java b/main/src/cgeo/geocaching/twitter/Twitter.java
index 668502f..f30830e 100644
--- a/main/src/cgeo/geocaching/twitter/Twitter.java
+++ b/main/src/cgeo/geocaching/twitter/Twitter.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.twitter;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.Settings;
import cgeo.geocaching.Trackable;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgData;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.LoadFlags;
@@ -56,7 +56,7 @@ public final class Twitter {
}
public static void postTweetCache(String geocode) {
- final cgCache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
String status;
final String url = cache.getUrl();
if (url.length() >= 100) {
diff --git a/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java b/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java
index 3bd6327..196d92d 100644
--- a/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java
+++ b/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java
@@ -92,7 +92,7 @@ public class TwitterAuthorizationActivity extends AbstractActivity {
super.onCreate(savedInstanceState);
setTheme();
- setContentView(R.layout.auth);
+ setContentView(R.layout.twitter_authorization_activity);
setTitle(res.getString(R.string.auth_twitter));
init();
diff --git a/main/src/cgeo/geocaching/ui/AnchorAwareLinkMovementMethod.java b/main/src/cgeo/geocaching/ui/AnchorAwareLinkMovementMethod.java
new file mode 100644
index 0000000..db82e5c
--- /dev/null
+++ b/main/src/cgeo/geocaching/ui/AnchorAwareLinkMovementMethod.java
@@ -0,0 +1,37 @@
+package cgeo.geocaching.ui;
+
+import android.text.Spannable;
+import android.text.method.LinkMovementMethod;
+import android.view.MotionEvent;
+import android.widget.TextView;
+
+/**
+ * <code>LinkMovementMethod</code> with built-in suppression of errors for links, where the URL cannot be handled
+ * correctly by Android.
+ *
+ */
+public class AnchorAwareLinkMovementMethod extends LinkMovementMethod {
+
+ private AnchorAwareLinkMovementMethod() {
+ // singleton
+ }
+
+ private static final class Holder {
+ // initialization on demand holder
+ private static final AnchorAwareLinkMovementMethod INSTANCE = new AnchorAwareLinkMovementMethod();
+ }
+
+ public static AnchorAwareLinkMovementMethod getInstance() {
+ return Holder.INSTANCE;
+ }
+
+ @Override
+ public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) {
+ try {
+ return super.onTouchEvent(widget, buffer, event);
+ } catch (Exception e) {
+ // local links to anchors don't work
+ }
+ return false;
+ }
+}
diff --git a/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java b/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
index 9745d63..e98bd77 100644
--- a/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
+++ b/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.ui;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Units;
@@ -35,7 +35,7 @@ public final class CacheDetailsCreator {
}
public TextView add(final int nameId, final CharSequence value) {
- final RelativeLayout layout = (RelativeLayout) activity.getLayoutInflater().inflate(R.layout.cache_layout, null);
+ final RelativeLayout layout = (RelativeLayout) activity.getLayoutInflater().inflate(R.layout.cache_information_item, null);
final TextView nameView = (TextView) layout.findViewById(R.id.name);
nameView.setText(res.getString(nameId));
lastValueView = (TextView) layout.findViewById(R.id.value);
@@ -49,7 +49,7 @@ public final class CacheDetailsCreator {
}
public RelativeLayout addStars(final int nameId, final float value) {
- final RelativeLayout layout = (RelativeLayout) activity.getLayoutInflater().inflate(R.layout.cache_layout, null);
+ final RelativeLayout layout = (RelativeLayout) activity.getLayoutInflater().inflate(R.layout.cache_information_item, null);
final TextView nameView = (TextView) layout.findViewById(R.id.name);
lastValueView = (TextView) layout.findViewById(R.id.value);
final LinearLayout layoutStars = (LinearLayout) layout.findViewById(R.id.stars);
@@ -79,7 +79,7 @@ public final class CacheDetailsCreator {
}
}
- public void addCacheState(cgCache cache) {
+ public void addCacheState(Geocache cache) {
if (cache.isLogOffline() || cache.isArchived() || cache.isDisabled() || cache.isPremiumMembersOnly() || cache.isFound()) {
final List<String> states = new ArrayList<String>(5);
if (cache.isLogOffline()) {
@@ -101,7 +101,7 @@ public final class CacheDetailsCreator {
}
}
- public void addRating(cgCache cache) {
+ public void addRating(Geocache cache) {
if (cache.getRating() > 0) {
final RelativeLayout itemLayout = addStars(R.string.cache_rating, cache.getRating());
if (cache.getVotes() > 0) {
@@ -112,25 +112,25 @@ public final class CacheDetailsCreator {
}
}
- public void addSize(cgCache cache) {
+ public void addSize(Geocache cache) {
if (null != cache.getSize() && cache.showSize()) {
add(R.string.cache_size, cache.getSize().getL10n());
}
}
- public void addDifficulty(cgCache cache) {
+ public void addDifficulty(Geocache cache) {
if (cache.getDifficulty() > 0) {
addStars(R.string.cache_difficulty, cache.getDifficulty());
}
}
- public void addTerrain(cgCache cache) {
+ public void addTerrain(Geocache cache) {
if (cache.getTerrain() > 0) {
addStars(R.string.cache_terrain, cache.getTerrain());
}
}
- public void addDistance(final cgCache cache, final TextView cacheDistanceView) {
+ public void addDistance(final Geocache cache, final TextView cacheDistanceView) {
Float distance = null;
if (cache.getCoords() != null) {
final Geopoint currentCoords = cgeoapplication.getInstance().currentGeo().getCoords();
diff --git a/main/src/cgeo/geocaching/ui/CacheListAdapter.java b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
index d6224a9..41e27a6 100644
--- a/main/src/cgeo/geocaching/ui/CacheListAdapter.java
+++ b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
@@ -1,10 +1,10 @@
package cgeo.geocaching.ui;
import cgeo.geocaching.CacheDetailActivity;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.IGeoData;
import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.CacheListType;
import cgeo.geocaching.enumerations.CacheType;
@@ -49,7 +49,7 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
-public class CacheListAdapter extends ArrayAdapter<cgCache> {
+public class CacheListAdapter extends ArrayAdapter<Geocache> {
private LayoutInflater inflater = null;
private CacheComparator cacheComparator = null;
@@ -58,14 +58,14 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
private long lastSort = 0L;
private boolean selectMode = false;
private IFilter currentFilter = null;
- private List<cgCache> originalList = null;
+ private List<Geocache> originalList = null;
final private Set<CompassMiniView> compasses = new LinkedHashSet<CompassMiniView>();
final private Set<DistanceView> distances = new LinkedHashSet<DistanceView>();
final private CacheListType cacheListType;
final private Resources res;
/** Resulting list of caches */
- final private List<cgCache> list;
+ final private List<Geocache> list;
private boolean inverseSort = false;
private static final int SWIPE_MIN_DISTANCE = 60;
@@ -107,7 +107,7 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
ImageView dirImg;
}
- public CacheListAdapter(final Activity activity, final List<cgCache> list, CacheListType cacheListType) {
+ public CacheListAdapter(final Activity activity, final List<Geocache> list, CacheListType cacheListType) {
super(activity, 0, list);
final IGeoData currentGeo = cgeoapplication.getInstance().currentGeo();
if (currentGeo != null) {
@@ -168,7 +168,7 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
return cacheComparator;
}
- public cgCache findCacheByGeocode(String geocode) {
+ public Geocache findCacheByGeocode(String geocode) {
for (int i = 0; i < getCount(); i++) {
if (getItem(i).getGeocode().equalsIgnoreCase(geocode)) {
return getItem(i);
@@ -183,7 +183,7 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
public void reFilter() {
if (currentFilter != null) {
// Back up the list again
- originalList = new ArrayList<cgCache>(list);
+ originalList = new ArrayList<Geocache>(list);
currentFilter.filter(list);
}
@@ -195,7 +195,7 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
public void setFilter(final IFilter filter) {
// Backup current caches list if it isn't backed up yet
if (originalList == null) {
- originalList = new ArrayList<cgCache>(list);
+ originalList = new ArrayList<Geocache>(list);
}
// If there is already a filter in place, this is a request to change or clear the filter, so we have to
@@ -224,7 +224,7 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
public int getCheckedCount() {
int checked = 0;
- for (cgCache cache : list) {
+ for (Geocache cache : list) {
if (cache.isStatusChecked()) {
checked++;
}
@@ -236,7 +236,7 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
this.selectMode = selectMode;
if (!selectMode) {
- for (final cgCache cache : list) {
+ for (final Geocache cache : list) {
cache.setStatusChecked(false);
}
}
@@ -252,7 +252,7 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
}
public void invertSelection() {
- for (cgCache cache : list) {
+ for (Geocache cache : list) {
cache.setStatusChecked(!cache.isStatusChecked());
}
notifyDataSetChanged();
@@ -302,7 +302,7 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
if (coords == null) {
return;
}
- final ArrayList<cgCache> oldList = new ArrayList<cgCache>(list);
+ final ArrayList<Geocache> oldList = new ArrayList<Geocache>(list);
Collections.sort(list, getPotentialInversion(new DistanceComparator(coords, list)));
// avoid an update if the list has not changed due to location update
@@ -313,7 +313,7 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
lastSort = System.currentTimeMillis();
}
- private Comparator<? super cgCache> getPotentialInversion(final CacheComparator comparator) {
+ private Comparator<? super Geocache> getPotentialInversion(final CacheComparator comparator) {
if (inverseSort) {
return new InverseComparator(comparator);
}
@@ -346,7 +346,7 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
return null;
}
- final cgCache cache = getItem(position);
+ final Geocache cache = getItem(position);
View v = rowView;
@@ -533,7 +533,7 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
return v;
}
- private static Drawable getCacheIcon(cgCache cache) {
+ private static Drawable getCacheIcon(Geocache cache) {
int hashCode = getIconHashCode(cache.getType(), cache.hasUserModifiedCoords() || cache.hasFinalDefined());
final Drawable drawable = gcIconDrawables.get(hashCode);
if (drawable != null) {
@@ -554,9 +554,9 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
private static class SelectionCheckBoxListener implements View.OnClickListener {
- private final cgCache cache;
+ private final Geocache cache;
- public SelectionCheckBoxListener(cgCache cache) {
+ public SelectionCheckBoxListener(Geocache cache) {
this.cache = cache;
}
@@ -571,9 +571,9 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
private boolean touch = true;
private final GestureDetector gestureDetector;
- private final cgCache cache;
+ private final Geocache cache;
- public TouchListener(final cgCache cache) {
+ public TouchListener(final Geocache cache) {
this.cache = cache;
final FlingGesture dGesture = new FlingGesture(cache);
gestureDetector = new GestureDetector(getContext(), dGesture);
@@ -622,9 +622,9 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
private class FlingGesture extends GestureDetector.SimpleOnGestureListener {
- private final cgCache cache;
+ private final Geocache cache;
- public FlingGesture(cgCache cache) {
+ public FlingGesture(Geocache cache) {
this.cache = cache;
}
@@ -659,13 +659,13 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
}
}
- public List<cgCache> getFilteredList() {
+ public List<Geocache> getFilteredList() {
return list;
}
- public List<cgCache> getCheckedCaches() {
- final ArrayList<cgCache> result = new ArrayList<cgCache>();
- for (cgCache cache : list) {
+ public List<Geocache> getCheckedCaches() {
+ final ArrayList<Geocache> result = new ArrayList<Geocache>();
+ for (Geocache cache : list) {
if (cache.isStatusChecked()) {
result.add(cache);
}
@@ -673,12 +673,12 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
return result;
}
- public List<cgCache> getCheckedOrAllCaches() {
- final List<cgCache> result = getCheckedCaches();
+ public List<Geocache> getCheckedOrAllCaches() {
+ final List<Geocache> result = getCheckedCaches();
if (!result.isEmpty()) {
return result;
}
- return new ArrayList<cgCache>(list);
+ return new ArrayList<Geocache>(list);
}
public int getCheckedOrAllCount() {
diff --git a/main/src/cgeo/geocaching/ui/Formatter.java b/main/src/cgeo/geocaching/ui/Formatter.java
index 4d23952..412b993 100644
--- a/main/src/cgeo/geocaching/ui/Formatter.java
+++ b/main/src/cgeo/geocaching/ui/Formatter.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.ui;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.Waypoint;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.CacheListType;
@@ -109,7 +109,7 @@ public abstract class Formatter {
return DateUtils.formatDateTime(context, date, DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_ABBREV_ALL);
}
- public static String formatCacheInfoLong(cgCache cache, CacheListType cacheListType) {
+ public static String formatCacheInfoLong(Geocache cache, CacheListType cacheListType) {
final ArrayList<String> infos = new ArrayList<String>();
if (StringUtils.isNotBlank(cache.getGeocode())) {
infos.add(cache.getGeocode());
@@ -126,7 +126,7 @@ public abstract class Formatter {
return StringUtils.join(infos, Formatter.SEPARATOR);
}
- public static String formatCacheInfoShort(cgCache cache) {
+ public static String formatCacheInfoShort(Geocache cache) {
final ArrayList<String> infos = new ArrayList<String>();
if (cache.hasDifficulty()) {
infos.add("D " + String.format("%.1f", cache.getDifficulty()));
@@ -144,7 +144,7 @@ public abstract class Formatter {
return StringUtils.join(infos, Formatter.SEPARATOR);
}
- public static String formatCacheInfoHistory(cgCache cache) {
+ public static String formatCacheInfoHistory(Geocache cache) {
final ArrayList<String> infos = new ArrayList<String>(3);
infos.add(StringUtils.upperCase(cache.getGeocode()));
infos.add(Formatter.formatDate(cache.getVisitedDate()));
diff --git a/main/src/cgeo/geocaching/ui/LoggingUI.java b/main/src/cgeo/geocaching/ui/LoggingUI.java
index eaa25ef..2615947 100644
--- a/main/src/cgeo/geocaching/ui/LoggingUI.java
+++ b/main/src/cgeo/geocaching/ui/LoggingUI.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.ui;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgData;
import cgeo.geocaching.activity.IAbstractActivity;
import cgeo.geocaching.enumerations.LogType;
@@ -65,7 +65,7 @@ public class LoggingUI extends AbstractUIFactory {
private static final int MENU_LOG_VISIT = 100;
private static final int MENU_LOG_VISIT_OFFLINE = 101;
- public static void addMenuItems(final Menu menu, final cgCache cache) {
+ public static void addMenuItems(final Menu menu, final Geocache cache) {
if (cache == null) {
return;
}
@@ -80,7 +80,7 @@ public class LoggingUI extends AbstractUIFactory {
}
}
- public static boolean onMenuItemSelected(final MenuItem item, IAbstractActivity activity, cgCache cache) {
+ public static boolean onMenuItemSelected(final MenuItem item, IAbstractActivity activity, Geocache cache) {
switch (item.getItemId()) {
case MENU_LOG_VISIT:
cache.logVisit(activity);
@@ -93,7 +93,7 @@ public class LoggingUI extends AbstractUIFactory {
}
}
- private static void showOfflineMenu(final cgCache cache, final Activity activity) {
+ private static void showOfflineMenu(final Geocache cache, final Activity activity) {
final LogEntry currentLog = cgData.loadLogOffline(cache.getGeocode());
final LogType currentLogType = currentLog == null ? null : currentLog.type;
diff --git a/main/src/cgeo/geocaching/cgeocoords.java b/main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java
index 0c2ffbf..dada8fd 100644
--- a/main/src/cgeo/geocaching/cgeocoords.java
+++ b/main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java
@@ -1,5 +1,9 @@
-package cgeo.geocaching;
+package cgeo.geocaching.ui.dialog;
+import cgeo.geocaching.Geocache;
+import cgeo.geocaching.IGeoData;
+import cgeo.geocaching.R;
+import cgeo.geocaching.Settings;
import cgeo.geocaching.Settings.coordInputFormatEnum;
import cgeo.geocaching.activity.AbstractActivity;
import cgeo.geocaching.activity.ActivityMixin;
@@ -24,11 +28,11 @@ import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
-public class cgeocoords extends Dialog {
+public class CoordinatesInputDialog extends Dialog {
final private AbstractActivity context;
final private IGeoData geo;
- final private cgCache cache;
+ final private Geocache cache;
private Geopoint gp;
private EditText eLat, eLon;
@@ -42,8 +46,8 @@ public class cgeocoords extends Dialog {
private coordInputFormatEnum currentFormat = null;
- public cgeocoords(final AbstractActivity context, final cgCache cache, final Geopoint gp, final IGeoData geo) {
- super(context);
+ public CoordinatesInputDialog(final AbstractActivity context, final Geocache cache, final Geopoint gp, final IGeoData geo) {
+ super(context, ActivityMixin.getTheme());
this.context = context;
this.geo = geo;
this.cache = cache;
diff --git a/main/src/cgeo/geocaching/ui/CustomProgressDialog.java b/main/src/cgeo/geocaching/ui/dialog/CustomProgressDialog.java
index f7772be..c2b722c 100644
--- a/main/src/cgeo/geocaching/ui/CustomProgressDialog.java
+++ b/main/src/cgeo/geocaching/ui/dialog/CustomProgressDialog.java
@@ -1,5 +1,6 @@
-package cgeo.geocaching.ui;
+package cgeo.geocaching.ui.dialog;
+import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.utils.Log;
import android.app.ProgressDialog;
@@ -18,7 +19,7 @@ import java.lang.reflect.Method;
public class CustomProgressDialog extends ProgressDialog {
public CustomProgressDialog(Context context) {
- super(context);
+ super(context, ActivityMixin.getTheme());
}
@Override
diff --git a/main/src/cgeo/geocaching/ui/DateDialog.java b/main/src/cgeo/geocaching/ui/dialog/DateDialog.java
index 5dfd9b9..a9c579c 100644
--- a/main/src/cgeo/geocaching/ui/DateDialog.java
+++ b/main/src/cgeo/geocaching/ui/dialog/DateDialog.java
@@ -1,4 +1,4 @@
-package cgeo.geocaching.ui;
+package cgeo.geocaching.ui.dialog;
import cgeo.geocaching.R;
diff --git a/main/src/cgeo/geocaching/ui/EditorDialog.java b/main/src/cgeo/geocaching/ui/dialog/EditorDialog.java
index 6dcf546..4db69e5 100644
--- a/main/src/cgeo/geocaching/ui/EditorDialog.java
+++ b/main/src/cgeo/geocaching/ui/dialog/EditorDialog.java
@@ -1,7 +1,8 @@
-package cgeo.geocaching.ui;
+package cgeo.geocaching.ui.dialog;
import cgeo.geocaching.CacheDetailActivity;
import cgeo.geocaching.R;
+import cgeo.geocaching.activity.ActivityMixin;
import android.app.Dialog;
import android.os.Bundle;
@@ -17,7 +18,7 @@ public class EditorDialog extends Dialog {
private EditorUpdate editorUpdate;
public EditorDialog(CacheDetailActivity cacheDetailActivity, CharSequence editable) {
- super(cacheDetailActivity);
+ super(cacheDetailActivity, ActivityMixin.getTheme());
this.editorText = editable;
}
diff --git a/main/src/cgeo/geocaching/ui/dialog/LiveMapInfoDialogBuilder.java b/main/src/cgeo/geocaching/ui/dialog/LiveMapInfoDialogBuilder.java
new file mode 100644
index 0000000..862b1a0
--- /dev/null
+++ b/main/src/cgeo/geocaching/ui/dialog/LiveMapInfoDialogBuilder.java
@@ -0,0 +1,45 @@
+package cgeo.geocaching.ui.dialog;
+
+import cgeo.geocaching.R;
+import cgeo.geocaching.Settings;
+import cgeo.geocaching.cgeoapplication;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.view.ContextThemeWrapper;
+import android.view.View;
+import android.widget.CheckBox;
+
+public class LiveMapInfoDialogBuilder {
+
+ public static AlertDialog create(Activity activity) {
+ final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+
+ // AlertDialog has always dark style, so we have to apply it as well always
+ final View layout = View.inflate(new ContextThemeWrapper(activity, R.style.dark), R.layout.livemapinfo, null);
+ builder.setView(layout);
+
+ final CheckBox checkBoxHide = (CheckBox) layout.findViewById(R.id.live_map_hint_hide);
+
+ final int showCount = Settings.getLiveMapHintShowCount();
+ if (showCount > 2) {
+ checkBoxHide.setVisibility(View.VISIBLE);
+ }
+ Settings.setLiveMapHintShowCount(showCount + 1);
+
+ builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ cgeoapplication.getInstance().setLiveMapHintShown();
+ if (checkBoxHide.getVisibility() == View.VISIBLE && checkBoxHide.isChecked()) {
+ Settings.setHideLiveHint(true);
+ }
+ }
+ });
+ return builder.create();
+ }
+
+}
diff --git a/main/src/cgeo/geocaching/utils/ApplicationSettings.java b/main/src/cgeo/geocaching/utils/ApplicationSettings.java
new file mode 100644
index 0000000..99d3142
--- /dev/null
+++ b/main/src/cgeo/geocaching/utils/ApplicationSettings.java
@@ -0,0 +1,24 @@
+package cgeo.geocaching.utils;
+
+/**
+ * This utility class contains static settings that do not require a context or
+ * an application. It may not depend or use any other package from c:geo.
+ * <br/>
+ * It is used, for example, to get some settings for the BackupAgent. In this case,
+ * no application is instantiated by the OS.
+ */
+
+public class ApplicationSettings {
+
+ /**
+ * Get the name of the preferences file.
+ *
+ * @return the name of the shared preferences file without the extension
+ */
+ public static String getPreferencesName() {
+ // There is currently no Android API to get the file name of the shared preferences. Let's hardcode
+ // it without needing a cgeoapplication instance.
+ return "cgeo.geocaching_preferences";
+ }
+
+}
diff --git a/main/src/cgeo/geocaching/utils/LazyInitializedList.java b/main/src/cgeo/geocaching/utils/LazyInitializedList.java
index 25af811..27649e8 100644
--- a/main/src/cgeo/geocaching/utils/LazyInitializedList.java
+++ b/main/src/cgeo/geocaching/utils/LazyInitializedList.java
@@ -1,103 +1,63 @@
package cgeo.geocaching.utils;
+import java.util.AbstractList;
import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
import java.util.List;
+import java.util.concurrent.Callable;
-public abstract class LazyInitializedList<ElementType> implements Iterable<ElementType> {
+public abstract class LazyInitializedList<ElementType> extends AbstractList<ElementType> implements Callable<List<ElementType>> {
private volatile List<ElementType> list;
- private void initializeList() {
+ private List<ElementType> getList() {
if (list == null) {
- synchronized (this) {
- if (list == null) {
- list = loadFromDatabase();
+ synchronized(this) {
+ try {
+ list = call();
+ if (list == null) {
+ Log.e("LazyInitializedList.getList: null result");
+ }
+ } catch (final Exception e) {
+ Log.e("LazyInitializedList.getList", e);
}
}
}
+ return list;
}
- protected abstract List<ElementType> loadFromDatabase();
-
- public void add(final ElementType element) {
- initializeList();
- list.add(element);
- }
-
- public void prepend(final ElementType element) {
- initializeList();
- list.add(0, element);
- }
-
- public void set(final List<ElementType> elements) {
- if (elements != null) {
- list = new ArrayList<ElementType>(elements);
- } else {
- list = new ArrayList<ElementType>();
- }
- }
-
- public void set(LazyInitializedList<ElementType> other) {
- if (other != null) {
- list = new ArrayList<ElementType>(other.asList());
- } else {
- list = new ArrayList<ElementType>();
- }
+ @Override
+ public boolean add(final ElementType element) {
+ return getList().add(element);
}
- public boolean isEmpty() {
- initializeList();
- return list.isEmpty();
+ @Override
+ public ElementType set(final int index, final ElementType element) {
+ return getList().set(index, element);
}
+ @Override
public ElementType remove(final int index) {
- initializeList();
- return list.remove(index);
+ return getList().remove(index);
}
+ @Override
public void add(int index, final ElementType element) {
- initializeList();
- list.add(index, element);
+ getList().add(index, element);
}
+ @Override
public int size() {
- initializeList();
- return list.size();
+ return getList().size();
}
@Override
- public Iterator<ElementType> iterator() {
- initializeList();
- return list.iterator();
- }
-
public ElementType get(final int index) {
- initializeList();
- return list.get(index);
+ return getList().get(index);
}
- public boolean contains(final ElementType element) {
- initializeList();
- return list.contains(element);
- }
-
- public boolean isNotEmpty() {
- initializeList();
- return !list.isEmpty();
- }
-
- /**
- * @return an unmodifiable list of the elements
- */
- public List<ElementType> asList() {
- initializeList();
- return Collections.unmodifiableList(list);
+ @Override
+ public void clear() {
+ list = new ArrayList<ElementType>();
}
- public int indexOf(ElementType element) {
- initializeList();
- return list.indexOf(element);
- }
}
diff --git a/main/src/cgeo/geocaching/utils/LeastRecentlyUsedSet.java b/main/src/cgeo/geocaching/utils/LeastRecentlyUsedSet.java
index aafce4f..698d38a 100644
--- a/main/src/cgeo/geocaching/utils/LeastRecentlyUsedSet.java
+++ b/main/src/cgeo/geocaching/utils/LeastRecentlyUsedSet.java
@@ -9,7 +9,7 @@ import java.util.List;
/**
* Synchronized set wrapper for the LeastRecentlyUsedMap.
- *
+ *
* This code is heavily based on the HashSet code that represent Map as a Set.
* Unfortunately HashSet does not allow to use a custom Map as its Storage.
* Therefore overriding removeEldestEntry() is impossible for a normal LinkedHashSet.
@@ -50,7 +50,7 @@ public class LeastRecentlyUsedSet<E> extends AbstractSet<E>
/**
* Synchronized access to set size
* Copy of the HashSet code if size()
- *
+ *
* @see HashSet
*/
@Override
@@ -61,7 +61,7 @@ public class LeastRecentlyUsedSet<E> extends AbstractSet<E>
/**
* Synchronized check of set emptiness
* Copy of the HashSet code if isEmpty()
- *
+ *
* @see HashSet
*/
@Override
@@ -72,7 +72,7 @@ public class LeastRecentlyUsedSet<E> extends AbstractSet<E>
/**
* Synchronized check for containment
* Copy of the HashSet code if contains()
- *
+ *
* @see HashSet
*/
@Override
@@ -83,18 +83,21 @@ public class LeastRecentlyUsedSet<E> extends AbstractSet<E>
/**
* Synchronized addition of an item
* Copy of the HashSet code if add()
- *
+ *
* @see HashSet
*/
@Override
public synchronized boolean add(E e) {
+ if (e == null) {
+ throw new IllegalArgumentException("LeastRecentlyUsedSet cannot take null element");
+ }
return map.put(e, PRESENT) == null;
}
/**
* Synchronized removal of a contained item
* Copy of the HashSet code if remove()
- *
+ *
* @see HashSet
*/
@Override
@@ -117,7 +120,7 @@ public class LeastRecentlyUsedSet<E> extends AbstractSet<E>
/**
* Synchronized clearing of the set
* Copy of the HashSet code if clear()
- *
+ *
* @see HashSet
*/
@Override
@@ -128,7 +131,7 @@ public class LeastRecentlyUsedSet<E> extends AbstractSet<E>
/**
* (synchronized) Clone of the set
* Copy of the HashSet code if clone()
- *
+ *
* @see HashSet
*/
@Override
diff --git a/main/src/cgeo/geocaching/utils/Log.java b/main/src/cgeo/geocaching/utils/Log.java
index 6213661..6d57b75 100644
--- a/main/src/cgeo/geocaching/utils/Log.java
+++ b/main/src/cgeo/geocaching/utils/Log.java
@@ -1,5 +1,11 @@
package cgeo.geocaching.utils;
+import android.os.Environment;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
final public class Log {
@@ -9,6 +15,7 @@ final public class Log {
* the debug flag is cached here so that we don't need to access the settings every time we have to evaluate it
*/
private static boolean isDebug = true;
+ private static boolean first = true;
public static boolean isDebug() {
return isDebug;
@@ -74,4 +81,31 @@ final public class Log {
public static void e(final String msg, final Throwable t) {
android.util.Log.e(TAG, msg, t);
}
+
+ /**
+ * Log the whole content of a string into "/sdcard/cgeo-debug.log".
+ * <br/>
+ * Sometimes, the string we want to work on while debugging or developing a new feature is too long to
+ * be fully stored in Android logcat. This method will log the content of the string in a file named
+ * "/sdcard/cgeo-debug.log". The file will be reset at every run, and if called several times during a run,
+ * the contents will be appended to one another.
+ * <br/>
+ * <strong>This method should never be called in production.</strong>
+ *
+ * @param msg the message to log, or to add to the log if other messages have been stored in the same run
+ */
+ public synchronized static void logToFile(final String msg) {
+ final File file = new File(Environment.getExternalStorageDirectory(), "cgeo-debug.log");
+ if (first) {
+ first = false;
+ file.delete();
+ }
+ try {
+ final Writer writer = new FileWriter(file, true);
+ writer.write(msg);
+ writer.close();
+ } catch (final IOException e) {
+ Log.e("logToFile: cannot write to " + file, e);
+ }
+ }
}
diff --git a/main/src/cgeo/geocaching/utils/LogTemplateProvider.java b/main/src/cgeo/geocaching/utils/LogTemplateProvider.java
index 7171fde..0a8e547 100644
--- a/main/src/cgeo/geocaching/utils/LogTemplateProvider.java
+++ b/main/src/cgeo/geocaching/utils/LogTemplateProvider.java
@@ -3,7 +3,7 @@ package cgeo.geocaching.utils;
import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
import cgeo.geocaching.Trackable;
-import cgeo.geocaching.cgCache;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.connector.gc.GCConstants;
import cgeo.geocaching.connector.gc.Login;
import cgeo.geocaching.network.Network;
@@ -28,11 +28,11 @@ public class LogTemplateProvider {
*
*/
public static class LogContext {
- private cgCache cache;
+ private Geocache cache;
private Trackable trackable;
private boolean offline = false;
- public LogContext(final cgCache cache) {
+ public LogContext(final Geocache cache) {
this(cache, false);
}
@@ -44,12 +44,12 @@ public class LogTemplateProvider {
this(null, offline);
}
- public LogContext(final cgCache cache, boolean offline) {
+ public LogContext(final Geocache cache, boolean offline) {
this.cache = cache;
this.offline = offline;
}
- public cgCache getCache() {
+ public Geocache getCache() {
return cache;
}
@@ -152,7 +152,7 @@ public class LogTemplateProvider {
if (trackable != null) {
return trackable.getOwner();
}
- cgCache cache = context.getCache();
+ Geocache cache = context.getCache();
if (cache != null) {
return cache.getOwnerDisplayName();
}
diff --git a/main/src/cgeo/geocaching/utils/XmlUtils.java b/main/src/cgeo/geocaching/utils/XmlUtils.java
new file mode 100644
index 0000000..4e08f42
--- /dev/null
+++ b/main/src/cgeo/geocaching/utils/XmlUtils.java
@@ -0,0 +1,41 @@
+package cgeo.geocaching.utils;
+
+import org.xmlpull.v1.XmlSerializer;
+
+import java.io.IOException;
+
+public class XmlUtils {
+
+ private XmlUtils() {
+ // Do not instantiate
+ }
+
+ /**
+ * Insert an attribute-less tag with enclosed text in a XML serializer output.
+ *
+ * @param serializer an XML serializer
+ * @param prefix an XML prefix, see {@link XmlSerializer#startTag(String, String)}
+ * @param tag an XML tag
+ * @param text some text to insert
+ * @throws IOException
+ */
+ public static void simpleText(final XmlSerializer serializer, final String prefix, final String tag, final String text) throws IOException {
+ serializer.startTag(prefix, tag);
+ serializer.text(text);
+ serializer.endTag(prefix, tag);
+ }
+
+ /**
+ * Insert pairs of attribute-less tags and enclosed texts in a XML serializer output
+ *
+ * @param serializer an XML serializer
+ * @param prefix an XML prefix, see {@link XmlSerializer#startTag(String, String)} shared by all tags
+ * @param tagAndText an XML tag, the corresponding text, another XML tag, the corresponding text, …
+ * @throws IOException
+ */
+ public static void multipleTexts(final XmlSerializer serializer, final String prefix, final String... tagAndText) throws IOException {
+ for (int i = 0; i < tagAndText.length; i += 2) {
+ simpleText(serializer, prefix, tagAndText[i], tagAndText[i+1]);
+ }
+ }
+}