[android] Add a setting to display Kayak links

Disabled by default in F-Droid build, enabled in other builds.

Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
This commit is contained in:
Konstantin Pastbin 2024-12-04 01:24:30 +03:00
parent e10afa843e
commit 2f1b6ce0e0
7 changed files with 187 additions and 5 deletions

View file

@ -1726,7 +1726,8 @@ public class MwmActivity extends BaseMwmFragmentActivity
public void openKayakLink(@NonNull String url)
{
if (Config.isKayakDisclaimerAccepted())
// The disclaimer is not needed if a user had explicitly opted-in via the setting.
if (Config.isKayakDisclaimerAccepted() || Config.isKayakDisplayEnabled())
{
Utils.openUrl(this, url);
return;
@ -1736,12 +1737,16 @@ public class MwmActivity extends BaseMwmFragmentActivity
mAlertDialog = new MaterialAlertDialogBuilder(this, R.style.MwmTheme_AlertDialog)
.setTitle(R.string.how_to_support_us)
.setMessage(R.string.dialog_kayak_disclaimer)
.setCancelable(false)
.setCancelable(true)
.setPositiveButton(R.string.dialog_kayak_button, (dlg, which) -> {
Config.acceptKayakDisclaimer();
Utils.openUrl(this, url);
})
.setNegativeButton(R.string.cancel, null)
.setNeutralButton(R.string.dialog_kayak_disable_button, (dlg, which) -> {
Config.setKayakDisplay(false);
UiUtils.hide(findViewById(R.id.ll__place_kayak));
})
.setOnDismissListener(dialog -> mAlertDialog = null)
.show();
}

View file

@ -66,6 +66,7 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment implements La
initPowerManagementPrefsCallbacks();
initPlayServicesPrefsCallbacks();
initSearchPrivacyPrefsCallbacks();
initDisplayKayakPrefsCallbacks();
initScreenSleepEnabledPrefsCallbacks();
initShowOnLockScreenPrefsCallbacks();
}
@ -301,6 +302,21 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment implements La
});
}
private void initDisplayKayakPrefsCallbacks()
{
final TwoStatePreference pref = getPreference(getString(R.string.pref_display_kayak));
pref.setChecked(Config.isKayakDisplayEnabled());
pref.setOnPreferenceChangeListener((preference, newValue) -> {
final boolean oldVal = Config.isKayakDisplayEnabled();
final boolean newVal = (Boolean) newValue;
if (oldVal != newVal)
Config.setKayakDisplay(newVal);
return true;
});
}
private void init3dModePrefsCallbacks()
{
final TwoStatePreference pref = getPreference(getString(R.string.pref_3d_buildings));

View file

@ -21,6 +21,7 @@ public final class Config
private static final String KEY_PREF_USE_GS = "UseGoogleServices";
private static final String KEY_MISC_DISCLAIMER_ACCEPTED = "IsDisclaimerApproved";
private static final String KEY_PREF_KAYAK_DISPLAY = "DisplayKayak";
private static final String KEY_MISC_KAYAK_ACCEPTED = "IsKayakApproved";
private static final String KEY_MISC_LOCATION_REQUESTED = "LocationRequested";
private static final String KEY_MISC_UI_THEME = "UiTheme";
@ -219,6 +220,18 @@ public final class Config
setBool(KEY_MISC_DISCLAIMER_ACCEPTED);
}
public static boolean isKayakDisplayEnabled()
{
// Kayak is disabled by default in F-Droid build,
// unless a user has already accepted its disclaimer before.
return getBool(KEY_PREF_KAYAK_DISPLAY, !isFdroid() || isKayakDisclaimerAccepted());
}
public static void setKayakDisplay(boolean enabled)
{
setBool(KEY_PREF_KAYAK_DISPLAY, enabled);
}
public static boolean isKayakDisclaimerAccepted()
{
return getBool(KEY_MISC_KAYAK_ACCEPTED);

View file

@ -18,6 +18,7 @@ import app.organicmaps.MwmActivity;
import app.organicmaps.R;
import app.organicmaps.bookmarks.data.MapObject;
import app.organicmaps.bookmarks.data.Metadata;
import app.organicmaps.util.Config;
import app.organicmaps.util.UiUtils;
import app.organicmaps.util.Utils;
import app.organicmaps.widget.placepage.PlacePageUtils;
@ -201,8 +202,6 @@ public class PlacePageLinksFragment extends Fragment implements Observer<MapObje
private void refreshLinks()
{
UiUtils.showIf(!TextUtils.isEmpty(mMapObject.getKayakUrl()), mKayak);
refreshMetadataOrHide(mMapObject.getWebsiteUrl(true /* strip */, Metadata.MetadataType.FMD_WEBSITE), mWebsite, mTvWebsite);
refreshMetadataOrHide(mMapObject.getWebsiteUrl(true /* strip */, Metadata.MetadataType.FMD_WEBSITE_MENU), mWebsiteMenu, mTvWebsiteMenuSubsite);
@ -226,7 +225,7 @@ public class PlacePageLinksFragment extends Fragment implements Observer<MapObje
final String line = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_LINE);
refreshMetadataOrHide(line, mLinePage, mTvLinePage);
final String kayak = mMapObject.getKayakUrl();
final String kayak = Config.isKayakDisplayEnabled() ? mMapObject.getKayakUrl() : null;
UiUtils.showIf(!TextUtils.isEmpty(kayak), mKayak);
}

