Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladiMihaylenko <vxmihaylenko@gmail.com>2017-06-19 19:57:05 +0300
committerYuri Gorshenin <mipt.vi002@gmail.com>2017-07-05 16:41:38 +0300
commit4302e1a9b4b4bc85b35644409764406e0edb89b5 (patch)
tree36b9e4b39622882846a09439f71fed1e1ceeebb1
parent0df4620d1e2f1c0db9d0585856043dd1353bd706 (diff)
Ugc.
-rw-r--r--iphone/Maps/Bridging-Header.h1
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/Contents.json6
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/Contents.json26
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/ic_ugc_thumb_down.pngbin0 -> 187 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/ic_ugc_thumb_down@2x.pngbin0 -> 298 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/ic_ugc_thumb_down@3x.pngbin0 -> 381 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/Contents.json26
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/ic_ugc_thumb_up.pngbin0 -> 184 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/ic_ugc_thumb_up@2x.pngbin0 -> 281 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/ic_ugc_thumb_up@3x.pngbin0 -> 391 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/rating_average_dark.pngbin0 -> 503 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/rating_average_dark@2x.pngbin0 -> 989 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/rating_average_dark@3x.pngbin0 -> 1452 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/rating_average_highlited_dark.pngbin0 -> 431 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/rating_average_highlited_dark@2x.pngbin0 -> 787 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/rating_average_highlited_dark@3x.pngbin0 -> 1132 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/rating_avarage_highlited_light.pngbin0 -> 384 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/rating_avarage_highlited_light@2x.pngbin0 -> 672 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/rating_avarage_highlited_light@3x.pngbin0 -> 951 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/rating_avarage_light.pngbin0 -> 451 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/rating_avarage_light@2x.pngbin0 -> 843 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/rating_avarage_light@3x.pngbin0 -> 1282 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/rating_average_selected.pngbin0 -> 710 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/rating_average_selected@2x.pngbin0 -> 1335 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/rating_average_selected@3x.pngbin0 -> 1945 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/rating_average_selected.pngbin0 -> 710 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/rating_average_selected@2x.pngbin0 -> 1335 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/rating_average_selected@3x.pngbin0 -> 1945 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/rating_bad_dark.pngbin0 -> 543 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/rating_bad_dark@2x.pngbin0 -> 1103 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/rating_bad_dark@3x.pngbin0 -> 1612 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/rating_bad_highlited_dark.pngbin0 -> 461 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/rating_bad_highlited_dark@2x.pngbin0 -> 878 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/rating_bad_highlited_dark@3x.pngbin0 -> 1233 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/rating_bad_highlited_light.pngbin0 -> 407 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/rating_bad_highlited_light@2x.pngbin0 -> 734 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/rating_bad_highlited_light@3x.pngbin0 -> 1025 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/rating_bad_light.pngbin0 -> 485 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/rating_bad_light@2x.pngbin0 -> 950 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/rating_bad_light@3x.pngbin0 -> 1410 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/rating_bad_selected.pngbin0 -> 786 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/rating_bad_selected@2x.pngbin0 -> 1549 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/rating_bad_selected@3x.pngbin0 -> 2103 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/rating_bad_selected.pngbin0 -> 786 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/rating_bad_selected@2x.pngbin0 -> 1549 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/rating_bad_selected@3x.pngbin0 -> 2103 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/rating_exellent_dark.pngbin0 -> 557 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/rating_exellent_dark@2x.pngbin0 -> 1107 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/rating_exellent_dark@3x.pngbin0 -> 1677 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/rating_exellent_highlited_dark.pngbin0 -> 470 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/rating_exellent_highlited_dark@2x.pngbin0 -> 895 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/rating_exellent_highlited_dark@3x.pngbin0 -> 1261 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/rating_exellent_highlited_light.pngbin0 -> 399 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/rating_exellent_highlited_light@2x.pngbin0 -> 732 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/rating_exellent_highlited_light@3x.pngbin0 -> 1037 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/rating_exellent_light.pngbin0 -> 489 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/rating_exellent_light@2x.pngbin0 -> 960 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/rating_exellent_light@3x.pngbin0 -> 1434 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/rating_exellent_selected.pngbin0 -> 825 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/rating_exellent_selected@2x.pngbin0 -> 1568 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/rating_exellent_selected@3x.pngbin0 -> 2259 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/rating_exellent_selected.pngbin0 -> 825 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/rating_exellent_selected@2x.pngbin0 -> 1568 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/rating_exellent_selected@3x.pngbin0 -> 2259 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/rating_good_dark.pngbin0 -> 539 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/rating_good_dark@2x.pngbin0 -> 1105 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/rating_good_dark@3x.pngbin0 -> 1606 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/rating_good_highlited_dark.pngbin0 -> 459 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/rating_good_highlited_dark@2x.pngbin0 -> 878 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/rating_good_highlited_dark@3x.pngbin0 -> 1233 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/rating_good_highlited_light.pngbin0 -> 400 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/rating_good_highlited_light@2x.pngbin0 -> 726 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/rating_good_highlited_light@3x.pngbin0 -> 1017 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/rating_good_light.pngbin0 -> 484 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/rating_good_light@2x.pngbin0 -> 947 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/rating_good_light@3x.pngbin0 -> 1406 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/rating_good_selected.pngbin0 -> 814 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/rating_good_selected@2x.pngbin0 -> 1571 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/rating_good_selected@3x.pngbin0 -> 2160 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/rating_good_selected.pngbin0 -> 814 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/rating_good_selected@2x.pngbin0 -> 1571 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/rating_good_selected@3x.pngbin0 -> 2160 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/rating_horrible_dark.pngbin0 -> 585 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/rating_horrible_dark@2x.pngbin0 -> 1172 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/rating_horrible_dark@3x.pngbin0 -> 1798 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/rating_horrible_highlited_dark.pngbin0 -> 486 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/rating_horrible_highlited_dark@2x.pngbin0 -> 950 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/rating_horrible_highlited_dark@3x.pngbin0 -> 1345 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/rating_horrible_highlited_light.pngbin0 -> 431 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/rating_horrible_highlited_light@2x.pngbin0 -> 748 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/rating_horrible_highlited_light@3x.pngbin0 -> 1101 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/rating_horrible_light.pngbin0 -> 515 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/rating_horrible_light@2x.pngbin0 -> 998 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/rating_horrible_light@3x.pngbin0 -> 1534 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/rating_horrible_selected.pngbin0 -> 837 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/rating_horrible_selected@2x.pngbin0 -> 1661 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/rating_horrible_selected@3x.pngbin0 -> 2381 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/rating_horrible_selected.pngbin0 -> 837 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/rating_horrible_selected@2x.pngbin0 -> 1661 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/rating_horrible_selected@3x.pngbin0 -> 2381 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/rating_star_dark.pngbin0 -> 233 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/rating_star_dark@2x.pngbin0 -> 404 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/rating_star_dark@3x.pngbin0 -> 564 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/rating_star_highlited_dark.pngbin0 -> 212 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/rating_star_highlited_dark@2x.pngbin0 -> 359 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/rating_star_highlited_dark@3x.pngbin0 -> 444 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/rating_star_highlited_light.pngbin0 -> 205 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/rating_star_highlited_light@2x.pngbin0 -> 337 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/rating_star_highlited_light@3x.pngbin0 -> 444 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/rating_star_light.pngbin0 -> 227 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/rating_star_light@2x.pngbin0 -> 390 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/rating_star_light@3x.pngbin0 -> 557 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/rating_star_selected.pngbin0 -> 325 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/rating_star_selected@2x.pngbin0 -> 594 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/rating_star_selected@3x.pngbin0 -> 915 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/rating_star_selected.pngbin0 -> 325 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/rating_star_selected@2x.pngbin0 -> 594 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/rating_star_selected@3x.pngbin0 -> 915 bytes
-rw-r--r--iphone/Maps/Maps.xcodeproj/project.pbxproj120
-rw-r--r--iphone/Maps/UI/PlacePage/MWMPlacePageButtonsProtocol.h1
-rw-r--r--iphone/Maps/UI/PlacePage/MWMPlacePageData.h30
-rw-r--r--iphone/Maps/UI/PlacePage/MWMPlacePageData.mm73
-rw-r--r--iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm18
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/BookingCells/PPHotelCarouselCell.swift2
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Controllers/MWMFacilitiesController.mm10
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCCommentCell.h12
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCCommentCell.mm97
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCCommentCell.xib74
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewController.h9
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewController.mm78
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewController.xib30
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewVM.h34
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewVM.mm83
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWUGCCommentsController.h14
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWUGCCommentsController.mm48
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWUGCCommentsController.xib29
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSelectImpressionCell.swift15
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSelectImpressionCell.xib226
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSpecificReviewCell.swift32
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSpecificReviewCell.xib146
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCTextReviewCell.swift38
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCTextReviewCell.xib63
-rw-r--r--iphone/Maps/UI/PlacePage/PlacePageLayout/MWMPlacePageLayout.mm53
-rw-r--r--xcode/ugc/ugc.xcodeproj/project.pbxproj6
180 files changed, 2204 insertions, 24 deletions
diff --git a/iphone/Maps/Bridging-Header.h b/iphone/Maps/Bridging-Header.h
index 0ef14222fd..8846ca8806 100644
--- a/iphone/Maps/Bridging-Header.h
+++ b/iphone/Maps/Bridging-Header.h
@@ -31,6 +31,7 @@
#import "MWMSearchNoResults.h"
#import "MWMSettings.h"
#import "MWMTableViewCell.h"
+#import "MWMTextView.h"
#import "MWMTypes.h"
#import "MWMViewController.h"
#import "Statistics.h"
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/Contents.json
new file mode 100644
index 0000000000..da4a164c91
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/Contents.json
new file mode 100644
index 0000000000..6c4eedf32b
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/Contents.json
@@ -0,0 +1,26 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "ic_ugc_thumb_down.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "ic_ugc_thumb_down@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "ic_ugc_thumb_down@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ },
+ "properties" : {
+ "template-rendering-intent" : "template"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/ic_ugc_thumb_down.png b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/ic_ugc_thumb_down.png
new file mode 100644
index 0000000000..353b3f2153
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/ic_ugc_thumb_down.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/ic_ugc_thumb_down@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/ic_ugc_thumb_down@2x.png
new file mode 100644
index 0000000000..ebe3d3379b
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/ic_ugc_thumb_down@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/ic_ugc_thumb_down@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/ic_ugc_thumb_down@3x.png
new file mode 100644
index 0000000000..704eb89ace
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_down.imageset/ic_ugc_thumb_down@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/Contents.json
new file mode 100644
index 0000000000..39685751fd
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/Contents.json
@@ -0,0 +1,26 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "ic_ugc_thumb_up.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "ic_ugc_thumb_up@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "ic_ugc_thumb_up@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ },
+ "properties" : {
+ "template-rendering-intent" : "template"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/ic_ugc_thumb_up.png b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/ic_ugc_thumb_up.png
new file mode 100644
index 0000000000..c12e4400ed
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/ic_ugc_thumb_up.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/ic_ugc_thumb_up@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/ic_ugc_thumb_up@2x.png
new file mode 100644
index 0000000000..89110ab583
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/ic_ugc_thumb_up@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/ic_ugc_thumb_up@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/ic_ugc_thumb_up@3x.png
new file mode 100644
index 0000000000..e5b6b7bbcd
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/ic_ugc_thumb_up.imageset/ic_ugc_thumb_up@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/Contents.json
new file mode 100644
index 0000000000..2fb76022c9
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_average_dark.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_average_dark@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_average_dark@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/rating_average_dark.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/rating_average_dark.png
new file mode 100644
index 0000000000..9965ce8636
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/rating_average_dark.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/rating_average_dark@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/rating_average_dark@2x.png
new file mode 100644
index 0000000000..eca9963068
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/rating_average_dark@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/rating_average_dark@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/rating_average_dark@3x.png
new file mode 100644
index 0000000000..17ffc7cf66
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_dark.imageset/rating_average_dark@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/Contents.json
new file mode 100644
index 0000000000..aee0c9e06b
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_average_highlited_dark.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_average_highlited_dark@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_average_highlited_dark@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/rating_average_highlited_dark.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/rating_average_highlited_dark.png
new file mode 100644
index 0000000000..0ea5882c8a
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/rating_average_highlited_dark.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/rating_average_highlited_dark@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/rating_average_highlited_dark@2x.png
new file mode 100644
index 0000000000..7d60f2800a
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/rating_average_highlited_dark@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/rating_average_highlited_dark@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/rating_average_highlited_dark@3x.png
new file mode 100644
index 0000000000..c51d8c12c1
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_dark.imageset/rating_average_highlited_dark@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/Contents.json
new file mode 100644
index 0000000000..1826105f65
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_avarage_highlited_light.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_avarage_highlited_light@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_avarage_highlited_light@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/rating_avarage_highlited_light.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/rating_avarage_highlited_light.png
new file mode 100644
index 0000000000..18d6ee6703
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/rating_avarage_highlited_light.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/rating_avarage_highlited_light@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/rating_avarage_highlited_light@2x.png
new file mode 100644
index 0000000000..30eee07e48
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/rating_avarage_highlited_light@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/rating_avarage_highlited_light@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/rating_avarage_highlited_light@3x.png
new file mode 100644
index 0000000000..21bef410d3
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_highlighted_light.imageset/rating_avarage_highlited_light@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/Contents.json
new file mode 100644
index 0000000000..a3edd65a43
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_avarage_light.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_avarage_light@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_avarage_light@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/rating_avarage_light.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/rating_avarage_light.png
new file mode 100644
index 0000000000..df99bfbfa8
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/rating_avarage_light.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/rating_avarage_light@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/rating_avarage_light@2x.png
new file mode 100644
index 0000000000..19e80ab683
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/rating_avarage_light@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/rating_avarage_light@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/rating_avarage_light@3x.png
new file mode 100644
index 0000000000..e6438eb7c6
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_light.imageset/rating_avarage_light@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/Contents.json
new file mode 100644
index 0000000000..90a821348b
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_average_selected.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_average_selected@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_average_selected@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/rating_average_selected.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/rating_average_selected.png
new file mode 100644
index 0000000000..b48abbf074
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/rating_average_selected.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/rating_average_selected@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/rating_average_selected@2x.png
new file mode 100644
index 0000000000..c8dcd30262
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/rating_average_selected@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/rating_average_selected@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/rating_average_selected@3x.png
new file mode 100644
index 0000000000..a181ebe8b9
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_dark.imageset/rating_average_selected@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/Contents.json
new file mode 100644
index 0000000000..90a821348b
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_average_selected.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_average_selected@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_average_selected@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/rating_average_selected.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/rating_average_selected.png
new file mode 100644
index 0000000000..b48abbf074
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/rating_average_selected.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/rating_average_selected@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/rating_average_selected@2x.png
new file mode 100644
index 0000000000..c8dcd30262
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/rating_average_selected@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/rating_average_selected@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/rating_average_selected@3x.png
new file mode 100644
index 0000000000..a181ebe8b9
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_average_selected_light.imageset/rating_average_selected@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/Contents.json
new file mode 100644
index 0000000000..5876dd1bd7
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_dark.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_dark@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_dark@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/rating_bad_dark.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/rating_bad_dark.png
new file mode 100644
index 0000000000..e15df58da1
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/rating_bad_dark.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/rating_bad_dark@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/rating_bad_dark@2x.png
new file mode 100644
index 0000000000..ba1ef1c325
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/rating_bad_dark@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/rating_bad_dark@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/rating_bad_dark@3x.png
new file mode 100644
index 0000000000..94bb25e15b
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_dark.imageset/rating_bad_dark@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/Contents.json
new file mode 100644
index 0000000000..6b4609ceb1
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_highlited_dark.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_highlited_dark@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_highlited_dark@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/rating_bad_highlited_dark.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/rating_bad_highlited_dark.png
new file mode 100644
index 0000000000..8ecf29fe3b
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/rating_bad_highlited_dark.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/rating_bad_highlited_dark@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/rating_bad_highlited_dark@2x.png
new file mode 100644
index 0000000000..4f1e20d3da
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/rating_bad_highlited_dark@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/rating_bad_highlited_dark@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/rating_bad_highlited_dark@3x.png
new file mode 100644
index 0000000000..f2c5caa6a4
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_dark.imageset/rating_bad_highlited_dark@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/Contents.json
new file mode 100644
index 0000000000..d6fe1dc16a
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_highlited_light.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_highlited_light@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_highlited_light@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/rating_bad_highlited_light.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/rating_bad_highlited_light.png
new file mode 100644
index 0000000000..b194735a63
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/rating_bad_highlited_light.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/rating_bad_highlited_light@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/rating_bad_highlited_light@2x.png
new file mode 100644
index 0000000000..a432e9af3c
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/rating_bad_highlited_light@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/rating_bad_highlited_light@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/rating_bad_highlited_light@3x.png
new file mode 100644
index 0000000000..dfbd514f4e
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_highlighted_light.imageset/rating_bad_highlited_light@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/Contents.json
new file mode 100644
index 0000000000..76dcc5c84b
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_light.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_light@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_light@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/rating_bad_light.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/rating_bad_light.png
new file mode 100644
index 0000000000..6602bc3a1c
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/rating_bad_light.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/rating_bad_light@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/rating_bad_light@2x.png
new file mode 100644
index 0000000000..f61de76278
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/rating_bad_light@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/rating_bad_light@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/rating_bad_light@3x.png
new file mode 100644
index 0000000000..bc17c82b10
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_light.imageset/rating_bad_light@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/Contents.json
new file mode 100644
index 0000000000..8f069a32ab
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_selected.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_selected@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_selected@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/rating_bad_selected.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/rating_bad_selected.png
new file mode 100644
index 0000000000..da8310d5ad
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/rating_bad_selected.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/rating_bad_selected@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/rating_bad_selected@2x.png
new file mode 100644
index 0000000000..097a4e6bb6
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/rating_bad_selected@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/rating_bad_selected@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/rating_bad_selected@3x.png
new file mode 100644
index 0000000000..b1ebada8b2
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_dark.imageset/rating_bad_selected@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/Contents.json
new file mode 100644
index 0000000000..8f069a32ab
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_selected.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_selected@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_bad_selected@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/rating_bad_selected.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/rating_bad_selected.png
new file mode 100644
index 0000000000..da8310d5ad
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/rating_bad_selected.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/rating_bad_selected@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/rating_bad_selected@2x.png
new file mode 100644
index 0000000000..097a4e6bb6
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/rating_bad_selected@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/rating_bad_selected@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/rating_bad_selected@3x.png
new file mode 100644
index 0000000000..b1ebada8b2
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_bad_selected_light.imageset/rating_bad_selected@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/Contents.json
new file mode 100644
index 0000000000..c23b8dee2d
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_dark.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_dark@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_dark@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/rating_exellent_dark.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/rating_exellent_dark.png
new file mode 100644
index 0000000000..0dc7f391b9
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/rating_exellent_dark.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/rating_exellent_dark@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/rating_exellent_dark@2x.png
new file mode 100644
index 0000000000..04a43291aa
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/rating_exellent_dark@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/rating_exellent_dark@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/rating_exellent_dark@3x.png
new file mode 100644
index 0000000000..712dfd020b
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_dark.imageset/rating_exellent_dark@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/Contents.json
new file mode 100644
index 0000000000..f9c0aa3ed3
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_highlited_dark.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_highlited_dark@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_highlited_dark@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/rating_exellent_highlited_dark.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/rating_exellent_highlited_dark.png
new file mode 100644
index 0000000000..162d98eeba
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/rating_exellent_highlited_dark.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/rating_exellent_highlited_dark@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/rating_exellent_highlited_dark@2x.png
new file mode 100644
index 0000000000..b83a8c1811
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/rating_exellent_highlited_dark@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/rating_exellent_highlited_dark@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/rating_exellent_highlited_dark@3x.png
new file mode 100644
index 0000000000..7c74a1473f
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_dark.imageset/rating_exellent_highlited_dark@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/Contents.json
new file mode 100644
index 0000000000..11e644c1fa
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_highlited_light.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_highlited_light@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_highlited_light@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/rating_exellent_highlited_light.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/rating_exellent_highlited_light.png
new file mode 100644
index 0000000000..7ccaaf3866
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/rating_exellent_highlited_light.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/rating_exellent_highlited_light@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/rating_exellent_highlited_light@2x.png
new file mode 100644
index 0000000000..cdc043d0e9
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/rating_exellent_highlited_light@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/rating_exellent_highlited_light@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/rating_exellent_highlited_light@3x.png
new file mode 100644
index 0000000000..87f366d262
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_highlighted_light.imageset/rating_exellent_highlited_light@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/Contents.json
new file mode 100644
index 0000000000..4e835321fa
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_light.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_light@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_light@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/rating_exellent_light.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/rating_exellent_light.png
new file mode 100644
index 0000000000..0056412294
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/rating_exellent_light.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/rating_exellent_light@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/rating_exellent_light@2x.png
new file mode 100644
index 0000000000..5d33960f23
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/rating_exellent_light@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/rating_exellent_light@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/rating_exellent_light@3x.png
new file mode 100644
index 0000000000..3e78c59e22
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_light.imageset/rating_exellent_light@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/Contents.json
new file mode 100644
index 0000000000..816af40b8c
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_selected.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_selected@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_selected@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/rating_exellent_selected.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/rating_exellent_selected.png
new file mode 100644
index 0000000000..6478673303
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/rating_exellent_selected.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/rating_exellent_selected@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/rating_exellent_selected@2x.png
new file mode 100644
index 0000000000..cc64298711
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/rating_exellent_selected@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/rating_exellent_selected@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/rating_exellent_selected@3x.png
new file mode 100644
index 0000000000..96612dcb46
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_dark.imageset/rating_exellent_selected@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/Contents.json
new file mode 100644
index 0000000000..816af40b8c
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_selected.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_selected@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_exellent_selected@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/rating_exellent_selected.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/rating_exellent_selected.png
new file mode 100644
index 0000000000..6478673303
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/rating_exellent_selected.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/rating_exellent_selected@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/rating_exellent_selected@2x.png
new file mode 100644
index 0000000000..cc64298711
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/rating_exellent_selected@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/rating_exellent_selected@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/rating_exellent_selected@3x.png
new file mode 100644
index 0000000000..96612dcb46
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_exellent_selected_light.imageset/rating_exellent_selected@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/Contents.json
new file mode 100644
index 0000000000..5f0c776f97
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_dark.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_dark@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_dark@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/rating_good_dark.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/rating_good_dark.png
new file mode 100644
index 0000000000..a45cb6cb16
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/rating_good_dark.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/rating_good_dark@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/rating_good_dark@2x.png
new file mode 100644
index 0000000000..433d29c171
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/rating_good_dark@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/rating_good_dark@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/rating_good_dark@3x.png
new file mode 100644
index 0000000000..5ccce0daf4
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_dark.imageset/rating_good_dark@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/Contents.json
new file mode 100644
index 0000000000..890f53d318
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_highlited_dark.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_highlited_dark@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_highlited_dark@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/rating_good_highlited_dark.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/rating_good_highlited_dark.png
new file mode 100644
index 0000000000..bf31304e91
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/rating_good_highlited_dark.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/rating_good_highlited_dark@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/rating_good_highlited_dark@2x.png
new file mode 100644
index 0000000000..595b2d1245
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/rating_good_highlited_dark@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/rating_good_highlited_dark@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/rating_good_highlited_dark@3x.png
new file mode 100644
index 0000000000..780a016c89
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_dark.imageset/rating_good_highlited_dark@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/Contents.json
new file mode 100644
index 0000000000..614150af0a
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_highlited_light.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_highlited_light@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_highlited_light@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/rating_good_highlited_light.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/rating_good_highlited_light.png
new file mode 100644
index 0000000000..35c32f529e
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/rating_good_highlited_light.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/rating_good_highlited_light@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/rating_good_highlited_light@2x.png
new file mode 100644
index 0000000000..f0922b681f
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/rating_good_highlited_light@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/rating_good_highlited_light@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/rating_good_highlited_light@3x.png
new file mode 100644
index 0000000000..1d16c6bfca
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_highlighted_light.imageset/rating_good_highlited_light@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/Contents.json
new file mode 100644
index 0000000000..07aa583e89
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_light.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_light@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_light@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/rating_good_light.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/rating_good_light.png
new file mode 100644
index 0000000000..94a9a0922b
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/rating_good_light.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/rating_good_light@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/rating_good_light@2x.png
new file mode 100644
index 0000000000..c4de0195d8
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/rating_good_light@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/rating_good_light@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/rating_good_light@3x.png
new file mode 100644
index 0000000000..bbd6a20386
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_light.imageset/rating_good_light@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/Contents.json
new file mode 100644
index 0000000000..d808aa58bc
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_selected.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_selected@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_selected@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/rating_good_selected.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/rating_good_selected.png
new file mode 100644
index 0000000000..05f68071ee
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/rating_good_selected.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/rating_good_selected@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/rating_good_selected@2x.png
new file mode 100644
index 0000000000..4267df9572
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/rating_good_selected@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/rating_good_selected@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/rating_good_selected@3x.png
new file mode 100644
index 0000000000..fb6fa602be
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_dark.imageset/rating_good_selected@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/Contents.json
new file mode 100644
index 0000000000..d808aa58bc
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_selected.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_selected@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_good_selected@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/rating_good_selected.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/rating_good_selected.png
new file mode 100644
index 0000000000..05f68071ee
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/rating_good_selected.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/rating_good_selected@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/rating_good_selected@2x.png
new file mode 100644
index 0000000000..4267df9572
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/rating_good_selected@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/rating_good_selected@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/rating_good_selected@3x.png
new file mode 100644
index 0000000000..fb6fa602be
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_good_selected_light.imageset/rating_good_selected@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/Contents.json
new file mode 100644
index 0000000000..da2334a1dd
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_dark.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_dark@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_dark@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/rating_horrible_dark.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/rating_horrible_dark.png
new file mode 100644
index 0000000000..e94dddeb37
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/rating_horrible_dark.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/rating_horrible_dark@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/rating_horrible_dark@2x.png
new file mode 100644
index 0000000000..0f8308f945
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/rating_horrible_dark@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/rating_horrible_dark@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/rating_horrible_dark@3x.png
new file mode 100644
index 0000000000..27ad63325a
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_dark.imageset/rating_horrible_dark@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/Contents.json
new file mode 100644
index 0000000000..81c57afd2e
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_highlited_dark.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_highlited_dark@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_highlited_dark@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/rating_horrible_highlited_dark.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/rating_horrible_highlited_dark.png
new file mode 100644
index 0000000000..24ec200964
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/rating_horrible_highlited_dark.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/rating_horrible_highlited_dark@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/rating_horrible_highlited_dark@2x.png
new file mode 100644
index 0000000000..dd9ea00eae
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/rating_horrible_highlited_dark@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/rating_horrible_highlited_dark@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/rating_horrible_highlited_dark@3x.png
new file mode 100644
index 0000000000..1aa51bdebe
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_dark.imageset/rating_horrible_highlited_dark@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/Contents.json
new file mode 100644
index 0000000000..4b5404c442
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_highlited_light.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_highlited_light@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_highlited_light@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/rating_horrible_highlited_light.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/rating_horrible_highlited_light.png
new file mode 100644
index 0000000000..4528564285
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/rating_horrible_highlited_light.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/rating_horrible_highlited_light@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/rating_horrible_highlited_light@2x.png
new file mode 100644
index 0000000000..a66f7ac495
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/rating_horrible_highlited_light@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/rating_horrible_highlited_light@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/rating_horrible_highlited_light@3x.png
new file mode 100644
index 0000000000..2aa1588703
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_highlighted_light.imageset/rating_horrible_highlited_light@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/Contents.json
new file mode 100644
index 0000000000..dc9d108fae
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_light.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_light@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_light@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/rating_horrible_light.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/rating_horrible_light.png
new file mode 100644
index 0000000000..1e1670f9ce
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/rating_horrible_light.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/rating_horrible_light@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/rating_horrible_light@2x.png
new file mode 100644
index 0000000000..e55498e1e7
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/rating_horrible_light@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/rating_horrible_light@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/rating_horrible_light@3x.png
new file mode 100644
index 0000000000..19e32af274
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_light.imageset/rating_horrible_light@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/Contents.json
new file mode 100644
index 0000000000..9431b875d8
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_selected.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_selected@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_selected@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/rating_horrible_selected.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/rating_horrible_selected.png
new file mode 100644
index 0000000000..e502ca0840
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/rating_horrible_selected.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/rating_horrible_selected@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/rating_horrible_selected@2x.png
new file mode 100644
index 0000000000..8a872b9e8a
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/rating_horrible_selected@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/rating_horrible_selected@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/rating_horrible_selected@3x.png
new file mode 100644
index 0000000000..e1f56f436d
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_dark.imageset/rating_horrible_selected@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/Contents.json
new file mode 100644
index 0000000000..9431b875d8
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_selected.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_selected@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_horrible_selected@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/rating_horrible_selected.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/rating_horrible_selected.png
new file mode 100644
index 0000000000..e502ca0840
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/rating_horrible_selected.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/rating_horrible_selected@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/rating_horrible_selected@2x.png
new file mode 100644
index 0000000000..8a872b9e8a
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/rating_horrible_selected@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/rating_horrible_selected@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/rating_horrible_selected@3x.png
new file mode 100644
index 0000000000..e1f56f436d
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_horrible_selected_light.imageset/rating_horrible_selected@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/Contents.json
new file mode 100644
index 0000000000..7382f78a51
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_dark.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_dark@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_dark@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/rating_star_dark.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/rating_star_dark.png
new file mode 100644
index 0000000000..c5eb81de20
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/rating_star_dark.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/rating_star_dark@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/rating_star_dark@2x.png
new file mode 100644
index 0000000000..7b8884398e
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/rating_star_dark@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/rating_star_dark@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/rating_star_dark@3x.png
new file mode 100644
index 0000000000..170480c9a0
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_dark.imageset/rating_star_dark@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/Contents.json
new file mode 100644
index 0000000000..384529a5ae
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_highlited_dark.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_highlited_dark@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_highlited_dark@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/rating_star_highlited_dark.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/rating_star_highlited_dark.png
new file mode 100644
index 0000000000..849f2596ef
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/rating_star_highlited_dark.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/rating_star_highlited_dark@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/rating_star_highlited_dark@2x.png
new file mode 100644
index 0000000000..e6fd575b86
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/rating_star_highlited_dark@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/rating_star_highlited_dark@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/rating_star_highlited_dark@3x.png
new file mode 100644
index 0000000000..3bcf7e8ac4
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_dark.imageset/rating_star_highlited_dark@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/Contents.json
new file mode 100644
index 0000000000..12a79780da
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_highlited_light.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_highlited_light@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_highlited_light@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/rating_star_highlited_light.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/rating_star_highlited_light.png
new file mode 100644
index 0000000000..e7923ab03d
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/rating_star_highlited_light.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/rating_star_highlited_light@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/rating_star_highlited_light@2x.png
new file mode 100644
index 0000000000..78327a4cea
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/rating_star_highlited_light@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/rating_star_highlited_light@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/rating_star_highlited_light@3x.png
new file mode 100644
index 0000000000..a8cd092d35
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_highlighted_light.imageset/rating_star_highlited_light@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/Contents.json
new file mode 100644
index 0000000000..595083806e
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_light.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_light@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_light@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/rating_star_light.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/rating_star_light.png
new file mode 100644
index 0000000000..769aa5a98e
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/rating_star_light.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/rating_star_light@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/rating_star_light@2x.png
new file mode 100644
index 0000000000..88190197ef
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/rating_star_light@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/rating_star_light@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/rating_star_light@3x.png
new file mode 100644
index 0000000000..148fd23c56
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_light.imageset/rating_star_light@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/Contents.json
new file mode 100644
index 0000000000..ee96952501
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_selected.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_selected@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_selected@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/rating_star_selected.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/rating_star_selected.png
new file mode 100644
index 0000000000..a17ad7a90f
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/rating_star_selected.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/rating_star_selected@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/rating_star_selected@2x.png
new file mode 100644
index 0000000000..4cd3bc52d1
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/rating_star_selected@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/rating_star_selected@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/rating_star_selected@3x.png
new file mode 100644
index 0000000000..298c26fe3f
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_dark.imageset/rating_star_selected@3x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/Contents.json
new file mode 100644
index 0000000000..ee96952501
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_selected.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_selected@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "rating_star_selected@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/rating_star_selected.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/rating_star_selected.png
new file mode 100644
index 0000000000..a17ad7a90f
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/rating_star_selected.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/rating_star_selected@2x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/rating_star_selected@2x.png
new file mode 100644
index 0000000000..4cd3bc52d1
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/rating_star_selected@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/rating_star_selected@3x.png b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/rating_star_selected@3x.png
new file mode 100644
index 0000000000..298c26fe3f
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/UGC/rating_star_selected_light.imageset/rating_star_selected@3x.png
Binary files differ
diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj
index 8c95b89b94..9b4b1334f8 100644
--- a/iphone/Maps/Maps.xcodeproj/project.pbxproj
+++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj
@@ -885,6 +885,33 @@
F607C1891C032A8800B53A87 /* resources-hdpi_dark in Resources */ = {isa = PBXBuildFile; fileRef = F607C1841C032A8800B53A87 /* resources-hdpi_dark */; };
F607C18A1C032A8800B53A87 /* resources-hdpi_dark in Resources */ = {isa = PBXBuildFile; fileRef = F607C1841C032A8800B53A87 /* resources-hdpi_dark */; };
F607C18E1C047FDC00B53A87 /* MWMSegue.mm in Sources */ = {isa = PBXBuildFile; fileRef = F607C18D1C047FDC00B53A87 /* MWMSegue.mm */; };
+ F6150E291EF95234000B955D /* MWMUGCReviewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6150E271EF95234000B955D /* MWMUGCReviewController.mm */; };
+ F6150E2A1EF95234000B955D /* MWMUGCReviewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6150E271EF95234000B955D /* MWMUGCReviewController.mm */; };
+ F6150E2B1EF95234000B955D /* MWMUGCReviewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6150E271EF95234000B955D /* MWMUGCReviewController.mm */; };
+ F6150E2C1EF95234000B955D /* MWMUGCReviewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6150E281EF95234000B955D /* MWMUGCReviewController.xib */; };
+ F6150E2D1EF95234000B955D /* MWMUGCReviewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6150E281EF95234000B955D /* MWMUGCReviewController.xib */; };
+ F6150E2E1EF95234000B955D /* MWMUGCReviewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6150E281EF95234000B955D /* MWMUGCReviewController.xib */; };
+ F6150E311EF953A6000B955D /* MWMUGCReviewVM.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6150E301EF953A6000B955D /* MWMUGCReviewVM.mm */; };
+ F6150E321EF953A6000B955D /* MWMUGCReviewVM.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6150E301EF953A6000B955D /* MWMUGCReviewVM.mm */; };
+ F6150E331EF953A6000B955D /* MWMUGCReviewVM.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6150E301EF953A6000B955D /* MWMUGCReviewVM.mm */; };
+ F6150E391EF95F96000B955D /* UGCSpecificReviewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6150E381EF95F96000B955D /* UGCSpecificReviewCell.xib */; };
+ F6150E3A1EF95F96000B955D /* UGCSpecificReviewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6150E381EF95F96000B955D /* UGCSpecificReviewCell.xib */; };
+ F6150E3B1EF95F96000B955D /* UGCSpecificReviewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6150E381EF95F96000B955D /* UGCSpecificReviewCell.xib */; };
+ F6150E431EFA52E9000B955D /* UGCSpecificReviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6150E421EFA52E9000B955D /* UGCSpecificReviewCell.swift */; };
+ F6150E441EFA52E9000B955D /* UGCSpecificReviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6150E421EFA52E9000B955D /* UGCSpecificReviewCell.swift */; };
+ F6150E451EFA52E9000B955D /* UGCSpecificReviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6150E421EFA52E9000B955D /* UGCSpecificReviewCell.swift */; };
+ F6150E471EFA5C94000B955D /* UGCTextReviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6150E461EFA5C94000B955D /* UGCTextReviewCell.swift */; };
+ F6150E481EFA5C94000B955D /* UGCTextReviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6150E461EFA5C94000B955D /* UGCTextReviewCell.swift */; };
+ F6150E491EFA5C94000B955D /* UGCTextReviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6150E461EFA5C94000B955D /* UGCTextReviewCell.swift */; };
+ F6150E4B1EFA5D2E000B955D /* UGCTextReviewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6150E4A1EFA5D2E000B955D /* UGCTextReviewCell.xib */; };
+ F6150E4C1EFA5D2E000B955D /* UGCTextReviewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6150E4A1EFA5D2E000B955D /* UGCTextReviewCell.xib */; };
+ F6150E4D1EFA5D2E000B955D /* UGCTextReviewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6150E4A1EFA5D2E000B955D /* UGCTextReviewCell.xib */; };
+ F6150E511EFA7352000B955D /* MWUGCCommentsController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6150E4F1EFA7352000B955D /* MWUGCCommentsController.mm */; };
+ F6150E521EFA7352000B955D /* MWUGCCommentsController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6150E4F1EFA7352000B955D /* MWUGCCommentsController.mm */; };
+ F6150E531EFA7352000B955D /* MWUGCCommentsController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6150E4F1EFA7352000B955D /* MWUGCCommentsController.mm */; };
+ F6150E541EFA7352000B955D /* MWUGCCommentsController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6150E501EFA7352000B955D /* MWUGCCommentsController.xib */; };
+ F6150E551EFA7352000B955D /* MWUGCCommentsController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6150E501EFA7352000B955D /* MWUGCCommentsController.xib */; };
+ F6150E561EFA7352000B955D /* MWUGCCommentsController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6150E501EFA7352000B955D /* MWUGCCommentsController.xib */; };
F61579341AC2CE9A0032D8E9 /* MWMRateAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = F61579331AC2CE9A0032D8E9 /* MWMRateAlert.mm */; };
F61579361AC2CEB60032D8E9 /* MWMRateAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = F61579351AC2CEB60032D8E9 /* MWMRateAlert.xib */; };
F6172FA51BBD5A3E0081D325 /* MWMiPadRoutePreview.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6172FA41BBD5A3E0081D325 /* MWMiPadRoutePreview.xib */; };
@@ -909,6 +936,14 @@
F63AF5121EA6250F00A1DB98 /* FilterCollectionHolderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F63AF5111EA6250F00A1DB98 /* FilterCollectionHolderCell.swift */; };
F63AF5131EA6250F00A1DB98 /* FilterCollectionHolderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F63AF5111EA6250F00A1DB98 /* FilterCollectionHolderCell.swift */; };
F63AF5141EA6250F00A1DB98 /* FilterCollectionHolderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F63AF5111EA6250F00A1DB98 /* FilterCollectionHolderCell.swift */; };
+ F64324771EF81316009296F9 /* MWMUGCCommentCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6C0E62C1EF80F9000A4EFAA /* MWMUGCCommentCell.xib */; };
+ F64324781EF81317009296F9 /* MWMUGCCommentCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6C0E62C1EF80F9000A4EFAA /* MWMUGCCommentCell.xib */; };
+ F643247A1EF82AD9009296F9 /* UGCSelectImpressionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F64324791EF82AD9009296F9 /* UGCSelectImpressionCell.swift */; };
+ F643247B1EF82AD9009296F9 /* UGCSelectImpressionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F64324791EF82AD9009296F9 /* UGCSelectImpressionCell.swift */; };
+ F643247C1EF82AD9009296F9 /* UGCSelectImpressionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F64324791EF82AD9009296F9 /* UGCSelectImpressionCell.swift */; };
+ F643247E1EF82B21009296F9 /* UGCSelectImpressionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F643247D1EF82B21009296F9 /* UGCSelectImpressionCell.xib */; };
+ F643247F1EF82B21009296F9 /* UGCSelectImpressionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F643247D1EF82B21009296F9 /* UGCSelectImpressionCell.xib */; };
+ F64324801EF82B21009296F9 /* UGCSelectImpressionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F643247D1EF82B21009296F9 /* UGCSelectImpressionCell.xib */; };
F64D9C9F1C899C350063FA30 /* MWMEditorViralAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = F64D9C9E1C899C350063FA30 /* MWMEditorViralAlert.mm */; };
F64D9CA01C899C350063FA30 /* MWMEditorViralAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = F64D9C9E1C899C350063FA30 /* MWMEditorViralAlert.mm */; };
F64D9CA21C899C760063FA30 /* MWMEditorViralAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = F64D9CA11C899C760063FA30 /* MWMEditorViralAlert.xib */; };
@@ -968,6 +1003,9 @@
F68BDF051EEA9A830009BB81 /* MyTargetSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F68BDF041EEA9A830009BB81 /* MyTargetSDK.framework */; };
F68BDF061EEA9A830009BB81 /* MyTargetSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F68BDF041EEA9A830009BB81 /* MyTargetSDK.framework */; };
F68BDF071EEA9A830009BB81 /* MyTargetSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F68BDF041EEA9A830009BB81 /* MyTargetSDK.framework */; };
+ F68BDF1B1EF80DE90009BB81 /* MWMUGCCommentCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F68BDF1A1EF80DE90009BB81 /* MWMUGCCommentCell.mm */; };
+ F68BDF1C1EF80DE90009BB81 /* MWMUGCCommentCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F68BDF1A1EF80DE90009BB81 /* MWMUGCCommentCell.mm */; };
+ F68BDF1D1EF80DE90009BB81 /* MWMUGCCommentCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F68BDF1A1EF80DE90009BB81 /* MWMUGCCommentCell.mm */; };
F68FCB851DA7BBA6007CC7D7 /* MWMTaxiPreviewDataSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = F68FCB841DA7BBA6007CC7D7 /* MWMTaxiPreviewDataSource.mm */; };
F68FCB861DA7BBA6007CC7D7 /* MWMTaxiPreviewDataSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = F68FCB841DA7BBA6007CC7D7 /* MWMTaxiPreviewDataSource.mm */; };
F68FCB8C1DA7BD20007CC7D7 /* RoutePreviewTaxiCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F68FCB891DA7BD20007CC7D7 /* RoutePreviewTaxiCell.xib */; };
@@ -1005,6 +1043,7 @@
F6BD33811B62403B00F2CE18 /* MWMRoutePreview.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6BD337E1B62403B00F2CE18 /* MWMRoutePreview.mm */; };
F6BD33841B6240F200F2CE18 /* MWMNavigationView.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6BD33831B6240F200F2CE18 /* MWMNavigationView.mm */; };
F6BD33871B62412E00F2CE18 /* MWMNavigationDashboardEntity.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6BD33861B62412E00F2CE18 /* MWMNavigationDashboardEntity.mm */; };
+ F6C0E62D1EF80F9000A4EFAA /* MWMUGCCommentCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6C0E62C1EF80F9000A4EFAA /* MWMUGCCommentCell.xib */; };
F6E2FD4F1E097BA00083EBEC /* MWMMapDownloaderAdsTableViewCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FBFF1E097B9F0083EBEC /* MWMMapDownloaderAdsTableViewCell.mm */; };
F6E2FD501E097BA00083EBEC /* MWMMapDownloaderAdsTableViewCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FBFF1E097B9F0083EBEC /* MWMMapDownloaderAdsTableViewCell.mm */; };
F6E2FD511E097BA00083EBEC /* MWMMapDownloaderAdsTableViewCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FBFF1E097B9F0083EBEC /* MWMMapDownloaderAdsTableViewCell.mm */; };
@@ -2047,6 +2086,18 @@
F607C1841C032A8800B53A87 /* resources-hdpi_dark */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "resources-hdpi_dark"; path = "../../data/resources-hdpi_dark"; sourceTree = "<group>"; };
F607C18C1C047FDC00B53A87 /* MWMSegue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSegue.h; sourceTree = "<group>"; };
F607C18D1C047FDC00B53A87 /* MWMSegue.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMSegue.mm; sourceTree = "<group>"; };
+ F6150E261EF95234000B955D /* MWMUGCReviewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMUGCReviewController.h; sourceTree = "<group>"; };
+ F6150E271EF95234000B955D /* MWMUGCReviewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMUGCReviewController.mm; sourceTree = "<group>"; };
+ F6150E281EF95234000B955D /* MWMUGCReviewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMUGCReviewController.xib; sourceTree = "<group>"; };
+ F6150E2F1EF953A6000B955D /* MWMUGCReviewVM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMUGCReviewVM.h; sourceTree = "<group>"; };
+ F6150E301EF953A6000B955D /* MWMUGCReviewVM.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMUGCReviewVM.mm; sourceTree = "<group>"; };
+ F6150E381EF95F96000B955D /* UGCSpecificReviewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UGCSpecificReviewCell.xib; sourceTree = "<group>"; };
+ F6150E421EFA52E9000B955D /* UGCSpecificReviewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UGCSpecificReviewCell.swift; sourceTree = "<group>"; };
+ F6150E461EFA5C94000B955D /* UGCTextReviewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UGCTextReviewCell.swift; sourceTree = "<group>"; };
+ F6150E4A1EFA5D2E000B955D /* UGCTextReviewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UGCTextReviewCell.xib; sourceTree = "<group>"; };
+ F6150E4E1EFA7352000B955D /* MWUGCCommentsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWUGCCommentsController.h; sourceTree = "<group>"; };
+ F6150E4F1EFA7352000B955D /* MWUGCCommentsController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWUGCCommentsController.mm; sourceTree = "<group>"; };
+ F6150E501EFA7352000B955D /* MWUGCCommentsController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWUGCCommentsController.xib; sourceTree = "<group>"; };
F61579321AC2CE9A0032D8E9 /* MWMRateAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMRateAlert.h; sourceTree = "<group>"; };
F61579331AC2CE9A0032D8E9 /* MWMRateAlert.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMRateAlert.mm; sourceTree = "<group>"; };
F61579351AC2CEB60032D8E9 /* MWMRateAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMRateAlert.xib; sourceTree = "<group>"; };
@@ -2062,6 +2113,8 @@
F63AF5091EA6213F00A1DB98 /* FilterRatingCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilterRatingCell.swift; sourceTree = "<group>"; };
F63AF50D1EA6215100A1DB98 /* FilterPriceCategoryCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilterPriceCategoryCell.swift; sourceTree = "<group>"; };
F63AF5111EA6250F00A1DB98 /* FilterCollectionHolderCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilterCollectionHolderCell.swift; sourceTree = "<group>"; };
+ F64324791EF82AD9009296F9 /* UGCSelectImpressionCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UGCSelectImpressionCell.swift; sourceTree = "<group>"; };
+ F643247D1EF82B21009296F9 /* UGCSelectImpressionCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UGCSelectImpressionCell.xib; sourceTree = "<group>"; };
F64D9C9D1C899C350063FA30 /* MWMEditorViralAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMEditorViralAlert.h; sourceTree = "<group>"; };
F64D9C9E1C899C350063FA30 /* MWMEditorViralAlert.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMEditorViralAlert.mm; sourceTree = "<group>"; };
F64D9CA11C899C760063FA30 /* MWMEditorViralAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMEditorViralAlert.xib; sourceTree = "<group>"; };
@@ -2106,6 +2159,8 @@
F682249D1E5B105900BC1C18 /* PPHotelDescriptionCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PPHotelDescriptionCell.xib; sourceTree = "<group>"; };
F68224A11E5B1B1A00BC1C18 /* MWMPlacePageButtonsProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageButtonsProtocol.h; sourceTree = "<group>"; };
F68BDF041EEA9A830009BB81 /* MyTargetSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = MyTargetSDK.framework; sourceTree = "<group>"; };
+ F68BDF191EF80DE90009BB81 /* MWMUGCCommentCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMUGCCommentCell.h; sourceTree = "<group>"; };
+ F68BDF1A1EF80DE90009BB81 /* MWMUGCCommentCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMUGCCommentCell.mm; sourceTree = "<group>"; };
F68FCB831DA7BBA6007CC7D7 /* MWMTaxiPreviewDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MWMTaxiPreviewDataSource.h; path = Views/RoutePreview/MWMTaxiPreviewDataSource.h; sourceTree = "<group>"; };
F68FCB841DA7BBA6007CC7D7 /* MWMTaxiPreviewDataSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MWMTaxiPreviewDataSource.mm; path = Views/RoutePreview/MWMTaxiPreviewDataSource.mm; sourceTree = "<group>"; };
F68FCB891DA7BD20007CC7D7 /* RoutePreviewTaxiCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoutePreviewTaxiCell.xib; sourceTree = "<group>"; };
@@ -2136,6 +2191,7 @@
F6BD33831B6240F200F2CE18 /* MWMNavigationView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMNavigationView.mm; sourceTree = "<group>"; };
F6BD33851B62412E00F2CE18 /* MWMNavigationDashboardEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMNavigationDashboardEntity.h; sourceTree = "<group>"; };
F6BD33861B62412E00F2CE18 /* MWMNavigationDashboardEntity.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMNavigationDashboardEntity.mm; sourceTree = "<group>"; };
+ F6C0E62C1EF80F9000A4EFAA /* MWMUGCCommentCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMUGCCommentCell.xib; sourceTree = "<group>"; };
F6DF5F321CD1136800A87154 /* LocaleTranslator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocaleTranslator.h; sourceTree = "<group>"; };
F6E2FBFE1E097B9F0083EBEC /* MWMMapDownloaderAdsTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMMapDownloaderAdsTableViewCell.h; sourceTree = "<group>"; };
F6E2FBFF1E097B9F0083EBEC /* MWMMapDownloaderAdsTableViewCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMMapDownloaderAdsTableViewCell.mm; sourceTree = "<group>"; };
@@ -3607,6 +3663,30 @@
path = BookingCells;
sourceTree = "<group>";
};
+ F68BDF181EF80DCC0009BB81 /* UGC */ = {
+ isa = PBXGroup;
+ children = (
+ F68BDF191EF80DE90009BB81 /* MWMUGCCommentCell.h */,
+ F68BDF1A1EF80DE90009BB81 /* MWMUGCCommentCell.mm */,
+ F6C0E62C1EF80F9000A4EFAA /* MWMUGCCommentCell.xib */,
+ F6150E4E1EFA7352000B955D /* MWUGCCommentsController.h */,
+ F6150E4F1EFA7352000B955D /* MWUGCCommentsController.mm */,
+ F6150E501EFA7352000B955D /* MWUGCCommentsController.xib */,
+ F64324791EF82AD9009296F9 /* UGCSelectImpressionCell.swift */,
+ F643247D1EF82B21009296F9 /* UGCSelectImpressionCell.xib */,
+ F6150E261EF95234000B955D /* MWMUGCReviewController.h */,
+ F6150E271EF95234000B955D /* MWMUGCReviewController.mm */,
+ F6150E281EF95234000B955D /* MWMUGCReviewController.xib */,
+ F6150E2F1EF953A6000B955D /* MWMUGCReviewVM.h */,
+ F6150E301EF953A6000B955D /* MWMUGCReviewVM.mm */,
+ F6150E421EFA52E9000B955D /* UGCSpecificReviewCell.swift */,
+ F6150E381EF95F96000B955D /* UGCSpecificReviewCell.xib */,
+ F6150E461EFA5C94000B955D /* UGCTextReviewCell.swift */,
+ F6150E4A1EFA5D2E000B955D /* UGCTextReviewCell.xib */,
+ );
+ path = UGC;
+ sourceTree = "<group>";
+ };
F69018B51E9E5FEB00B3C10B /* Autoupdate */ = {
isa = PBXGroup;
children = (
@@ -3942,6 +4022,7 @@
isa = PBXGroup;
children = (
34EE259B1EFA681000F870AB /* ViatorCells */,
+ F68BDF181EF80DCC0009BB81 /* UGC */,
346DB81C1E5C4F6700E3123E /* Gallery */,
F68224981E5B0FE100BC1C18 /* BookingCells */,
F6E2FCA91E097B9F0083EBEC /* BookmarkCell */,
@@ -4495,6 +4576,7 @@
files = (
34EE25A11EFA68BC00F870AB /* PPViatorCarouselCell.xib in Resources */,
450703091E9E6CF000E8C029 /* local_ads_symbols.txt in Resources */,
+ F6C0E62D1EF80F9000A4EFAA /* MWMUGCCommentCell.xib in Resources */,
4554B6EA1E55F02B0084017F /* drules_proto_vehicle_clear.bin in Resources */,
4554B6EB1E55F02B0084017F /* drules_proto_vehicle_dark.bin in Resources */,
EEA61601134C496A003A9827 /* 01_dejavusans.ttf in Resources */,
@@ -4570,6 +4652,7 @@
F64D9CA21C899C760063FA30 /* MWMEditorViralAlert.xib in Resources */,
F6664C151E645A4100E703C2 /* MWMPPReviewCell.xib in Resources */,
F6BC1E541ACBF9AB00EF0360 /* MWMFacebookAlert.xib in Resources */,
+ F643247E1EF82B21009296F9 /* UGCSelectImpressionCell.xib in Resources */,
F6172FA51BBD5A3E0081D325 /* MWMiPadRoutePreview.xib in Resources */,
F6BBF2C81B4FFB8C000CF8E2 /* MWMLocationAlert.xib in Resources */,
3406FA181C6E0D8F00E9FAD2 /* MWMMapDownloadDialog.xib in Resources */,
@@ -4577,6 +4660,7 @@
F6E2FD581E097BA00083EBEC /* MWMMapDownloaderButtonTableViewCell.xib in Resources */,
F6664BFC1E6459CB00E703C2 /* PPFacilityCell.xib in Resources */,
F6E2FD611E097BA00083EBEC /* MWMMapDownloaderLargeCountryTableViewCell.xib in Resources */,
+ F6150E541EFA7352000B955D /* MWUGCCommentsController.xib in Resources */,
F6E2FD671E097BA00083EBEC /* MWMMapDownloaderPlaceTableViewCell.xib in Resources */,
F6E2FD6D1E097BA00083EBEC /* MWMMapDownloaderSubplaceTableViewCell.xib in Resources */,
F6E2FD731E097BA00083EBEC /* MWMMapDownloaderTableViewCell.xib in Resources */,
@@ -4617,6 +4701,7 @@
346225911DDC5FBA001E8752 /* MWMSearchNoResultsAlert.xib in Resources */,
F6E2FF381E097BA00083EBEC /* MWMSearchSuggestionCell.xib in Resources */,
F6664C041E6459DA00E703C2 /* PPReviewHeaderCell.xib in Resources */,
+ F6150E4B1EFA5D2E000B955D /* UGCTextReviewCell.xib in Resources */,
F6E2FF1A1E097BA00083EBEC /* MWMSearchTabbedCollectionViewCell.xib in Resources */,
F6E2FF201E097BA00083EBEC /* MWMSearchTabbedViewController.xib in Resources */,
F6E2FF291E097BA00083EBEC /* MWMSearchTabButtonsView.xib in Resources */,
@@ -4635,6 +4720,7 @@
4A23D15C1B8B4DD700D4EB6F /* resources-6plus_clear in Resources */,
4A7D89C51B2EBF3B00AC843E /* resources-6plus_dark in Resources */,
A367C93B1B17334800E2B6E7 /* resources-default in Resources */,
+ F6150E391EF95F96000B955D /* UGCSpecificReviewCell.xib in Resources */,
F607C1871C032A8800B53A87 /* resources-hdpi_clear in Resources */,
F607C1891C032A8800B53A87 /* resources-hdpi_dark in Resources */,
4A23D15D1B8B4DD700D4EB6F /* resources-mdpi_clear in Resources */,
@@ -4648,6 +4734,7 @@
340E1EF71E2F614400CE49BF /* Settings.storyboard in Resources */,
5605022F1B6211E100169CAD /* sound-strings in Resources */,
F69018BC1E9F7CB600B3C10B /* MWMAutoupdateController.xib in Resources */,
+ F6150E2C1EF95234000B955D /* MWMUGCReviewController.xib in Resources */,
FAAEA7D1161BD26600CCD661 /* synonyms.txt in Resources */,
3476B8E01BFDD33A00874594 /* tts-how-to-set-up-voice-img in Resources */,
3476B8DC1BFDD30B00874594 /* tts-how-to-set-up-voice.html in Resources */,
@@ -4667,6 +4754,7 @@
files = (
34EE25A21EFA68BC00F870AB /* PPViatorCarouselCell.xib in Resources */,
3495433D1EB22D9600F08F73 /* MPAdBrowserController.xib in Resources */,
+ F64324771EF81316009296F9 /* MWMUGCCommentCell.xib in Resources */,
6741A9531BF340DE002C974C /* 01_dejavusans.ttf in Resources */,
6741A9541BF340DE002C974C /* 02_droidsans-fallback.ttf in Resources */,
6741A9571BF340DE002C974C /* 03_jomolhari-id-a3d.ttf in Resources */,
@@ -4742,6 +4830,7 @@
6741A9911BF340DE002C974C /* MWMFacebookAlert.xib in Resources */,
6741A9701BF340DE002C974C /* MWMiPadRoutePreview.xib in Resources */,
6741A96D1BF340DE002C974C /* MWMLocationAlert.xib in Resources */,
+ F643247F1EF82B21009296F9 /* UGCSelectImpressionCell.xib in Resources */,
3406FA191C6E0D8F00E9FAD2 /* MWMMapDownloadDialog.xib in Resources */,
F6E2FD531E097BA00083EBEC /* MWMMapDownloaderAdsTableViewCell.xib in Resources */,
F6E2FD591E097BA00083EBEC /* MWMMapDownloaderButtonTableViewCell.xib in Resources */,
@@ -4749,6 +4838,7 @@
F6664BFD1E6459CB00E703C2 /* PPFacilityCell.xib in Resources */,
F6E2FD681E097BA00083EBEC /* MWMMapDownloaderPlaceTableViewCell.xib in Resources */,
F6E2FD6E1E097BA00083EBEC /* MWMMapDownloaderSubplaceTableViewCell.xib in Resources */,
+ F6150E551EFA7352000B955D /* MWUGCCommentsController.xib in Resources */,
F6E2FD741E097BA00083EBEC /* MWMMapDownloaderTableViewCell.xib in Resources */,
349A13851DEC138C00C7DB60 /* MWMMobileInternetAlert.xib in Resources */,
34D3B04B1E389D05004100F9 /* MWMNoteCell.xib in Resources */,
@@ -4789,6 +4879,7 @@
F6E2FF1B1E097BA00083EBEC /* MWMSearchTabbedCollectionViewCell.xib in Resources */,
F6E2FF211E097BA00083EBEC /* MWMSearchTabbedViewController.xib in Resources */,
F6664C051E6459DA00E703C2 /* PPReviewHeaderCell.xib in Resources */,
+ F6150E4C1EFA5D2E000B955D /* UGCTextReviewCell.xib in Resources */,
F6E2FF2A1E097BA00083EBEC /* MWMSearchTabButtonsView.xib in Resources */,
F6E2FF421E097BA00083EBEC /* MWMSearchTableViewController.xib in Resources */,
F6E2FEEE1E097BA00083EBEC /* MWMSearchView.xib in Resources */,
@@ -4807,6 +4898,7 @@
677A2DE21C0DD50900635A00 /* resources-default in Resources */,
F607C1881C032A8800B53A87 /* resources-hdpi_clear in Resources */,
F607C18A1C032A8800B53A87 /* resources-hdpi_dark in Resources */,
+ F6150E3A1EF95F96000B955D /* UGCSpecificReviewCell.xib in Resources */,
F69CE8DA1E5C5088002B5881 /* PPHotelCarouselCell.xib in Resources */,
F69CE8DE1E5C51AB002B5881 /* CarouselElement.xib in Resources */,
6741A97F1BF340DE002C974C /* resources-mdpi_clear in Resources */,
@@ -4820,6 +4912,7 @@
340E1EF81E2F614400CE49BF /* Settings.storyboard in Resources */,
6741A9421BF340DE002C974C /* sound-strings in Resources */,
F69018BD1E9F7CB600B3C10B /* MWMAutoupdateController.xib in Resources */,
+ F6150E2D1EF95234000B955D /* MWMUGCReviewController.xib in Resources */,
6741A97D1BF340DE002C974C /* synonyms.txt in Resources */,
3476B8E11BFDD33A00874594 /* tts-how-to-set-up-voice-img in Resources */,
3476B8DD1BFDD30B00874594 /* tts-how-to-set-up-voice.html in Resources */,
@@ -4839,6 +4932,7 @@
files = (
34EE25A31EFA68BC00F870AB /* PPViatorCarouselCell.xib in Resources */,
849CF6041DE842290024A8A5 /* 01_dejavusans.ttf in Resources */,
+ F64324781EF81317009296F9 /* MWMUGCCommentCell.xib in Resources */,
849CF6051DE842290024A8A5 /* 02_droidsans-fallback.ttf in Resources */,
849CF6091DE842290024A8A5 /* 03_jomolhari-id-a3d.ttf in Resources */,
849CF60B1DE842290024A8A5 /* 04_padauk.ttf in Resources */,
@@ -4914,6 +5008,7 @@
F6664C171E645A4100E703C2 /* MWMPPReviewCell.xib in Resources */,
849CF66F1DE842290024A8A5 /* MWMFacebookAlert.xib in Resources */,
849CF6381DE842290024A8A5 /* MWMiPadRoutePreview.xib in Resources */,
+ F64324801EF82B21009296F9 /* UGCSelectImpressionCell.xib in Resources */,
849CF6301DE842290024A8A5 /* MWMLocationAlert.xib in Resources */,
849CF60D1DE842290024A8A5 /* MWMMapDownloadDialog.xib in Resources */,
F6E2FD541E097BA00083EBEC /* MWMMapDownloaderAdsTableViewCell.xib in Resources */,
@@ -4921,6 +5016,7 @@
F6664BFE1E6459CB00E703C2 /* PPFacilityCell.xib in Resources */,
F6E2FD631E097BA00083EBEC /* MWMMapDownloaderLargeCountryTableViewCell.xib in Resources */,
F6E2FD691E097BA00083EBEC /* MWMMapDownloaderPlaceTableViewCell.xib in Resources */,
+ F6150E561EFA7352000B955D /* MWUGCCommentsController.xib in Resources */,
F6E2FD6F1E097BA00083EBEC /* MWMMapDownloaderSubplaceTableViewCell.xib in Resources */,
F6E2FD751E097BA00083EBEC /* MWMMapDownloaderTableViewCell.xib in Resources */,
34D3B04C1E389D05004100F9 /* MWMNoteCell.xib in Resources */,
@@ -4961,6 +5057,7 @@
849CF5E71DE842290024A8A5 /* MWMSearchNoResultsAlert.xib in Resources */,
F6E2FF3A1E097BA00083EBEC /* MWMSearchSuggestionCell.xib in Resources */,
F6664C061E6459DA00E703C2 /* PPReviewHeaderCell.xib in Resources */,
+ F6150E4D1EFA5D2E000B955D /* UGCTextReviewCell.xib in Resources */,
F6E2FF1C1E097BA00083EBEC /* MWMSearchTabbedCollectionViewCell.xib in Resources */,
F6E2FF221E097BA00083EBEC /* MWMSearchTabbedViewController.xib in Resources */,
F6E2FF2B1E097BA00083EBEC /* MWMSearchTabButtonsView.xib in Resources */,
@@ -4979,6 +5076,7 @@
849CF5F61DE842290024A8A5 /* resources-6plus_clear in Resources */,
849CF63F1DE842290024A8A5 /* resources-6plus_dark in Resources */,
849CF6141DE842290024A8A5 /* resources-default in Resources */,
+ F6150E3B1EF95F96000B955D /* UGCSpecificReviewCell.xib in Resources */,
849CF6731DE842290024A8A5 /* resources-hdpi_clear in Resources */,
849CF6031DE842290024A8A5 /* resources-hdpi_dark in Resources */,
849CF64F1DE842290024A8A5 /* resources-mdpi_clear in Resources */,
@@ -4992,6 +5090,7 @@
340E1EF91E2F614400CE49BF /* Settings.storyboard in Resources */,
849CF5EA1DE842290024A8A5 /* sound-strings in Resources */,
F69018BE1E9F7CB600B3C10B /* MWMAutoupdateController.xib in Resources */,
+ F6150E2E1EF95234000B955D /* MWMUGCReviewController.xib in Resources */,
849CF64C1DE842290024A8A5 /* synonyms.txt in Resources */,
849CF6111DE842290024A8A5 /* tts-how-to-set-up-voice-img in Resources */,
849CF6281DE842290024A8A5 /* tts-how-to-set-up-voice.html in Resources */,
@@ -5144,6 +5243,8 @@
F6664BF91E6459CB00E703C2 /* PPFacilityCell.swift in Sources */,
F6E2FDE81E097BA00083EBEC /* MWMObjectsCategorySelectorController.mm in Sources */,
F64F199D1AB81A00006EAF7E /* MWMDefaultAlert.mm in Sources */,
+ F6150E431EFA52E9000B955D /* UGCSpecificReviewCell.swift in Sources */,
+ F68BDF1B1EF80DE90009BB81 /* MWMUGCCommentCell.mm in Sources */,
F63AF50E1EA6215100A1DB98 /* FilterPriceCategoryCell.swift in Sources */,
34D3AFF51E37A36A004100F9 /* UICollectionView+Cells.swift in Sources */,
F6E2FEC01E097BA00083EBEC /* MWMConsole.mm in Sources */,
@@ -5152,6 +5253,7 @@
1D3623260D0F684500981E51 /* MapsAppDelegate.mm in Sources */,
F6E2FE181E097BA00083EBEC /* MWMOpeningHoursTimeSpanTableViewCell.mm in Sources */,
F6E2FDEB1E097BA00083EBEC /* MWMOpeningHoursAddClosedTableViewCell.mm in Sources */,
+ F6150E511EFA7352000B955D /* MWUGCCommentsController.mm in Sources */,
F6E2FE0F1E097BA00083EBEC /* MWMOpeningHoursTableViewCell.mm in Sources */,
341522BF1B666A550077AA8F /* MWMAPIBarView.mm in Sources */,
34F742311E0834F400AC1FD6 /* UIViewController+Navigation.mm in Sources */,
@@ -5197,6 +5299,7 @@
F6E2FE4B1E097BA00083EBEC /* MWMPlacePageManager.mm in Sources */,
346DB8391E5C4F6700E3123E /* GalleryItemModel.swift in Sources */,
3404757D1E081B3300C92850 /* iosOGLContext.mm in Sources */,
+ F6150E311EF953A6000B955D /* MWMUGCReviewVM.mm in Sources */,
34D3AFF11E37945B004100F9 /* UITableView+Cells.swift in Sources */,
34D3B02F1E389D05004100F9 /* MWMEditorCategoryCell.mm in Sources */,
F6E2FD5B1E097BA00083EBEC /* MWMMapDownloaderCellHeader.mm in Sources */,
@@ -5275,6 +5378,7 @@
F6FEA82D1C58E89B007223CC /* MWMButton.mm in Sources */,
34F407401E9E1AFF00E57AC0 /* RBBanner.swift in Sources */,
F6E2FE3C1E097BA00083EBEC /* MWMMigrationViewController.mm in Sources */,
+ F6150E471EFA5C94000B955D /* UGCTextReviewCell.swift in Sources */,
F6E2FD4F1E097BA00083EBEC /* MWMMapDownloaderAdsTableViewCell.mm in Sources */,
F6E2FE871E097BA00083EBEC /* MWMPlacePageRegularCell.mm in Sources */,
34D3AFE91E378AF1004100F9 /* UINib+Init.swift in Sources */,
@@ -5334,6 +5438,7 @@
F6E2FF4D1E097BA00083EBEC /* MWMAboutController.mm in Sources */,
34F5E0D31E3F254800B1C415 /* UIView+Hierarchy.swift in Sources */,
34F407371E9E1AFF00E57AC0 /* FacebookBanner.swift in Sources */,
+ F6150E291EF95234000B955D /* MWMUGCReviewController.mm in Sources */,
3497A93A1B5CF8A900F51E55 /* MWMNavigationDashboardManager.mm in Sources */,
F6E2FED81E097BA00083EBEC /* MWMSearchContentView.mm in Sources */,
F6E2FD881E097BA00083EBEC /* MWMMapDownloaderViewController.mm in Sources */,
@@ -5363,6 +5468,7 @@
349D1ADA1E2E325C004A2006 /* MWMBottomMenuView.mm in Sources */,
F6E2FD911E097BA00083EBEC /* MWMBookmarkColorViewController.mm in Sources */,
F6F7787A1DABC6D800B603E7 /* MWMTaxiCollectionLayout.mm in Sources */,
+ F643247A1EF82AD9009296F9 /* UGCSelectImpressionCell.swift in Sources */,
F63AF5051EA6162400A1DB98 /* FilterTypeCell.swift in Sources */,
F6E2FDA31E097BA00083EBEC /* MWMCuisineEditorViewController.mm in Sources */,
346EDADB1B9F0E35004F8DB5 /* MWMMultilineLabel.mm in Sources */,
@@ -5442,6 +5548,8 @@
F6664BFA1E6459CB00E703C2 /* PPFacilityCell.swift in Sources */,
F6E2FDE91E097BA00083EBEC /* MWMObjectsCategorySelectorController.mm in Sources */,
6741A9A81BF340DE002C974C /* MWMFacebookAlert.mm in Sources */,
+ F6150E441EFA52E9000B955D /* UGCSpecificReviewCell.swift in Sources */,
+ F68BDF1C1EF80DE90009BB81 /* MWMUGCCommentCell.mm in Sources */,
F63AF50F1EA6215100A1DB98 /* FilterPriceCategoryCell.swift in Sources */,
34D3AFF61E37A36A004100F9 /* UICollectionView+Cells.swift in Sources */,
6741A9A91BF340DE002C974C /* MWMDefaultAlert.mm in Sources */,
@@ -5450,6 +5558,7 @@
F6E2FDF81E097BA00083EBEC /* MWMOpeningHoursAllDayTableViewCell.mm in Sources */,
F6E2FE191E097BA00083EBEC /* MWMOpeningHoursTimeSpanTableViewCell.mm in Sources */,
F6E2FDEC1E097BA00083EBEC /* MWMOpeningHoursAddClosedTableViewCell.mm in Sources */,
+ F6150E521EFA7352000B955D /* MWUGCCommentsController.mm in Sources */,
F6E2FE101E097BA00083EBEC /* MWMOpeningHoursTableViewCell.mm in Sources */,
6741A9B01BF340DE002C974C /* MapsAppDelegate.mm in Sources */,
34F742321E0834F400AC1FD6 /* UIViewController+Navigation.mm in Sources */,
@@ -5495,6 +5604,7 @@
346DB83A1E5C4F6700E3123E /* GalleryItemModel.swift in Sources */,
F6E2FD5C1E097BA00083EBEC /* MWMMapDownloaderCellHeader.mm in Sources */,
34D3AFF21E37945B004100F9 /* UITableView+Cells.swift in Sources */,
+ F6150E321EF953A6000B955D /* MWMUGCReviewVM.mm in Sources */,
34D3B0301E389D05004100F9 /* MWMEditorCategoryCell.mm in Sources */,
F653CE191C71F62700A453F1 /* MWMAddPlaceNavigationBar.mm in Sources */,
340475621E081A4600C92850 /* MWMNetworkPolicy.mm in Sources */,
@@ -5573,6 +5683,7 @@
340475591E081A4600C92850 /* WebViewController.mm in Sources */,
34F407411E9E1AFF00E57AC0 /* RBBanner.swift in Sources */,
F6E2FE3D1E097BA00083EBEC /* MWMMigrationViewController.mm in Sources */,
+ F6150E481EFA5C94000B955D /* UGCTextReviewCell.swift in Sources */,
F6E2FD501E097BA00083EBEC /* MWMMapDownloaderAdsTableViewCell.mm in Sources */,
F6E2FE881E097BA00083EBEC /* MWMPlacePageRegularCell.mm in Sources */,
F6E2FD801E097BA00083EBEC /* MWMMapDownloaderExtendedDataSourceWithAds.mm in Sources */,
@@ -5632,6 +5743,7 @@
3454D7BC1E07F045004AF2AD /* CLLocation+Mercator.mm in Sources */,
F6E2FF4E1E097BA00083EBEC /* MWMAboutController.mm in Sources */,
34F407381E9E1AFF00E57AC0 /* FacebookBanner.swift in Sources */,
+ F6150E2A1EF95234000B955D /* MWMUGCReviewController.mm in Sources */,
34F5E0D41E3F254800B1C415 /* UIView+Hierarchy.swift in Sources */,
6741AA0B1BF340DE002C974C /* MWMMapViewControlsManager.mm in Sources */,
F6E2FED91E097BA00083EBEC /* MWMSearchContentView.mm in Sources */,
@@ -5661,6 +5773,7 @@
6741AA141BF340DE002C974C /* MWMMultilineLabel.mm in Sources */,
349D1ADB1E2E325C004A2006 /* MWMBottomMenuView.mm in Sources */,
F6E2FD921E097BA00083EBEC /* MWMBookmarkColorViewController.mm in Sources */,
+ F643247B1EF82AD9009296F9 /* UGCSelectImpressionCell.swift in Sources */,
F63AF5061EA6162400A1DB98 /* FilterTypeCell.swift in Sources */,
34C9BD051C6DB693000DC38D /* MWMViewController.mm in Sources */,
F6E2FDA41E097BA00083EBEC /* MWMCuisineEditorViewController.mm in Sources */,
@@ -5740,6 +5853,8 @@
F6664BFB1E6459CB00E703C2 /* PPFacilityCell.swift in Sources */,
F6E2FDEA1E097BA00083EBEC /* MWMObjectsCategorySelectorController.mm in Sources */,
849CF68A1DE842290024A8A5 /* MWMDefaultAlert.mm in Sources */,
+ F6150E451EFA52E9000B955D /* UGCSpecificReviewCell.swift in Sources */,
+ F68BDF1D1EF80DE90009BB81 /* MWMUGCCommentCell.mm in Sources */,
F63AF5101EA6215100A1DB98 /* FilterPriceCategoryCell.swift in Sources */,
34D3AFF71E37A36A004100F9 /* UICollectionView+Cells.swift in Sources */,
340475601E081A4600C92850 /* MWMLocationPredictor.mm in Sources */,
@@ -5748,6 +5863,7 @@
F6E2FDF91E097BA00083EBEC /* MWMOpeningHoursAllDayTableViewCell.mm in Sources */,
F6E2FE1A1E097BA00083EBEC /* MWMOpeningHoursTimeSpanTableViewCell.mm in Sources */,
F6E2FDED1E097BA00083EBEC /* MWMOpeningHoursAddClosedTableViewCell.mm in Sources */,
+ F6150E531EFA7352000B955D /* MWUGCCommentsController.mm in Sources */,
F6E2FE111E097BA00083EBEC /* MWMOpeningHoursTableViewCell.mm in Sources */,
3404755A1E081A4600C92850 /* WebViewController.mm in Sources */,
34F742331E0834F400AC1FD6 /* UIViewController+Navigation.mm in Sources */,
@@ -5794,6 +5910,7 @@
346DB83B1E5C4F6700E3123E /* GalleryItemModel.swift in Sources */,
340475631E081A4600C92850 /* MWMNetworkPolicy.mm in Sources */,
34D3AFF31E37945B004100F9 /* UITableView+Cells.swift in Sources */,
+ F6150E331EF953A6000B955D /* MWMUGCReviewVM.mm in Sources */,
34D3B0311E389D05004100F9 /* MWMEditorCategoryCell.mm in Sources */,
F6E2FD5D1E097BA00083EBEC /* MWMMapDownloaderCellHeader.mm in Sources */,
3454D7DB1E07F045004AF2AD /* UILabel+RuntimeAttributes.mm in Sources */,
@@ -5871,6 +5988,7 @@
849CF6E91DE842290024A8A5 /* MWMCircularProgressView.mm in Sources */,
34F407421E9E1AFF00E57AC0 /* RBBanner.swift in Sources */,
F6E2FE3E1E097BA00083EBEC /* MWMMigrationViewController.mm in Sources */,
+ F6150E491EFA5C94000B955D /* UGCTextReviewCell.swift in Sources */,
F6E2FD511E097BA00083EBEC /* MWMMapDownloaderAdsTableViewCell.mm in Sources */,
F6E2FE891E097BA00083EBEC /* MWMPlacePageRegularCell.mm in Sources */,
34D3AFEB1E378AF1004100F9 /* UINib+Init.swift in Sources */,
@@ -5930,6 +6048,7 @@
F6E2FF4F1E097BA00083EBEC /* MWMAboutController.mm in Sources */,
34F5E0D51E3F254800B1C415 /* UIView+Hierarchy.swift in Sources */,
34F407391E9E1AFF00E57AC0 /* FacebookBanner.swift in Sources */,
+ F6150E2B1EF95234000B955D /* MWMUGCReviewController.mm in Sources */,
849CF71D1DE842290024A8A5 /* MWMNavigationDashboardManager.mm in Sources */,
3454D7C91E07F045004AF2AD /* UIButton+RuntimeAttributes.mm in Sources */,
F6E2FEDA1E097BA00083EBEC /* MWMSearchContentView.mm in Sources */,
@@ -5959,6 +6078,7 @@
F6E2FD931E097BA00083EBEC /* MWMBookmarkColorViewController.mm in Sources */,
849CF7331DE842290024A8A5 /* MWMInputValidatorFactory.mm in Sources */,
F6E2FDA51E097BA00083EBEC /* MWMCuisineEditorViewController.mm in Sources */,
+ F643247C1EF82AD9009296F9 /* UGCSelectImpressionCell.swift in Sources */,
F63AF5071EA6162400A1DB98 /* FilterTypeCell.swift in Sources */,
3454D7C31E07F045004AF2AD /* NSString+Categories.mm in Sources */,
34D4FA641E26572D003F53EF /* FirstLaunchController.swift in Sources */,
diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageButtonsProtocol.h b/iphone/Maps/UI/PlacePage/MWMPlacePageButtonsProtocol.h
index f8da544c47..ff4699f809 100644
--- a/iphone/Maps/UI/PlacePage/MWMPlacePageButtonsProtocol.h
+++ b/iphone/Maps/UI/PlacePage/MWMPlacePageButtonsProtocol.h
@@ -19,6 +19,7 @@ typedef UIView * _Nullable (^MWMPlacePageButtonsDismissBlock)(NSInteger);
- (void)showGalery;
- (void)openLocalAdsURL;
+- (void)reviewOn:(NSInteger)starNumber;
- (void)openViatorURL:(nullable NSURL *)url;
diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageData.h b/iphone/Maps/UI/PlacePage/MWMPlacePageData.h
index 32526442cb..c0ae05e2cf 100644
--- a/iphone/Maps/UI/PlacePage/MWMPlacePageData.h
+++ b/iphone/Maps/UI/PlacePage/MWMPlacePageData.h
@@ -4,9 +4,15 @@
#include "map/place_page_info.hpp"
-#include "std/vector.hpp"
+#include <vector>
@class MWMPlacePageData;
+@class MWMUGCReviewVM;
+
+namespace ugc
+{
+struct Review;
+}
namespace place_page
{
@@ -21,6 +27,7 @@ enum class Sections
Viator,
Metainfo,
Ad,
+ UGC,
Buttons
};
@@ -86,6 +93,13 @@ enum class AdRows
Taxi
};
+enum class UGCRow
+{
+ SelectImpression,
+ Comment,
+ ShowMore
+};
+
enum class ButtonsRows
{
AddBusiness,
@@ -103,7 +117,7 @@ enum class OpeningHours
Unknown
};
-using NewSectionsAreReady = void (^)(NSRange const & range, MWMPlacePageData * data);
+using NewSectionsAreReady = void (^)(NSRange const & range, MWMPlacePageData * data, BOOL isSection);
using BannerIsReady = void (^)();
} // namespace place_page
@@ -146,9 +160,9 @@ using BannerIsReady = void (^)();
- (NSString *)sponsoredId;
- (void)assignOnlinePriceToLabel:(UILabel *)label;
- (NSString *)hotelDescription;
-- (std::vector<booking::HotelFacility> const &)facilities;
-- (std::vector<booking::HotelReview> const &)reviews;
-- (NSUInteger)numberOfReviews;
+- (vector<booking::HotelFacility> const &)facilities;
+- (vector<booking::HotelReview> const &)hotelReviews;
+- (NSUInteger)numberOfHotelReviews;
- (NSURL *)URLToAllReviews;
- (NSArray<MWMGalleryItemModel *> *)photos;
@@ -156,6 +170,10 @@ using BannerIsReady = void (^)();
- (void)fillOnlineViatorSection;
- (NSArray<MWMViatorItemModel *> *)viatorItems;
+// UGC
+- (MWMUGCReviewVM *)reviewViewModel;
+- (std::vector<ugc::Review> const &)ugcReviews;
+
// Route points
- (RouteMarkType)routeMarkType;
- (int8_t)intermediateIndex;
@@ -187,9 +205,9 @@ using BannerIsReady = void (^)();
- (std::vector<place_page::HotelDescriptionRow> const &)descriptionRows;
- (std::vector<place_page::HotelFacilitiesRow> const &)hotelFacilitiesRows;
- (std::vector<place_page::HotelReviewsRow> const &)hotelReviewsRows;
-- (std::vector<place_page::ViatorRow> const &)viatorRows;
- (std::vector<place_page::MetainfoRows> const &)metainfoRows;
- (std::vector<place_page::AdRows> const &)adRows;
+- (std::vector<place_page::UGCRow> const &)ugcRows;
- (std::vector<place_page::ButtonsRows> const &)buttonsRows;
// Table view metainfo rows
diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm b/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm
index 9f96881300..b920c5c10d 100644
--- a/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm
+++ b/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm
@@ -4,6 +4,7 @@
#import "MWMLocationManager.h"
#import "MWMNetworkPolicy.h"
#import "MWMSettings.h"
+#import "MWMUGCReviewVM.h"
#import "Statistics.h"
#import "SwiftBridge.h"
@@ -13,6 +14,8 @@
#include "partners_api/banner.hpp"
+#include "ugc/api.hpp"
+
#include "base/string_utils.hpp"
#include "3party/opening_hours/opening_hours.hpp"
@@ -32,12 +35,14 @@ using namespace place_page;
@property(copy, nonatomic) NSArray<MWMGalleryItemModel *> * photos;
@property(copy, nonatomic) NSArray<MWMViatorItemModel *> * viatorItems;
@property(nonatomic) NSNumberFormatter * currencyFormatter;
+@property(nonatomic) MWMUGCReviewVM<MWMUGCSpecificReviewDelegate, MWMUGCTextReviewDelegate> * reviewViewModel;
@end
@implementation MWMPlacePageData
{
Info m_info;
+ ugc::UGC m_ugc;
std::vector<Sections> m_sections;
std::vector<PreviewRows> m_previewRows;
@@ -49,6 +54,7 @@ using namespace place_page;
std::vector<HotelDescriptionRow> m_hotelDescriptionRows;
std::vector<HotelFacilitiesRow> m_hotelFacilitiesRows;
std::vector<HotelReviewsRow> m_hotelReviewsRows;
+ std::vector<UGCRow> m_ugcRows;
booking::HotelInfo m_hotelInfo;
std::vector<viator::Product> m_viatorProducts;
@@ -63,12 +69,15 @@ using namespace place_page;
return self;
}
+#pragma mark - Filling sections
+
- (void)fillSections
{
m_sections.clear();
m_previewRows.clear();
m_metainfoRows.clear();
m_adRows.clear();
+ m_ugcRows.clear();
m_buttonsRows.clear();
m_hotelPhotosRows.clear();
m_hotelDescriptionRows.clear();
@@ -101,6 +110,12 @@ using namespace place_page;
[Statistics logEvent:kStatPlacepageTaxiShow withParameters:@{ @"provider" : provider }];
}
+ if (true /* Is possible to leave review */)
+ {
+ m_sections.push_back(Sections::UGC);
+ [self fillUGCSection];
+ }
+
// There is at least one of these buttons.
if (m_info.ShouldShowAddPlace() || m_info.ShouldShowEditPlace() ||
m_info.ShouldShowAddBusiness() || m_info.IsSponsored())
@@ -240,7 +255,7 @@ using namespace place_page;
sections.insert(find(begin, end, Sections::Preview) + 1, Sections::Viator);
m_viatorRows.emplace_back(ViatorRow::Regular);
- self.sectionsAreReadyCallback({1, 1}, self);
+ self.sectionsAreReadyCallback({1, 1}, self, YES);
});
});
});
@@ -328,12 +343,54 @@ using namespace place_page;
length++;
}
- self.sectionsAreReadyCallback({position, length}, self);
+ self.sectionsAreReadyCallback({position, length}, self, YES /* It's a section */);
});
});
});
}
+- (void)fillUGCSection
+{
+ m_ugcRows.push_back(UGCRow::SelectImpression);
+
+ auto & f = GetFramework();
+ f.GetUGCApi().GetUGC(self.featureId, [self](ugc::UGC const & ugc) {
+ auto const it = find(self->m_sections.begin(), self->m_sections.end(), Sections::UGC);
+ ASSERT(it != self->m_sections.end(), ());
+
+ auto const position = static_cast<NSUInteger>(distance(self->m_sections.begin(), it));
+ auto length = 0UL;
+
+ self->m_ugc = ugc;
+ auto constexpr maxNumberOfReviews = 3UL;
+ auto const size = ugc.m_reviews.size();
+ if (size > maxNumberOfReviews)
+ {
+ self->m_ugcRows.insert(m_ugcRows.end(), maxNumberOfReviews, UGCRow::Comment);
+ length += maxNumberOfReviews;
+ self->m_ugcRows.emplace_back(UGCRow::ShowMore);
+ length++;
+ }
+ else
+ {
+ self->m_ugcRows.insert(m_ugcRows.end(), size, UGCRow::Comment);
+ length += size;
+ }
+
+ self.sectionsAreReadyCallback({position, length}, self, NO /* It's not a section */);
+ });
+
+ // TODO: Complete static ugc with dynamic one.
+ f.GetUGCApi().GetUGCUpdate(self.featureId, [self](ugc::UGCUpdate const & ugc) {
+ self.reviewViewModel = static_cast<MWMUGCReviewVM<MWMUGCSpecificReviewDelegate, MWMUGCTextReviewDelegate> *>(
+ [MWMUGCReviewVM fromUGC:ugc
+ featureId:self.featureId
+ name:self.title]);
+ });
+}
+
+#pragma mark - Update bookmark status
+
- (void)updateBookmarkStatus:(BOOL)isBookmark
{
auto & f = GetFramework();
@@ -369,8 +426,12 @@ using namespace place_page;
}
}
+#pragma mark - Dealloc
+
- (void)dealloc
{
+// TODO: Submit ugc.
+// [self.reviewViewModel submit];
auto nativeAd = self.nativeAd;
if (nativeAd)
[[MWMBannersCache cache] bannerIsOutOfScreenWithCoreBanner:nativeAd];
@@ -503,8 +564,11 @@ using namespace place_page;
- (NSString *)hotelDescription { return @(m_hotelInfo.m_description.c_str()); }
- (std::vector<booking::HotelFacility> const &)facilities { return m_hotelInfo.m_facilities; }
-- (std::vector<booking::HotelReview> const &)reviews { return m_hotelInfo.m_reviews; }
-- (NSUInteger)numberOfReviews { return m_hotelInfo.m_scoreCount; }
+- (std::vector<booking::HotelReview> const &)hotelReviews { return m_hotelInfo.m_reviews; }
+- (NSUInteger)numberOfHotelReviews { return m_hotelInfo.m_scoreCount; }
+
+- (std::vector<ugc::Review> const &)ugcReviews { return m_ugc.m_reviews; }
+
- (NSURL *)URLToAllReviews { return [NSURL URLWithString:@(m_info.GetSponsoredReviewUrl().c_str())]; }
- (NSArray<MWMGalleryItemModel *> *)photos
{
@@ -625,6 +689,7 @@ using namespace place_page;
- (std::vector<HotelDescriptionRow> const &)descriptionRows { return m_hotelDescriptionRows; }
- (std::vector<HotelFacilitiesRow> const &)hotelFacilitiesRows { return m_hotelFacilitiesRows; }
- (std::vector<HotelReviewsRow> const &)hotelReviewsRows { return m_hotelReviewsRows; }
+- (std::vector<UGCRow> const &)ugcRows { return m_ugcRows; }
- (NSString *)stringForRow:(MetainfoRows)row
{
switch (row)
diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm b/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm
index ec7ce13776..ef1c03be64 100644
--- a/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm
+++ b/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm
@@ -1,6 +1,7 @@
#import "MWMPlacePageManager.h"
#import <Pushwoosh/PushNotificationManager.h>
#import "CLLocation+Mercator.h"
+#import "MapViewController.h"
#import "MWMAPIBar.h"
#import "MWMActivityViewController.h"
#import "MWMCircularProgress.h"
@@ -16,8 +17,9 @@
#import "MWMRouter.h"
#import "MWMSideButtons.h"
#import "MWMStorage.h"
+#import "MWMUGCReviewController.h"
+#import "MWMUGCReviewVM.h"
#import "MWMViewController.h"
-#import "MapViewController.h"
#import "Statistics.h"
#import "SwiftBridge.h"
@@ -26,6 +28,8 @@
#include "platform/measurement_utils.hpp"
+#include "ugc/api.hpp"
+
extern NSString * const kBookmarkDeletedNotification;
extern NSString * const kBookmarkCategoryDeletedNotification;
@@ -529,6 +533,18 @@ void logSponsoredEvent(MWMPlacePageData * data, NSString * eventName)
[self.ownerViewController openUrl:u];
}
+- (void)reviewOn:(NSInteger)starNumber
+{
+ GetFramework().GetUGCApi().GetUGCUpdate(self.data.featureId, [self, starNumber](ugc::UGCUpdate const & ugc) {
+ auto viewModel = self.data.reviewViewModel;
+ [viewModel setDefaultStarCount:starNumber];
+ auto controller = [MWMUGCReviewController instanceFromViewModel:viewModel];
+ [self.ownerViewController.navigationController pushViewController:controller animated:YES];
+ });
+}
+
+#pragma mark - On rotate
+
- (void)viewWillTransitionToSize:(CGSize)size
withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/BookingCells/PPHotelCarouselCell.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/BookingCells/PPHotelCarouselCell.swift
index fe0d69e05c..4289013603 100644
--- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/BookingCells/PPHotelCarouselCell.swift
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/BookingCells/PPHotelCarouselCell.swift
@@ -14,7 +14,7 @@ final class PPHotelCarouselCell: MWMTableViewCell {
@IBOutlet private weak var collectionView: UICollectionView!
fileprivate var dataSource: [GalleryItemModel] = []
fileprivate let kMaximumNumberOfPhotos = 5
- fileprivate var delegate: MWMPlacePageButtonsProtocol?
+ fileprivate weak var delegate: MWMPlacePageButtonsProtocol?
func config(with ds: [GalleryItemModel], delegate d: MWMPlacePageButtonsProtocol?) {
dataSource = ds
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Controllers/MWMFacilitiesController.mm b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Controllers/MWMFacilitiesController.mm
index a335992312..f3dbc6fcd1 100644
--- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Controllers/MWMFacilitiesController.mm
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Controllers/MWMFacilitiesController.mm
@@ -16,15 +16,9 @@
[self.tableView registerWithCellClass:[MWMPPFacilityCell class]];
}
-- (void)setHotelName:(NSString *)name
-{
- self.title = name;
-}
+- (void)setHotelName:(NSString *)name { self.title = name; }
-- (void)setFacilities:(std::vector<booking::HotelFacility> const &)facilities
-{
- m_dataSource = facilities;
-}
+- (void)setFacilities:(std::vector<booking::HotelFacility> const &)facilities { m_dataSource = facilities; }
#pragma mark - TableView
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCCommentCell.h b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCCommentCell.h
new file mode 100644
index 0000000000..80366b7045
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCCommentCell.h
@@ -0,0 +1,12 @@
+#import "MWMTableViewCell.h"
+
+namespace ugc
+{
+struct Review;
+}
+
+@interface MWMUGCCommentCell : MWMTableViewCell
+
+- (void)configWithReview:(ugc::Review const &)review;
+
+@end
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCCommentCell.mm b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCCommentCell.mm
new file mode 100644
index 0000000000..1aa721178d
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCCommentCell.mm
@@ -0,0 +1,97 @@
+#import "MWMUGCCommentCell.h"
+#import "UIImageView+Coloring.h"
+
+#include "ugc/types.hpp"
+
+namespace
+{
+NSString * formattedDateFrom(ugc::Time time)
+{
+ NSDateComponentsFormatter * formatter = [[NSDateComponentsFormatter alloc] init];
+ formatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull;
+
+ using namespace std::chrono;
+ NSTimeInterval const t = duration_cast<seconds>(time.time_since_epoch()).count();
+
+ NSDate * date = [NSDate dateWithTimeIntervalSince1970:t];
+ NSCalendar * calendar = [NSCalendar currentCalendar];
+ auto const mask = (NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekOfMonth |
+ NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute);
+ NSDateComponents * components = [calendar components:mask fromDate:date];
+
+ if (components.year > 0) {
+ formatter.allowedUnits = NSCalendarUnitYear;
+ } else if (components.month > 0) {
+ formatter.allowedUnits = NSCalendarUnitMonth;
+ } else if (components.weekOfMonth > 0) {
+ formatter.allowedUnits = NSCalendarUnitWeekOfMonth;
+ } else if (components.day > 0) {
+ formatter.allowedUnits = NSCalendarUnitDay;
+ } else if (components.hour > 0) {
+ formatter.allowedUnits = NSCalendarUnitHour;
+ } else if (components.minute > 0) {
+ formatter.allowedUnits = NSCalendarUnitMinute;
+ } else {
+ formatter.allowedUnits = NSCalendarUnitSecond;
+ }
+
+ return [formatter stringFromDateComponents:components];
+}
+}
+
+@interface MWMUGCCommentCell ()
+
+@property(weak, nonatomic) IBOutlet UILabel * author;
+@property(weak, nonatomic) IBOutlet UILabel * date;
+@property(weak, nonatomic) IBOutlet UILabel * comment;
+@property(weak, nonatomic) IBOutlet UILabel * positiveCount;
+@property(weak, nonatomic) IBOutlet UILabel * negativeCount;
+@property(weak, nonatomic) IBOutlet UIImageView * thumbUp;
+@property(weak, nonatomic) IBOutlet UIImageView * thumbDown;
+@property(weak, nonatomic) IBOutlet UIButton * thumbUpButton;
+@property(weak, nonatomic) IBOutlet UIButton * thumbDownButton;
+@property(weak, nonatomic) IBOutlet UIButton * showOriginal;
+
+@end
+
+@implementation MWMUGCCommentCell
+
+- (void)configWithReview:(ugc::Review const &)review
+{
+ self.author.text = @(review.m_author.m_name.c_str());
+ self.comment.text = @(review.m_text.m_text.c_str());
+ self.date.text = formattedDateFrom(review.m_time);
+}
+
+#pragma mark - Actions
+
+- (IBAction)thumbUpTap
+{
+ self.thumbUp.mwm_coloring = self.thumbUpButton.isSelected ? MWMImageColoringBlack : MWMImageColoringGray;
+ // TODO: Increment positive count
+ if (self.thumbDownButton.selected)
+ {
+ self.thumbDown.mwm_coloring = MWMImageColoringGray;
+ self.thumbDownButton.selected = NO;
+ // Decrement negative count
+ }
+}
+
+- (IBAction)thumbDownTap
+{
+ self.thumbDown.mwm_coloring = self.thumbDownButton.isSelected ? MWMImageColoringBlack : MWMImageColoringGray;
+ // TODO: Increment negative count
+ if (self.thumbUpButton.selected)
+ {
+ self.thumbUp.mwm_coloring = MWMImageColoringGray;
+ self.thumbUpButton.selected = NO;
+ // Decrement positive count
+ }
+}
+
+- (IBAction)showOriginalTap
+{
+ // TODO: Show original comment. Will be implemented soon.
+}
+
+@end
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCCommentCell.xib b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCCommentCell.xib
new file mode 100644
index 0000000000..84352a66f8
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCCommentCell.xib
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12121" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+ <device id="retina4_7" orientation="portrait">
+ <adaptation id="fullscreen"/>
+ </device>
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
+ <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="MWMUGCCommentCell" rowHeight="85" id="7OT-yL-P9Y" customClass="MWMUGCCommentCell">
+ <rect key="frame" x="0.0" y="0.0" width="375" height="85"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="7OT-yL-P9Y" id="deN-eU-5Jw">
+ <rect key="frame" x="0.0" y="0.0" width="375" height="84"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Author" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="auV-Fe-jjv">
+ <rect key="frame" x="16" y="16" width="291" height="21"/>
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
+ <nil key="textColor"/>
+ <nil key="highlightedColor"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium14"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
+ </userDefinedRuntimeAttributes>
+ </label>
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="501" verticalHuggingPriority="251" text="Date" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NXc-T4-2At">
+ <rect key="frame" x="323" y="16" width="36" height="21"/>
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
+ <nil key="textColor"/>
+ <nil key="highlightedColor"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular12"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackHintText"/>
+ </userDefinedRuntimeAttributes>
+ </label>
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Comment" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kZb-7M-LpR" userLabel="Comment">
+ <rect key="frame" x="16" y="49" width="343" height="20"/>
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
+ <nil key="textColor"/>
+ <nil key="highlightedColor"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
+ </userDefinedRuntimeAttributes>
+ </label>
+ </subviews>
+ <constraints>
+ <constraint firstAttribute="trailing" secondItem="NXc-T4-2At" secondAttribute="trailing" constant="16" id="1lS-HM-qlf"/>
+ <constraint firstAttribute="trailing" secondItem="kZb-7M-LpR" secondAttribute="trailing" constant="16" id="6KU-n6-AGI"/>
+ <constraint firstItem="kZb-7M-LpR" firstAttribute="top" secondItem="auV-Fe-jjv" secondAttribute="bottom" constant="12" id="Fuo-3p-DCz"/>
+ <constraint firstAttribute="bottom" secondItem="kZb-7M-LpR" secondAttribute="bottom" constant="15.5" id="PIB-YP-jlS"/>
+ <constraint firstItem="NXc-T4-2At" firstAttribute="leading" secondItem="auV-Fe-jjv" secondAttribute="trailing" constant="16" id="SKZ-ht-fsR"/>
+ <constraint firstItem="kZb-7M-LpR" firstAttribute="leading" secondItem="deN-eU-5Jw" secondAttribute="leading" constant="16" id="Uy4-XY-EWE"/>
+ <constraint firstItem="auV-Fe-jjv" firstAttribute="leading" secondItem="deN-eU-5Jw" secondAttribute="leading" constant="16" id="WfW-dk-9h5"/>
+ <constraint firstItem="auV-Fe-jjv" firstAttribute="top" secondItem="deN-eU-5Jw" secondAttribute="top" constant="16" id="aSe-di-2Sq"/>
+ <constraint firstItem="kZb-7M-LpR" firstAttribute="top" secondItem="NXc-T4-2At" secondAttribute="bottom" constant="12" id="eVA-B8-y5Z"/>
+ <constraint firstItem="NXc-T4-2At" firstAttribute="top" secondItem="deN-eU-5Jw" secondAttribute="top" constant="16" id="pag-IB-oXr"/>
+ </constraints>
+ </tableViewCellContentView>
+ <inset key="separatorInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
+ <connections>
+ <outlet property="author" destination="auV-Fe-jjv" id="a77-en-qWv"/>
+ <outlet property="comment" destination="kZb-7M-LpR" id="fzO-Fd-L8v"/>
+ <outlet property="date" destination="NXc-T4-2At" id="xgH-dJ-dxG"/>
+ </connections>
+ <point key="canvasLocation" x="-15" y="57"/>
+ </tableViewCell>
+ </objects>
+</document>
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewController.h b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewController.h
new file mode 100644
index 0000000000..05e14525b9
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewController.h
@@ -0,0 +1,9 @@
+#import "MWMTableViewController.h"
+
+@class MWMUGCReviewVM;
+
+@interface MWMUGCReviewController : MWMTableViewController
+
++ (instancetype)instanceFromViewModel:(MWMUGCReviewVM *)viewModel;
+
+@end
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewController.mm b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewController.mm
new file mode 100644
index 0000000000..41915c8a7a
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewController.mm
@@ -0,0 +1,78 @@
+#import "MWMUGCReviewController.h"
+#import "MWMUGCReviewVM.h"
+#import "SwiftBridge.h"
+
+#include "ugc/types.hpp"
+
+@interface MWMUGCReviewController ()
+
+@property(weak, nonatomic) MWMUGCReviewVM<MWMUGCSpecificReviewDelegate, MWMUGCTextReviewDelegate> * viewModel;
+
+@end
+
+@implementation MWMUGCReviewController
+
++ (instancetype)instanceFromViewModel:(MWMUGCReviewVM *)viewModel
+{
+ auto inst = [[MWMUGCReviewController alloc] initWithNibName:self.className bundle:nil];
+ inst.viewModel = static_cast<MWMUGCReviewVM<MWMUGCSpecificReviewDelegate, MWMUGCTextReviewDelegate> *>(viewModel);
+ return inst;
+}
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+ self.title = self.viewModel.name;
+ auto tv = self.tableView;
+ tv.estimatedRowHeight = 44;
+ tv.rowHeight = UITableViewAutomaticDimension;
+ [tv registerWithCellClass:[MWMUGCSpecificReviewCell class]];
+ [tv registerWithCellClass:[MWMUGCTextReviewCell class]];
+ self.navigationItem.rightBarButtonItem =
+ [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
+ target:self
+ action:@selector(submitTap)];
+}
+
+- (void)submitTap
+{
+ [self.viewModel submit];
+ [self.navigationController popViewControllerAnimated:YES];
+}
+
+#pragma mark - UITableView's methods
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+ return self.viewModel.numberOfRows;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ using ugc_review::Row;
+ auto vm = self.viewModel;
+ switch ([vm rowForIndexPath:indexPath])
+ {
+ case Row::Detail:
+ {
+ auto const & record = [self.viewModel recordForIndexPath:indexPath];
+ Class cls = [MWMUGCSpecificReviewCell class];
+ auto c = static_cast<MWMUGCSpecificReviewCell *>([tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
+ [c configWithSpecification:@(record.m_key.c_str())
+ rate:static_cast<NSInteger>(record.m_value)
+ atIndexPath:indexPath
+ delegate:vm];
+ return c;
+ }
+ case Row::SpecialQuestion:
+ case Row::Message:
+ {
+ Class cls = [MWMUGCTextReviewCell class];
+ auto c = static_cast<MWMUGCTextReviewCell *>([tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
+ [c configWithDelegate:vm];
+ return c;
+ }
+ }
+}
+
+@end
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewController.xib b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewController.xib
new file mode 100644
index 0000000000..1898b54ff1
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewController.xib
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12121" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+ <device id="retina4_7" orientation="portrait">
+ <adaptation id="fullscreen"/>
+ </device>
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
+ <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MWMUGCReviewController">
+ <connections>
+ <outlet property="view" destination="TRh-wl-yRo" id="ycQ-bX-uGi"/>
+ </connections>
+ </placeholder>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="grouped" separatorStyle="default" allowsSelection="NO" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="TRh-wl-yRo">
+ <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
+ <inset key="separatorInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
+ <connections>
+ <outlet property="dataSource" destination="-1" id="QPn-i3-DtA"/>
+ <outlet property="delegate" destination="-1" id="Gv3-xw-NFq"/>
+ </connections>
+ <point key="canvasLocation" x="42" y="30"/>
+ </tableView>
+ </objects>
+</document>
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewVM.h b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewVM.h
new file mode 100644
index 0000000000..d2df3e2c5c
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewVM.h
@@ -0,0 +1,34 @@
+namespace ugc
+{
+struct RatingRecord;
+struct UGCUpdate;
+}
+
+struct FeatureID;
+
+namespace ugc_review
+{
+enum class Row
+{
+ Detail,
+ SpecialQuestion,
+ Message
+};
+} // namespace ugc
+
+@interface MWMUGCReviewVM : NSObject
+
++ (instancetype)fromUGC:(ugc::UGCUpdate const &)ugc
+ featureId:(FeatureID const &)fid
+ name:(NSString *)name;
+
+- (NSInteger)numberOfRows;
+- (ugc_review::Row)rowForIndexPath:(NSIndexPath *)indexPath;
+- (ugc::RatingRecord const &)recordForIndexPath:(NSIndexPath *)indexPath;
+- (NSString *)review;
+- (NSString *)name;
+
+- (void)setDefaultStarCount:(NSInteger)starCount;
+- (void)submit;
+
+@end
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewVM.mm b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewVM.mm
new file mode 100644
index 0000000000..4fd57b1ad9
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWMUGCReviewVM.mm
@@ -0,0 +1,83 @@
+#import "Framework.h"
+#import "MWMUGCReviewVM.h"
+#import "SwiftBridge.h"
+
+#include "ugc/api.hpp"
+
+#include <vector>
+
+@interface MWMUGCReviewVM () <MWMUGCSpecificReviewDelegate, MWMUGCTextReviewDelegate>
+{
+ ugc::UGCUpdate m_ugc;
+ FeatureID m_fid;
+ std::vector<ugc_review::Row> m_rows;
+}
+
+@property(copy, nonatomic) NSString * review;
+@property(copy, nonatomic) NSString * name;
+@property(nonatomic) NSInteger starCount;
+
+@end
+
+@implementation MWMUGCReviewVM
+
++ (instancetype)fromUGC:(ugc::UGCUpdate const &)ugc
+ featureId:(FeatureID const &)fid
+ name:(NSString *)name
+{
+ auto inst = [[MWMUGCReviewVM alloc] init];
+ inst.name = name;
+ inst->m_ugc = ugc;
+ inst->m_fid = fid;
+ [inst config];
+ return inst;
+}
+
+- (void)config
+{
+ auto & records = m_ugc.m_ratings.m_ratings;
+// Uncomment for testing.
+ records.emplace_back("Price", 0);
+ records.emplace_back("Place", 0);
+
+ m_rows.insert(m_rows.begin(), records.size(), ugc_review::Row::Detail);
+ m_rows.emplace_back(ugc_review::Row::Message);
+}
+
+- (void)setDefaultStarCount:(NSInteger)starCount
+{
+ for (auto & r : m_ugc.m_ratings.m_ratings)
+ r.m_value = starCount;
+}
+
+- (void)submit
+{
+ GetFramework().GetUGCApi().SetUGCUpdate(m_fid, m_ugc);
+}
+
+- (NSInteger)numberOfRows { return m_rows.size(); }
+
+- (ugc::RatingRecord const &)recordForIndexPath:(NSIndexPath *)indexPath
+{
+ return m_ugc.m_ratings.m_ratings[indexPath.row];
+}
+
+- (ugc_review::Row)rowForIndexPath:(NSIndexPath *)indexPath { return m_rows[indexPath.row]; }
+
+#pragma mark - MWMUGCSpecificReviewDelegate
+
+- (void)changeReviewRate:(NSInteger)rate atIndexPath:(NSIndexPath *)indexPath
+{
+ auto & record = m_ugc.m_ratings.m_ratings[indexPath.row];
+ record.m_value = rate;
+}
+
+#pragma mark - MWMUGCTextReviewDelegate
+
+- (void)changeReviewText:(NSString *)text
+{
+ self.review = text;
+ // TODO: Write the review into ugc object.
+}
+
+@end
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWUGCCommentsController.h b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWUGCCommentsController.h
new file mode 100644
index 0000000000..373deb03f9
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWUGCCommentsController.h
@@ -0,0 +1,14 @@
+#import "MWMTableViewController.h"
+
+#include <vector>
+
+namespace ugc
+{
+struct Review;
+}
+
+@interface MWUGCCommentsController : MWMTableViewController
+
++ (instancetype)instanceWithTitle:(NSString *)title comments:(std::vector<ugc::Review> const &)comments;
+
+@end
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWUGCCommentsController.mm b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWUGCCommentsController.mm
new file mode 100644
index 0000000000..50690fb431
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWUGCCommentsController.mm
@@ -0,0 +1,48 @@
+#import "MWUGCCommentsController.h"
+#import "MWMUGCCommentCell.h"
+#import "SwiftBridge.h"
+
+#include "ugc/types.hpp"
+
+@interface MWUGCCommentsController ()
+{
+ std::vector<ugc::Review> m_dataSource;
+}
+
+@end
+
+@implementation MWUGCCommentsController
+
++ (instancetype)instanceWithTitle:(NSString *)title comments:(std::vector<ugc::Review> const &)comments
+{
+ auto inst = [[MWUGCCommentsController alloc] initWithNibName:self.className bundle:nil];
+ inst.title = title;
+ inst->m_dataSource = comments;
+ return inst;
+}
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+ auto tv = self.tableView;
+ tv.estimatedRowHeight = 44;
+ tv.rowHeight = UITableViewAutomaticDimension;
+ [tv registerWithCellClass:[MWMUGCCommentCell class]];
+}
+
+#pragma mark - UITableView's methods
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+ return m_dataSource.size();
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ Class cls = [MWMUGCCommentCell class];
+ auto c = static_cast<MWMUGCCommentCell *>([tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
+ [c configWithReview:m_dataSource[indexPath.row]];
+ return c;
+}
+
+@end
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWUGCCommentsController.xib b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWUGCCommentsController.xib
new file mode 100644
index 0000000000..795d074b77
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/MWUGCCommentsController.xib
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12121" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+ <device id="retina4_7" orientation="portrait">
+ <adaptation id="fullscreen"/>
+ </device>
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
+ <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MWUGCCommentsController">
+ <connections>
+ <outlet property="view" destination="Lve-vE-lQE" id="aUI-r7-4UT"/>
+ </connections>
+ </placeholder>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="Lve-vE-lQE">
+ <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
+ <connections>
+ <outlet property="dataSource" destination="-1" id="gll-Ia-c1n"/>
+ <outlet property="delegate" destination="-1" id="oGp-Gc-vbh"/>
+ </connections>
+ <point key="canvasLocation" x="67" y="140"/>
+ </tableView>
+ </objects>
+</document>
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSelectImpressionCell.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSelectImpressionCell.swift
new file mode 100644
index 0000000000..f75fd5bbdf
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSelectImpressionCell.swift
@@ -0,0 +1,15 @@
+@objc(MWMUGCSelectImpressionCell)
+final class UGCSelectImpressionCell: MWMTableViewCell {
+ @IBOutlet private var buttons: [UIButton]!
+ private weak var delegate: MWMPlacePageButtonsProtocol?
+
+ func configWith(delegate: MWMPlacePageButtonsProtocol?) {
+ self.delegate = delegate
+ }
+
+ @IBAction private func tap(on: UIButton) {
+ buttons.forEach { $0.isSelected = false }
+ on.isSelected = true;
+ delegate?.review(on: on.tag)
+ }
+}
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSelectImpressionCell.xib b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSelectImpressionCell.xib
new file mode 100644
index 0000000000..fbed803496
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSelectImpressionCell.xib
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12121" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+ <device id="retina4_7" orientation="portrait">
+ <adaptation id="fullscreen"/>
+ </device>
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
+ <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" rowHeight="139" id="8mr-2l-jxR" customClass="MWMUGCSelectImpressionCell">
+ <rect key="frame" x="0.0" y="0.0" width="375" height="139"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="8mr-2l-jxR" id="29u-J5-Cmg">
+ <rect key="frame" x="0.0" y="0.0" width="375" height="138"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Impression" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fjZ-hn-8ng">
+ <rect key="frame" x="16" y="14" width="343" height="20"/>
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
+ <nil key="textColor"/>
+ <nil key="highlightedColor"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium20"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="ugc_tap_to_rate"/>
+ </userDefinedRuntimeAttributes>
+ </label>
+ <button opaque="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4X3-Un-UJS" userLabel="Bad" customClass="MWMButton">
+ <rect key="frame" x="111" y="50" width="40" height="40"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="40" id="3xz-Ow-9Nx"/>
+ <constraint firstAttribute="width" constant="40" id="XKA-x9-f0y"/>
+ </constraints>
+ <state key="normal" image="rating_bad_light"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="imageName" value="rating_bad"/>
+ </userDefinedRuntimeAttributes>
+ <connections>
+ <action selector="tapOn:" destination="8mr-2l-jxR" eventType="touchUpInside" id="WTZ-dD-nM5"/>
+ </connections>
+ </button>
+ <button opaque="NO" tag="5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bXR-fe-qYg" userLabel="Excellent" customClass="MWMButton">
+ <rect key="frame" x="279" y="50" width="40" height="40"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="40" id="Cgm-ht-N96"/>
+ <constraint firstAttribute="height" constant="40" id="X8l-N8-xvB"/>
+ </constraints>
+ <state key="normal" image="rating_exellent_light"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="imageName" value="rating_exellent"/>
+ </userDefinedRuntimeAttributes>
+ <connections>
+ <action selector="tapOn:" destination="8mr-2l-jxR" eventType="touchUpInside" id="OXC-nG-pw3"/>
+ </connections>
+ </button>
+ <button opaque="NO" tag="1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3Bk-EL-pCJ" userLabel="Horrible" customClass="MWMButton">
+ <rect key="frame" x="55" y="50" width="40" height="40"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="40" id="VIf-PR-ugc"/>
+ <constraint firstAttribute="height" constant="40" id="ktC-gY-Zmf"/>
+ </constraints>
+ <state key="normal" title="" image="rating_horrible_light"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="imageName" value="rating_horrible"/>
+ </userDefinedRuntimeAttributes>
+ <connections>
+ <action selector="tapOn:" destination="8mr-2l-jxR" eventType="touchUpInside" id="TfX-fp-8dX"/>
+ </connections>
+ </button>
+ <button opaque="NO" tag="4" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Pmi-8e-3lP" userLabel="Good" customClass="MWMButton">
+ <rect key="frame" x="223" y="50" width="40" height="40"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="40" id="8gn-6v-WJ3"/>
+ <constraint firstAttribute="height" constant="40" id="YpJ-9G-DMa"/>
+ </constraints>
+ <state key="normal" image="rating_good_light"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="imageName" value="rating_good"/>
+ </userDefinedRuntimeAttributes>
+ <connections>
+ <action selector="tapOn:" destination="8mr-2l-jxR" eventType="touchUpInside" id="N90-26-9Vy"/>
+ </connections>
+ </button>
+ <button opaque="NO" tag="3" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Gpp-Dv-Guw" userLabel="Average" customClass="MWMButton">
+ <rect key="frame" x="167" y="50" width="40" height="40"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="40" id="7vr-Wj-nvx"/>
+ <constraint firstAttribute="width" constant="40" id="bT2-7K-MAj"/>
+ </constraints>
+ <state key="normal" image="rating_average_light"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="imageName" value="rating_average"/>
+ </userDefinedRuntimeAttributes>
+ <connections>
+ <action selector="tapOn:" destination="8mr-2l-jxR" eventType="touchUpInside" id="l4a-eu-er6"/>
+ </connections>
+ </button>
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Horrible" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DoU-La-K5J">
+ <rect key="frame" x="55" y="98" width="39" height="16"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="16" id="gYS-80-26j"/>
+ </constraints>
+ <fontDescription key="fontDescription" type="system" pointSize="10"/>
+ <nil key="textColor"/>
+ <nil key="highlightedColor"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular10"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackHintText"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="ugc_horrible"/>
+ </userDefinedRuntimeAttributes>
+ </label>
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Bad" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3hX-1k-3h8">
+ <rect key="frame" x="103" y="98" width="56" height="16"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="16" id="1M5-Gl-Ppg"/>
+ <constraint firstAttribute="width" constant="56" id="nge-Pj-qmk"/>
+ </constraints>
+ <fontDescription key="fontDescription" type="system" pointSize="10"/>
+ <nil key="textColor"/>
+ <nil key="highlightedColor"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular10"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackHintText"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="ugc_bad"/>
+ </userDefinedRuntimeAttributes>
+ </label>
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Average" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Vh2-4Z-J3k" userLabel="Average">
+ <rect key="frame" x="159" y="98" width="56" height="16"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="56" id="dyI-nN-g7J"/>
+ <constraint firstAttribute="height" constant="16" id="oNW-OJ-dux"/>
+ </constraints>
+ <fontDescription key="fontDescription" type="system" pointSize="10"/>
+ <nil key="textColor"/>
+ <nil key="highlightedColor"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular10"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackHintText"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="ugc_average"/>
+ </userDefinedRuntimeAttributes>
+ </label>
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Good" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="S6J-iV-4Rk" userLabel="Good">
+ <rect key="frame" x="215" y="98" width="56" height="16"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="16" id="Xyn-Zb-Mwb"/>
+ <constraint firstAttribute="width" constant="56" id="qwC-SD-XGc"/>
+ </constraints>
+ <fontDescription key="fontDescription" type="system" pointSize="10"/>
+ <nil key="textColor"/>
+ <nil key="highlightedColor"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular10"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackHintText"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="ugc_good"/>
+ </userDefinedRuntimeAttributes>
+ </label>
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Excellent" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="B6d-Mf-Eov">
+ <rect key="frame" x="271" y="98" width="56" height="16"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="56" id="ATo-Op-ySH"/>
+ <constraint firstAttribute="height" constant="16" id="cjD-fd-5rM"/>
+ </constraints>
+ <fontDescription key="fontDescription" type="system" pointSize="10"/>
+ <nil key="textColor"/>
+ <nil key="highlightedColor"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular10"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackHintText"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="ugc_excellent"/>
+ </userDefinedRuntimeAttributes>
+ </label>
+ </subviews>
+ <constraints>
+ <constraint firstItem="B6d-Mf-Eov" firstAttribute="top" secondItem="bXR-fe-qYg" secondAttribute="bottom" constant="8" id="30M-e6-iM8"/>
+ <constraint firstItem="DoU-La-K5J" firstAttribute="centerX" secondItem="3Bk-EL-pCJ" secondAttribute="centerX" id="36l-z9-UDX"/>
+ <constraint firstAttribute="bottom" secondItem="DoU-La-K5J" secondAttribute="bottom" constant="24" id="3Hd-AV-iiJ"/>
+ <constraint firstAttribute="trailing" secondItem="fjZ-hn-8ng" secondAttribute="trailing" constant="16" id="5o3-tn-eRK"/>
+ <constraint firstItem="fjZ-hn-8ng" firstAttribute="top" secondItem="29u-J5-Cmg" secondAttribute="top" constant="14" id="62E-qA-nyG"/>
+ <constraint firstAttribute="bottom" secondItem="3hX-1k-3h8" secondAttribute="bottom" priority="750" constant="24" id="7hg-dl-56x"/>
+ <constraint firstItem="B6d-Mf-Eov" firstAttribute="centerX" secondItem="bXR-fe-qYg" secondAttribute="centerX" id="Azb-73-2Ml"/>
+ <constraint firstItem="Vh2-4Z-J3k" firstAttribute="centerX" secondItem="Gpp-Dv-Guw" secondAttribute="centerX" id="Djv-iU-fJu"/>
+ <constraint firstItem="S6J-iV-4Rk" firstAttribute="top" secondItem="Pmi-8e-3lP" secondAttribute="bottom" constant="8" id="Hm2-2G-fb7"/>
+ <constraint firstAttribute="bottom" secondItem="S6J-iV-4Rk" secondAttribute="bottom" priority="750" constant="24" id="J3B-uh-pxW"/>
+ <constraint firstItem="Vh2-4Z-J3k" firstAttribute="top" secondItem="Gpp-Dv-Guw" secondAttribute="bottom" constant="8" id="Klh-mk-FQm"/>
+ <constraint firstItem="fjZ-hn-8ng" firstAttribute="leading" secondItem="29u-J5-Cmg" secondAttribute="leading" constant="16" id="LRq-sK-SX7"/>
+ <constraint firstItem="3hX-1k-3h8" firstAttribute="centerX" secondItem="4X3-Un-UJS" secondAttribute="centerX" id="Lgz-RD-yek"/>
+ <constraint firstItem="Gpp-Dv-Guw" firstAttribute="top" secondItem="fjZ-hn-8ng" secondAttribute="bottom" priority="750" constant="16" id="O37-tN-tQP"/>
+ <constraint firstItem="4X3-Un-UJS" firstAttribute="leading" secondItem="3Bk-EL-pCJ" secondAttribute="trailing" constant="16" id="OiI-OA-yP6"/>
+ <constraint firstItem="Gpp-Dv-Guw" firstAttribute="leading" secondItem="4X3-Un-UJS" secondAttribute="trailing" constant="16" id="Pki-6J-dhV"/>
+ <constraint firstItem="3hX-1k-3h8" firstAttribute="top" secondItem="4X3-Un-UJS" secondAttribute="bottom" constant="8" id="Xb5-Mb-DeZ"/>
+ <constraint firstItem="4X3-Un-UJS" firstAttribute="centerY" secondItem="Gpp-Dv-Guw" secondAttribute="centerY" id="bmY-l8-HtD"/>
+ <constraint firstItem="S6J-iV-4Rk" firstAttribute="centerX" secondItem="Pmi-8e-3lP" secondAttribute="centerX" id="dNp-PM-XWI"/>
+ <constraint firstItem="Pmi-8e-3lP" firstAttribute="centerY" secondItem="Gpp-Dv-Guw" secondAttribute="centerY" id="e9m-R4-CNe"/>
+ <constraint firstItem="bXR-fe-qYg" firstAttribute="centerY" secondItem="Gpp-Dv-Guw" secondAttribute="centerY" id="j9h-Oe-qPe"/>
+ <constraint firstAttribute="bottom" secondItem="B6d-Mf-Eov" secondAttribute="bottom" priority="750" constant="24" id="oO2-HV-mZx"/>
+ <constraint firstItem="Pmi-8e-3lP" firstAttribute="leading" secondItem="Gpp-Dv-Guw" secondAttribute="trailing" constant="16" id="oo2-mQ-4Ob"/>
+ <constraint firstItem="bXR-fe-qYg" firstAttribute="leading" secondItem="Pmi-8e-3lP" secondAttribute="trailing" constant="16" id="pX2-L4-8EE"/>
+ <constraint firstItem="Gpp-Dv-Guw" firstAttribute="centerX" secondItem="fjZ-hn-8ng" secondAttribute="centerX" id="rOF-pM-EVf"/>
+ <constraint firstAttribute="bottom" secondItem="Vh2-4Z-J3k" secondAttribute="bottom" priority="750" constant="24" id="wGB-Le-XQN"/>
+ <constraint firstItem="DoU-La-K5J" firstAttribute="top" secondItem="3Bk-EL-pCJ" secondAttribute="bottom" constant="8" id="wep-Hp-ch1"/>
+ <constraint firstItem="3Bk-EL-pCJ" firstAttribute="centerY" secondItem="Gpp-Dv-Guw" secondAttribute="centerY" id="xhj-rx-jvp"/>
+ </constraints>
+ </tableViewCellContentView>
+ <inset key="separatorInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
+ <connections>
+ <outletCollection property="buttons" destination="3Bk-EL-pCJ" collectionClass="NSMutableArray" id="oDG-lJ-Zm3"/>
+ <outletCollection property="buttons" destination="4X3-Un-UJS" collectionClass="NSMutableArray" id="HqF-A4-WZR"/>
+ <outletCollection property="buttons" destination="Gpp-Dv-Guw" collectionClass="NSMutableArray" id="Rvf-SF-Fo8"/>
+ <outletCollection property="buttons" destination="Pmi-8e-3lP" collectionClass="NSMutableArray" id="8ZR-jW-kwn"/>
+ <outletCollection property="buttons" destination="bXR-fe-qYg" collectionClass="NSMutableArray" id="oXE-ze-177"/>
+ </connections>
+ <point key="canvasLocation" x="30" y="80"/>
+ </tableViewCell>
+ </objects>
+ <resources>
+ <image name="rating_average_light" width="40" height="40"/>
+ <image name="rating_bad_light" width="40" height="40"/>
+ <image name="rating_exellent_light" width="40" height="40"/>
+ <image name="rating_good_light" width="40" height="40"/>
+ <image name="rating_horrible_light" width="40" height="40"/>
+ </resources>
+</document>
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSpecificReviewCell.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSpecificReviewCell.swift
new file mode 100644
index 0000000000..1d6f5bc31e
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSpecificReviewCell.swift
@@ -0,0 +1,32 @@
+@objc(MWMUGCSpecificReviewDelegate)
+protocol UGCSpecificReviewDelegate: NSObjectProtocol {
+ func changeReviewRate(_ rate: Int, atIndexPath: NSIndexPath)
+}
+
+@objc(MWMUGCSpecificReviewCell)
+final class UGCSpecificReviewCell: MWMTableViewCell {
+ @IBOutlet private weak var specification: UILabel!
+ @IBOutlet private var stars: [UIButton]!
+ private var indexPath: NSIndexPath = NSIndexPath()
+ private var delegate: UGCSpecificReviewDelegate?
+
+ func configWith(specification: String, rate: Int, atIndexPath: NSIndexPath, delegate: UGCSpecificReviewDelegate?) {
+ self.specification.text = specification
+ self.delegate = delegate
+ indexPath = atIndexPath
+ stars.forEach { $0.isSelected = $0.tag <= rate }
+ }
+
+ @IBAction private func tap(on: UIButton) {
+ stars.forEach { $0.isSelected = $0.tag <= on.tag }
+ delegate?.changeReviewRate(on.tag, atIndexPath: indexPath)
+ }
+
+ //TODO: Make highlighting and dragging.
+
+ @IBAction private func highlight(on: UIButton) { }
+
+ @IBAction private func touchingCanceled(on: UIButton) { }
+
+ @IBAction private func drag(inside: UIButton) { }
+}
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSpecificReviewCell.xib b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSpecificReviewCell.xib
new file mode 100644
index 0000000000..16977c3b57
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCSpecificReviewCell.xib
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12121" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+ <device id="retina4_7" orientation="portrait">
+ <adaptation id="fullscreen"/>
+ </device>
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
+ <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" rowHeight="49" id="0N2-bg-mQ2" customClass="MWMUGCSpecificReviewCell">
+ <rect key="frame" x="0.0" y="0.0" width="375" height="49"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="0N2-bg-mQ2" id="kbz-UL-vv7">
+ <rect key="frame" x="0.0" y="0.0" width="375" height="48"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Specification" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7zL-Tr-aCv">
+ <rect key="frame" x="16" y="13" width="99" height="21"/>
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
+ <nil key="textColor"/>
+ <nil key="highlightedColor"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular16"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
+ </userDefinedRuntimeAttributes>
+ </label>
+ <button opaque="NO" tag="5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rR5-sh-1Ev" customClass="MWMButton">
+ <rect key="frame" x="335" y="12" width="24" height="24"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="24" id="Axn-N1-hB3"/>
+ <constraint firstAttribute="height" constant="24" id="kAI-WV-fpT"/>
+ </constraints>
+ <state key="normal" image="rating_star_light"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="imageName" value="rating_star"/>
+ </userDefinedRuntimeAttributes>
+ <connections>
+ <action selector="dragInside:" destination="0N2-bg-mQ2" eventType="touchDragInside" id="mYW-eX-sWx"/>
+ <action selector="highlightOn:" destination="0N2-bg-mQ2" eventType="touchDown" id="lwa-F3-sly"/>
+ <action selector="tapOn:" destination="0N2-bg-mQ2" eventType="touchUpInside" id="Cdw-rw-EY2"/>
+ <action selector="touchingCanceledOn:" destination="0N2-bg-mQ2" eventType="touchDragOutside" id="pea-eC-c2q"/>
+ </connections>
+ </button>
+ <button opaque="NO" tag="4" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="E91-tg-oef" customClass="MWMButton">
+ <rect key="frame" x="305" y="13" width="24" height="24"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="24" id="OT0-GR-pYu"/>
+ <constraint firstAttribute="width" constant="24" id="pGv-Gz-Q0s"/>
+ </constraints>
+ <state key="normal" image="rating_star_light"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="imageName" value="rating_star"/>
+ </userDefinedRuntimeAttributes>
+ <connections>
+ <action selector="dragInside:" destination="0N2-bg-mQ2" eventType="touchDragInside" id="pR4-6V-Fiw"/>
+ <action selector="highlightOn:" destination="0N2-bg-mQ2" eventType="touchDown" id="l8Q-jP-rUa"/>
+ <action selector="tapOn:" destination="0N2-bg-mQ2" eventType="touchUpInside" id="GZg-97-jx8"/>
+ <action selector="touchingCanceledOn:" destination="0N2-bg-mQ2" eventType="touchDragOutside" id="YXy-Lm-4xc"/>
+ </connections>
+ </button>
+ <button opaque="NO" tag="3" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="mEu-Ee-BYt" customClass="MWMButton">
+ <rect key="frame" x="275" y="13" width="24" height="24"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="24" id="McF-uF-0s0"/>
+ <constraint firstAttribute="height" constant="24" id="Pcn-He-Vpf"/>
+ </constraints>
+ <state key="normal" image="rating_star_light"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="imageName" value="rating_star"/>
+ </userDefinedRuntimeAttributes>
+ <connections>
+ <action selector="dragInside:" destination="0N2-bg-mQ2" eventType="touchDragInside" id="ee7-36-Xzo"/>
+ <action selector="highlightOn:" destination="0N2-bg-mQ2" eventType="touchDown" id="IXI-NS-iPS"/>
+ <action selector="tapOn:" destination="0N2-bg-mQ2" eventType="touchUpInside" id="NZB-x5-5LZ"/>
+ <action selector="touchingCanceledOn:" destination="0N2-bg-mQ2" eventType="touchDragOutside" id="LfI-FZ-qEh"/>
+ </connections>
+ </button>
+ <button opaque="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rbx-TQ-1ee" customClass="MWMButton">
+ <rect key="frame" x="245" y="13" width="24" height="24"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="24" id="FsX-hj-gK3"/>
+ <constraint firstAttribute="height" constant="24" id="pVI-Iu-5Gs"/>
+ </constraints>
+ <state key="normal" image="rating_star_light"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="imageName" value="rating_star"/>
+ </userDefinedRuntimeAttributes>
+ <connections>
+ <action selector="dragInside:" destination="0N2-bg-mQ2" eventType="touchUpInside" id="G23-DH-tKR"/>
+ <action selector="highlightOn:" destination="0N2-bg-mQ2" eventType="touchDown" id="dNc-Dk-JQP"/>
+ <action selector="tapOn:" destination="0N2-bg-mQ2" eventType="touchUpInside" id="hPr-Lo-rpY"/>
+ <action selector="touchingCanceledOn:" destination="0N2-bg-mQ2" eventType="touchDragOutside" id="Pek-hn-JrO"/>
+ </connections>
+ </button>
+ <button opaque="NO" tag="1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Tbw-OO-YyX" customClass="MWMButton">
+ <rect key="frame" x="215" y="13" width="24" height="24"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="24" id="k1A-hb-bfW"/>
+ <constraint firstAttribute="width" constant="24" id="usP-23-xrd"/>
+ </constraints>
+ <state key="normal" image="rating_star_light"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="imageName" value="rating_star"/>
+ </userDefinedRuntimeAttributes>
+ <connections>
+ <action selector="dragInside:" destination="0N2-bg-mQ2" eventType="touchDragInside" id="7JB-Av-BpN"/>
+ <action selector="highlightOn:" destination="0N2-bg-mQ2" eventType="touchDown" id="LjJ-m3-kPl"/>
+ <action selector="tapOn:" destination="0N2-bg-mQ2" eventType="touchUpInside" id="iLy-Y9-LwD"/>
+ <action selector="touchingCanceledOn:" destination="0N2-bg-mQ2" eventType="touchDragOutside" id="PNt-N7-uPG"/>
+ </connections>
+ </button>
+ </subviews>
+ <constraints>
+ <constraint firstItem="E91-tg-oef" firstAttribute="leading" secondItem="mEu-Ee-BYt" secondAttribute="trailing" constant="6" id="7dR-yP-dF0"/>
+ <constraint firstItem="rbx-TQ-1ee" firstAttribute="leading" secondItem="Tbw-OO-YyX" secondAttribute="trailing" constant="6" id="GqU-OH-qho"/>
+ <constraint firstItem="rR5-sh-1Ev" firstAttribute="leading" secondItem="E91-tg-oef" secondAttribute="trailing" constant="6" id="Sfy-2Z-jtC"/>
+ <constraint firstItem="rbx-TQ-1ee" firstAttribute="centerY" secondItem="kbz-UL-vv7" secondAttribute="centerY" id="Spt-41-cPH"/>
+ <constraint firstItem="7zL-Tr-aCv" firstAttribute="centerY" secondItem="kbz-UL-vv7" secondAttribute="centerY" id="Srz-p9-pJU"/>
+ <constraint firstItem="Tbw-OO-YyX" firstAttribute="centerY" secondItem="kbz-UL-vv7" secondAttribute="centerY" id="c1D-nx-GIp"/>
+ <constraint firstItem="7zL-Tr-aCv" firstAttribute="leading" secondItem="kbz-UL-vv7" secondAttribute="leading" constant="16" id="dS5-xF-O19"/>
+ <constraint firstItem="E91-tg-oef" firstAttribute="centerY" secondItem="kbz-UL-vv7" secondAttribute="centerY" id="frD-pd-HK7"/>
+ <constraint firstAttribute="trailing" secondItem="rR5-sh-1Ev" secondAttribute="trailing" constant="16" id="gQ7-OU-wse"/>
+ <constraint firstItem="rR5-sh-1Ev" firstAttribute="centerY" secondItem="kbz-UL-vv7" secondAttribute="centerY" id="sJ7-JD-b07"/>
+ <constraint firstItem="mEu-Ee-BYt" firstAttribute="leading" secondItem="rbx-TQ-1ee" secondAttribute="trailing" constant="6" id="uK1-R4-apC"/>
+ <constraint firstItem="mEu-Ee-BYt" firstAttribute="centerY" secondItem="kbz-UL-vv7" secondAttribute="centerY" id="uhg-cg-TiJ"/>
+ </constraints>
+ </tableViewCellContentView>
+ <connections>
+ <outlet property="specification" destination="7zL-Tr-aCv" id="yEY-Xr-OSH"/>
+ <outletCollection property="stars" destination="Tbw-OO-YyX" collectionClass="NSMutableArray" id="xO3-Tz-BzG"/>
+ <outletCollection property="stars" destination="rbx-TQ-1ee" collectionClass="NSMutableArray" id="FfR-Vh-hZx"/>
+ <outletCollection property="stars" destination="mEu-Ee-BYt" collectionClass="NSMutableArray" id="ao3-1f-Vy1"/>
+ <outletCollection property="stars" destination="E91-tg-oef" collectionClass="NSMutableArray" id="W9v-ur-aTo"/>
+ <outletCollection property="stars" destination="rR5-sh-1Ev" collectionClass="NSMutableArray" id="mwb-cj-yDx"/>
+ </connections>
+ <point key="canvasLocation" x="24" y="22"/>
+ </tableViewCell>
+ </objects>
+ <resources>
+ <image name="rating_star_light" width="24" height="24"/>
+ </resources>
+</document>
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCTextReviewCell.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCTextReviewCell.swift
new file mode 100644
index 0000000000..384677ea12
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCTextReviewCell.swift
@@ -0,0 +1,38 @@
+@objc(MWMUGCTextReviewDelegate)
+protocol UGCTextReviewDelegate: NSObjectProtocol {
+ func changeReviewText(_ text: String)
+}
+
+@objc(MWMUGCTextReviewCell)
+final class UGCTextReviewCell: MWMTableViewCell, UITextViewDelegate {
+ private enum Consts {
+ static let kMaxNumberOfSymbols = 400
+ }
+
+ @IBOutlet private weak var textView: MWMTextView!
+ @IBOutlet private weak var countLabel: UILabel!
+ private weak var delegate: UGCTextReviewDelegate?
+ private var indexPath: NSIndexPath = NSIndexPath()
+
+ func configWith(delegate: UGCTextReviewDelegate?) {
+ self.delegate = delegate
+ setCount(textView.text.characters.count)
+ }
+
+ private func setCount(_ count: Int) {
+ countLabel.text = "\(count)/\(Consts.kMaxNumberOfSymbols)"
+ }
+
+ //MARK: UITextViewDelegate
+ func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
+ return textView.text.characters.count <= Consts.kMaxNumberOfSymbols
+ }
+
+ func textViewDidChange(_ textView: UITextView) {
+ setCount(textView.text.characters.count)
+ }
+
+ func textViewDidEndEditing(_ textView: UITextView) {
+ delegate?.changeReviewText(textView.text)
+ }
+}
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCTextReviewCell.xib b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCTextReviewCell.xib
new file mode 100644
index 0000000000..a6a63c259d
--- /dev/null
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCTextReviewCell.xib
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12121" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+ <device id="retina4_7" orientation="portrait">
+ <adaptation id="fullscreen"/>
+ </device>
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
+ <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" rowHeight="269" id="heZ-rE-Fbm" customClass="MWMUGCTextReviewCell">
+ <rect key="frame" x="0.0" y="0.0" width="375" height="269"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="heZ-rE-Fbm" id="4Pj-Q3-q5z">
+ <rect key="frame" x="0.0" y="0.0" width="375" height="268"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="TX5-r3-4kI" customClass="MWMTextView">
+ <rect key="frame" x="16" y="16" width="343" height="236"/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="236" id="Cfd-Ch-3ra"/>
+ </constraints>
+ <fontDescription key="fontDescription" type="system" pointSize="14"/>
+ <textInputTraits key="textInputTraits" autocapitalizationType="sentences" returnKeyType="done"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="placeholder" value="ugc_write_review"/>
+ </userDefinedRuntimeAttributes>
+ <connections>
+ <outlet property="delegate" destination="heZ-rE-Fbm" id="oS2-nD-XQZ"/>
+ </connections>
+ </textView>
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="501" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4JR-Is-ntd">
+ <rect key="frame" x="317" y="231" width="42" height="21"/>
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
+ <nil key="textColor"/>
+ <nil key="highlightedColor"/>
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular12"/>
+ <userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackHintText"/>
+ </userDefinedRuntimeAttributes>
+ </label>
+ </subviews>
+ <constraints>
+ <constraint firstAttribute="bottom" secondItem="TX5-r3-4kI" secondAttribute="bottom" priority="750" constant="16" id="0ej-70-Rgj"/>
+ <constraint firstItem="TX5-r3-4kI" firstAttribute="leading" secondItem="4Pj-Q3-q5z" secondAttribute="leading" constant="16" id="BlT-Cw-SOe"/>
+ <constraint firstAttribute="bottom" secondItem="4JR-Is-ntd" secondAttribute="bottom" constant="16" id="Rx2-Zz-ujq"/>
+ <constraint firstAttribute="trailing" secondItem="TX5-r3-4kI" secondAttribute="trailing" constant="16" id="VnF-zt-9CQ"/>
+ <constraint firstAttribute="trailing" secondItem="4JR-Is-ntd" secondAttribute="trailing" constant="16" id="YUP-YV-chQ"/>
+ <constraint firstItem="TX5-r3-4kI" firstAttribute="top" secondItem="4Pj-Q3-q5z" secondAttribute="top" constant="16" id="oMx-nO-CdZ"/>
+ </constraints>
+ </tableViewCellContentView>
+ <connections>
+ <outlet property="countLabel" destination="4JR-Is-ntd" id="1g1-yP-lWl"/>
+ <outlet property="textView" destination="TX5-r3-4kI" id="pzY-1A-5pL"/>
+ </connections>
+ <point key="canvasLocation" x="31" y="151"/>
+ </tableViewCell>
+ </objects>
+</document>
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/MWMPlacePageLayout.mm b/iphone/Maps/UI/PlacePage/PlacePageLayout/MWMPlacePageLayout.mm
index 777be83d25..b00aeec06b 100644
--- a/iphone/Maps/UI/PlacePage/PlacePageLayout/MWMPlacePageLayout.mm
+++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/MWMPlacePageLayout.mm
@@ -1,6 +1,7 @@
#import "MWMPlacePageLayout.h"
#import "MWMBookmarkCell.h"
#import "MWMCircularProgress.h"
+#import "MWMUGCCommentCell.h"
#import "MWMOpeningHoursLayoutHelper.h"
#import "MWMPPPreviewLayoutHelper.h"
#import "MWMPPReviewCell.h"
@@ -13,6 +14,8 @@
#import "MWMiPhonePlacePageLayoutImpl.h"
#import "SwiftBridge.h"
+#include "ugc/types.hpp"
+
#include "storage/storage.hpp"
#include "std/array.hpp"
@@ -102,6 +105,8 @@ map<MetainfoRows, Class> const kMetaInfoCells = {
[tv registerWithCellClass:[MWMPPReviewCell class]];
[tv registerWithCellClass:[MWMPPFacilityCell class]];
[tv registerWithCellClass:[MWMPlacePageTaxiCell class]];
+ [tv registerWithCellClass:[MWMUGCSelectImpressionCell class]];
+ [tv registerWithCellClass:[MWMUGCCommentCell class]];
// Register all meta info cells.
for (auto const & pair : kMetaInfoCells)
@@ -119,12 +124,23 @@ map<MetainfoRows, Class> const kMetaInfoCells = {
self.isPlacePageButtonsEnabled = YES;
self.data = data;
- data.sectionsAreReadyCallback = ^(NSRange const & range, MWMPlacePageData * d) {
+ data.sectionsAreReadyCallback = ^(NSRange const & range, MWMPlacePageData * d, BOOL isSection) {
if (![self.data isEqual:d])
return;
- [self.placePageView.tableView insertSections:[NSIndexSet indexSetWithIndexesInRange:range]
+ auto tv = self.placePageView.tableView;
+ if (isSection) {
+ [tv insertSections:[NSIndexSet indexSetWithIndexesInRange:range]
withRowAnimation:UITableViewRowAnimationAutomatic];
+ }
+ else
+ {
+ NSMutableArray<NSIndexPath *> * indexPaths = [@[] mutableCopy];
+ for (auto i = 1; i < range.length + 1; i++)
+ [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:range.location]];
+
+ [tv insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
+ }
};
data.bannerIsReadyCallback = ^{
@@ -324,6 +340,7 @@ map<MetainfoRows, Class> const kMetaInfoCells = {
case Sections::HotelDescription: return data.descriptionRows.size();
case Sections::HotelFacilities: return data.hotelFacilitiesRows.size();
case Sections::HotelReviews: return data.hotelReviewsRows.size();
+ case Sections::UGC: return data.ugcRows.size();
}
}
@@ -472,14 +489,14 @@ map<MetainfoRows, Class> const kMetaInfoCells = {
{
Class cls = [MWMPPReviewHeaderCell class];
auto c = static_cast<MWMPPReviewHeaderCell *>([tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
- [c configWith:data.bookingRating numberOfReviews:data.numberOfReviews];
+ [c configWith:data.bookingRating numberOfReviews:data.numberOfHotelReviews];
return c;
}
case HotelReviewsRow::Regular:
{
Class cls = [MWMPPReviewCell class];
auto c = static_cast<MWMPPReviewCell *>([tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
- [c configWithReview:data.reviews[indexPath.row - 1]];
+ [c configWithReview:data.hotelReviews[indexPath.row - 1]];
return c;
}
case HotelReviewsRow::ShowMore:
@@ -514,6 +531,34 @@ map<MetainfoRows, Class> const kMetaInfoCells = {
}
}
}
+ case Sections::UGC:
+ {
+ auto const row = data.ugcRows[indexPath.row];
+ switch (row)
+ {
+ case UGCRow::SelectImpression:
+ {
+ Class cls = [MWMUGCSelectImpressionCell class];
+ auto c = static_cast<MWMUGCSelectImpressionCell *>([tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
+ [c configWithDelegate:delegate];
+ return c;
+ }
+ case UGCRow::Comment:
+ {
+ Class cls = [MWMUGCCommentCell class];
+ auto c = static_cast<MWMUGCCommentCell *>([tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
+ [c configWithReview:data.ugcReviews[indexPath.row - 1]];
+ return c;
+ }
+ case UGCRow::ShowMore:
+ {
+ Class cls = [MWMPlacePageButtonCell class];
+ auto c = static_cast<MWMPlacePageButtonCell *>([tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
+ [c configWithTitle:L(@"ugc_more_reviews") action:^{} isInsetButton:NO];
+ return c;
+ }
+ }
+ }
}
}
diff --git a/xcode/ugc/ugc.xcodeproj/project.pbxproj b/xcode/ugc/ugc.xcodeproj/project.pbxproj
index f0c2fb0bbd..7435ac493d 100644
--- a/xcode/ugc/ugc.xcodeproj/project.pbxproj
+++ b/xcode/ugc/ugc.xcodeproj/project.pbxproj
@@ -16,6 +16,7 @@
670E7BA31EF980A600A8E9ED /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 670E7BA21EF980A600A8E9ED /* libz.tbd */; };
670E7BA51EF980B300A8E9ED /* libcoding.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 670E7BA41EF980B300A8E9ED /* libcoding.a */; };
F6150E221EF90040000B955D /* api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6150E1F1EF90040000B955D /* api.cpp */; };
+ F6150E5D1EFAAB45000B955D /* storage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6150E5B1EFAAB45000B955D /* storage.cpp */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -44,6 +45,8 @@
F6150E1F1EF90040000B955D /* api.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = api.cpp; sourceTree = "<group>"; };
F6150E201EF90040000B955D /* api.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = api.hpp; sourceTree = "<group>"; };
F6150E211EF90040000B955D /* types.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = types.hpp; sourceTree = "<group>"; };
+ F6150E5B1EFAAB45000B955D /* storage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = storage.cpp; sourceTree = "<group>"; };
+ F6150E5C1EFAAB45000B955D /* storage.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = storage.hpp; sourceTree = "<group>"; };
F6F8E3A41EF83D7600F2DE8F /* libugc.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libugc.a; sourceTree = BUILT_PRODUCTS_DIR; };
F6F8E3B81EF83DF200F2DE8F /* common-debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "common-debug.xcconfig"; path = "../common-debug.xcconfig"; sourceTree = "<group>"; };
F6F8E3B91EF83DF200F2DE8F /* common-release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "common-release.xcconfig"; path = "../common-release.xcconfig"; sourceTree = "<group>"; };
@@ -107,6 +110,8 @@
F6F8E3A61EF83D7600F2DE8F /* ugc */ = {
isa = PBXGroup;
children = (
+ F6150E5B1EFAAB45000B955D /* storage.cpp */,
+ F6150E5C1EFAAB45000B955D /* storage.hpp */,
670E7BA61EF980E900A8E9ED /* serdes.hpp */,
F6150E1F1EF90040000B955D /* api.cpp */,
F6150E201EF90040000B955D /* api.hpp */,
@@ -229,6 +234,7 @@
buildActionMask = 2147483647;
files = (
F6150E221EF90040000B955D /* api.cpp in Sources */,
+ F6150E5D1EFAAB45000B955D /* storage.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};