Merge pull request #4396 from trashkalmar/downloader-ads

[android] add: Ads in downloader.
This commit is contained in:
burivuh 2016-10-05 08:36:32 +03:00 committed by GitHub
commit 14789bc670
77 changed files with 432 additions and 401 deletions

View file

@ -49,7 +49,7 @@ dependencies {
compile 'com.facebook.android:facebook-android-sdk:4.8.0'
compile 'com.google.code.gson:gson:2.6.1'
compile 'com.pushwoosh:pushwoosh:4.6.3'
compile 'com.my.tracker:mytracker-sdk:1.3.2'
compile 'com.my.tracker:mytracker-sdk:1.3.5'
compile fileTree(dir: '3rd_party', include: '*.jar')
// BottomSheet
compile project(":3rd_party:BottomSheet")

View file

@ -22,10 +22,10 @@ extern "C"
return env->NewStringUTF(MY_TRACKER_KEY);
}
JNIEXPORT jstring JNICALL
JNIEXPORT jint JNICALL
Java_com_mapswithme_maps_PrivateVariables_myTargetSlot(JNIEnv * env, jclass clazz)
{
return env->NewStringUTF(MY_TARGET_KEY);
return MY_TARGET_KEY;
}
JNIEXPORT jstring JNICALL

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 B

View file

@ -37,11 +37,6 @@
style="@style/MwmTheme.Menu.Line.Button"
android:src="@drawable/ic_menu_share"/>
<ImageView
android:id="@+id/showcase"
style="@style/MwmTheme.Menu.Line.Button"
android:src="@drawable/ic_menu_showcase"/>
<Space
android:layout_width="0dp"
android:layout_height="match_parent"
@ -70,4 +65,4 @@
android:layout_height="@dimen/menu_line_height"
android:background="@drawable/menu_button_right"
android:src="@drawable/ic_menu_settings"/>
</LinearLayout>
</LinearLayout>

View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/height_item_multiline"
android:paddingLeft="@dimen/margin_base"
android:paddingRight="@dimen/margin_base"
android:background="?clickableBackground"
android:clipToPadding="false"
tools:background="#200000FF">
<ImageView
android:id="@+id/downloader_ad_icon"
android:layout_width="@dimen/downloader_ad_icon_size"
android:layout_height="@dimen/downloader_ad_icon_size"
android:layout_centerVertical="true"
tools:background="#8000FF00"/>
<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="@dimen/margin_base"
android:layout_toRightOf="@id/downloader_ad_icon"
android:layout_centerVertical="true"
tools:background="#20FF0000">
<TextView
android:id="@+id/downloader_ad_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@style/MwmTextAppearance.Body1"
android:maxLines="2"
android:ellipsize="end"
tools:text="This is the coolest advertisment ever!!!"
tools:background="#40FF0000"/>
<TextView
android:id="@+id/downloader_ad_subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@style/MwmTextAppearance.Body4"
android:maxLines="2"
android:ellipsize="end"
tools:text="Buy me now\nCan you hear me?"
tools:background="#60FFFF00"/>
</LinearLayout>
</RelativeLayout>

View file

@ -62,13 +62,4 @@
android:drawableLeft="@drawable/ic_menu_share"
android:text="@string/share_my_location"
tools:background="#400FF000"/>
<TextView
android:id="@+id/showcase"
style="@style/MwmTheme.Menu.Content.ListItem"
android:drawableLeft="@drawable/ic_menu_showcase"
android:visibility="gone"
android:text="@string/showcase_more_apps"
tools:visibility="visible"
tools:background="#20FF0000"/>
</LinearLayout>
</LinearLayout>

View file

@ -64,13 +64,4 @@
android:drawableTop="@drawable/ic_menu_share"
android:text="@string/share_my_location"
tools:background="#200000FF"/>
<TextView
android:id="@+id/showcase"
style="@style/MwmTheme.Menu.Content.GridItem.Text"
android:drawableTop="@drawable/ic_menu_showcase"
android:visibility="gone"
android:text="@string/showcase_more_apps"
tools:background="#200000FF"
tools:visibility="visible"/>
</LinearLayout>
</LinearLayout>

View file

@ -635,7 +635,6 @@
<string name="clear_search">مسح تاريخ البحث</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">رؤية العروض</string>
<string name="showcase_more_apps">المزيد من تطبيقات My.com</string>
<string name="p2p_route_planning">تخطيط الطريق</string>
<string name="p2p_your_location">موقعك</string>
<string name="p2p_from">نقطة المغادرة</string>

View file

@ -636,7 +636,6 @@
<string name="clear_search">Vymazat historii vyhledávání</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Zobrazit nabídky</string>
<string name="showcase_more_apps">Více aplikací My.com</string>
<string name="p2p_route_planning">Plánování trasy</string>
<string name="p2p_your_location">Vaše umístění</string>
<string name="p2p_from">Počátek cesty</string>

View file

@ -633,7 +633,6 @@
<string name="clear_search">Ryd historiksøgning</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Vis tilbud</string>
<string name="showcase_more_apps">Flere My.com apps</string>
<string name="p2p_route_planning">Ruteplanlægning</string>
<string name="p2p_your_location">Din lokalitet</string>
<string name="p2p_from">Afgangssted</string>

View file

@ -647,7 +647,6 @@
<string name="clear_search">Suchverlauf löschen</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Angebote anzeigen</string>
<string name="showcase_more_apps">Weitere Apps von My.com</string>
<string name="p2p_route_planning">Routenplanung</string>
<string name="p2p_your_location">Ihr Standort</string>
<string name="p2p_from">Startpunkt</string>

View file

@ -622,9 +622,6 @@
<string name="clear_search">Eliminar el historial de búsqueda</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Mostrar ofertas</string>
<!-- Showcase menu item. -->
<string name="showcase_plan_your_trip">Planifica tu viaje</string>
<string name="showcase_more_apps">Más apps de My.com</string>
<string name="p2p_route_planning">Planificación de ruta</string>
<string name="p2p_your_location">Tu ubicación</string>
<string name="p2p_from">El punto de origen</string>