View file

@ -60,9 +60,11 @@
<string name="pref_privacy" translatable="false">pref_privacy</string>
<string name="pref_search_history" translatable="false">pref_search_history</string>
<string name="pref_display_kayak" translatable="false">DisplayKayak</string>
<string name="never_enum_value" translatable="false">NEVER</string>
<string name="always_enum_value" translatable="false">ALWAYS</string>
<string name="auto_enum_value" translatable="false">AUTO</string>
<string name="placepage_behavior" translatable="false">com.google.android.material.bottomsheet.BottomSheetBehavior</string>
<string name="car_notification_channel_name" translatable="false">CAR_NOTIFICATION_CHANNEL</string>

View file

@ -163,6 +163,13 @@
app:singleLineTitle="false"
android:defaultValue="true"
android:order="2"/>
<SwitchPreferenceCompat
android:key="@string/pref_display_kayak"
android:title="@string/pref_display_kayak_title"
app:singleLineTitle="false"
android:summary="@string/pref_display_kayak_text"
android:defaultValue="true"
android:order="3"/>
</androidx.preference.PreferenceCategory>
<androidx.preference.PreferenceCategory
android:key="@string/pref_information"

View file

@ -8461,6 +8461,99 @@
zh-Hans = 通过蓝牙、WiFi 或移动网络快速确定您的大致位置
zh-Hant = 使用藍牙、WiFi 或行動數據快速確定您的大致位置
[pref_display_kayak_title]
comment = Preference title
tags = android
en = Kayak.com Hotel Links
ar = روابط فنادق كيك دوت كوم
az = Kayak.com Otel Bağlantıları
be = Спасылкі на гасцініцы Kayak.com
bg = Kayak.com Връзки с хотели
ca = Enllaços a l'hotel Kayak.com
cs = Kayak.com Hotel Odkazy
da = Kayak.com hotel-links
de = Kayak.com Hotel-Links
el = Kayak.com Σύνδεσμοι ξενοδοχείων
es = Enlaces de hoteles Kayak.com
et = Kayak.com Hotellilinkid
eu = Kayak.com hotelen estekak
fa = لینک های هتل Kayak.com
fi = Kayak.com Hotel Linkit
fr = Liens vers les hôtels Kayak.com
he = קישורים למלון Kayak.com
hi = Kayak.com हटल लक
hu = Kayak.com Hotel Linkek
id = Tautan Hotel Kayak.com
it = Link agli hotel di Kayak.com
ja = Kayak.comホテルリンク
ko = Kayak.com 호텔 링크
lt = Kayak.com Viešbučių nuorodos
lv = Kayak.com Viesnīcu saites
mr = Kayak.com हटल लकस
nb = Kayak.com Hotellkoblinger
nl = Kayak.com Hotellinks
pl = Linki do hoteli Kayak.com
pt = Ligações de hotéis Kayak.com
pt-BR = Links de hotéis do Kayak.com
ro = Kayak.com Linkuri către hoteluri
ru = Ссылки в гостиницах на Kayak.com
sk = Kayak.com Hotel Odkazy
sv = Kayak.com Hotellänkar
sw = Viungo vya Hoteli ya Kayak.com
th = ลงคโรงแรม Kayak.com
tr = Kayak.com Otel Bağlantıları
uk = Посилання на готелі Kayak.com
vi = Liên kết khách sạn Kayak.com
zh-Hans = Kayak.com 酒店链接
zh-Hant = Kayak.com 飯店鏈接
[pref_display_kayak_text]
comment = Preference description
tags = android
en = "Photos, reviews, booking" links are displayed for hotels which have a listing on Kayak.com. The referral bonus received for each booking through these links goes towards development of Organic Maps.
af = Foto's, resensies, besprekingskakels word vertoon vir hotelle wat 'n lys op Kayak.com het. Die verwysingsbonus wat vir elke bespreking deur hierdie skakels ontvang word, gaan vir die ontwikkeling van Organic Maps.
ar = يتم عرض الصور والمراجعات وروابط الحجز للفنادق التي لديها قائمة على موقع Kayak.com. تذهب مكافأة الإحالة المستلمة عن كل حجز من خلال هذه الروابط إلى تطوير Organic Maps.
az = Şəkillər, rəylər, rezervasiya linkləri Kayak.com-da siyahısı olan otellər üçün göstərilir. Bu bağlantılar vasitəsilə hər bir rezervasiya üçün alınan tövsiyə bonusu Organic Maps-in inkişafına yönəldilir.
be = Фота, агляды, спасылкі на браніраванне паказваюцца для гатэляў, якія ёсць у спісе на Kayak.com. Рэферальны бонус, атрыманы за кожнае браніраванне па гэтых спасылках, ідзе на развіццё Organic Maps.
bg = Снимки, отзиви и връзки за резервация се показват за хотелите, които имат обява в Kayak.com. Полученият бонус за всяка резервация чрез тези връзки отива за развитието на Organic Maps.
ca = Es mostren fotos, comentaris i enllaços de reserva per als hotels que tenen una llista a Kayak.com. La bonificació de referència rebuda per cada reserva a través d'aquests enllaços es destina al desenvolupament d'Organic Maps.
cs = Fotografie, recenze a rezervační odkazy se zobrazují u hotelů, které jsou uvedeny na Kayak.com. Bonus získaný za každou rezervaci prostřednictvím těchto odkazů jde na rozvoj Organic Maps.
da = Fotos, anmeldelser og bookinglinks vises for hoteller, der har en liste på Kayak.com. Den henvisningsbonus, der modtages for hver booking via disse links, går til udvikling af Organic Maps.
de = Fotos, Bewertungen und Buchungslinks werden für Hotels angezeigt, die einen Eintrag auf Kayak.com haben. Der Empfehlungsbonus, den Sie für jede Buchung über diese Links erhalten, fließt in die Entwicklung von Organic Maps.
el = Οι φωτογραφίες, οι κριτικές και οι σύνδεσμοι κρατήσεων εμφανίζονται για τα ξενοδοχεία που έχουν καταχωρηθεί στο Kayak.com. Το μπόνους παραπομπής που λαμβάνεται για κάθε κράτηση μέσω αυτών των συνδέσμων πηγαίνει στην ανάπτυξη του Organic Maps.
es = Se muestran fotos, reseñas y enlaces de reserva para los hoteles que tienen un listado en Kayak.com. La bonificación por referencia recibida por cada reserva a través de estos enlaces se destina al desarrollo de Organic Maps.
et = Fotod, arvustused ja broneerimislingid kuvatakse hotellide kohta, mis on Kayak.com-is loetletud. Iga nende linkide kaudu tehtud broneeringu eest saadav viitamispreemia läheb Organic Maps'i arendamiseks.
eu = Kayak.com-en zerrenda bat duten hoteletarako argazkiak, iritziak, erreserba estekak bistaratzen dira. Esteka hauen bidez erreserba bakoitzerako jasotako erreferentziazko hobaria Organic Maps-en garapenera doa.
fa = عکسu200cها، نظرات، لینکu200cهای رزرو برای هتلu200cهایی که فهرستی در Kayak.com دارند نمایش داده میu200cشوند. پاداش ارجاعی دریافت شده برای هر رزرو از طریق این پیوندها به سمت توسعه Organic Maps می رود.
fi = Kuvat, arvostelut ja varauslinkit näytetään hotelleista, jotka on listattu Kayak.comiin. Jokaisesta näiden linkkien kautta tehdystä varauksesta saatu suosittelupalkkio käytetään Organic Mapsin kehittämiseen.
fr = Des photos, des commentaires et des liens de réservation sont affichés pour les hôtels répertoriés sur Kayak.com. La prime de parrainage reçue pour chaque réservation effectuée par le biais de ces liens est destinée au développement d'Organic Maps.
he = תמונות, חוות דעת, קישורי הזמנה מוצגים עבור מלונות שיש להם רישום באתר Kayak.com. בונוס ההפניה המתקבל עבור כל הזמנה דרך קישורים אלה מיועד לפיתוח של Organic Maps.
hi = जन हटल क Kayak.com पर सच ह, उनक तसवर, समकषए, बकग लक परदरशत कए जत ह। इन लक क मधयम स परतयक बकग क लए परपत रफरल बनस Organic Maps क वकस क लए जत ह।
hu = A Kayak.com-on szereplő szállodák esetében fényképek, értékelések, foglalási linkek jelennek meg. Az ezeken a linkeken keresztül történő minden egyes foglalásért kapott ajánlói bónusz az Organic Maps fejlesztését szolgálja.
id = Foto, ulasan, tautan pemesanan ditampilkan untuk hotel yang memiliki daftar di Kayak.com. Bonus rujukan yang diterima untuk setiap pemesanan melalui tautan ini digunakan untuk pengembangan Organic Maps.
it = Le foto, le recensioni e i link per le prenotazioni vengono visualizzati per gli hotel che hanno un'inserzione su Kayak.com. Il bonus di riferimento ricevuto per ogni prenotazione attraverso questi link è destinato allo sviluppo di Organic Maps.
ja = Kayak.comに掲載されているホテルの写真、レビュー、予約リンクが表示されます。これらのリンクを経由して予約された場合、紹介ボーナスはOrganic Mapsの開発に使用されます。
ko = Kayak.com에 숙소가 등록된 호텔의 사진, 후기, 예약 링크가 표시됩니다. 이러한 링크를 통해 예약할 때마다 받는 추천 보너스는 Organic Maps의 개발에 사용됩니다.
lt = Viešbučių, įtrauktų į Kayak.com sąrašą, nuotraukos, apžvalgos ir užsakymo nuorodos rodomos. Už kiekvieną per šias nuorodas atliktą užsakymą gauta premija skiriama "Organic Maps" plėtrai.
lv = Fotogrāfijas, atsauksmes, rezervēšanas saites tiek rādītas viesnīcām, kas ir iekļautas Kayak.com sarakstā. Par katru rezervāciju, kas veikta, izmantojot šīs saites, saņemtais ieteikuma bonuss tiek novirzīts Organic Maps attīstībai.
mr = Kayak.com वर सच असललय हटलसठ फट, पनरवलकन, बकग लकस परदरशत कल जतत. य लकसदवर परतयक बकगसठ मळलल रफरल बनस Organic Maps चय वकससठ जत.
nb = Bilder, anmeldelser og bestillingslenker vises for hoteller som har en oppføring på Kayak.com. Henvisningsbonusen som mottas for hver bestilling gjennom disse lenkene går til utvikling av Organic Maps.
nl = Foto's, beoordelingen en reserveringslinks worden weergegeven voor hotels die een vermelding op Kayak.com hebben. De verwijzingsbonus die voor elke boeking via deze links wordt ontvangen, gaat naar de ontwikkeling van Organic Maps.
pl = Zdjęcia, recenzje, linki do rezerwacji są wyświetlane dla hoteli, które mają wpis na Kayak.com. Premia za polecenie otrzymana za każdą rezerwację za pośrednictwem tych linków jest przeznaczona na rozwój Organic Maps.
pt = São apresentadas fotografias, críticas e links de reserva para os hotéis que têm uma listagem no Kayak.com. O bónus de referência recebido por cada reserva efectuada através destas ligações destina-se ao desenvolvimento do Organic Maps.
pt-BR = Fotos, avaliações e links de reserva são exibidos para os hotéis que estão listados no Kayak.com. O bônus de indicação recebido por cada reserva feita por meio desses links é destinado ao desenvolvimento do Organic Maps.
ro = Fotografiile, recenziile, linkurile de rezervare sunt afișate pentru hotelurile care au o listă pe Kayak.com. Bonusul de recomandare primit pentru fiecare rezervare prin intermediul acestor linkuri este destinat dezvoltării Organic Maps.
ru = Ссылки "Фотографии, отзывы, бронирование" отображаются для отелей, подключенных к Kayak.com. Реферальный бонус, полученный за каждое бронирование по этим ссылкам, идет на развитие Organic Maps.
sk = Fotografie, recenzie a rezervačné odkazy sa zobrazujú pre hotely, ktoré majú svoju ponuku na Kayak.com. Bonus získaný za každú rezerváciu prostredníctvom týchto odkazov ide na rozvoj Organic Maps.
sv = Foton, recensioner, bokningslänkar visas för hotell som har en lista på Kayak.com. Den värvningsbonus som erhålls för varje bokning via dessa länkar går till utveckling av Organic Maps.
sw = Picha, maoni, viungo vya kuweka nafasi vinaonyeshwa kwa hoteli ambazo zimeorodheshwa kwenye Kayak.com. Bonasi ya rufaa inayopokelewa kwa kila nafasi iliyowekwa kupitia viungo hivi huenda kwenye uundaji wa Organic Maps.
th = รปภาพ รวว ลงกการจองจะแสดงสำหรบโรงแรมทมรายการขอมลบน Kayak.com โบนสผแนะนำทไดรบสำหรบการจองแตละครงผานลงกเหลานจะนำไปใชในการพฒนา Organic Maps
tr = Kayak.com'da listesi olan oteller için fotoğraflar, yorumlar, rezervasyon bağlantıları görüntülenir. Bu bağlantılar aracılığıyla yapılan her rezervasyon için alınan yönlendirme bonusu Organic Maps'in geliştirilmesine harcanmaktadır.
uk = Фотографії, відгуки, посилання на бронювання відображаються для готелів, які мають лістинг на Kayak.com. Реферальний бонус, отриманий за кожне бронювання за цими посиланнями, йде на розвиток Organic Maps.
vi = Hình ảnh, đánh giá, liên kết đặt phòng được hiển thị cho các khách sạn có danh sách trên Kayak.com. Phần thưởng giới thiệu nhận được cho mỗi lần đặt phòng thông qua các liên kết này sẽ hướng tới sự phát triển của Organic Maps.
zh-Hans = Kayak.com上列出的酒店会显示照片、评论和预订链接。通过这些链接进行预订所获得的推荐奖金将用于发展 Organic Maps。
zh-Hant = 顯示在 Kayak.com 上列出的飯店的照片、評論和預訂連結。透過這些連結進行的每次預訂收到的推薦獎金將用於 Organic Maps 的開發。
[routing_download_maps_along]
comment = Text for routing error dialog
tags = android,ios
@ -18342,6 +18435,53 @@
zh-Hans = 客涯 (Kayak) 上的详细信息
zh-Hant = Kayak 上的詳細資訊
[dialog_kayak_disable_button]
comment = A disable button text in the explanation dialog that opens hotel details page on Kayak website.
tags = android,ios
en = Disable Kayak
af = Deaktiveer Kayak
ar = تعطيل Kayak
az = Kayak-ı söndürün
be = Адключыць Kayak
bg = Деактивиране на Kayak
ca = Desactiva Kayak
cs = Zakázat Kayak
da = Deaktiver Kayak
de = Kayak deaktivieren
el = Απενεργοποίηση του Kayak
es = Desactivar Kayak
et = Kayak välja lülitada
eu = Desgaitu Kayak
fa = Kayak را غیرفعال کنید
fi = Poista Kayak käytöstä
fr = Désactiver Kayak
he = השבת את Kayak
hi = Kayak अकषम कर
hu = Kayak kikapcsolása
id = Nonaktifkan Kayak
it = Disabilita Kayak
ja = Kayakの無効化
ko = Kayak 비활성화
lt = Išjungti "Kayak
lv = Atslēgt Kayak
mr = Kayak अकषम कर
nb = Deaktiver Kayak
nl = Kayak uitschakelen
pl = Proszę wyłączyć Kayak
pt = Desativar Kayak
pt-BR = Desativar o Kayak
ro = Dezactivați Kayak
ru = Отключить Kayak
sk = Zakázať Kayak
sv = Inaktivera Kayak
sw = Lemaza Kayak
th = ปดการใชงาน Kayak
tr = Kayak'yı devre dışı bırak
uk = Вимкнути Kayak
vi = Vô hiệu hóa Kayak
zh-Hans = 禁用 Kayak
zh-Hant = 禁用 Kayak
[placepage_call_button]
tags = ios
en = Call