View file

@ -629,7 +629,6 @@
<string name="clear_search">Poista hakuhistoria</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Näytä tarjoukset</string>
<string name="showcase_more_apps">Lisää My.com sovelluksia</string>
<string name="p2p_route_planning">Reittisuunnittelu</string>
<string name="p2p_your_location">Sijaintisi</string>
<string name="p2p_from">Lähtöpiste</string>

View file

@ -644,9 +644,6 @@
<string name="clear_search">Effacer l\&#39;historique de recherche</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Afficher les offres</string>
<!-- Showcase menu item. -->
<string name="showcase_plan_your_trip">Planifiez votre voyage</string>
<string name="showcase_more_apps">Plus d\&#39;applications My.com</string>
<!-- Place Page link to Wikipedia article (if map object has it). -->
<string name="read_in_wikipedia">Wikipédia</string>
<string name="p2p_route_planning">Planification ditinéraire</string>

View file

@ -630,7 +630,6 @@
<string name="clear_search">A keresési előzmények törlése</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Ajánlatok mutatása</string>
<string name="showcase_more_apps">Több My.com alkalmazás</string>
<string name="p2p_route_planning">Útvonaltervezés</string>
<string name="p2p_your_location">Az Ön helyzete</string>
<string name="p2p_from">Az indulás helye</string>

View file

@ -628,7 +628,6 @@
<string name="clear_search">Bersihkan riwayat pencarian</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Tampilkan penawaran</string>
<string name="showcase_more_apps">Lebih Banyak Aplikasi My.com</string>
<string name="p2p_route_planning">Perencana Rute</string>
<string name="p2p_your_location">Lokasi Anda</string>
<string name="p2p_from">Titik keberangkatan</string>

View file

@ -628,7 +628,6 @@
<string name="clear_search">Cancella сronologia ricerche</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Mostra offerte</string>
<string name="showcase_more_apps">Altre app su My.com</string>
<string name="p2p_route_planning">Pianificazione percorso</string>
<string name="p2p_your_location">La tua posizione</string>
<string name="p2p_from">Il punto di partenza</string>

View file

@ -628,7 +628,6 @@
<string name="clear_search">検索履歴を消去</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">オファーを表示</string>
<string name="showcase_more_apps">他のMy.comアプリ</string>
<string name="p2p_route_planning">ルート作成</string>
<string name="p2p_your_location">現在位置</string>
<string name="p2p_from">出発地</string>

View file

@ -625,7 +625,6 @@
<string name="clear_search">이력 검색 지우기</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">추천 보기</string>
<string name="showcase_more_apps">기타 My.com 앱</string>
<string name="p2p_route_planning">경로 계획 중</string>
<string name="p2p_your_location">위치</string>
<string name="p2p_from">출발 지점</string>

View file

@ -629,7 +629,6 @@
<string name="clear_search">Tøm søkehistorikk</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Vis tilbud</string>
<string name="showcase_more_apps">Flere apper fra My.com</string>
<string name="p2p_route_planning">Ruteplanlegging</string>
<string name="p2p_your_location">Din beliggenhet</string>
<string name="p2p_from">Avreisested</string>

View file

@ -629,7 +629,6 @@
<string name="clear_search">Zoekgeschiedenis wissen</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Aanbiedingen weergeven</string>
<string name="showcase_more_apps">Meer My.com apps</string>
<string name="p2p_route_planning">Routeberekening</string>
<string name="p2p_your_location">Uw locatie</string>
<string name="p2p_from">Vertrekpunt</string>

View file

@ -636,9 +636,6 @@
<string name="clear_search">Wyczyść historię wyszukiwania</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Oferty</string>
<!-- Showcase menu item. -->
<string name="showcase_plan_your_trip">Zaplanuj podróż</string>
<string name="showcase_more_apps">Więcej aplikacji My.com</string>
<string name="p2p_route_planning">Planowanie trasy</string>
<string name="p2p_your_location">Twoja lokalizacja</string>
<string name="p2p_from">Miejsce wyjazdu</string>

View file

@ -628,7 +628,6 @@
<string name="clear_search">Limpar histórico de pesquisa</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Mostrar ofertas</string>
<string name="showcase_more_apps">Mais aplicativos do My.com</string>
<string name="p2p_route_planning">Planejar rota</string>
<string name="p2p_your_location">Localização atual</string>
<string name="p2p_from">O ponto de partida</string>

View file

@ -626,7 +626,6 @@
<string name="clear_search">Ștergere istoric de căutare</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Afișare oferte</string>
<string name="showcase_more_apps">Mai multe aplicații My.com</string>
<string name="p2p_route_planning">Planificare rută</string>
<string name="p2p_your_location">Locația dvs.</string>
<string name="p2p_from">Punctul de plecare</string>

View file

@ -647,9 +647,6 @@
<string name="clear_search">Очистить историю поиска</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Показывать предложения</string>
<!-- Showcase menu item. -->
<string name="showcase_plan_your_trip">Подготовься к путешествию</string>
<string name="showcase_more_apps">Другие приложения My.com</string>
<string name="p2p_route_planning">Планирование маршрута</string>
<string name="p2p_your_location">Ваше местоположение</string>
<string name="p2p_from">Пункт отправления</string>

View file

@ -632,7 +632,6 @@
<string name="clear_search">Vymazať históriu vyhľadávania</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Zobraziť akcie</string>
<string name="showcase_more_apps">Ďalšie My.com aplikácie</string>
<string name="p2p_route_planning">Plánovanie trasy</string>
<string name="p2p_your_location">Vaša poloha</string>
<string name="p2p_from">Východiskový bod</string>

View file

@ -633,7 +633,6 @@
<string name="clear_search">Rensa sökhistorik</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Visa erbjudanden</string>
<string name="showcase_more_apps">Mai multe aplicații My.com</string>
<string name="p2p_route_planning">Ruttplanering</string>
<string name="p2p_your_location">Din plats</string>
<string name="p2p_from">Startplats</string>

View file

@ -635,7 +635,6 @@
<string name="clear_search">ล้างการค้นหาประวัติ</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">แสดงข้อเสนอ</string>
<string name="showcase_more_apps">แอป My.com เพิ่มเติม</string>
<string name="p2p_route_planning">การวางแผนเส้นทาง</string>
<string name="p2p_your_location">ตำแหน่งที่ตั้งของคุณ</string>
<string name="p2p_from">จุดที่ออกเดินทาง</string>

View file

@ -635,7 +635,6 @@
<string name="clear_search">Arama geçmişini temizle</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Teklifleri göster</string>
<string name="showcase_more_apps">Daha fazla My.com uygulamaları</string>
<string name="p2p_route_planning">Rota planlama</string>
<string name="p2p_your_location">Konumunuz</string>
<string name="p2p_from">Kalkış noktası</string>

View file

@ -633,7 +633,6 @@
<string name="clear_search">Очистити історію пошуку</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Показати пропозиції</string>
<string name="showcase_more_apps">Інші додатки My.com</string>
<string name="p2p_route_planning">Планування маршруту</string>
<string name="p2p_your_location">Ваше місцезнаходження</string>
<string name="p2p_from">Пункт відправлення</string>

View file

@ -629,7 +629,6 @@
<string name="clear_search">Xóa Lịch sử Tìm kiếm</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Hiển thị lời mời</string>
<string name="showcase_more_apps">Thêm Ứng dụng My.com</string>
<string name="p2p_route_planning">Hoạch định đường đi</string>
<string name="p2p_your_location">Vị trí của bạn</string>
<string name="p2p_from">Điểm khởi hành</string>

View file

@ -639,7 +639,6 @@
<string name="clear_search">清除搜尋記錄</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">顯示優惠</string>
<string name="showcase_more_apps">更多 My.com 應用程式</string>
<!-- Place Page link to Wikipedia article (if map object has it). -->
<string name="read_in_wikipedia">維基百科</string>
<string name="p2p_route_planning">路線計劃</string>

View file

@ -635,7 +635,6 @@
<string name="clear_search">清除历史搜索</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">显示优惠</string>
<string name="showcase_more_apps">更多My.com应用</string>
<string name="p2p_route_planning">路线计划</string>
<string name="p2p_your_location">您的位置</string>
<string name="p2p_from">出发地点</string>

View file

@ -39,6 +39,7 @@
<dimen name="place_page_buttons_height">56dp</dimen>
<dimen name="downloader_status_size">40dp</dimen>
<dimen name="downloader_ad_icon_size">@dimen/downloader_status_size</dimen>
<dimen name="search_progress_size">32dp</dimen>
<dimen name="panel_width">360dp</dimen>

View file

@ -649,9 +649,6 @@
<string name="clear_search">Clear Search History</string>
<!-- Title for settings to enable/disable showcase menu button -->
<string name="showcase_settings_title">Show offers</string>
<!-- Showcase menu item. -->
<string name="showcase_plan_your_trip">Plan your trip</string>
<string name="showcase_more_apps">More My.com Apps</string>
<!-- Place Page link to Wikipedia article (if map object has it). -->
<string name="read_in_wikipedia">Wikipedia</string>
<string name="p2p_route_planning">Route Planning</string>

View file

@ -16,7 +16,6 @@ import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
@ -81,10 +80,7 @@ import com.mapswithme.util.concurrency.UiThread;
import com.mapswithme.util.sharing.ShareOption;
import com.mapswithme.util.sharing.SharingHelper;
import com.mapswithme.util.statistics.AlohaHelper;
import com.mapswithme.util.statistics.MytargetHelper;
import com.mapswithme.util.statistics.Statistics;
import ru.mail.android.mytarget.nativeads.NativeAppwallAd;
import ru.mail.android.mytarget.nativeads.banners.NativeAppwallBanner;
import java.io.Serializable;
import java.util.Stack;
@ -118,8 +114,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
private final Stack<MapTask> mTasks = new Stack<>();
private final StoragePathManager mPathManager = new StoragePathManager();
private View mMapFrame;
private MapFragment mMapFragment;
private PlacePageView mPlacePage;
@ -131,12 +125,9 @@ public class MwmActivity extends BaseMwmFragmentActivity
private PanelAnimator mPanelAnimator;
private OnmapDownloader mOnmapDownloader;
private MytargetHelper mMytargetHelper;
private FadeView mFadeView;
// TODO create outer controller
private View mZoomFrame;
private View mNavZoomIn;
private View mNavZoomOut;
private MyPositionButton mNavMyPosition;
@ -178,7 +169,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
m_listener = listener;
}
public void setPlacePageVisible(boolean visible)
void setPlacePageVisible(boolean visible)
{
int orientation = MwmActivity.this.getResources().getConfiguration().orientation;
if(orientation == Configuration.ORIENTATION_LANDSCAPE)
@ -188,7 +179,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
}
}
public void setPreviewVisible(boolean visible)
void setPreviewVisible(boolean visible)
{
int orientation = MwmActivity.this.getResources().getConfiguration().orientation;
if(orientation == Configuration.ORIENTATION_PORTRAIT)
@ -291,7 +282,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
}
@Nullable
public Fragment getFragment(Class<? extends Fragment> clazz)
Fragment getFragment(Class<? extends Fragment> clazz)
{
if (!mIsFragmentContainer)
throw new IllegalStateException("Must be called for tablets only!");
@ -497,8 +488,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
private void initMap()
{
mMapFrame = findViewById(R.id.map_fragment_container);
mFadeView = (FadeView) findViewById(R.id.fade_view);
mFadeView.setListener(new FadeView.Listener()
{
@ -518,17 +507,18 @@ public class MwmActivity extends BaseMwmFragmentActivity
.replace(R.id.map_fragment_container, mMapFragment, MapFragment.class.getName())
.commit();
}
mMapFrame.setOnTouchListener(this);
findViewById(R.id.map_fragment_container).setOnTouchListener(this);
}
private void initNavigationButtons()
{
mZoomFrame = findViewById(R.id.navigation_buttons);
mNavZoomIn = mZoomFrame.findViewById(R.id.nav_zoom_in);
View frame = findViewById(R.id.navigation_buttons);
mNavZoomIn = frame.findViewById(R.id.nav_zoom_in);
mNavZoomIn.setOnClickListener(this);
mNavZoomOut = mZoomFrame.findViewById(R.id.nav_zoom_out);
mNavZoomOut = frame.findViewById(R.id.nav_zoom_out);
mNavZoomOut.setOnClickListener(this);
mNavMyPosition = new MyPositionButton(mZoomFrame.findViewById(R.id.my_position));
mNavMyPosition = new MyPositionButton(frame.findViewById(R.id.my_position));
}
private boolean closePlacePage()
@ -708,17 +698,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
}
});
break;
case SHOWCASE:
closeMenu(Statistics.EventName.MENU_SHOWCASE, AlohaHelper.MENU_SHOWCASE, new Runnable()
{
@Override
public void run()
{
mMytargetHelper.displayShowcase();
}
});
break;
}
}
});
@ -924,7 +903,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
protected void onStart()
{
super.onStart();
initShowcase();
RoutingController.get().attach(this);
if (!mIsFragmentContainer)
mRoutingPlanInplaceController.setStartButton();
@ -933,45 +911,11 @@ public class MwmActivity extends BaseMwmFragmentActivity
LocationHelper.INSTANCE.attach(this);
}
private void initShowcase()
{
NativeAppwallAd.AppwallAdListener listener = new NativeAppwallAd.AppwallAdListener()
{
@Override
public void onLoad(NativeAppwallAd nativeAppwallAd)
{
if (nativeAppwallAd.getBanners().isEmpty())
{
mMainMenu.setVisible(MainMenu.Item.SHOWCASE, false);
return;
}
final NativeAppwallBanner menuBanner = nativeAppwallAd.getBanners().get(0);
mMainMenu.setShowcaseText(menuBanner.getTitle());
mMainMenu.setVisible(MainMenu.Item.SHOWCASE, true);
}
@Override
public void onNoAd(String reason, NativeAppwallAd nativeAppwallAd)
{
mMainMenu.setVisible(MainMenu.Item.SHOWCASE, false);
}
@Override
public void onClick(NativeAppwallBanner nativeAppwallBanner, NativeAppwallAd nativeAppwallAd) {}
@Override
public void onDismissDialog(NativeAppwallAd nativeAppwallAd) {}
};
mMytargetHelper = new MytargetHelper(listener, this);
}
@Override
protected void onStop()
{
super.onStop();
LocationHelper.INSTANCE.detach(!isFinishing());
mMytargetHelper.cancel();
RoutingController.get().detach();
}
@ -1246,7 +1190,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
private static final long serialVersionUID = 1L;
private final String mUrl;
public OpenUrlTask(String url)
OpenUrlTask(String url)
{
Utils.checkNotNull(url);
mUrl = url;

View file

@ -8,7 +8,7 @@ public class PrivateVariables
public static native String alohalyticsUrl();
public static native String flurryKey();
public static native String myTrackerKey();
public static native String myTargetSlot();
public static native int myTargetSlot();
public static native String myTargetCheckUrl();
/**
* @return interval in seconds

View file

@ -15,6 +15,7 @@ public final class CountryItem implements Comparable<CountryItem>
static final int CATEGORY_NEAR_ME = 0;
static final int CATEGORY_DOWNLOADED = 1;
static final int CATEGORY_AVAILABLE = 2;
static final int CATEGORY__LAST = CATEGORY_AVAILABLE;
// Must correspond to NodeStatus in storage_defines.hpp
public static final int STATUS_UNKNOWN = 0;

View file

@ -6,6 +6,7 @@ import android.content.Intent;
import android.graphics.Typeface;
import android.location.Location;
import android.support.annotation.DrawableRes;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
@ -19,16 +20,9 @@ import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Stack;
import com.mapswithme.maps.MwmActivity;
import com.mapswithme.maps.MwmApplication;
import com.mapswithme.maps.R;
@ -37,31 +31,55 @@ import com.mapswithme.maps.location.LocationHelper;
import com.mapswithme.maps.routing.RoutingController;
import com.mapswithme.util.BottomSheetHelper;
import com.mapswithme.util.StringUtils;
import com.mapswithme.util.ThemeUtils;
import com.mapswithme.util.UiUtils;
import com.mapswithme.util.statistics.MytargetHelper;
import com.mapswithme.util.statistics.Statistics;
import com.timehop.stickyheadersrecyclerview.StickyRecyclerHeadersAdapter;
import com.timehop.stickyheadersrecyclerview.StickyRecyclerHeadersDecoration;
import ru.mail.android.mytarget.nativeads.banners.NativeAppwallBanner;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Stack;
class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolder>
class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolderWrapper>
implements StickyRecyclerHeadersAdapter<DownloaderAdapter.HeaderViewHolder>
{
private static final String HEADER_ADVERTISMENT_TITLE = "MY.COM";
private static final int HEADER_ADVERTISMENT_ID = CountryItem.CATEGORY__LAST + 1;
private static final int HEADER_ADS_OFFSET = 10;
private static final int TYPE_COUNTRY = 0;
private static final int TYPE_ADVERTISMENT = 1;
private final RecyclerView mRecycler;
private final Activity mActivity;
private final DownloaderFragment mFragment;
private final StickyRecyclerHeadersDecoration mHeadersDecoration;
private boolean mMyMapsMode = true;
private boolean mAdsLoaded;
private boolean mAdsLoading;
private boolean mShowAds;
private boolean mSearchResultsMode;
private String mSearchQuery;
private final List<CountryItem> mItems = new ArrayList<>();
private final Map<String, CountryItem> mCountryIndex = new HashMap<>(); // Country.id -> Country
private final List<NativeAppwallBanner> mAds = new ArrayList<>();
private final SparseArray<String> mHeaders = new SparseArray<>();
private final Stack<PathEntry> mPath = new Stack<>(); // Holds navigation history. The last element is the current level.
private int mNearMeCount;
private int mListenerSlot;
@Nullable
private MytargetHelper mMytargetHelper;
private enum MenuItem
{
@ -248,9 +266,9 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
for (int i = first; i <= last; i++)
{
ViewHolder vh = (ViewHolder)mRecycler.findViewHolderForAdapterPosition(i);
if (vh != null && vh.mItem.id.equals(countryId))
vh.bind(vh.mItem);
ViewHolderWrapper vh = (ViewHolderWrapper) mRecycler.findViewHolderForAdapterPosition(i);
if (vh != null && vh.mKind == TYPE_COUNTRY && ((CountryItem) vh.mHolder.mItem).id.equals(countryId))
vh.mHolder.rebind();
}
}
@ -284,7 +302,60 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
}
};
class ViewHolder extends RecyclerView.ViewHolder
private View createViewHolderFrame(ViewGroup parent, int kind)
{
return inflate(parent, (kind == TYPE_ADVERTISMENT ? R.layout.downloader_item_ad
: R.layout.downloader_item));
}
class ViewHolderWrapper extends RecyclerView.ViewHolder
{
private final int mKind;
@NonNull
private final BaseInnerViewHolder mHolder;
ViewHolderWrapper(@NonNull ViewGroup parent, int kind)
{
super(createViewHolderFrame(parent, kind));
mKind = kind;
mHolder = (kind == TYPE_ADVERTISMENT) ? new AdViewHolder(itemView)
: new ItemViewHolder(itemView);
}
@SuppressWarnings("unchecked")
void bind(int position)
{
int kind = DownloaderAdapter.this.getItemViewType(position);
if (kind == TYPE_ADVERTISMENT)
{
mHolder.bind(mAds.get(position - mNearMeCount));
return;
}
if (position > mNearMeCount)
position -= getAdsCount();
mHolder.bind(mItems.get(position));
}
}
private static abstract class BaseInnerViewHolder<T>
{
T mItem;
void bind(T item)
{
mItem = item;
}
void rebind()
{
bind(mItem);
}
}
private class ItemViewHolder extends BaseInnerViewHolder<CountryItem>
{
private final DownloaderStatusIcon mStatusIcon;
private final TextView mName;
@ -292,8 +363,6 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
private final TextView mFoundName;
private final TextView mSize;
private CountryItem mItem;
private void processClick(boolean clickOnStatus)
{
switch (mItem.status)
@ -409,10 +478,8 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
}).tint().show();
}
public ViewHolder(View frame)
ItemViewHolder(View frame)
{
super(frame);
mStatusIcon = new DownloaderStatusIcon(frame.findViewById(R.id.downloader_status_frame))
{
@Override
@ -480,9 +547,10 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
});
}
@Override
void bind(CountryItem item)
{
mItem = item;
super.bind(item);
if (mSearchResultsMode)
{
@ -530,21 +598,70 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
}
}
class HeaderViewHolder extends RecyclerView.ViewHolder {
class HeaderViewHolder extends RecyclerView.ViewHolder
{
@NonNull
private final TextView mTitle;
HeaderViewHolder(View frame) {
HeaderViewHolder(@NonNull View frame)
{
super(frame);
mTitle = (TextView) frame.findViewById(R.id.title);
}
void bind(int position) {
mTitle.setText(mHeaders.get(mItems.get(position).headerId));
void bind(int position)
{
if (position >= mNearMeCount && position < mNearMeCount + getAdsCount())
mTitle.setText(HEADER_ADVERTISMENT_TITLE);
else
mTitle.setText(mHeaders.get(mItems.get(position).headerId));
}
}
private class AdViewHolder extends BaseInnerViewHolder<NativeAppwallBanner>
{
private final ImageView mIcon;
private final TextView mTitle;
private final TextView mSubtitle;
private NativeAppwallBanner mData;
@NonNull
private final View.OnClickListener mClickListener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if (mData != null)
if (mMytargetHelper != null)
mMytargetHelper.onBannerClick(mData);
}
};
AdViewHolder(View frame)
{
mIcon = (ImageView)frame.findViewById(R.id.downloader_ad_icon);
mTitle = (TextView)frame.findViewById(R.id.downloader_ad_title);
mSubtitle = (TextView)frame.findViewById(R.id.downloader_ad_subtitle);
frame.setOnClickListener(mClickListener);
}
@Override
void bind(NativeAppwallBanner item)
{
mData = item;
super.bind(item);
mIcon.setImageBitmap(item.getIcon().getBitmap());
mTitle.setText(item.getTitle());
mSubtitle.setText(item.getDescription());
}
}
private void collectHeaders()
{
mNearMeCount = 0;
mHeaders.clear();
if (mSearchResultsMode)
return;
@ -562,6 +679,8 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
mHeaders.put(headerId, MwmApplication.get().getString(R.string.downloader_near_me_subtitle));
prev = ci.category;
}
mNearMeCount++;
break;
case CountryItem.CATEGORY_DOWNLOADED:
@ -575,7 +694,7 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
default:
int prevHeader = headerId;
headerId = CountryItem.CATEGORY_AVAILABLE + ci.name.charAt(0);
headerId = CountryItem.CATEGORY_AVAILABLE * HEADER_ADS_OFFSET + ci.name.charAt(0);
if (headerId != prevHeader)
mHeaders.put(headerId, ci.name.substring(0, 1).toUpperCase());
@ -609,6 +728,7 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
MapManager.nativeListItems(parent, lat, lon, hasLocation, mMyMapsMode, mItems);
processData();
loadAds();
}
void setSearchResultsMode(Collection<CountryItem> results, String query)
@ -639,13 +759,13 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
for (CountryItem ci: mItems)
mCountryIndex.put(ci.id, ci);
mHeadersDecoration.invalidateHeaders();
notifyDataSetChanged();
if (mItems.isEmpty())
mFragment.setupPlaceholder();
mFragment.showPlaceholder(mItems.isEmpty());
mHeadersDecoration.invalidateHeaders();
notifyDataSetChanged();
}
DownloaderAdapter(DownloaderFragment fragment)
@ -657,22 +777,40 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
mRecycler.addItemDecoration(mHeadersDecoration);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
@NonNull
private View inflate(ViewGroup parent, @LayoutRes int layoutId)
{
return new ViewHolder(LayoutInflater.from(mActivity).inflate(R.layout.downloader_item, parent, false));
return LayoutInflater.from(mActivity).inflate(layoutId, parent, false);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position)
public int getItemViewType(int position)
{
holder.bind(mItems.get(position));
if (position < mNearMeCount)
return TYPE_COUNTRY;
if (position < mNearMeCount + getAdsCount())
return TYPE_ADVERTISMENT;
return TYPE_COUNTRY;
}
@Override
public ViewHolderWrapper onCreateViewHolder(ViewGroup parent, int viewType)
{
return new ViewHolderWrapper(parent, viewType);
}
@Override
public void onBindViewHolder(ViewHolderWrapper holder, int position)
{
holder.bind(position);
}
@Override
public HeaderViewHolder onCreateHeaderViewHolder(ViewGroup parent)
{
return new HeaderViewHolder(LayoutInflater.from(mActivity).inflate(R.layout.downloader_item_header, parent, false));
return new HeaderViewHolder(inflate(parent, R.layout.downloader_item_header));
}
@Override
@ -684,13 +822,26 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
@Override
public long getHeaderId(int position)
{
if (position >= mNearMeCount)
{
if (position < mNearMeCount + getAdsCount())
return HEADER_ADVERTISMENT_ID;
position -= getAdsCount();
}
return mItems.get(position).headerId;
}
private int getAdsCount()
{
return (mShowAds ? mAds.size() : 0);
}
@Override
public int getItemCount()
{
return mItems.size();
return mItems.size() + getAdsCount();
}
private void goDeeper(CountryItem child, boolean refresh)
@ -776,6 +927,98 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
return mMyMapsMode;
}
/**
* Loads banner if:
* <ul>
* <li>Not in `my maps` mode;</li>
* <li>Currently at root level;</li>
* <li>Day mode is active;</li>
* <li>There is at least one map downloaded.</li>
* </ul>
*/
private void loadAds()
{
mShowAds = false;
if (mAdsLoading)
return;
if (mMyMapsMode || !CountryItem.isRoot(getCurrentRootId()))
return;
if (!ThemeUtils.isDefaultTheme())
return;
if (MapManager.nativeGetDownloadedCount() < 1)
return;
mShowAds = true;
if (mAdsLoaded)
{
mHeadersDecoration.invalidateHeaders();
notifyItemRangeInserted(mNearMeCount, mAds.size());
return;
}
mAdsLoading = true;
mMytargetHelper = new MytargetHelper(new MytargetHelper.Listener<Void>()
{
private void onNoAdsInternal()
{
mAdsLoading = false;
mAdsLoaded = true;
int oldSize = mAds.size();
mAds.clear();
if (oldSize > 0)
{
mHeadersDecoration.invalidateHeaders();
notifyItemRangeRemoved(mNearMeCount, oldSize);
}
}
@Override
public void onNoAds()
{
onNoAdsInternal();
}
@Override
public void onDataReady(@Nullable Void data)
{
//noinspection ConstantConditions
mMytargetHelper.loadShowcase(new MytargetHelper.Listener<List<NativeAppwallBanner>>()
{
@Override
public void onNoAds()
{
onNoAdsInternal();
}
@Override
public void onDataReady(@Nullable List<NativeAppwallBanner> banners)
{
mAdsLoading = false;
mAdsLoaded = true;
int oldSize = mAds.size();
mAds.clear();
if (banners != null)
for (NativeAppwallBanner banner: banners)
if (!banner.isAppInstalled())
mAds.add(banner);
mHeadersDecoration.invalidateHeaders();
if (oldSize == 0)
notifyItemRangeInserted(mNearMeCount, mAds.size());
else
notifyDataSetChanged();
}
}, mActivity);
}
});
}
void attach()
{
mListenerSlot = MapManager.nativeSubscribe(mStorageCallback);
@ -784,6 +1027,11 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
void detach()
{
MapManager.nativeUnsubscribe(mListenerSlot);
if (mMytargetHelper != null)
mMytargetHelper.cancel();
mAdsLoading = false;
}
boolean isSearchResultsMode()

View file

@ -13,8 +13,6 @@ import com.mapswithme.maps.downloader.UpdateInfo;
import com.mapswithme.maps.routing.RoutingController;
import com.mapswithme.util.Graphics;
import com.mapswithme.util.UiUtils;
import com.mapswithme.util.log.DebugLogger;
import com.mapswithme.util.log.Logger;
import java.util.ArrayList;
import java.util.HashMap;
@ -123,8 +121,7 @@ public class MainMenu extends BaseMenu
BOOKMARKS(R.id.bookmarks),
SHARE(R.id.share),
DOWNLOADER(R.id.download_maps),
SETTINGS(R.id.settings),
SHOWCASE(R.id.showcase);
SETTINGS(R.id.settings);
private final int mViewId;
@ -216,7 +213,6 @@ public class MainMenu extends BaseMenu
mapItem(Item.SHARE);
mapItem(Item.DOWNLOADER);
mapItem(Item.SETTINGS);
mapItem(Item.SHOWCASE);
adjustCollapsedItems();
setState(State.MENU, false);
@ -310,11 +306,6 @@ public class MainMenu extends BaseMenu
return mAnimationTrackListener;
}
public void setShowcaseText(String text)
{
((TextView) mItemViews.get(Item.SHOWCASE)).setText(text);
}
public Button getRouteStartButton()
{
return mRouteStartButton;

View file

@ -52,7 +52,6 @@ public class AlohaHelper
// menu actions
public static final String MENU_DOWNLOADER = "downloader";
public static final String MENU_SETTINGS = "settingsAndMore";
public static final String MENU_SHOWCASE = "showcase";
public static final String MENU_SHARE = "share@";
public static final String MENU_POINT2POINT = "point2point";
public static final String MENU_ADD_PLACE = "addPlace";

View file

@ -3,13 +3,9 @@ package com.mapswithme.util.statistics;
import android.app.Activity;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.WorkerThread;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import com.mapswithme.maps.MwmApplication;
import com.mapswithme.maps.PrivateVariables;
import com.mapswithme.maps.R;
@ -18,6 +14,15 @@ import com.mapswithme.util.concurrency.ThreadPool;
import com.mapswithme.util.concurrency.UiThread;
import ru.mail.android.mytarget.core.net.Hosts;
import ru.mail.android.mytarget.nativeads.NativeAppwallAd;
import ru.mail.android.mytarget.nativeads.banners.NativeAppwallBanner;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import static com.mapswithme.maps.MwmApplication.prefs;
public final class MytargetHelper
{
@ -30,23 +35,24 @@ public final class MytargetHelper
private static final int TIMEOUT = 1000;
private NativeAppwallAd mShowcase;
private Activity mActivity;
private NativeAppwallAd.AppwallAdListener mListener;
private boolean mCancelled;
public interface Listener<T>
{
void onNoAds();
void onDataReady(@Nullable T data);
}
static
{
Hosts.setMyComHost();
}
public MytargetHelper(@NonNull NativeAppwallAd.AppwallAdListener listener, @NonNull Activity activity)
public MytargetHelper(final @NonNull Listener<Void> listener)
{
mListener = listener;
mActivity = activity;
if (!ConnectionState.isConnected() ||
!isShowcaseSwitchedOnLocal())
if (!ConnectionState.isConnected() || !isShowcaseSwitchedOnLocal())
{
listener.onNoAd("Switched off", null);
listener.onNoAds();
return;
}
@ -56,21 +62,22 @@ public final class MytargetHelper
public void run()
{
final boolean showShowcase = getShowcaseSetting();
if (mCancelled)
return;
UiThread.run(new Runnable()
{
@Override
public void run()
{
if (mListener == null || mActivity == null)
if (mCancelled)
return;
if (!showShowcase)
{
mListener.onNoAd("Switched off on server", null);
return;
}
loadShowcase(mListener, mActivity);
if (showShowcase)
listener.onDataReady(null);
else
listener.onNoAds();
}
});
}
@ -79,14 +86,13 @@ public final class MytargetHelper
public void cancel()
{
mListener = null;
mActivity = null;
mCancelled = true;
}
@WorkerThread
private static boolean getShowcaseSetting()
{
final long lastCheckMillis = MwmApplication.prefs().getLong(PREF_CHECK_MILLIS, 0);
final long lastCheckMillis = prefs().getLong(PREF_CHECK_MILLIS, 0);
final long currentMillis = System.currentTimeMillis();
if (currentMillis - lastCheckMillis < CHECK_INTERVAL_MILLIS)
return isShowcaseSwitchedOnServer();
@ -121,20 +127,52 @@ public final class MytargetHelper
return false;
}
private void loadShowcase(NativeAppwallAd.AppwallAdListener listener, Activity activity)
public void loadShowcase(final @NonNull Listener<List<NativeAppwallBanner>> listener, Activity activity)
{
mShowcase = new NativeAppwallAd(Integer.parseInt(PrivateVariables.myTargetSlot()), activity);
mShowcase.setListener(listener);
mShowcase.load();
if (mShowcase == null)
mShowcase = loadAds(listener, activity);
}
public void displayShowcase()
private NativeAppwallAd loadAds(final @NonNull Listener<List<NativeAppwallBanner>> listener, Activity activity)
{
if (!mShowcase.getBanners().isEmpty())
mShowcase.handleBannerClick(mShowcase.getBanners().get(0));
NativeAppwallAd res = new NativeAppwallAd(PrivateVariables.myTargetSlot(), activity);
res.setListener(new NativeAppwallAd.AppwallAdListener()
{
@Override
public void onLoad(NativeAppwallAd ad)
{
if (mCancelled)
return;
if (ad.getBanners().isEmpty())
listener.onNoAds();
else
listener.onDataReady(ad.getBanners());
}
@Override
public void onNoAd(String s, NativeAppwallAd nativeAppwallAd)
{
listener.onNoAds();
}
@Override
public void onClick(NativeAppwallBanner nativeAppwallBanner, NativeAppwallAd nativeAppwallAd) {}
@Override
public void onDismissDialog(NativeAppwallAd nativeAppwallAd) {}
});
res.load();
return res;
}
public static boolean isShowcaseSwitchedOnLocal()
public void onBannerClick(NativeAppwallBanner banner)
{
mShowcase.handleBannerClick(banner);
}
private static boolean isShowcaseSwitchedOnLocal()
{
return PreferenceManager.getDefaultSharedPreferences(MwmApplication.get())
.getBoolean(MwmApplication.get().getString(R.string.pref_showcase_switched_on), false);
@ -142,12 +180,14 @@ public final class MytargetHelper
public static boolean isShowcaseSwitchedOnServer()
{
return MwmApplication.prefs().getBoolean(PREF_CHECK, false);
return prefs().getBoolean(PREF_CHECK, true);
}
private static void setShowcaseSwitchedOnServer(boolean switchedOn)
{
MwmApplication.prefs().edit().putLong(PREF_CHECK_MILLIS, System.currentTimeMillis())
.putBoolean(PREF_CHECK, switchedOn).apply();
prefs().edit()
.putLong(PREF_CHECK_MILLIS, System.currentTimeMillis())
.putBoolean(PREF_CHECK, switchedOn)
.apply();
}
}

View file

@ -9,11 +9,6 @@ import android.os.Build;
import android.support.annotation.NonNull;
import android.util.Log;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.facebook.appevents.AppEventsLogger;
import com.flurry.android.FlurryAgent;
import com.mapswithme.maps.BuildConfig;
@ -27,6 +22,11 @@ import com.mapswithme.maps.editor.OsmOAuth;
import com.mapswithme.util.Config;
import com.mapswithme.util.ConnectionState;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public enum Statistics
{
INSTANCE;
@ -82,7 +82,6 @@ public enum Statistics
public static final String MENU_DOWNLOADER = "Menu. Downloader";
public static final String MENU_SETTINGS = "Menu. SettingsAndMore";
public static final String MENU_SHARE = "Menu. Share";
public static final String MENU_SHOWCASE = "Menu. Showcase";
public static final String MENU_P2P = "Menu. Point to point.";
public static final String MENU_ADD_PLACE = "Menu. Add place.";
// dialogs
@ -463,4 +462,4 @@ public enum Statistics
return MapObject.isOfType(MapObject.MY_POSITION, point) ? Statistics.EventParam.MY_POSITION
: Statistics.EventParam.POINT;
}
}
}

View file

@ -33,7 +33,7 @@ else
#define ALOHALYTICS_URL ""
#define FLURRY_KEY "12345678901234567890"
#define MY_TRACKER_KEY ""
#define MY_TARGET_KEY ""
#define MY_TARGET_KEY 0
#define PUSHWOOSH_APPLICATION_ID ""
#define OSM_CONSUMER_KEY ""
#define OSM_CONSUMER_SECRET ""

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "رؤية العروض";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "المزيد من تطبيقات My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Zobrazit nabídky";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Více aplikací My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Vis tilbud";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Flere My.com apps";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Angebote anzeigen";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Weitere Apps von My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Show offers";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "More My.com Apps";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Show offers";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "More My.com Apps";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Mostrar ofertas";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Planifica tu viaje";
"showcase_more_apps" = "Más apps de My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Näytä tarjoukset";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Lisää My.com sovelluksia";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Afficher les offres";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Planifiez votre voyage";
"showcase_more_apps" = "Plus d'applications My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipédia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Ajánlatok mutatása";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Több My.com alkalmazás";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Tampilkan penawaran";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Lebih Banyak Aplikasi My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Mostra offerte";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Altre app su My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "オファーを表示";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "他のMy.comアプリ";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "추천 보기";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "기타 My.com 앱";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Vis tilbud";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Flere apper fra My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Aanbiedingen weergeven";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Meer My.com apps";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Oferty";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Zaplanuj podróż";
"showcase_more_apps" = "Więcej aplikacji My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Mostrar ofertas";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Mais aplicativos do My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Afișare oferte";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Mai multe aplicații My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Показывать предложения";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Подготовься к путешествию";
"showcase_more_apps" = "Другие приложения My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Zobraziť akcie";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Ďalšie My.com aplikácie";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Visa erbjudanden";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Mai multe aplicații My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "แสดงข้อเสนอ";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "แอป My.com เพิ่มเติม";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Teklifleri göster";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Daha fazla My.com uygulamaları";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Показати пропозиції";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Інші додатки My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "Hiển thị lời mời";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "Thêm Ứng dụng My.com";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "显示优惠";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "更多My.com应用";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "Wikipedia";

View file

@ -1027,11 +1027,6 @@
/* Title for settings to enable/disable showcase menu button */
"showcase_settings_title" = "顯示優惠";
/* Showcase menu item. */
"showcase_plan_your_trip" = "Plan your trip";
"showcase_more_apps" = "更多 My.com 應用程式";
/* Place Page link to Wikipedia article (if map object has it). */
"read_in_wikipedia" = "維基百科";

View file

@ -11556,45 +11556,6 @@
zh-Hant = 顯示優惠
sk = Zobraziť akcie
[showcase_plan_your_trip]
comment = Showcase menu item.
tags = ios
en = Plan your trip
ru = Подготовься к путешествию
fr = Planifiez votre voyage
pl = Zaplanuj podróż
es = Planifica tu viaje
[showcase_more_apps]
tags = ios, android
en = More My.com Apps
ru = Другие приложения My.com
ar = المزيد من تطبيقات My.com
cs = Více aplikací My.com
da = Flere My.com apps
nl = Meer My.com apps
fi = Lisää My.com sovelluksia
fr = Plus d'applications My.com
de = Weitere Apps von My.com
hu = Több My.com alkalmazás
id = Lebih Banyak Aplikasi My.com
it = Altre app su My.com
ja = 他のMy.comアプリ
ko = 기타 My.com 앱
nb = Flere apper fra My.com
pl = Więcej aplikacji My.com
pt = Mais aplicativos do My.com
ro = Mai multe aplicații My.com
es = Más apps de My.com
sv = Mai multe aplicații My.com
th = แอป My.com เพิ่มเติม
tr = Daha fazla My.com uygulamaları
uk = Інші додатки My.com
vi = Thêm Ứng dụng My.com
zh-Hans = 更多My.com应用
zh-Hant = 更多 My.com 應用程式
sk = Ďalšie My.com aplikácie
[read_in_wikipedia]
comment = Place Page link to Wikipedia article (if map object has it).
tags = ios, android