mirror of
https://framagit.org/tom79/fedilab-tube
synced 2025-06-05 21:09:11 +02:00
Compare commits
58 Commits
Author | SHA1 | Date | |
---|---|---|---|
7be0f72292 | |||
ffbe8877a8 | |||
74feb7e8f0 | |||
cbaef4bcfe | |||
38a387a423 | |||
1092eefc76 | |||
3615b43b97 | |||
e17c7fb01d | |||
f3d69e19a0 | |||
ea102eb485 | |||
2e4c01ed62 | |||
ed22892d10 | |||
017bd5a6a2 | |||
967f11ddb4 | |||
6b4abd019e | |||
8b66c4030f | |||
34f058358e | |||
2bab907777 | |||
52e64b6d85 | |||
9510678a9f | |||
b4e7c3f8e2 | |||
d800d2b10c | |||
785b4949e6 | |||
b79e17cb60 | |||
19fcbeb4b9 | |||
ffb355d1a2 | |||
43fd2945cc | |||
d93c74a449 | |||
7a197993c9 | |||
dc2a252dd5 | |||
2c33f7a7f8 | |||
24a8a0dc00 | |||
b78894b33c | |||
2d33d7f970 | |||
8823eb74ba | |||
7f77b86272 | |||
2f773b2f0f | |||
ca69a6e86d | |||
3e5cefbf24 | |||
245ef64ebe | |||
a0ff454dd9 | |||
fa6b1560f8 | |||
518b5f617b | |||
7c4ce7701c | |||
0b6557f9c5 | |||
a8e00d137a | |||
75d3f74e48 | |||
3866317597 | |||
10e904fe4a | |||
be655f6c2b | |||
676e540059 | |||
87763a050c | |||
ab45c1f80c | |||
ec5f2c7c45 | |||
c4448f22b9 | |||
62af5c54aa | |||
5872f5c99f | |||
2b1a63e08b |
@ -6,12 +6,13 @@ android {
|
||||
compileSdkVersion 30
|
||||
buildToolsVersion "30.0.2"
|
||||
|
||||
|
||||
defaultConfig {
|
||||
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 30
|
||||
versionCode 15
|
||||
versionName "1.4.0"
|
||||
versionCode 20
|
||||
versionName "1.5.1"
|
||||
multiDexEnabled true
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
@ -30,6 +31,10 @@ android {
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
viewBinding = true
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
disable 'MissingTranslation'
|
||||
checkReleaseBuilds false
|
||||
@ -122,5 +127,6 @@ dependencies {
|
||||
implementation 'com.github.mancj:MaterialSearchBar:0.8.5'
|
||||
|
||||
implementation "io.github.kobakei:ratethisapp:1.2.0"
|
||||
implementation 'com.github.HITGIF:TextFieldBoxes:1.4.5'
|
||||
|
||||
}
|
@ -4,10 +4,6 @@
|
||||
<color name="colorPrimaryDark">#4527A0</color>
|
||||
<color name="colorAccent">#9C27B0</color>
|
||||
|
||||
|
||||
<color name="colorPrimary_full">#212529</color>
|
||||
<color name="colorPrimaryDark_full">#000000</color>
|
||||
<color name="colorAccent_full">#F2690D</color>
|
||||
<color name="tag_color">#bbF2690D</color>
|
||||
<color name="tag_color_text">#FAFAFA</color>
|
||||
<color name="positive_thumbs">#2b90d9</color>
|
@ -6,7 +6,26 @@
|
||||
<string name="set_video_language_choice" translatable="false">set_video_language_choice</string>
|
||||
<string name="set_video_quality_choice" translatable="false">set_video_quality_choice</string>
|
||||
<string name="set_video_cache_choice" translatable="false">set_video_cache_choice</string>
|
||||
<string name="set_theme_choice" translatable="false">set_theme_choice</string>
|
||||
|
||||
<string name="delete_account_comment">Supprimer tous les commentaires</string>
|
||||
<string name="delete_account_comment_confirm">Etes-vous sûr de vouloir supprimer tous les commentaires de ce compte pour vos vidéos ?</string>
|
||||
<string-array name="settings_theme">
|
||||
<item>Clair</item>
|
||||
<item>Sombre</item>
|
||||
<item>Automatique</item>
|
||||
</string-array>
|
||||
|
||||
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="zero">%d réponse</item>
|
||||
<item quantity="one">%d réponse</item>
|
||||
<item quantity="other">%d réponses</item>
|
||||
</plurals>
|
||||
|
||||
<string name="set_theme">Thème</string>
|
||||
<string name="set_theme_description">Permet de changer le thème de l\'application</string>
|
||||
<string name="federation_issue">La vidéo ne peut pas être fédérée !</string>
|
||||
<string name="title_home">Locale</string>
|
||||
<string name="title_local">Locale</string>
|
||||
<string name="title_discover">Découvrir</string>
|
||||
@ -165,8 +184,12 @@
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Votre vidéo <b>%1$s</b> n’est plus blacklisté]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[Nouveau signalement pour la vidéo : <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Ajouter un commentaire public</string>
|
||||
<string name="add_public_reply">Répondre publiquement</string>
|
||||
<string name="send_comment">Envoyer un commentaire</string>
|
||||
<string name="all">Tout</string>
|
||||
|
||||
<string name="peertube_video_report_success"><![CDATA[ Votre signalement <b>%1$s</b> a été accepté]]></string>
|
||||
<string name="reply">Répondre</string>
|
||||
<!-- end languages -->
|
||||
<string name="playlists">Listes de lecture</string>
|
||||
<string name="display_name">Nom d\'affichage</string>
|
||||
|
@ -1 +1,3 @@
|
||||
- Quelques améliorations
|
||||
- Theme: Clair, Sombre et automatique
|
||||
- Supprimer tous les commentaires d'un compte sur vos vidéos
|
||||
- Mettre en sourdine un compte depuis les commentaires.
|
@ -1 +1 @@
|
||||
App for all Peertube instances
|
||||
App für alle Peertube Instanzen
|
@ -1 +1 @@
|
||||
App for all Peertube instances
|
||||
Εφαρμογή για όλες τις υποστάσεις Peertube
|
@ -1 +1 @@
|
||||
App for all Peertube instances
|
||||
Aplicación para todas las instancias de Peertube
|
@ -1 +1 @@
|
||||
App for all Peertube instances
|
||||
Application pour toutes les instances de Peertube
|
@ -1 +1 @@
|
||||
App for all Peertube instances
|
||||
App per tutti i casi Peertube
|
@ -1 +1 @@
|
||||
App for all Peertube instances
|
||||
App voor alle Peertube gevallen
|
@ -1,22 +1,22 @@
|
||||
*Nie ma trybu uwierzytelnionego*
|
||||
*Tryb bez uwierzytelniania*
|
||||
|
||||
Jest to tryb ograniczony, w którym można wykonywać pewne czynności:
|
||||
Jest to tryb ograniczony, w którym można wykonywać niektóre czynności:
|
||||
|
||||
- Przełącznik,
|
||||
- Podziel się filmami,
|
||||
- Pobierz filmy.
|
||||
- Przełączać sesje,
|
||||
- Udostępniać filmy,
|
||||
- Pobierać filmy.
|
||||
|
||||
|
||||
*Tryb uwierzytelniony*
|
||||
|
||||
W tym trybie dostępnych jest wiele funkcji:
|
||||
|
||||
- Napisać/usunąć komentarz
|
||||
- Przesyłanie/usuwanie/edycja filmów
|
||||
- Zarządzanie (tworzenie/edycja/usuwanie) kanałami i listami odtwarzania
|
||||
- Kanały podążające/niepodążające
|
||||
- Pisanie/Usuwanie komentarzy
|
||||
- Przesyłanie/Usuwanie/Edytowanie filmów
|
||||
- Zarządzanie (tworzenie/edytowanie/usuwanie) kanałami i listami odtwarzania
|
||||
- Obserwowanie kanałów
|
||||
- Kciuki w górę/w dół
|
||||
- Powiadomienia o kontroli
|
||||
- Kanały wyciszone/niewyciszone
|
||||
- Raporty wideo/rachunki
|
||||
- Sprawdź swoją historię
|
||||
- Sprawdzanie powiadomień
|
||||
- Wyciszanie kanałów
|
||||
- Zgłaszanie filmów/kont
|
||||
- Sprawdzanie swojej historii
|
@ -1 +1 @@
|
||||
App for all Peertube instances
|
||||
Aplikacja dla wszystkich instancji PeerTube
|
@ -15,7 +15,7 @@
|
||||
- Загружать/удалять/редактировать видео
|
||||
- Управлять (создание/редактирование/удаление) каналами и плейлистами
|
||||
- Подписаться/отписаться от каналов
|
||||
- Палец вверх/вниз
|
||||
- Нравится/не нравится
|
||||
- Проверить уведомления
|
||||
- Отключить/включить каналы
|
||||
- Пожаловаться на видео/аккаунты
|
||||
|
@ -1 +1 @@
|
||||
App for all Peertube instances
|
||||
Приложение для всех серверов Peertube
|
@ -1,22 +1,22 @@
|
||||
*Not authenticated mode*
|
||||
*游客模式*
|
||||
|
||||
It's a limited mode where you can do some actions:
|
||||
此种受限模式下,您只能进行进行部分操作:
|
||||
|
||||
- Switch instance,
|
||||
- Share videos,
|
||||
- Download videos.
|
||||
• 切换实例
|
||||
• 分享视频
|
||||
• 下载视频
|
||||
|
||||
|
||||
*Authenticated mode*
|
||||
*登录模式*
|
||||
|
||||
Many features are available with this mode:
|
||||
此模式下允许您使用更多的功能:
|
||||
|
||||
- Write/delete comments
|
||||
- Upload/remove/edit videos
|
||||
- Manage (create/edit/remove) channels and playlists
|
||||
- Follow/unfollow channels
|
||||
- Thumbs-up/down
|
||||
- Check notifications
|
||||
- Mute/unmute channels
|
||||
- Report videos/accounts
|
||||
- Check your history
|
||||
• 发布 / 删除评论
|
||||
• 上传 / 删除 / 编辑视频
|
||||
• 创建 / 编辑 / 删除频道与播放列表
|
||||
• 订阅 / 取消订阅频道
|
||||
• 好评/差评
|
||||
• 接收通知
|
||||
• 隐藏/取消隐藏 频道
|
||||
• 报告视频 / 账号
|
||||
• 查看观看历史
|
@ -1 +1 @@
|
||||
App for all Peertube instances
|
||||
此应用适用于所有Peertube实例
|
@ -1,3 +1 @@
|
||||
- Sepia search
|
||||
- Some fixes with overlay
|
||||
- Fix issue when changing the instance
|
||||
- Fix some issues
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:color="@color/colorAccent_full" android:state_checked="true" />
|
||||
<item android:color="@color/colorAccent" android:state_checked="true" />
|
||||
<item android:color="@android:color/tab_indicator_text" />
|
||||
</selector>
|
@ -1,15 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="title_home">Home</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="add_public_reply">Add a public reply</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="zero">%d ردود</item>
|
||||
<item quantity="one">ردّ واحد %d</item>
|
||||
<item quantity="two">%d ردود</item>
|
||||
<item quantity="few">%d ردود</item>
|
||||
<item quantity="many">%d ردود</item>
|
||||
<item quantity="other">%d ردود</item>
|
||||
</plurals>
|
||||
<string name="reply">رد</string>
|
||||
<string name="set_theme">السمة</string>
|
||||
<string name="set_theme_description">Allow to change app theme</string>
|
||||
<string name="federation_issue">The video cannot be federated!</string>
|
||||
<string name="title_home">الرئيسية</string>
|
||||
<string name="title_local">المحلية</string>
|
||||
<string name="title_discover">Discover</string>
|
||||
<string name="title_notifications">Notifications</string>
|
||||
<string name="title_recently_added">Recently added</string>
|
||||
<string name="title_trending">Trending</string>
|
||||
<string name="title_notifications">الإشعارات</string>
|
||||
<string name="title_recently_added">تم إضافتها حديثًا</string>
|
||||
<string name="title_trending">الشائعة</string>
|
||||
<string name="title_most_liked">Most liked</string>
|
||||
<string name="toast_error">Oops! An error occurred!</string>
|
||||
<string name="title_muted">Muted</string>
|
||||
<string name="title_channel">Channels</string>
|
||||
<string name="title_channel">القنوات</string>
|
||||
<string name="do_not_list">Do not list</string>
|
||||
<string name="blur">Blur</string>
|
||||
<string name="display">Display</string>
|
||||
@ -18,72 +31,72 @@
|
||||
<string name="not_valide_instance">This instance does not seem to be valid!</string>
|
||||
<string name="no_videos">No videos!</string>
|
||||
<string name="no_notifications">No notifications!</string>
|
||||
<string name="favicon">Favicon</string>
|
||||
<string name="open_with">Open with</string>
|
||||
<string name="favicon">أيقونة المفضلة</string>
|
||||
<string name="open_with">فتح بواسطة</string>
|
||||
<string name="action_playlist_edit">Edit a playlist</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="upload_video">Upload</string>
|
||||
<string name="image_preview">Image preview</string>
|
||||
<string name="file_to_upload">Select the file to upload</string>
|
||||
<string name="channel">Channel</string>
|
||||
<string name="videos">Videos</string>
|
||||
<string name="channels">Channels</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="download">Download</string>
|
||||
<string name="profile_picture">Profile picture</string>
|
||||
<string name="update_video">Update video</string>
|
||||
<string name="close">أغلق</string>
|
||||
<string name="upload_video">إرسال</string>
|
||||
<string name="image_preview">معاينة الصورة</string>
|
||||
<string name="file_to_upload">اختر الملف المراد ارساله</string>
|
||||
<string name="channel">قناة</string>
|
||||
<string name="videos">الفيديوهات</string>
|
||||
<string name="channels">القنوات</string>
|
||||
<string name="yes">موافق</string>
|
||||
<string name="no">لا</string>
|
||||
<string name="cancel">إلغاء</string>
|
||||
<string name="download">تنزيل</string>
|
||||
<string name="profile_picture">الصورة الشخصية</string>
|
||||
<string name="update_video">تحديث الفيديو</string>
|
||||
<string name="remove_from_playlist">Remove from playlist</string>
|
||||
<string name="date_seconds">%d s</string>
|
||||
<string name="date_minutes">%d m</string>
|
||||
<string name="date_hours">%d h</string>
|
||||
<string name="date_day">%d d</string>
|
||||
<string name="number_view_video">%s views</string>
|
||||
<string name="date_seconds">%d ثا</string>
|
||||
<string name="date_minutes">%d د</string>
|
||||
<string name="date_hours">%d سا</string>
|
||||
<string name="date_day">%d يو</string>
|
||||
<string name="number_view_video">%s مشاهدات</string>
|
||||
<string name="title_instance_login">Instance host</string>
|
||||
<string name="uploading">Uploading, please wait…</string>
|
||||
<string name="upload_video_success">The video has been uploaded!</string>
|
||||
<string name="toast_cancelled">Upload cancelled!</string>
|
||||
<string name="uploading">الارسال جارٍ، يُرجى الانتظار…</string>
|
||||
<string name="upload_video_success">تم ارسال الفيديو!</string>
|
||||
<string name="toast_cancelled">تم إلغاء الإرسال!</string>
|
||||
<string name="video_uploaded_action">Tap here to edit the video data.</string>
|
||||
<string name="toot_select_image_error">An error occurred while selecting the media!</string>
|
||||
<string name="download_file">Download %1$s</string>
|
||||
<string name="action_privacy">Privacy</string>
|
||||
<string name="action_logout">Logout</string>
|
||||
<string name="login">Login</string>
|
||||
<string name="password">Password</string>
|
||||
<string name="email">Email</string>
|
||||
<string name="tags">Tags</string>
|
||||
<string name="validate">Validate</string>
|
||||
<string name="share_with">Share with</string>
|
||||
<string name="toot_select_image_error">طرأ هناك خطأ أثناء اختيار الوسائط!</string>
|
||||
<string name="download_file">تنزيل %1$s</string>
|
||||
<string name="action_privacy">الخصوصية</string>
|
||||
<string name="action_logout">تسجيل الخروج</string>
|
||||
<string name="login">تسجيل الدخول</string>
|
||||
<string name="password">كلمة السر</string>
|
||||
<string name="email">البريد الإلكتروني</string>
|
||||
<string name="tags">الوسوم</string>
|
||||
<string name="validate">موافق</string>
|
||||
<string name="share_with">شارك بواسطة</string>
|
||||
<string name="shared_via">Shared via TubeLab</string>
|
||||
<string name="username">User name</string>
|
||||
<string name="settings">Settings</string>
|
||||
<string name="logout_account_confirmation">Are you sure you want to logout @%1$s@%2$s?</string>
|
||||
<string name="following">Following</string>
|
||||
<string name="followers">Followers</string>
|
||||
<string name="client_error">Unable to get client id!</string>
|
||||
<string name="toast_error_loading_account">An error occurred while switching between accounts!</string>
|
||||
<string name="toast_error_search">An error occurred while searching!</string>
|
||||
<string name="nothing_to_do">No action can be taken</string>
|
||||
<string name="action_follow">Follow</string>
|
||||
<string name="action_mute">Mute</string>
|
||||
<string name="search">Search</string>
|
||||
<string name="delete">Delete</string>
|
||||
<string name="action_lists_confirm_delete">Are you sure you want to permanently delete this list?</string>
|
||||
<string name="action_lists_delete">Delete list</string>
|
||||
<string name="no_comments">Be the first to leave a comment on this video with the top right button!</string>
|
||||
<string name="comment_no_allowed_peertube">Comments are not enabled on this video!</string>
|
||||
<string name="pickup_resolution">Pick up a resolution</string>
|
||||
<string name="bookmark_add_peertube">The video has been added to bookmarks!</string>
|
||||
<string name="bookmark_remove_peertube">The video has been removed from bookmarks!</string>
|
||||
<string name="information" tools:ignore="UnusedResources">Information</string>
|
||||
<string name="app_logo">Logo of the application</string>
|
||||
<string name="username">اسم المستخدم</string>
|
||||
<string name="settings">الإعدادات</string>
|
||||
<string name="logout_account_confirmation">هل أنت متأكد من أنك تريد تسجيل الخروج @%1$s@%2$s؟</string>
|
||||
<string name="following">يتابِع</string>
|
||||
<string name="followers">المتابِعون</string>
|
||||
<string name="client_error">تعذرت عملية جلب معرف العميل!</string>
|
||||
<string name="toast_error_loading_account">طرأ هناك خطأ أثناء التحوّل مِن حساب إلى آخر!</string>
|
||||
<string name="toast_error_search">وقع خطأ أثناء عملية البحث!</string>
|
||||
<string name="nothing_to_do">لا يمكن اتخاذ أي إجراء</string>
|
||||
<string name="action_follow">اتبع</string>
|
||||
<string name="action_mute">كتم</string>
|
||||
<string name="search">البحث</string>
|
||||
<string name="delete">حذف</string>
|
||||
<string name="action_lists_confirm_delete">هل تود فعلا حذف هذه القائمة ؟</string>
|
||||
<string name="action_lists_delete">حذف القائمة</string>
|
||||
<string name="no_comments">كن الأول في التعليق على هذا الفيديو بالضغط على الزر الأيمن في الأعلى!</string>
|
||||
<string name="comment_no_allowed_peertube">إنّ التعليقات على هذا الفيديو مُعطّلة!</string>
|
||||
<string name="pickup_resolution">اختيار الجودة</string>
|
||||
<string name="bookmark_add_peertube">تم إضافة الفيديو إلى الفواصل المرجعية!</string>
|
||||
<string name="bookmark_remove_peertube">تم إزالة الفيديو من الفواصل المرجعية!</string>
|
||||
<string name="information" tools:ignore="UnusedResources">معلومات</string>
|
||||
<string name="app_logo">شعار التطبيق</string>
|
||||
<!-- languages not translated -->
|
||||
<string name="subscriptions">Subscriptions</string>
|
||||
<string name="delete_comment">Delete a comment</string>
|
||||
<string name="delete_comment_confirm">Are you sure to delete this comment?</string>
|
||||
<string name="set_video_mode">Mode for videos</string>
|
||||
<string name="filter">Filter</string>
|
||||
<string name="subscriptions">الاشتراكات</string>
|
||||
<string name="delete_comment">حذف التعليق</string>
|
||||
<string name="delete_comment_confirm">هل أنت متأكد من أنك تود حذف هذا التعليق؟</string>
|
||||
<string name="set_video_mode">أسلوب عرض الفيديوهات</string>
|
||||
<string name="filter">عامل التصفية</string>
|
||||
<string name="sepia_search">Sepia search</string>
|
||||
<string name="sepia_element_nsfw">Display sensitive content</string>
|
||||
<string name="sepia_element_published_date">Published date</string>
|
||||
@ -110,31 +123,31 @@
|
||||
<string name="sort_by">Sort by</string>
|
||||
<string name="sepia_search_hint">Keyword, channel, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search displays videos and channels that match your search but is not the publisher, nor the owner. If you notice any problems with a video, report it to the administrators on the PeerTube website where the video is published.</string>
|
||||
<string name="my_videos">My videos</string>
|
||||
<string name="title">Title</string>
|
||||
<string name="license">License</string>
|
||||
<string name="category">Category</string>
|
||||
<string name="language">Language</string>
|
||||
<string name="peertube_nsfw">This video contains mature or explicit content</string>
|
||||
<string name="peertube_enable_comments">Enable video comments</string>
|
||||
<string name="description">Description</string>
|
||||
<string name="toast_peertube_video_updated">The video has been updated!</string>
|
||||
<string name="my_videos">فيديوهاتي</string>
|
||||
<string name="title">العنوان</string>
|
||||
<string name="license">الرخصة</string>
|
||||
<string name="category">الفئة</string>
|
||||
<string name="language">اللغة</string>
|
||||
<string name="peertube_nsfw">هذه الفيديو تحتوي على محتوى للكبار</string>
|
||||
<string name="peertube_enable_comments">السماح بالتعليق على الفيديو</string>
|
||||
<string name="description">الوصف</string>
|
||||
<string name="toast_peertube_video_updated">تم تحديث الفيديو!</string>
|
||||
<string name="register_account">Register an account</string>
|
||||
<string name="email_address">Email address</string>
|
||||
<string name="preview">Preview</string>
|
||||
<string name="change_preview">Change preview</string>
|
||||
<string name="name">Name</string>
|
||||
<string name="display_more">Display more</string>
|
||||
<string name="display_more">عرض المزيد</string>
|
||||
<string name="no_channels">No channels!</string>
|
||||
<string name="report_helper">Some explanations about your report…</string>
|
||||
<string name="report_video">Report video</string>
|
||||
<string name="report">Report</string>
|
||||
<string name="report">الإبلاغ</string>
|
||||
<string name="change_instance">Pick another instance</string>
|
||||
<string name="my_history">History</string>
|
||||
<string name="edit">Edit</string>
|
||||
<string name="my_history">التاريخ</string>
|
||||
<string name="edit">تعديل</string>
|
||||
<string name="video_settings">Video settings</string>
|
||||
<string name="app_interface">Interface</string>
|
||||
<string name="set_cache_mode">Cache</string>
|
||||
<string name="app_interface">الواجهة</string>
|
||||
<string name="set_cache_mode">الذاكرة المؤقتة</string>
|
||||
<string name="set_video_cache_description">Set the cache for videos (default 100Mb)</string>
|
||||
<string name="set_video_quality_description">Define a default quality for videos</string>
|
||||
<string name="set_quality_mode">Resolution for videos</string>
|
||||
@ -143,68 +156,76 @@
|
||||
<string name="pickup_captions">Pick captions</string>
|
||||
<string name="none">None</string>
|
||||
<string name="set_video_mode_description">Allows to change mode for playing videos (default, streaming or via a browser).</string>
|
||||
<string name="delete_video">Delete video</string>
|
||||
<string name="delete_video_confirmation">Are you sure to delete this video?</string>
|
||||
<string name="no_video_to_display">No videos to display!</string>
|
||||
<string name="share">Share</string>
|
||||
<string name="peertube_comment_on_video"><![CDATA[<b>%1$s</b> commented your video <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_channel"><![CDATA[<b>%1$s</b> is following your channel <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_account"><![CDATA[<b>%1$s</b> is following your account]]></string>
|
||||
<string name="peertube_video_published"><![CDATA[Your video <b>%1$s</b> has been published]]></string>
|
||||
<string name="peertube_video_import_success"><![CDATA[Your video import <b>%1$s</b> succeeded]]></string>
|
||||
<string name="peertube_video_import_error"><![CDATA[Your video import <b>%1$s</b> failed]]></string>
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> published a new video: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Your video <b>%1$s</b> has been blacklisted]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Your video <b>%1$s</b> has been unblacklisted]]></string>
|
||||
<string name="delete_account_comment">Delete account comments</string>
|
||||
<string name="delete_account_comment_confirm">Are you sure you want to remove all the comments of this account?</string>
|
||||
<string name="delete_video">احذف الفيديو</string>
|
||||
<string name="delete_video_confirmation">هل أنت متأكد أنك تود حذف هذا الفيديو؟</string>
|
||||
<string name="no_video_to_display">لا توجد أية فيديوهات لعرضها!</string>
|
||||
<string name="share">شارك</string>
|
||||
<string name="peertube_comment_on_video"><![CDATA[علّق <b>%1$s</b> على الفيديو <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_channel"><![CDATA[<b>%1$s</b> يتابع قناتك <b>%2$s</b> الآن]]></string>
|
||||
<string name="peertube_follow_account"><![CDATA[<b>%1$s</b> يُتابِع حسابك الآن]]></string>
|
||||
<string name="peertube_video_published"><![CDATA[تم نشر الفيديو <b>%1$s</b>]]></string>
|
||||
<string name="peertube_video_import_success"><![CDATA[تم استيراد الفيديو <b>%1$s</b> بنجاح]]></string>
|
||||
<string name="peertube_video_import_error"><![CDATA[فشلت عملية استيراد الفيديو <b>%1$s</b>]]></string>
|
||||
<string name="peertube_video_from_subscription"><![CDATA[لقد نشر <b>%1$s</b> فيديو جديد: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[تم درج الفيديو الخاص بك <b>%1$s</b> في القائمة السوداء]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[تم حذف الفيديو الخاص بك <b>%1$s</b> من القائمة السوداء]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Add a public comment</string>
|
||||
<string name="send_comment">Send comment</string>
|
||||
<string name="all">All</string>
|
||||
<string name="add_public_comment">أضف تعليقًا عامًا</string>
|
||||
<string name="send_comment">ارسل تعليق</string>
|
||||
<string name="all">الكل</string>
|
||||
<!-- end languages -->
|
||||
<string name="playlists">Playlists</string>
|
||||
<string name="display_name">Display name</string>
|
||||
<string name="playlists">قوائم التشغيل</string>
|
||||
<string name="display_name">الاسم العلني</string>
|
||||
<string name="action_playlist_add">You don\'t have any playlists. Tap on the \"+\" icon to add a new playlist</string>
|
||||
<string name="error_display_name">You must provide a display name!</string>
|
||||
<string name="error_channel_mandatory">The channel is required when the playlist is public.</string>
|
||||
<string name="action_playlist_create">Create a playlist</string>
|
||||
<string name="action_playlist_empty_content">There is nothing in this playlist yet.</string>
|
||||
<string name="password_confirm">Confirm password</string>
|
||||
<string name="agreement_check">I agree to %1$s and %2$s</string>
|
||||
<string name="server_rules">server rules</string>
|
||||
<string name="tos">terms of service</string>
|
||||
<string name="sign_up">Sign up</string>
|
||||
<string name="all_field_filled">Please, fill all the fields!</string>
|
||||
<string name="password_error">Passwords don\'t match!</string>
|
||||
<string name="email_error">The email doesn\'t seem to be valid!</string>
|
||||
<string name="email_indicator">You will be sent a confirmation e-mail</string>
|
||||
<string name="password_indicator">Use at least 8 characters</string>
|
||||
<string name="password_too_short">Password should contain at least 8 characters</string>
|
||||
<string name="username_error">Username should only contain letters, numbers and underscores</string>
|
||||
<string name="account_created">Account created!</string>
|
||||
<string name="error_display_name">يجب عليك إدخال اسم علني!</string>
|
||||
<string name="error_channel_mandatory">القناة لازمة إن كانت قائمة التشغيل متاحة للعامة.</string>
|
||||
<string name="action_playlist_create">إنشاء قائمة تشغيل</string>
|
||||
<string name="action_playlist_empty_content">قائمة التشغيل هذه فارغة حاليا.</string>
|
||||
<string name="password_confirm">تأكيد الكلمة السرية</string>
|
||||
<string name="agreement_check">أوافق على %1$s وعلى %2$s</string>
|
||||
<string name="server_rules">قواعد الخادم</string>
|
||||
<string name="tos">شروط الخدمة</string>
|
||||
<string name="sign_up">إنشاء حساب</string>
|
||||
<string name="all_field_filled">يرجى ملء جميع الحقول!</string>
|
||||
<string name="password_error">كلمتي المرور غير متطابقتين!</string>
|
||||
<string name="email_error">يبدو أنّ عنوان البريد الإلكتروني غير صالح!</string>
|
||||
<string name="email_indicator">سيتم إرسال رسالة إلكترونية للتأكيد</string>
|
||||
<string name="password_indicator">استخدم 8 أحرف على الأقل</string>
|
||||
<string name="password_too_short">يجب أن تكون الكلمة السرية مكوّنة مِن 8 أحرف على الأقل</string>
|
||||
<string name="username_error">اسم المستخدم يجب أن تحتوي فقط على حروف وأرقام وسطور سفلية</string>
|
||||
<string name="account_created">تم إنشاء الحساب!</string>
|
||||
<string name="account_created_message"> Your account has been created!\n\n
|
||||
Think to validate your email within the 48 next hours.\n\n
|
||||
You can now connect your account by writing <b>%1$s</b> in the first field and tap on <b>Connect</b>.\n\n
|
||||
<b>Important</b>: If your instance required validation, you will receive an email once it is validated!
|
||||
</string>
|
||||
<string name="account">Account</string>
|
||||
<string name="report_account">Report account</string>
|
||||
<string name="account">الحساب</string>
|
||||
<string name="report_account">بلّغ عن الحساب</string>
|
||||
<string-array name="settings_video_mode">
|
||||
<item>Normal</item>
|
||||
<item>عادي</item>
|
||||
<item>Webview</item>
|
||||
<item>Direct stream</item>
|
||||
<item>تدفق مباشر</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>فاتحة</item>
|
||||
<item>مظلمة</item>
|
||||
<item>Automatic</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
<item>Medium</item>
|
||||
<item>Low</item>
|
||||
</string-array>
|
||||
<string name="unfollow_confirm">Do you want to unfollow this account?</string>
|
||||
<string name="title_video_peertube">Title for the video</string>
|
||||
<string name="join_peertube">Join Peertube</string>
|
||||
<string name="agreement_check_peertube">I am at least 16 years old and agree to the %1$s of this instance</string>
|
||||
<string name="edit_profile">Edit profile</string>
|
||||
<string name="make_an_action">Make an action</string>
|
||||
<string name="action_unfollow">Unfollow</string>
|
||||
<string name="unfollow_confirm">هل تريد إلغاء متابعة هذا الحساب؟</string>
|
||||
<string name="title_video_peertube">عنوان للفيديو</string>
|
||||
<string name="join_peertube">انظم إلى PeerTube</string>
|
||||
<string name="agreement_check_peertube">أبلُغ مِن العُمر 16 سنة على الأقل وأوافق على %1$s هذا الخادم</string>
|
||||
<string name="edit_profile">عدّل الصفحة التعريفية</string>
|
||||
<string name="make_an_action">القيام بإجراء</string>
|
||||
<string name="action_unfollow">إلغاء المتابعة</string>
|
||||
<string name="display_nsfw_videos">Display sensitive videos</string>
|
||||
<string name="fullscreen">Fullscreen</string>
|
||||
<string name="bookmark_peertube_empty">There are no videos in your favourites!</string>
|
||||
@ -226,23 +247,23 @@
|
||||
<string name="edit_video">Edit video</string>
|
||||
<string name="create_an_account">Create an account</string>
|
||||
<string name="followers_count">%1$s Subscribers</string>
|
||||
<string name="developer">Developer</string>
|
||||
<string name="about_vesrion">Release %1$s</string>
|
||||
<string name="about_the_app">About the app</string>
|
||||
<string name="Donate">Donate</string>
|
||||
<string name="source_code">Source code</string>
|
||||
<string name="issue_tracker">Issue tracker</string>
|
||||
<string name="developer">المُطوّر</string>
|
||||
<string name="about_vesrion">الإصدار %1$s</string>
|
||||
<string name="about_the_app">عن التطبيق</string>
|
||||
<string name="Donate">تبرع</string>
|
||||
<string name="source_code">الشفرة المصدرية</string>
|
||||
<string name="issue_tracker">متعقب المشاكل</string>
|
||||
<string name="action_instance_empty_content">No instances match these criteria</string>
|
||||
<string name="instances_picker">Instances picker</string>
|
||||
<string name="pickup_instance">Pick this instance</string>
|
||||
<string name="sensitive_video"> Sensitive videos</string>
|
||||
<string name="sensitive_content">Sensitive content: %1$s</string>
|
||||
<string name="followers_instance">%1$s instance followers</string>
|
||||
<string name="help">Help</string>
|
||||
<string name="help">مساعدة</string>
|
||||
<string name="pickup_categories">Pick categories</string>
|
||||
<string name="pickup_languages">Pick languages</string>
|
||||
<string name="notification_channel_name">Update information</string>
|
||||
<string name="add_account">Add an account</string>
|
||||
<string name="add_account">إضافة حساب</string>
|
||||
<string name="list_of_accounts">List of accounts</string>
|
||||
<string name="pause">Pause</string>
|
||||
<string name="play">Play</string>
|
||||
|
@ -1,7 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="add_public_reply">Öffentliche Antwort hinzufügen</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="one">%d Antwort</item>
|
||||
<item quantity="other">%d Antworten</item>
|
||||
</plurals>
|
||||
<string name="reply">Antworten</string>
|
||||
<string name="set_theme">Erscheinungsbild</string>
|
||||
<string name="set_theme_description">Erlaube Änderungen am Erscheinungsbild</string>
|
||||
<string name="federation_issue">Das Video kann nicht föderiert eingebunden werden!</string>
|
||||
<string name="title_home">Startseite</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="title_local">Lokal</string>
|
||||
<string name="title_discover">Mehr erfahren</string>
|
||||
<string name="title_notifications">Benachrichtigungen</string>
|
||||
<string name="title_recently_added">Zuletzt hinzugefügt</string>
|
||||
@ -17,7 +26,7 @@
|
||||
<string name="instance_choice">Wähle eine Instanz</string>
|
||||
<string name="not_valide_instance">Der Name der Instanz scheint ungültig zu sein!</string>
|
||||
<string name="no_videos">Keine Videos!</string>
|
||||
<string name="no_notifications">No notifications!</string>
|
||||
<string name="no_notifications">Keine Benachrichtigungen!</string>
|
||||
<string name="favicon">Favicon</string>
|
||||
<string name="open_with">Öffnen mit</string>
|
||||
<string name="action_playlist_edit">Playlist bearbeiten</string>
|
||||
@ -34,7 +43,7 @@
|
||||
<string name="download">Herunterladen</string>
|
||||
<string name="profile_picture">Profilbild</string>
|
||||
<string name="update_video">Video aktualisieren</string>
|
||||
<string name="remove_from_playlist">Remove from playlist</string>
|
||||
<string name="remove_from_playlist">Aus Playlist entfernen</string>
|
||||
<string name="date_seconds">%d en</string>
|
||||
<string name="date_minutes">%d en</string>
|
||||
<string name="date_hours">%d en</string>
|
||||
@ -84,32 +93,32 @@
|
||||
<string name="delete_comment_confirm">Möchtest du diesen Kommentar wirklich löschen?</string>
|
||||
<string name="set_video_mode">Videomodus</string>
|
||||
<string name="filter">Filter</string>
|
||||
<string name="sepia_search">Sepia search</string>
|
||||
<string name="sepia_element_nsfw">Display sensitive content</string>
|
||||
<string name="sepia_element_published_date">Published date</string>
|
||||
<string name="any">Any</string>
|
||||
<string name="today">Today</string>
|
||||
<string name="last_7_days">Last 7 days</string>
|
||||
<string name="last_30_days">Last 30 days</string>
|
||||
<string name="last_365_days">Last 365 days</string>
|
||||
<string name="sepia_element_duration">Duration</string>
|
||||
<string name="duration_short"><![CDATA[Short (<4 min)]]></string>
|
||||
<string name="duration_medium"><![CDATA[Medium (4–10 min)]]></string>
|
||||
<string name="duration_long"><![CDATA[Long (> 10 min)]]></string>
|
||||
<string name="display_all_categories">Display all categories</string>
|
||||
<string name="display_all_licenses">Display all licenses</string>
|
||||
<string name="display_all_languages">Display all languages</string>
|
||||
<string name="all_of_these_tags">All of these tags</string>
|
||||
<string name="one_of_these_tags">One of these tags</string>
|
||||
<string name="apply_filter">Apply filter</string>
|
||||
<string name="sepia_search">Sepia-Suche</string>
|
||||
<string name="sepia_element_nsfw">Heikle Inhalte anzeigen</string>
|
||||
<string name="sepia_element_published_date">Veröffentlichungsdatum</string>
|
||||
<string name="any">Beliebig</string>
|
||||
<string name="today">Heute</string>
|
||||
<string name="last_7_days">Letze 7 Tage</string>
|
||||
<string name="last_30_days">Letzte 30 Tage</string>
|
||||
<string name="last_365_days">Letztes Jahr</string>
|
||||
<string name="sepia_element_duration">Dauer</string>
|
||||
<string name="duration_short"><![CDATA[Kurze (<4 min)]]></string>
|
||||
<string name="duration_medium"><![CDATA[Mittel (4–10 min)]]></string>
|
||||
<string name="duration_long"><![CDATA[Lang (> 10 min)]]></string>
|
||||
<string name="display_all_categories">Alle Kategorien anzeigen</string>
|
||||
<string name="display_all_licenses">Alle Lizenzen anzeigen</string>
|
||||
<string name="display_all_languages">Alle Sprachen anzeigen</string>
|
||||
<string name="all_of_these_tags">Alle diese Tags</string>
|
||||
<string name="one_of_these_tags">Einer dieser Tags</string>
|
||||
<string name="apply_filter">Filter anwenden</string>
|
||||
<string-array name="sort_by_array">
|
||||
<item>Best match</item>
|
||||
<item>Most recent</item>
|
||||
<item>Least recent</item>
|
||||
<item>Beste Übereinstimmung</item>
|
||||
<item>Neueste</item>
|
||||
<item>Älteste zuerst</item>
|
||||
</string-array>
|
||||
<string name="sort_by">Sort by</string>
|
||||
<string name="sepia_search_hint">Keyword, channel, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search displays videos and channels that match your search but is not the publisher, nor the owner. If you notice any problems with a video, report it to the administrators on the PeerTube website where the video is published.</string>
|
||||
<string name="sort_by">Sortieren nach</string>
|
||||
<string name="sepia_search_hint">Keyword, Kanal, Video, etc.</string>
|
||||
<string name="sepia_indication">Die Sepia-Suche zeigt Videos und Kanäle an welche zu deiner Suche passen, ist aber weder der Eigentümer noch der Verantwortliche für die Veröffentlichung. Falls du Probleme mit einem Video hast, dann melde dies dem Administrator der PeerTube Seite auf welcher das Video veröffentlicht wurde. </string>
|
||||
<string name="my_videos">Eigene Videos</string>
|
||||
<string name="title">Titel</string>
|
||||
<string name="license">Lizenz</string>
|
||||
@ -132,17 +141,19 @@
|
||||
<string name="change_instance">Wähle eine andere Instanz</string>
|
||||
<string name="my_history">Verlauf</string>
|
||||
<string name="edit">Bearbeiten</string>
|
||||
<string name="video_settings">Video settings</string>
|
||||
<string name="app_interface">Interface</string>
|
||||
<string name="set_cache_mode">Cache</string>
|
||||
<string name="set_video_cache_description">Set the cache for videos (default 100Mb)</string>
|
||||
<string name="set_video_quality_description">Define a default quality for videos</string>
|
||||
<string name="set_quality_mode">Resolution for videos</string>
|
||||
<string name="video_cache_value">Video cache: %d Mb</string>
|
||||
<string name="video_settings">Video-Einstellungen</string>
|
||||
<string name="app_interface">Benutzeroberfläche</string>
|
||||
<string name="set_cache_mode">Zwischenspeicher</string>
|
||||
<string name="set_video_cache_description">Lege die Größe des Zwischenspeichers für Videos fest (Standard 100Mb)</string>
|
||||
<string name="set_video_quality_description">Standardqualität für Videos festlegen</string>
|
||||
<string name="set_quality_mode">Auflösung für Videos</string>
|
||||
<string name="video_cache_value">Video-Zwischenspeicher: %d Mb</string>
|
||||
<string name="captions">Untertitel</string>
|
||||
<string name="pickup_captions">Untertitel abholen</string>
|
||||
<string name="none">Keine</string>
|
||||
<string name="set_video_mode_description">Erlaubt es, den Modus für das Abspielen von Videos zu ändern (Standard, Streaming oder über einen Browser).</string>
|
||||
<string name="delete_account_comment">Konto-Kommentare löschen</string>
|
||||
<string name="delete_account_comment_confirm">Sind Sie sicher, dass Sie alle Kommentare dieses Kontos entfernen möchten?</string>
|
||||
<string name="delete_video">Video löschen</string>
|
||||
<string name="delete_video_confirmation">Möchtest du dieses Video wirklich löschen?</string>
|
||||
<string name="no_video_to_display">Keine Videos zum Anzeigen!</string>
|
||||
@ -156,7 +167,8 @@
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> hat ein neues Video veröffentlicht: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Dein Video <b>%1$s</b> wurde gesperrt]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Die Sperre für dein Video <b>%1$s</b> wurde aufgehoben]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[Neuer Missbrauchsbericht für Video: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Öffentlichen Kommentar hinzufügen</string>
|
||||
<string name="send_comment">Kommentar absenden</string>
|
||||
<string name="all">Alle</string>
|
||||
@ -191,12 +203,17 @@
|
||||
<string-array name="settings_video_mode">
|
||||
<item>WebView</item>
|
||||
<item>Direkter Datenstrom</item>
|
||||
<item>Direct stream</item>
|
||||
<item>Direkter Stream</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>Hell</item>
|
||||
<item>Dunkel</item>
|
||||
<item>Automatisch</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
<item>Hoch</item>
|
||||
<item>Medium</item>
|
||||
<item>Low</item>
|
||||
<item>Niedrig</item>
|
||||
</string-array>
|
||||
<string name="unfollow_confirm">Möchtest du diesem Konto nicht mehr folgen?</string>
|
||||
<string name="title_video_peertube">Videotitel</string>
|
||||
@ -210,7 +227,7 @@
|
||||
<string name="bookmark_peertube_empty">Keine Videos in den Favoriten!</string>
|
||||
<string name="delete_channel">Kanal entfernen</string>
|
||||
<string name="action_channel_confirm_delete">Möchtest du diesen Kanal wirklich löschen?</string>
|
||||
<string name="modify_playlists">Video in playlists</string>
|
||||
<string name="modify_playlists">Video in Wiedergabelisten</string>
|
||||
<string name="no_muted">Keine stummgeschalteten Accounts!</string>
|
||||
<string name="error_display_name_channel">Du musst einen Namen und einen Anzeigenamen für diesen Kanal definieren!</string>
|
||||
<string name="action_channel_create">Kanal erstellen</string>
|
||||
@ -219,7 +236,7 @@
|
||||
<string name="report_comment_size">Bitte gib einen Grund an</string>
|
||||
<string name="not_logged_in">Du musst authentifiziert sein, um diesen Vorgang auszuführen.</string>
|
||||
<string name="successful_report">Der Account wurde gemeldet!</string>
|
||||
<string name="successful_report_comment">The comment has been reported!</string>
|
||||
<string name="successful_report_comment">Der Kommentar wurde gemeldet!</string>
|
||||
<string name="successful_video_report">Dieses Video wurde gemeldet!</string>
|
||||
<string name="password_length_error">Das Passwort muss mindestens 6 Zeichen lang sein!</string>
|
||||
<string name="muted_done">Der Account wurde stummgeschaltet!</string>
|
||||
|
@ -1,7 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="add_public_reply">Προσθήκη δημόσιας απάντησης</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="one">%d απάντηση</item>
|
||||
<item quantity="other">%d απαντήσεις</item>
|
||||
</plurals>
|
||||
<string name="reply">Απάντηση</string>
|
||||
<string name="set_theme">Θέμα</string>
|
||||
<string name="set_theme_description">Allow to change app theme</string>
|
||||
<string name="federation_issue">The video cannot be federated!</string>
|
||||
<string name="title_home">Αρχική</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="title_local">Τοπικά</string>
|
||||
<string name="title_discover">Ανακαλύψτε</string>
|
||||
<string name="title_notifications">Ειδοποιήσεις</string>
|
||||
<string name="title_recently_added">Προστέθηκαν πρόσφατα</string>
|
||||
@ -17,7 +26,7 @@
|
||||
<string name="instance_choice">Επιλογή υπόστασης</string>
|
||||
<string name="not_valide_instance">Η υπόσταση δεν μοιάζει να είναι έγκυρη!</string>
|
||||
<string name="no_videos">Κανένα βίντεο!</string>
|
||||
<string name="no_notifications">No notifications!</string>
|
||||
<string name="no_notifications">Δεν υπάρχουν ειδοποιήσεις!</string>
|
||||
<string name="favicon">Favicon</string>
|
||||
<string name="open_with">Άνοιγμα με</string>
|
||||
<string name="action_playlist_edit">Επεξεργασία λίστας αναπαραγωγής</string>
|
||||
@ -34,7 +43,7 @@
|
||||
<string name="download">Λήψη</string>
|
||||
<string name="profile_picture">Εικόνα προφίλ</string>
|
||||
<string name="update_video">Ενημέρωση του βίντεο</string>
|
||||
<string name="remove_from_playlist">Remove from playlist</string>
|
||||
<string name="remove_from_playlist">Κατάργηση από τη λίστα αναπαραγωγής</string>
|
||||
<string name="date_seconds">%d δευτ</string>
|
||||
<string name="date_minutes">%d λεπ</string>
|
||||
<string name="date_hours">%d ώρ</string>
|
||||
@ -83,31 +92,31 @@
|
||||
<string name="delete_comment">Διαγραφή ενός σχόλιου</string>
|
||||
<string name="delete_comment_confirm">Θέλετε να διαγράψετε αυτό το σχόλιο, στα σίγουρα;</string>
|
||||
<string name="set_video_mode">Κατάσταση λειτουργίας για τα βίντεο</string>
|
||||
<string name="filter">Filter</string>
|
||||
<string name="filter">Φίλτρο</string>
|
||||
<string name="sepia_search">Sepia search</string>
|
||||
<string name="sepia_element_nsfw">Display sensitive content</string>
|
||||
<string name="sepia_element_published_date">Published date</string>
|
||||
<string name="any">Any</string>
|
||||
<string name="today">Today</string>
|
||||
<string name="last_7_days">Last 7 days</string>
|
||||
<string name="last_30_days">Last 30 days</string>
|
||||
<string name="last_365_days">Last 365 days</string>
|
||||
<string name="sepia_element_duration">Duration</string>
|
||||
<string name="duration_short"><![CDATA[Short (<4 min)]]></string>
|
||||
<string name="duration_medium"><![CDATA[Medium (4–10 min)]]></string>
|
||||
<string name="duration_long"><![CDATA[Long (> 10 min)]]></string>
|
||||
<string name="display_all_categories">Display all categories</string>
|
||||
<string name="display_all_licenses">Display all licenses</string>
|
||||
<string name="display_all_languages">Display all languages</string>
|
||||
<string name="sepia_element_nsfw">Εμφάνιση ευαίσθητου περιεχομένου</string>
|
||||
<string name="sepia_element_published_date">Ημερομηνία δημοσίευσης</string>
|
||||
<string name="any">Οποιαδήποτε</string>
|
||||
<string name="today">Σήμερα</string>
|
||||
<string name="last_7_days">Τελευταίες 7 μέρες</string>
|
||||
<string name="last_30_days">Τελευταίες 30 μέρες</string>
|
||||
<string name="last_365_days">Τελευταίες 365 μέρες</string>
|
||||
<string name="sepia_element_duration">Διάρκεια</string>
|
||||
<string name="duration_short"><![CDATA[Σύντομο (<4 λεπτά)]]></string>
|
||||
<string name="duration_medium"><![CDATA[Μεσαίο (4-10 λεπτά)]]></string>
|
||||
<string name="duration_long"><![CDATA[Μακρύ (>10 λεπτά)]]></string>
|
||||
<string name="display_all_categories">Εμφάνιση όλων των κατηγοριών</string>
|
||||
<string name="display_all_licenses">Εμφάνιση όλων των αδειών</string>
|
||||
<string name="display_all_languages">Εμφάνιση όλων των γλωσσών</string>
|
||||
<string name="all_of_these_tags">All of these tags</string>
|
||||
<string name="one_of_these_tags">One of these tags</string>
|
||||
<string name="apply_filter">Apply filter</string>
|
||||
<string name="apply_filter">Εφαρμογή φίλτρου</string>
|
||||
<string-array name="sort_by_array">
|
||||
<item>Best match</item>
|
||||
<item>Most recent</item>
|
||||
<item>Least recent</item>
|
||||
<item>Πιο πρόσφατα</item>
|
||||
<item>Λιγότερο πρόσφατα</item>
|
||||
</string-array>
|
||||
<string name="sort_by">Sort by</string>
|
||||
<string name="sort_by">Ταξινόμηση κατά</string>
|
||||
<string name="sepia_search_hint">Keyword, channel, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search displays videos and channels that match your search but is not the publisher, nor the owner. If you notice any problems with a video, report it to the administrators on the PeerTube website where the video is published.</string>
|
||||
<string name="my_videos">Τα βίντεο μου</string>
|
||||
@ -133,16 +142,18 @@
|
||||
<string name="my_history">Ιστορικό</string>
|
||||
<string name="edit">Επεξεργασία</string>
|
||||
<string name="video_settings">Video settings</string>
|
||||
<string name="app_interface">Interface</string>
|
||||
<string name="set_cache_mode">Cache</string>
|
||||
<string name="set_video_cache_description">Set the cache for videos (default 100Mb)</string>
|
||||
<string name="set_video_quality_description">Define a default quality for videos</string>
|
||||
<string name="set_quality_mode">Resolution for videos</string>
|
||||
<string name="video_cache_value">Video cache: %d Mb</string>
|
||||
<string name="app_interface">Περιβάλλον Χρήσης</string>
|
||||
<string name="set_cache_mode">Μνήμη cache</string>
|
||||
<string name="set_video_cache_description">Ορίστε την μνήμη cache για τα βίντεο (προεπιλογή 100MB)</string>
|
||||
<string name="set_video_quality_description">Ορίστε την προεπιλεγμένη ποιότητα για τα βίντεο</string>
|
||||
<string name="set_quality_mode">Ανάλυση για τα βίντεο</string>
|
||||
<string name="video_cache_value">Μνήμη cache για τα βίντεο: %d MB</string>
|
||||
<string name="captions">Υπότιτλοι</string>
|
||||
<string name="pickup_captions">Επιλογή υποτίτλων</string>
|
||||
<string name="none">Κανένας</string>
|
||||
<string name="set_video_mode_description">Επιτρέπει την εναλλαγή κατάστασης λειτουργίας για την αναπαραγωγή βίντεο (προεπιλεγμένη, ροή ή μέσω περιηγητή ιστού).</string>
|
||||
<string name="delete_account_comment">Διαγραφή σχολίων λογαριασμού</string>
|
||||
<string name="delete_account_comment_confirm">Are you sure you want to remove all the comments of this account?</string>
|
||||
<string name="delete_video">Διαγραφή βίντεο</string>
|
||||
<string name="delete_video_confirmation">Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το βίντεο;</string>
|
||||
<string name="no_video_to_display">Δεν υπάρχουν βίντεο για προβολή!</string>
|
||||
@ -156,6 +167,7 @@
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> Δημοσίευσε ένα νέο βίντεο: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Το βίντεό σου <b>%1$s</b> έχει μπει στη μαύρη λίστα]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Το βίντεό σου <b>%1$s</b> έχει βγει από τη μαύρη λίστα]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Προσθήκη ενός δημόσιου σχόλιου</string>
|
||||
<string name="send_comment">Αποστολή σχόλιου</string>
|
||||
@ -190,12 +202,17 @@
|
||||
<string-array name="settings_video_mode">
|
||||
<item>Webview</item>
|
||||
<item>Άμεση ροή</item>
|
||||
<item>Direct stream</item>
|
||||
<item>Άμεση ροή</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>Φωτεινό</item>
|
||||
<item>Σκοτεινό</item>
|
||||
<item>Αυτόματο</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
<item>Medium</item>
|
||||
<item>Low</item>
|
||||
<item>Υψηλή</item>
|
||||
<item>Μεσαία</item>
|
||||
<item>Χαμηλή</item>
|
||||
</string-array>
|
||||
<string name="unfollow_confirm">Θέλετε να σταματήσετε να παρακολουθείτε αυτό το λογαριασμό;</string>
|
||||
<string name="title_video_peertube">Τίτλος του βίντεο</string>
|
||||
|
@ -1,5 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="add_public_reply">Añade una respuesta pública</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="one">%d respuesta</item>
|
||||
<item quantity="other">%d respuestas</item>
|
||||
</plurals>
|
||||
<string name="reply">Respuesta</string>
|
||||
<string name="set_theme">Tema</string>
|
||||
<string name="set_theme_description">Permite cambiar el tema de la aplicación</string>
|
||||
<string name="federation_issue">El video no puede ser federado!</string>
|
||||
<string name="title_home">Inicio</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="title_discover">Descubre</string>
|
||||
@ -17,7 +26,7 @@
|
||||
<string name="instance_choice">Selecciona una instancia</string>
|
||||
<string name="not_valide_instance">¡Esta instancia no parece ser válida!</string>
|
||||
<string name="no_videos">¡Ningún vídeo!</string>
|
||||
<string name="no_notifications">No notifications!</string>
|
||||
<string name="no_notifications">No hay notificaciones!</string>
|
||||
<string name="favicon">Favicon</string>
|
||||
<string name="open_with">Abrir con</string>
|
||||
<string name="action_playlist_edit">Editar lista de reproducción</string>
|
||||
@ -34,7 +43,7 @@
|
||||
<string name="download">Descargar</string>
|
||||
<string name="profile_picture">Imagen del perfil</string>
|
||||
<string name="update_video">Actualizar vídeo</string>
|
||||
<string name="remove_from_playlist">Remove from playlist</string>
|
||||
<string name="remove_from_playlist">Eliminar de la lista de reproducción</string>
|
||||
<string name="date_seconds">%d s</string>
|
||||
<string name="date_minutes">%d m</string>
|
||||
<string name="date_hours">%d h</string>
|
||||
@ -83,33 +92,33 @@
|
||||
<string name="delete_comment">Eliminar un comentario</string>
|
||||
<string name="delete_comment_confirm">¿Realmente deseas eliminar este comentario?</string>
|
||||
<string name="set_video_mode">Aplicar el modo de video</string>
|
||||
<string name="filter">Filter</string>
|
||||
<string name="sepia_search">Sepia search</string>
|
||||
<string name="sepia_element_nsfw">Display sensitive content</string>
|
||||
<string name="sepia_element_published_date">Published date</string>
|
||||
<string name="any">Any</string>
|
||||
<string name="today">Today</string>
|
||||
<string name="last_7_days">Last 7 days</string>
|
||||
<string name="last_30_days">Last 30 days</string>
|
||||
<string name="last_365_days">Last 365 days</string>
|
||||
<string name="sepia_element_duration">Duration</string>
|
||||
<string name="duration_short"><![CDATA[Short (<4 min)]]></string>
|
||||
<string name="duration_medium"><![CDATA[Medium (4–10 min)]]></string>
|
||||
<string name="duration_long"><![CDATA[Long (> 10 min)]]></string>
|
||||
<string name="display_all_categories">Display all categories</string>
|
||||
<string name="display_all_licenses">Display all licenses</string>
|
||||
<string name="display_all_languages">Display all languages</string>
|
||||
<string name="all_of_these_tags">All of these tags</string>
|
||||
<string name="one_of_these_tags">One of these tags</string>
|
||||
<string name="apply_filter">Apply filter</string>
|
||||
<string name="filter">Filtro</string>
|
||||
<string name="sepia_search">Búsqueda de sepia</string>
|
||||
<string name="sepia_element_nsfw">Mostrar el contenido sensible</string>
|
||||
<string name="sepia_element_published_date">Fecha publicada</string>
|
||||
<string name="any">Cualquier</string>
|
||||
<string name="today">Hoy</string>
|
||||
<string name="last_7_days">Los últimos 7 días</string>
|
||||
<string name="last_30_days">Los últimos 30 días</string>
|
||||
<string name="last_365_days">Los últimos 365 días</string>
|
||||
<string name="sepia_element_duration">Duración</string>
|
||||
<string name="duration_short"><![CDATA[Corto (<4 min)]]></string>
|
||||
<string name="duration_medium"><![CDATA[Medio (4-10 min)]]></string>
|
||||
<string name="duration_long"><![CDATA[Largo (> 10 min)]]></string>
|
||||
<string name="display_all_categories">Mostrar todas las categorías</string>
|
||||
<string name="display_all_licenses">Mostrar todas las licencias</string>
|
||||
<string name="display_all_languages">Mostrar todos los idiomas</string>
|
||||
<string name="all_of_these_tags">Todas estas etiquetas</string>
|
||||
<string name="one_of_these_tags">Una de estas etiquetas</string>
|
||||
<string name="apply_filter">Aplicar el filtro</string>
|
||||
<string-array name="sort_by_array">
|
||||
<item>Best match</item>
|
||||
<item>Most recent</item>
|
||||
<item>Least recent</item>
|
||||
<item>El mejor partido</item>
|
||||
<item>El más reciente</item>
|
||||
<item>Menos reciente</item>
|
||||
</string-array>
|
||||
<string name="sort_by">Sort by</string>
|
||||
<string name="sepia_search_hint">Keyword, channel, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search displays videos and channels that match your search but is not the publisher, nor the owner. If you notice any problems with a video, report it to the administrators on the PeerTube website where the video is published.</string>
|
||||
<string name="sort_by">Ordenar por</string>
|
||||
<string name="sepia_search_hint">Palabra clave, canal, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search muestra vídeos y canales que coinciden con tu búsqueda, pero no es el editor, ni el propietario. Si nota algún problema con un vídeo, repórtelo a los administradores en el sitio web de PeerTube donde se publique el vídeo.</string>
|
||||
<string name="my_videos">Mis videos</string>
|
||||
<string name="title">Título</string>
|
||||
<string name="license">Licencia</string>
|
||||
@ -132,17 +141,19 @@
|
||||
<string name="change_instance">Selecciona otra instancia</string>
|
||||
<string name="my_history">Historia</string>
|
||||
<string name="edit">Editar</string>
|
||||
<string name="video_settings">Video settings</string>
|
||||
<string name="app_interface">Interface</string>
|
||||
<string name="set_cache_mode">Cache</string>
|
||||
<string name="set_video_cache_description">Set the cache for videos (default 100Mb)</string>
|
||||
<string name="set_video_quality_description">Define a default quality for videos</string>
|
||||
<string name="set_quality_mode">Resolution for videos</string>
|
||||
<string name="video_cache_value">Video cache: %d Mb</string>
|
||||
<string name="video_settings">Ajustes de video</string>
|
||||
<string name="app_interface">Interfaz</string>
|
||||
<string name="set_cache_mode">Cacheo</string>
|
||||
<string name="set_video_cache_description">Configurar la caché para los vídeos (por defecto 100Mb)</string>
|
||||
<string name="set_video_quality_description">Definir una calidad predeterminada para los videos</string>
|
||||
<string name="set_quality_mode">Resolución para los videos</string>
|
||||
<string name="video_cache_value">Video caché: %d Mb</string>
|
||||
<string name="captions">Subtítulos</string>
|
||||
<string name="pickup_captions">Pies de foto de la camioneta</string>
|
||||
<string name="none">Ninguno</string>
|
||||
<string name="set_video_mode_description">Permite cambiar el modo de reproducción de los vídeos (predeterminado, streaming o a través de un navegador).</string>
|
||||
<string name="delete_account_comment">Eliminar los comentarios de la cuenta</string>
|
||||
<string name="delete_account_comment_confirm">Estás seguro de que quieres eliminar todos los comentarios de esta cuenta?</string>
|
||||
<string name="delete_video">Eliminar vídeo</string>
|
||||
<string name="delete_video_confirmation">¿Estás seguro de eliminar este video?</string>
|
||||
<string name="no_video_to_display">¡No hay videos para ver!</string>
|
||||
@ -156,7 +167,8 @@
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> publicó un nuevo video: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Su video <b>%1$s</b> esta en lista negra]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Tu video <b>%1$s</b> non más esta en lista negra]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[Nuevo informe de abuso para vídeo: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Añade un comentario público</string>
|
||||
<string name="send_comment">Enviar comentario</string>
|
||||
<string name="all">Todo</string>
|
||||
@ -191,12 +203,17 @@
|
||||
<string-array name="settings_video_mode">
|
||||
<item>Webview</item>
|
||||
<item>Corriente Directa</item>
|
||||
<item>Direct stream</item>
|
||||
<item>Corriente directa</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>Luz</item>
|
||||
<item>Dark</item>
|
||||
<item>Automático</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
<item>Medium</item>
|
||||
<item>Low</item>
|
||||
<item>Alto</item>
|
||||
<item>Medio</item>
|
||||
<item>Bajo</item>
|
||||
</string-array>
|
||||
<string name="unfollow_confirm">Quieres seguir esta cuenta?</string>
|
||||
<string name="title_video_peertube">Título del video</string>
|
||||
@ -210,7 +227,7 @@
|
||||
<string name="bookmark_peertube_empty">No hay videos en tus favoritos!</string>
|
||||
<string name="delete_channel">Quitar el canal</string>
|
||||
<string name="action_channel_confirm_delete">Estas seguro de borrar permanentemente este canal?</string>
|
||||
<string name="modify_playlists">Video in playlists</string>
|
||||
<string name="modify_playlists">Vídeo en las listas de reproducción</string>
|
||||
<string name="no_muted">Nada de cuentas mutables!</string>
|
||||
<string name="error_display_name_channel">Debes definir un nombre y un nombre de pantalla para este canal!</string>
|
||||
<string name="action_channel_create">Crear un canal</string>
|
||||
@ -219,7 +236,7 @@
|
||||
<string name="report_comment_size">Por favor, especifique las razones</string>
|
||||
<string name="not_logged_in">¡Debe ser autentificado para proceder a esta acción!</string>
|
||||
<string name="successful_report">La cuenta ha sido reportada!</string>
|
||||
<string name="successful_report_comment">The comment has been reported!</string>
|
||||
<string name="successful_report_comment">El comentario ha sido reportado!</string>
|
||||
<string name="successful_video_report">El video ha sido reportado!</string>
|
||||
<string name="password_length_error">La contraseña debe contener al menos 6 caracteres!</string>
|
||||
<string name="muted_done">La cuenta ha sido silenciada!</string>
|
||||
|
@ -1,5 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="add_public_reply">Ajouter une réponse publique</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="one">%d réponse</item>
|
||||
<item quantity="other">%d réponses</item>
|
||||
</plurals>
|
||||
<string name="reply">Réponse</string>
|
||||
<string name="set_theme">Thème</string>
|
||||
<string name="set_theme_description">Permet de changer le thème de l\'application</string>
|
||||
<string name="federation_issue">La vidéo ne peut pas être fédérée !</string>
|
||||
<string name="title_home">Locale</string>
|
||||
<string name="title_local">Locale</string>
|
||||
<string name="title_discover">Découvrir</string>
|
||||
@ -143,6 +152,8 @@
|
||||
<string name="pickup_captions">Options d\'envoi</string>
|
||||
<string name="none">Aucune</string>
|
||||
<string name="set_video_mode_description">Permet de changer le mode de lecture pour les vidéos (normal, streaming ou via un navigateur).</string>
|
||||
<string name="delete_account_comment">Supprimer les commentaires du compte</string>
|
||||
<string name="delete_account_comment_confirm">Êtes-vous sûr de vouloir supprimer tous les commentaires de ce compte ?</string>
|
||||
<string name="delete_video">Supprimer la vidéo</string>
|
||||
<string name="delete_video_confirmation">Êtes-vous sûr de vouloir supprimer cette vidéo ?</string>
|
||||
<string name="no_video_to_display">Aucune vidéo n’est disponible !</string>
|
||||
@ -156,6 +167,7 @@
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> a publié une nouvelle vidéo : <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Votre vidéo <b>%1$s</b> a été blacklisté]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Votre vidéo <b>%1$s</b> n’est plus blacklisté]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[Nouveau signalement pour la vidéo : <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Ajouter un commentaire public</string>
|
||||
<string name="send_comment">Envoyer un commentaire</string>
|
||||
@ -189,6 +201,11 @@
|
||||
<item>Streaming</item>
|
||||
<item>Flux direct</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>Lumière</item>
|
||||
<item>Foncé</item>
|
||||
<item>Automatique</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>Élevée</item>
|
||||
<item>Moyenne</item>
|
||||
|
@ -1,7 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="add_public_reply">Aggiungere una risposta pubblica</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="one">%d risposta</item>
|
||||
<item quantity="other">%d risposte</item>
|
||||
</plurals>
|
||||
<string name="reply">Rispondi</string>
|
||||
<string name="set_theme">Tema</string>
|
||||
<string name="set_theme_description">Permettere di cambiare il tema dell\'applicazione</string>
|
||||
<string name="federation_issue">Il video non può essere federato!</string>
|
||||
<string name="title_home">Inizio</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="title_local">Locale</string>
|
||||
<string name="title_discover">Esplora</string>
|
||||
<string name="title_notifications">Notifiche</string>
|
||||
<string name="title_recently_added">Aggiunti di recente</string>
|
||||
@ -17,7 +26,7 @@
|
||||
<string name="instance_choice">Trova un\'istanza</string>
|
||||
<string name="not_valide_instance">Questa istanza non sembra essere valida!</string>
|
||||
<string name="no_videos">Nessun video!</string>
|
||||
<string name="no_notifications">No notifications!</string>
|
||||
<string name="no_notifications">Nessuna notifica!</string>
|
||||
<string name="favicon">Favicon</string>
|
||||
<string name="open_with">Apri con</string>
|
||||
<string name="action_playlist_edit">Modifica playlist</string>
|
||||
@ -34,7 +43,7 @@
|
||||
<string name="download">Scarica</string>
|
||||
<string name="profile_picture">Immagine di profilo</string>
|
||||
<string name="update_video">Aggiorna video</string>
|
||||
<string name="remove_from_playlist">Remove from playlist</string>
|
||||
<string name="remove_from_playlist">Rimuovere dalla playlist</string>
|
||||
<string name="date_seconds">%d s</string>
|
||||
<string name="date_minutes">%d m</string>
|
||||
<string name="date_hours">%d h</string>
|
||||
@ -83,33 +92,33 @@
|
||||
<string name="delete_comment">Elimina il commento</string>
|
||||
<string name="delete_comment_confirm">Sei sicuro di voler eliminare questo commento?</string>
|
||||
<string name="set_video_mode">Modalità per i video</string>
|
||||
<string name="filter">Filter</string>
|
||||
<string name="sepia_search">Sepia search</string>
|
||||
<string name="sepia_element_nsfw">Display sensitive content</string>
|
||||
<string name="sepia_element_published_date">Published date</string>
|
||||
<string name="any">Any</string>
|
||||
<string name="today">Today</string>
|
||||
<string name="last_7_days">Last 7 days</string>
|
||||
<string name="last_30_days">Last 30 days</string>
|
||||
<string name="last_365_days">Last 365 days</string>
|
||||
<string name="sepia_element_duration">Duration</string>
|
||||
<string name="duration_short"><![CDATA[Short (<4 min)]]></string>
|
||||
<string name="duration_medium"><![CDATA[Medium (4–10 min)]]></string>
|
||||
<string name="duration_long"><![CDATA[Long (> 10 min)]]></string>
|
||||
<string name="display_all_categories">Display all categories</string>
|
||||
<string name="display_all_licenses">Display all licenses</string>
|
||||
<string name="display_all_languages">Display all languages</string>
|
||||
<string name="all_of_these_tags">All of these tags</string>
|
||||
<string name="one_of_these_tags">One of these tags</string>
|
||||
<string name="apply_filter">Apply filter</string>
|
||||
<string name="filter">Filtro</string>
|
||||
<string name="sepia_search">Ricerca Seppia</string>
|
||||
<string name="sepia_element_nsfw">Visualizzare il contenuto sensibile</string>
|
||||
<string name="sepia_element_published_date">Data di pubblicazione</string>
|
||||
<string name="any">Qualsiasi</string>
|
||||
<string name="today">Oggi</string>
|
||||
<string name="last_7_days">Ultimi 7 giorni</string>
|
||||
<string name="last_30_days">Ultimi 30 giorni</string>
|
||||
<string name="last_365_days">Ultimi 365 giorni</string>
|
||||
<string name="sepia_element_duration">Durata</string>
|
||||
<string name="duration_short"><![CDATA[Breve (<4 min)]]></string>
|
||||
<string name="duration_medium"><![CDATA[Medio (4-10 min)]]></string>
|
||||
<string name="duration_long"><![CDATA[Lungo (> 10 min)]]></string>
|
||||
<string name="display_all_categories">Visualizza tutte le categorie</string>
|
||||
<string name="display_all_licenses">Visualizzare tutte le licenze</string>
|
||||
<string name="display_all_languages">Visualizza tutte le lingue</string>
|
||||
<string name="all_of_these_tags">Tutti questi tag</string>
|
||||
<string name="one_of_these_tags">Uno di questi tag</string>
|
||||
<string name="apply_filter">Applicare il filtro</string>
|
||||
<string-array name="sort_by_array">
|
||||
<item>Best match</item>
|
||||
<item>Most recent</item>
|
||||
<item>Least recent</item>
|
||||
<item>Migliore partita</item>
|
||||
<item>I più recenti</item>
|
||||
<item>Meno recente</item>
|
||||
</string-array>
|
||||
<string name="sort_by">Sort by</string>
|
||||
<string name="sepia_search_hint">Keyword, channel, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search displays videos and channels that match your search but is not the publisher, nor the owner. If you notice any problems with a video, report it to the administrators on the PeerTube website where the video is published.</string>
|
||||
<string name="sort_by">Ordina per</string>
|
||||
<string name="sepia_search_hint">Parola chiave, canale, video, ecc.</string>
|
||||
<string name="sepia_indication">Sepia Search visualizza video e canali che corrispondono alla tua ricerca, ma non è l\'editore, né il proprietario. Se si notano problemi con un video, segnalarlo agli amministratori sul sito web di PeerTube dove viene pubblicato il video.</string>
|
||||
<string name="my_videos">I miei video</string>
|
||||
<string name="title">Titolo</string>
|
||||
<string name="license">Licenza</string>
|
||||
@ -132,17 +141,19 @@
|
||||
<string name="change_instance">Prendi un\'altra istanza</string>
|
||||
<string name="my_history">Cronologia</string>
|
||||
<string name="edit">Modifica</string>
|
||||
<string name="video_settings">Video settings</string>
|
||||
<string name="app_interface">Interface</string>
|
||||
<string name="video_settings">Impostazioni video</string>
|
||||
<string name="app_interface">Interfaccia</string>
|
||||
<string name="set_cache_mode">Cache</string>
|
||||
<string name="set_video_cache_description">Set the cache for videos (default 100Mb)</string>
|
||||
<string name="set_video_quality_description">Define a default quality for videos</string>
|
||||
<string name="set_quality_mode">Resolution for videos</string>
|
||||
<string name="video_cache_value">Video cache: %d Mb</string>
|
||||
<string name="set_video_cache_description">Impostare la cache per i video (default 100Mb)</string>
|
||||
<string name="set_video_quality_description">Definire una qualità predefinita per i video</string>
|
||||
<string name="set_quality_mode">Risoluzione per i video</string>
|
||||
<string name="video_cache_value">Memoria video: %d Mb</string>
|
||||
<string name="captions">Didascalie</string>
|
||||
<string name="pickup_captions">Scegliere le didascalie</string>
|
||||
<string name="none">Nessuno</string>
|
||||
<string name="set_video_mode_description">Permette di cambiare la modalità di riproduzione dei video (di default, in streaming o tramite browser).</string>
|
||||
<string name="delete_account_comment">Cancellare i commenti del conto</string>
|
||||
<string name="delete_account_comment_confirm">Sei sicuro di voler rimuovere tutti i commenti di questo account?</string>
|
||||
<string name="delete_video">Elimina video</string>
|
||||
<string name="delete_video_confirmation">Sei sicuro di voler eliminare questo video?</string>
|
||||
<string name="no_video_to_display">Nessun video da mostrare!</string>
|
||||
@ -156,7 +167,8 @@
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> ha pubblicato un nuovo video: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Il tuo video <b>%1$s</b> è stato messo nella lista nera]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Il tuo video <b>%1$s</b> è stato rimosso dalla lista nera]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[Nuovo rapporto di abuso per il video: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Aggiungi un commento pubblico</string>
|
||||
<string name="send_comment">Invia commento</string>
|
||||
<string name="all">Tutto</string>
|
||||
@ -191,12 +203,17 @@
|
||||
<string-array name="settings_video_mode">
|
||||
<item>Webview</item>
|
||||
<item>Stream diretto</item>
|
||||
<item>Direct stream</item>
|
||||
<item>Flusso diretto</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>Luce</item>
|
||||
<item>Scuro</item>
|
||||
<item>Automatica</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
<item>Medium</item>
|
||||
<item>Low</item>
|
||||
<item>Alto</item>
|
||||
<item>Medio</item>
|
||||
<item>Basso</item>
|
||||
</string-array>
|
||||
<string name="unfollow_confirm">Vuoi smettere di seguire questo account?</string>
|
||||
<string name="title_video_peertube">Titolo per il video</string>
|
||||
@ -210,7 +227,7 @@
|
||||
<string name="bookmark_peertube_empty">Non c\'è nessun video nei tuoi favoriti!</string>
|
||||
<string name="delete_channel">Rimuovi Canale</string>
|
||||
<string name="action_channel_confirm_delete">Sei sicuro di voler eliminare definitivamente questo canale?</string>
|
||||
<string name="modify_playlists">Video in playlists</string>
|
||||
<string name="modify_playlists">Video in playlist</string>
|
||||
<string name="no_muted">Nessun account silenziato!</string>
|
||||
<string name="error_display_name_channel">Devi definire un nome e un nome visualizzato per questo canale!</string>
|
||||
<string name="action_channel_create">Creare un canale</string>
|
||||
@ -219,7 +236,7 @@
|
||||
<string name="report_comment_size">Per favore, specifica una motivazione</string>
|
||||
<string name="not_logged_in">Per eseguire questa operazione, è necessario autenticarsi!</string>
|
||||
<string name="successful_report">L\'account è stato segnalato!</string>
|
||||
<string name="successful_report_comment">The comment has been reported!</string>
|
||||
<string name="successful_report_comment">Il commento è stato riportato!</string>
|
||||
<string name="successful_video_report">Il video è stato segnalato!</string>
|
||||
<string name="password_length_error">La password deve contenere almeno 6 caratteri!</string>
|
||||
<string name="muted_done">L\'account è stato silenziato!</string>
|
||||
|
@ -1,7 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="add_public_reply">Add a public reply</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="other">%d が返信</item>
|
||||
</plurals>
|
||||
<string name="reply">返信</string>
|
||||
<string name="set_theme">テーマ</string>
|
||||
<string name="set_theme_description">Allow to change app theme</string>
|
||||
<string name="federation_issue">The video cannot be federated!</string>
|
||||
<string name="title_home">ホーム</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="title_local">ローカル</string>
|
||||
<string name="title_discover">発見</string>
|
||||
<string name="title_notifications">通知</string>
|
||||
<string name="title_recently_added">最近追加された項目</string>
|
||||
@ -53,37 +61,37 @@
|
||||
<string name="password">パスワード</string>
|
||||
<string name="email">メールアドレス</string>
|
||||
<string name="tags">タグ</string>
|
||||
<string name="validate">Validate</string>
|
||||
<string name="share_with">Share with</string>
|
||||
<string name="validate">完了</string>
|
||||
<string name="share_with">共有</string>
|
||||
<string name="shared_via">Shared via TubeLab</string>
|
||||
<string name="username">User name</string>
|
||||
<string name="settings">Settings</string>
|
||||
<string name="logout_account_confirmation">Are you sure you want to logout @%1$s@%2$s?</string>
|
||||
<string name="following">Following</string>
|
||||
<string name="followers">Followers</string>
|
||||
<string name="client_error">Unable to get client id!</string>
|
||||
<string name="toast_error_loading_account">An error occurred while switching between accounts!</string>
|
||||
<string name="toast_error_search">An error occurred while searching!</string>
|
||||
<string name="nothing_to_do">No action can be taken</string>
|
||||
<string name="action_follow">Follow</string>
|
||||
<string name="action_mute">Mute</string>
|
||||
<string name="search">Search</string>
|
||||
<string name="delete">Delete</string>
|
||||
<string name="action_lists_confirm_delete">Are you sure you want to permanently delete this list?</string>
|
||||
<string name="action_lists_delete">Delete list</string>
|
||||
<string name="no_comments">Be the first to leave a comment on this video with the top right button!</string>
|
||||
<string name="comment_no_allowed_peertube">Comments are not enabled on this video!</string>
|
||||
<string name="pickup_resolution">Pick up a resolution</string>
|
||||
<string name="bookmark_add_peertube">The video has been added to bookmarks!</string>
|
||||
<string name="bookmark_remove_peertube">The video has been removed from bookmarks!</string>
|
||||
<string name="information" tools:ignore="UnusedResources">Information</string>
|
||||
<string name="app_logo">Logo of the application</string>
|
||||
<string name="username">ユーザー名</string>
|
||||
<string name="settings">設定</string>
|
||||
<string name="logout_account_confirmation">\@%1$s@%2$sからログアウトしますか?</string>
|
||||
<string name="following">フォロー中</string>
|
||||
<string name="followers">フォロワー</string>
|
||||
<string name="client_error">クライアントIDを取得できませんでした。</string>
|
||||
<string name="toast_error_loading_account">アカウントの切り替え中にエラーが発生しました!</string>
|
||||
<string name="toast_error_search">検索中にエラーが発生しました!</string>
|
||||
<string name="nothing_to_do">何もすることはできません</string>
|
||||
<string name="action_follow">フォローする</string>
|
||||
<string name="action_mute">ミュート</string>
|
||||
<string name="search">検索</string>
|
||||
<string name="delete">削除</string>
|
||||
<string name="action_lists_confirm_delete">このリストを完全に削除してもよろしいですか?</string>
|
||||
<string name="action_lists_delete">リストを削除</string>
|
||||
<string name="no_comments">右上のボタンをタップして最初のコメントを投稿しましょう!</string>
|
||||
<string name="comment_no_allowed_peertube">この動画はコメントが無効です!</string>
|
||||
<string name="pickup_resolution">画質を選択</string>
|
||||
<string name="bookmark_add_peertube">この動画をブックマークに追加しました!</string>
|
||||
<string name="bookmark_remove_peertube">この動画をブックマークから削除しました!</string>
|
||||
<string name="information" tools:ignore="UnusedResources">情報</string>
|
||||
<string name="app_logo">アプリケーションのロゴ</string>
|
||||
<!-- languages not translated -->
|
||||
<string name="subscriptions">Subscriptions</string>
|
||||
<string name="delete_comment">Delete a comment</string>
|
||||
<string name="delete_comment_confirm">Are you sure to delete this comment?</string>
|
||||
<string name="set_video_mode">Mode for videos</string>
|
||||
<string name="filter">Filter</string>
|
||||
<string name="subscriptions">サブスクリプション</string>
|
||||
<string name="delete_comment">コメントを削除</string>
|
||||
<string name="delete_comment_confirm">このコメントを削除しますか?</string>
|
||||
<string name="set_video_mode">動画のモード</string>
|
||||
<string name="filter">フィルター</string>
|
||||
<string name="sepia_search">Sepia search</string>
|
||||
<string name="sepia_element_nsfw">Display sensitive content</string>
|
||||
<string name="sepia_element_published_date">Published date</string>
|
||||
@ -110,31 +118,31 @@
|
||||
<string name="sort_by">Sort by</string>
|
||||
<string name="sepia_search_hint">Keyword, channel, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search displays videos and channels that match your search but is not the publisher, nor the owner. If you notice any problems with a video, report it to the administrators on the PeerTube website where the video is published.</string>
|
||||
<string name="my_videos">My videos</string>
|
||||
<string name="title">Title</string>
|
||||
<string name="license">License</string>
|
||||
<string name="category">Category</string>
|
||||
<string name="language">Language</string>
|
||||
<string name="peertube_nsfw">This video contains mature or explicit content</string>
|
||||
<string name="peertube_enable_comments">Enable video comments</string>
|
||||
<string name="description">Description</string>
|
||||
<string name="toast_peertube_video_updated">The video has been updated!</string>
|
||||
<string name="my_videos">動画</string>
|
||||
<string name="title">タイトル</string>
|
||||
<string name="license">ライセンス</string>
|
||||
<string name="category">カテゴリ</string>
|
||||
<string name="language">言語</string>
|
||||
<string name="peertube_nsfw">この動画は成人向けや過激な内容を含みます</string>
|
||||
<string name="peertube_enable_comments">動画のコメントを有効にする</string>
|
||||
<string name="description">説明</string>
|
||||
<string name="toast_peertube_video_updated">動画を更新しました!</string>
|
||||
<string name="register_account">Register an account</string>
|
||||
<string name="email_address">Email address</string>
|
||||
<string name="preview">Preview</string>
|
||||
<string name="change_preview">Change preview</string>
|
||||
<string name="name">Name</string>
|
||||
<string name="display_more">Display more</string>
|
||||
<string name="display_more">もっと見る</string>
|
||||
<string name="no_channels">No channels!</string>
|
||||
<string name="report_helper">Some explanations about your report…</string>
|
||||
<string name="report_video">Report video</string>
|
||||
<string name="report">Report</string>
|
||||
<string name="report">報告</string>
|
||||
<string name="change_instance">Pick another instance</string>
|
||||
<string name="my_history">履歴</string>
|
||||
<string name="edit">編集</string>
|
||||
<string name="video_settings">Video settings</string>
|
||||
<string name="app_interface">Interface</string>
|
||||
<string name="set_cache_mode">Cache</string>
|
||||
<string name="app_interface">インターフェイス</string>
|
||||
<string name="set_cache_mode">キャッシュ</string>
|
||||
<string name="set_video_cache_description">Set the cache for videos (default 100Mb)</string>
|
||||
<string name="set_video_quality_description">Define a default quality for videos</string>
|
||||
<string name="set_quality_mode">Resolution for videos</string>
|
||||
@ -143,6 +151,8 @@
|
||||
<string name="pickup_captions">字幕を選択</string>
|
||||
<string name="none">なし</string>
|
||||
<string name="set_video_mode_description">動画再生モードの変更を許可する(デフォルト、ストリーミングまたはブラウザ経由)。</string>
|
||||
<string name="delete_account_comment">Delete account comments</string>
|
||||
<string name="delete_account_comment_confirm">Are you sure you want to remove all the comments of this account?</string>
|
||||
<string name="delete_video">動画を削除</string>
|
||||
<string name="delete_video_confirmation">この動画を本当に削除しますか?</string>
|
||||
<string name="no_video_to_display">動画がありません!</string>
|
||||
@ -156,6 +166,7 @@
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b>が新しい動画を投稿しました: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[<b>%1$s</b>がブラックリストに追加されました]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[<b>%1$s</b>がブラックリストから外されました]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">パブリックコメントを追加</string>
|
||||
<string name="send_comment">コメントを送信</string>
|
||||
@ -164,47 +175,52 @@
|
||||
<string name="playlists">プレイリスト</string>
|
||||
<string name="display_name">表示名</string>
|
||||
<string name="action_playlist_add">You don\'t have any playlists. Tap on the \"+\" icon to add a new playlist</string>
|
||||
<string name="error_display_name">You must provide a display name!</string>
|
||||
<string name="error_channel_mandatory">The channel is required when the playlist is public.</string>
|
||||
<string name="action_playlist_create">Create a playlist</string>
|
||||
<string name="action_playlist_empty_content">There is nothing in this playlist yet.</string>
|
||||
<string name="password_confirm">Confirm password</string>
|
||||
<string name="agreement_check">I agree to %1$s and %2$s</string>
|
||||
<string name="server_rules">server rules</string>
|
||||
<string name="tos">terms of service</string>
|
||||
<string name="sign_up">Sign up</string>
|
||||
<string name="all_field_filled">Please, fill all the fields!</string>
|
||||
<string name="password_error">Passwords don\'t match!</string>
|
||||
<string name="email_error">The email doesn\'t seem to be valid!</string>
|
||||
<string name="email_indicator">You will be sent a confirmation e-mail</string>
|
||||
<string name="password_indicator">Use at least 8 characters</string>
|
||||
<string name="password_too_short">Password should contain at least 8 characters</string>
|
||||
<string name="username_error">Username should only contain letters, numbers and underscores</string>
|
||||
<string name="account_created">Account created!</string>
|
||||
<string name="error_display_name">表示名を入力する必要があります!</string>
|
||||
<string name="error_channel_mandatory">プレイリストがパブリックのときにはチャンネルが必要です。</string>
|
||||
<string name="action_playlist_create">プレイリストを作成</string>
|
||||
<string name="action_playlist_empty_content">プレイリストにはまだ何もありません。</string>
|
||||
<string name="password_confirm">パスワードの確認</string>
|
||||
<string name="agreement_check">%1$sと%2$sに同意する</string>
|
||||
<string name="server_rules">サーバーのルール</string>
|
||||
<string name="tos">利用規約</string>
|
||||
<string name="sign_up">新規登録</string>
|
||||
<string name="all_field_filled">全ての欄を記入してください!</string>
|
||||
<string name="password_error">パスワードが一致しません!</string>
|
||||
<string name="email_error">このメールアドレスは無効です!</string>
|
||||
<string name="email_indicator">確認メールを送信しました</string>
|
||||
<string name="password_indicator">少なくとも8文字は入力してください</string>
|
||||
<string name="password_too_short">パスワードは8文字以上必要です</string>
|
||||
<string name="username_error">ユーザー名にはアルファベット、数字、アンダーバーのみ含めることができます</string>
|
||||
<string name="account_created">アカウントを作成しました!</string>
|
||||
<string name="account_created_message"> Your account has been created!\n\n
|
||||
Think to validate your email within the 48 next hours.\n\n
|
||||
You can now connect your account by writing <b>%1$s</b> in the first field and tap on <b>Connect</b>.\n\n
|
||||
<b>Important</b>: If your instance required validation, you will receive an email once it is validated!
|
||||
</string>
|
||||
<string name="account">Account</string>
|
||||
<string name="report_account">Report account</string>
|
||||
<string name="account">アカウント</string>
|
||||
<string name="report_account">アカウントを報告</string>
|
||||
<string-array name="settings_video_mode">
|
||||
<item>Normal</item>
|
||||
<item>Webview</item>
|
||||
<item>Direct stream</item>
|
||||
<item>標準</item>
|
||||
<item>WebView</item>
|
||||
<item>ダイレクトストリーム</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>ライト</item>
|
||||
<item>ダーク</item>
|
||||
<item>Automatic</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
<item>Medium</item>
|
||||
<item>Low</item>
|
||||
</string-array>
|
||||
<string name="unfollow_confirm">Do you want to unfollow this account?</string>
|
||||
<string name="title_video_peertube">Title for the video</string>
|
||||
<string name="join_peertube">Join Peertube</string>
|
||||
<string name="agreement_check_peertube">I am at least 16 years old and agree to the %1$s of this instance</string>
|
||||
<string name="edit_profile">Edit profile</string>
|
||||
<string name="make_an_action">Make an action</string>
|
||||
<string name="action_unfollow">Unfollow</string>
|
||||
<string name="unfollow_confirm">このアカウントのフォローを解除しますか?</string>
|
||||
<string name="title_video_peertube">動画のタイトル</string>
|
||||
<string name="join_peertube">Peertubeに参加</string>
|
||||
<string name="agreement_check_peertube">私は16歳以上で、インスタンスの %1$s に同意します。</string>
|
||||
<string name="edit_profile">プロフィールを編集</string>
|
||||
<string name="make_an_action">アクションを作成</string>
|
||||
<string name="action_unfollow">フォロー解除</string>
|
||||
<string name="display_nsfw_videos">Display sensitive videos</string>
|
||||
<string name="fullscreen">Fullscreen</string>
|
||||
<string name="bookmark_peertube_empty">There are no videos in your favourites!</string>
|
||||
@ -226,12 +242,12 @@
|
||||
<string name="edit_video">Edit video</string>
|
||||
<string name="create_an_account">Create an account</string>
|
||||
<string name="followers_count">%1$s Subscribers</string>
|
||||
<string name="developer">Developer</string>
|
||||
<string name="about_vesrion">Release %1$s</string>
|
||||
<string name="about_the_app">About the app</string>
|
||||
<string name="Donate">Donate</string>
|
||||
<string name="source_code">Source code</string>
|
||||
<string name="issue_tracker">Issue tracker</string>
|
||||
<string name="developer">開発者</string>
|
||||
<string name="about_vesrion">リリース %1$s</string>
|
||||
<string name="about_the_app">このアプリについて</string>
|
||||
<string name="Donate">寄付</string>
|
||||
<string name="source_code">ソースコード</string>
|
||||
<string name="issue_tracker">課題追跡</string>
|
||||
<string name="action_instance_empty_content">No instances match these criteria</string>
|
||||
<string name="instances_picker">Instances picker</string>
|
||||
<string name="pickup_instance">Pick this instance</string>
|
||||
@ -242,7 +258,7 @@
|
||||
<string name="pickup_categories">Pick categories</string>
|
||||
<string name="pickup_languages">Pick languages</string>
|
||||
<string name="notification_channel_name">Update information</string>
|
||||
<string name="add_account">Add an account</string>
|
||||
<string name="add_account">アカウントを追加</string>
|
||||
<string name="list_of_accounts">List of accounts</string>
|
||||
<string name="pause">Pause</string>
|
||||
<string name="play">Play</string>
|
||||
|
@ -1,15 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="title_home">Home</string>
|
||||
<string name="add_public_reply">Add a public reply</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="other">답글 %d개</item>
|
||||
</plurals>
|
||||
<string name="reply">Reply</string>
|
||||
<string name="set_theme">테마</string>
|
||||
<string name="set_theme_description">Allow to change app theme</string>
|
||||
<string name="federation_issue">The video cannot be federated!</string>
|
||||
<string name="title_home">홈</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="title_discover">Discover</string>
|
||||
<string name="title_notifications">Notifications</string>
|
||||
<string name="title_notifications">알림</string>
|
||||
<string name="title_recently_added">Recently added</string>
|
||||
<string name="title_trending">Trending</string>
|
||||
<string name="title_most_liked">Most liked</string>
|
||||
<string name="toast_error">Oops! An error occurred!</string>
|
||||
<string name="title_muted">Muted</string>
|
||||
<string name="title_channel">Channels</string>
|
||||
<string name="title_channel">채널</string>
|
||||
<string name="do_not_list">Do not list</string>
|
||||
<string name="blur">Blur</string>
|
||||
<string name="display">Display</string>
|
||||
@ -18,72 +26,72 @@
|
||||
<string name="not_valide_instance">This instance does not seem to be valid!</string>
|
||||
<string name="no_videos">No videos!</string>
|
||||
<string name="no_notifications">No notifications!</string>
|
||||
<string name="favicon">Favicon</string>
|
||||
<string name="open_with">Open with</string>
|
||||
<string name="favicon">파비콘</string>
|
||||
<string name="open_with">다음으로 열기</string>
|
||||
<string name="action_playlist_edit">Edit a playlist</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="close">닫기</string>
|
||||
<string name="upload_video">Upload</string>
|
||||
<string name="image_preview">Image preview</string>
|
||||
<string name="file_to_upload">Select the file to upload</string>
|
||||
<string name="channel">Channel</string>
|
||||
<string name="videos">Videos</string>
|
||||
<string name="channels">Channels</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="download">Download</string>
|
||||
<string name="profile_picture">Profile picture</string>
|
||||
<string name="channel">채널</string>
|
||||
<string name="videos">동영상</string>
|
||||
<string name="channels">채널</string>
|
||||
<string name="yes">예</string>
|
||||
<string name="no">아니</string>
|
||||
<string name="cancel">취소</string>
|
||||
<string name="download">다운로드</string>
|
||||
<string name="profile_picture">프로필 사진</string>
|
||||
<string name="update_video">Update video</string>
|
||||
<string name="remove_from_playlist">Remove from playlist</string>
|
||||
<string name="date_seconds">%d s</string>
|
||||
<string name="date_minutes">%d m</string>
|
||||
<string name="date_hours">%d h</string>
|
||||
<string name="date_day">%d d</string>
|
||||
<string name="date_seconds">%d 초</string>
|
||||
<string name="date_minutes">%d 분</string>
|
||||
<string name="date_hours">%d 시</string>
|
||||
<string name="date_day">%d 일</string>
|
||||
<string name="number_view_video">%s views</string>
|
||||
<string name="title_instance_login">Instance host</string>
|
||||
<string name="uploading">Uploading, please wait…</string>
|
||||
<string name="upload_video_success">The video has been uploaded!</string>
|
||||
<string name="toast_cancelled">Upload cancelled!</string>
|
||||
<string name="video_uploaded_action">Tap here to edit the video data.</string>
|
||||
<string name="toot_select_image_error">An error occurred while selecting the media!</string>
|
||||
<string name="download_file">Download %1$s</string>
|
||||
<string name="action_privacy">Privacy</string>
|
||||
<string name="action_logout">Logout</string>
|
||||
<string name="login">Login</string>
|
||||
<string name="password">Password</string>
|
||||
<string name="email">Email</string>
|
||||
<string name="tags">Tags</string>
|
||||
<string name="validate">Validate</string>
|
||||
<string name="share_with">Share with</string>
|
||||
<string name="toot_select_image_error">미디어를 선택하는 도중 오류가 발생하였습니다!</string>
|
||||
<string name="download_file">다운로드 %1$s</string>
|
||||
<string name="action_privacy">개인정보</string>
|
||||
<string name="action_logout">로그아웃</string>
|
||||
<string name="login">로그인</string>
|
||||
<string name="password">비밀번호</string>
|
||||
<string name="email">이메일</string>
|
||||
<string name="tags">태그</string>
|
||||
<string name="validate">확인</string>
|
||||
<string name="share_with">공유</string>
|
||||
<string name="shared_via">Shared via TubeLab</string>
|
||||
<string name="username">User name</string>
|
||||
<string name="settings">Settings</string>
|
||||
<string name="username">사용자명</string>
|
||||
<string name="settings">설정</string>
|
||||
<string name="logout_account_confirmation">Are you sure you want to logout @%1$s@%2$s?</string>
|
||||
<string name="following">Following</string>
|
||||
<string name="followers">Followers</string>
|
||||
<string name="client_error">Unable to get client id!</string>
|
||||
<string name="following">팔로잉</string>
|
||||
<string name="followers">팔로워</string>
|
||||
<string name="client_error">클라이언트 ID를 얻을 수 없습니다!</string>
|
||||
<string name="toast_error_loading_account">An error occurred while switching between accounts!</string>
|
||||
<string name="toast_error_search">An error occurred while searching!</string>
|
||||
<string name="nothing_to_do">No action can be taken</string>
|
||||
<string name="action_follow">Follow</string>
|
||||
<string name="action_mute">Mute</string>
|
||||
<string name="search">Search</string>
|
||||
<string name="delete">Delete</string>
|
||||
<string name="action_lists_confirm_delete">Are you sure you want to permanently delete this list?</string>
|
||||
<string name="action_lists_delete">Delete list</string>
|
||||
<string name="nothing_to_do">아무 조치를 취할 수 없습니다</string>
|
||||
<string name="action_follow">팔로우</string>
|
||||
<string name="action_mute">뮤트</string>
|
||||
<string name="search">검색</string>
|
||||
<string name="delete">삭제</string>
|
||||
<string name="action_lists_confirm_delete">이 리스트를 정말로 영원히 삭제하시겠습니까?</string>
|
||||
<string name="action_lists_delete">리스트 삭제</string>
|
||||
<string name="no_comments">Be the first to leave a comment on this video with the top right button!</string>
|
||||
<string name="comment_no_allowed_peertube">Comments are not enabled on this video!</string>
|
||||
<string name="pickup_resolution">Pick up a resolution</string>
|
||||
<string name="bookmark_add_peertube">The video has been added to bookmarks!</string>
|
||||
<string name="bookmark_remove_peertube">The video has been removed from bookmarks!</string>
|
||||
<string name="information" tools:ignore="UnusedResources">Information</string>
|
||||
<string name="app_logo">Logo of the application</string>
|
||||
<string name="information" tools:ignore="UnusedResources">정보</string>
|
||||
<string name="app_logo">응용프로그램 로고</string>
|
||||
<!-- languages not translated -->
|
||||
<string name="subscriptions">Subscriptions</string>
|
||||
<string name="delete_comment">Delete a comment</string>
|
||||
<string name="delete_comment_confirm">Are you sure to delete this comment?</string>
|
||||
<string name="set_video_mode">Mode for videos</string>
|
||||
<string name="filter">Filter</string>
|
||||
<string name="filter">필터</string>
|
||||
<string name="sepia_search">Sepia search</string>
|
||||
<string name="sepia_element_nsfw">Display sensitive content</string>
|
||||
<string name="sepia_element_published_date">Published date</string>
|
||||
@ -111,30 +119,30 @@
|
||||
<string name="sepia_search_hint">Keyword, channel, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search displays videos and channels that match your search but is not the publisher, nor the owner. If you notice any problems with a video, report it to the administrators on the PeerTube website where the video is published.</string>
|
||||
<string name="my_videos">My videos</string>
|
||||
<string name="title">Title</string>
|
||||
<string name="title">제목</string>
|
||||
<string name="license">License</string>
|
||||
<string name="category">Category</string>
|
||||
<string name="language">Language</string>
|
||||
<string name="language">언어</string>
|
||||
<string name="peertube_nsfw">This video contains mature or explicit content</string>
|
||||
<string name="peertube_enable_comments">Enable video comments</string>
|
||||
<string name="description">Description</string>
|
||||
<string name="description">설명</string>
|
||||
<string name="toast_peertube_video_updated">The video has been updated!</string>
|
||||
<string name="register_account">Register an account</string>
|
||||
<string name="email_address">Email address</string>
|
||||
<string name="preview">Preview</string>
|
||||
<string name="change_preview">Change preview</string>
|
||||
<string name="name">Name</string>
|
||||
<string name="display_more">Display more</string>
|
||||
<string name="display_more">더 보기</string>
|
||||
<string name="no_channels">No channels!</string>
|
||||
<string name="report_helper">Some explanations about your report…</string>
|
||||
<string name="report_video">Report video</string>
|
||||
<string name="report">Report</string>
|
||||
<string name="report">신고</string>
|
||||
<string name="change_instance">Pick another instance</string>
|
||||
<string name="my_history">History</string>
|
||||
<string name="my_history">내역</string>
|
||||
<string name="edit">Edit</string>
|
||||
<string name="video_settings">Video settings</string>
|
||||
<string name="app_interface">Interface</string>
|
||||
<string name="set_cache_mode">Cache</string>
|
||||
<string name="app_interface">인터페이스</string>
|
||||
<string name="set_cache_mode">캐시</string>
|
||||
<string name="set_video_cache_description">Set the cache for videos (default 100Mb)</string>
|
||||
<string name="set_video_quality_description">Define a default quality for videos</string>
|
||||
<string name="set_quality_mode">Resolution for videos</string>
|
||||
@ -143,10 +151,12 @@
|
||||
<string name="pickup_captions">Pick captions</string>
|
||||
<string name="none">None</string>
|
||||
<string name="set_video_mode_description">Allows to change mode for playing videos (default, streaming or via a browser).</string>
|
||||
<string name="delete_account_comment">Delete account comments</string>
|
||||
<string name="delete_account_comment_confirm">Are you sure you want to remove all the comments of this account?</string>
|
||||
<string name="delete_video">Delete video</string>
|
||||
<string name="delete_video_confirmation">Are you sure to delete this video?</string>
|
||||
<string name="no_video_to_display">No videos to display!</string>
|
||||
<string name="share">Share</string>
|
||||
<string name="share">공유</string>
|
||||
<string name="peertube_comment_on_video"><![CDATA[<b>%1$s</b> commented your video <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_channel"><![CDATA[<b>%1$s</b> is following your channel <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_account"><![CDATA[<b>%1$s</b> is following your account]]></string>
|
||||
@ -156,13 +166,14 @@
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> published a new video: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Your video <b>%1$s</b> has been blacklisted]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Your video <b>%1$s</b> has been unblacklisted]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Add a public comment</string>
|
||||
<string name="send_comment">Send comment</string>
|
||||
<string name="all">All</string>
|
||||
<string name="add_public_comment">공개 댓글 추가</string>
|
||||
<string name="send_comment">댓글 보내기</string>
|
||||
<string name="all">모두</string>
|
||||
<!-- end languages -->
|
||||
<string name="playlists">Playlists</string>
|
||||
<string name="display_name">Display name</string>
|
||||
<string name="playlists">재생목록</string>
|
||||
<string name="display_name">표시되는 이름</string>
|
||||
<string name="action_playlist_add">You don\'t have any playlists. Tap on the \"+\" icon to add a new playlist</string>
|
||||
<string name="error_display_name">You must provide a display name!</string>
|
||||
<string name="error_channel_mandatory">The channel is required when the playlist is public.</string>
|
||||
@ -189,10 +200,15 @@
|
||||
<string name="account">Account</string>
|
||||
<string name="report_account">Report account</string>
|
||||
<string-array name="settings_video_mode">
|
||||
<item>Normal</item>
|
||||
<item>보통</item>
|
||||
<item>Webview</item>
|
||||
<item>Direct stream</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>밝음</item>
|
||||
<item>어두움</item>
|
||||
<item>Automatic</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
<item>Medium</item>
|
||||
@ -202,9 +218,9 @@
|
||||
<string name="title_video_peertube">Title for the video</string>
|
||||
<string name="join_peertube">Join Peertube</string>
|
||||
<string name="agreement_check_peertube">I am at least 16 years old and agree to the %1$s of this instance</string>
|
||||
<string name="edit_profile">Edit profile</string>
|
||||
<string name="edit_profile">프로필 수정</string>
|
||||
<string name="make_an_action">Make an action</string>
|
||||
<string name="action_unfollow">Unfollow</string>
|
||||
<string name="action_unfollow">언팔로우</string>
|
||||
<string name="display_nsfw_videos">Display sensitive videos</string>
|
||||
<string name="fullscreen">Fullscreen</string>
|
||||
<string name="bookmark_peertube_empty">There are no videos in your favourites!</string>
|
||||
@ -226,8 +242,8 @@
|
||||
<string name="edit_video">Edit video</string>
|
||||
<string name="create_an_account">Create an account</string>
|
||||
<string name="followers_count">%1$s Subscribers</string>
|
||||
<string name="developer">Developer</string>
|
||||
<string name="about_vesrion">Release %1$s</string>
|
||||
<string name="developer">개발자</string>
|
||||
<string name="about_vesrion">릴리즈 %1$s</string>
|
||||
<string name="about_the_app">About the app</string>
|
||||
<string name="Donate">Donate</string>
|
||||
<string name="source_code">Source code</string>
|
||||
@ -242,7 +258,7 @@
|
||||
<string name="pickup_categories">Pick categories</string>
|
||||
<string name="pickup_languages">Pick languages</string>
|
||||
<string name="notification_channel_name">Update information</string>
|
||||
<string name="add_account">Add an account</string>
|
||||
<string name="add_account">계정 추가</string>
|
||||
<string name="list_of_accounts">List of accounts</string>
|
||||
<string name="pause">Pause</string>
|
||||
<string name="play">Play</string>
|
||||
|
@ -1,7 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="add_public_reply">Voeg een openbaar antwoord toe</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="one">%d antwoord</item>
|
||||
<item quantity="other">%d reacties</item>
|
||||
</plurals>
|
||||
<string name="reply">Antwoord</string>
|
||||
<string name="set_theme">Thema</string>
|
||||
<string name="set_theme_description">Laat het thema van de app wijzigen</string>
|
||||
<string name="federation_issue">De video kan niet gefedereerd worden!</string>
|
||||
<string name="title_home">Home</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="title_local">Lokaal</string>
|
||||
<string name="title_discover">Ontdek</string>
|
||||
<string name="title_notifications">Meldingen</string>
|
||||
<string name="title_recently_added">Onlangs toegevoegd</string>
|
||||
@ -17,7 +26,7 @@
|
||||
<string name="instance_choice">Kies een instantie</string>
|
||||
<string name="not_valide_instance">Dit geval lijkt niet geldig te zijn!</string>
|
||||
<string name="no_videos">Geen video\'s!</string>
|
||||
<string name="no_notifications">No notifications!</string>
|
||||
<string name="no_notifications">Geen meldingen!</string>
|
||||
<string name="favicon">Favicon</string>
|
||||
<string name="open_with">Open met</string>
|
||||
<string name="action_playlist_edit">Bewerk een afspeellijst</string>
|
||||
@ -30,11 +39,11 @@
|
||||
<string name="channels">Kanalen</string>
|
||||
<string name="yes">Ja</string>
|
||||
<string name="no">Geen</string>
|
||||
<string name="cancel">Annuleer</string>
|
||||
<string name="cancel">Annuleren</string>
|
||||
<string name="download">Download</string>
|
||||
<string name="profile_picture">Profiel foto</string>
|
||||
<string name="update_video">Video bijwerken</string>
|
||||
<string name="remove_from_playlist">Remove from playlist</string>
|
||||
<string name="remove_from_playlist">Verwijderen uit de playlist</string>
|
||||
<string name="date_seconds">%d s</string>
|
||||
<string name="date_minutes">%d m</string>
|
||||
<string name="date_hours">%d h</string>
|
||||
@ -84,32 +93,32 @@
|
||||
<string name="delete_comment_confirm">Weet u zeker dat u deze opmerking wilt verwijderen?</string>
|
||||
<string name="set_video_mode">Modus voor video\'s</string>
|
||||
<string name="filter">Filter</string>
|
||||
<string name="sepia_search">Sepia search</string>
|
||||
<string name="sepia_element_nsfw">Display sensitive content</string>
|
||||
<string name="sepia_element_published_date">Published date</string>
|
||||
<string name="any">Any</string>
|
||||
<string name="today">Today</string>
|
||||
<string name="last_7_days">Last 7 days</string>
|
||||
<string name="last_30_days">Last 30 days</string>
|
||||
<string name="last_365_days">Last 365 days</string>
|
||||
<string name="sepia_element_duration">Duration</string>
|
||||
<string name="duration_short"><![CDATA[Short (<4 min)]]></string>
|
||||
<string name="duration_medium"><![CDATA[Medium (4–10 min)]]></string>
|
||||
<string name="duration_long"><![CDATA[Long (> 10 min)]]></string>
|
||||
<string name="display_all_categories">Display all categories</string>
|
||||
<string name="display_all_licenses">Display all licenses</string>
|
||||
<string name="display_all_languages">Display all languages</string>
|
||||
<string name="all_of_these_tags">All of these tags</string>
|
||||
<string name="one_of_these_tags">One of these tags</string>
|
||||
<string name="apply_filter">Apply filter</string>
|
||||
<string name="sepia_search">Sepia zoeken</string>
|
||||
<string name="sepia_element_nsfw">Gevoelige inhoud tonen</string>
|
||||
<string name="sepia_element_published_date">Gepubliceerde datum</string>
|
||||
<string name="any">Elke</string>
|
||||
<string name="today">Vandaag</string>
|
||||
<string name="last_7_days">Laatste 7 dagen</string>
|
||||
<string name="last_30_days">Laatste 30 dagen</string>
|
||||
<string name="last_365_days">Laatste 365 dagen</string>
|
||||
<string name="sepia_element_duration">Duur</string>
|
||||
<string name="duration_short"><![CDATA[Kort (<4 min)]]></string>
|
||||
<string name="duration_medium"><![CDATA[Medium (4-10 min.)]]></string>
|
||||
<string name="duration_long"><![CDATA[Lang (> 10 min.)]]></string>
|
||||
<string name="display_all_categories">Alle categorieën weergeven</string>
|
||||
<string name="display_all_licenses">Alle licenties weergeven</string>
|
||||
<string name="display_all_languages">Alle talen weergeven</string>
|
||||
<string name="all_of_these_tags">Al deze tags</string>
|
||||
<string name="one_of_these_tags">Een van deze tags</string>
|
||||
<string name="apply_filter">Filter toepassen</string>
|
||||
<string-array name="sort_by_array">
|
||||
<item>Best match</item>
|
||||
<item>Most recent</item>
|
||||
<item>Least recent</item>
|
||||
<item>Beste wedstrijd</item>
|
||||
<item>Meest recente</item>
|
||||
<item>Minst recent</item>
|
||||
</string-array>
|
||||
<string name="sort_by">Sort by</string>
|
||||
<string name="sepia_search_hint">Keyword, channel, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search displays videos and channels that match your search but is not the publisher, nor the owner. If you notice any problems with a video, report it to the administrators on the PeerTube website where the video is published.</string>
|
||||
<string name="sort_by">Sorteer op</string>
|
||||
<string name="sepia_search_hint">Trefwoord, kanaal, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search geeft video\'s en kanalen weer die overeenkomen met uw zoekopdracht, maar is niet de uitgever, noch de eigenaar. Als je problemen met een video opmerkt, rapporteer deze dan aan de beheerders op de PeerTube website waar de video wordt gepubliceerd.</string>
|
||||
<string name="my_videos">Mijn video\'s</string>
|
||||
<string name="title">Titel</string>
|
||||
<string name="license">Licentie</string>
|
||||
@ -132,17 +141,19 @@
|
||||
<string name="change_instance">Kies een andere instantie</string>
|
||||
<string name="my_history">Geschiedenis</string>
|
||||
<string name="edit">Bewerk</string>
|
||||
<string name="video_settings">Video settings</string>
|
||||
<string name="video_settings">Video instellingen</string>
|
||||
<string name="app_interface">Interface</string>
|
||||
<string name="set_cache_mode">Cache</string>
|
||||
<string name="set_video_cache_description">Set the cache for videos (default 100Mb)</string>
|
||||
<string name="set_video_quality_description">Define a default quality for videos</string>
|
||||
<string name="set_quality_mode">Resolution for videos</string>
|
||||
<string name="video_cache_value">Video cache: %d Mb</string>
|
||||
<string name="set_video_cache_description">Stel de cache voor video\'s in (standaard 100Mb)</string>
|
||||
<string name="set_video_quality_description">Definieer een standaardkwaliteit voor video\'s</string>
|
||||
<string name="set_quality_mode">Resolutie voor video\'s</string>
|
||||
<string name="video_cache_value">Videocache: %d Mb</string>
|
||||
<string name="captions">Bijschriften</string>
|
||||
<string name="pickup_captions">Pick captions</string>
|
||||
<string name="none">Geen</string>
|
||||
<string name="set_video_mode_description">Maakt het mogelijk om van modus te veranderen voor het afspelen van video\'s (standaard, streaming of via een browser).</string>
|
||||
<string name="delete_account_comment">Account opmerkingen verwijderen</string>
|
||||
<string name="delete_account_comment_confirm">Weet u zeker dat u alle opmerkingen van dit account wilt verwijderen?</string>
|
||||
<string name="delete_video">Video verwijderen</string>
|
||||
<string name="delete_video_confirmation">Weet u zeker dat u deze video wilt verwijderen?</string>
|
||||
<string name="no_video_to_display">Geen video\'s te tonen!</string>
|
||||
@ -156,7 +167,8 @@
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> publiceerde een nieuwe video: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Uw video <b>%1$s</b> is op de zwarte lijst geplaatst]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Uw video <b>%1$s</b> is niet op de zwarte lijst gezet]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[Nieuw misbruikrapport voor video: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Voeg een publieke opmerking toe</string>
|
||||
<string name="send_comment">Stuur commentaar</string>
|
||||
<string name="all">Allemaal</string>
|
||||
@ -191,12 +203,17 @@
|
||||
<string-array name="settings_video_mode">
|
||||
<item>Webview</item>
|
||||
<item>Directe stroom</item>
|
||||
<item>Direct stream</item>
|
||||
<item>Rechtstreeks gegevensstroom</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>Licht</item>
|
||||
<item>Donker</item>
|
||||
<item>Automatisch</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
<item>Medium</item>
|
||||
<item>Low</item>
|
||||
<item>Hoog</item>
|
||||
<item>Gemiddeld</item>
|
||||
<item>Laag</item>
|
||||
</string-array>
|
||||
<string name="unfollow_confirm">Wilt u dit account ontvouwen?</string>
|
||||
<string name="title_video_peertube">Titel voor de video</string>
|
||||
@ -210,7 +227,7 @@
|
||||
<string name="bookmark_peertube_empty">Er zijn geen video\'s in uw favorieten!</string>
|
||||
<string name="delete_channel">Verwijder kanaal</string>
|
||||
<string name="action_channel_confirm_delete">Weet u zeker dat u dit kanaal permanent zult verwijderen?</string>
|
||||
<string name="modify_playlists">Video in playlists</string>
|
||||
<string name="modify_playlists">Video in afspeellijsten</string>
|
||||
<string name="no_muted">Geen gedempte rekeningen!</string>
|
||||
<string name="error_display_name_channel">U moet een naam en een weergavenaam voor dit kanaal definiëren!</string>
|
||||
<string name="action_channel_create">Creëer een kanaal</string>
|
||||
@ -219,7 +236,7 @@
|
||||
<string name="report_comment_size">Geef de redenen op</string>
|
||||
<string name="not_logged_in">U moet worden geauthenticeerd om tot deze actie over te gaan!</string>
|
||||
<string name="successful_report">De rekening is gemeld!</string>
|
||||
<string name="successful_report_comment">The comment has been reported!</string>
|
||||
<string name="successful_report_comment">Het commentaar is gemeld!</string>
|
||||
<string name="successful_video_report">De video is gemeld!</string>
|
||||
<string name="password_length_error">Het wachtwoord moet minimaal 6 karakters bevatten!</string>
|
||||
<string name="muted_done">De rekening is gedempt!</string>
|
||||
|
@ -1,74 +1,85 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="title_home">Strona główna</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="title_discover">Odkryj</string>
|
||||
<string name="add_public_reply">Dodaj publiczną odpowiedź</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="one">%d odpowiedź</item>
|
||||
<item quantity="few">%d odpowiedzi</item>
|
||||
<item quantity="many">%d odpowiedzi</item>
|
||||
<item quantity="other">%d odpowiedzi</item>
|
||||
</plurals>
|
||||
<string name="reply">Odpowiedz</string>
|
||||
<string name="set_theme">Motyw</string>
|
||||
<string name="set_theme_description">Zezwól na zmianę motywu aplikacji</string>
|
||||
<string name="federation_issue">The video cannot be federated!</string>
|
||||
<string name="title_home">Początek</string>
|
||||
<string name="title_local">Lokalne</string>
|
||||
<string name="title_discover">Odkrywaj</string>
|
||||
<string name="title_notifications">Powiadomienia</string>
|
||||
<string name="title_recently_added">Ostatnio dodany</string>
|
||||
<string name="title_trending">Trendowość</string>
|
||||
<string name="title_most_liked">Najbardziej lubiany</string>
|
||||
<string name="toast_error">Oops! Wystąpił błąd!</string>
|
||||
<string name="title_muted">Wyciszony</string>
|
||||
<string name="title_recently_added">Ostatnio dodane</string>
|
||||
<string name="title_trending">Popularne</string>
|
||||
<string name="title_most_liked">Najbardziej lubiane</string>
|
||||
<string name="toast_error">Ups! Wystąpił błąd!</string>
|
||||
<string name="title_muted">Wyciszone</string>
|
||||
<string name="title_channel">Kanały</string>
|
||||
<string name="do_not_list">Nie wymieniaj</string>
|
||||
<string name="blur">Rozmycie</string>
|
||||
<string name="display">Wyświetlacz</string>
|
||||
<string name="display">Wyświetl</string>
|
||||
<string name="no_opinion">Brak opinii</string>
|
||||
<string name="instance_choice">Wybierz instancję</string>
|
||||
<string name="not_valide_instance">Ten przypadek wydaje się być nieważny!</string>
|
||||
<string name="no_videos">Nie ma wideo!</string>
|
||||
<string name="no_notifications">No notifications!</string>
|
||||
<string name="not_valide_instance">Ta instancja nie wygląda na prawidłową!</string>
|
||||
<string name="no_videos">Brak filmów!</string>
|
||||
<string name="no_notifications">Brak powiadomień!</string>
|
||||
<string name="favicon">Favicon</string>
|
||||
<string name="open_with">Otwarte z</string>
|
||||
<string name="action_playlist_edit">Edycja playlisty</string>
|
||||
<string name="open_with">Otwórz przez</string>
|
||||
<string name="action_playlist_edit">Edytuj listę odtwarzania</string>
|
||||
<string name="close">Zamknij</string>
|
||||
<string name="upload_video">Wczytaj</string>
|
||||
<string name="upload_video">Prześlij</string>
|
||||
<string name="image_preview">Podgląd obrazu</string>
|
||||
<string name="file_to_upload">Wybierz plik do przesłania</string>
|
||||
<string name="channel">Kanał</string>
|
||||
<string name="videos">Filmy wideo</string>
|
||||
<string name="videos">Filmy</string>
|
||||
<string name="channels">Kanały</string>
|
||||
<string name="yes">Tak</string>
|
||||
<string name="no">Nie</string>
|
||||
<string name="cancel">Anuluj</string>
|
||||
<string name="download">Pobierz</string>
|
||||
<string name="profile_picture">Zdjęcie profilowe</string>
|
||||
<string name="update_video">Aktualizacja wideo</string>
|
||||
<string name="remove_from_playlist">Remove from playlist</string>
|
||||
<string name="update_video">Aktualizuj film</string>
|
||||
<string name="remove_from_playlist">Usuń z listy odtwarzania</string>
|
||||
<string name="date_seconds">%d s</string>
|
||||
<string name="date_minutes">%d m</string>
|
||||
<string name="date_minutes">%d min</string>
|
||||
<string name="date_hours">%d h</string>
|
||||
<string name="date_day">%d d</string>
|
||||
<string name="number_view_video">%s widoki</string>
|
||||
<string name="date_day">%d dni</string>
|
||||
<string name="number_view_video">%s wyświetleń</string>
|
||||
<string name="title_instance_login">Host instancji</string>
|
||||
<string name="uploading">Przesyłanie, proszę czekać…</string>
|
||||
<string name="upload_video_success">Wideo zostało załadowane!</string>
|
||||
<string name="upload_video_success">Film został przesłany!</string>
|
||||
<string name="toast_cancelled">Przesyłanie anulowane!</string>
|
||||
<string name="video_uploaded_action">Stuknij tutaj, aby edytować dane wideo.</string>
|
||||
<string name="video_uploaded_action">Dotknij tutaj, aby edytować dane filmu.</string>
|
||||
<string name="toot_select_image_error">Podczas wyboru nośnika wystąpił błąd!</string>
|
||||
<string name="download_file">Pobierz %1$s</string>
|
||||
<string name="action_privacy">Prywatność</string>
|
||||
<string name="action_logout">Logout</string>
|
||||
<string name="login">Login</string>
|
||||
<string name="action_logout">Wyloguj</string>
|
||||
<string name="login">Zaloguj</string>
|
||||
<string name="password">Hasło</string>
|
||||
<string name="email">Email</string>
|
||||
<string name="tags">Tagi</string>
|
||||
<string name="validate">Walidacja</string>
|
||||
<string name="share_with">Dzielić się z</string>
|
||||
<string name="shared_via">Współdzielone przez TubeLab</string>
|
||||
<string name="email">E-mail</string>
|
||||
<string name="tags">Znaczniki</string>
|
||||
<string name="validate">Potwierdź</string>
|
||||
<string name="share_with">Udostępnij dla</string>
|
||||
<string name="shared_via">Udostępnione przez TubeLab</string>
|
||||
<string name="username">Nazwa użytkownika</string>
|
||||
<string name="settings">Ustawienia</string>
|
||||
<string name="logout_account_confirmation">Czy na pewno chcesz się wylogować @%1$s@%2$s?</string>
|
||||
<string name="logout_account_confirmation">Czy na pewno chcesz wylogować @%1$s@%2$s?</string>
|
||||
<string name="following">Obserwowane</string>
|
||||
<string name="followers">Naśladowcy</string>
|
||||
<string name="client_error">Nie można dostać identyfikatora klienta!</string>
|
||||
<string name="toast_error_loading_account">Podczas przełączania między kontami wystąpił błąd!</string>
|
||||
<string name="followers">Obserwujący</string>
|
||||
<string name="client_error">Błąd pobierania ID klienta!</string>
|
||||
<string name="toast_error_loading_account">Wystąpił błąd podczas przełączania konta!</string>
|
||||
<string name="toast_error_search">Podczas wyszukiwania wystąpił błąd!</string>
|
||||
<string name="nothing_to_do">Nie można podjąć żadnych działań</string>
|
||||
<string name="action_follow">Śledź</string>
|
||||
<string name="action_mute">Niemy</string>
|
||||
<string name="action_follow">Obserwuj</string>
|
||||
<string name="action_mute">Wycisz</string>
|
||||
<string name="search">Szukaj</string>
|
||||
<string name="delete">Skreślić</string>
|
||||
<string name="delete">Usuń</string>
|
||||
<string name="action_lists_confirm_delete">Czy na pewno chcesz na stałe usunąć tę listę?</string>
|
||||
<string name="action_lists_delete">Usuń listę</string>
|
||||
<string name="no_comments">Bądź pierwszym, który zostawi komentarz do tego filmu za pomocą prawego górnego przycisku!</string>
|
||||
@ -83,86 +94,89 @@
|
||||
<string name="delete_comment">Usuń komentarz</string>
|
||||
<string name="delete_comment_confirm">Czy na pewno usuniesz ten komentarz?</string>
|
||||
<string name="set_video_mode">Tryb dla filmów wideo</string>
|
||||
<string name="filter">Filter</string>
|
||||
<string name="sepia_search">Sepia search</string>
|
||||
<string name="sepia_element_nsfw">Display sensitive content</string>
|
||||
<string name="sepia_element_published_date">Published date</string>
|
||||
<string name="any">Any</string>
|
||||
<string name="today">Today</string>
|
||||
<string name="last_7_days">Last 7 days</string>
|
||||
<string name="last_30_days">Last 30 days</string>
|
||||
<string name="last_365_days">Last 365 days</string>
|
||||
<string name="sepia_element_duration">Duration</string>
|
||||
<string name="duration_short"><![CDATA[Short (<4 min)]]></string>
|
||||
<string name="filter">Filtruj</string>
|
||||
<string name="sepia_search">Wyszukiwanie Sepia</string>
|
||||
<string name="sepia_element_nsfw">Wyświetlaj wrażliwe treści</string>
|
||||
<string name="sepia_element_published_date">Data publikacji</string>
|
||||
<string name="any">Każde</string>
|
||||
<string name="today">Dzisiaj</string>
|
||||
<string name="last_7_days">Ostatnie 7 dni</string>
|
||||
<string name="last_30_days">Ostatnie 30 dni</string>
|
||||
<string name="last_365_days">Ostatnie 365 dni</string>
|
||||
<string name="sepia_element_duration">Czas trwania</string>
|
||||
<string name="duration_short"><![CDATA[Krótkie (<4 min)]]></string>
|
||||
<string name="duration_medium"><![CDATA[Medium (4–10 min)]]></string>
|
||||
<string name="duration_long"><![CDATA[Long (> 10 min)]]></string>
|
||||
<string name="display_all_categories">Display all categories</string>
|
||||
<string name="display_all_licenses">Display all licenses</string>
|
||||
<string name="display_all_languages">Display all languages</string>
|
||||
<string name="all_of_these_tags">All of these tags</string>
|
||||
<string name="one_of_these_tags">One of these tags</string>
|
||||
<string name="apply_filter">Apply filter</string>
|
||||
<string name="duration_long"><![CDATA[Długie (> 10 min)]]></string>
|
||||
<string name="display_all_categories">Wyświetl wszystkie kategorie</string>
|
||||
<string name="display_all_licenses">Wyświetl wszystkie licencje</string>
|
||||
<string name="display_all_languages">Wyświetl wszystkie języki</string>
|
||||
<string name="all_of_these_tags">Wszystkie z tych znaczników</string>
|
||||
<string name="one_of_these_tags">Jeden z tych znaczników</string>
|
||||
<string name="apply_filter">Zastosuj filtr</string>
|
||||
<string-array name="sort_by_array">
|
||||
<item>Best match</item>
|
||||
<item>Most recent</item>
|
||||
<item>Least recent</item>
|
||||
<item>Najlepsze dopasowanie</item>
|
||||
<item>Najnowsze</item>
|
||||
<item>Najstarsze</item>
|
||||
</string-array>
|
||||
<string name="sort_by">Sort by</string>
|
||||
<string name="sepia_search_hint">Keyword, channel, video, etc.</string>
|
||||
<string name="sort_by">Sortuj według</string>
|
||||
<string name="sepia_search_hint">Słowo kluczowe, kanał, film itp.</string>
|
||||
<string name="sepia_indication">Sepia Search displays videos and channels that match your search but is not the publisher, nor the owner. If you notice any problems with a video, report it to the administrators on the PeerTube website where the video is published.</string>
|
||||
<string name="my_videos">Moje filmy</string>
|
||||
<string name="title">Tytuł</string>
|
||||
<string name="license">Licencja</string>
|
||||
<string name="category">Kategoria</string>
|
||||
<string name="language">Język</string>
|
||||
<string name="peertube_nsfw">Ten film zawiera dojrzałą lub wyraźną treść</string>
|
||||
<string name="peertube_enable_comments">Włączanie komentarzy wideo</string>
|
||||
<string name="peertube_nsfw">Ten film zawiera treść dla dorosłych lub zawierającą przemoc</string>
|
||||
<string name="peertube_enable_comments">Zezwól na komentarze</string>
|
||||
<string name="description">Opis</string>
|
||||
<string name="toast_peertube_video_updated">Film został zaktualizowany!</string>
|
||||
<string name="register_account">Zarejestruj konto</string>
|
||||
<string name="register_account">Załóż konto</string>
|
||||
<string name="email_address">Adres e-mail</string>
|
||||
<string name="preview">Premiera</string>
|
||||
<string name="change_preview">Zmiana podglądu</string>
|
||||
<string name="preview">Podgląd</string>
|
||||
<string name="change_preview">Zmień podgląd</string>
|
||||
<string name="name">Nazwa</string>
|
||||
<string name="display_more">Wyświetlaj więcej</string>
|
||||
<string name="no_channels">Żadnych kanałów!</string>
|
||||
<string name="display_more">Pokaż więcej</string>
|
||||
<string name="no_channels">Brak kanałów!</string>
|
||||
<string name="report_helper">Kilka wyjaśnień na temat twojego raportu…</string>
|
||||
<string name="report_video">Wideo sprawozdawcze</string>
|
||||
<string name="report">Raport</string>
|
||||
<string name="change_instance">Wybierz inny przypadek</string>
|
||||
<string name="report_video">Zgłoś film</string>
|
||||
<string name="report">Zgłoś</string>
|
||||
<string name="change_instance">Wybierz inną instancję</string>
|
||||
<string name="my_history">Historia</string>
|
||||
<string name="edit">Edycja</string>
|
||||
<string name="video_settings">Video settings</string>
|
||||
<string name="app_interface">Interface</string>
|
||||
<string name="set_cache_mode">Cache</string>
|
||||
<string name="set_video_cache_description">Set the cache for videos (default 100Mb)</string>
|
||||
<string name="set_video_quality_description">Define a default quality for videos</string>
|
||||
<string name="set_quality_mode">Resolution for videos</string>
|
||||
<string name="video_cache_value">Video cache: %d Mb</string>
|
||||
<string name="captions">Podpisy</string>
|
||||
<string name="pickup_captions">Wybierz podpisy</string>
|
||||
<string name="edit">Edytuj</string>
|
||||
<string name="video_settings">Ustawienia filmu</string>
|
||||
<string name="app_interface">Interfejs</string>
|
||||
<string name="set_cache_mode">Pamięć podręczna</string>
|
||||
<string name="set_video_cache_description">Ustaw pamięć podręczną dla filmów (domyślnie 100Mb)</string>
|
||||
<string name="set_video_quality_description">Ustaw domyślną jakość filmów</string>
|
||||
<string name="set_quality_mode">Rozdzielczość filmów</string>
|
||||
<string name="video_cache_value">Pamięć podręczna: %d Mb</string>
|
||||
<string name="captions">Napisy</string>
|
||||
<string name="pickup_captions">Wybierz napisy</string>
|
||||
<string name="none">Brak</string>
|
||||
<string name="set_video_mode_description">Umożliwia zmianę trybu odtwarzania filmów (domyślnie, strumieniowo lub za pomocą przeglądarki).</string>
|
||||
<string name="delete_video">Usuń video</string>
|
||||
<string name="delete_video_confirmation">Czy na pewno usuniesz ten film?</string>
|
||||
<string name="delete_account_comment">Usuń komentarze użytkownika</string>
|
||||
<string name="delete_account_comment_confirm">Czy na pewno chcesz usunąć wszystkie komentarze tego użytkownika?</string>
|
||||
<string name="delete_video">Usuń film</string>
|
||||
<string name="delete_video_confirmation">Czy na pewno chcesz usunąć ten film?</string>
|
||||
<string name="no_video_to_display">Brak filmów do wyświetlenia!</string>
|
||||
<string name="share">Podziel się</string>
|
||||
<string name="peertube_comment_on_video"><![CDATA[<b>%1$s</b> skomentował twój film <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_channel"><![CDATA[<b>%1$s</b> podąża za twoim kanałem <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_account"><![CDATA[<b>%1$s</b> śledzi twoje konto]]></string>
|
||||
<string name="share">Udostępnij</string>
|
||||
<string name="peertube_comment_on_video"><![CDATA[<b>%1$s</b> dodaje komentarz do Twojego filmu <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_channel"><![CDATA[<b>%1$s</b> obserwuje Twój kanał <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_account"><![CDATA[<b>%1$s</b> obserwuje Twoje konto]]></string>
|
||||
<string name="peertube_video_published"><![CDATA[Twój film <b>%1$s</b> został opublikowany]]></string>
|
||||
<string name="peertube_video_import_success"><![CDATA[Twój import wideo <b>%1$s</b> udał się]]></string>
|
||||
<string name="peertube_video_import_error"><![CDATA[Twój import wideo <b>%1$s</b> nie powiódł się]]></string>
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> opublikował nowe wideo: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> publikuje nowy film: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Twój film <b>%1$s</b> został umieszczony na czarnej liście]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Twój film <b>%1$s</b> został usunięty z czarnej listy]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Dodaj komentarz publiczny</string>
|
||||
<string name="send_comment">Wyślij komentarz</string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[Nowe zgłoszenie nadużycia dla filmu: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Dodaj publiczny komentarz</string>
|
||||
<string name="send_comment">Prześlij komentarz</string>
|
||||
<string name="all">Wszystkie</string>
|
||||
<!-- end languages -->
|
||||
<string name="playlists">Playlisty</string>
|
||||
<string name="display_name">Nazwa wyświetlacza</string>
|
||||
<string name="playlists">Listy odtwarzania</string>
|
||||
<string name="display_name">Wyświetlana nazwa</string>
|
||||
<string name="action_playlist_add">Nie masz żadnej playlisty. Stuknij ikonę \"+\", aby dodać nową listę odtwarzania</string>
|
||||
<string name="error_display_name">Musisz podać nazwę wyświetlacza!</string>
|
||||
<string name="error_channel_mandatory">Kanał jest wymagany, gdy lista odtwarzania jest publiczna.</string>
|
||||
@ -187,19 +201,24 @@
|
||||
<b>Ważny</b>Jeśli Twoja instancja wymaga weryfikacji, otrzymasz e-mail, gdy zostanie potwierdzony!
|
||||
</string>
|
||||
<string name="account">Konto</string>
|
||||
<string name="report_account">Rachunek sprawozdawczy</string>
|
||||
<string name="report_account">Zgłoś konto</string>
|
||||
<string-array name="settings_video_mode">
|
||||
<item>Webview</item>
|
||||
<item>Strumień bezpośredni</item>
|
||||
<item>Direct stream</item>
|
||||
<item>Webview</item>
|
||||
<item>Bezpośrednio</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>Jasny</item>
|
||||
<item>Ciemny</item>
|
||||
<item>Automatyczny</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
<item>Medium</item>
|
||||
<item>Low</item>
|
||||
<item>Wysoka</item>
|
||||
<item>Średnia</item>
|
||||
<item>Niska</item>
|
||||
</string-array>
|
||||
<string name="unfollow_confirm">Chcesz rozwinąć to konto?</string>
|
||||
<string name="title_video_peertube">Tytuł filmu wideo</string>
|
||||
<string name="unfollow_confirm">Czy chcesz przestać obserwować to konto?</string>
|
||||
<string name="title_video_peertube">Tytuł filmu</string>
|
||||
<string name="join_peertube">Dołącz do Peertube</string>
|
||||
<string name="agreement_check_peertube">Mam co najmniej 16 lat i zgadzam się na %1$s w tym przypadku</string>
|
||||
<string name="edit_profile">Profil edycyjny</string>
|
||||
@ -210,7 +229,7 @@
|
||||
<string name="bookmark_peertube_empty">Nie ma żadnych filmów w twoich ulubionych!</string>
|
||||
<string name="delete_channel">Usuń kanał</string>
|
||||
<string name="action_channel_confirm_delete">Czy na pewno na stałe usuniesz ten kanał?</string>
|
||||
<string name="modify_playlists">Video in playlists</string>
|
||||
<string name="modify_playlists">Filmy w liście odtwarzania</string>
|
||||
<string name="no_muted">Nie ma wyciszonych kont!</string>
|
||||
<string name="error_display_name_channel">Musisz zdefiniować nazwę i nazwę wyświetlania dla tego kanału!</string>
|
||||
<string name="action_channel_create">Stwórz kanał</string>
|
||||
@ -219,7 +238,7 @@
|
||||
<string name="report_comment_size">Proszę podać przyczyny</string>
|
||||
<string name="not_logged_in">Musisz być uwierzytelniony, aby przystąpić do tej akcji!</string>
|
||||
<string name="successful_report">Rachunek został zgłoszony!</string>
|
||||
<string name="successful_report_comment">The comment has been reported!</string>
|
||||
<string name="successful_report_comment">Komentarz został zgłoszony!</string>
|
||||
<string name="successful_video_report">Film został zgłoszony!</string>
|
||||
<string name="password_length_error">Hasło musi zawierać co najmniej 6 znaków!</string>
|
||||
<string name="muted_done">Rachunek został wyciszony!</string>
|
||||
|
@ -1,15 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="title_home">Home</string>
|
||||
<string name="add_public_reply">Add a public reply</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="one">%d resposta</item>
|
||||
<item quantity="other">%d respostas</item>
|
||||
</plurals>
|
||||
<string name="reply">Responder</string>
|
||||
<string name="set_theme">Tema</string>
|
||||
<string name="set_theme_description">Allow to change app theme</string>
|
||||
<string name="federation_issue">The video cannot be federated!</string>
|
||||
<string name="title_home">Página inicial</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="title_discover">Discover</string>
|
||||
<string name="title_notifications">Notifications</string>
|
||||
<string name="title_recently_added">Recently added</string>
|
||||
<string name="title_trending">Trending</string>
|
||||
<string name="title_notifications">Notificações</string>
|
||||
<string name="title_recently_added">Recentemente adicionado</string>
|
||||
<string name="title_trending">Destaques</string>
|
||||
<string name="title_most_liked">Most liked</string>
|
||||
<string name="toast_error">Oops! An error occurred!</string>
|
||||
<string name="title_muted">Muted</string>
|
||||
<string name="title_channel">Channels</string>
|
||||
<string name="title_channel">Canais</string>
|
||||
<string name="do_not_list">Do not list</string>
|
||||
<string name="blur">Blur</string>
|
||||
<string name="display">Display</string>
|
||||
@ -19,71 +28,71 @@
|
||||
<string name="no_videos">No videos!</string>
|
||||
<string name="no_notifications">No notifications!</string>
|
||||
<string name="favicon">Favicon</string>
|
||||
<string name="open_with">Open with</string>
|
||||
<string name="open_with">Abrir com</string>
|
||||
<string name="action_playlist_edit">Edit a playlist</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="upload_video">Upload</string>
|
||||
<string name="close">Fechar</string>
|
||||
<string name="upload_video">Enviar</string>
|
||||
<string name="image_preview">Image preview</string>
|
||||
<string name="file_to_upload">Select the file to upload</string>
|
||||
<string name="channel">Channel</string>
|
||||
<string name="videos">Videos</string>
|
||||
<string name="channels">Channels</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="download">Download</string>
|
||||
<string name="profile_picture">Profile picture</string>
|
||||
<string name="update_video">Update video</string>
|
||||
<string name="file_to_upload">Selecione o ficheiro a enviar</string>
|
||||
<string name="channel">Canal</string>
|
||||
<string name="videos">Vídeos</string>
|
||||
<string name="channels">Canais</string>
|
||||
<string name="yes">Sim</string>
|
||||
<string name="no">Não</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="download">Baixar</string>
|
||||
<string name="profile_picture">Foto do perfil</string>
|
||||
<string name="update_video">Atualizar vídeo</string>
|
||||
<string name="remove_from_playlist">Remove from playlist</string>
|
||||
<string name="date_seconds">%d s</string>
|
||||
<string name="date_minutes">%d m</string>
|
||||
<string name="date_hours">%d h</string>
|
||||
<string name="date_day">%d d</string>
|
||||
<string name="number_view_video">%s views</string>
|
||||
<string name="number_view_video">%s visualizações</string>
|
||||
<string name="title_instance_login">Instance host</string>
|
||||
<string name="uploading">Uploading, please wait…</string>
|
||||
<string name="upload_video_success">The video has been uploaded!</string>
|
||||
<string name="toast_cancelled">Upload cancelled!</string>
|
||||
<string name="uploading">Enviando, por favor aguarde…</string>
|
||||
<string name="upload_video_success">O vídeo foi enviado!</string>
|
||||
<string name="toast_cancelled">Envio cancelado!</string>
|
||||
<string name="video_uploaded_action">Tap here to edit the video data.</string>
|
||||
<string name="toot_select_image_error">An error occurred while selecting the media!</string>
|
||||
<string name="download_file">Download %1$s</string>
|
||||
<string name="action_privacy">Privacy</string>
|
||||
<string name="action_logout">Logout</string>
|
||||
<string name="login">Login</string>
|
||||
<string name="password">Password</string>
|
||||
<string name="email">Email</string>
|
||||
<string name="toot_select_image_error">Ocorreu um erro ao selecionar a mídia!</string>
|
||||
<string name="download_file">Baixar %1$s</string>
|
||||
<string name="action_privacy">Privacidade</string>
|
||||
<string name="action_logout">Sair</string>
|
||||
<string name="login">Entrar</string>
|
||||
<string name="password">Senha</string>
|
||||
<string name="email">E-mail</string>
|
||||
<string name="tags">Tags</string>
|
||||
<string name="validate">Validate</string>
|
||||
<string name="share_with">Share with</string>
|
||||
<string name="validate">Ok</string>
|
||||
<string name="share_with">Compartilhar com</string>
|
||||
<string name="shared_via">Shared via TubeLab</string>
|
||||
<string name="username">User name</string>
|
||||
<string name="settings">Settings</string>
|
||||
<string name="username">Nome de usuário</string>
|
||||
<string name="settings">Configurações</string>
|
||||
<string name="logout_account_confirmation">Are you sure you want to logout @%1$s@%2$s?</string>
|
||||
<string name="following">Following</string>
|
||||
<string name="followers">Followers</string>
|
||||
<string name="client_error">Unable to get client id!</string>
|
||||
<string name="toast_error_loading_account">An error occurred while switching between accounts!</string>
|
||||
<string name="toast_error_search">An error occurred while searching!</string>
|
||||
<string name="nothing_to_do">No action can be taken</string>
|
||||
<string name="action_follow">Follow</string>
|
||||
<string name="action_mute">Mute</string>
|
||||
<string name="search">Search</string>
|
||||
<string name="delete">Delete</string>
|
||||
<string name="action_lists_confirm_delete">Are you sure you want to permanently delete this list?</string>
|
||||
<string name="action_lists_delete">Delete list</string>
|
||||
<string name="no_comments">Be the first to leave a comment on this video with the top right button!</string>
|
||||
<string name="comment_no_allowed_peertube">Comments are not enabled on this video!</string>
|
||||
<string name="pickup_resolution">Pick up a resolution</string>
|
||||
<string name="bookmark_add_peertube">The video has been added to bookmarks!</string>
|
||||
<string name="bookmark_remove_peertube">The video has been removed from bookmarks!</string>
|
||||
<string name="information" tools:ignore="UnusedResources">Information</string>
|
||||
<string name="app_logo">Logo of the application</string>
|
||||
<string name="following">Seguindo</string>
|
||||
<string name="followers">Seguidores</string>
|
||||
<string name="client_error">Não foi possível detectar id do cliente!</string>
|
||||
<string name="toast_error_loading_account">Ocorreu um erro ao alternar entre as contas!</string>
|
||||
<string name="toast_error_search">Ocorreu um erro na pesquisa!</string>
|
||||
<string name="nothing_to_do">A ação não pode ser feita ou não é suportada</string>
|
||||
<string name="action_follow">Seguir</string>
|
||||
<string name="action_mute">Silenciar</string>
|
||||
<string name="search">Pesquisa</string>
|
||||
<string name="delete">Remover</string>
|
||||
<string name="action_lists_confirm_delete">Tem certeza de que deseja excluir permanentemente esta lista?</string>
|
||||
<string name="action_lists_delete">Excluir lista</string>
|
||||
<string name="no_comments">Seja o primeiro a comentar o vídeo tocando no botão superior direito!</string>
|
||||
<string name="comment_no_allowed_peertube">Os comentários deste vídeo foram desativados!</string>
|
||||
<string name="pickup_resolution">Selecione uma resolução</string>
|
||||
<string name="bookmark_add_peertube">Vídeo favoritado!</string>
|
||||
<string name="bookmark_remove_peertube">Vídeo desfavoritado!</string>
|
||||
<string name="information" tools:ignore="UnusedResources">Informação</string>
|
||||
<string name="app_logo">Logótipo do aplicativo</string>
|
||||
<!-- languages not translated -->
|
||||
<string name="subscriptions">Subscriptions</string>
|
||||
<string name="delete_comment">Delete a comment</string>
|
||||
<string name="delete_comment_confirm">Are you sure to delete this comment?</string>
|
||||
<string name="set_video_mode">Mode for videos</string>
|
||||
<string name="filter">Filter</string>
|
||||
<string name="subscriptions">Inscrições</string>
|
||||
<string name="delete_comment">Excluir comentário</string>
|
||||
<string name="delete_comment_confirm">Tem certeza de que deseja excluir este comentário?</string>
|
||||
<string name="set_video_mode">Modo para vídeos</string>
|
||||
<string name="filter">Filtro</string>
|
||||
<string name="sepia_search">Sepia search</string>
|
||||
<string name="sepia_element_nsfw">Display sensitive content</string>
|
||||
<string name="sepia_element_published_date">Published date</string>
|
||||
@ -110,28 +119,28 @@
|
||||
<string name="sort_by">Sort by</string>
|
||||
<string name="sepia_search_hint">Keyword, channel, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search displays videos and channels that match your search but is not the publisher, nor the owner. If you notice any problems with a video, report it to the administrators on the PeerTube website where the video is published.</string>
|
||||
<string name="my_videos">My videos</string>
|
||||
<string name="title">Title</string>
|
||||
<string name="license">License</string>
|
||||
<string name="category">Category</string>
|
||||
<string name="language">Language</string>
|
||||
<string name="peertube_nsfw">This video contains mature or explicit content</string>
|
||||
<string name="peertube_enable_comments">Enable video comments</string>
|
||||
<string name="description">Description</string>
|
||||
<string name="toast_peertube_video_updated">The video has been updated!</string>
|
||||
<string name="my_videos">Meus vídeos</string>
|
||||
<string name="title">Título</string>
|
||||
<string name="license">Licença</string>
|
||||
<string name="category">Categoria</string>
|
||||
<string name="language">Idioma</string>
|
||||
<string name="peertube_nsfw">Este vídeo possui conteúdo adulto ou explícito</string>
|
||||
<string name="peertube_enable_comments">Ativar comentários do vídeo</string>
|
||||
<string name="description">Descrição</string>
|
||||
<string name="toast_peertube_video_updated">O vídeo foi atualizado!</string>
|
||||
<string name="register_account">Register an account</string>
|
||||
<string name="email_address">Email address</string>
|
||||
<string name="preview">Preview</string>
|
||||
<string name="change_preview">Change preview</string>
|
||||
<string name="name">Name</string>
|
||||
<string name="display_more">Display more</string>
|
||||
<string name="display_more">Mostrar mais</string>
|
||||
<string name="no_channels">No channels!</string>
|
||||
<string name="report_helper">Some explanations about your report…</string>
|
||||
<string name="report_video">Report video</string>
|
||||
<string name="report">Report</string>
|
||||
<string name="report">Denunciar</string>
|
||||
<string name="change_instance">Pick another instance</string>
|
||||
<string name="my_history">History</string>
|
||||
<string name="edit">Edit</string>
|
||||
<string name="my_history">Histórico</string>
|
||||
<string name="edit">Editar</string>
|
||||
<string name="video_settings">Video settings</string>
|
||||
<string name="app_interface">Interface</string>
|
||||
<string name="set_cache_mode">Cache</string>
|
||||
@ -143,55 +152,63 @@
|
||||
<string name="pickup_captions">Pick captions</string>
|
||||
<string name="none">None</string>
|
||||
<string name="set_video_mode_description">Allows to change mode for playing videos (default, streaming or via a browser).</string>
|
||||
<string name="delete_video">Delete video</string>
|
||||
<string name="delete_video_confirmation">Are you sure to delete this video?</string>
|
||||
<string name="no_video_to_display">No videos to display!</string>
|
||||
<string name="share">Share</string>
|
||||
<string name="peertube_comment_on_video"><![CDATA[<b>%1$s</b> commented your video <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_channel"><![CDATA[<b>%1$s</b> is following your channel <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_account"><![CDATA[<b>%1$s</b> is following your account]]></string>
|
||||
<string name="peertube_video_published"><![CDATA[Your video <b>%1$s</b> has been published]]></string>
|
||||
<string name="peertube_video_import_success"><![CDATA[Your video import <b>%1$s</b> succeeded]]></string>
|
||||
<string name="peertube_video_import_error"><![CDATA[Your video import <b>%1$s</b> failed]]></string>
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> published a new video: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Your video <b>%1$s</b> has been blacklisted]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Your video <b>%1$s</b> has been unblacklisted]]></string>
|
||||
<string name="delete_account_comment">Delete account comments</string>
|
||||
<string name="delete_account_comment_confirm">Are you sure you want to remove all the comments of this account?</string>
|
||||
<string name="delete_video">Excluir vídeo</string>
|
||||
<string name="delete_video_confirmation">Tem certeza de que deseja excluir este vídeo?</string>
|
||||
<string name="no_video_to_display">Sem vídeos!</string>
|
||||
<string name="share">Compartilhar</string>
|
||||
<string name="peertube_comment_on_video"><![CDATA[<b>%1$s</b> comentou seu vídeo <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_channel"><![CDATA[<b>%1$s</b> está seguindo seu canal <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_account"><![CDATA[<b>%1$s</b> está seguindo sua conta]]></string>
|
||||
<string name="peertube_video_published"><![CDATA[Seu vídeo <b>%1$s</b> foi publicado]]></string>
|
||||
<string name="peertube_video_import_success"><![CDATA[Seu vídeo <b>%1$s</b> foi importado com sucesso]]></string>
|
||||
<string name="peertube_video_import_error"><![CDATA[Falha ao importar seu vídeo <b>%1$s</b>]]></string>
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> publicou um novo vídeo: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Seu vídeo <b>%1$s</b> foi bloqueado]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Seu vídeo <b>%1$s</b> foi desbloqueado]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Add a public comment</string>
|
||||
<string name="send_comment">Send comment</string>
|
||||
<string name="all">All</string>
|
||||
<string name="add_public_comment">Adicionar um comentário público</string>
|
||||
<string name="send_comment">Enviar comentário</string>
|
||||
<string name="all">Tudo</string>
|
||||
<!-- end languages -->
|
||||
<string name="playlists">Playlists</string>
|
||||
<string name="display_name">Display name</string>
|
||||
<string name="playlists">Listas de reprodução</string>
|
||||
<string name="display_name">Nome de exibição</string>
|
||||
<string name="action_playlist_add">You don\'t have any playlists. Tap on the \"+\" icon to add a new playlist</string>
|
||||
<string name="error_display_name">You must provide a display name!</string>
|
||||
<string name="error_channel_mandatory">The channel is required when the playlist is public.</string>
|
||||
<string name="action_playlist_create">Create a playlist</string>
|
||||
<string name="action_playlist_empty_content">There is nothing in this playlist yet.</string>
|
||||
<string name="password_confirm">Confirm password</string>
|
||||
<string name="agreement_check">I agree to %1$s and %2$s</string>
|
||||
<string name="server_rules">server rules</string>
|
||||
<string name="tos">terms of service</string>
|
||||
<string name="sign_up">Sign up</string>
|
||||
<string name="all_field_filled">Please, fill all the fields!</string>
|
||||
<string name="password_error">Passwords don\'t match!</string>
|
||||
<string name="email_error">The email doesn\'t seem to be valid!</string>
|
||||
<string name="email_indicator">You will be sent a confirmation e-mail</string>
|
||||
<string name="password_indicator">Use at least 8 characters</string>
|
||||
<string name="password_too_short">Password should contain at least 8 characters</string>
|
||||
<string name="username_error">Username should only contain letters, numbers and underscores</string>
|
||||
<string name="account_created">Account created!</string>
|
||||
<string name="error_display_name">Você deve inserir um nome de exibição!</string>
|
||||
<string name="error_channel_mandatory">O canal é necessário quando a lista é pública.</string>
|
||||
<string name="action_playlist_create">Criar uma lista</string>
|
||||
<string name="action_playlist_empty_content">Lista vazia.</string>
|
||||
<string name="password_confirm">Confirmar senha</string>
|
||||
<string name="agreement_check">Eu concordo com %1$s e %2$s</string>
|
||||
<string name="server_rules">regras da instância</string>
|
||||
<string name="tos">termos de serviço</string>
|
||||
<string name="sign_up">Criar conta</string>
|
||||
<string name="all_field_filled">Por favor, preencha tudo!</string>
|
||||
<string name="password_error">Senhas não combinam!</string>
|
||||
<string name="email_error">E-mail não parece válido!</string>
|
||||
<string name="email_indicator">Você receberá um e-mail de confirmação</string>
|
||||
<string name="password_indicator">Usar no mínimo 8 caracteres</string>
|
||||
<string name="password_too_short">Senha deve conter no mínimo 8 caracteres</string>
|
||||
<string name="username_error">Nome de usuário deve conter somente letras, números e underlines</string>
|
||||
<string name="account_created">Conta criada!</string>
|
||||
<string name="account_created_message"> Your account has been created!\n\n
|
||||
Think to validate your email within the 48 next hours.\n\n
|
||||
You can now connect your account by writing <b>%1$s</b> in the first field and tap on <b>Connect</b>.\n\n
|
||||
<b>Important</b>: If your instance required validation, you will receive an email once it is validated!
|
||||
</string>
|
||||
<string name="account">Account</string>
|
||||
<string name="account">Conta</string>
|
||||
<string name="report_account">Report account</string>
|
||||
<string-array name="settings_video_mode">
|
||||
<item>Normal</item>
|
||||
<item>Webview</item>
|
||||
<item>Direct stream</item>
|
||||
<item>Transmissão direta</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>Diurno</item>
|
||||
<item>Noturno</item>
|
||||
<item>Automatic</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
@ -202,9 +219,9 @@
|
||||
<string name="title_video_peertube">Title for the video</string>
|
||||
<string name="join_peertube">Join Peertube</string>
|
||||
<string name="agreement_check_peertube">I am at least 16 years old and agree to the %1$s of this instance</string>
|
||||
<string name="edit_profile">Edit profile</string>
|
||||
<string name="edit_profile">Editar perfil</string>
|
||||
<string name="make_an_action">Make an action</string>
|
||||
<string name="action_unfollow">Unfollow</string>
|
||||
<string name="action_unfollow">Deixar de seguir</string>
|
||||
<string name="display_nsfw_videos">Display sensitive videos</string>
|
||||
<string name="fullscreen">Fullscreen</string>
|
||||
<string name="bookmark_peertube_empty">There are no videos in your favourites!</string>
|
||||
@ -226,23 +243,23 @@
|
||||
<string name="edit_video">Edit video</string>
|
||||
<string name="create_an_account">Create an account</string>
|
||||
<string name="followers_count">%1$s Subscribers</string>
|
||||
<string name="developer">Developer</string>
|
||||
<string name="about_vesrion">Release %1$s</string>
|
||||
<string name="about_the_app">About the app</string>
|
||||
<string name="Donate">Donate</string>
|
||||
<string name="source_code">Source code</string>
|
||||
<string name="issue_tracker">Issue tracker</string>
|
||||
<string name="developer">Programador</string>
|
||||
<string name="about_vesrion">Versão %1$s</string>
|
||||
<string name="about_the_app">Sobre a aplicação</string>
|
||||
<string name="Donate">Doar</string>
|
||||
<string name="source_code">Código-fonte</string>
|
||||
<string name="issue_tracker">Erros e problemas</string>
|
||||
<string name="action_instance_empty_content">No instances match these criteria</string>
|
||||
<string name="instances_picker">Instances picker</string>
|
||||
<string name="pickup_instance">Pick this instance</string>
|
||||
<string name="sensitive_video"> Sensitive videos</string>
|
||||
<string name="sensitive_content">Sensitive content: %1$s</string>
|
||||
<string name="followers_instance">%1$s instance followers</string>
|
||||
<string name="help">Help</string>
|
||||
<string name="help">Ajuda</string>
|
||||
<string name="pickup_categories">Pick categories</string>
|
||||
<string name="pickup_languages">Pick languages</string>
|
||||
<string name="notification_channel_name">Update information</string>
|
||||
<string name="add_account">Add an account</string>
|
||||
<string name="add_account">Adicionar conta</string>
|
||||
<string name="list_of_accounts">List of accounts</string>
|
||||
<string name="pause">Pause</string>
|
||||
<string name="play">Play</string>
|
||||
|
@ -1,9 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="title_home">Home</string>
|
||||
<string name="add_public_reply">Add a public reply</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="one">%d răspuns</item>
|
||||
<item quantity="few">%d răspunsuri</item>
|
||||
<item quantity="other">%d răspunsuri</item>
|
||||
</plurals>
|
||||
<string name="reply">Reply</string>
|
||||
<string name="set_theme">Theme</string>
|
||||
<string name="set_theme_description">Allow to change app theme</string>
|
||||
<string name="federation_issue">The video cannot be federated!</string>
|
||||
<string name="title_home">Prima pagină</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="title_discover">Discover</string>
|
||||
<string name="title_notifications">Notifications</string>
|
||||
<string name="title_notifications">Notificări</string>
|
||||
<string name="title_recently_added">Recently added</string>
|
||||
<string name="title_trending">Trending</string>
|
||||
<string name="title_most_liked">Most liked</string>
|
||||
@ -19,19 +29,19 @@
|
||||
<string name="no_videos">No videos!</string>
|
||||
<string name="no_notifications">No notifications!</string>
|
||||
<string name="favicon">Favicon</string>
|
||||
<string name="open_with">Open with</string>
|
||||
<string name="open_with">Deschide cu</string>
|
||||
<string name="action_playlist_edit">Edit a playlist</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="close">Închide</string>
|
||||
<string name="upload_video">Upload</string>
|
||||
<string name="image_preview">Image preview</string>
|
||||
<string name="file_to_upload">Select the file to upload</string>
|
||||
<string name="channel">Channel</string>
|
||||
<string name="videos">Videos</string>
|
||||
<string name="channels">Channels</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="download">Download</string>
|
||||
<string name="yes">Da</string>
|
||||
<string name="no">Nu</string>
|
||||
<string name="cancel">Anulare</string>
|
||||
<string name="download">Descărcați</string>
|
||||
<string name="profile_picture">Profile picture</string>
|
||||
<string name="update_video">Update video</string>
|
||||
<string name="remove_from_playlist">Remove from playlist</string>
|
||||
@ -45,30 +55,30 @@
|
||||
<string name="upload_video_success">The video has been uploaded!</string>
|
||||
<string name="toast_cancelled">Upload cancelled!</string>
|
||||
<string name="video_uploaded_action">Tap here to edit the video data.</string>
|
||||
<string name="toot_select_image_error">An error occurred while selecting the media!</string>
|
||||
<string name="download_file">Download %1$s</string>
|
||||
<string name="action_privacy">Privacy</string>
|
||||
<string name="action_logout">Logout</string>
|
||||
<string name="login">Login</string>
|
||||
<string name="password">Password</string>
|
||||
<string name="toot_select_image_error">A aparut o eroare în timp ce selectați media!</string>
|
||||
<string name="download_file">Descărcat %1$s</string>
|
||||
<string name="action_privacy">Confidențialitate</string>
|
||||
<string name="action_logout">Deconectare</string>
|
||||
<string name="login">Autentificare</string>
|
||||
<string name="password">Parolă</string>
|
||||
<string name="email">Email</string>
|
||||
<string name="tags">Tags</string>
|
||||
<string name="validate">Validate</string>
|
||||
<string name="share_with">Share with</string>
|
||||
<string name="tags">Etichete</string>
|
||||
<string name="validate">Validează</string>
|
||||
<string name="share_with">Distribuie cu</string>
|
||||
<string name="shared_via">Shared via TubeLab</string>
|
||||
<string name="username">User name</string>
|
||||
<string name="settings">Settings</string>
|
||||
<string name="username">Utilizator</string>
|
||||
<string name="settings">Setări</string>
|
||||
<string name="logout_account_confirmation">Are you sure you want to logout @%1$s@%2$s?</string>
|
||||
<string name="following">Following</string>
|
||||
<string name="followers">Followers</string>
|
||||
<string name="client_error">Unable to get client id!</string>
|
||||
<string name="toast_error_loading_account">An error occurred while switching between accounts!</string>
|
||||
<string name="toast_error_search">An error occurred while searching!</string>
|
||||
<string name="nothing_to_do">No action can be taken</string>
|
||||
<string name="action_follow">Follow</string>
|
||||
<string name="action_mute">Mute</string>
|
||||
<string name="search">Search</string>
|
||||
<string name="delete">Delete</string>
|
||||
<string name="following">Urmăriți</string>
|
||||
<string name="followers">Cei care vă urmăresc</string>
|
||||
<string name="client_error">Imposibil de obținut Id-ul clientului!</string>
|
||||
<string name="toast_error_loading_account">A apărut o eroare în timp ce schimbați între conturi!</string>
|
||||
<string name="toast_error_search">S-a produs o eroare în timpul căutării!</string>
|
||||
<string name="nothing_to_do">Nu se poate efectua nici o acțiune</string>
|
||||
<string name="action_follow">Urmărește</string>
|
||||
<string name="action_mute">Mod silențios</string>
|
||||
<string name="search">Căutare</string>
|
||||
<string name="delete">Șterge</string>
|
||||
<string name="action_lists_confirm_delete">Are you sure you want to permanently delete this list?</string>
|
||||
<string name="action_lists_delete">Delete list</string>
|
||||
<string name="no_comments">Be the first to leave a comment on this video with the top right button!</string>
|
||||
@ -128,13 +138,13 @@
|
||||
<string name="no_channels">No channels!</string>
|
||||
<string name="report_helper">Some explanations about your report…</string>
|
||||
<string name="report_video">Report video</string>
|
||||
<string name="report">Report</string>
|
||||
<string name="report">Raportează</string>
|
||||
<string name="change_instance">Pick another instance</string>
|
||||
<string name="my_history">History</string>
|
||||
<string name="edit">Edit</string>
|
||||
<string name="video_settings">Video settings</string>
|
||||
<string name="app_interface">Interface</string>
|
||||
<string name="set_cache_mode">Cache</string>
|
||||
<string name="set_cache_mode">Memorie cache</string>
|
||||
<string name="set_video_cache_description">Set the cache for videos (default 100Mb)</string>
|
||||
<string name="set_video_quality_description">Define a default quality for videos</string>
|
||||
<string name="set_quality_mode">Resolution for videos</string>
|
||||
@ -143,10 +153,12 @@
|
||||
<string name="pickup_captions">Pick captions</string>
|
||||
<string name="none">None</string>
|
||||
<string name="set_video_mode_description">Allows to change mode for playing videos (default, streaming or via a browser).</string>
|
||||
<string name="delete_account_comment">Delete account comments</string>
|
||||
<string name="delete_account_comment_confirm">Are you sure you want to remove all the comments of this account?</string>
|
||||
<string name="delete_video">Delete video</string>
|
||||
<string name="delete_video_confirmation">Are you sure to delete this video?</string>
|
||||
<string name="no_video_to_display">No videos to display!</string>
|
||||
<string name="share">Share</string>
|
||||
<string name="share">Distribuie</string>
|
||||
<string name="peertube_comment_on_video"><![CDATA[<b>%1$s</b> commented your video <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_channel"><![CDATA[<b>%1$s</b> is following your channel <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_account"><![CDATA[<b>%1$s</b> is following your account]]></string>
|
||||
@ -156,6 +168,7 @@
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> published a new video: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Your video <b>%1$s</b> has been blacklisted]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Your video <b>%1$s</b> has been unblacklisted]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Add a public comment</string>
|
||||
<string name="send_comment">Send comment</string>
|
||||
@ -193,6 +206,11 @@
|
||||
<item>Webview</item>
|
||||
<item>Direct stream</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>Light</item>
|
||||
<item>Dark</item>
|
||||
<item>Automatic</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
<item>Medium</item>
|
||||
@ -202,9 +220,9 @@
|
||||
<string name="title_video_peertube">Title for the video</string>
|
||||
<string name="join_peertube">Join Peertube</string>
|
||||
<string name="agreement_check_peertube">I am at least 16 years old and agree to the %1$s of this instance</string>
|
||||
<string name="edit_profile">Edit profile</string>
|
||||
<string name="edit_profile">Editează profilul</string>
|
||||
<string name="make_an_action">Make an action</string>
|
||||
<string name="action_unfollow">Unfollow</string>
|
||||
<string name="action_unfollow">Nu mai urmări</string>
|
||||
<string name="display_nsfw_videos">Display sensitive videos</string>
|
||||
<string name="fullscreen">Fullscreen</string>
|
||||
<string name="bookmark_peertube_empty">There are no videos in your favourites!</string>
|
||||
@ -226,8 +244,8 @@
|
||||
<string name="edit_video">Edit video</string>
|
||||
<string name="create_an_account">Create an account</string>
|
||||
<string name="followers_count">%1$s Subscribers</string>
|
||||
<string name="developer">Developer</string>
|
||||
<string name="about_vesrion">Release %1$s</string>
|
||||
<string name="developer">Programator</string>
|
||||
<string name="about_vesrion">Lansare %1$s</string>
|
||||
<string name="about_the_app">About the app</string>
|
||||
<string name="Donate">Donate</string>
|
||||
<string name="source_code">Source code</string>
|
||||
@ -242,7 +260,7 @@
|
||||
<string name="pickup_categories">Pick categories</string>
|
||||
<string name="pickup_languages">Pick languages</string>
|
||||
<string name="notification_channel_name">Update information</string>
|
||||
<string name="add_account">Add an account</string>
|
||||
<string name="add_account">Adaugă un cont</string>
|
||||
<string name="list_of_accounts">List of accounts</string>
|
||||
<string name="pause">Pause</string>
|
||||
<string name="play">Play</string>
|
||||
|
@ -1,14 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="add_public_reply">Добавить публичный ответ</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="one">%d ответ</item>
|
||||
<item quantity="few">%d ответов</item>
|
||||
<item quantity="many">%d ответов</item>
|
||||
<item quantity="other">%d ответов</item>
|
||||
</plurals>
|
||||
<string name="reply">Ответ</string>
|
||||
<string name="set_theme">Тема</string>
|
||||
<string name="set_theme_description">Позволяет менять тему приложения</string>
|
||||
<string name="federation_issue">Видео не может быть объединено!</string>
|
||||
<string name="title_home">Главная</string>
|
||||
<string name="title_local">Локальные</string>
|
||||
<string name="title_discover">Подборка</string>
|
||||
<string name="title_notifications">Уведомления</string>
|
||||
<string name="title_recently_added">По добавлению</string>
|
||||
<string name="title_trending">Популярные</string>
|
||||
<string name="title_most_liked">Много лайков</string>
|
||||
<string name="title_recently_added">Свежие</string>
|
||||
<string name="title_trending">Актуальное</string>
|
||||
<string name="title_most_liked">Популярные</string>
|
||||
<string name="toast_error">Упс! Произошла ошибка!</string>
|
||||
<string name="title_muted">Беззвучный</string>
|
||||
<string name="title_muted">Игнорируются</string>
|
||||
<string name="title_channel">Каналы</string>
|
||||
<string name="do_not_list">Скрыто</string>
|
||||
<string name="blur">Размыть</string>
|
||||
@ -66,7 +77,7 @@
|
||||
<string name="toast_error_search">Произошла ошибка при поиске!</string>
|
||||
<string name="nothing_to_do">Ничего нельзя сделать</string>
|
||||
<string name="action_follow">Подписаться</string>
|
||||
<string name="action_mute">Без звука</string>
|
||||
<string name="action_mute">Игнорировать</string>
|
||||
<string name="search">Поиск</string>
|
||||
<string name="delete">Удалить</string>
|
||||
<string name="action_lists_confirm_delete">Вы действительно хотите удалить этот список навсегда?</string>
|
||||
@ -83,33 +94,33 @@
|
||||
<string name="delete_comment">Удалить комментарий</string>
|
||||
<string name="delete_comment_confirm">Вы уверены, что хотите удалить этот комментарий?</string>
|
||||
<string name="set_video_mode">Режим для видео</string>
|
||||
<string name="filter">Filter</string>
|
||||
<string name="sepia_search">Sepia search</string>
|
||||
<string name="sepia_element_nsfw">Display sensitive content</string>
|
||||
<string name="sepia_element_published_date">Published date</string>
|
||||
<string name="any">Any</string>
|
||||
<string name="today">Today</string>
|
||||
<string name="last_7_days">Last 7 days</string>
|
||||
<string name="last_30_days">Last 30 days</string>
|
||||
<string name="last_365_days">Last 365 days</string>
|
||||
<string name="sepia_element_duration">Duration</string>
|
||||
<string name="duration_short"><![CDATA[Short (<4 min)]]></string>
|
||||
<string name="duration_medium"><![CDATA[Medium (4–10 min)]]></string>
|
||||
<string name="duration_long"><![CDATA[Long (> 10 min)]]></string>
|
||||
<string name="display_all_categories">Display all categories</string>
|
||||
<string name="display_all_licenses">Display all licenses</string>
|
||||
<string name="display_all_languages">Display all languages</string>
|
||||
<string name="all_of_these_tags">All of these tags</string>
|
||||
<string name="one_of_these_tags">One of these tags</string>
|
||||
<string name="apply_filter">Apply filter</string>
|
||||
<string name="filter">Фильтр</string>
|
||||
<string name="sepia_search">Поисковик Sepia</string>
|
||||
<string name="sepia_element_nsfw">Показывать неприличные видео</string>
|
||||
<string name="sepia_element_published_date">Дата публикации</string>
|
||||
<string name="any">Любые</string>
|
||||
<string name="today">Сегодня</string>
|
||||
<string name="last_7_days">Последние 7 дней</string>
|
||||
<string name="last_30_days">Последние 30 дней</string>
|
||||
<string name="last_365_days">Последние 365 дней</string>
|
||||
<string name="sepia_element_duration">Длительность</string>
|
||||
<string name="duration_short"><![CDATA[Короткие (<4 мин)]]></string>
|
||||
<string name="duration_medium"><![CDATA[Средние (4–10 мин)]]></string>
|
||||
<string name="duration_long"><![CDATA[Длинные (> 10 мин)]]></string>
|
||||
<string name="display_all_categories">Показать все категории</string>
|
||||
<string name="display_all_licenses">Показать все лицензии</string>
|
||||
<string name="display_all_languages">Показать все языки</string>
|
||||
<string name="all_of_these_tags">Все с этими тегами</string>
|
||||
<string name="one_of_these_tags">Один из этих тегов</string>
|
||||
<string name="apply_filter">Применить фильтр</string>
|
||||
<string-array name="sort_by_array">
|
||||
<item>Best match</item>
|
||||
<item>Most recent</item>
|
||||
<item>Least recent</item>
|
||||
<item>Лучшее совпадение</item>
|
||||
<item>Последние</item>
|
||||
<item>Ранние</item>
|
||||
</string-array>
|
||||
<string name="sort_by">Sort by</string>
|
||||
<string name="sepia_search_hint">Keyword, channel, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search displays videos and channels that match your search but is not the publisher, nor the owner. If you notice any problems with a video, report it to the administrators on the PeerTube website where the video is published.</string>
|
||||
<string name="sort_by">Сортировать по</string>
|
||||
<string name="sepia_search_hint">Ключевое слово, канал, видео и т. д.</string>
|
||||
<string name="sepia_indication">Sepia Search отображает видео и каналы, которые соответствуют вашему поиску, но не являются ни издателем, ни владельцем. Если вы заметили какие-либо проблемы с видео, сообщите об этом администраторам на сайте PeerTube, где это видео опубликовано.</string>
|
||||
<string name="my_videos">Мои видео</string>
|
||||
<string name="title">Название</string>
|
||||
<string name="license">Лицензия</string>
|
||||
@ -135,14 +146,16 @@
|
||||
<string name="video_settings">Настройки видео</string>
|
||||
<string name="app_interface">Интерфейс</string>
|
||||
<string name="set_cache_mode">Кэш</string>
|
||||
<string name="set_video_cache_description">Определите кеш для видео (по умолчанию 100 Мб)</string>
|
||||
<string name="set_video_cache_description">Определите кэш для видео (по умолчанию 100 Мб)</string>
|
||||
<string name="set_video_quality_description">Определить качество видео по умолчанию</string>
|
||||
<string name="set_quality_mode">Разрешение для видео</string>
|
||||
<string name="video_cache_value">Видео кэш: %d Мб</string>
|
||||
<string name="captions">Субтитры</string>
|
||||
<string name="pickup_captions">Выбрать субтитры</string>
|
||||
<string name="none">Ничто</string>
|
||||
<string name="set_video_mode_description">Позволяет изменить режим воспроизведения видео (по умолчанию потоковый или через браузер).</string>
|
||||
<string name="set_video_mode_description">Позволяет изменить режим воспроизведения видео (по умолчанию, потоковый или через браузер).</string>
|
||||
<string name="delete_account_comment">Удалить комментарии аккаунта</string>
|
||||
<string name="delete_account_comment_confirm">Вы действительно хотите удалить все комментарии этого аккаунта?</string>
|
||||
<string name="delete_video">Удалить видео</string>
|
||||
<string name="delete_video_confirmation">Вы уверены, что хотите удалить это видео?</string>
|
||||
<string name="no_video_to_display">Нет видео для отображения!</string>
|
||||
@ -156,6 +169,7 @@
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> опубликовал новое видео: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Ваше видео <b>%1$s</b> занесено в чёрный список]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Ваше видео <b>%1$s</b> удалено из чёрного списка]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Ваш отчёт <b>%1$s</b> об злоупотреблении был принят]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[Новый отчёт о нарушении для видео: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Добавить публичный комментарий</string>
|
||||
<string name="send_comment">Оставить комментарий</string>
|
||||
@ -189,9 +203,14 @@
|
||||
<string name="account">Аккаунт</string>
|
||||
<string name="report_account">Пожаловаться на аккаунт</string>
|
||||
<string-array name="settings_video_mode">
|
||||
<item>По умолчанию</item>
|
||||
<item>Веб-просмотр</item>
|
||||
<item>Прямой поток</item>
|
||||
<item>Прямой поток</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>Светлая</item>
|
||||
<item>Тёмная</item>
|
||||
<item>Авто</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>Высокое</item>
|
||||
|
@ -1,15 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="title_home">Home</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="add_public_reply">Add a public reply</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="one">%d svar</item>
|
||||
<item quantity="other">%d svar</item>
|
||||
</plurals>
|
||||
<string name="reply">Svara</string>
|
||||
<string name="set_theme">Tema</string>
|
||||
<string name="set_theme_description">Allow to change app theme</string>
|
||||
<string name="federation_issue">The video cannot be federated!</string>
|
||||
<string name="title_home">Hem</string>
|
||||
<string name="title_local">Lokal</string>
|
||||
<string name="title_discover">Discover</string>
|
||||
<string name="title_notifications">Notifications</string>
|
||||
<string name="title_recently_added">Recently added</string>
|
||||
<string name="title_trending">Trending</string>
|
||||
<string name="title_notifications">Notifiering</string>
|
||||
<string name="title_recently_added">Nyligen tillagda</string>
|
||||
<string name="title_trending">Trendar</string>
|
||||
<string name="title_most_liked">Most liked</string>
|
||||
<string name="toast_error">Oops! An error occurred!</string>
|
||||
<string name="title_muted">Muted</string>
|
||||
<string name="title_channel">Channels</string>
|
||||
<string name="title_channel">Kanal</string>
|
||||
<string name="do_not_list">Do not list</string>
|
||||
<string name="blur">Blur</string>
|
||||
<string name="display">Display</string>
|
||||
@ -19,70 +28,70 @@
|
||||
<string name="no_videos">No videos!</string>
|
||||
<string name="no_notifications">No notifications!</string>
|
||||
<string name="favicon">Favicon</string>
|
||||
<string name="open_with">Open with</string>
|
||||
<string name="open_with">Öppna med</string>
|
||||
<string name="action_playlist_edit">Edit a playlist</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="upload_video">Upload</string>
|
||||
<string name="image_preview">Image preview</string>
|
||||
<string name="file_to_upload">Select the file to upload</string>
|
||||
<string name="channel">Channel</string>
|
||||
<string name="videos">Videos</string>
|
||||
<string name="channels">Channels</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="download">Download</string>
|
||||
<string name="profile_picture">Profile picture</string>
|
||||
<string name="update_video">Update video</string>
|
||||
<string name="close">Stäng</string>
|
||||
<string name="upload_video">Ladda upp</string>
|
||||
<string name="image_preview">Förhandsvisning</string>
|
||||
<string name="file_to_upload">Välj en fil som ska laddas upp</string>
|
||||
<string name="channel">Kanal</string>
|
||||
<string name="videos">Videor</string>
|
||||
<string name="channels">Kanal</string>
|
||||
<string name="yes">Ja</string>
|
||||
<string name="no">Nej</string>
|
||||
<string name="cancel">Avbryt</string>
|
||||
<string name="download">Ladda ned</string>
|
||||
<string name="profile_picture">Profilbild</string>
|
||||
<string name="update_video">Uppdatera video</string>
|
||||
<string name="remove_from_playlist">Remove from playlist</string>
|
||||
<string name="date_seconds">%d s</string>
|
||||
<string name="date_minutes">%d m</string>
|
||||
<string name="date_hours">%d h</string>
|
||||
<string name="date_hours">%d t</string>
|
||||
<string name="date_day">%d d</string>
|
||||
<string name="number_view_video">%s views</string>
|
||||
<string name="number_view_video">%s visningar</string>
|
||||
<string name="title_instance_login">Instance host</string>
|
||||
<string name="uploading">Uploading, please wait…</string>
|
||||
<string name="upload_video_success">The video has been uploaded!</string>
|
||||
<string name="toast_cancelled">Upload cancelled!</string>
|
||||
<string name="uploading">Uppladdning pågår, var god vänta…</string>
|
||||
<string name="upload_video_success">Videon har laddats upp!</string>
|
||||
<string name="toast_cancelled">Uppladdning avbruten!</string>
|
||||
<string name="video_uploaded_action">Tap here to edit the video data.</string>
|
||||
<string name="toot_select_image_error">An error occurred while selecting the media!</string>
|
||||
<string name="download_file">Download %1$s</string>
|
||||
<string name="action_privacy">Privacy</string>
|
||||
<string name="action_logout">Logout</string>
|
||||
<string name="login">Login</string>
|
||||
<string name="password">Password</string>
|
||||
<string name="email">Email</string>
|
||||
<string name="tags">Tags</string>
|
||||
<string name="validate">Validate</string>
|
||||
<string name="share_with">Share with</string>
|
||||
<string name="toot_select_image_error">Ett fel uppstod när du valde media!</string>
|
||||
<string name="download_file">Laddat ner %1$s</string>
|
||||
<string name="action_privacy">Sekretess</string>
|
||||
<string name="action_logout">Logga ut</string>
|
||||
<string name="login">Logga in</string>
|
||||
<string name="password">Lösenord</string>
|
||||
<string name="email">E-post</string>
|
||||
<string name="tags">Taggar</string>
|
||||
<string name="validate">Bekräfta</string>
|
||||
<string name="share_with">Dela med</string>
|
||||
<string name="shared_via">Shared via TubeLab</string>
|
||||
<string name="username">User name</string>
|
||||
<string name="settings">Settings</string>
|
||||
<string name="logout_account_confirmation">Are you sure you want to logout @%1$s@%2$s?</string>
|
||||
<string name="following">Following</string>
|
||||
<string name="followers">Followers</string>
|
||||
<string name="client_error">Unable to get client id!</string>
|
||||
<string name="toast_error_loading_account">An error occurred while switching between accounts!</string>
|
||||
<string name="toast_error_search">An error occurred while searching!</string>
|
||||
<string name="nothing_to_do">No action can be taken</string>
|
||||
<string name="action_follow">Follow</string>
|
||||
<string name="action_mute">Mute</string>
|
||||
<string name="search">Search</string>
|
||||
<string name="delete">Delete</string>
|
||||
<string name="action_lists_confirm_delete">Are you sure you want to permanently delete this list?</string>
|
||||
<string name="action_lists_delete">Delete list</string>
|
||||
<string name="no_comments">Be the first to leave a comment on this video with the top right button!</string>
|
||||
<string name="comment_no_allowed_peertube">Comments are not enabled on this video!</string>
|
||||
<string name="pickup_resolution">Pick up a resolution</string>
|
||||
<string name="bookmark_add_peertube">The video has been added to bookmarks!</string>
|
||||
<string name="bookmark_remove_peertube">The video has been removed from bookmarks!</string>
|
||||
<string name="username">Användarnamn</string>
|
||||
<string name="settings">Inställningar</string>
|
||||
<string name="logout_account_confirmation">Är du säker på att du vill logga ut @%1$s@%2$s?</string>
|
||||
<string name="following">Följer</string>
|
||||
<string name="followers">Följare</string>
|
||||
<string name="client_error">Kan inte få tag på klientid!</string>
|
||||
<string name="toast_error_loading_account">Ett fel uppstod vid växling mellan konton!</string>
|
||||
<string name="toast_error_search">Ett fel uppstod under sökningen!</string>
|
||||
<string name="nothing_to_do">Inga åtgärder kan vidtas</string>
|
||||
<string name="action_follow">Följ</string>
|
||||
<string name="action_mute">Tysta</string>
|
||||
<string name="search">Sök</string>
|
||||
<string name="delete">Ta bort</string>
|
||||
<string name="action_lists_confirm_delete">Är du säker du vill ta bort listan permanent?</string>
|
||||
<string name="action_lists_delete">Ta bort lista</string>
|
||||
<string name="no_comments">Bli den första att lämna en kommentar på denna video genom knappen längst upp till höger!</string>
|
||||
<string name="comment_no_allowed_peertube">Kommentarer är inte påslaget på denna video!</string>
|
||||
<string name="pickup_resolution">Välj en upplösning</string>
|
||||
<string name="bookmark_add_peertube">Filmen har lagts till bland bokmärken!</string>
|
||||
<string name="bookmark_remove_peertube">Filmen har tagits bort från bokmärken!</string>
|
||||
<string name="information" tools:ignore="UnusedResources">Information</string>
|
||||
<string name="app_logo">Logo of the application</string>
|
||||
<string name="app_logo">Applikationens logo</string>
|
||||
<!-- languages not translated -->
|
||||
<string name="subscriptions">Subscriptions</string>
|
||||
<string name="delete_comment">Delete a comment</string>
|
||||
<string name="delete_comment_confirm">Are you sure to delete this comment?</string>
|
||||
<string name="set_video_mode">Mode for videos</string>
|
||||
<string name="subscriptions">Prenumerationer</string>
|
||||
<string name="delete_comment">Ta bort kommentar</string>
|
||||
<string name="delete_comment_confirm">Är du säker på att ta bort denna kommentar?</string>
|
||||
<string name="set_video_mode">Lägen för video</string>
|
||||
<string name="filter">Filter</string>
|
||||
<string name="sepia_search">Sepia search</string>
|
||||
<string name="sepia_element_nsfw">Display sensitive content</string>
|
||||
@ -110,30 +119,30 @@
|
||||
<string name="sort_by">Sort by</string>
|
||||
<string name="sepia_search_hint">Keyword, channel, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search displays videos and channels that match your search but is not the publisher, nor the owner. If you notice any problems with a video, report it to the administrators on the PeerTube website where the video is published.</string>
|
||||
<string name="my_videos">My videos</string>
|
||||
<string name="title">Title</string>
|
||||
<string name="license">License</string>
|
||||
<string name="category">Category</string>
|
||||
<string name="language">Language</string>
|
||||
<string name="peertube_nsfw">This video contains mature or explicit content</string>
|
||||
<string name="peertube_enable_comments">Enable video comments</string>
|
||||
<string name="description">Description</string>
|
||||
<string name="toast_peertube_video_updated">The video has been updated!</string>
|
||||
<string name="my_videos">Mina videoklipp</string>
|
||||
<string name="title">Titel</string>
|
||||
<string name="license">Licens</string>
|
||||
<string name="category">Kategori</string>
|
||||
<string name="language">Språk</string>
|
||||
<string name="peertube_nsfw">Den här videon innehåller moget eller explicit innehåll</string>
|
||||
<string name="peertube_enable_comments">Tillåt videokommentarer</string>
|
||||
<string name="description">Beskrivning</string>
|
||||
<string name="toast_peertube_video_updated">Videon har uppdaterats!</string>
|
||||
<string name="register_account">Register an account</string>
|
||||
<string name="email_address">Email address</string>
|
||||
<string name="preview">Preview</string>
|
||||
<string name="change_preview">Change preview</string>
|
||||
<string name="name">Name</string>
|
||||
<string name="display_more">Display more</string>
|
||||
<string name="display_more">Visa mer</string>
|
||||
<string name="no_channels">No channels!</string>
|
||||
<string name="report_helper">Some explanations about your report…</string>
|
||||
<string name="report_video">Report video</string>
|
||||
<string name="report">Report</string>
|
||||
<string name="report">Rapportera</string>
|
||||
<string name="change_instance">Pick another instance</string>
|
||||
<string name="my_history">History</string>
|
||||
<string name="edit">Edit</string>
|
||||
<string name="my_history">Historik</string>
|
||||
<string name="edit">Redigera</string>
|
||||
<string name="video_settings">Video settings</string>
|
||||
<string name="app_interface">Interface</string>
|
||||
<string name="app_interface">Gränssnitt</string>
|
||||
<string name="set_cache_mode">Cache</string>
|
||||
<string name="set_video_cache_description">Set the cache for videos (default 100Mb)</string>
|
||||
<string name="set_video_quality_description">Define a default quality for videos</string>
|
||||
@ -143,68 +152,76 @@
|
||||
<string name="pickup_captions">Pick captions</string>
|
||||
<string name="none">None</string>
|
||||
<string name="set_video_mode_description">Allows to change mode for playing videos (default, streaming or via a browser).</string>
|
||||
<string name="delete_video">Delete video</string>
|
||||
<string name="delete_video_confirmation">Are you sure to delete this video?</string>
|
||||
<string name="no_video_to_display">No videos to display!</string>
|
||||
<string name="share">Share</string>
|
||||
<string name="peertube_comment_on_video"><![CDATA[<b>%1$s</b> commented your video <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_channel"><![CDATA[<b>%1$s</b> is following your channel <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_account"><![CDATA[<b>%1$s</b> is following your account]]></string>
|
||||
<string name="peertube_video_published"><![CDATA[Your video <b>%1$s</b> has been published]]></string>
|
||||
<string name="peertube_video_import_success"><![CDATA[Your video import <b>%1$s</b> succeeded]]></string>
|
||||
<string name="peertube_video_import_error"><![CDATA[Your video import <b>%1$s</b> failed]]></string>
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> published a new video: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Your video <b>%1$s</b> has been blacklisted]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Your video <b>%1$s</b> has been unblacklisted]]></string>
|
||||
<string name="delete_account_comment">Delete account comments</string>
|
||||
<string name="delete_account_comment_confirm">Are you sure you want to remove all the comments of this account?</string>
|
||||
<string name="delete_video">Ta bort film</string>
|
||||
<string name="delete_video_confirmation">Är du säker på att ta bort denna film?</string>
|
||||
<string name="no_video_to_display">Inga filmer att visa!</string>
|
||||
<string name="share">Dela</string>
|
||||
<string name="peertube_comment_on_video"><![CDATA[<b>%1$s</b> kommenterade din video <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_channel"><![CDATA[<b>%1$s</b> följer din kanal <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_account"><![CDATA[<b>%1$s</b> följer ditt konto]]></string>
|
||||
<string name="peertube_video_published"><![CDATA[Din video <b>%1$s</b> har publicerats]]></string>
|
||||
<string name="peertube_video_import_success"><![CDATA[Importen av din video, <b>%1$s</b>, lyckades]]></string>
|
||||
<string name="peertube_video_import_error"><![CDATA[Importen av din video, <b>%1$s</b>, misslyckades]]></string>
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> publicerade en ny video: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Din video <b>%1$s</b> har svartlistats]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Svartlistningen av din video, <b>%1$s</b>, har tagits bort]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Add a public comment</string>
|
||||
<string name="send_comment">Send comment</string>
|
||||
<string name="all">All</string>
|
||||
<string name="add_public_comment">Lägg till en publik kommentar</string>
|
||||
<string name="send_comment">Skicka kommentar</string>
|
||||
<string name="all">Allt</string>
|
||||
<!-- end languages -->
|
||||
<string name="playlists">Playlists</string>
|
||||
<string name="display_name">Display name</string>
|
||||
<string name="playlists">Spellistor</string>
|
||||
<string name="display_name">Visningsnamn</string>
|
||||
<string name="action_playlist_add">You don\'t have any playlists. Tap on the \"+\" icon to add a new playlist</string>
|
||||
<string name="error_display_name">You must provide a display name!</string>
|
||||
<string name="error_channel_mandatory">The channel is required when the playlist is public.</string>
|
||||
<string name="action_playlist_create">Create a playlist</string>
|
||||
<string name="action_playlist_empty_content">There is nothing in this playlist yet.</string>
|
||||
<string name="password_confirm">Confirm password</string>
|
||||
<string name="agreement_check">I agree to %1$s and %2$s</string>
|
||||
<string name="server_rules">server rules</string>
|
||||
<string name="tos">terms of service</string>
|
||||
<string name="sign_up">Sign up</string>
|
||||
<string name="all_field_filled">Please, fill all the fields!</string>
|
||||
<string name="password_error">Passwords don\'t match!</string>
|
||||
<string name="email_error">The email doesn\'t seem to be valid!</string>
|
||||
<string name="email_indicator">You will be sent a confirmation e-mail</string>
|
||||
<string name="password_indicator">Use at least 8 characters</string>
|
||||
<string name="password_too_short">Password should contain at least 8 characters</string>
|
||||
<string name="username_error">Username should only contain letters, numbers and underscores</string>
|
||||
<string name="account_created">Account created!</string>
|
||||
<string name="error_display_name">Du måste ange ett visningsnamn!</string>
|
||||
<string name="error_channel_mandatory">Kanalen krävs när spellistan är offentliga.</string>
|
||||
<string name="action_playlist_create">Skapa spellista</string>
|
||||
<string name="action_playlist_empty_content">Det finns ingenting i denna spellista ännu.</string>
|
||||
<string name="password_confirm">Bekräfta lösenord</string>
|
||||
<string name="agreement_check">Jag godkänner %1$s och %2$s</string>
|
||||
<string name="server_rules">serverregler</string>
|
||||
<string name="tos">tjänstevillkor</string>
|
||||
<string name="sign_up">Registrera dig</string>
|
||||
<string name="all_field_filled">Vänligen fyll i alla fält!</string>
|
||||
<string name="password_error">Lösenorden matchar inte!</string>
|
||||
<string name="email_error">E-posten verkar inte vara giltig!</string>
|
||||
<string name="email_indicator">Du kommer att få en bekräftelse via e-post</string>
|
||||
<string name="password_indicator">Använda minst åtta (8) tecken</string>
|
||||
<string name="password_too_short">Lösenordet måste innehålla minst åtta (8) tecken</string>
|
||||
<string name="username_error">Användarnamn får endast innehålla bokstäver, siffror och understreck</string>
|
||||
<string name="account_created">Konto skapat!</string>
|
||||
<string name="account_created_message"> Your account has been created!\n\n
|
||||
Think to validate your email within the 48 next hours.\n\n
|
||||
You can now connect your account by writing <b>%1$s</b> in the first field and tap on <b>Connect</b>.\n\n
|
||||
<b>Important</b>: If your instance required validation, you will receive an email once it is validated!
|
||||
</string>
|
||||
<string name="account">Account</string>
|
||||
<string name="report_account">Report account</string>
|
||||
<string name="account">Konto</string>
|
||||
<string name="report_account">Rapportera konto</string>
|
||||
<string-array name="settings_video_mode">
|
||||
<item>Normal</item>
|
||||
<item>Webview</item>
|
||||
<item>Direct stream</item>
|
||||
<item>Nomal</item>
|
||||
<item>Webbvy</item>
|
||||
<item>Direktström</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>Ljust</item>
|
||||
<item>Mörkt</item>
|
||||
<item>Automatic</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
<item>Medium</item>
|
||||
<item>Low</item>
|
||||
</string-array>
|
||||
<string name="unfollow_confirm">Do you want to unfollow this account?</string>
|
||||
<string name="title_video_peertube">Title for the video</string>
|
||||
<string name="join_peertube">Join Peertube</string>
|
||||
<string name="agreement_check_peertube">I am at least 16 years old and agree to the %1$s of this instance</string>
|
||||
<string name="edit_profile">Edit profile</string>
|
||||
<string name="make_an_action">Make an action</string>
|
||||
<string name="action_unfollow">Unfollow</string>
|
||||
<string name="unfollow_confirm">Vill du sluta följa detta konto?</string>
|
||||
<string name="title_video_peertube">Titel på videon</string>
|
||||
<string name="join_peertube">Gå med i Peertube</string>
|
||||
<string name="agreement_check_peertube">Jag är minst 16 år gammal och godkänner %1$s för denna instans</string>
|
||||
<string name="edit_profile">Ändra profil</string>
|
||||
<string name="make_an_action">Gör en handling</string>
|
||||
<string name="action_unfollow">Sluta följa</string>
|
||||
<string name="display_nsfw_videos">Display sensitive videos</string>
|
||||
<string name="fullscreen">Fullscreen</string>
|
||||
<string name="bookmark_peertube_empty">There are no videos in your favourites!</string>
|
||||
@ -226,12 +243,12 @@
|
||||
<string name="edit_video">Edit video</string>
|
||||
<string name="create_an_account">Create an account</string>
|
||||
<string name="followers_count">%1$s Subscribers</string>
|
||||
<string name="developer">Developer</string>
|
||||
<string name="about_vesrion">Release %1$s</string>
|
||||
<string name="about_the_app">About the app</string>
|
||||
<string name="Donate">Donate</string>
|
||||
<string name="source_code">Source code</string>
|
||||
<string name="issue_tracker">Issue tracker</string>
|
||||
<string name="developer">Utvecklare</string>
|
||||
<string name="about_vesrion">Släpp %1$s</string>
|
||||
<string name="about_the_app">Om appen</string>
|
||||
<string name="Donate">Donera</string>
|
||||
<string name="source_code">Källkod</string>
|
||||
<string name="issue_tracker">Ärendespårare</string>
|
||||
<string name="action_instance_empty_content">No instances match these criteria</string>
|
||||
<string name="instances_picker">Instances picker</string>
|
||||
<string name="pickup_instance">Pick this instance</string>
|
||||
@ -242,7 +259,7 @@
|
||||
<string name="pickup_categories">Pick categories</string>
|
||||
<string name="pickup_languages">Pick languages</string>
|
||||
<string name="notification_channel_name">Update information</string>
|
||||
<string name="add_account">Add an account</string>
|
||||
<string name="add_account">Lägg till ett konto</string>
|
||||
<string name="list_of_accounts">List of accounts</string>
|
||||
<string name="pause">Pause</string>
|
||||
<string name="play">Play</string>
|
||||
|
@ -1,256 +1,271 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="title_home">Home</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="title_discover">Discover</string>
|
||||
<string name="title_notifications">Notifications</string>
|
||||
<string name="title_recently_added">Recently added</string>
|
||||
<string name="title_trending">Trending</string>
|
||||
<string name="title_most_liked">Most liked</string>
|
||||
<string name="toast_error">Oops! An error occurred!</string>
|
||||
<string name="title_muted">Muted</string>
|
||||
<string name="title_channel">Channels</string>
|
||||
<string name="do_not_list">Do not list</string>
|
||||
<string name="blur">Blur</string>
|
||||
<string name="display">Display</string>
|
||||
<string name="no_opinion">No opinion</string>
|
||||
<string name="instance_choice">Pick an instance</string>
|
||||
<string name="not_valide_instance">This instance does not seem to be valid!</string>
|
||||
<string name="no_videos">No videos!</string>
|
||||
<string name="no_notifications">No notifications!</string>
|
||||
<string name="favicon">Favicon</string>
|
||||
<string name="open_with">Open with</string>
|
||||
<string name="action_playlist_edit">Edit a playlist</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="upload_video">Upload</string>
|
||||
<string name="image_preview">Image preview</string>
|
||||
<string name="file_to_upload">Select the file to upload</string>
|
||||
<string name="channel">Channel</string>
|
||||
<string name="videos">Videos</string>
|
||||
<string name="channels">Channels</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="download">Download</string>
|
||||
<string name="profile_picture">Profile picture</string>
|
||||
<string name="update_video">Update video</string>
|
||||
<string name="remove_from_playlist">Remove from playlist</string>
|
||||
<string name="date_seconds">%d s</string>
|
||||
<string name="date_minutes">%d m</string>
|
||||
<string name="date_hours">%d h</string>
|
||||
<string name="date_day">%d d</string>
|
||||
<string name="number_view_video">%s views</string>
|
||||
<string name="title_instance_login">Instance host</string>
|
||||
<string name="uploading">Uploading, please wait…</string>
|
||||
<string name="upload_video_success">The video has been uploaded!</string>
|
||||
<string name="toast_cancelled">Upload cancelled!</string>
|
||||
<string name="video_uploaded_action">Tap here to edit the video data.</string>
|
||||
<string name="toot_select_image_error">An error occurred while selecting the media!</string>
|
||||
<string name="download_file">Download %1$s</string>
|
||||
<string name="action_privacy">Privacy</string>
|
||||
<string name="action_logout">Logout</string>
|
||||
<string name="login">Login</string>
|
||||
<string name="password">Password</string>
|
||||
<string name="email">Email</string>
|
||||
<string name="tags">Tags</string>
|
||||
<string name="validate">Validate</string>
|
||||
<string name="share_with">Share with</string>
|
||||
<string name="shared_via">Shared via TubeLab</string>
|
||||
<string name="username">User name</string>
|
||||
<string name="settings">Settings</string>
|
||||
<string name="logout_account_confirmation">Are you sure you want to logout @%1$s@%2$s?</string>
|
||||
<string name="following">Following</string>
|
||||
<string name="followers">Followers</string>
|
||||
<string name="client_error">Unable to get client id!</string>
|
||||
<string name="toast_error_loading_account">An error occurred while switching between accounts!</string>
|
||||
<string name="toast_error_search">An error occurred while searching!</string>
|
||||
<string name="nothing_to_do">No action can be taken</string>
|
||||
<string name="action_follow">Follow</string>
|
||||
<string name="action_mute">Mute</string>
|
||||
<string name="search">Search</string>
|
||||
<string name="delete">Delete</string>
|
||||
<string name="action_lists_confirm_delete">Are you sure you want to permanently delete this list?</string>
|
||||
<string name="action_lists_delete">Delete list</string>
|
||||
<string name="no_comments">Be the first to leave a comment on this video with the top right button!</string>
|
||||
<string name="comment_no_allowed_peertube">Comments are not enabled on this video!</string>
|
||||
<string name="pickup_resolution">Pick up a resolution</string>
|
||||
<string name="bookmark_add_peertube">The video has been added to bookmarks!</string>
|
||||
<string name="bookmark_remove_peertube">The video has been removed from bookmarks!</string>
|
||||
<string name="information" tools:ignore="UnusedResources">Information</string>
|
||||
<string name="app_logo">Logo of the application</string>
|
||||
<string name="add_public_reply">添加公开回复</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="other">%d 条回复</item>
|
||||
</plurals>
|
||||
<string name="reply">回复</string>
|
||||
<string name="set_theme">主题</string>
|
||||
<string name="set_theme_description">允许更改应用主题</string>
|
||||
<string name="federation_issue">该视频无法邦联!</string>
|
||||
<string name="title_home">主页</string>
|
||||
<string name="title_local">本站</string>
|
||||
<string name="title_discover">发现</string>
|
||||
<string name="title_notifications">通知</string>
|
||||
<string name="title_recently_added">最新上传</string>
|
||||
<string name="title_trending">当下流行</string>
|
||||
<string name="title_most_liked">最受好评</string>
|
||||
<string name="toast_error">哎呀!出现了个小错误!</string>
|
||||
<string name="title_muted">已隐藏</string>
|
||||
<string name="title_channel">频道</string>
|
||||
<string name="do_not_list">不公开</string>
|
||||
<string name="blur">模糊化</string>
|
||||
<string name="display">显示</string>
|
||||
<string name="no_opinion">无意见</string>
|
||||
<string name="instance_choice">选择实例</string>
|
||||
<string name="not_valide_instance">您输入的实例地址是无效的!</string>
|
||||
<string name="no_videos">没有视频!</string>
|
||||
<string name="no_notifications">没有通知!</string>
|
||||
<string name="favicon">网站图标</string>
|
||||
<string name="open_with">打开方式</string>
|
||||
<string name="action_playlist_edit">编辑播放列表</string>
|
||||
<string name="close">关闭</string>
|
||||
<string name="upload_video">上传</string>
|
||||
<string name="image_preview">图像预览</string>
|
||||
<string name="file_to_upload">选择要上传的文件</string>
|
||||
<string name="channel">频道</string>
|
||||
<string name="videos">视频</string>
|
||||
<string name="channels">频道</string>
|
||||
<string name="yes">是</string>
|
||||
<string name="no">否</string>
|
||||
<string name="cancel">取消</string>
|
||||
<string name="download">下载</string>
|
||||
<string name="profile_picture">个人头像</string>
|
||||
<string name="update_video">更新视频</string>
|
||||
<string name="remove_from_playlist">从播放列表中删除</string>
|
||||
<string name="date_seconds">%d 秒</string>
|
||||
<string name="date_minutes">%d 分</string>
|
||||
<string name="date_hours">%d 小时</string>
|
||||
<string name="date_day">%d 天</string>
|
||||
<string name="number_view_video">%s 次观看</string>
|
||||
<string name="title_instance_login">实例主机</string>
|
||||
<string name="uploading">正在上传中,请稍等……</string>
|
||||
<string name="upload_video_success">视频已上传!</string>
|
||||
<string name="toast_cancelled">上传已取消!</string>
|
||||
<string name="video_uploaded_action">点击此处以编辑视频内容。</string>
|
||||
<string name="toot_select_image_error">选择媒体文件时出现了错误!</string>
|
||||
<string name="download_file">下载 %1$s</string>
|
||||
<string name="action_privacy">隐私</string>
|
||||
<string name="action_logout">登出</string>
|
||||
<string name="login">登录</string>
|
||||
<string name="password">密码</string>
|
||||
<string name="email">电子邮箱</string>
|
||||
<string name="tags">标签</string>
|
||||
<string name="validate">验证</string>
|
||||
<string name="share_with">分享</string>
|
||||
<string name="shared_via">通过 TubeLab 分享</string>
|
||||
<string name="username">用户名</string>
|
||||
<string name="settings">设置</string>
|
||||
<string name="logout_account_confirmation">确定要登出 @%1$s@%2$s 吗?</string>
|
||||
<string name="following">正在订阅</string>
|
||||
<string name="followers">订阅者</string>
|
||||
<string name="client_error">无法获取客户端 ID!</string>
|
||||
<string name="toast_error_loading_account">在切换帐户时出现了错误!</string>
|
||||
<string name="toast_error_search">搜索时出现了错误!</string>
|
||||
<string name="nothing_to_do">无法进行任何操作</string>
|
||||
<string name="action_follow">订阅</string>
|
||||
<string name="action_mute">静音</string>
|
||||
<string name="search">搜索</string>
|
||||
<string name="delete">删除</string>
|
||||
<string name="action_lists_confirm_delete">您确定要永久删除此列表吗?</string>
|
||||
<string name="action_lists_delete">删除列表</string>
|
||||
<string name="no_comments">点击右上角的按钮,拿到该视频的沙发!</string>
|
||||
<string name="comment_no_allowed_peertube">此视频未启用评论!</string>
|
||||
<string name="pickup_resolution">选择分辨率</string>
|
||||
<string name="bookmark_add_peertube">此视频已添加到书签!</string>
|
||||
<string name="bookmark_remove_peertube">此视频已从书签中删除!</string>
|
||||
<string name="information" tools:ignore="UnusedResources">相关信息</string>
|
||||
<string name="app_logo">应用程序的标志</string>
|
||||
<!-- languages not translated -->
|
||||
<string name="subscriptions">Subscriptions</string>
|
||||
<string name="delete_comment">Delete a comment</string>
|
||||
<string name="delete_comment_confirm">Are you sure to delete this comment?</string>
|
||||
<string name="set_video_mode">Mode for videos</string>
|
||||
<string name="filter">Filter</string>
|
||||
<string name="sepia_search">Sepia search</string>
|
||||
<string name="sepia_element_nsfw">Display sensitive content</string>
|
||||
<string name="sepia_element_published_date">Published date</string>
|
||||
<string name="any">Any</string>
|
||||
<string name="today">Today</string>
|
||||
<string name="last_7_days">Last 7 days</string>
|
||||
<string name="last_30_days">Last 30 days</string>
|
||||
<string name="last_365_days">Last 365 days</string>
|
||||
<string name="sepia_element_duration">Duration</string>
|
||||
<string name="duration_short"><![CDATA[Short (<4 min)]]></string>
|
||||
<string name="duration_medium"><![CDATA[Medium (4–10 min)]]></string>
|
||||
<string name="duration_long"><![CDATA[Long (> 10 min)]]></string>
|
||||
<string name="display_all_categories">Display all categories</string>
|
||||
<string name="display_all_licenses">Display all licenses</string>
|
||||
<string name="display_all_languages">Display all languages</string>
|
||||
<string name="all_of_these_tags">All of these tags</string>
|
||||
<string name="one_of_these_tags">One of these tags</string>
|
||||
<string name="apply_filter">Apply filter</string>
|
||||
<string name="subscriptions">订阅列表</string>
|
||||
<string name="delete_comment">删除评论</string>
|
||||
<string name="delete_comment_confirm">您确定要删除此评论吗?</string>
|
||||
<string name="set_video_mode">视频播放模式</string>
|
||||
<string name="filter">筛选</string>
|
||||
<string name="sepia_search">Sepia 搜索引擎</string>
|
||||
<string name="sepia_element_nsfw">显示敏感内容</string>
|
||||
<string name="sepia_element_published_date">发布日期</string>
|
||||
<string name="any">任意</string>
|
||||
<string name="today">今天</string>
|
||||
<string name="last_7_days">最近 7 天</string>
|
||||
<string name="last_30_days">最近 30 天</string>
|
||||
<string name="last_365_days">最近 365 天</string>
|
||||
<string name="sepia_element_duration">时长</string>
|
||||
<string name="duration_short"><![CDATA[短(< 4 分钟)]]></string>
|
||||
<string name="duration_medium"><![CDATA[中等长度(4-10 分钟)]]></string>
|
||||
<string name="duration_long"><![CDATA[长(> 10 分钟)]]></string>
|
||||
<string name="display_all_categories">显示所有类别</string>
|
||||
<string name="display_all_licenses">显示所有许可协议</string>
|
||||
<string name="display_all_languages">显示所有语言</string>
|
||||
<string name="all_of_these_tags">所有标签</string>
|
||||
<string name="one_of_these_tags">其中一个标签</string>
|
||||
<string name="apply_filter">应用筛选规则</string>
|
||||
<string-array name="sort_by_array">
|
||||
<item>Best match</item>
|
||||
<item>Most recent</item>
|
||||
<item>Least recent</item>
|
||||
<item>最佳匹配</item>
|
||||
<item>最近更新</item>
|
||||
<item>最早视频</item>
|
||||
</string-array>
|
||||
<string name="sort_by">Sort by</string>
|
||||
<string name="sepia_search_hint">Keyword, channel, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search displays videos and channels that match your search but is not the publisher, nor the owner. If you notice any problems with a video, report it to the administrators on the PeerTube website where the video is published.</string>
|
||||
<string name="my_videos">My videos</string>
|
||||
<string name="title">Title</string>
|
||||
<string name="license">License</string>
|
||||
<string name="category">Category</string>
|
||||
<string name="language">Language</string>
|
||||
<string name="peertube_nsfw">This video contains mature or explicit content</string>
|
||||
<string name="peertube_enable_comments">Enable video comments</string>
|
||||
<string name="description">Description</string>
|
||||
<string name="toast_peertube_video_updated">The video has been updated!</string>
|
||||
<string name="register_account">Register an account</string>
|
||||
<string name="email_address">Email address</string>
|
||||
<string name="preview">Preview</string>
|
||||
<string name="change_preview">Change preview</string>
|
||||
<string name="name">Name</string>
|
||||
<string name="display_more">Display more</string>
|
||||
<string name="no_channels">No channels!</string>
|
||||
<string name="report_helper">Some explanations about your report…</string>
|
||||
<string name="report_video">Report video</string>
|
||||
<string name="report">Report</string>
|
||||
<string name="change_instance">Pick another instance</string>
|
||||
<string name="my_history">History</string>
|
||||
<string name="edit">Edit</string>
|
||||
<string name="video_settings">Video settings</string>
|
||||
<string name="app_interface">Interface</string>
|
||||
<string name="set_cache_mode">Cache</string>
|
||||
<string name="set_video_cache_description">Set the cache for videos (default 100Mb)</string>
|
||||
<string name="set_video_quality_description">Define a default quality for videos</string>
|
||||
<string name="set_quality_mode">Resolution for videos</string>
|
||||
<string name="video_cache_value">Video cache: %d Mb</string>
|
||||
<string name="captions">Captions</string>
|
||||
<string name="pickup_captions">Pick captions</string>
|
||||
<string name="none">None</string>
|
||||
<string name="set_video_mode_description">Allows to change mode for playing videos (default, streaming or via a browser).</string>
|
||||
<string name="delete_video">Delete video</string>
|
||||
<string name="delete_video_confirmation">Are you sure to delete this video?</string>
|
||||
<string name="no_video_to_display">No videos to display!</string>
|
||||
<string name="share">Share</string>
|
||||
<string name="peertube_comment_on_video"><![CDATA[<b>%1$s</b> commented your video <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_channel"><![CDATA[<b>%1$s</b> is following your channel <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_account"><![CDATA[<b>%1$s</b> is following your account]]></string>
|
||||
<string name="peertube_video_published"><![CDATA[Your video <b>%1$s</b> has been published]]></string>
|
||||
<string name="peertube_video_import_success"><![CDATA[Your video import <b>%1$s</b> succeeded]]></string>
|
||||
<string name="peertube_video_import_error"><![CDATA[Your video import <b>%1$s</b> failed]]></string>
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> published a new video: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Your video <b>%1$s</b> has been blacklisted]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Your video <b>%1$s</b> has been unblacklisted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Add a public comment</string>
|
||||
<string name="send_comment">Send comment</string>
|
||||
<string name="all">All</string>
|
||||
<string name="sort_by">排序方式</string>
|
||||
<string name="sepia_search_hint">输入关键字、频道名、视频标题等</string>
|
||||
<string name="sepia_indication">Sepia 搜索引擎会显示匹配您搜索关键词的视频与频道,但它无法单单找到具体的上传者,或是视频主。如果您留意到列表里的一些视频含有不合适的内容,请向该视频所属的 PeerTube 实例管理者报告。</string>
|
||||
<string name="my_videos">我的视频</string>
|
||||
<string name="title">标题</string>
|
||||
<string name="license">许可协议</string>
|
||||
<string name="category">类别</string>
|
||||
<string name="language">语言</string>
|
||||
<string name="peertube_nsfw">该视频包含成人或色情的内容</string>
|
||||
<string name="peertube_enable_comments">启用视频评论功能</string>
|
||||
<string name="description">简介</string>
|
||||
<string name="toast_peertube_video_updated">视频已更新!</string>
|
||||
<string name="register_account">注册账号</string>
|
||||
<string name="email_address">邮箱地址</string>
|
||||
<string name="preview">预览图</string>
|
||||
<string name="change_preview">更改预览图</string>
|
||||
<string name="name">名字</string>
|
||||
<string name="display_more">显示更多</string>
|
||||
<string name="no_channels">没有频道!</string>
|
||||
<string name="report_helper">补充您报告的理由…</string>
|
||||
<string name="report_video">报告视频</string>
|
||||
<string name="report">报告</string>
|
||||
<string name="change_instance">选择其他实例</string>
|
||||
<string name="my_history">观看历史</string>
|
||||
<string name="edit">编辑</string>
|
||||
<string name="video_settings">视频设置</string>
|
||||
<string name="app_interface">界面</string>
|
||||
<string name="set_cache_mode">缓存</string>
|
||||
<string name="set_video_cache_description">设置视频缓存(默认 100 兆字节)</string>
|
||||
<string name="set_video_quality_description">设定视频的默认播放质量</string>
|
||||
<string name="set_quality_mode">视频分辨率</string>
|
||||
<string name="video_cache_value">视频缓存: %d MB</string>
|
||||
<string name="captions">字幕</string>
|
||||
<string name="pickup_captions">选择字幕</string>
|
||||
<string name="none">空</string>
|
||||
<string name="set_video_mode_description">允许更改视频的播放模式(标准,串流或使用网页播放器)。</string>
|
||||
<string name="delete_account_comment">删除账号的评论</string>
|
||||
<string name="delete_account_comment_confirm">您确定删除该账号下所有的评论?</string>
|
||||
<string name="delete_video">删除视频</string>
|
||||
<string name="delete_video_confirmation">您确定删除该视频吗?</string>
|
||||
<string name="no_video_to_display">无视频可供显示!</string>
|
||||
<string name="share">分享</string>
|
||||
<string name="peertube_comment_on_video"><![CDATA[<b>%1$s</b> 评论了您的视频 <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_channel"><![CDATA[<b>%1$s</b> 订阅了您的频道 <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_account"><![CDATA[<b>%1$s</b> 订阅了您的账号]]></string>
|
||||
<string name="peertube_video_published"><![CDATA[您的视频 <b>%1$s</b> 已成功发布]]></string>
|
||||
<string name="peertube_video_import_success"><![CDATA[您的视频 <b>%1$s</b> 已成功导入]]></string>
|
||||
<string name="peertube_video_import_error"><![CDATA[您的视频 <b>%1$s</b> 导入失败]]></string>
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> 发布了新视频:<b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[您的视频 <b>%1$s</b> 已被加入黑名单]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[您的视频 <b>%1$s</b> 已被取消黑名单]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[您关于<b>%1$s</b>的滥用报告已被接受]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[关于您视频中不当内容的报告: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">添加公开评论</string>
|
||||
<string name="send_comment">发送评论</string>
|
||||
<string name="all">全部</string>
|
||||
<!-- end languages -->
|
||||
<string name="playlists">Playlists</string>
|
||||
<string name="display_name">Display name</string>
|
||||
<string name="action_playlist_add">You don\'t have any playlists. Tap on the \"+\" icon to add a new playlist</string>
|
||||
<string name="error_display_name">You must provide a display name!</string>
|
||||
<string name="error_channel_mandatory">The channel is required when the playlist is public.</string>
|
||||
<string name="action_playlist_create">Create a playlist</string>
|
||||
<string name="action_playlist_empty_content">There is nothing in this playlist yet.</string>
|
||||
<string name="password_confirm">Confirm password</string>
|
||||
<string name="agreement_check">I agree to %1$s and %2$s</string>
|
||||
<string name="server_rules">server rules</string>
|
||||
<string name="tos">terms of service</string>
|
||||
<string name="sign_up">Sign up</string>
|
||||
<string name="all_field_filled">Please, fill all the fields!</string>
|
||||
<string name="password_error">Passwords don\'t match!</string>
|
||||
<string name="email_error">The email doesn\'t seem to be valid!</string>
|
||||
<string name="email_indicator">You will be sent a confirmation e-mail</string>
|
||||
<string name="password_indicator">Use at least 8 characters</string>
|
||||
<string name="password_too_short">Password should contain at least 8 characters</string>
|
||||
<string name="username_error">Username should only contain letters, numbers and underscores</string>
|
||||
<string name="account_created">Account created!</string>
|
||||
<string name="account_created_message"> Your account has been created!\n\n
|
||||
Think to validate your email within the 48 next hours.\n\n
|
||||
You can now connect your account by writing <b>%1$s</b> in the first field and tap on <b>Connect</b>.\n\n
|
||||
<b>Important</b>: If your instance required validation, you will receive an email once it is validated!
|
||||
</string>
|
||||
<string name="account">Account</string>
|
||||
<string name="report_account">Report account</string>
|
||||
<string name="playlists">播放列表</string>
|
||||
<string name="display_name">显示昵称</string>
|
||||
<string name="action_playlist_add">您没有任何播放列表,点击 + 号添加一个新的播放列表</string>
|
||||
<string name="error_display_name">您必须指定一个昵称!</string>
|
||||
<string name="error_channel_mandatory">您必须先创建一个频道,才能公开播放列表。</string>
|
||||
<string name="action_playlist_create">创建播放列表</string>
|
||||
<string name="action_playlist_empty_content">这个播放列表中还没有任何内容。</string>
|
||||
<string name="password_confirm">确认密码</string>
|
||||
<string name="agreement_check">我同意 %1$s 和 %2$s</string>
|
||||
<string name="server_rules">实例规则</string>
|
||||
<string name="tos">服务条款</string>
|
||||
<string name="sign_up">注册</string>
|
||||
<string name="all_field_filled">请填写所有栏位!</string>
|
||||
<string name="password_error">密码不匹配!</string>
|
||||
<string name="email_error">该电子邮箱是无效的!</string>
|
||||
<string name="email_indicator">您将收到一封确认邮件</string>
|
||||
<string name="password_indicator">请至少使用 8 个字符</string>
|
||||
<string name="password_too_short">密码应包含至少 8 个字符</string>
|
||||
<string name="username_error">用户名只能包含字母、 数字和下划线</string>
|
||||
<string name="account_created">帐户已创建!</string>
|
||||
<string name="account_created_message"> 您的账号已经成功创建!\n\n
|
||||
请在接下来的 48 小时内验证您的电子邮件。\n\n
|
||||
您可以在第一栏中填写 <b>%1$s</b> ,并点击 <b>连接</b>来连接您的账号。\n\n
|
||||
<b>重要通知</b>:如果您的实例要求验证,那么当验证完成时,您将会收到一封通知邮件! </string>
|
||||
<string name="account">账号</string>
|
||||
<string name="report_account">报告账号</string>
|
||||
<string-array name="settings_video_mode">
|
||||
<item>Normal</item>
|
||||
<item>Webview</item>
|
||||
<item>Direct stream</item>
|
||||
<item>标准</item>
|
||||
<item>网页播放器</item>
|
||||
<item>串流</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>亮色</item>
|
||||
<item>暗色</item>
|
||||
<item>自动切换</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
<item>Medium</item>
|
||||
<item>Low</item>
|
||||
<item>高</item>
|
||||
<item>中等</item>
|
||||
<item>低</item>
|
||||
</string-array>
|
||||
<string name="unfollow_confirm">Do you want to unfollow this account?</string>
|
||||
<string name="title_video_peertube">Title for the video</string>
|
||||
<string name="join_peertube">Join Peertube</string>
|
||||
<string name="agreement_check_peertube">I am at least 16 years old and agree to the %1$s of this instance</string>
|
||||
<string name="edit_profile">Edit profile</string>
|
||||
<string name="make_an_action">Make an action</string>
|
||||
<string name="action_unfollow">Unfollow</string>
|
||||
<string name="display_nsfw_videos">Display sensitive videos</string>
|
||||
<string name="fullscreen">Fullscreen</string>
|
||||
<string name="bookmark_peertube_empty">There are no videos in your favourites!</string>
|
||||
<string name="delete_channel">Remove channel</string>
|
||||
<string name="action_channel_confirm_delete">Are you sure to permanently delete this channel?</string>
|
||||
<string name="modify_playlists">Video in playlists</string>
|
||||
<string name="no_muted">No muted accounts!</string>
|
||||
<string name="error_display_name_channel">You must define a name and a display name for this channel!</string>
|
||||
<string name="action_channel_create">Create a channel</string>
|
||||
<string name="action_channel_edit">Edit channel</string>
|
||||
<string name="email_error_domain">Email addresses in %1$s are not allowed!</string>
|
||||
<string name="report_comment_size">Please, specify the reasons</string>
|
||||
<string name="not_logged_in">You must be authenticated to proceed to this action!</string>
|
||||
<string name="successful_report">The account has been reported!</string>
|
||||
<string name="successful_report_comment">The comment has been reported!</string>
|
||||
<string name="successful_video_report">The video has been reported!</string>
|
||||
<string name="password_length_error">The password must contain at least 6 characters!</string>
|
||||
<string name="muted_done">The account has been muted!</string>
|
||||
<string name="edit_video">Edit video</string>
|
||||
<string name="create_an_account">Create an account</string>
|
||||
<string name="followers_count">%1$s Subscribers</string>
|
||||
<string name="developer">Developer</string>
|
||||
<string name="about_vesrion">Release %1$s</string>
|
||||
<string name="about_the_app">About the app</string>
|
||||
<string name="Donate">Donate</string>
|
||||
<string name="source_code">Source code</string>
|
||||
<string name="issue_tracker">Issue tracker</string>
|
||||
<string name="action_instance_empty_content">No instances match these criteria</string>
|
||||
<string name="instances_picker">Instances picker</string>
|
||||
<string name="pickup_instance">Pick this instance</string>
|
||||
<string name="sensitive_video"> Sensitive videos</string>
|
||||
<string name="sensitive_content">Sensitive content: %1$s</string>
|
||||
<string name="followers_instance">%1$s instance followers</string>
|
||||
<string name="help">Help</string>
|
||||
<string name="pickup_categories">Pick categories</string>
|
||||
<string name="pickup_languages">Pick languages</string>
|
||||
<string name="notification_channel_name">Update information</string>
|
||||
<string name="add_account">Add an account</string>
|
||||
<string name="list_of_accounts">List of accounts</string>
|
||||
<string name="pause">Pause</string>
|
||||
<string name="play">Play</string>
|
||||
<string name="minimize">Minimize</string>
|
||||
<string name="fast_rewind">Fast rewind</string>
|
||||
<string name="fast_forward">Fast forward</string>
|
||||
<string name="set_video_minimize">Minimize videos size</string>
|
||||
<string name="set_video_minimize_description">Minimize videos size when the app is in background (Android N+)</string>
|
||||
<string name="set_video_language">Language filter</string>
|
||||
<string name="set_video_language_description">Filter videos with different languages</string>
|
||||
<string name="unfollow_confirm">您确定要取消订阅该账号吗?</string>
|
||||
<string name="title_video_peertube">视频标题</string>
|
||||
<string name="join_peertube">加入Peertube</string>
|
||||
<string name="agreement_check_peertube">我已至少年满十六岁,并且同意该实例的 %1$s</string>
|
||||
<string name="edit_profile">编辑个人资料</string>
|
||||
<string name="make_an_action">请选择其中一项操作</string>
|
||||
<string name="action_unfollow">取消订阅</string>
|
||||
<string name="display_nsfw_videos">显示敏感视频</string>
|
||||
<string name="fullscreen">全屏</string>
|
||||
<string name="bookmark_peertube_empty">您的收藏列表为空!</string>
|
||||
<string name="delete_channel">删除频道</string>
|
||||
<string name="action_channel_confirm_delete">您确定永久删除该频道吗?</string>
|
||||
<string name="modify_playlists">播放列表中的视频</string>
|
||||
<string name="no_muted">您尚未隐藏任何账号!</string>
|
||||
<string name="error_display_name_channel">该频道的名字与显示称呼不可为空!</string>
|
||||
<string name="action_channel_create">创建频道</string>
|
||||
<string name="action_channel_edit">编辑频道</string>
|
||||
<string name="email_error_domain">在 %1$s 中的电子邮件地址是不行的!</string>
|
||||
<string name="report_comment_size">请务必注明原因</string>
|
||||
<string name="not_logged_in">您必须登录来进行此操作!</string>
|
||||
<string name="successful_report">已成功报告该账号!</string>
|
||||
<string name="successful_report_comment">已成功报告该条评论!</string>
|
||||
<string name="successful_video_report">已成功报告该视频!</string>
|
||||
<string name="password_length_error">密码必须至少包含六个字符!</string>
|
||||
<string name="muted_done">已成功隐藏该账号!</string>
|
||||
<string name="edit_video">编辑视频</string>
|
||||
<string name="create_an_account">创建账号</string>
|
||||
<string name="followers_count">%1$s 名订阅者</string>
|
||||
<string name="developer">开发者</string>
|
||||
<string name="about_vesrion">%1$s 版本</string>
|
||||
<string name="about_the_app">关于本应用</string>
|
||||
<string name="Donate">捐赠</string>
|
||||
<string name="source_code">源码</string>
|
||||
<string name="issue_tracker">问题追踪</string>
|
||||
<string name="action_instance_empty_content">没有符合选定条件的实例</string>
|
||||
<string name="instances_picker">挑选实例</string>
|
||||
<string name="pickup_instance">选择该实例</string>
|
||||
<string name="sensitive_video"> 敏感视频</string>
|
||||
<string name="sensitive_content">敏感内容:%1$s</string>
|
||||
<string name="followers_instance">该实例共有 %1$s 名订阅者</string>
|
||||
<string name="help">帮助</string>
|
||||
<string name="pickup_categories">选择类别</string>
|
||||
<string name="pickup_languages">选择语言</string>
|
||||
<string name="notification_channel_name">更新信息</string>
|
||||
<string name="add_account">添加账号</string>
|
||||
<string name="list_of_accounts">账号列表</string>
|
||||
<string name="pause">暂停</string>
|
||||
<string name="play">播放</string>
|
||||
<string name="minimize">最小化</string>
|
||||
<string name="fast_rewind">快退</string>
|
||||
<string name="fast_forward">快进</string>
|
||||
<string name="set_video_minimize">最小化视频</string>
|
||||
<string name="set_video_minimize_description">当处于后台播放时,最小化视频(仅适用于 Android N 以及之后的版本)</string>
|
||||
<string name="set_video_language">语言筛选</string>
|
||||
<string name="set_video_language_description">筛选其他语言的视频</string>
|
||||
</resources>
|
||||
|
@ -1,15 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="title_home">Home</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="add_public_reply">Add a public reply</string>
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="other">%d 條回覆</item>
|
||||
</plurals>
|
||||
<string name="reply">回覆</string>
|
||||
<string name="set_theme">Theme</string>
|
||||
<string name="set_theme_description">Allow to change app theme</string>
|
||||
<string name="federation_issue">The video cannot be federated!</string>
|
||||
<string name="title_home">首頁</string>
|
||||
<string name="title_local">本機</string>
|
||||
<string name="title_discover">Discover</string>
|
||||
<string name="title_notifications">Notifications</string>
|
||||
<string name="title_recently_added">Recently added</string>
|
||||
<string name="title_trending">Trending</string>
|
||||
<string name="title_notifications">通知</string>
|
||||
<string name="title_recently_added">最近新增</string>
|
||||
<string name="title_trending">趨勢</string>
|
||||
<string name="title_most_liked">Most liked</string>
|
||||
<string name="toast_error">Oops! An error occurred!</string>
|
||||
<string name="title_muted">Muted</string>
|
||||
<string name="title_channel">Channels</string>
|
||||
<string name="title_channel">頻道</string>
|
||||
<string name="do_not_list">Do not list</string>
|
||||
<string name="blur">Blur</string>
|
||||
<string name="display">Display</string>
|
||||
@ -18,72 +26,72 @@
|
||||
<string name="not_valide_instance">This instance does not seem to be valid!</string>
|
||||
<string name="no_videos">No videos!</string>
|
||||
<string name="no_notifications">No notifications!</string>
|
||||
<string name="favicon">Favicon</string>
|
||||
<string name="open_with">Open with</string>
|
||||
<string name="favicon">網站圖示</string>
|
||||
<string name="open_with">選擇開啟工具</string>
|
||||
<string name="action_playlist_edit">Edit a playlist</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="upload_video">Upload</string>
|
||||
<string name="image_preview">Image preview</string>
|
||||
<string name="file_to_upload">Select the file to upload</string>
|
||||
<string name="channel">Channel</string>
|
||||
<string name="videos">Videos</string>
|
||||
<string name="channels">Channels</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="download">Download</string>
|
||||
<string name="profile_picture">Profile picture</string>
|
||||
<string name="update_video">Update video</string>
|
||||
<string name="close">關閉</string>
|
||||
<string name="upload_video">上傳</string>
|
||||
<string name="image_preview">圖片預覽</string>
|
||||
<string name="file_to_upload">選取要上傳的檔案</string>
|
||||
<string name="channel">頻道</string>
|
||||
<string name="videos">影片</string>
|
||||
<string name="channels">頻道</string>
|
||||
<string name="yes">是</string>
|
||||
<string name="no">否</string>
|
||||
<string name="cancel">取消</string>
|
||||
<string name="download">下載</string>
|
||||
<string name="profile_picture">個人檔案照片</string>
|
||||
<string name="update_video">更新影片</string>
|
||||
<string name="remove_from_playlist">Remove from playlist</string>
|
||||
<string name="date_seconds">%d s</string>
|
||||
<string name="date_minutes">%d m</string>
|
||||
<string name="date_hours">%d h</string>
|
||||
<string name="date_day">%d d</string>
|
||||
<string name="number_view_video">%s views</string>
|
||||
<string name="date_seconds">%d 秒</string>
|
||||
<string name="date_minutes">%d 分鐘</string>
|
||||
<string name="date_hours">%d 小時</string>
|
||||
<string name="date_day">%d 天</string>
|
||||
<string name="number_view_video">%s 次檢視</string>
|
||||
<string name="title_instance_login">Instance host</string>
|
||||
<string name="uploading">Uploading, please wait…</string>
|
||||
<string name="upload_video_success">The video has been uploaded!</string>
|
||||
<string name="toast_cancelled">Upload cancelled!</string>
|
||||
<string name="uploading">正在上傳,請稍候……</string>
|
||||
<string name="upload_video_success">影片已上傳!</string>
|
||||
<string name="toast_cancelled">上傳已取消!</string>
|
||||
<string name="video_uploaded_action">Tap here to edit the video data.</string>
|
||||
<string name="toot_select_image_error">An error occurred while selecting the media!</string>
|
||||
<string name="download_file">Download %1$s</string>
|
||||
<string name="action_privacy">Privacy</string>
|
||||
<string name="action_logout">Logout</string>
|
||||
<string name="login">Login</string>
|
||||
<string name="password">Password</string>
|
||||
<string name="email">Email</string>
|
||||
<string name="tags">Tags</string>
|
||||
<string name="validate">Validate</string>
|
||||
<string name="share_with">Share with</string>
|
||||
<string name="toot_select_image_error">選擇媒體時發生錯誤!</string>
|
||||
<string name="download_file">下載 %1$s</string>
|
||||
<string name="action_privacy">隱私權</string>
|
||||
<string name="action_logout">登出</string>
|
||||
<string name="login">登入</string>
|
||||
<string name="password">密碼</string>
|
||||
<string name="email">電子郵件</string>
|
||||
<string name="tags">標籤</string>
|
||||
<string name="validate">確認</string>
|
||||
<string name="share_with">分享給</string>
|
||||
<string name="shared_via">Shared via TubeLab</string>
|
||||
<string name="username">User name</string>
|
||||
<string name="settings">Settings</string>
|
||||
<string name="logout_account_confirmation">Are you sure you want to logout @%1$s@%2$s?</string>
|
||||
<string name="following">Following</string>
|
||||
<string name="followers">Followers</string>
|
||||
<string name="client_error">Unable to get client id!</string>
|
||||
<string name="toast_error_loading_account">An error occurred while switching between accounts!</string>
|
||||
<string name="toast_error_search">An error occurred while searching!</string>
|
||||
<string name="nothing_to_do">No action can be taken</string>
|
||||
<string name="action_follow">Follow</string>
|
||||
<string name="action_mute">Mute</string>
|
||||
<string name="search">Search</string>
|
||||
<string name="delete">Delete</string>
|
||||
<string name="action_lists_confirm_delete">Are you sure you want to permanently delete this list?</string>
|
||||
<string name="action_lists_delete">Delete list</string>
|
||||
<string name="no_comments">Be the first to leave a comment on this video with the top right button!</string>
|
||||
<string name="comment_no_allowed_peertube">Comments are not enabled on this video!</string>
|
||||
<string name="pickup_resolution">Pick up a resolution</string>
|
||||
<string name="bookmark_add_peertube">The video has been added to bookmarks!</string>
|
||||
<string name="bookmark_remove_peertube">The video has been removed from bookmarks!</string>
|
||||
<string name="information" tools:ignore="UnusedResources">Information</string>
|
||||
<string name="app_logo">Logo of the application</string>
|
||||
<string name="username">使用者名稱</string>
|
||||
<string name="settings">設定</string>
|
||||
<string name="logout_account_confirmation">您確定您要登出 @%1$s@%2$s 嗎?</string>
|
||||
<string name="following">正在關注</string>
|
||||
<string name="followers">關注者</string>
|
||||
<string name="client_error">無法取得客戶端 id!</string>
|
||||
<string name="toast_error_loading_account">在帳號間切換時發生錯誤!</string>
|
||||
<string name="toast_error_search">搜尋時發生錯誤!</string>
|
||||
<string name="nothing_to_do">無法採取行動</string>
|
||||
<string name="action_follow">關注</string>
|
||||
<string name="action_mute">靜音</string>
|
||||
<string name="search">搜尋</string>
|
||||
<string name="delete">刪除</string>
|
||||
<string name="action_lists_confirm_delete">您確定您想要永久刪除此列表嗎?</string>
|
||||
<string name="action_lists_delete">刪除列表</string>
|
||||
<string name="no_comments">使用右上角的按鈕來成為第一個對這部影片留下評論的人!</string>
|
||||
<string name="comment_no_allowed_peertube">此影片未啟用評論!</string>
|
||||
<string name="pickup_resolution">選擇解析度</string>
|
||||
<string name="bookmark_add_peertube">影片已加入到書籤中!</string>
|
||||
<string name="bookmark_remove_peertube">影片已從書籤中移除!</string>
|
||||
<string name="information" tools:ignore="UnusedResources">資訊</string>
|
||||
<string name="app_logo">應用程式圖示</string>
|
||||
<!-- languages not translated -->
|
||||
<string name="subscriptions">Subscriptions</string>
|
||||
<string name="delete_comment">Delete a comment</string>
|
||||
<string name="delete_comment_confirm">Are you sure to delete this comment?</string>
|
||||
<string name="set_video_mode">Mode for videos</string>
|
||||
<string name="filter">Filter</string>
|
||||
<string name="subscriptions">訂閱</string>
|
||||
<string name="delete_comment">刪除留言</string>
|
||||
<string name="delete_comment_confirm">您想要刪除此留言嗎?</string>
|
||||
<string name="set_video_mode">影片模式</string>
|
||||
<string name="filter">過濾</string>
|
||||
<string name="sepia_search">Sepia search</string>
|
||||
<string name="sepia_element_nsfw">Display sensitive content</string>
|
||||
<string name="sepia_element_published_date">Published date</string>
|
||||
@ -110,31 +118,31 @@
|
||||
<string name="sort_by">Sort by</string>
|
||||
<string name="sepia_search_hint">Keyword, channel, video, etc.</string>
|
||||
<string name="sepia_indication">Sepia Search displays videos and channels that match your search but is not the publisher, nor the owner. If you notice any problems with a video, report it to the administrators on the PeerTube website where the video is published.</string>
|
||||
<string name="my_videos">My videos</string>
|
||||
<string name="title">Title</string>
|
||||
<string name="license">License</string>
|
||||
<string name="category">Category</string>
|
||||
<string name="language">Language</string>
|
||||
<string name="peertube_nsfw">This video contains mature or explicit content</string>
|
||||
<string name="peertube_enable_comments">Enable video comments</string>
|
||||
<string name="description">Description</string>
|
||||
<string name="toast_peertube_video_updated">The video has been updated!</string>
|
||||
<string name="my_videos">我的影片</string>
|
||||
<string name="title">標題</string>
|
||||
<string name="license">授權條款</string>
|
||||
<string name="category">分類</string>
|
||||
<string name="language">語言</string>
|
||||
<string name="peertube_nsfw">這個影片包含成人或裸露的內容</string>
|
||||
<string name="peertube_enable_comments">啟用影片留言</string>
|
||||
<string name="description">描述</string>
|
||||
<string name="toast_peertube_video_updated">影片已更新!</string>
|
||||
<string name="register_account">Register an account</string>
|
||||
<string name="email_address">Email address</string>
|
||||
<string name="preview">Preview</string>
|
||||
<string name="change_preview">Change preview</string>
|
||||
<string name="name">Name</string>
|
||||
<string name="display_more">Display more</string>
|
||||
<string name="display_more">顯示更多</string>
|
||||
<string name="no_channels">No channels!</string>
|
||||
<string name="report_helper">Some explanations about your report…</string>
|
||||
<string name="report_video">Report video</string>
|
||||
<string name="report">Report</string>
|
||||
<string name="report">檢舉</string>
|
||||
<string name="change_instance">Pick another instance</string>
|
||||
<string name="my_history">History</string>
|
||||
<string name="my_history">歷史紀錄</string>
|
||||
<string name="edit">Edit</string>
|
||||
<string name="video_settings">Video settings</string>
|
||||
<string name="app_interface">Interface</string>
|
||||
<string name="set_cache_mode">Cache</string>
|
||||
<string name="app_interface">界面</string>
|
||||
<string name="set_cache_mode">快取</string>
|
||||
<string name="set_video_cache_description">Set the cache for videos (default 100Mb)</string>
|
||||
<string name="set_video_quality_description">Define a default quality for videos</string>
|
||||
<string name="set_quality_mode">Resolution for videos</string>
|
||||
@ -143,68 +151,76 @@
|
||||
<string name="pickup_captions">Pick captions</string>
|
||||
<string name="none">None</string>
|
||||
<string name="set_video_mode_description">Allows to change mode for playing videos (default, streaming or via a browser).</string>
|
||||
<string name="delete_video">Delete video</string>
|
||||
<string name="delete_video_confirmation">Are you sure to delete this video?</string>
|
||||
<string name="no_video_to_display">No videos to display!</string>
|
||||
<string name="share">Share</string>
|
||||
<string name="peertube_comment_on_video"><![CDATA[<b>%1$s</b> commented your video <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_channel"><![CDATA[<b>%1$s</b> is following your channel <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_account"><![CDATA[<b>%1$s</b> is following your account]]></string>
|
||||
<string name="peertube_video_published"><![CDATA[Your video <b>%1$s</b> has been published]]></string>
|
||||
<string name="peertube_video_import_success"><![CDATA[Your video import <b>%1$s</b> succeeded]]></string>
|
||||
<string name="peertube_video_import_error"><![CDATA[Your video import <b>%1$s</b> failed]]></string>
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> published a new video: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Your video <b>%1$s</b> has been blacklisted]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Your video <b>%1$s</b> has been unblacklisted]]></string>
|
||||
<string name="delete_account_comment">Delete account comments</string>
|
||||
<string name="delete_account_comment_confirm">Are you sure you want to remove all the comments of this account?</string>
|
||||
<string name="delete_video">刪除影片</string>
|
||||
<string name="delete_video_confirmation">您確定要刪除此部影片嗎?</string>
|
||||
<string name="no_video_to_display">沒有影片</string>
|
||||
<string name="share">分享</string>
|
||||
<string name="peertube_comment_on_video"><![CDATA[<b>%1$s</b> 已在您的影片留言 <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_channel"><![CDATA[<b>%1$s</b> 追蹤您的頻道 <b>%2$s</b>]]></string>
|
||||
<string name="peertube_follow_account"><![CDATA[<b>%1$s</b> 追蹤您的帳號]]></string>
|
||||
<string name="peertube_video_published"><![CDATA[您的影片 <b>%1$s</b> 已發佈]]></string>
|
||||
<string name="peertube_video_import_success"><![CDATA[您的影片匯入 <b>%1$s</b> 成功]]></string>
|
||||
<string name="peertube_video_import_error"><![CDATA[您的影片匯入 <b>%1$s</b> 失敗]]></string>
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> 發佈了新影片:<b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[您的影片 <b>%1$s</b> 已被加入黑名單]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[您的影片 <b>%1$s</b> 已被解除黑名單]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Add a public comment</string>
|
||||
<string name="send_comment">Send comment</string>
|
||||
<string name="all">All</string>
|
||||
<string name="add_public_comment">新增公開留言</string>
|
||||
<string name="send_comment">傳送留言</string>
|
||||
<string name="all">全部</string>
|
||||
<!-- end languages -->
|
||||
<string name="playlists">Playlists</string>
|
||||
<string name="display_name">Display name</string>
|
||||
<string name="playlists">播放清單</string>
|
||||
<string name="display_name">顯示名稱</string>
|
||||
<string name="action_playlist_add">You don\'t have any playlists. Tap on the \"+\" icon to add a new playlist</string>
|
||||
<string name="error_display_name">You must provide a display name!</string>
|
||||
<string name="error_channel_mandatory">The channel is required when the playlist is public.</string>
|
||||
<string name="action_playlist_create">Create a playlist</string>
|
||||
<string name="action_playlist_empty_content">There is nothing in this playlist yet.</string>
|
||||
<string name="password_confirm">Confirm password</string>
|
||||
<string name="agreement_check">I agree to %1$s and %2$s</string>
|
||||
<string name="server_rules">server rules</string>
|
||||
<string name="tos">terms of service</string>
|
||||
<string name="sign_up">Sign up</string>
|
||||
<string name="all_field_filled">Please, fill all the fields!</string>
|
||||
<string name="password_error">Passwords don\'t match!</string>
|
||||
<string name="email_error">The email doesn\'t seem to be valid!</string>
|
||||
<string name="email_indicator">You will be sent a confirmation e-mail</string>
|
||||
<string name="password_indicator">Use at least 8 characters</string>
|
||||
<string name="password_too_short">Password should contain at least 8 characters</string>
|
||||
<string name="username_error">Username should only contain letters, numbers and underscores</string>
|
||||
<string name="account_created">Account created!</string>
|
||||
<string name="error_display_name">您必須提供顯示名稱!</string>
|
||||
<string name="error_channel_mandatory">當播放清單公開時,頻道為必填。</string>
|
||||
<string name="action_playlist_create">建立播放清單</string>
|
||||
<string name="action_playlist_empty_content">目前播放清單中還沒有東西。</string>
|
||||
<string name="password_confirm">確認密碼</string>
|
||||
<string name="agreement_check">我同意 %1$s 和 %2$s</string>
|
||||
<string name="server_rules">伺服器規則</string>
|
||||
<string name="tos">服務條款</string>
|
||||
<string name="sign_up">註冊</string>
|
||||
<string name="all_field_filled">請填寫所有欄位!</string>
|
||||
<string name="password_error">密碼不相符!</string>
|
||||
<string name="email_error">電子郵件似乎是無效的!</string>
|
||||
<string name="email_indicator">您將會收到一封確認用的電子郵件</string>
|
||||
<string name="password_indicator">使用至少 8 個字元</string>
|
||||
<string name="password_too_short">密碼應該包含至少 8 個字元</string>
|
||||
<string name="username_error">使用者名稱應僅包含字母、數字與底線</string>
|
||||
<string name="account_created">已建立帳號!</string>
|
||||
<string name="account_created_message"> Your account has been created!\n\n
|
||||
Think to validate your email within the 48 next hours.\n\n
|
||||
You can now connect your account by writing <b>%1$s</b> in the first field and tap on <b>Connect</b>.\n\n
|
||||
<b>Important</b>: If your instance required validation, you will receive an email once it is validated!
|
||||
</string>
|
||||
<string name="account">Account</string>
|
||||
<string name="report_account">Report account</string>
|
||||
<string name="account">帳號</string>
|
||||
<string name="report_account">回報帳號</string>
|
||||
<string-array name="settings_video_mode">
|
||||
<item>Normal</item>
|
||||
<item>正常</item>
|
||||
<item>Torrent</item>
|
||||
<item>Webview</item>
|
||||
<item>Direct stream</item>
|
||||
</string-array>
|
||||
<string-array name="settings_theme">
|
||||
<item>亮</item>
|
||||
<item>暗</item>
|
||||
<item>Automatic</item>
|
||||
</string-array>
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
<item>Medium</item>
|
||||
<item>Low</item>
|
||||
</string-array>
|
||||
<string name="unfollow_confirm">Do you want to unfollow this account?</string>
|
||||
<string name="title_video_peertube">Title for the video</string>
|
||||
<string name="join_peertube">Join Peertube</string>
|
||||
<string name="agreement_check_peertube">I am at least 16 years old and agree to the %1$s of this instance</string>
|
||||
<string name="edit_profile">Edit profile</string>
|
||||
<string name="make_an_action">Make an action</string>
|
||||
<string name="action_unfollow">Unfollow</string>
|
||||
<string name="unfollow_confirm">您想要取消追蹤此帳號嗎?</string>
|
||||
<string name="title_video_peertube">影片標題</string>
|
||||
<string name="join_peertube">加入 Peertube</string>
|
||||
<string name="agreement_check_peertube">我至少 16 歲並同意此站台的 %1$s</string>
|
||||
<string name="edit_profile">編輯個人資料</string>
|
||||
<string name="make_an_action">做動作</string>
|
||||
<string name="action_unfollow">取消追蹤</string>
|
||||
<string name="display_nsfw_videos">Display sensitive videos</string>
|
||||
<string name="fullscreen">Fullscreen</string>
|
||||
<string name="bookmark_peertube_empty">There are no videos in your favourites!</string>
|
||||
@ -226,12 +242,12 @@
|
||||
<string name="edit_video">Edit video</string>
|
||||
<string name="create_an_account">Create an account</string>
|
||||
<string name="followers_count">%1$s Subscribers</string>
|
||||
<string name="developer">Developer</string>
|
||||
<string name="about_vesrion">Release %1$s</string>
|
||||
<string name="about_the_app">About the app</string>
|
||||
<string name="developer">開發者</string>
|
||||
<string name="about_vesrion">釋出 %1$s</string>
|
||||
<string name="about_the_app">關於應用程式</string>
|
||||
<string name="Donate">Donate</string>
|
||||
<string name="source_code">Source code</string>
|
||||
<string name="issue_tracker">Issue tracker</string>
|
||||
<string name="source_code">原始碼</string>
|
||||
<string name="issue_tracker">議題追蹤程式</string>
|
||||
<string name="action_instance_empty_content">No instances match these criteria</string>
|
||||
<string name="instances_picker">Instances picker</string>
|
||||
<string name="pickup_instance">Pick this instance</string>
|
||||
@ -242,7 +258,7 @@
|
||||
<string name="pickup_categories">Pick categories</string>
|
||||
<string name="pickup_languages">Pick languages</string>
|
||||
<string name="notification_channel_name">Update information</string>
|
||||
<string name="add_account">Add an account</string>
|
||||
<string name="add_account">新增帳號</string>
|
||||
<string name="list_of_accounts">List of accounts</string>
|
||||
<string name="pause">Pause</string>
|
||||
<string name="play">Play</string>
|
||||
|
12
app/src/full/res/values/colors.xml
Normal file
12
app/src/full/res/values/colors.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="colorPrimary">#212529</color>
|
||||
<color name="colorPrimaryDark">#000000</color>
|
||||
<color name="colorAccent">#F2690D</color>
|
||||
<color name="tag_color">#bbF2690D</color>
|
||||
<color name="tag_color_text">#FAFAFA</color>
|
||||
<color name="positive_thumbs">#2b90d9</color>
|
||||
<color name="negative_thumbs">#F44336</color>
|
||||
|
||||
<color name="red_1">#F44336</color>
|
||||
</resources>
|
@ -5,8 +5,18 @@
|
||||
<string name="set_video_language_choice" translatable="false">set_video_language_choice</string>
|
||||
<string name="set_video_quality_choice" translatable="false">set_video_quality_choice</string>
|
||||
<string name="set_video_cache_choice" translatable="false">set_video_cache_choice</string>
|
||||
<string name="set_theme_choice" translatable="false">set_theme_choice</string>
|
||||
|
||||
<string name="add_public_reply">Add a public reply</string>
|
||||
|
||||
<plurals name="number_of_replies">
|
||||
<item quantity="one">%d reply</item>
|
||||
<item quantity="other">%d replies</item>
|
||||
</plurals>
|
||||
<string name="reply">Reply</string>
|
||||
<string name="set_theme">Theme</string>
|
||||
<string name="set_theme_description">Allow to change app theme</string>
|
||||
<string name="federation_issue">The video cannot be federated!</string>
|
||||
<string name="title_home">Home</string>
|
||||
<string name="title_local">Local</string>
|
||||
<string name="title_discover">Discover</string>
|
||||
@ -189,6 +199,8 @@
|
||||
<string name="none">None</string>
|
||||
<string name="set_video_mode_description">Allows to change mode for playing videos (default, streaming or via a browser).</string>
|
||||
|
||||
<string name="delete_account_comment">Delete account comments</string>
|
||||
<string name="delete_account_comment_confirm">Are you sure you want to remove all the comments of this account?</string>
|
||||
|
||||
<string name="delete_video">Delete video</string>
|
||||
<string name="delete_video_confirmation">Are you sure to delete this video?</string>
|
||||
@ -204,6 +216,7 @@
|
||||
<string name="peertube_video_from_subscription"><![CDATA[<b>%1$s</b> published a new video: <b>%2$s</b>]]></string>
|
||||
<string name="peertube_video_blacklist"><![CDATA[Your video <b>%1$s</b> has been blacklisted]]></string>
|
||||
<string name="peertube_video_unblacklist"><![CDATA[Your video <b>%1$s</b> has been unblacklisted]]></string>
|
||||
<string name="peertube_video_report_success"><![CDATA[Your abuse report <b>%1$s</b> has been accepted]]></string>
|
||||
<string name="peertube_video_abuse"><![CDATA[New abuse report for video: <b>%1$s</b>]]></string>
|
||||
<string name="add_public_comment">Add a public comment</string>
|
||||
<string name="send_comment">Send comment</string>
|
||||
@ -245,6 +258,14 @@
|
||||
<item>Direct stream</item>
|
||||
</string-array>
|
||||
|
||||
|
||||
<string-array name="settings_theme">
|
||||
<item>Light</item>
|
||||
<item>Dark</item>
|
||||
<item>Automatic</item>
|
||||
</string-array>
|
||||
|
||||
|
||||
<string-array name="settings_video_quality">
|
||||
<item>High</item>
|
||||
<item>Medium</item>
|
||||
|
@ -1,21 +0,0 @@
|
||||
<resources>
|
||||
|
||||
<!-- Base application theme. -->
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
|
||||
<!-- Customize your theme here. -->
|
||||
<item name="colorPrimary">@color/colorPrimary_full</item>
|
||||
<item name="colorPrimaryDark">@color/colorPrimaryDark_full</item>
|
||||
<item name="colorAccent">@color/colorAccent_full</item>
|
||||
</style>
|
||||
|
||||
<style name="AppThemeNoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<!-- Customize your theme here. -->
|
||||
<item name="colorPrimary">@color/colorPrimary_full</item>
|
||||
<item name="colorPrimaryDark">@color/colorPrimaryDark_full</item>
|
||||
<item name="colorAccent">@color/colorAccent_full</item>
|
||||
</style>
|
||||
|
||||
<style name="progress" parent="SpinKitView.Circle" />
|
||||
|
||||
<style name="progressBottom" parent="SpinKitView.ThreeBounce" />
|
||||
</resources>
|
@ -58,6 +58,11 @@
|
||||
android:configChanges="orientation|screenSize"
|
||||
android:label="@string/app_name"
|
||||
android:windowSoftInputMode="stateAlwaysHidden" />
|
||||
<activity
|
||||
android:name=".ShowAccountActivity"
|
||||
android:configChanges="orientation|screenSize"
|
||||
android:label="@string/app_name"
|
||||
android:windowSoftInputMode="stateAlwaysHidden" />
|
||||
<activity
|
||||
android:name=".AccountActivity"
|
||||
android:configChanges="orientation|screenSize"
|
||||
|
2684
app/src/main/assets/emoji.csv
Normal file
2684
app/src/main/assets/emoji.csv
Normal file
File diff suppressed because it is too large
Load Diff
@ -15,12 +15,16 @@ package app.fedilab.fedilabtube;
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
import androidx.multidex.MultiDex;
|
||||
import androidx.multidex.MultiDexApplication;
|
||||
|
||||
import net.gotev.uploadservice.UploadService;
|
||||
|
||||
import app.fedilab.fedilabtube.helper.Helper;
|
||||
import app.fedilab.fedilabtube.helper.ThemeHelper;
|
||||
|
||||
public class FedilabTube extends MultiDexApplication {
|
||||
@Override
|
||||
protected void attachBaseContext(Context base) {
|
||||
@ -29,6 +33,9 @@ public class FedilabTube extends MultiDexApplication {
|
||||
MultiDex.install(FedilabTube.this);
|
||||
|
||||
UploadService.NAMESPACE = BuildConfig.APPLICATION_ID;
|
||||
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
int themePref = sharedpreferences.getInt(Helper.SET_THEME, Helper.DEFAULT_MODE);
|
||||
ThemeHelper.switchTo(themePref);
|
||||
}
|
||||
|
||||
|
||||
|
@ -117,7 +117,6 @@ public class InstancePickerActivity extends AppCompatActivity {
|
||||
pickup_languages.setOnClickListener(v -> {
|
||||
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(InstancePickerActivity.this);
|
||||
|
||||
|
||||
int i = 0;
|
||||
if (languages.size() > 0) {
|
||||
Iterator<Map.Entry<String, String>> it = languages.entrySet().iterator();
|
||||
@ -175,7 +174,7 @@ public class InstancePickerActivity extends AppCompatActivity {
|
||||
});
|
||||
}
|
||||
|
||||
if (peertubeInformation != null && peertubeInformation.getLanguages() != null) {
|
||||
if (peertubeInformation != null && peertubeInformation.getCategories() != null) {
|
||||
LinkedHashMap<Integer, String> categories = new LinkedHashMap<>(peertubeInformation.getCategories());
|
||||
checkedItemsCategory = new boolean[categories.size()];
|
||||
itemsLabelCategory = new String[categories.size()];
|
||||
|
@ -94,6 +94,11 @@ public class LoginActivity extends AppCompatActivity {
|
||||
login_passwd = findViewById(R.id.login_passwd);
|
||||
|
||||
if (Helper.isTablet(LoginActivity.this)) {
|
||||
|
||||
ViewGroup.LayoutParams layoutParamsI = login_instance_container.getLayoutParams();
|
||||
layoutParamsI.width = (int) Helper.convertDpToPixel(300, LoginActivity.this);
|
||||
login_instance_container.setLayoutParams(layoutParamsI);
|
||||
|
||||
TextInputLayout login_uid_container = findViewById(R.id.login_uid_container);
|
||||
ViewGroup.LayoutParams layoutParamsU = login_uid_container.getLayoutParams();
|
||||
layoutParamsU.width = (int) Helper.convertDpToPixel(300, LoginActivity.this);
|
||||
@ -134,6 +139,7 @@ public class LoginActivity extends AppCompatActivity {
|
||||
String[] emailArray = login_uid.getText().toString().split("@");
|
||||
if (emailArray.length > 1 && !Arrays.asList(Helper.valideEmails).contains(emailArray[1])) {
|
||||
Toasty.error(LoginActivity.this, getString(R.string.email_error_domain, emailArray[1])).show();
|
||||
connectionButton.setEnabled(true);
|
||||
return;
|
||||
}
|
||||
host = emailArray[1];
|
||||
@ -141,6 +147,7 @@ public class LoginActivity extends AppCompatActivity {
|
||||
} else {
|
||||
if (login_instance == null || login_instance.getText() == null || login_instance.getText().toString().trim().length() == 0) {
|
||||
Toasty.error(LoginActivity.this, getString(R.string.not_valide_instance)).show();
|
||||
connectionButton.setEnabled(true);
|
||||
return;
|
||||
}
|
||||
instance = host = login_instance.getText().toString().trim().toLowerCase();
|
||||
@ -215,6 +222,7 @@ public class LoginActivity extends AppCompatActivity {
|
||||
} catch (Error error) {
|
||||
Error.displayError(LoginActivity.this, error);
|
||||
error.printStackTrace();
|
||||
runOnUiThread(() -> connectionButton.setEnabled(true));
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
|
@ -22,6 +22,7 @@ import android.content.SharedPreferences;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.EditText;
|
||||
@ -73,35 +74,30 @@ public class MainActivity extends AppCompatActivity {
|
||||
private DisplayVideosFragment recentFragment, locaFragment, trendingFragment, subscriptionFragment, mostLikedFragment;
|
||||
private DisplayOverviewFragment overviewFragment;
|
||||
|
||||
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
|
||||
private final BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
|
||||
= item -> {
|
||||
DisplayVideosFragment displayVideosFragment = null;
|
||||
switch (item.getItemId()) {
|
||||
case R.id.navigation_subscription:
|
||||
displayVideosFragment = subscriptionFragment;
|
||||
setTitle(R.string.subscriptions);
|
||||
break;
|
||||
case R.id.navigation_trending:
|
||||
setTitle(R.string.title_trending);
|
||||
displayVideosFragment = trendingFragment;
|
||||
break;
|
||||
case R.id.navigation_most_liked:
|
||||
setTitle(R.string.title_most_liked);
|
||||
displayVideosFragment = mostLikedFragment;
|
||||
break;
|
||||
case R.id.navigation_recently_added:
|
||||
setTitle(R.string.title_recently_added);
|
||||
displayVideosFragment = recentFragment;
|
||||
break;
|
||||
case R.id.navigation_local:
|
||||
setTitle(R.string.title_local);
|
||||
displayVideosFragment = locaFragment;
|
||||
break;
|
||||
case R.id.navigation_discover:
|
||||
setTitle(R.string.title_discover);
|
||||
fm.beginTransaction().hide(active).show(overviewFragment).commit();
|
||||
active = overviewFragment;
|
||||
return true;
|
||||
int itemId = item.getItemId();
|
||||
if (itemId == R.id.navigation_subscription) {
|
||||
displayVideosFragment = subscriptionFragment;
|
||||
setTitle(R.string.subscriptions);
|
||||
} else if (itemId == R.id.navigation_trending) {
|
||||
setTitle(R.string.title_trending);
|
||||
displayVideosFragment = trendingFragment;
|
||||
} else if (itemId == R.id.navigation_most_liked) {
|
||||
setTitle(R.string.title_most_liked);
|
||||
displayVideosFragment = mostLikedFragment;
|
||||
} else if (itemId == R.id.navigation_recently_added) {
|
||||
setTitle(R.string.title_recently_added);
|
||||
displayVideosFragment = recentFragment;
|
||||
} else if (itemId == R.id.navigation_local) {
|
||||
setTitle(R.string.title_local);
|
||||
displayVideosFragment = locaFragment;
|
||||
} else if (itemId == R.id.navigation_discover) {
|
||||
setTitle(R.string.title_discover);
|
||||
fm.beginTransaction().hide(active).show(overviewFragment).commit();
|
||||
active = overviewFragment;
|
||||
return true;
|
||||
}
|
||||
if (displayVideosFragment != null) {
|
||||
fm.beginTransaction().hide(active).show(displayVideosFragment).commit();
|
||||
@ -125,19 +121,19 @@ public class MainActivity extends AppCompatActivity {
|
||||
navView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
|
||||
|
||||
Fragment fragment = getSupportFragmentManager().findFragmentByTag("5");
|
||||
if(fragment != null)
|
||||
if (fragment != null)
|
||||
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
|
||||
fragment = getSupportFragmentManager().findFragmentByTag("4");
|
||||
if(fragment != null)
|
||||
if (fragment != null)
|
||||
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
|
||||
fragment = getSupportFragmentManager().findFragmentByTag("3");
|
||||
if(fragment != null)
|
||||
if (fragment != null)
|
||||
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
|
||||
fragment = getSupportFragmentManager().findFragmentByTag("2");
|
||||
if(fragment != null)
|
||||
if (fragment != null)
|
||||
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
|
||||
fragment = getSupportFragmentManager().findFragmentByTag("1");
|
||||
if(fragment != null)
|
||||
if (fragment != null)
|
||||
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
|
||||
|
||||
recentFragment = new DisplayVideosFragment();
|
||||
@ -167,7 +163,7 @@ public class MainActivity extends AppCompatActivity {
|
||||
|
||||
overviewFragment = new DisplayOverviewFragment();
|
||||
|
||||
if( active == null) {
|
||||
if (active == null) {
|
||||
active = overviewFragment;
|
||||
}
|
||||
fm.beginTransaction().add(R.id.nav_host_fragment, locaFragment, "5").hide(locaFragment).commit();
|
||||
@ -178,10 +174,10 @@ public class MainActivity extends AppCompatActivity {
|
||||
fm.beginTransaction().add(R.id.nav_host_fragment, trendingFragment, "2").hide(trendingFragment).commit();
|
||||
fm.beginTransaction().add(R.id.nav_host_fragment, overviewFragment, "1").commit();
|
||||
}
|
||||
toolbar.setOnClickListener(v->{
|
||||
if(active instanceof DisplayVideosFragment) {
|
||||
toolbar.setOnClickListener(v -> {
|
||||
if (active instanceof DisplayVideosFragment) {
|
||||
((DisplayVideosFragment) active).scrollToTop();
|
||||
}else if(active instanceof DisplayOverviewFragment) {
|
||||
} else if (active instanceof DisplayOverviewFragment) {
|
||||
((DisplayOverviewFragment) active).scrollToTop();
|
||||
}
|
||||
});
|
||||
@ -210,12 +206,15 @@ public class MainActivity extends AppCompatActivity {
|
||||
runOnUiThread(() -> Helper.logoutCurrentUser(MainActivity.this, account));
|
||||
return;
|
||||
}
|
||||
|
||||
runOnUiThread(() -> {
|
||||
//To avoid a token issue with subscriptions, adding fragment is done when the token is refreshed.
|
||||
fm.beginTransaction().add(R.id.nav_host_fragment, recentFragment, "4").hide(recentFragment).commit();
|
||||
fm.beginTransaction().add(R.id.nav_host_fragment, trendingFragment, "3").hide(trendingFragment).commit();
|
||||
fm.beginTransaction().add(R.id.nav_host_fragment, subscriptionFragment, "2").hide(subscriptionFragment).commit();
|
||||
fm.beginTransaction().add(R.id.nav_host_fragment, overviewFragment, "1").commit();
|
||||
new Handler().post(() -> {
|
||||
fm.beginTransaction().add(R.id.nav_host_fragment, recentFragment, "4").hide(recentFragment).commitAllowingStateLoss();
|
||||
fm.beginTransaction().add(R.id.nav_host_fragment, trendingFragment, "3").hide(trendingFragment).commitAllowingStateLoss();
|
||||
fm.beginTransaction().add(R.id.nav_host_fragment, subscriptionFragment, "2").hide(subscriptionFragment).commitAllowingStateLoss();
|
||||
fm.beginTransaction().add(R.id.nav_host_fragment, overviewFragment, "1").commitAllowingStateLoss();
|
||||
});
|
||||
});
|
||||
|
||||
UserMe userMe = new RetrofitPeertubeAPI(MainActivity.this, instance, token.getAccess_token()).verifyCredentials();
|
||||
@ -226,16 +225,19 @@ public class MainActivity extends AppCompatActivity {
|
||||
editor.putString(Helper.PREF_KEY_NAME, account.getUsername());
|
||||
//Sync languages from server
|
||||
List<String> videoLanguageServer = userMe.getVideoLanguages();
|
||||
Set<String> videoLanguageServerSet = new TreeSet<>(videoLanguageServer);
|
||||
videoLanguageServerSet.addAll(videoLanguageServer);
|
||||
Set<String> videoLanguageLocal = sharedpreferences.getStringSet(getString(R.string.set_video_language_choice), null);
|
||||
if (videoLanguageServerSet.size() > 0 && videoLanguageLocal != null) {
|
||||
videoLanguageServer.addAll(videoLanguageLocal);
|
||||
if (videoLanguageServer != null) {
|
||||
Set<String> videoLanguageServerSet = new TreeSet<>(videoLanguageServer);
|
||||
videoLanguageServerSet.addAll(videoLanguageServer);
|
||||
Set<String> videoLanguageLocal = sharedpreferences.getStringSet(getString(R.string.set_video_language_choice), null);
|
||||
if (videoLanguageServerSet.size() > 0 && videoLanguageLocal != null) {
|
||||
videoLanguageServer.addAll(videoLanguageLocal);
|
||||
}
|
||||
editor.putStringSet(getString(R.string.set_video_language_choice), videoLanguageServerSet);
|
||||
editor.apply();
|
||||
}
|
||||
editor.putStringSet(getString(R.string.set_video_language_choice), videoLanguageServerSet);
|
||||
editor.apply();
|
||||
}
|
||||
} catch (Error error) {
|
||||
runOnUiThread(() -> Helper.logoutCurrentUser(MainActivity.this, account));
|
||||
error.printStackTrace();
|
||||
}
|
||||
}).start();
|
||||
@ -246,7 +248,7 @@ public class MainActivity extends AppCompatActivity {
|
||||
}
|
||||
startInForeground();
|
||||
|
||||
if(BuildConfig.google_restriction && BuildConfig.full_instances) {
|
||||
if (BuildConfig.google_restriction && BuildConfig.full_instances) {
|
||||
RateThisApp.onCreate(this);
|
||||
RateThisApp.showRateDialogIfNeeded(this);
|
||||
}
|
||||
@ -314,7 +316,7 @@ public class MainActivity extends AppCompatActivity {
|
||||
settingsItem.setVisible(true);
|
||||
mostLikedItem.setVisible(false);
|
||||
}
|
||||
if( !BuildConfig.full_instances) {
|
||||
if (!BuildConfig.full_instances) {
|
||||
sepiaSearchItem.setVisible(false);
|
||||
}
|
||||
return true;
|
||||
@ -371,11 +373,11 @@ public class MainActivity extends AppCompatActivity {
|
||||
Intent intent = new Intent(MainActivity.this, AllPlaylistsActivity.class);
|
||||
startActivity(intent);
|
||||
return true;
|
||||
}else if(item.getItemId() == R.id.action_sepia_search) {
|
||||
} else if (item.getItemId() == R.id.action_sepia_search) {
|
||||
Intent intent = new Intent(MainActivity.this, SepiaSearchActivity.class);
|
||||
startActivity(intent);
|
||||
return true;
|
||||
}else if (item.getItemId() == R.id.action_about) {
|
||||
} else if (item.getItemId() == R.id.action_about) {
|
||||
Intent intent = new Intent(MainActivity.this, AboutActivity.class);
|
||||
startActivity(intent);
|
||||
return true;
|
||||
@ -383,7 +385,7 @@ public class MainActivity extends AppCompatActivity {
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
public void setActive(DisplayVideosFragment displayVideosFragment){
|
||||
public void setActive(DisplayVideosFragment displayVideosFragment) {
|
||||
this.active = displayVideosFragment;
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -145,9 +145,11 @@ public class PeertubeRegisterActivity extends AppCompatActivity {
|
||||
return;
|
||||
}
|
||||
String[] emailArray = email.getText().toString().split("@");
|
||||
if (emailArray.length > 1 && !Arrays.asList(Helper.valideEmails).contains(emailArray[1])) {
|
||||
Toasty.error(PeertubeRegisterActivity.this, getString(R.string.email_error_domain, emailArray[1])).show();
|
||||
return;
|
||||
if (!BuildConfig.full_instances) {
|
||||
if (emailArray.length > 1 && !Arrays.asList(Helper.valideEmails).contains(emailArray[1])) {
|
||||
Toasty.error(PeertubeRegisterActivity.this, getString(R.string.email_error_domain, emailArray[1])).show();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (password.getText().toString().trim().length() < 8) {
|
||||
@ -175,6 +177,9 @@ public class PeertubeRegisterActivity extends AppCompatActivity {
|
||||
String host = emailArray[1];
|
||||
instance = Helper.getPeertubeUrl(host);
|
||||
}
|
||||
if (instance != null) {
|
||||
instance = instance.toLowerCase().trim();
|
||||
}
|
||||
|
||||
AccountCreation accountCreation = new AccountCreation();
|
||||
accountCreation.setEmail(email.getText().toString().trim());
|
||||
|
@ -19,7 +19,6 @@ import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
@ -56,7 +55,7 @@ public class SepiaSearchActivity extends AppCompatActivity {
|
||||
|
||||
private SepiaSearch sepiaSearchVideo, sepiaSearchChannel;
|
||||
private TagsEditText sepia_element_all_of_tags, sepia_element_one_of_tags;
|
||||
private MaterialSearchBar searchBar;
|
||||
private MaterialSearchBar searchBar;
|
||||
private ConstraintLayout filter_elements;
|
||||
|
||||
@Override
|
||||
@ -80,81 +79,67 @@ public class SepiaSearchActivity extends AppCompatActivity {
|
||||
Button filter = findViewById(R.id.filter);
|
||||
filter_elements = findViewById(R.id.filter_elements);
|
||||
filter.setOnClickListener(view -> {
|
||||
if( filter_elements.getVisibility() == View.VISIBLE) {
|
||||
if (filter_elements.getVisibility() == View.VISIBLE) {
|
||||
filter_elements.setVisibility(View.GONE);
|
||||
}else{
|
||||
} else {
|
||||
filter_elements.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
|
||||
RadioGroup sepia_element_nsfw = findViewById(R.id.sepia_element_nsfw);
|
||||
sepia_element_nsfw.setOnCheckedChangeListener((group, checkedId) -> {
|
||||
if (checkedId == R.id.sepia_element_nsfw_no) {
|
||||
sepiaSearchVideo.setNsfw(false);
|
||||
} else {
|
||||
sepiaSearchVideo.setNsfw(true);
|
||||
}
|
||||
});
|
||||
sepia_element_nsfw.setOnCheckedChangeListener((group, checkedId) -> sepiaSearchVideo.setNsfw(checkedId != R.id.sepia_element_nsfw_no));
|
||||
|
||||
RadioGroup radio_date = findViewById(R.id.radio_date);
|
||||
radio_date.setOnCheckedChangeListener((group, checkedId) -> {
|
||||
switch(checkedId){
|
||||
case R.id.sepia_element_published_date_today:
|
||||
Calendar cal = GregorianCalendar.getInstance();
|
||||
cal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
cal.set(Calendar.MINUTE, 0);
|
||||
cal.set(Calendar.SECOND, 0);
|
||||
cal.set(Calendar.MILLISECOND, 0);
|
||||
sepiaSearchVideo.setStartDate(cal.getTime());
|
||||
break;
|
||||
case R.id.sepia_element_published_date_last_7_days:
|
||||
cal = GregorianCalendar.getInstance();
|
||||
cal.setTime(new Date());
|
||||
cal.add(Calendar.DAY_OF_YEAR, -7);
|
||||
sepiaSearchVideo.setStartDate(cal.getTime());
|
||||
break;
|
||||
case R.id.sepia_element_published_date_last_30_days:
|
||||
cal = GregorianCalendar.getInstance();
|
||||
cal.setTime(new Date());
|
||||
cal.add(Calendar.DAY_OF_YEAR, -30);
|
||||
sepiaSearchVideo.setStartDate(cal.getTime());
|
||||
break;
|
||||
case R.id.sepia_element_published_date_last_365_days:
|
||||
cal = GregorianCalendar.getInstance();
|
||||
cal.setTime(new Date());
|
||||
cal.add(Calendar.DAY_OF_YEAR, -365);
|
||||
sepiaSearchVideo.setStartDate(cal.getTime());
|
||||
break;
|
||||
default:
|
||||
sepiaSearchVideo.setStartDate(null);
|
||||
if (checkedId == R.id.sepia_element_published_date_today) {
|
||||
Calendar cal = GregorianCalendar.getInstance();
|
||||
cal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
cal.set(Calendar.MINUTE, 0);
|
||||
cal.set(Calendar.SECOND, 0);
|
||||
cal.set(Calendar.MILLISECOND, 0);
|
||||
sepiaSearchVideo.setStartDate(cal.getTime());
|
||||
} else if (checkedId == R.id.sepia_element_published_date_last_7_days) {
|
||||
Calendar cal;
|
||||
cal = GregorianCalendar.getInstance();
|
||||
cal.setTime(new Date());
|
||||
cal.add(Calendar.DAY_OF_YEAR, -7);
|
||||
sepiaSearchVideo.setStartDate(cal.getTime());
|
||||
} else if (checkedId == R.id.sepia_element_published_date_last_30_days) {
|
||||
Calendar cal;
|
||||
cal = GregorianCalendar.getInstance();
|
||||
cal.setTime(new Date());
|
||||
cal.add(Calendar.DAY_OF_YEAR, -30);
|
||||
sepiaSearchVideo.setStartDate(cal.getTime());
|
||||
} else if (checkedId == R.id.sepia_element_published_date_last_365_days) {
|
||||
Calendar cal;
|
||||
cal = GregorianCalendar.getInstance();
|
||||
cal.setTime(new Date());
|
||||
cal.add(Calendar.DAY_OF_YEAR, -365);
|
||||
sepiaSearchVideo.setStartDate(cal.getTime());
|
||||
} else {
|
||||
sepiaSearchVideo.setStartDate(null);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
RadioGroup duration = findViewById(R.id.duration);
|
||||
duration.setOnCheckedChangeListener((group, checkedId) -> {
|
||||
switch(checkedId){
|
||||
case R.id.sepia_element_duration_short:
|
||||
sepiaSearchVideo.setDurationMin(0);
|
||||
sepiaSearchVideo.setDurationMax(240);
|
||||
break;
|
||||
case R.id.sepia_element_duration_medium:
|
||||
sepiaSearchVideo.setDurationMin(240);
|
||||
sepiaSearchVideo.setDurationMax(600);
|
||||
break;
|
||||
case R.id.sepia_element_duration_long:
|
||||
sepiaSearchVideo.setDurationMin(600);
|
||||
sepiaSearchVideo.setDurationMax(999999999);
|
||||
break;
|
||||
default:
|
||||
sepiaSearchVideo.setDurationMin(0);
|
||||
sepiaSearchVideo.setDurationMax(999999999);
|
||||
break;
|
||||
if (checkedId == R.id.sepia_element_duration_short) {
|
||||
sepiaSearchVideo.setDurationMin(0);
|
||||
sepiaSearchVideo.setDurationMax(240);
|
||||
} else if (checkedId == R.id.sepia_element_duration_medium) {
|
||||
sepiaSearchVideo.setDurationMin(240);
|
||||
sepiaSearchVideo.setDurationMax(600);
|
||||
} else if (checkedId == R.id.sepia_element_duration_long) {
|
||||
sepiaSearchVideo.setDurationMin(600);
|
||||
sepiaSearchVideo.setDurationMax(999999999);
|
||||
} else {
|
||||
sepiaSearchVideo.setDurationMin(0);
|
||||
sepiaSearchVideo.setDurationMax(999999999);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
Spinner sort_by = findViewById(R.id.sort_by);
|
||||
ArrayAdapter<String> adapterSortBy = new ArrayAdapter<>(SepiaSearchActivity.this,
|
||||
android.R.layout.simple_spinner_dropdown_item, getResources().getStringArray(R.array.sort_by_array));
|
||||
@ -163,7 +148,7 @@ public class SepiaSearchActivity extends AppCompatActivity {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
String orderby, channelOrderBy;
|
||||
switch (position){
|
||||
switch (position) {
|
||||
case 1:
|
||||
orderby = "-publishedAt";
|
||||
channelOrderBy = "-createdAt";
|
||||
@ -196,16 +181,20 @@ public class SepiaSearchActivity extends AppCompatActivity {
|
||||
LinkedHashMap<Integer, String> categories = new LinkedHashMap<>(peertubeInformation.getCategories());
|
||||
LinkedHashMap<Integer, String> licences = new LinkedHashMap<>(peertubeInformation.getLicences());
|
||||
LinkedHashMap<String, String> languages = new LinkedHashMap<>(peertubeInformation.getLanguages());
|
||||
LinkedHashMap<String, String> translations = new LinkedHashMap<>(peertubeInformation.getTranslations());
|
||||
LinkedHashMap<String, String> translations = null;
|
||||
|
||||
if (peertubeInformation.getTranslations() != null) {
|
||||
translations = new LinkedHashMap<>(peertubeInformation.getTranslations());
|
||||
}
|
||||
|
||||
//Populate catgories
|
||||
String[] categoriesA = new String[categories.size()+1];
|
||||
String[] categoriesA = new String[categories.size() + 1];
|
||||
categoriesA[0] = getString(R.string.display_all_categories);
|
||||
Iterator<Map.Entry<Integer, String>> it = categories.entrySet().iterator();
|
||||
int i = 1;
|
||||
while (it.hasNext()) {
|
||||
Map.Entry<Integer, String> pair = it.next();
|
||||
if (translations.size() == 0 || !translations.containsKey(pair.getValue()))
|
||||
if (translations == null || translations.size() == 0 || !translations.containsKey(pair.getValue()))
|
||||
categoriesA[i] = pair.getValue();
|
||||
else
|
||||
categoriesA[i] = translations.get(pair.getValue());
|
||||
@ -218,13 +207,13 @@ public class SepiaSearchActivity extends AppCompatActivity {
|
||||
|
||||
|
||||
//Populate licenses
|
||||
String[] licensesA = new String[licences.size()+1];
|
||||
String[] licensesA = new String[licences.size() + 1];
|
||||
licensesA[0] = getString(R.string.display_all_licenses);
|
||||
it = licences.entrySet().iterator();
|
||||
i = 1;
|
||||
while (it.hasNext()) {
|
||||
Map.Entry<Integer, String> pair = it.next();
|
||||
if (translations.size() == 0 || !translations.containsKey(pair.getValue()))
|
||||
if (translations == null || translations.size() == 0 || !translations.containsKey(pair.getValue()))
|
||||
licensesA[i] = pair.getValue();
|
||||
else
|
||||
licensesA[i] = translations.get(pair.getValue());
|
||||
@ -236,13 +225,13 @@ public class SepiaSearchActivity extends AppCompatActivity {
|
||||
sepia_element_license.setAdapter(adapterLicenses);
|
||||
|
||||
//Populate languages
|
||||
String[] languagesA = new String[languages.size()+1];
|
||||
String[] languagesA = new String[languages.size() + 1];
|
||||
languagesA[0] = getString(R.string.display_all_languages);
|
||||
Iterator<Map.Entry<String, String>> itl = languages.entrySet().iterator();
|
||||
i = 1;
|
||||
while (itl.hasNext()) {
|
||||
Map.Entry<String, String> pair = itl.next();
|
||||
if (translations.size() == 0 || !translations.containsKey(pair.getValue()))
|
||||
if (translations == null || translations.size() == 0 || !translations.containsKey(pair.getValue()))
|
||||
languagesA[i] = pair.getValue();
|
||||
else
|
||||
languagesA[i] = translations.get(pair.getValue());
|
||||
@ -292,7 +281,6 @@ public class SepiaSearchActivity extends AppCompatActivity {
|
||||
});
|
||||
|
||||
|
||||
|
||||
searchBar = findViewById(R.id.searchBar);
|
||||
|
||||
searchBar.setOnSearchActionListener(new MaterialSearchBar.OnSearchActionListener() {
|
||||
@ -312,28 +300,27 @@ public class SepiaSearchActivity extends AppCompatActivity {
|
||||
}
|
||||
});
|
||||
Button apply_filter = findViewById(R.id.apply_filter);
|
||||
apply_filter.setOnClickListener(v-> makeSearch());
|
||||
apply_filter.setOnClickListener(v -> makeSearch());
|
||||
|
||||
searchBar.openSearch();
|
||||
getWindow().setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
|
||||
}
|
||||
|
||||
private void makeSearch(){
|
||||
private void makeSearch() {
|
||||
hideKeyboard(SepiaSearchActivity.this);
|
||||
sepiaSearchVideo.setStart("0");
|
||||
if( sepia_element_one_of_tags.getTags().size() > 0 ) {
|
||||
if (sepia_element_one_of_tags.getTags().size() > 0) {
|
||||
sepiaSearchVideo.setTagsOneOf(sepia_element_one_of_tags.getTags());
|
||||
}else{
|
||||
} else {
|
||||
sepiaSearchVideo.setTagsOneOf(null);
|
||||
}
|
||||
if( sepia_element_all_of_tags.getTags().size() > 0 ) {
|
||||
if (sepia_element_all_of_tags.getTags().size() > 0) {
|
||||
sepiaSearchVideo.setTagsAllOf(sepia_element_all_of_tags.getTags());
|
||||
}else{
|
||||
} else {
|
||||
sepiaSearchVideo.setTagsAllOf(null);
|
||||
}
|
||||
|
||||
Fragment fragment = getSupportFragmentManager().findFragmentByTag("SEPIA_SEARCH");
|
||||
if(fragment != null)
|
||||
if (fragment != null)
|
||||
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
|
||||
filter_elements.setVisibility(View.GONE);
|
||||
sepiaSearchVideo.setSearch(searchBar.getText());
|
||||
@ -342,7 +329,7 @@ public class SepiaSearchActivity extends AppCompatActivity {
|
||||
bundle.putParcelable("sepiaSearchVideo", sepiaSearchVideo);
|
||||
displaySepiaSearchFragment.setArguments(bundle);
|
||||
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
|
||||
ft.add(R.id.container, displaySepiaSearchFragment,"SEPIA_SEARCH").commit();
|
||||
ft.add(R.id.container, displaySepiaSearchFragment, "SEPIA_SEARCH").commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -365,7 +352,7 @@ public class SepiaSearchActivity extends AppCompatActivity {
|
||||
languages.add(pair.getKey());
|
||||
sepiaSearchVideo.setBoostLanguages(languages);
|
||||
break;
|
||||
}else {
|
||||
} else {
|
||||
sepiaSearchVideo.setBoostLanguages(null);
|
||||
}
|
||||
it.remove();
|
||||
@ -379,12 +366,12 @@ public class SepiaSearchActivity extends AppCompatActivity {
|
||||
int i = 0;
|
||||
while (it.hasNext()) {
|
||||
Map.Entry<Integer, String> pair = it.next();
|
||||
if (i == position && position > 0 ) {
|
||||
if (i == position && position > 0) {
|
||||
List<Integer> categories = new ArrayList<>();
|
||||
categories.add(pair.getKey());
|
||||
sepiaSearchVideo.setCategoryOneOf(categories);
|
||||
break;
|
||||
}else {
|
||||
} else {
|
||||
sepiaSearchVideo.setCategoryOneOf(null);
|
||||
}
|
||||
it.remove();
|
||||
@ -403,7 +390,7 @@ public class SepiaSearchActivity extends AppCompatActivity {
|
||||
licenses.add(pair.getKey());
|
||||
sepiaSearchVideo.setLicenceOneOf(licenses);
|
||||
break;
|
||||
}else {
|
||||
} else {
|
||||
sepiaSearchVideo.setLicenceOneOf(null);
|
||||
}
|
||||
it.remove();
|
||||
|
@ -14,9 +14,6 @@ package app.fedilab.fedilabtube;
|
||||
* You should have received a copy of the GNU General Public License along with TubeLab; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.text.Html;
|
||||
@ -26,8 +23,6 @@ import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
@ -36,7 +31,6 @@ import android.widget.Toast;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentStatePagerAdapter;
|
||||
@ -48,45 +42,32 @@ import com.google.android.material.tabs.TabLayout;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import app.fedilab.fedilabtube.client.APIResponse;
|
||||
import app.fedilab.fedilabtube.client.RetrofitPeertubeAPI;
|
||||
import app.fedilab.fedilabtube.client.data.ChannelData.Channel;
|
||||
import app.fedilab.fedilabtube.fragment.DisplayAccountsFragment;
|
||||
import app.fedilab.fedilabtube.client.data.AccountData;
|
||||
import app.fedilab.fedilabtube.fragment.DisplayChannelsFragment;
|
||||
import app.fedilab.fedilabtube.fragment.DisplayVideosFragment;
|
||||
import app.fedilab.fedilabtube.helper.Helper;
|
||||
import app.fedilab.fedilabtube.viewmodel.ChannelsVM;
|
||||
import app.fedilab.fedilabtube.viewmodel.AccountsVM;
|
||||
import app.fedilab.fedilabtube.viewmodel.PostActionsVM;
|
||||
import app.fedilab.fedilabtube.viewmodel.RelationshipVM;
|
||||
import app.fedilab.fedilabtube.viewmodel.TimelineVM;
|
||||
import es.dmoral.toasty.Toasty;
|
||||
|
||||
import static androidx.core.text.HtmlCompat.FROM_HTML_MODE_LEGACY;
|
||||
import static app.fedilab.fedilabtube.client.RetrofitPeertubeAPI.ActionType.FOLLOW;
|
||||
import static app.fedilab.fedilabtube.client.RetrofitPeertubeAPI.ActionType.MUTE;
|
||||
import static app.fedilab.fedilabtube.client.RetrofitPeertubeAPI.ActionType.REPORT_ACCOUNT;
|
||||
import static app.fedilab.fedilabtube.client.RetrofitPeertubeAPI.ActionType.UNFOLLOW;
|
||||
import static app.fedilab.fedilabtube.client.RetrofitPeertubeAPI.DataType.CHANNEL;
|
||||
import static app.fedilab.fedilabtube.helper.Helper.getLiveInstance;
|
||||
import static app.fedilab.fedilabtube.helper.Helper.isLoggedIn;
|
||||
|
||||
|
||||
public class ShowAccountActivity extends AppCompatActivity {
|
||||
|
||||
|
||||
private Button account_follow;
|
||||
private ViewPager mPager;
|
||||
private TabLayout tabLayout;
|
||||
private TextView account_note, subscriber_count;
|
||||
private Map<String, Boolean> relationship;
|
||||
private ImageView account_pp;
|
||||
private TextView account_dn;
|
||||
private Channel channel;
|
||||
private action doAction;
|
||||
private String channelAcct;
|
||||
private AccountData.Account account;
|
||||
private String accountAcct;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@ -94,15 +75,13 @@ public class ShowAccountActivity extends AppCompatActivity {
|
||||
setContentView(R.layout.activity_show_account);
|
||||
setTitle("");
|
||||
Bundle b = getIntent().getExtras();
|
||||
account_follow = findViewById(R.id.account_follow);
|
||||
subscriber_count = findViewById(R.id.subscriber_count);
|
||||
account_follow.setEnabled(false);
|
||||
account_pp = findViewById(R.id.account_pp);
|
||||
account_dn = findViewById(R.id.account_dn);
|
||||
account_pp.setBackgroundResource(R.drawable.account_pp_border);
|
||||
if (b != null) {
|
||||
channel = b.getParcelable("channel");
|
||||
channelAcct = b.getString("channelId");
|
||||
account = b.getParcelable("account");
|
||||
accountAcct = b.getString("accountAcct");
|
||||
} else {
|
||||
Toasty.error(ShowAccountActivity.this, getString(R.string.toast_error_loading_account), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
@ -114,11 +93,9 @@ public class ShowAccountActivity extends AppCompatActivity {
|
||||
tabLayout = findViewById(R.id.account_tabLayout);
|
||||
account_note = findViewById(R.id.account_note);
|
||||
|
||||
|
||||
ChannelsVM viewModel = new ViewModelProvider(ShowAccountActivity.this).get(ChannelsVM.class);
|
||||
|
||||
manageChannel();
|
||||
viewModel.get(CHANNEL, channelAcct == null ? channel.getName() + "@" + channel.getHost() : channelAcct).observe(ShowAccountActivity.this, this::manageViewAccounts);
|
||||
manageAccount();
|
||||
AccountsVM viewModel = new ViewModelProvider(ShowAccountActivity.this).get(AccountsVM.class);
|
||||
viewModel.getAccount(accountAcct == null ? account.getUsername() + "@" + account.getHost() : accountAcct).observe(ShowAccountActivity.this, this::manageViewAccounts);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -137,7 +114,7 @@ public class ShowAccountActivity extends AppCompatActivity {
|
||||
return true;
|
||||
} else if (item.getItemId() == R.id.action_mute) {
|
||||
PostActionsVM viewModel = new ViewModelProvider(ShowAccountActivity.this).get(PostActionsVM.class);
|
||||
viewModel.post(MUTE, channel.getOwnerAccount() != null ? channel.getOwnerAccount().getAcct() : channel.getAcct(), null).observe(ShowAccountActivity.this, apiResponse -> manageVIewPostActions(MUTE, apiResponse));
|
||||
viewModel.post(MUTE, accountAcct == null ? account.getUsername() + "@" + account.getHost() : accountAcct, null).observe(ShowAccountActivity.this, apiResponse -> manageVIewPostActions(MUTE, apiResponse));
|
||||
} else if (item.getItemId() == R.id.action_report) {
|
||||
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(ShowAccountActivity.this);
|
||||
LayoutInflater inflater1 = getLayoutInflater();
|
||||
@ -150,7 +127,7 @@ public class ShowAccountActivity extends AppCompatActivity {
|
||||
Toasty.info(ShowAccountActivity.this, getString(R.string.report_comment_size), Toasty.LENGTH_LONG).show();
|
||||
} else {
|
||||
PostActionsVM viewModel = new ViewModelProvider(ShowAccountActivity.this).get(PostActionsVM.class);
|
||||
viewModel.post(REPORT_ACCOUNT, channel.getId(), report_content.getText().toString()).observe(ShowAccountActivity.this, apiResponse -> manageVIewPostActions(REPORT_ACCOUNT, apiResponse));
|
||||
viewModel.post(REPORT_ACCOUNT, account.getId(), report_content.getText().toString()).observe(ShowAccountActivity.this, apiResponse -> manageVIewPostActions(REPORT_ACCOUNT, apiResponse));
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
@ -160,30 +137,18 @@ public class ShowAccountActivity extends AppCompatActivity {
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private void manageChannel() {
|
||||
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
|
||||
private void manageAccount() {
|
||||
|
||||
String accountIdRelation = channel.getAcct();
|
||||
if (isLoggedIn(ShowAccountActivity.this)) {
|
||||
RelationshipVM viewModel = new ViewModelProvider(ShowAccountActivity.this).get(RelationshipVM.class);
|
||||
List<String> uids = new ArrayList<>();
|
||||
uids.add(accountIdRelation);
|
||||
viewModel.get(uids).observe(ShowAccountActivity.this, this::manageVIewRelationship);
|
||||
}
|
||||
|
||||
setTitle(channel.getAcct());
|
||||
|
||||
setTitle(account.getAcct());
|
||||
|
||||
mPager = findViewById(R.id.account_viewpager);
|
||||
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.channels)));
|
||||
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.videos)));
|
||||
mPager.setOffscreenPageLimit(1);
|
||||
|
||||
mPager.setOffscreenPageLimit(2);
|
||||
|
||||
PagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
|
||||
mPager.setAdapter(mPagerAdapter);
|
||||
ViewGroup.LayoutParams params = tabLayout.getLayoutParams();
|
||||
params.height = 0;
|
||||
tabLayout.setLayoutParams(params);
|
||||
mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
@ -222,112 +187,26 @@ public class ShowAccountActivity extends AppCompatActivity {
|
||||
switch (tab.getPosition()) {
|
||||
case 0:
|
||||
if (fragment != null) {
|
||||
DisplayVideosFragment displayVideosFragment = ((DisplayVideosFragment) fragment);
|
||||
displayVideosFragment.scrollToTop();
|
||||
DisplayChannelsFragment displayChannelsFragment = ((DisplayChannelsFragment) fragment);
|
||||
displayChannelsFragment.scrollToTop();
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (fragment != null) {
|
||||
DisplayAccountsFragment displayAccountsFragment = ((DisplayAccountsFragment) fragment);
|
||||
displayAccountsFragment.scrollToTop();
|
||||
DisplayVideosFragment displayVideosFragment = ((DisplayVideosFragment) fragment);
|
||||
displayVideosFragment.scrollToTop();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
account_dn.setText(channel.getDisplayName());
|
||||
account_dn.setText(account.getDisplayName());
|
||||
|
||||
|
||||
manageNotes(channel);
|
||||
Helper.loadGiF(ShowAccountActivity.this, channel.getAvatar() != null ? channel.getAvatar().getPath() : null, account_pp);
|
||||
//Follow button
|
||||
String target = channel.getAcct();
|
||||
|
||||
account_follow.setOnClickListener(v -> {
|
||||
if (doAction == action.NOTHING) {
|
||||
Toasty.info(ShowAccountActivity.this, getString(R.string.nothing_to_do), Toast.LENGTH_LONG).show();
|
||||
} else if (doAction == action.FOLLOW) {
|
||||
account_follow.setEnabled(false);
|
||||
PostActionsVM viewModel = new ViewModelProvider(ShowAccountActivity.this).get(PostActionsVM.class);
|
||||
viewModel.post(FOLLOW, target, null).observe(ShowAccountActivity.this, apiResponse -> manageVIewPostActions(FOLLOW, apiResponse));
|
||||
} else if (doAction == action.UNFOLLOW) {
|
||||
boolean confirm_unfollow = sharedpreferences.getBoolean(Helper.SET_UNFOLLOW_VALIDATION, true);
|
||||
if (confirm_unfollow) {
|
||||
AlertDialog.Builder unfollowConfirm = new AlertDialog.Builder(ShowAccountActivity.this);
|
||||
unfollowConfirm.setTitle(getString(R.string.unfollow_confirm));
|
||||
unfollowConfirm.setMessage(channel.getAcct());
|
||||
unfollowConfirm.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss());
|
||||
unfollowConfirm.setPositiveButton(R.string.yes, (dialog, which) -> {
|
||||
account_follow.setEnabled(false);
|
||||
PostActionsVM viewModel = new ViewModelProvider(ShowAccountActivity.this).get(PostActionsVM.class);
|
||||
viewModel.post(UNFOLLOW, target, null).observe(ShowAccountActivity.this, apiResponse -> manageVIewPostActions(UNFOLLOW, apiResponse));
|
||||
dialog.dismiss();
|
||||
});
|
||||
unfollowConfirm.show();
|
||||
} else {
|
||||
account_follow.setEnabled(false);
|
||||
PostActionsVM viewModel = new ViewModelProvider(ShowAccountActivity.this).get(PostActionsVM.class);
|
||||
viewModel.post(UNFOLLOW, target, null).observe(ShowAccountActivity.this, apiResponse -> manageVIewPostActions(UNFOLLOW, apiResponse));
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
manageNotes(account);
|
||||
Helper.loadGiF(ShowAccountActivity.this, account.getAvatar() != null ? account.getAvatar().getPath() : null, account_pp);
|
||||
}
|
||||
|
||||
|
||||
public void manageVIewRelationship(APIResponse apiResponse) {
|
||||
|
||||
if (apiResponse.getError() != null) {
|
||||
Toasty.error(ShowAccountActivity.this, apiResponse.getError().getError(), Toast.LENGTH_LONG).show();
|
||||
return;
|
||||
}
|
||||
this.relationship = apiResponse.getRelationships();
|
||||
manageButtonVisibility();
|
||||
|
||||
invalidateOptionsMenu();
|
||||
|
||||
}
|
||||
|
||||
//Manages the visibility of the button
|
||||
private void manageButtonVisibility() {
|
||||
if (relationship == null)
|
||||
return;
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
int[][] states = new int[][]{
|
||||
new int[]{android.R.attr.state_enabled}, // enabled
|
||||
new int[]{-android.R.attr.state_enabled}, // disabled
|
||||
new int[]{-android.R.attr.state_checked}, // unchecked
|
||||
new int[]{android.R.attr.state_pressed} // pressed
|
||||
};
|
||||
|
||||
int[] colors = new int[]{
|
||||
ContextCompat.getColor(ShowAccountActivity.this, Helper.getColorAccent()),
|
||||
ContextCompat.getColor(ShowAccountActivity.this, Helper.getColorAccent()),
|
||||
ContextCompat.getColor(ShowAccountActivity.this, Helper.getColorAccent()),
|
||||
ContextCompat.getColor(ShowAccountActivity.this, Helper.getColorAccent())
|
||||
};
|
||||
account_follow.setBackgroundTintList(new ColorStateList(states, colors));
|
||||
}
|
||||
account_follow.setEnabled(true);
|
||||
|
||||
boolean isFollowing = relationship.get(channel.getAcct());
|
||||
if (isFollowing) {
|
||||
account_follow.setText(R.string.action_unfollow);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
account_follow.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(ShowAccountActivity.this, R.color.red_1)));
|
||||
}
|
||||
doAction = action.UNFOLLOW;
|
||||
account_follow.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
account_follow.setText(R.string.action_follow);
|
||||
doAction = action.FOLLOW;
|
||||
account_follow.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
@ -345,47 +224,31 @@ public class ShowAccountActivity extends AppCompatActivity {
|
||||
Toasty.error(ShowAccountActivity.this, apiResponse.getError().getError(), Toast.LENGTH_LONG).show();
|
||||
return;
|
||||
}
|
||||
String target = channel.getAcct();
|
||||
//IF action is unfollow or mute, sends an intent to remove statuses
|
||||
if (statusAction == RetrofitPeertubeAPI.ActionType.UNFOLLOW) {
|
||||
Bundle b = new Bundle();
|
||||
b.putString("receive_action", apiResponse.getTargetedId());
|
||||
Intent intentBC = new Intent(Helper.RECEIVE_ACTION);
|
||||
intentBC.putExtras(b);
|
||||
}
|
||||
if (statusAction == RetrofitPeertubeAPI.ActionType.UNFOLLOW || statusAction == RetrofitPeertubeAPI.ActionType.FOLLOW) {
|
||||
RelationshipVM viewModel = new ViewModelProvider(ShowAccountActivity.this).get(RelationshipVM.class);
|
||||
List<String> uris = new ArrayList<>();
|
||||
uris.add(target);
|
||||
viewModel.get(uris).observe(ShowAccountActivity.this, this::manageVIewRelationship);
|
||||
} else if (statusAction == RetrofitPeertubeAPI.ActionType.MUTE) {
|
||||
if (statusAction == RetrofitPeertubeAPI.ActionType.MUTE) {
|
||||
Toasty.info(ShowAccountActivity.this, getString(R.string.muted_done), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
|
||||
public void manageViewAccounts(APIResponse apiResponse) {
|
||||
if (apiResponse.getChannels() != null && apiResponse.getChannels().size() == 1) {
|
||||
Channel channel = apiResponse.getChannels().get(0);
|
||||
if (this.channel == null) {
|
||||
this.channel = channel;
|
||||
manageChannel();
|
||||
if (apiResponse.getAccounts() != null && apiResponse.getAccounts().size() == 1) {
|
||||
AccountData.Account account = apiResponse.getAccounts().get(0);
|
||||
if (this.account == null) {
|
||||
this.account = account;
|
||||
manageAccount();
|
||||
}
|
||||
if (channel.getOwnerAccount() != null) {
|
||||
this.channel.setOwnerAccount(channel.getOwnerAccount());
|
||||
}
|
||||
subscriber_count.setText(getString(R.string.followers_count, Helper.withSuffix(channel.getFollowersCount())));
|
||||
subscriber_count.setText(getString(R.string.followers_count, Helper.withSuffix(account.getFollowersCount())));
|
||||
subscriber_count.setVisibility(View.VISIBLE);
|
||||
manageNotes(channel);
|
||||
manageNotes(account);
|
||||
}
|
||||
}
|
||||
|
||||
private void manageNotes(Channel channel) {
|
||||
if (channel.getDescription() != null && channel.getDescription().compareTo("null") != 0 && channel.getDescription().trim().length() > 0) {
|
||||
private void manageNotes(AccountData.Account account) {
|
||||
if (account.getDescription() != null && account.getDescription().compareTo("null") != 0 && account.getDescription().trim().length() > 0) {
|
||||
SpannableString spannableString;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
spannableString = new SpannableString(Html.fromHtml(channel.getDescription(), FROM_HTML_MODE_LEGACY));
|
||||
spannableString = new SpannableString(Html.fromHtml(account.getDescription(), FROM_HTML_MODE_LEGACY));
|
||||
else
|
||||
spannableString = new SpannableString(Html.fromHtml(channel.getDescription()));
|
||||
spannableString = new SpannableString(Html.fromHtml(account.getDescription()));
|
||||
|
||||
account_note.setText(spannableString, TextView.BufferType.SPANNABLE);
|
||||
account_note.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
@ -395,11 +258,6 @@ public class ShowAccountActivity extends AppCompatActivity {
|
||||
}
|
||||
}
|
||||
|
||||
public enum action {
|
||||
FOLLOW,
|
||||
UNFOLLOW,
|
||||
NOTHING
|
||||
}
|
||||
|
||||
/**
|
||||
* Pager adapter for the 2 fragments
|
||||
@ -415,25 +273,24 @@ public class ShowAccountActivity extends AppCompatActivity {
|
||||
public Fragment getItem(int position) {
|
||||
Bundle bundle = new Bundle();
|
||||
if (position == 0) {
|
||||
DisplayVideosFragment displayVideosFragment = new DisplayVideosFragment();
|
||||
bundle = new Bundle();
|
||||
bundle.putSerializable("type", TimelineVM.TimelineType.USER_VIDEOS);
|
||||
bundle.putString("channelId", channel.getAcct());
|
||||
displayVideosFragment.setArguments(bundle);
|
||||
return displayVideosFragment;
|
||||
DisplayChannelsFragment displayChannelsFragment = new DisplayChannelsFragment();
|
||||
bundle.putString("name", account.getAcct());
|
||||
bundle.putBoolean("myChannels", false);
|
||||
displayChannelsFragment.setArguments(bundle);
|
||||
return displayChannelsFragment;
|
||||
}
|
||||
DisplayAccountsFragment displayAccountsFragment = new DisplayAccountsFragment();
|
||||
bundle.putString("targetedid", channel.getId());
|
||||
bundle.putString("instance", getLiveInstance(ShowAccountActivity.this));
|
||||
bundle.putString("name", channel.getAcct());
|
||||
displayAccountsFragment.setArguments(bundle);
|
||||
return displayAccountsFragment;
|
||||
DisplayVideosFragment displayVideosFragment = new DisplayVideosFragment();
|
||||
bundle.putSerializable(Helper.TIMELINE_TYPE, TimelineVM.TimelineType.ACCOUNT_VIDEOS);
|
||||
bundle.putString("channelId", account.getAcct());
|
||||
bundle.putString("peertube_instance", account.getHost());
|
||||
displayVideosFragment.setArguments(bundle);
|
||||
return displayVideosFragment;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return 1;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -70,9 +70,7 @@ import static app.fedilab.fedilabtube.client.RetrofitPeertubeAPI.ActionType.MUTE
|
||||
import static app.fedilab.fedilabtube.client.RetrofitPeertubeAPI.ActionType.REPORT_ACCOUNT;
|
||||
import static app.fedilab.fedilabtube.client.RetrofitPeertubeAPI.ActionType.UNFOLLOW;
|
||||
import static app.fedilab.fedilabtube.client.RetrofitPeertubeAPI.DataType.CHANNEL;
|
||||
import static app.fedilab.fedilabtube.helper.Helper.getLiveInstance;
|
||||
import static app.fedilab.fedilabtube.helper.Helper.isLoggedIn;
|
||||
import static app.fedilab.fedilabtube.viewmodel.TimelineVM.TimelineType.SEPIA_SEARCH;
|
||||
|
||||
|
||||
public class ShowChannelActivity extends AppCompatActivity {
|
||||
@ -94,7 +92,7 @@ public class ShowChannelActivity extends AppCompatActivity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_show_account);
|
||||
setContentView(R.layout.activity_show_channel);
|
||||
setTitle("");
|
||||
Bundle b = getIntent().getExtras();
|
||||
account_follow = findViewById(R.id.account_follow);
|
||||
@ -122,7 +120,7 @@ public class ShowChannelActivity extends AppCompatActivity {
|
||||
|
||||
|
||||
ChannelsVM viewModel = new ViewModelProvider(ShowChannelActivity.this).get(ChannelsVM.class);
|
||||
viewModel.get(sepiaSearch?peertubeInstance:null, CHANNEL, channelAcct == null ? channel.getAcct() : channelAcct).observe(ShowChannelActivity.this, this::manageViewAccounts);
|
||||
viewModel.get(sepiaSearch ? peertubeInstance : null, CHANNEL, channelAcct == null ? channel.getAcct() : channelAcct).observe(ShowChannelActivity.this, this::manageViewAccounts);
|
||||
manageChannel();
|
||||
}
|
||||
|
||||
@ -245,7 +243,7 @@ public class ShowChannelActivity extends AppCompatActivity {
|
||||
|
||||
|
||||
manageNotes(channel);
|
||||
Helper.loadGiF(ShowChannelActivity.this, sepiaSearch?peertubeInstance:null, channel.getAvatar() != null ? channel.getAvatar().getPath() : null, account_pp);
|
||||
Helper.loadGiF(ShowChannelActivity.this, sepiaSearch ? peertubeInstance : null, channel.getAvatar() != null ? channel.getAvatar().getPath() : null, account_pp);
|
||||
//Follow button
|
||||
String target = channel.getAcct();
|
||||
|
||||
@ -324,12 +322,11 @@ public class ShowChannelActivity extends AppCompatActivity {
|
||||
account_follow.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(ShowChannelActivity.this, R.color.red_1)));
|
||||
}
|
||||
doAction = action.UNFOLLOW;
|
||||
account_follow.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
account_follow.setText(R.string.action_follow);
|
||||
doAction = action.FOLLOW;
|
||||
account_follow.setVisibility(View.VISIBLE);
|
||||
}
|
||||
account_follow.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
|
||||
@ -420,7 +417,7 @@ public class ShowChannelActivity extends AppCompatActivity {
|
||||
public Fragment getItem(int position) {
|
||||
DisplayVideosFragment displayVideosFragment = new DisplayVideosFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putSerializable(Helper.TIMELINE_TYPE, TimelineVM.TimelineType.USER_VIDEOS);
|
||||
bundle.putSerializable(Helper.TIMELINE_TYPE, TimelineVM.TimelineType.CHANNEL_VIDEOS);
|
||||
bundle.putString("channelId", channel.getAcct());
|
||||
bundle.putString("peertube_instance", channel.getHost());
|
||||
bundle.putBoolean("sepia_search", sepiaSearch);
|
||||
|
@ -129,21 +129,20 @@ public class WebviewActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
return true;
|
||||
case R.id.action_go:
|
||||
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
||||
try {
|
||||
startActivity(browserIntent);
|
||||
} catch (Exception e) {
|
||||
Toasty.error(WebviewActivity.this, getString(R.string.toast_error), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
int itemId = item.getItemId();
|
||||
if (itemId == android.R.id.home) {
|
||||
finish();
|
||||
return true;
|
||||
} else if (itemId == R.id.action_go) {
|
||||
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
||||
try {
|
||||
startActivity(browserIntent);
|
||||
} catch (Exception e) {
|
||||
Toasty.error(WebviewActivity.this, getString(R.string.toast_error), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
public void setUrl(String newUrl) {
|
||||
|
@ -46,6 +46,7 @@ public class APIResponse {
|
||||
private List<CommentData.Comment> comments = null;
|
||||
private List<Block> muted;
|
||||
private List<VideoPlaylist> videoPlaylist;
|
||||
private CommentData.CommentThreadData commentThreadData;
|
||||
private List<NotificationData.Notification> peertubeNotifications = null;
|
||||
private List<PlaylistData.Playlist> playlists = null;
|
||||
private List<String> domains = null;
|
||||
@ -247,4 +248,12 @@ public class APIResponse {
|
||||
public void setVideoExistPlaylist(Map<String, List<PlaylistExist>> videoExistPlaylist) {
|
||||
this.videoExistPlaylist = videoExistPlaylist;
|
||||
}
|
||||
|
||||
public CommentData.CommentThreadData getCommentThreadData() {
|
||||
return commentThreadData;
|
||||
}
|
||||
|
||||
public void setCommentThreadData(CommentData.CommentThreadData commentThreadData) {
|
||||
this.commentThreadData = commentThreadData;
|
||||
}
|
||||
}
|
||||
|
@ -165,7 +165,7 @@ public interface PeertubeService {
|
||||
|
||||
//Get my video
|
||||
@GET("accounts/{name}/videos?sort=-publishedAt")
|
||||
Call<VideoData.Video> getVideosForAccount(@Query("start") String maxId, @Query("count") String count);
|
||||
Call<VideoData> getVideosForAccount(@Path("name") String name, @Query("start") String maxId, @Query("count") String count);
|
||||
|
||||
@Multipart
|
||||
@PUT("videos/{id}")
|
||||
@ -228,6 +228,11 @@ public interface PeertubeService {
|
||||
@GET("video-playlists")
|
||||
Call<PlaylistData> getPlaylists();
|
||||
|
||||
|
||||
//Get a single account
|
||||
@GET("accounts/{accountHandle}")
|
||||
Call<AccountData.Account> getAccount(@Path("accountHandle") String accountHandle);
|
||||
|
||||
//Get/Post/Update/Delete playlist
|
||||
@GET("accounts/{accountHandle}/video-playlists")
|
||||
Call<PlaylistData> getPlaylistsForAccount(@Header("Authorization") String credentials, @Path("accountHandle") String accountHandle);
|
||||
@ -328,22 +333,25 @@ public interface PeertubeService {
|
||||
Call<CommentData> getComments(@Path("id") String id, @Query("start") String maxId, @Query("count") String count);
|
||||
|
||||
@GET("videos/{id}/comment-threads/{threadId}")
|
||||
Call<CommentData> getReplies(@Path("id") String id, @Path("threadId") String threadId);
|
||||
Call<CommentData.CommentThreadData> getReplies(@Path("id") String id, @Path("threadId") String threadId);
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST("videos/{id}/comment-threads")
|
||||
Call<String> postComment(@Header("Authorization") String credentials, @Path("id") String id, @Field("text") String text);
|
||||
Call<CommentData.CommentPosted> postComment(@Header("Authorization") String credentials, @Path("id") String id, @Field("text") String text);
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST("videos/{id}/comments/{commentId}")
|
||||
Call<String> postReply(@Header("Authorization") String credentials, @Path("id") String id, @Path("commentId") String commentId, @Field("text") String text);
|
||||
Call<CommentData.CommentPosted> postReply(@Header("Authorization") String credentials, @Path("id") String id, @Path("commentId") String commentId, @Field("text") String text);
|
||||
|
||||
@DELETE("videos/{id}/comments/{commentId}")
|
||||
Call<String> deleteComment(@Header("Authorization") String credentials, @Path("id") String id, @Path("commentId") String commentId);
|
||||
|
||||
@POST("bulk/remove-comments-of")
|
||||
Call<String> deleteAllCommentForAccount(@Header("Authorization") String credentials, @Field("accountName") String accountName, @Field("scope") String scope);
|
||||
|
||||
@Headers({"Content-Type: application/json", "Cache-Control: max-age=640000"})
|
||||
@POST("abuses")
|
||||
Call<String> report(
|
||||
Call<Report.ReportReturn> report(
|
||||
@Header("Authorization") String credentials,
|
||||
@Body Report report);
|
||||
|
||||
|
@ -82,12 +82,12 @@ import retrofit2.converter.gson.GsonConverterFactory;
|
||||
@SuppressWarnings({"unused", "RedundantSuppression"})
|
||||
public class RetrofitPeertubeAPI {
|
||||
|
||||
private String finalUrl;
|
||||
private Context _context;
|
||||
private String instance;
|
||||
private final String finalUrl;
|
||||
private final Context _context;
|
||||
private final String instance;
|
||||
private final String count;
|
||||
private String token;
|
||||
private Set<String> selection;
|
||||
private String count;
|
||||
|
||||
public RetrofitPeertubeAPI(Context context) {
|
||||
_context = context;
|
||||
@ -320,6 +320,9 @@ public class RetrofitPeertubeAPI {
|
||||
case MY_VIDEOS:
|
||||
videoCall = peertubeService.getMyVideos(getToken(), max_id, count);
|
||||
break;
|
||||
case ACCOUNT_VIDEOS:
|
||||
videoCall = peertubeService.getVideosForAccount(forAccount, max_id, count);
|
||||
break;
|
||||
case SUBSCRIBTIONS:
|
||||
if (forAccount == null) {
|
||||
videoCall = peertubeService.getSubscriptionVideos(getToken(), max_id, count, filter);
|
||||
@ -562,6 +565,9 @@ public class RetrofitPeertubeAPI {
|
||||
lang = lang.split("-")[0] + "-" + lang.split("-")[1].toUpperCase();
|
||||
}
|
||||
}
|
||||
if (lang == null || lang.trim().length() == 0) {
|
||||
lang = "en";
|
||||
}
|
||||
Call<Map<String, String>> translations = initTranslation().getTranslations(lang);
|
||||
try {
|
||||
Response<Map<String, String>> response = translations.execute();
|
||||
@ -692,12 +698,12 @@ public class RetrofitPeertubeAPI {
|
||||
|
||||
public APIResponse report(Report report) {
|
||||
PeertubeService peertubeService = init();
|
||||
Call<String> report1 = peertubeService.report(getToken(), report);
|
||||
Call<Report.ReportReturn> report1 = peertubeService.report(getToken(), report);
|
||||
APIResponse apiResponse = new APIResponse();
|
||||
try {
|
||||
Response<String> response = report1.execute();
|
||||
if (response.isSuccessful()) {
|
||||
apiResponse.setActionReturn(response.body());
|
||||
Response<Report.ReportReturn> response = report1.execute();
|
||||
if (response.isSuccessful() && response.body() != null) {
|
||||
apiResponse.setActionReturn(response.body().getItemStr().getLabel());
|
||||
} else {
|
||||
setError(apiResponse, response.code(), response.errorBody());
|
||||
}
|
||||
@ -816,6 +822,9 @@ public class RetrofitPeertubeAPI {
|
||||
case PEERTUBEDELETECOMMENT:
|
||||
postCall = peertubeService.deleteComment(getToken(), id, element);
|
||||
break;
|
||||
case PEERTUBE_DELETE_ALL_COMMENT_FOR_ACCOUNT:
|
||||
postCall = peertubeService.deleteAllCommentForAccount(getToken(), id, element);
|
||||
break;
|
||||
case DELETE_CHANNEL:
|
||||
postCall = peertubeService.deleteChannel(getToken(), id);
|
||||
break;
|
||||
@ -838,6 +847,38 @@ public class RetrofitPeertubeAPI {
|
||||
return apiResponse;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get single account by its handle
|
||||
*
|
||||
* @param accountHandle String
|
||||
* @return APIResponse
|
||||
*/
|
||||
public APIResponse getAccount(String accountHandle) {
|
||||
PeertubeService peertubeService = init();
|
||||
Call<AccountData.Account> accountDataCall = peertubeService.getAccount(accountHandle);
|
||||
APIResponse apiResponse = new APIResponse();
|
||||
if (accountDataCall != null) {
|
||||
try {
|
||||
Response<AccountData.Account> response = accountDataCall.execute();
|
||||
if (response.isSuccessful() && response.body() != null) {
|
||||
List<AccountData.Account> accountList = new ArrayList<>();
|
||||
accountList.add(response.body());
|
||||
apiResponse.setAccounts(accountList);
|
||||
} else {
|
||||
setError(apiResponse, response.code(), response.errorBody());
|
||||
}
|
||||
} catch (IOException e) {
|
||||
Error error = new Error();
|
||||
error.setError(_context.getString(R.string.toast_error));
|
||||
apiResponse.setError(error);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return apiResponse;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get muted accounts
|
||||
*
|
||||
@ -1197,10 +1238,10 @@ public class RetrofitPeertubeAPI {
|
||||
setError(apiResponse, response.code(), response.errorBody());
|
||||
}
|
||||
} else if (type == CommentVM.action.GET_REPLIES) {
|
||||
Call<CommentData> commentsCall = peertubeService.getReplies(videoId, forCommentId);
|
||||
Response<CommentData> response = commentsCall.execute();
|
||||
Call<CommentData.CommentThreadData> commentsCall = peertubeService.getReplies(videoId, forCommentId);
|
||||
Response<CommentData.CommentThreadData> response = commentsCall.execute();
|
||||
if (response.isSuccessful() && response.body() != null) {
|
||||
apiResponse.setComments(response.body().data);
|
||||
apiResponse.setCommentThreadData(response.body());
|
||||
} else {
|
||||
setError(apiResponse, response.code(), response.errorBody());
|
||||
}
|
||||
@ -1229,18 +1270,22 @@ public class RetrofitPeertubeAPI {
|
||||
APIResponse apiResponse = new APIResponse();
|
||||
try {
|
||||
if (type == ActionType.ADD_COMMENT) {
|
||||
Call<String> stringCall = peertubeService.postComment(getToken(), videoId, text);
|
||||
Response<String> response = stringCall.execute();
|
||||
if (response.isSuccessful()) {
|
||||
apiResponse.setActionReturn(response.body());
|
||||
Call<CommentData.CommentPosted> commentPostedCall = peertubeService.postComment(getToken(), videoId, text);
|
||||
Response<CommentData.CommentPosted> response = commentPostedCall.execute();
|
||||
if (response.isSuccessful() && response.body() != null) {
|
||||
List<CommentData.Comment> comments = new ArrayList<>();
|
||||
comments.add(response.body().getComment());
|
||||
apiResponse.setComments(comments);
|
||||
} else {
|
||||
setError(apiResponse, response.code(), response.errorBody());
|
||||
}
|
||||
} else if (type == ActionType.REPLY) {
|
||||
Call<String> stringCall = peertubeService.postReply(getToken(), videoId, toCommentId, text);
|
||||
Response<String> response = stringCall.execute();
|
||||
if (response.isSuccessful()) {
|
||||
apiResponse.setActionReturn(response.body());
|
||||
Call<CommentData.CommentPosted> commentPostedCall = peertubeService.postReply(getToken(), videoId, toCommentId, text);
|
||||
Response<CommentData.CommentPosted> response = commentPostedCall.execute();
|
||||
if (response.isSuccessful() && response.body() != null) {
|
||||
List<CommentData.Comment> comments = new ArrayList<>();
|
||||
comments.add(response.body().getComment());
|
||||
apiResponse.setComments(comments);
|
||||
} else {
|
||||
setError(apiResponse, response.code(), response.errorBody());
|
||||
}
|
||||
@ -1384,6 +1429,7 @@ public class RetrofitPeertubeAPI {
|
||||
UNMUTE,
|
||||
RATEVIDEO,
|
||||
PEERTUBEDELETECOMMENT,
|
||||
PEERTUBE_DELETE_ALL_COMMENT_FOR_ACCOUNT,
|
||||
PEERTUBEDELETEVIDEO,
|
||||
REPORT_VIDEO,
|
||||
REPORT_ACCOUNT,
|
||||
|
@ -21,7 +21,6 @@ import java.util.Locale;
|
||||
|
||||
import app.fedilab.fedilabtube.client.data.VideoData;
|
||||
import app.fedilab.fedilabtube.client.entities.SepiaSearch;
|
||||
import app.fedilab.fedilabtube.helper.Helper;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Response;
|
||||
import retrofit2.Retrofit;
|
||||
@ -30,7 +29,7 @@ import retrofit2.converter.gson.GsonConverterFactory;
|
||||
public class RetrofitSepiaSearchAPI {
|
||||
|
||||
|
||||
private String finalUrl;
|
||||
private final String finalUrl;
|
||||
|
||||
|
||||
public RetrofitSepiaSearchAPI() {
|
||||
@ -47,6 +46,7 @@ public class RetrofitSepiaSearchAPI {
|
||||
|
||||
/**
|
||||
* Return videos for a sepia search
|
||||
*
|
||||
* @param sepiaSearch SepiaSearch
|
||||
* @return VideoData
|
||||
*/
|
||||
@ -54,7 +54,7 @@ public class RetrofitSepiaSearchAPI {
|
||||
SepiaSearchService sepiaSearchService = init();
|
||||
SimpleDateFormat fmtOut = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH);
|
||||
String startDate = null;
|
||||
if(sepiaSearch.getStartDate() != null) {
|
||||
if (sepiaSearch.getStartDate() != null) {
|
||||
startDate = fmtOut.format(sepiaSearch.getStartDate());
|
||||
}
|
||||
Call<VideoData> videoDataCall = sepiaSearchService.getVideos(
|
||||
@ -75,7 +75,7 @@ public class RetrofitSepiaSearchAPI {
|
||||
try {
|
||||
Response<VideoData> response = videoDataCall.execute();
|
||||
if (response.isSuccessful() && response.body() != null) {
|
||||
return response.body();
|
||||
return response.body();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -14,7 +14,6 @@ package app.fedilab.fedilabtube.client;
|
||||
* You should have received a copy of the GNU General Public License along with TubeLab; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import app.fedilab.fedilabtube.client.data.ChannelData;
|
||||
|
@ -56,6 +56,8 @@ public class CommentData {
|
||||
private String url;
|
||||
@SerializedName("videoId")
|
||||
private String videoId;
|
||||
private boolean isReply = false;
|
||||
private boolean isReplyViewOpen = false;
|
||||
|
||||
|
||||
public AccountData.Account getAccount() {
|
||||
@ -161,8 +163,63 @@ public class CommentData {
|
||||
public void setVideoId(String videoId) {
|
||||
this.videoId = videoId;
|
||||
}
|
||||
|
||||
public boolean isReply() {
|
||||
return isReply;
|
||||
}
|
||||
|
||||
public void setReply(boolean reply) {
|
||||
isReply = reply;
|
||||
}
|
||||
|
||||
public boolean isReplyViewOpen() {
|
||||
return isReplyViewOpen;
|
||||
}
|
||||
|
||||
public void setReplyViewOpen(boolean replyViewOpen) {
|
||||
isReplyViewOpen = replyViewOpen;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static class CommentThreadData {
|
||||
|
||||
@SerializedName("comment")
|
||||
public Comment comment;
|
||||
@SerializedName("children")
|
||||
public List<CommentThreadData> children;
|
||||
|
||||
public Comment getComment() {
|
||||
return comment;
|
||||
}
|
||||
|
||||
public void setComment(Comment comment) {
|
||||
this.comment = comment;
|
||||
}
|
||||
|
||||
public List<CommentThreadData> getChildren() {
|
||||
return children;
|
||||
}
|
||||
|
||||
public void setChildren(List<CommentThreadData> children) {
|
||||
this.children = children;
|
||||
}
|
||||
}
|
||||
|
||||
public static class CommentPosted {
|
||||
@SerializedName("comment")
|
||||
private Comment comment;
|
||||
|
||||
public Comment getComment() {
|
||||
return comment;
|
||||
}
|
||||
|
||||
public void setComment(Comment comment) {
|
||||
this.comment = comment;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static class NotificationComment {
|
||||
@SerializedName("id")
|
||||
private String id;
|
||||
|
@ -46,6 +46,8 @@ public class NotificationData {
|
||||
private CommentData.NotificationComment comment;
|
||||
@SerializedName("videoAbuse")
|
||||
private VideoAbuse videoAbuse;
|
||||
@SerializedName("abuse")
|
||||
private VideoAbuse.Abuse abuse;
|
||||
@SerializedName("videoBlacklist")
|
||||
private VideoBlacklist videoBlacklist;
|
||||
@SerializedName("account")
|
||||
@ -153,5 +155,13 @@ public class NotificationData {
|
||||
public void setUpdatedAt(Date updatedAt) {
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public VideoAbuse.Abuse getAbuse() {
|
||||
return abuse;
|
||||
}
|
||||
|
||||
public void setAbuse(VideoAbuse.Abuse abuse) {
|
||||
this.abuse = abuse;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -81,6 +81,8 @@ public class VideoData {
|
||||
private int duration;
|
||||
@SerializedName("embedPath")
|
||||
private String embedPath;
|
||||
@SerializedName("embedUrl")
|
||||
private String embedUrl;
|
||||
@SerializedName("files")
|
||||
private List<File> files;
|
||||
@SerializedName("id")
|
||||
@ -151,6 +153,7 @@ public class VideoData {
|
||||
this.downloadEnabled = in.readByte() != 0;
|
||||
this.duration = in.readInt();
|
||||
this.embedPath = in.readString();
|
||||
this.embedUrl = in.readString();
|
||||
this.files = new ArrayList<>();
|
||||
in.readList(this.files, File.class.getClassLoader());
|
||||
this.id = in.readString();
|
||||
@ -349,6 +352,14 @@ public class VideoData {
|
||||
this.embedPath = embedPath;
|
||||
}
|
||||
|
||||
public String getEmbedUrl() {
|
||||
return embedUrl;
|
||||
}
|
||||
|
||||
public void setEmbedUrl(String embedUrl) {
|
||||
this.embedUrl = embedUrl;
|
||||
}
|
||||
|
||||
public List<File> getFiles() {
|
||||
return files;
|
||||
}
|
||||
@ -585,6 +596,7 @@ public class VideoData {
|
||||
dest.writeByte(this.downloadEnabled ? (byte) 1 : (byte) 0);
|
||||
dest.writeInt(this.duration);
|
||||
dest.writeString(this.embedPath);
|
||||
dest.writeString(this.embedUrl);
|
||||
dest.writeList(this.files);
|
||||
dest.writeString(this.id);
|
||||
dest.writeByte(this.isLocal ? (byte) 1 : (byte) 0);
|
||||
|
@ -131,4 +131,17 @@ public class Report {
|
||||
this.id = id;
|
||||
}
|
||||
}
|
||||
|
||||
public static class ReportReturn {
|
||||
@SerializedName("abuse")
|
||||
private ItemStr reply;
|
||||
|
||||
public ItemStr getItemStr() {
|
||||
return reply;
|
||||
}
|
||||
|
||||
public void setItemStr(ItemStr itemStr) {
|
||||
this.reply = itemStr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,17 @@ import java.util.List;
|
||||
@SuppressWarnings("unused")
|
||||
public class SepiaSearch implements Parcelable {
|
||||
|
||||
public static final Creator<SepiaSearch> CREATOR = new Creator<SepiaSearch>() {
|
||||
@Override
|
||||
public SepiaSearch createFromParcel(Parcel source) {
|
||||
return new SepiaSearch(source);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SepiaSearch[] newArray(int size) {
|
||||
return new SepiaSearch[size];
|
||||
}
|
||||
};
|
||||
@SerializedName("start")
|
||||
private String start;
|
||||
@SerializedName("count")
|
||||
@ -53,7 +64,27 @@ public class SepiaSearch implements Parcelable {
|
||||
@SerializedName("sort")
|
||||
private String sort;
|
||||
|
||||
public SepiaSearch() {
|
||||
}
|
||||
|
||||
protected SepiaSearch(Parcel in) {
|
||||
this.start = in.readString();
|
||||
this.count = in.readString();
|
||||
this.search = in.readString();
|
||||
this.durationMax = in.readInt();
|
||||
this.durationMin = in.readInt();
|
||||
long tmpStartDate = in.readLong();
|
||||
this.startDate = tmpStartDate == -1 ? null : new Date(tmpStartDate);
|
||||
this.boostLanguages = in.createStringArrayList();
|
||||
this.categoryOneOf = new ArrayList<>();
|
||||
in.readList(this.categoryOneOf, Integer.class.getClassLoader());
|
||||
this.licenceOneOf = new ArrayList<>();
|
||||
in.readList(this.licenceOneOf, Integer.class.getClassLoader());
|
||||
this.tagsOneOf = in.createStringArrayList();
|
||||
this.tagsAllOf = in.createStringArrayList();
|
||||
this.nsfw = in.readByte() != 0;
|
||||
this.sort = in.readString();
|
||||
}
|
||||
|
||||
public String getStart() {
|
||||
return start;
|
||||
@ -180,38 +211,4 @@ public class SepiaSearch implements Parcelable {
|
||||
dest.writeByte(this.nsfw ? (byte) 1 : (byte) 0);
|
||||
dest.writeString(this.sort);
|
||||
}
|
||||
|
||||
public SepiaSearch() {
|
||||
}
|
||||
|
||||
protected SepiaSearch(Parcel in) {
|
||||
this.start = in.readString();
|
||||
this.count = in.readString();
|
||||
this.search = in.readString();
|
||||
this.durationMax = in.readInt();
|
||||
this.durationMin = in.readInt();
|
||||
long tmpStartDate = in.readLong();
|
||||
this.startDate = tmpStartDate == -1 ? null : new Date(tmpStartDate);
|
||||
this.boostLanguages = in.createStringArrayList();
|
||||
this.categoryOneOf = new ArrayList<>();
|
||||
in.readList(this.categoryOneOf, Integer.class.getClassLoader());
|
||||
this.licenceOneOf = new ArrayList<>();
|
||||
in.readList(this.licenceOneOf, Integer.class.getClassLoader());
|
||||
this.tagsOneOf = in.createStringArrayList();
|
||||
this.tagsAllOf = in.createStringArrayList();
|
||||
this.nsfw = in.readByte() != 0;
|
||||
this.sort = in.readString();
|
||||
}
|
||||
|
||||
public static final Creator<SepiaSearch> CREATOR = new Creator<SepiaSearch>() {
|
||||
@Override
|
||||
public SepiaSearch createFromParcel(Parcel source) {
|
||||
return new SepiaSearch(source);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SepiaSearch[] newArray(int size) {
|
||||
return new SepiaSearch[size];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ package app.fedilab.fedilabtube.client.entities;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import app.fedilab.fedilabtube.client.data.CommentData;
|
||||
import app.fedilab.fedilabtube.client.data.VideoData;
|
||||
|
||||
@SuppressWarnings({"unused", "RedundantSuppression"})
|
||||
@ -41,4 +42,38 @@ public class VideoAbuse {
|
||||
public void setVideo(VideoData.Video video) {
|
||||
this.video = video;
|
||||
}
|
||||
|
||||
|
||||
public static class Abuse {
|
||||
@SerializedName("comment")
|
||||
private CommentData.Comment comment;
|
||||
@SerializedName("threadId")
|
||||
private String threadId;
|
||||
@SerializedName("id")
|
||||
private String id;
|
||||
|
||||
public CommentData.Comment getComment() {
|
||||
return comment;
|
||||
}
|
||||
|
||||
public void setComment(CommentData.Comment comment) {
|
||||
this.comment = comment;
|
||||
}
|
||||
|
||||
public String getThreadId() {
|
||||
return threadId;
|
||||
}
|
||||
|
||||
public void setThreadId(String threadId) {
|
||||
this.threadId = threadId;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -37,8 +37,8 @@ import app.fedilab.fedilabtube.helper.Helper;
|
||||
|
||||
public class AccountsHorizontalListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
|
||||
private final List<ChannelData.Channel> channels;
|
||||
EventListener listener;
|
||||
private List<ChannelData.Channel> channels;
|
||||
private Context context;
|
||||
|
||||
public AccountsHorizontalListAdapter(List<ChannelData.Channel> channels, EventListener listener) {
|
||||
@ -109,11 +109,7 @@ public class AccountsHorizontalListAdapter extends RecyclerView.Adapter<Recycler
|
||||
ChannelData.Channel channel = channels.get(getAdapterPosition());
|
||||
listener.click(channel.getAcct());
|
||||
for (ChannelData.Channel acc : channels) {
|
||||
if (acc.getId().compareTo(channel.getId()) == 0) {
|
||||
acc.setSelected(true);
|
||||
} else {
|
||||
acc.setSelected(false);
|
||||
}
|
||||
acc.setSelected(acc.getId().compareTo(channel.getId()) == 0);
|
||||
}
|
||||
notifyItemRangeChanged(0, channels.size());
|
||||
}
|
||||
|
@ -47,11 +47,11 @@ import es.dmoral.toasty.Toasty;
|
||||
|
||||
public class AccountsListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
|
||||
private final List<Account> accounts;
|
||||
private final AccountsListAdapter accountsListAdapter;
|
||||
private final RetrofitPeertubeAPI.DataType type;
|
||||
public AllAccountsRemoved allAccountsRemoved;
|
||||
private List<Account> accounts;
|
||||
private Context context;
|
||||
private AccountsListAdapter accountsListAdapter;
|
||||
private RetrofitPeertubeAPI.DataType type;
|
||||
|
||||
public AccountsListAdapter(RetrofitPeertubeAPI.DataType type, List<Account> accounts) {
|
||||
this.accounts = accounts;
|
||||
@ -96,7 +96,8 @@ public class AccountsListAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
||||
holder.account_pp.setOnClickListener(v -> {
|
||||
Intent intent = new Intent(context, ShowAccountActivity.class);
|
||||
Bundle b = new Bundle();
|
||||
b.putParcelable("channel", account);
|
||||
b.putParcelable("account", account);
|
||||
b.putString("accountAcct", account.getAcct());
|
||||
intent.putExtras(b);
|
||||
context.startActivity(intent);
|
||||
});
|
||||
|
@ -44,14 +44,16 @@ import app.fedilab.fedilabtube.helper.Helper;
|
||||
|
||||
public class ChannelListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
|
||||
private final List<Channel> channels;
|
||||
private final boolean myChannel;
|
||||
public AllChannelRemoved allChannelRemoved;
|
||||
public EditAlertDialog editAlertDialog;
|
||||
private List<Channel> channels;
|
||||
private Context context;
|
||||
|
||||
|
||||
public ChannelListAdapter(List<Channel> channels) {
|
||||
public ChannelListAdapter(List<Channel> channels, boolean myChannel) {
|
||||
this.channels = channels;
|
||||
this.myChannel = myChannel;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@ -75,7 +77,9 @@ public class ChannelListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
|
||||
//Profile picture
|
||||
Helper.loadGiF(context, channel.getAvatar() != null ? channel.getAvatar().getPath() : null, holder.account_pp);
|
||||
|
||||
|
||||
if (!this.myChannel) {
|
||||
holder.more_actions.setVisibility(View.GONE);
|
||||
}
|
||||
holder.more_actions.setOnClickListener(view -> {
|
||||
PopupMenu popup = new PopupMenu(context, holder.more_actions);
|
||||
popup.getMenuInflater()
|
||||
@ -84,35 +88,33 @@ public class ChannelListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
|
||||
popup.getMenu().findItem(R.id.action_delete).setEnabled(false);
|
||||
}
|
||||
popup.setOnMenuItemClickListener(item -> {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_delete:
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
builder.setTitle(context.getString(R.string.delete_channel) + ": " + channel.getName());
|
||||
builder.setMessage(context.getString(R.string.action_channel_confirm_delete));
|
||||
builder.setIcon(android.R.drawable.ic_dialog_alert)
|
||||
.setPositiveButton(R.string.yes, (dialog, which) -> {
|
||||
new Thread(() -> {
|
||||
new RetrofitPeertubeAPI(context).post(RetrofitPeertubeAPI.ActionType.DELETE_CHANNEL, channel.getName(), null);
|
||||
Handler mainHandler = new Handler(Looper.getMainLooper());
|
||||
Runnable myRunnable = () -> {
|
||||
channels.remove(channel);
|
||||
notifyDataSetChanged();
|
||||
if (channels.size() == 0) {
|
||||
allChannelRemoved.onAllChannelRemoved();
|
||||
}
|
||||
};
|
||||
mainHandler.post(myRunnable);
|
||||
}).start();
|
||||
dialog.dismiss();
|
||||
})
|
||||
.setNegativeButton(R.string.no, (dialog, which) -> dialog.dismiss())
|
||||
.show();
|
||||
break;
|
||||
case R.id.action_edit:
|
||||
if (context instanceof AccountActivity) {
|
||||
editAlertDialog.show(channel);
|
||||
}
|
||||
break;
|
||||
int itemId = item.getItemId();
|
||||
if (itemId == R.id.action_delete) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
builder.setTitle(context.getString(R.string.delete_channel) + ": " + channel.getName());
|
||||
builder.setMessage(context.getString(R.string.action_channel_confirm_delete));
|
||||
builder.setIcon(android.R.drawable.ic_dialog_alert)
|
||||
.setPositiveButton(R.string.yes, (dialog, which) -> {
|
||||
new Thread(() -> {
|
||||
new RetrofitPeertubeAPI(context).post(RetrofitPeertubeAPI.ActionType.DELETE_CHANNEL, channel.getName(), null);
|
||||
Handler mainHandler = new Handler(Looper.getMainLooper());
|
||||
Runnable myRunnable = () -> {
|
||||
channels.remove(channel);
|
||||
notifyDataSetChanged();
|
||||
if (channels.size() == 0) {
|
||||
allChannelRemoved.onAllChannelRemoved();
|
||||
}
|
||||
};
|
||||
mainHandler.post(myRunnable);
|
||||
}).start();
|
||||
dialog.dismiss();
|
||||
})
|
||||
.setNegativeButton(R.string.no, (dialog, which) -> dialog.dismiss())
|
||||
.show();
|
||||
} else if (itemId == R.id.action_edit) {
|
||||
if (context instanceof AccountActivity) {
|
||||
editAlertDialog.show(channel);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
@ -16,8 +16,11 @@ package app.fedilab.fedilabtube.drawer;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.text.Html;
|
||||
@ -38,6 +41,7 @@ import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.widget.PopupMenu;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
@ -48,27 +52,37 @@ import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import app.fedilab.fedilabtube.PeertubeActivity;
|
||||
import app.fedilab.fedilabtube.R;
|
||||
import app.fedilab.fedilabtube.ShowAccountActivity;
|
||||
import app.fedilab.fedilabtube.client.APIResponse;
|
||||
import app.fedilab.fedilabtube.client.RetrofitPeertubeAPI;
|
||||
import app.fedilab.fedilabtube.client.data.CommentData.Comment;
|
||||
import app.fedilab.fedilabtube.client.entities.Report;
|
||||
import app.fedilab.fedilabtube.helper.EmojiHelper;
|
||||
import app.fedilab.fedilabtube.helper.Helper;
|
||||
import app.fedilab.fedilabtube.viewmodel.PostActionsVM;
|
||||
import es.dmoral.toasty.Toasty;
|
||||
import studio.carbonylgroup.textfieldboxes.ExtendedEditText;
|
||||
|
||||
import static app.fedilab.fedilabtube.client.RetrofitPeertubeAPI.ActionType.MUTE;
|
||||
import static app.fedilab.fedilabtube.client.RetrofitPeertubeAPI.ActionType.REPLY;
|
||||
import static app.fedilab.fedilabtube.helper.Helper.isLoggedIn;
|
||||
|
||||
|
||||
public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
|
||||
|
||||
private final List<Comment> comments;
|
||||
private final CommentListAdapter commentListAdapter;
|
||||
public AllCommentRemoved allCommentRemoved;
|
||||
boolean isVideoOwner;
|
||||
private Context context;
|
||||
private List<Comment> comments;
|
||||
private CommentListAdapter commentListAdapter;
|
||||
|
||||
public CommentListAdapter(List<Comment> comments) {
|
||||
public CommentListAdapter(List<Comment> comments, boolean isVideoOwner) {
|
||||
this.comments = comments;
|
||||
commentListAdapter = this;
|
||||
this.isVideoOwner = isVideoOwner;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -104,7 +118,7 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
|
||||
|
||||
if (comment == null)
|
||||
return;
|
||||
|
||||
holder.main_container.setTag(i);
|
||||
|
||||
holder.more_actions.setOnClickListener(view -> {
|
||||
PopupMenu popup = new PopupMenu(context, holder.more_actions);
|
||||
@ -112,36 +126,78 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
|
||||
.inflate(R.menu.comment_menu, popup.getMenu());
|
||||
if (!Helper.isOwner(context, comment.getAccount())) {
|
||||
popup.getMenu().findItem(R.id.action_delete).setVisible(false);
|
||||
} else {
|
||||
popup.getMenu().findItem(R.id.action_mute).setVisible(false);
|
||||
popup.getMenu().findItem(R.id.action_remove_comments).setVisible(false);
|
||||
popup.getMenu().findItem(R.id.action_report).setVisible(false);
|
||||
}
|
||||
if (!isVideoOwner) {
|
||||
popup.getMenu().findItem(R.id.action_remove_comments).setVisible(false);
|
||||
}
|
||||
if (!Helper.isLoggedIn(context)) {
|
||||
popup.getMenu().findItem(R.id.action_mute).setVisible(false);
|
||||
popup.getMenu().findItem(R.id.action_remove_comments).setVisible(false);
|
||||
popup.getMenu().findItem(R.id.action_delete).setVisible(false);
|
||||
}
|
||||
popup.setOnMenuItemClickListener(item -> {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_delete:
|
||||
android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(context);
|
||||
builder.setTitle(R.string.delete_comment);
|
||||
builder.setMessage(R.string.delete_comment_confirm);
|
||||
builder.setIcon(android.R.drawable.ic_dialog_alert)
|
||||
.setPositiveButton(R.string.delete, (dialog, which) -> {
|
||||
new Thread(() -> {
|
||||
new RetrofitPeertubeAPI(context).post(RetrofitPeertubeAPI.ActionType.PEERTUBEDELETECOMMENT, comment.getVideoId(), comment.getId());
|
||||
Handler mainHandler = new Handler(Looper.getMainLooper());
|
||||
Runnable myRunnable = () -> {
|
||||
comments.remove(comment);
|
||||
notifyDataSetChanged();
|
||||
if (comments.size() == 0) {
|
||||
allCommentRemoved.onAllCommentRemoved();
|
||||
}
|
||||
};
|
||||
mainHandler.post(myRunnable);
|
||||
}).start();
|
||||
int itemId = item.getItemId();
|
||||
if (itemId == R.id.action_delete) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
builder.setTitle(R.string.delete_comment);
|
||||
builder.setMessage(R.string.delete_comment_confirm);
|
||||
builder.setIcon(android.R.drawable.ic_dialog_alert)
|
||||
.setPositiveButton(R.string.delete, (dialog, which) -> {
|
||||
new Thread(() -> {
|
||||
new RetrofitPeertubeAPI(context).post(RetrofitPeertubeAPI.ActionType.PEERTUBEDELETECOMMENT, comment.getVideoId(), comment.getId());
|
||||
Handler mainHandler = new Handler(Looper.getMainLooper());
|
||||
Runnable myRunnable = () -> {
|
||||
comments.remove(comment);
|
||||
notifyDataSetChanged();
|
||||
if (comments.size() == 0) {
|
||||
allCommentRemoved.onAllCommentRemoved();
|
||||
}
|
||||
};
|
||||
mainHandler.post(myRunnable);
|
||||
}).start();
|
||||
|
||||
dialog.dismiss();
|
||||
})
|
||||
.setNegativeButton(R.string.no, (dialog, which) -> dialog.dismiss())
|
||||
.show();
|
||||
break;
|
||||
case R.id.action_report:
|
||||
reportComment(comment);
|
||||
break;
|
||||
dialog.dismiss();
|
||||
})
|
||||
.setNegativeButton(R.string.no, (dialog, which) -> dialog.dismiss())
|
||||
.show();
|
||||
} else if (itemId == R.id.action_report) {
|
||||
reportComment(comment);
|
||||
} else if (itemId == R.id.action_mute) {
|
||||
PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
|
||||
viewModel.post(MUTE, comment.getAccount().getAcct(), null).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(MUTE, 0, apiResponse));
|
||||
comments.remove(comment);
|
||||
notifyDataSetChanged();
|
||||
if (comments.size() == 0) {
|
||||
allCommentRemoved.onAllCommentRemoved();
|
||||
}
|
||||
} else if (itemId == R.id.action_remove_comments) {
|
||||
AlertDialog.Builder builder;
|
||||
builder = new AlertDialog.Builder(context);
|
||||
builder.setTitle(R.string.delete_account_comment);
|
||||
builder.setMessage(R.string.delete_account_comment_confirm);
|
||||
builder.setIcon(android.R.drawable.ic_dialog_alert)
|
||||
.setPositiveButton(R.string.delete, (dialog, which) -> {
|
||||
new Thread(() -> {
|
||||
new RetrofitPeertubeAPI(context).post(RetrofitPeertubeAPI.ActionType.PEERTUBE_DELETE_ALL_COMMENT_FOR_ACCOUNT, comment.getAccount().getAcct(), "my-videos");
|
||||
Handler mainHandler = new Handler(Looper.getMainLooper());
|
||||
Runnable myRunnable = () -> {
|
||||
comments.remove(comment);
|
||||
notifyDataSetChanged();
|
||||
if (comments.size() == 0) {
|
||||
allCommentRemoved.onAllCommentRemoved();
|
||||
}
|
||||
};
|
||||
mainHandler.post(myRunnable);
|
||||
}).start();
|
||||
|
||||
dialog.dismiss();
|
||||
})
|
||||
.setNegativeButton(R.string.no, (dialog, which) -> dialog.dismiss())
|
||||
.show();
|
||||
}
|
||||
return true;
|
||||
});
|
||||
@ -159,15 +215,26 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
|
||||
|
||||
Spanned commentSpan;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
commentSpan = Html.fromHtml(comment.getText(), Html.FROM_HTML_MODE_LEGACY);
|
||||
commentSpan = Html.fromHtml(EmojiHelper.shortnameToUnicode(comment.getText()), Html.FROM_HTML_MODE_COMPACT);
|
||||
else
|
||||
commentSpan = Html.fromHtml(comment.getText());
|
||||
commentSpan = Html.fromHtml(EmojiHelper.shortnameToUnicode(comment.getText()));
|
||||
holder.comment_content.setText(commentSpan, TextView.BufferType.SPANNABLE);
|
||||
|
||||
holder.comment_content.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
|
||||
holder.comment_account_displayname.setText(comment.getAccount().getDisplayName());
|
||||
|
||||
if (context instanceof PeertubeActivity && !comment.isReply()) {
|
||||
holder.main_container.setOnClickListener(v -> ((PeertubeActivity) context).openCommentThread(comment, i));
|
||||
holder.comment_content.setOnClickListener(v -> ((PeertubeActivity) context).openCommentThread(comment, i));
|
||||
}
|
||||
if (comment.getTotalReplies() > 0) {
|
||||
holder.number_of_replies.setVisibility(View.VISIBLE);
|
||||
holder.number_of_replies.setText(context.getResources().getQuantityString(R.plurals.number_of_replies, comment.getTotalReplies(), comment.getTotalReplies()));
|
||||
} else {
|
||||
holder.number_of_replies.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if (comment.getAccount() != null) {
|
||||
Spannable wordtoSpan;
|
||||
Pattern hashAcct;
|
||||
@ -188,9 +255,50 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
|
||||
|
||||
|
||||
Helper.loadGiF(context, comment.getAccount().getAvatar() != null ? comment.getAccount().getAvatar().getPath() : null, holder.comment_account_profile);
|
||||
|
||||
holder.comment_account_profile.setOnClickListener(v -> {
|
||||
Bundle b = new Bundle();
|
||||
Intent intent = new Intent(context, ShowAccountActivity.class);
|
||||
b.putParcelable("account", comment.getAccount());
|
||||
b.putString("accountAcct", comment.getAccount().getAcct());
|
||||
intent.putExtras(b);
|
||||
context.startActivity(intent);
|
||||
});
|
||||
if (comment.isReply()) {
|
||||
holder.replyButton.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
holder.replyButton.setVisibility(View.GONE);
|
||||
}
|
||||
if (comment.isReply() && comment.isReplyViewOpen()) {
|
||||
holder.write_comment_container_reply.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
holder.write_comment_container_reply.setVisibility(View.GONE);
|
||||
}
|
||||
if (holder.add_comment_write_reply.getText() == null || holder.add_comment_write_reply.getText().toString().trim().length() == 0) {
|
||||
holder.add_comment_write_reply.setText(String.format("@%s ", comment.getAccount().getAcct()));
|
||||
holder.add_comment_write_reply.setSelection(holder.add_comment_write_reply.getText().length());
|
||||
}
|
||||
holder.replyButton.setOnClickListener(v -> {
|
||||
comment.setReplyViewOpen(!comment.isReplyViewOpen());
|
||||
notifyItemChanged(i);
|
||||
});
|
||||
|
||||
holder.send_reply.setOnClickListener(null);
|
||||
holder.send_reply.setOnClickListener(v -> {
|
||||
if (isLoggedIn(context)) {
|
||||
String commentView = holder.add_comment_write_reply.getText().toString();
|
||||
if (commentView.trim().length() > 0) {
|
||||
PostActionsVM viewModelComment = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
|
||||
viewModelComment.comment(REPLY, comment.getVideoId(), comment.getId(), commentView).observe((LifecycleOwner) context, apiResponse1 -> manageVIewPostActions(REPLY, (int) holder.main_container.getTag(), apiResponse1));
|
||||
holder.add_comment_write_reply.setText("");
|
||||
comment.setReplyViewOpen(false);
|
||||
notifyItemChanged(i);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void manageVIewPostActions(RetrofitPeertubeAPI.ActionType statusAction, APIResponse apiResponse) {
|
||||
public void manageVIewPostActions(RetrofitPeertubeAPI.ActionType statusAction, int i, APIResponse apiResponse) {
|
||||
|
||||
if (apiResponse.getError() != null) {
|
||||
Toasty.error(context, apiResponse.getError().getError(), Toast.LENGTH_LONG).show();
|
||||
@ -206,8 +314,15 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
|
||||
}
|
||||
position++;
|
||||
}
|
||||
} else if (statusAction == REPLY) {
|
||||
if (apiResponse.getComments() != null && apiResponse.getComments().size() > 0) {
|
||||
comments.add(i + 1, apiResponse.getComments().get(0));
|
||||
notifyItemInserted(i + 1);
|
||||
}
|
||||
} else if (statusAction == RetrofitPeertubeAPI.ActionType.REPORT_COMMENT) {
|
||||
Toasty.success(context, context.getString(R.string.successful_report_comment), Toasty.LENGTH_LONG).show();
|
||||
} else if (statusAction == MUTE) {
|
||||
Toasty.info(context, context.getString(R.string.muted_done), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
|
||||
@ -229,7 +344,7 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
|
||||
commentReport.setId(comment.getId());
|
||||
report.setComment(commentReport);
|
||||
report.setReason(report_content.getText().toString());
|
||||
viewModel.report(report).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(RetrofitPeertubeAPI.ActionType.REPORT_COMMENT, apiResponse));
|
||||
viewModel.report(report).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(RetrofitPeertubeAPI.ActionType.REPORT_COMMENT, 0, apiResponse));
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
@ -246,10 +361,13 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
|
||||
TextView comment_content;
|
||||
TextView comment_account_username;
|
||||
TextView comment_account_displayname;
|
||||
ImageView comment_account_profile;
|
||||
TextView comment_date;
|
||||
ImageView comment_account_profile, send_reply;
|
||||
TextView comment_date, replyButton;
|
||||
LinearLayout main_container;
|
||||
TextView more_actions;
|
||||
TextView more_actions, number_of_replies;
|
||||
ExtendedEditText add_comment_write_reply;
|
||||
ConstraintLayout write_comment_container_reply;
|
||||
|
||||
|
||||
@SuppressLint("SetJavaScriptEnabled")
|
||||
ViewHolder(View itemView) {
|
||||
@ -261,6 +379,11 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
|
||||
comment_date = itemView.findViewById(R.id.comment_date);
|
||||
main_container = itemView.findViewById(R.id.main_container);
|
||||
more_actions = itemView.findViewById(R.id.more_actions);
|
||||
number_of_replies = itemView.findViewById(R.id.number_of_replies);
|
||||
add_comment_write_reply = itemView.findViewById(R.id.add_comment_write_reply);
|
||||
send_reply = itemView.findViewById(R.id.send_reply);
|
||||
replyButton = itemView.findViewById(R.id.replyButton);
|
||||
write_comment_container_reply = itemView.findViewById(R.id.write_comment_container_reply);
|
||||
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ import static app.fedilab.fedilabtube.MainActivity.peertubeInformation;
|
||||
|
||||
public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
|
||||
private List<Instance> instances;
|
||||
private final List<Instance> instances;
|
||||
|
||||
private Context context;
|
||||
|
||||
|
@ -34,8 +34,8 @@ import app.fedilab.fedilabtube.helper.Helper;
|
||||
|
||||
public class OwnAccountsAdapter extends ArrayAdapter<Account> {
|
||||
|
||||
private List<Account> accounts;
|
||||
private LayoutInflater layoutInflater;
|
||||
private final List<Account> accounts;
|
||||
private final LayoutInflater layoutInflater;
|
||||
|
||||
public OwnAccountsAdapter(Context context, List<Account> accounts) {
|
||||
super(context, android.R.layout.simple_list_item_1, accounts);
|
||||
|
@ -63,9 +63,9 @@ import static app.fedilab.fedilabtube.viewmodel.TimelineVM.TimelineType.SEPIA_SE
|
||||
|
||||
public class PeertubeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
|
||||
private final List<VideoData.Video> videos;
|
||||
public RelationShipListener relationShipListener;
|
||||
public PlaylistListener playlistListener;
|
||||
private List<VideoData.Video> videos;
|
||||
private Context context;
|
||||
private TimelineVM.TimelineType timelineType;
|
||||
private boolean sepiaSearch;
|
||||
@ -78,7 +78,6 @@ public class PeertubeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||
}
|
||||
|
||||
|
||||
|
||||
public PeertubeAdapter(List<VideoData.Video> videos) {
|
||||
this.videos = videos;
|
||||
}
|
||||
@ -98,7 +97,7 @@ public class PeertubeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||
final PeertubeAdapter.ViewHolder holder = (PeertubeAdapter.ViewHolder) viewHolder;
|
||||
final VideoData.Video video = videos.get(position);
|
||||
|
||||
if( video == null) {
|
||||
if (video == null) {
|
||||
return;
|
||||
}
|
||||
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
@ -111,11 +110,11 @@ public class PeertubeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||
if (timelineType == TimelineVM.TimelineType.MY_VIDEOS) {
|
||||
ownVideos = true;
|
||||
} else {
|
||||
ownVideos = video.getAccount() != null && video.getAccount().getId() != null && video.getAccount().getHost().compareTo(Helper.getLiveInstance(context)) == 0 && video.getAccount().getId().compareTo(userId) == 0;
|
||||
ownVideos = Helper.isVideoOwner(context, video);
|
||||
}
|
||||
|
||||
String instance = null;
|
||||
if( sepiaSearch) {
|
||||
if (sepiaSearch) {
|
||||
instance = video.getAccount().getHost();
|
||||
}
|
||||
|
||||
@ -151,7 +150,7 @@ public class PeertubeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||
Bundle b = new Bundle();
|
||||
b.putParcelable("channel", video.getChannel());
|
||||
b.putBoolean("sepia_search", sepiaSearch);
|
||||
if( sepiaSearch) {
|
||||
if (sepiaSearch) {
|
||||
b.putString("peertube_instance", video.getAccount().getHost());
|
||||
}
|
||||
intent.putExtras(b);
|
||||
@ -180,76 +179,67 @@ public class PeertubeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||
}
|
||||
}
|
||||
}
|
||||
if (playlistListener == null || playlistListener.getPlaylist() == null || playlistListener.getPlaylist().size() == 0) {
|
||||
popup.getMenu().findItem(R.id.action_playlist).setVisible(false);
|
||||
} else {
|
||||
popup.getMenu().findItem(R.id.action_playlist).setVisible(true);
|
||||
}
|
||||
popup.getMenu().findItem(R.id.action_playlist).setVisible(playlistListener != null && playlistListener.getPlaylist() != null && playlistListener.getPlaylist().size() != 0);
|
||||
popup.setOnMenuItemClickListener(item -> {
|
||||
switch (item.getItemId()) {
|
||||
|
||||
case R.id.action_follow:
|
||||
if (relationShipListener.getRelationShip().containsKey(video.getChannel().getAcct()) && relationShipListener.getRelationShip().get(video.getChannel().getAcct())) {
|
||||
relationShipListener.getRelationShip().put(video.getChannel().getAcct(), false);
|
||||
popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_follow));
|
||||
boolean confirm_unfollow = sharedpreferences.getBoolean(Helper.SET_UNFOLLOW_VALIDATION, true);
|
||||
if (confirm_unfollow) {
|
||||
AlertDialog.Builder unfollowConfirm = new AlertDialog.Builder(context);
|
||||
unfollowConfirm.setTitle(context.getString(R.string.unfollow_confirm));
|
||||
unfollowConfirm.setMessage(video.getChannel().getAcct());
|
||||
unfollowConfirm.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss());
|
||||
unfollowConfirm.setPositiveButton(R.string.yes, (dialog, which) -> {
|
||||
PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
|
||||
viewModel.post(UNFOLLOW, video.getChannel().getAcct(), null).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(UNFOLLOW, apiResponse));
|
||||
dialog.dismiss();
|
||||
});
|
||||
unfollowConfirm.show();
|
||||
} else {
|
||||
int itemId = item.getItemId();
|
||||
if (itemId == R.id.action_follow) {
|
||||
if (relationShipListener.getRelationShip().containsKey(video.getChannel().getAcct()) && relationShipListener.getRelationShip().get(video.getChannel().getAcct())) {
|
||||
relationShipListener.getRelationShip().put(video.getChannel().getAcct(), false);
|
||||
popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_follow));
|
||||
boolean confirm_unfollow = sharedpreferences.getBoolean(Helper.SET_UNFOLLOW_VALIDATION, true);
|
||||
if (confirm_unfollow) {
|
||||
AlertDialog.Builder unfollowConfirm = new AlertDialog.Builder(context);
|
||||
unfollowConfirm.setTitle(context.getString(R.string.unfollow_confirm));
|
||||
unfollowConfirm.setMessage(video.getChannel().getAcct());
|
||||
unfollowConfirm.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss());
|
||||
unfollowConfirm.setPositiveButton(R.string.yes, (dialog, which) -> {
|
||||
PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
|
||||
viewModel.post(UNFOLLOW, video.getChannel().getAcct(), null).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(UNFOLLOW, apiResponse));
|
||||
}
|
||||
dialog.dismiss();
|
||||
});
|
||||
unfollowConfirm.show();
|
||||
} else {
|
||||
relationShipListener.getRelationShip().put(video.getChannel().getAcct(), true);
|
||||
popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_unfollow));
|
||||
PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
|
||||
viewModel.post(FOLLOW, video.getChannel().getAcct(), null).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(FOLLOW, apiResponse));
|
||||
viewModel.post(UNFOLLOW, video.getChannel().getAcct(), null).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(UNFOLLOW, apiResponse));
|
||||
}
|
||||
break;
|
||||
case R.id.action_playlist:
|
||||
PlaylistsVM viewModelOwnerPlaylist = new ViewModelProvider((ViewModelStoreOwner) context).get(PlaylistsVM.class);
|
||||
viewModelOwnerPlaylist.manage(PlaylistsVM.action.GET_PLAYLISTS, null, null).observe((LifecycleOwner) context, apiResponse -> manageVIewPlaylists(video, apiResponse));
|
||||
break;
|
||||
case R.id.action_edit:
|
||||
Intent intent = new Intent(context, PeertubeEditUploadActivity.class);
|
||||
Bundle b = new Bundle();
|
||||
b.putString("video_id", video.getUuid());
|
||||
intent.putExtras(b);
|
||||
context.startActivity(intent);
|
||||
break;
|
||||
case R.id.action_report:
|
||||
androidx.appcompat.app.AlertDialog.Builder dialogBuilder = new androidx.appcompat.app.AlertDialog.Builder(context);
|
||||
LayoutInflater inflater1 = ((Activity) context).getLayoutInflater();
|
||||
View dialogView = inflater1.inflate(R.layout.popup_report, new LinearLayout(context), false);
|
||||
dialogBuilder.setView(dialogView);
|
||||
EditText report_content = dialogView.findViewById(R.id.report_content);
|
||||
dialogBuilder.setNeutralButton(R.string.cancel, (dialog2, id) -> dialog2.dismiss());
|
||||
dialogBuilder.setPositiveButton(R.string.report, (dialog2, id) -> {
|
||||
if (report_content.getText().toString().trim().length() == 0) {
|
||||
Toasty.info(context, context.getString(R.string.report_comment_size), Toasty.LENGTH_LONG).show();
|
||||
} else {
|
||||
PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
|
||||
Report report = new Report();
|
||||
Report.VideoReport videoReport = new Report.VideoReport();
|
||||
videoReport.setId(video.getId());
|
||||
report.setVideo(videoReport);
|
||||
report.setReason(report_content.getText().toString());
|
||||
viewModel.report(report).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(RetrofitPeertubeAPI.ActionType.REPORT_VIDEO, apiResponse));
|
||||
dialog2.dismiss();
|
||||
}
|
||||
});
|
||||
androidx.appcompat.app.AlertDialog alertDialog2 = dialogBuilder.create();
|
||||
alertDialog2.show();
|
||||
break;
|
||||
} else {
|
||||
relationShipListener.getRelationShip().put(video.getChannel().getAcct(), true);
|
||||
popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_unfollow));
|
||||
PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
|
||||
viewModel.post(FOLLOW, video.getChannel().getAcct(), null).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(FOLLOW, apiResponse));
|
||||
}
|
||||
} else if (itemId == R.id.action_playlist) {
|
||||
PlaylistsVM viewModelOwnerPlaylist = new ViewModelProvider((ViewModelStoreOwner) context).get(PlaylistsVM.class);
|
||||
viewModelOwnerPlaylist.manage(PlaylistsVM.action.GET_PLAYLISTS, null, null).observe((LifecycleOwner) context, apiResponse -> manageVIewPlaylists(video, apiResponse));
|
||||
} else if (itemId == R.id.action_edit) {
|
||||
Intent intent = new Intent(context, PeertubeEditUploadActivity.class);
|
||||
Bundle b = new Bundle();
|
||||
b.putString("video_id", video.getUuid());
|
||||
intent.putExtras(b);
|
||||
context.startActivity(intent);
|
||||
} else if (itemId == R.id.action_report) {
|
||||
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
|
||||
LayoutInflater inflater1 = ((Activity) context).getLayoutInflater();
|
||||
View dialogView = inflater1.inflate(R.layout.popup_report, new LinearLayout(context), false);
|
||||
dialogBuilder.setView(dialogView);
|
||||
EditText report_content = dialogView.findViewById(R.id.report_content);
|
||||
dialogBuilder.setNeutralButton(R.string.cancel, (dialog2, id) -> dialog2.dismiss());
|
||||
dialogBuilder.setPositiveButton(R.string.report, (dialog2, id) -> {
|
||||
if (report_content.getText().toString().trim().length() == 0) {
|
||||
Toasty.info(context, context.getString(R.string.report_comment_size), Toasty.LENGTH_LONG).show();
|
||||
} else {
|
||||
PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
|
||||
Report report = new Report();
|
||||
Report.VideoReport videoReport = new Report.VideoReport();
|
||||
videoReport.setId(video.getId());
|
||||
report.setVideo(videoReport);
|
||||
report.setReason(report_content.getText().toString());
|
||||
viewModel.report(report).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(RetrofitPeertubeAPI.ActionType.REPORT_VIDEO, apiResponse));
|
||||
dialog2.dismiss();
|
||||
}
|
||||
});
|
||||
AlertDialog alertDialog2 = dialogBuilder.create();
|
||||
alertDialog2.show();
|
||||
}
|
||||
return true;
|
||||
});
|
||||
@ -262,7 +252,8 @@ public class PeertubeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||
b.putString("video_uuid", video.getUuid());
|
||||
b.putBoolean("isMyVideo", ownVideos);
|
||||
b.putBoolean("sepia_search", sepiaSearch);
|
||||
if( sepiaSearch) {
|
||||
b.putParcelable("video", video);
|
||||
if (sepiaSearch) {
|
||||
b.putString("peertube_instance", video.getAccount().getHost());
|
||||
}
|
||||
intent.putExtras(b);
|
||||
@ -272,10 +263,11 @@ public class PeertubeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||
Intent intent = new Intent(context, PeertubeActivity.class);
|
||||
Bundle b = new Bundle();
|
||||
b.putString("video_id", video.getId());
|
||||
b.putParcelable("video", video);
|
||||
b.putString("video_uuid", video.getUuid());
|
||||
b.putBoolean("isMyVideo", ownVideos);
|
||||
b.putBoolean("sepia_search", sepiaSearch);
|
||||
if( sepiaSearch) {
|
||||
if (sepiaSearch) {
|
||||
b.putString("peertube_instance", video.getAccount().getHost());
|
||||
}
|
||||
intent.putExtras(b);
|
||||
@ -294,7 +286,7 @@ public class PeertubeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||
builder.setTitle(R.string.modify_playlists);
|
||||
|
||||
List<PlaylistData.Playlist> ownerPlaylists = apiResponse.getPlaylists();
|
||||
if( ownerPlaylists == null){
|
||||
if (ownerPlaylists == null) {
|
||||
return;
|
||||
}
|
||||
String[] label = new String[ownerPlaylists.size()];
|
||||
@ -383,7 +375,6 @@ public class PeertubeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||
}
|
||||
|
||||
|
||||
|
||||
static class ViewHolder extends RecyclerView.ViewHolder {
|
||||
LinearLayout main_container, bottom_container;
|
||||
ImageView peertube_profile, peertube_video_image;
|
||||
|
@ -45,8 +45,8 @@ import app.fedilab.fedilabtube.helper.Helper;
|
||||
|
||||
public class PeertubeNotificationsListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
|
||||
private final List<Notification> notifications;
|
||||
private Context context;
|
||||
private List<Notification> notifications;
|
||||
|
||||
public PeertubeNotificationsListAdapter(List<Notification> notifications) {
|
||||
this.notifications = notifications;
|
||||
@ -68,7 +68,7 @@ public class PeertubeNotificationsListAdapter extends RecyclerView.Adapter<Recyc
|
||||
Notification notification = notifications.get(position);
|
||||
//Follow Notification
|
||||
|
||||
|
||||
holder.peertube_notif_pp.setVisibility(View.VISIBLE);
|
||||
AccountData.Account accountAction = null;
|
||||
ChannelData.Channel channelAction = null;
|
||||
if (notification.getActorFollow() != null) {
|
||||
@ -77,7 +77,7 @@ public class PeertubeNotificationsListAdapter extends RecyclerView.Adapter<Recyc
|
||||
Actor accountActionFollow = notification.getActorFollow().getFollower();
|
||||
String type = notification.getActorFollow().getFollowing().getType();
|
||||
String message;
|
||||
if (type != null && type.equals("account")) {
|
||||
if (type != null && type.compareTo("channel") == 0) {
|
||||
message = context.getString(R.string.peertube_follow_channel, notification.getActorFollow().getFollower().getDisplayName(), notification.getActorFollow().getFollowing().getDisplayName());
|
||||
} else {
|
||||
message = context.getString(R.string.peertube_follow_account, accountActionFollow.getDisplayName());
|
||||
@ -86,13 +86,12 @@ public class PeertubeNotificationsListAdapter extends RecyclerView.Adapter<Recyc
|
||||
holder.peertube_notif_message.setText(Html.fromHtml(message, Html.FROM_HTML_MODE_LEGACY));
|
||||
else
|
||||
holder.peertube_notif_message.setText(Html.fromHtml(message));
|
||||
holder.peertube_notif_pp.setOnClickListener(v -> {
|
||||
Intent intent = new Intent(context, ShowChannelActivity.class);
|
||||
Bundle b = new Bundle();
|
||||
b.putString("channelId", accountActionFollow.getName() + "@" + accountActionFollow.getHost());
|
||||
intent.putExtras(b);
|
||||
context.startActivity(intent);
|
||||
});
|
||||
Actor actor = notification.getActorFollow().getFollower();
|
||||
accountAction = new AccountData.Account();
|
||||
accountAction.setAvatar(actor.getAvatar());
|
||||
accountAction.setDisplayName(actor.getDisplayName());
|
||||
accountAction.setHost(actor.getHost());
|
||||
accountAction.setUsername(actor.getName());
|
||||
} else if (notification.getComment() != null) { //Comment Notification
|
||||
String profileUrl = notification.getComment().getAccount().getAvatar() != null ? notification.getComment().getAccount().getAvatar().getPath() : null;
|
||||
Helper.loadGiF(context, profileUrl, holder.peertube_notif_pp);
|
||||
@ -107,6 +106,7 @@ public class PeertubeNotificationsListAdapter extends RecyclerView.Adapter<Recyc
|
||||
holder.peertube_notif_message.setOnClickListener(v -> {
|
||||
Intent intent = new Intent(context, PeertubeActivity.class);
|
||||
Bundle b = new Bundle();
|
||||
b.putParcelable("video", notification.getVideo());
|
||||
b.putString("peertube_instance", finalAccountAction1.getHost());
|
||||
b.putString("video_id", notification.getComment().getVideo().getId());
|
||||
b.putString("video_uuid", notification.getComment().getVideo().getUuid());
|
||||
@ -116,22 +116,26 @@ public class PeertubeNotificationsListAdapter extends RecyclerView.Adapter<Recyc
|
||||
} else {
|
||||
String profileUrl = notification.getVideo() != null && notification.getVideo().getChannel().getAvatar() != null ? notification.getVideo().getChannel().getAvatar().getPath() : null;
|
||||
Helper.loadGiF(context, profileUrl, holder.peertube_notif_pp);
|
||||
|
||||
|
||||
String message = "";
|
||||
boolean myVideo = false;
|
||||
holder.peertube_notif_pp.setVisibility(View.INVISIBLE);
|
||||
if (notification.getVideo() != null) {
|
||||
|
||||
if (notification.getType() == DisplayNotificationsFragment.MY_VIDEO_PUBLISHED) {
|
||||
message = context.getString(R.string.peertube_video_published, notification.getVideo().getName());
|
||||
myVideo = true;
|
||||
} else if (notification.getType() == DisplayNotificationsFragment.MY_VIDEO_IMPORT_ERROR) {
|
||||
message = context.getString(R.string.peertube_video_import_error, notification.getVideo().getName());
|
||||
myVideo = true;
|
||||
} else if (notification.getType() == DisplayNotificationsFragment.MY_VIDEO_IMPORT_SUCCESS) {
|
||||
message = context.getString(R.string.peertube_video_import_success, notification.getVideo().getName());
|
||||
myVideo = true;
|
||||
} else if (notification.getType() == DisplayNotificationsFragment.NEW_VIDEO_FROM_SUBSCRIPTION) {
|
||||
channelAction = notification.getVideo().getChannel();
|
||||
message = context.getString(R.string.peertube_video_from_subscription, channelAction.getDisplayName(), notification.getVideo().getName());
|
||||
holder.peertube_notif_pp.setVisibility(View.VISIBLE);
|
||||
} else if (notification.getType() == DisplayNotificationsFragment.BLACKLIST_ON_MY_VIDEO) {
|
||||
message = context.getString(R.string.peertube_video_blacklist, notification.getVideo().getName());
|
||||
|
||||
} else if (notification.getType() == DisplayNotificationsFragment.UNBLACKLIST_ON_MY_VIDEO) {
|
||||
message = context.getString(R.string.peertube_video_unblacklist, notification.getVideo().getName());
|
||||
}
|
||||
@ -139,10 +143,13 @@ public class PeertubeNotificationsListAdapter extends RecyclerView.Adapter<Recyc
|
||||
holder.peertube_notif_message.setText(Html.fromHtml(message, Html.FROM_HTML_MODE_LEGACY));
|
||||
else
|
||||
holder.peertube_notif_message.setText(Html.fromHtml(message));
|
||||
boolean finalMyVideo = myVideo;
|
||||
holder.peertube_notif_message.setOnClickListener(v -> {
|
||||
Intent intent = new Intent(context, PeertubeActivity.class);
|
||||
Bundle b = new Bundle();
|
||||
b.putParcelable("video", notification.getVideo());
|
||||
b.putString("peertube_instance", Helper.getLiveInstance(context));
|
||||
b.putBoolean("isMyVideo", finalMyVideo);
|
||||
b.putString("video_id", notification.getVideo().getId());
|
||||
b.putString("video_uuid", notification.getVideo().getUuid());
|
||||
intent.putExtras(b);
|
||||
@ -154,10 +161,17 @@ public class PeertubeNotificationsListAdapter extends RecyclerView.Adapter<Recyc
|
||||
holder.peertube_notif_message.setText(Html.fromHtml(message, Html.FROM_HTML_MODE_LEGACY));
|
||||
else
|
||||
holder.peertube_notif_message.setText(Html.fromHtml(message));
|
||||
} else if (notification.getAbuse() != null) {
|
||||
if (notification.getType() == DisplayNotificationsFragment.MY_VIDEO_REPPORT_SUCCESS) {
|
||||
message = context.getString(R.string.peertube_video_report_success, notification.getAbuse().getId());
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
holder.peertube_notif_message.setText(Html.fromHtml(message, Html.FROM_HTML_MODE_LEGACY));
|
||||
else
|
||||
holder.peertube_notif_message.setText(Html.fromHtml(message));
|
||||
}
|
||||
}
|
||||
holder.peertube_notif_date.setText(Helper.dateDiff(context, notification.getCreatedAt()));
|
||||
|
||||
AccountData.Account finalAccountAction = accountAction;
|
||||
ChannelData.Channel finalChannelAction = channelAction;
|
||||
holder.peertube_notif_pp.setOnClickListener(v -> {
|
||||
@ -165,7 +179,8 @@ public class PeertubeNotificationsListAdapter extends RecyclerView.Adapter<Recyc
|
||||
Intent intent = null;
|
||||
if (finalAccountAction != null) {
|
||||
intent = new Intent(context, ShowAccountActivity.class);
|
||||
b.putString("channel", finalAccountAction.getAcct());
|
||||
b.putParcelable("account", finalAccountAction);
|
||||
b.putString("accountAcct", finalAccountAction.getUsername() + "@" + finalAccountAction.getHost());
|
||||
} else if (finalChannelAction != null) {
|
||||
intent = new Intent(context, ShowChannelActivity.class);
|
||||
b.putParcelable("channel", finalChannelAction);
|
||||
|
@ -46,10 +46,10 @@ import app.fedilab.fedilabtube.viewmodel.PlaylistsVM;
|
||||
|
||||
public class PlaylistAdapter extends BaseAdapter {
|
||||
|
||||
private List<Playlist> playlists;
|
||||
private LayoutInflater layoutInflater;
|
||||
private Context context;
|
||||
private RelativeLayout textviewNoAction;
|
||||
private final List<Playlist> playlists;
|
||||
private final LayoutInflater layoutInflater;
|
||||
private final Context context;
|
||||
private final RelativeLayout textviewNoAction;
|
||||
|
||||
public PlaylistAdapter(Context context, List<Playlist> lists, RelativeLayout textviewNoAction) {
|
||||
this.playlists = lists;
|
||||
@ -123,30 +123,28 @@ public class PlaylistAdapter extends BaseAdapter {
|
||||
popup.getMenuInflater()
|
||||
.inflate(R.menu.playlist_menu, popup.getMenu());
|
||||
popup.setOnMenuItemClickListener(item -> {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_delete:
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
builder.setTitle(context.getString(R.string.action_lists_delete) + ": " + playlist.getDisplayName());
|
||||
builder.setMessage(context.getString(R.string.action_lists_confirm_delete));
|
||||
builder.setIcon(android.R.drawable.ic_dialog_alert)
|
||||
.setPositiveButton(R.string.yes, (dialog, which) -> {
|
||||
playlists.remove(playlist);
|
||||
notifyDataSetChanged();
|
||||
PlaylistsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PlaylistsVM.class);
|
||||
viewModel.manage(PlaylistsVM.action.DELETE_PLAYLIST, playlist, null).observe((LifecycleOwner) context, apiResponse -> manageVIewPlaylists(PlaylistsVM.action.DELETE_PLAYLIST, apiResponse));
|
||||
int itemId = item.getItemId();
|
||||
if (itemId == R.id.action_delete) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
builder.setTitle(context.getString(R.string.action_lists_delete) + ": " + playlist.getDisplayName());
|
||||
builder.setMessage(context.getString(R.string.action_lists_confirm_delete));
|
||||
builder.setIcon(android.R.drawable.ic_dialog_alert)
|
||||
.setPositiveButton(R.string.yes, (dialog, which) -> {
|
||||
playlists.remove(playlist);
|
||||
notifyDataSetChanged();
|
||||
PlaylistsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PlaylistsVM.class);
|
||||
viewModel.manage(PlaylistsVM.action.DELETE_PLAYLIST, playlist, null).observe((LifecycleOwner) context, apiResponse -> manageVIewPlaylists(PlaylistsVM.action.DELETE_PLAYLIST, apiResponse));
|
||||
|
||||
if (playlists.size() == 0 && textviewNoAction != null && textviewNoAction.getVisibility() == View.GONE)
|
||||
textviewNoAction.setVisibility(View.VISIBLE);
|
||||
dialog.dismiss();
|
||||
})
|
||||
.setNegativeButton(R.string.no, (dialog, which) -> dialog.dismiss())
|
||||
.show();
|
||||
break;
|
||||
case R.id.action_edit:
|
||||
if (context instanceof AllPlaylistsActivity) {
|
||||
((AllPlaylistsActivity) context).manageAlert(playlist);
|
||||
}
|
||||
break;
|
||||
if (playlists.size() == 0 && textviewNoAction != null && textviewNoAction.getVisibility() == View.GONE)
|
||||
textviewNoAction.setVisibility(View.VISIBLE);
|
||||
dialog.dismiss();
|
||||
})
|
||||
.setNegativeButton(R.string.no, (dialog, which) -> dialog.dismiss())
|
||||
.show();
|
||||
} else if (itemId == R.id.action_edit) {
|
||||
if (context instanceof AllPlaylistsActivity) {
|
||||
((AllPlaylistsActivity) context).manageAlert(playlist);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
@ -67,6 +67,7 @@ public class DisplayChannelsFragment extends Fragment implements ChannelListAdap
|
||||
private RecyclerView lv_channels;
|
||||
private View rootView;
|
||||
private FloatingActionButton action_button;
|
||||
private boolean myChannels;
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
@ -76,8 +77,10 @@ public class DisplayChannelsFragment extends Fragment implements ChannelListAdap
|
||||
context = getContext();
|
||||
Bundle bundle = this.getArguments();
|
||||
channels = new ArrayList<>();
|
||||
myChannels = true;
|
||||
if (bundle != null) {
|
||||
name = bundle.getString("name", null);
|
||||
myChannels = bundle.getBoolean("myChannels", true);
|
||||
}
|
||||
|
||||
swiped = false;
|
||||
@ -86,8 +89,10 @@ public class DisplayChannelsFragment extends Fragment implements ChannelListAdap
|
||||
|
||||
if (getActivity() != null) {
|
||||
action_button = getActivity().findViewById(R.id.action_button);
|
||||
action_button.setVisibility(View.VISIBLE);
|
||||
action_button.setOnClickListener(view -> manageAlert(null));
|
||||
if (action_button != null) {
|
||||
action_button.setVisibility(View.VISIBLE);
|
||||
action_button.setOnClickListener(view -> manageAlert(null));
|
||||
}
|
||||
}
|
||||
|
||||
lv_channels = rootView.findViewById(R.id.lv_elements);
|
||||
@ -97,7 +102,7 @@ public class DisplayChannelsFragment extends Fragment implements ChannelListAdap
|
||||
textviewNoAction = rootView.findViewById(R.id.no_action);
|
||||
mainLoader.setVisibility(View.VISIBLE);
|
||||
nextElementLoader.setVisibility(View.GONE);
|
||||
channelListAdapter = new ChannelListAdapter(this.channels);
|
||||
channelListAdapter = new ChannelListAdapter(this.channels, myChannels);
|
||||
channelListAdapter.allChannelRemoved = this;
|
||||
channelListAdapter.editAlertDialog = this;
|
||||
lv_channels.setAdapter(channelListAdapter);
|
||||
@ -170,7 +175,7 @@ public class DisplayChannelsFragment extends Fragment implements ChannelListAdap
|
||||
textviewNoAction.setVisibility(View.GONE);
|
||||
|
||||
if (swiped) {
|
||||
channelListAdapter = new ChannelListAdapter(this.channels);
|
||||
channelListAdapter = new ChannelListAdapter(this.channels, myChannels);
|
||||
channelListAdapter.allChannelRemoved = DisplayChannelsFragment.this;
|
||||
channelListAdapter.editAlertDialog = DisplayChannelsFragment.this;
|
||||
lv_channels.setAdapter(channelListAdapter);
|
||||
@ -267,12 +272,16 @@ public class DisplayChannelsFragment extends Fragment implements ChannelListAdap
|
||||
}
|
||||
channelListAdapter.notifyItemChanged(position);
|
||||
}
|
||||
action_button.setEnabled(true);
|
||||
if (action_button != null) {
|
||||
action_button.setEnabled(true);
|
||||
}
|
||||
};
|
||||
mainHandler.post(myRunnable);
|
||||
}).start();
|
||||
alertDialog.dismiss();
|
||||
action_button.setEnabled(false);
|
||||
if (action_button != null) {
|
||||
action_button.setEnabled(false);
|
||||
}
|
||||
} else {
|
||||
Toasty.error(context, context.getString(R.string.error_display_name_channel), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
@ -38,7 +38,6 @@ import app.fedilab.fedilabtube.R;
|
||||
import app.fedilab.fedilabtube.client.APIResponse;
|
||||
import app.fedilab.fedilabtube.client.data.NotificationData.Notification;
|
||||
import app.fedilab.fedilabtube.drawer.PeertubeNotificationsListAdapter;
|
||||
import app.fedilab.fedilabtube.helper.Helper;
|
||||
import app.fedilab.fedilabtube.viewmodel.NotificationsVM;
|
||||
import es.dmoral.toasty.Toasty;
|
||||
|
||||
@ -47,11 +46,12 @@ public class DisplayNotificationsFragment extends Fragment {
|
||||
|
||||
//Peertube notification type
|
||||
public static int NEW_VIDEO_FROM_SUBSCRIPTION = 1;
|
||||
public static int BLACKLIST_ON_MY_VIDEO = 4;
|
||||
public static int UNBLACKLIST_ON_MY_VIDEO = 5;
|
||||
public static int BLACKLIST_ON_MY_VIDEO = 4;
|
||||
public static int MY_VIDEO_PUBLISHED = 6;
|
||||
public static int MY_VIDEO_IMPORT_SUCCESS = 7;
|
||||
public static int MY_VIDEO_IMPORT_ERROR = 8;
|
||||
public static int MY_VIDEO_REPPORT_SUCCESS = 15;
|
||||
private boolean flag_loading;
|
||||
private Context context;
|
||||
private PeertubeNotificationsListAdapter peertubeNotificationsListAdapter;
|
||||
|
@ -370,11 +370,45 @@ public class DisplayOverviewFragment extends Fragment implements PeertubeAdapter
|
||||
viewModelFeeds.getOverviewVideos(String.valueOf(page)).observe(DisplayOverviewFragment.this.requireActivity(), this::manageVIewVideos);
|
||||
}
|
||||
|
||||
public void manageVIewPlaylist(APIResponse apiResponse) {
|
||||
if (apiResponse.getError() != null || apiResponse.getVideoExistPlaylist() == null) {
|
||||
return;
|
||||
}
|
||||
if (playlists == null) {
|
||||
playlists = new HashMap<>();
|
||||
}
|
||||
playlists.putAll(apiResponse.getVideoExistPlaylist());
|
||||
for (VideoData.Video video : peertubes) {
|
||||
video.setPlaylistExists(playlists.get(video.getId()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void manageVIewRelationship(APIResponse apiResponse) {
|
||||
if (apiResponse.getError() != null) {
|
||||
return;
|
||||
}
|
||||
if (relationship == null) {
|
||||
relationship = new HashMap<>();
|
||||
}
|
||||
relationship.putAll(apiResponse.getRelationships());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Boolean> getRelationShip() {
|
||||
return relationship;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, List<PlaylistExist>> getPlaylist() {
|
||||
return playlists;
|
||||
}
|
||||
|
||||
static class GridSpacingItemDecoration extends RecyclerView.ItemDecoration {
|
||||
|
||||
private int spanCount;
|
||||
private int spacing;
|
||||
private boolean includeEdge;
|
||||
private final int spanCount;
|
||||
private final int spacing;
|
||||
private final boolean includeEdge;
|
||||
|
||||
public GridSpacingItemDecoration(int spanCount, int spacing, boolean includeEdge) {
|
||||
this.spanCount = spanCount;
|
||||
@ -405,40 +439,4 @@ public class DisplayOverviewFragment extends Fragment implements PeertubeAdapter
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void manageVIewPlaylist(APIResponse apiResponse) {
|
||||
if (apiResponse.getError() != null || apiResponse.getVideoExistPlaylist() == null) {
|
||||
return;
|
||||
}
|
||||
if (playlists == null) {
|
||||
playlists = new HashMap<>();
|
||||
}
|
||||
playlists.putAll(apiResponse.getVideoExistPlaylist());
|
||||
for (VideoData.Video video : peertubes) {
|
||||
video.setPlaylistExists(playlists.get(video.getId()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void manageVIewRelationship(APIResponse apiResponse) {
|
||||
if (apiResponse.getError() != null) {
|
||||
return;
|
||||
}
|
||||
if (relationship == null) {
|
||||
relationship = new HashMap<>();
|
||||
}
|
||||
relationship.putAll(apiResponse.getRelationships());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Boolean> getRelationShip() {
|
||||
return relationship;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, List<PlaylistExist>> getPlaylist() {
|
||||
return playlists;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -69,12 +69,11 @@ public class DisplaySepiaSearchFragment extends Fragment implements AccountsHori
|
||||
private View rootView;
|
||||
private RecyclerView lv_status;
|
||||
private SepiaSearchVM viewModelSearch;
|
||||
private SepiaSearch sepiaSearchVideo;
|
||||
|
||||
public DisplaySepiaSearchFragment() {
|
||||
}
|
||||
|
||||
private SepiaSearch sepiaSearchVideo;
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
rootView = inflater.inflate(R.layout.fragment_video, container, false);
|
||||
@ -119,7 +118,6 @@ public class DisplaySepiaSearchFragment extends Fragment implements AccountsHori
|
||||
swipeRefreshLayout.setOnRefreshListener(this::pullToRefresh);
|
||||
|
||||
|
||||
|
||||
lv_status.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
||||
if (mLayoutManager != null) {
|
||||
@ -160,7 +158,6 @@ public class DisplaySepiaSearchFragment extends Fragment implements AccountsHori
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
@ -215,13 +212,13 @@ public class DisplaySepiaSearchFragment extends Fragment implements AccountsHori
|
||||
}
|
||||
int previousPosition = this.peertubes.size();
|
||||
int videoPerPage = sharedpreferences.getInt(Helper.SET_VIDEOS_PER_PAGE, Helper.VIDEOS_PER_PAGE);
|
||||
sepiaSearchVideo.setStart(String.valueOf(Integer.parseInt(sepiaSearchVideo.getStart())+ videoPerPage));
|
||||
sepiaSearchVideo.setStart(String.valueOf(Integer.parseInt(sepiaSearchVideo.getStart()) + videoPerPage));
|
||||
|
||||
if(!BuildConfig.google_restriction) {
|
||||
if (!BuildConfig.google_restriction) {
|
||||
this.peertubes.addAll(videoData.data);
|
||||
}else{
|
||||
for(VideoData.Video video: videoData.data) {
|
||||
if ( video.getName() == null || !video.getName().toLowerCase().contains("youtube") || !video.getName().toLowerCase().contains("download")) {
|
||||
} else {
|
||||
for (VideoData.Video video : videoData.data) {
|
||||
if (video.getName() == null || !video.getName().toLowerCase().contains("youtube") || !video.getName().toLowerCase().contains("download")) {
|
||||
this.peertubes.add(video);
|
||||
}
|
||||
}
|
||||
@ -237,7 +234,7 @@ public class DisplaySepiaSearchFragment extends Fragment implements AccountsHori
|
||||
//remove handlers
|
||||
swipeRefreshLayout.setRefreshing(false);
|
||||
textviewNoAction.setVisibility(View.GONE);
|
||||
if (firstLoad && (videoData.data== null || videoData.data.size() == 0)) {
|
||||
if (firstLoad && (videoData.data == null || videoData.data.size() == 0)) {
|
||||
textviewNoActionText.setText(R.string.no_video_to_display);
|
||||
textviewNoAction.setVisibility(View.VISIBLE);
|
||||
}
|
||||
@ -291,12 +288,11 @@ public class DisplaySepiaSearchFragment extends Fragment implements AccountsHori
|
||||
}
|
||||
|
||||
|
||||
|
||||
static class GridSpacingItemDecoration extends RecyclerView.ItemDecoration {
|
||||
|
||||
private int spanCount;
|
||||
private int spacing;
|
||||
private boolean includeEdge;
|
||||
private final int spanCount;
|
||||
private final int spacing;
|
||||
private final boolean includeEdge;
|
||||
|
||||
public GridSpacingItemDecoration(int spanCount, int spacing, boolean includeEdge) {
|
||||
this.spanCount = spanCount;
|
||||
|
@ -99,6 +99,7 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta
|
||||
private String playlistId;
|
||||
private String remoteInstance;
|
||||
private boolean sepiaSearch;
|
||||
|
||||
public DisplayVideosFragment() {
|
||||
}
|
||||
|
||||
@ -121,7 +122,7 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta
|
||||
playlistId = bundle.getString("playlistId", null);
|
||||
}
|
||||
max_id = "0";
|
||||
forAccount = null;
|
||||
forAccount = type == TimelineVM.TimelineType.ACCOUNT_VIDEOS ? channelId : null;
|
||||
lv_status = rootView.findViewById(R.id.lv_status);
|
||||
RecyclerView lv_accounts = rootView.findViewById(R.id.lv_accounts);
|
||||
Button display_all = rootView.findViewById(R.id.display_all);
|
||||
@ -245,7 +246,6 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
@ -335,11 +335,11 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta
|
||||
apiResponse.getPeertubes().add(v.getVideo());
|
||||
}
|
||||
}
|
||||
if(!BuildConfig.google_restriction) {
|
||||
if (!BuildConfig.google_restriction) {
|
||||
this.peertubes.addAll(apiResponse.getPeertubes());
|
||||
}else{
|
||||
for(VideoData.Video video: apiResponse.getPeertubes()) {
|
||||
if ( video.getName() == null || !video.getName().toLowerCase().contains("youtube") || !video.getName().toLowerCase().contains("download")) {
|
||||
} else {
|
||||
for (VideoData.Video video : apiResponse.getPeertubes()) {
|
||||
if (video.getName() == null || !video.getName().toLowerCase().contains("youtube") || !video.getName().toLowerCase().contains("download")) {
|
||||
this.peertubes.add(video);
|
||||
}
|
||||
}
|
||||
@ -367,7 +367,7 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta
|
||||
if (Helper.isLoggedIn(context)) {
|
||||
List<String> uids = new ArrayList<>();
|
||||
for (VideoData.Video video : apiResponse.getPeertubes()) {
|
||||
if( video != null) {
|
||||
if (video != null) {
|
||||
uids.add(video.getChannel().getName() + "@" + video.getChannel().getHost());
|
||||
}
|
||||
}
|
||||
@ -381,7 +381,7 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta
|
||||
|
||||
List<String> videoIds = new ArrayList<>();
|
||||
for (VideoData.Video video : apiResponse.getPeertubes()) {
|
||||
if( video != null) {
|
||||
if (video != null) {
|
||||
videoIds.add(video.getId());
|
||||
}
|
||||
}
|
||||
@ -405,7 +405,7 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta
|
||||
}
|
||||
playlists.putAll(apiResponse.getVideoExistPlaylist());
|
||||
for (VideoData.Video video : peertubes) {
|
||||
if( video != null) {
|
||||
if (video != null) {
|
||||
video.setPlaylistExists(playlists.get(video.getId()));
|
||||
}
|
||||
}
|
||||
@ -451,10 +451,10 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta
|
||||
|
||||
|
||||
public void pullToRefresh(boolean reload) {
|
||||
if( type == TimelineVM.TimelineType.SUBSCRIBTIONS && reload) {
|
||||
Fragment fragment = ((AppCompatActivity)context).getSupportFragmentManager().findFragmentByTag("2");
|
||||
if(fragment != null) {
|
||||
if( context instanceof MainActivity) {
|
||||
if (type == TimelineVM.TimelineType.SUBSCRIBTIONS && reload) {
|
||||
Fragment fragment = ((AppCompatActivity) context).getSupportFragmentManager().findFragmentByTag("2");
|
||||
if (fragment != null) {
|
||||
if (context instanceof MainActivity) {
|
||||
FragmentManager fm = ((MainActivity) context).getSupportFragmentManager();
|
||||
fm.beginTransaction().remove(fragment).commit();
|
||||
DisplayVideosFragment subscriptionFragment = new DisplayVideosFragment();
|
||||
@ -467,7 +467,7 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta
|
||||
}
|
||||
}
|
||||
|
||||
}else {
|
||||
} else {
|
||||
int size = peertubes.size();
|
||||
peertubes.clear();
|
||||
peertubes = new ArrayList<>();
|
||||
@ -497,8 +497,8 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta
|
||||
*/
|
||||
private void loadTimeline(String max_id) {
|
||||
if (search_peertube == null) { //Not a Peertube search
|
||||
if (type == TimelineVM.TimelineType.USER_VIDEOS) {
|
||||
viewModelFeeds.getVideosInChannel(sepiaSearch?remoteInstance:null, channelId, max_id).observe(this.requireActivity(), this::manageVIewVideos);
|
||||
if (type == TimelineVM.TimelineType.CHANNEL_VIDEOS) {
|
||||
viewModelFeeds.getVideosInChannel(sepiaSearch ? remoteInstance : null, channelId, max_id).observe(this.requireActivity(), this::manageVIewVideos);
|
||||
} else if (type == TimelineVM.TimelineType.VIDEOS_IN_PLAYLIST) {
|
||||
viewModelFeeds.loadVideosInPlaylist(playlistId, max_id).observe(this.requireActivity(), this::manageVIewVideos);
|
||||
} else {
|
||||
@ -523,9 +523,9 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta
|
||||
|
||||
static class GridSpacingItemDecoration extends RecyclerView.ItemDecoration {
|
||||
|
||||
private int spanCount;
|
||||
private int spacing;
|
||||
private boolean includeEdge;
|
||||
private final int spanCount;
|
||||
private final int spacing;
|
||||
private final boolean includeEdge;
|
||||
|
||||
public GridSpacingItemDecoration(int spanCount, int spacing, boolean includeEdge) {
|
||||
this.spanCount = spanCount;
|
||||
|
@ -22,6 +22,7 @@ import java.util.Set;
|
||||
|
||||
import app.fedilab.fedilabtube.R;
|
||||
import app.fedilab.fedilabtube.helper.Helper;
|
||||
import app.fedilab.fedilabtube.helper.ThemeHelper;
|
||||
import es.dmoral.toasty.Toasty;
|
||||
|
||||
import static app.fedilab.fedilabtube.MainActivity.peertubeInformation;
|
||||
@ -89,6 +90,25 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Shared
|
||||
|
||||
}
|
||||
}
|
||||
if (key.compareTo(getString(R.string.set_theme_choice)) == 0) {
|
||||
ListPreference set_theme_choice = findPreference(getString(R.string.set_theme_choice));
|
||||
if (set_theme_choice != null) {
|
||||
int choice;
|
||||
switch (set_theme_choice.getValue()) {
|
||||
case "0":
|
||||
choice = Helper.LIGHT_MODE;
|
||||
break;
|
||||
case "1":
|
||||
choice = Helper.DARK_MODE;
|
||||
break;
|
||||
default:
|
||||
choice = Helper.DEFAULT_MODE;
|
||||
}
|
||||
editor.putInt(Helper.SET_THEME, choice);
|
||||
editor.apply();
|
||||
ThemeHelper.switchTo(choice);
|
||||
}
|
||||
}
|
||||
if (key.compareTo(getString(R.string.set_video_quality_choice)) == 0) {
|
||||
ListPreference set_video_quality_choice = findPreference(getString(R.string.set_video_quality_choice));
|
||||
if (set_video_quality_choice != null) {
|
||||
@ -137,12 +157,27 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Shared
|
||||
return;
|
||||
}
|
||||
|
||||
//****** App theme *******
|
||||
ListPreference set_theme_choice = findPreference(getString(R.string.set_theme_choice));
|
||||
List<String> arrayTheme = Arrays.asList(getResources().getStringArray(R.array.settings_theme));
|
||||
CharSequence[] entriesTheme = arrayTheme.toArray(new CharSequence[0]);
|
||||
CharSequence[] entryValuesTheme = new CharSequence[3];
|
||||
final SharedPreferences sharedpref = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
int currentTheme = sharedpref.getInt(Helper.SET_THEME, Helper.DEFAULT_MODE);
|
||||
entryValuesTheme[0] = String.valueOf(Helper.LIGHT_MODE);
|
||||
entryValuesTheme[1] = String.valueOf(Helper.DARK_MODE);
|
||||
entryValuesTheme[2] = String.valueOf(Helper.DEFAULT_MODE);
|
||||
if (set_theme_choice != null) {
|
||||
set_theme_choice.setEntries(entriesTheme);
|
||||
set_theme_choice.setEntryValues(entryValuesTheme);
|
||||
set_theme_choice.setValueIndex(currentTheme);
|
||||
}
|
||||
|
||||
//****** Video mode *******
|
||||
ListPreference set_video_mode_choice = findPreference(getString(R.string.set_video_mode_choice));
|
||||
List<String> array = Arrays.asList(getResources().getStringArray(R.array.settings_video_mode));
|
||||
CharSequence[] entries = array.toArray(new CharSequence[0]);
|
||||
CharSequence[] entryValues = new CharSequence[3];
|
||||
final SharedPreferences sharedpref = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
int video_mode = sharedpref.getInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_NORMAL);
|
||||
entryValues[0] = String.valueOf(Helper.VIDEO_MODE_NORMAL);
|
||||
entryValues[1] = String.valueOf(Helper.VIDEO_MODE_STREAMING);
|
||||
|
@ -0,0 +1,81 @@
|
||||
package app.fedilab.fedilabtube.helper;
|
||||
/* Copyright 2020 Thomas Schneider
|
||||
*
|
||||
* This file is a part of TubeLab
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under the terms of the
|
||||
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* TubeLab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
* Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with TubeLab; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class EmojiHelper {
|
||||
|
||||
|
||||
//Emoji manager
|
||||
private static final Map<String, String> emoji = new HashMap<>();
|
||||
private static final Pattern SHORTNAME_PATTERN = Pattern.compile(":( |)([-+\\w]+):");
|
||||
|
||||
/**
|
||||
* Converts emojis in input to unicode
|
||||
*
|
||||
* @param input String
|
||||
* @return String
|
||||
*/
|
||||
public static String shortnameToUnicode(String input) {
|
||||
Matcher matcher = SHORTNAME_PATTERN.matcher(input);
|
||||
|
||||
while (matcher.find()) {
|
||||
String unicode = emoji.get(matcher.group(2));
|
||||
if (unicode == null) {
|
||||
continue;
|
||||
}
|
||||
if (matcher.group(1).equals(" "))
|
||||
input = input.replace(": " + matcher.group(2) + ":", unicode);
|
||||
else
|
||||
input = input.replace(":" + matcher.group(2) + ":", unicode);
|
||||
}
|
||||
return input;
|
||||
}
|
||||
|
||||
|
||||
public static void fillMapEmoji(Context context) {
|
||||
try {
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(context.getAssets().open("emoji.csv")));
|
||||
String line;
|
||||
while ((line = br.readLine()) != null) {
|
||||
String[] str = line.split(",");
|
||||
String unicode = null;
|
||||
if (str.length == 2)
|
||||
unicode = new String(new int[]{Integer.parseInt(str[1].replace("0x", "").trim(), 16)}, 0, 1);
|
||||
else if (str.length == 3)
|
||||
unicode = new String(new int[]{Integer.parseInt(str[1].replace("0x", "").trim(), 16), Integer.parseInt(str[2].replace("0x", "").trim(), 16)}, 0, 2);
|
||||
else if (str.length == 4)
|
||||
unicode = new String(new int[]{Integer.parseInt(str[1].replace("0x", "").trim(), 16), Integer.parseInt(str[2].replace("0x", "").trim(), 16), Integer.parseInt(str[3].replace("0x", "").trim(), 16)}, 0, 3);
|
||||
else if (str.length == 5)
|
||||
unicode = new String(new int[]{Integer.parseInt(str[1].replace("0x", "").trim(), 16), Integer.parseInt(str[2].replace("0x", "").trim(), 16), Integer.parseInt(str[3].replace("0x", "").trim(), 16), Integer.parseInt(str[4].replace("0x", "").trim(), 16)}, 0, 4);
|
||||
if (unicode != null)
|
||||
emoji.put(str[0], unicode);
|
||||
}
|
||||
br.close();
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -23,6 +23,8 @@ import android.widget.Button;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.MediaController;
|
||||
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
|
||||
import app.fedilab.fedilabtube.PeertubeActivity;
|
||||
import app.fedilab.fedilabtube.R;
|
||||
import app.fedilab.fedilabtube.client.data.VideoData.Video;
|
||||
@ -34,9 +36,9 @@ import app.fedilab.fedilabtube.client.data.VideoData.Video;
|
||||
*/
|
||||
public class FullScreenMediaController extends MediaController {
|
||||
|
||||
private final Context context;
|
||||
private ImageButton fullScreen;
|
||||
private Button resolution;
|
||||
private Context context;
|
||||
private Video peertube;
|
||||
private String resolutionVal;
|
||||
|
||||
@ -85,12 +87,11 @@ public class FullScreenMediaController extends MediaController {
|
||||
|
||||
if (((PeertubeActivity) getContext()).getFullscreen() == fullscreen.ON) {
|
||||
Resources resources = getResources();
|
||||
fullScreen.setImageDrawable(resources.getDrawable(R.drawable.ic_baseline_fullscreen_exit_24));
|
||||
fullScreen.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.ic_baseline_fullscreen_exit_24, null));
|
||||
} else {
|
||||
Resources resources = getResources();
|
||||
fullScreen.setImageDrawable(resources.getDrawable(R.drawable.ic_baseline_fullscreen_24));
|
||||
fullScreen.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.ic_baseline_fullscreen_24, null));
|
||||
}
|
||||
|
||||
//add listener to image button to handle full screen and exit full screen events
|
||||
fullScreen.setOnClickListener(v -> {
|
||||
|
||||
@ -115,10 +116,10 @@ public class FullScreenMediaController extends MediaController {
|
||||
//fullscreen indicator from intent
|
||||
if (((PeertubeActivity) getContext()).getFullscreen() == fullscreen.ON) {
|
||||
Resources resources = getResources();
|
||||
fullScreen.setImageDrawable(resources.getDrawable(R.drawable.ic_baseline_fullscreen_exit_24));
|
||||
fullScreen.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.ic_baseline_fullscreen_exit_24, null));
|
||||
} else {
|
||||
Resources resources = getResources();
|
||||
fullScreen.setImageDrawable(resources.getDrawable(R.drawable.ic_baseline_fullscreen_24));
|
||||
fullScreen.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.ic_baseline_fullscreen_24, null));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -58,6 +58,8 @@ import app.fedilab.fedilabtube.MainActivity;
|
||||
import app.fedilab.fedilabtube.R;
|
||||
import app.fedilab.fedilabtube.WebviewActivity;
|
||||
import app.fedilab.fedilabtube.client.data.AccountData.Account;
|
||||
import app.fedilab.fedilabtube.client.data.ChannelData;
|
||||
import app.fedilab.fedilabtube.client.data.VideoData;
|
||||
import app.fedilab.fedilabtube.client.entities.File;
|
||||
import app.fedilab.fedilabtube.sqlite.AccountDAO;
|
||||
import app.fedilab.fedilabtube.sqlite.Sqlite;
|
||||
@ -72,6 +74,10 @@ public class Helper {
|
||||
public static final int RELOAD_MYVIDEOS = 10;
|
||||
public static final String SET_VIDEO_MODE = "set_video_mode";
|
||||
public static final String SET_QUALITY_MODE = "set_quality_mode";
|
||||
public static final String SET_THEME = "set_theme";
|
||||
public static final int LIGHT_MODE = 0;
|
||||
public static final int DARK_MODE = 1;
|
||||
public static final int DEFAULT_MODE = 2;
|
||||
public static final String TIMELINE_TYPE = "timeline_type";
|
||||
public static final int VIDEO_MODE_NORMAL = 0;
|
||||
public static final int VIDEO_MODE_STREAMING = 2;
|
||||
@ -234,7 +240,7 @@ public class Helper {
|
||||
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
String acad;
|
||||
if (BuildConfig.full_instances) {
|
||||
return sharedpreferences.getString(Helper.PREF_INSTANCE, "peertube.social");
|
||||
return sharedpreferences.getString(Helper.PREF_INSTANCE, getDefaultInstance());
|
||||
} else {
|
||||
acad = sharedpreferences.getString(Helper.PREF_INSTANCE, "tube.ac-lyon.fr");
|
||||
if (acad == null) {
|
||||
@ -248,6 +254,49 @@ public class Helper {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a default instance host name depending of the device locale
|
||||
*
|
||||
* @return peertube host String
|
||||
*/
|
||||
private static String getDefaultInstance() {
|
||||
String lang = Locale.getDefault().getLanguage();
|
||||
if (lang.contains("-")) {
|
||||
if (!lang.split("-")[0].trim().toLowerCase().startsWith("zh")) {
|
||||
lang = lang.split("-")[0];
|
||||
if (lang.split("-")[1].toLowerCase().contains("be")) {
|
||||
lang = "be";
|
||||
} else if (lang.split("-")[1].toLowerCase().contains("gb")) {
|
||||
lang = "gb";
|
||||
}
|
||||
} else {
|
||||
lang = lang.split("-")[0] + "-" + lang.split("-")[1].toUpperCase();
|
||||
}
|
||||
}
|
||||
switch (lang) {
|
||||
case "it":
|
||||
return "peertube.uno";
|
||||
case "be":
|
||||
return "peertube.be";
|
||||
case "fr":
|
||||
return "video.liberta.vip";
|
||||
case "de":
|
||||
return "peertube.at";
|
||||
case "ru":
|
||||
return "peertube.su";
|
||||
case "gb":
|
||||
return "peertube.co.uk";
|
||||
case "da":
|
||||
case "sv":
|
||||
case "nb":
|
||||
case "fi":
|
||||
case "is":
|
||||
return "peertube.dk";
|
||||
default:
|
||||
return "peertube.social";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a date in String -> format yyyy-MM-dd HH:mm:ss
|
||||
*
|
||||
@ -287,6 +336,12 @@ public class Helper {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Convert second to String formated date
|
||||
*
|
||||
* @param pTime timestamp
|
||||
* @return String formatted value
|
||||
*/
|
||||
public static String secondsToString(int pTime) {
|
||||
|
||||
int hour = pTime / 3600;
|
||||
@ -347,6 +402,12 @@ public class Helper {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return rounded numbers depending of the value
|
||||
*
|
||||
* @param count long
|
||||
* @return String rounded value to be displayed
|
||||
*/
|
||||
public static String withSuffix(long count) {
|
||||
if (count < 1000) return "" + count;
|
||||
int exp = (int) (Math.log(count) / Math.log(1000));
|
||||
@ -375,12 +436,12 @@ public class Helper {
|
||||
}
|
||||
|
||||
public static void loadGiF(final Context context, String url, final ImageView imageView, int round) {
|
||||
loadGif(context, null, url, imageView, 10);
|
||||
loadGif(context, null, url, imageView, round);
|
||||
}
|
||||
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
private static void loadGif(final Context context, String instance, String url, final ImageView imageView, int round) {
|
||||
if (url == null || url.trim().toLowerCase().compareTo("null") == 0) {
|
||||
if (url == null || url.trim().toLowerCase().compareTo("null") == 0 || url.endsWith("null")) {
|
||||
Glide.with(imageView.getContext())
|
||||
.asDrawable()
|
||||
.load(R.drawable.missing_peertube)
|
||||
@ -389,7 +450,7 @@ public class Helper {
|
||||
return;
|
||||
}
|
||||
if (url.startsWith("/")) {
|
||||
url = instance!=null?instance+ url:Helper.getLiveInstance(context) + url;
|
||||
url = instance != null ? instance + url : Helper.getLiveInstance(context) + url;
|
||||
}
|
||||
if (!url.startsWith("http")) {
|
||||
url = "https://" + url;
|
||||
@ -414,6 +475,14 @@ public class Helper {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Initialize the webview
|
||||
*
|
||||
* @param activity Current Activity
|
||||
* @param webviewId int id of the webview layout
|
||||
* @param rootView View the root view
|
||||
* @return CustomWebview
|
||||
*/
|
||||
@SuppressLint("SetJavaScriptEnabled")
|
||||
public static CustomWebview initializeWebview(Activity activity, int webviewId, View rootView) {
|
||||
|
||||
@ -573,7 +642,7 @@ public class Helper {
|
||||
}
|
||||
|
||||
public static int getColorAccent() {
|
||||
return BuildConfig.full_instances ? R.color.colorAccent_full : R.color.colorAccent;
|
||||
return R.color.colorAccent;
|
||||
}
|
||||
|
||||
|
||||
@ -588,6 +657,21 @@ public class Helper {
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isVideoOwner(Context context, VideoData.Video video) {
|
||||
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
String userName = sharedpreferences.getString(Helper.PREF_KEY_NAME, "");
|
||||
String instance = sharedpreferences.getString(Helper.PREF_INSTANCE, "");
|
||||
Account account = video.getAccount();
|
||||
ChannelData.Channel channel = video.getChannel();
|
||||
if (account != null && instance != null && userName != null) {
|
||||
return account.getUsername().compareTo(userName) == 0 && account.getHost().compareTo(instance) == 0;
|
||||
} else if (channel != null && instance != null && userName != null) {
|
||||
return channel.getName().compareTo(userName) == 0 && channel.getHost().compareTo(instance) == 0;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
* Return a File depending of the requested quality
|
||||
* @param context Context
|
||||
|
@ -12,8 +12,8 @@ import app.fedilab.fedilabtube.R;
|
||||
|
||||
public class RoundedBackgroundSpan extends ReplacementSpan {
|
||||
|
||||
private int backgroundColor;
|
||||
private int textColor;
|
||||
private final int backgroundColor;
|
||||
private final int textColor;
|
||||
|
||||
public RoundedBackgroundSpan(Context context) {
|
||||
super();
|
||||
|
@ -0,0 +1,46 @@
|
||||
package app.fedilab.fedilabtube.helper;
|
||||
/* Copyright 2020 Thomas Schneider
|
||||
*
|
||||
* This file is a part of TubeLab
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under the terms of the
|
||||
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* TubeLab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
* Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with TubeLab; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
import android.os.Build;
|
||||
|
||||
import androidx.appcompat.app.AppCompatDelegate;
|
||||
|
||||
import static app.fedilab.fedilabtube.helper.Helper.DARK_MODE;
|
||||
import static app.fedilab.fedilabtube.helper.Helper.LIGHT_MODE;
|
||||
|
||||
public class ThemeHelper {
|
||||
|
||||
public static void switchTo(int themePref) {
|
||||
switch (themePref) {
|
||||
case LIGHT_MODE: {
|
||||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
|
||||
break;
|
||||
}
|
||||
case DARK_MODE: {
|
||||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
|
||||
} else {
|
||||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -33,6 +33,7 @@ import java.util.Objects;
|
||||
import app.fedilab.fedilabtube.R;
|
||||
import app.fedilab.fedilabtube.client.RetrofitPeertubeAPI;
|
||||
import app.fedilab.fedilabtube.client.entities.PeertubeInformation;
|
||||
import app.fedilab.fedilabtube.helper.EmojiHelper;
|
||||
import app.fedilab.fedilabtube.helper.NetworkStateReceiver;
|
||||
|
||||
import static app.fedilab.fedilabtube.MainActivity.peertubeInformation;
|
||||
@ -55,8 +56,6 @@ public class RetrieveInfoService extends Service implements NetworkStateReceiver
|
||||
|
||||
@Override
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL_ID,
|
||||
getString(R.string.notification_channel_name),
|
||||
@ -88,6 +87,7 @@ public class RetrieveInfoService extends Service implements NetworkStateReceiver
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
EmojiHelper.fillMapEmoji(getApplicationContext());
|
||||
peertubeInformation = new PeertubeInformation();
|
||||
peertubeInformation.setCategories(new LinkedHashMap<>());
|
||||
peertubeInformation.setLanguages(new LinkedHashMap<>());
|
||||
@ -97,11 +97,9 @@ public class RetrieveInfoService extends Service implements NetworkStateReceiver
|
||||
peertubeInformation.setTranslations(new LinkedHashMap<>());
|
||||
peertubeInformation = new RetrofitPeertubeAPI(RetrieveInfoService.this).getPeertubeInformation();
|
||||
stopForeground(true);
|
||||
|
||||
}
|
||||
};
|
||||
thread.start();
|
||||
|
||||
return START_NOT_STICKY;
|
||||
}
|
||||
|
||||
@ -128,6 +126,7 @@ public class RetrieveInfoService extends Service implements NetworkStateReceiver
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
EmojiHelper.fillMapEmoji(getApplicationContext());
|
||||
peertubeInformation = new PeertubeInformation();
|
||||
peertubeInformation.setCategories(new LinkedHashMap<>());
|
||||
peertubeInformation.setLanguages(new LinkedHashMap<>());
|
||||
|
@ -33,8 +33,8 @@ import app.fedilab.fedilabtube.helper.Helper;
|
||||
@SuppressWarnings("UnusedReturnValue")
|
||||
public class AccountDAO {
|
||||
|
||||
private final SQLiteDatabase db;
|
||||
public Context context;
|
||||
private SQLiteDatabase db;
|
||||
|
||||
|
||||
public AccountDAO(Context context, SQLiteDatabase db) {
|
||||
|
@ -41,6 +41,12 @@ public class AccountsVM extends AndroidViewModel {
|
||||
return apiResponseMutableLiveData;
|
||||
}
|
||||
|
||||
public LiveData<APIResponse> getAccount(String acct) {
|
||||
apiResponseMutableLiveData = new MutableLiveData<>();
|
||||
loadAccount(acct);
|
||||
return apiResponseMutableLiveData;
|
||||
}
|
||||
|
||||
private void loadAccounts(RetrofitPeertubeAPI.DataType dataType, String element) {
|
||||
Context _mContext = getApplication().getApplicationContext();
|
||||
new Thread(() -> {
|
||||
@ -62,4 +68,18 @@ public class AccountsVM extends AndroidViewModel {
|
||||
}).start();
|
||||
}
|
||||
|
||||
private void loadAccount(String acct) {
|
||||
Context _mContext = getApplication().getApplicationContext();
|
||||
new Thread(() -> {
|
||||
try {
|
||||
RetrofitPeertubeAPI retrofitPeertubeAPI = new RetrofitPeertubeAPI(_mContext);
|
||||
APIResponse apiResponse = retrofitPeertubeAPI.getAccount(acct);
|
||||
Handler mainHandler = new Handler(Looper.getMainLooper());
|
||||
Runnable myRunnable = () -> apiResponseMutableLiveData.setValue(apiResponse);
|
||||
mainHandler.post(myRunnable);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
}
|
||||
|
@ -46,9 +46,9 @@ public class CaptionsVM extends AndroidViewModel {
|
||||
new Thread(() -> {
|
||||
try {
|
||||
RetrofitPeertubeAPI retrofitPeertubeAPI;
|
||||
if( instance == null) {
|
||||
if (instance == null) {
|
||||
retrofitPeertubeAPI = new RetrofitPeertubeAPI(_mContext);
|
||||
}else{
|
||||
} else {
|
||||
retrofitPeertubeAPI = new RetrofitPeertubeAPI(_mContext, instance, null);
|
||||
}
|
||||
APIResponse apiResponse = retrofitPeertubeAPI.getCaptions(videoId);
|
||||
|
@ -68,7 +68,7 @@ public class ChannelsVM extends AndroidViewModel {
|
||||
finalElement = account.getUsername() + "@" + account.getHost();
|
||||
}
|
||||
RetrofitPeertubeAPI retrofitPeertubeAPI;
|
||||
if( instance == null ) {
|
||||
if (instance == null) {
|
||||
retrofitPeertubeAPI = new RetrofitPeertubeAPI(_mContext);
|
||||
} else {
|
||||
retrofitPeertubeAPI = new RetrofitPeertubeAPI(_mContext, instance, null);
|
||||
|
@ -53,9 +53,9 @@ public class CommentVM extends AndroidViewModel {
|
||||
new Thread(() -> {
|
||||
try {
|
||||
RetrofitPeertubeAPI retrofitPeertubeAPI;
|
||||
if( instance == null) {
|
||||
if (instance == null) {
|
||||
retrofitPeertubeAPI = new RetrofitPeertubeAPI(_mContext);
|
||||
}else{
|
||||
} else {
|
||||
retrofitPeertubeAPI = new RetrofitPeertubeAPI(_mContext, instance, null);
|
||||
}
|
||||
APIResponse apiResponse = retrofitPeertubeAPI.getComments(CommentVM.action.GET_THREAD, videoId, null, max_id);
|
||||
@ -74,7 +74,7 @@ public class CommentVM extends AndroidViewModel {
|
||||
new Thread(() -> {
|
||||
try {
|
||||
RetrofitPeertubeAPI api = new RetrofitPeertubeAPI(_mContext);
|
||||
APIResponse apiResponse = api.getComments(action.GET_REPLIES, videoId, null, null);
|
||||
APIResponse apiResponse = api.getComments(action.GET_REPLIES, videoId, commentId, null);
|
||||
Handler mainHandler = new Handler(Looper.getMainLooper());
|
||||
Runnable myRunnable = () -> apiResponseMutableLiveData.setValue(apiResponse);
|
||||
mainHandler.post(myRunnable);
|
||||
|
@ -15,7 +15,6 @@ package app.fedilab.fedilabtube.viewmodel;
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
|
||||
@ -23,6 +22,7 @@ import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import app.fedilab.fedilabtube.client.RetrofitSepiaSearchAPI;
|
||||
import app.fedilab.fedilabtube.client.data.VideoData;
|
||||
import app.fedilab.fedilabtube.client.entities.SepiaSearch;
|
||||
|
@ -69,13 +69,6 @@ public class TimelineVM extends AndroidViewModel {
|
||||
return apiResponseMutableLiveData;
|
||||
}
|
||||
|
||||
public LiveData<APIResponse> getVideosInChannel(String channelId, String max_id) {
|
||||
apiResponseMutableLiveData = new MutableLiveData<>();
|
||||
loadVideosForChannel(null, channelId, max_id);
|
||||
return apiResponseMutableLiveData;
|
||||
}
|
||||
|
||||
|
||||
public LiveData<APIResponse> getVideosInChannel(String instance, String channelId, String max_id) {
|
||||
apiResponseMutableLiveData = new MutableLiveData<>();
|
||||
loadVideosForChannel(instance, channelId, max_id);
|
||||
@ -87,9 +80,9 @@ public class TimelineVM extends AndroidViewModel {
|
||||
new Thread(() -> {
|
||||
try {
|
||||
RetrofitPeertubeAPI retrofitPeertubeAPI;
|
||||
if( instance == null) {
|
||||
retrofitPeertubeAPI = new RetrofitPeertubeAPI(_mContext);
|
||||
}else {
|
||||
if (instance == null) {
|
||||
retrofitPeertubeAPI = new RetrofitPeertubeAPI(_mContext);
|
||||
} else {
|
||||
retrofitPeertubeAPI = new RetrofitPeertubeAPI(_mContext, instance, null);
|
||||
}
|
||||
APIResponse apiResponse = retrofitPeertubeAPI.getVideosForChannel(channelId, max_id);
|
||||
@ -107,9 +100,9 @@ public class TimelineVM extends AndroidViewModel {
|
||||
new Thread(() -> {
|
||||
try {
|
||||
RetrofitPeertubeAPI retrofitPeertubeAPI;
|
||||
if( instance == null) {
|
||||
if (instance == null) {
|
||||
retrofitPeertubeAPI = new RetrofitPeertubeAPI(_mContext);
|
||||
}else{
|
||||
} else {
|
||||
retrofitPeertubeAPI = new RetrofitPeertubeAPI(_mContext, instance, null);
|
||||
}
|
||||
APIResponse apiResponse = retrofitPeertubeAPI.getVideos(videoId, myVideo);
|
||||
@ -181,7 +174,8 @@ public class TimelineVM extends AndroidViewModel {
|
||||
|
||||
|
||||
public enum TimelineType {
|
||||
USER_VIDEOS,
|
||||
CHANNEL_VIDEOS,
|
||||
ACCOUNT_VIDEOS,
|
||||
SUBSCRIBTIONS,
|
||||
MY_VIDEOS,
|
||||
LOCAL,
|
||||
|
@ -42,12 +42,12 @@ public class MastalabWebChromeClient extends WebChromeClient implements MediaPla
|
||||
|
||||
private ToggledFullscreenCallback toggledFullscreenCallback;
|
||||
|
||||
private CustomWebview webView;
|
||||
private View activityNonVideoView;
|
||||
private ViewGroup activityVideoView;
|
||||
private ProgressBar pbar;
|
||||
private final CustomWebview webView;
|
||||
private final View activityNonVideoView;
|
||||
private final ViewGroup activityVideoView;
|
||||
private final ProgressBar pbar;
|
||||
private boolean isVideoFullscreen;
|
||||
private Activity activity;
|
||||
private final Activity activity;
|
||||
|
||||
|
||||
public MastalabWebChromeClient(Activity activity, CustomWebview webView, FrameLayout activityNonVideoView, ViewGroup activityVideoView) {
|
||||
|
@ -32,7 +32,7 @@ import app.fedilab.fedilabtube.R;
|
||||
|
||||
public class MastalabWebViewClient extends WebViewClient {
|
||||
|
||||
private Activity activity;
|
||||
private final Activity activity;
|
||||
|
||||
|
||||
public MastalabWebViewClient(Activity activity) {
|
||||
|
10
app/src/main/res/drawable/ic_baseline_color_lens_24.xml
Normal file
10
app/src/main/res/drawable/ic_baseline_color_lens_24.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12,3c-4.97,0 -9,4.03 -9,9s4.03,9 9,9c0.83,0 1.5,-0.67 1.5,-1.5 0,-0.39 -0.15,-0.74 -0.39,-1.01 -0.23,-0.26 -0.38,-0.61 -0.38,-0.99 0,-0.83 0.67,-1.5 1.5,-1.5L16,16c2.76,0 5,-2.24 5,-5 0,-4.42 -4.03,-8 -9,-8zM6.5,12c-0.83,0 -1.5,-0.67 -1.5,-1.5S5.67,9 6.5,9 8,9.67 8,10.5 7.33,12 6.5,12zM9.5,8C8.67,8 8,7.33 8,6.5S8.67,5 9.5,5s1.5,0.67 1.5,1.5S10.33,8 9.5,8zM14.5,8c-0.83,0 -1.5,-0.67 -1.5,-1.5S13.67,5 14.5,5s1.5,0.67 1.5,1.5S15.33,8 14.5,8zM17.5,12c-0.83,0 -1.5,-0.67 -1.5,-1.5S16.67,9 17.5,9s1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5z"/>
|
||||
</vector>
|
@ -33,15 +33,14 @@
|
||||
android:id="@+id/appBar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
|
||||
>
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?colorPrimary"
|
||||
android:theme="@style/ThemeOverlay.AppCompat.Dark"
|
||||
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
|
||||
android:theme="@style/theme"
|
||||
app:popupTheme="@style/popupTheme"
|
||||
app:layout_scrollFlags="scroll|enterAlways"
|
||||
android:fitsSystemWindows="true"
|
||||
/>
|
||||
|
@ -47,6 +47,7 @@
|
||||
|
||||
<com.google.android.exoplayer2.ui.PlayerView
|
||||
android:id="@+id/media_video"
|
||||
android:animateLayoutChanges="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center" />
|
||||
@ -75,226 +76,414 @@
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/peertube_information_container"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="2"
|
||||
android:layout_marginStart="@dimen/video_comment_margin"
|
||||
android:layout_marginEnd="@dimen/video_comment_margin"
|
||||
android:layout_weight="2">
|
||||
|
||||
<LinearLayout
|
||||
>
|
||||
<androidx.core.widget.NestedScrollView
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:id="@+id/peertube_information_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginEnd="20dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/peertube_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp" />
|
||||
|
||||
android:layout_height="match_parent">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:orientation="horizontal">
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginEnd="20dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/peertube_view_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:id="@+id/peertube_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="0"
|
||||
app:drawableTopCompat="@drawable/ic_baseline_visibility_24"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/peertube_like_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="0"
|
||||
app:drawableTopCompat="@drawable/ic_baseline_thumb_up_alt_24"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/peertube_dislike_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="0"
|
||||
app:drawableTopCompat="@drawable/ic_baseline_thumb_down_alt_24"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/peertube_bookmark"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text=""
|
||||
app:drawableTopCompat="@drawable/ic_baseline_bookmark_border_24" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/peertube_playlist"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text=""
|
||||
android:visibility="gone"
|
||||
app:drawableTopCompat="@drawable/ic_baseline_list_24" />
|
||||
android:layout_marginTop="5dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
tools:ignore="UselessLeaf" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/more_actions"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text=""
|
||||
app:drawableTopCompat="@drawable/ic_baseline_more_vert_24" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/peertube_description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/write_comment_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginTop="10dp"
|
||||
android:baselineAligned="false"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/my_pp"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:contentDescription="@string/profile_picture" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/send"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:contentDescription="@string/send_comment"
|
||||
android:src="@drawable/ic_baseline_send_24"
|
||||
android:visibility="gone" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/add_comment_read"
|
||||
android:layout_width="match_parent"
|
||||
android:id="@+id/peertube_view_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/add_public_comment" />
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="0"
|
||||
app:drawableTopCompat="@drawable/ic_baseline_visibility_24"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/add_comment_write"
|
||||
android:layout_width="match_parent"
|
||||
<TextView
|
||||
android:id="@+id/peertube_like_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusable="true"
|
||||
android:focusableInTouchMode="true"
|
||||
android:hint="@string/add_public_comment"
|
||||
android:importantForAutofill="no"
|
||||
android:inputType="textMultiLine"
|
||||
android:maxLines="4"
|
||||
android:overScrollMode="always"
|
||||
android:scrollbarStyle="insideInset"
|
||||
android:scrollbars="vertical"
|
||||
android:visibility="gone" />
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="0"
|
||||
app:drawableTopCompat="@drawable/ic_baseline_thumb_up_alt_24"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/peertube_dislike_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="0"
|
||||
app:drawableTopCompat="@drawable/ic_baseline_thumb_down_alt_24"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/peertube_bookmark"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text=""
|
||||
app:drawableTopCompat="@drawable/ic_baseline_bookmark_border_24" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/peertube_playlist"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text=""
|
||||
android:visibility="gone"
|
||||
app:drawableTopCompat="@drawable/ic_baseline_list_24" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
tools:ignore="UselessLeaf" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/more_actions"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text=""
|
||||
app:drawableTopCompat="@drawable/ic_baseline_more_vert_24" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/peertube_description"
|
||||
android:textIsSelectable="true"
|
||||
android:autoLink="web"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp" />
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/write_comment_container"
|
||||
android:layout_margin="10dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<View
|
||||
android:id="@+id/separator_top"
|
||||
android:layout_margin="5dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/write_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1px"
|
||||
android:background="@android:color/darker_gray"/>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
app:layout_constraintTop_toBottomOf="@+id/separator_top"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/separator_bottom"
|
||||
android:id="@+id/write_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<ImageView
|
||||
android:id="@+id/my_pp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginEnd="5dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:contentDescription="@string/profile_picture" />
|
||||
<studio.carbonylgroup.textfieldboxes.TextFieldBoxes
|
||||
android:id="@+id/text_field_boxes"
|
||||
android:layout_width="0dp"
|
||||
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/my_pp"
|
||||
app:layout_constraintEnd_toStartOf="@+id/send"
|
||||
app:labelText="@string/add_public_comment"
|
||||
app:secondaryColor="?attr/colorAccent"
|
||||
app:primaryColor="?attr/colorAccent"
|
||||
>
|
||||
<studio.carbonylgroup.textfieldboxes.ExtendedEditText
|
||||
android:id="@+id/add_comment_write"
|
||||
app:alwaysShowHint="false"
|
||||
app:useDenseSpacing="false"
|
||||
android:textSize="14sp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
</studio.carbonylgroup.textfieldboxes.TextFieldBoxes>
|
||||
<ImageView
|
||||
android:layout_marginStart="5dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:id="@+id/send"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/send_comment"
|
||||
android:src="@drawable/ic_baseline_send_24" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/separator_bottom"
|
||||
android:layout_margin="5dp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/write_container"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1px"
|
||||
android:background="@android:color/darker_gray"/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/peertube_comments"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/no_action"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/no_action_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:padding="10dp"
|
||||
android:text="@string/no_comments"
|
||||
android:textSize="25sp" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/peertube_comments"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/no_action"
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:background="?android:colorBackground"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:id="@+id/reply_thread"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<LinearLayout
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginEnd="20dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:id="@+id/main_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/no_action_text"
|
||||
android:divider="?android:dividerHorizontal"
|
||||
android:orientation="vertical"
|
||||
android:showDividers="end">
|
||||
<ImageView
|
||||
android:layout_gravity="end|center_vertical"
|
||||
android:id="@+id/close_reply"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:contentDescription="@string/close"
|
||||
android:src="@drawable/ic_close_black_48dp"/>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:padding="10dp"
|
||||
android:text="@string/no_comments"
|
||||
android:textSize="25sp" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
android:layout_height="wrap_content">
|
||||
<ImageView
|
||||
android:id="@+id/comment_account_profile"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:contentDescription="@string/profile_picture"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/comment_account_displayname"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="5dp"
|
||||
android:singleLine="true"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toStartOf="@+id/comment_date"
|
||||
app:layout_constraintStart_toEndOf="@+id/comment_account_profile"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/comment_account_username"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_marginStart="5dp"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:textSize="12sp"
|
||||
app:layout_constraintStart_toEndOf="@+id/comment_account_profile"
|
||||
app:layout_constraintTop_toBottomOf="@+id/comment_account_displayname" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/comment_date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginStart="2dp"
|
||||
android:layout_weight="0"
|
||||
android:gravity="end"
|
||||
android:maxLines="1"
|
||||
android:textSize="12sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/comment_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:textIsSelectable="true"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/comment_account_profile" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/write_comment_container_reply"
|
||||
android:layout_margin="10dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<View
|
||||
android:id="@+id/separator_top_reply"
|
||||
android:layout_margin="5dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/write_container_reply"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1px"
|
||||
android:background="@android:color/darker_gray"/>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
app:layout_constraintTop_toBottomOf="@+id/separator_top_reply"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/separator_bottom_reply"
|
||||
android:id="@+id/write_container_reply"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<ImageView
|
||||
android:id="@+id/my_pp_reply"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:contentDescription="@string/profile_picture" />
|
||||
<studio.carbonylgroup.textfieldboxes.TextFieldBoxes
|
||||
android:id="@+id/text_field_boxes_reply"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/my_pp_reply"
|
||||
app:layout_constraintEnd_toStartOf="@+id/send_reply"
|
||||
app:labelText="@string/add_public_reply"
|
||||
app:secondaryColor="?attr/colorAccent"
|
||||
app:primaryColor="?attr/colorAccent"
|
||||
>
|
||||
<studio.carbonylgroup.textfieldboxes.ExtendedEditText
|
||||
android:id="@+id/add_comment_write_reply"
|
||||
app:alwaysShowHint="false"
|
||||
app:useDenseSpacing="false"
|
||||
android:textSize="14sp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
</studio.carbonylgroup.textfieldboxes.TextFieldBoxes>
|
||||
<ImageView
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:id="@+id/send_reply"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/send_comment"
|
||||
android:src="@drawable/ic_baseline_send_24"
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/separator_bottom_reply"
|
||||
android:layout_margin="5dp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/write_container_reply"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1px"
|
||||
android:background="@android:color/darker_gray"/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:id="@+id/peertube_reply"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<!-- View where the video will be shown when video goes fullscreen -->
|
||||
<RelativeLayout
|
||||
android:id="@+id/videoLayout"
|
||||
|
@ -83,34 +83,10 @@
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
||||
android:textColor="@android:color/white"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintBottom_toBottomOf="@id/account_follow"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/account_pp"
|
||||
app:layout_constraintTop_toBottomOf="@id/account_dn" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/account_follow"
|
||||
style="@style/Widget.AppCompat.Button.Colored"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:contentDescription="@string/make_an_action"
|
||||
android:scaleType="fitCenter"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toEndOf="@id/subscriber_count"
|
||||
app:layout_constraintTop_toBottomOf="@id/account_dn" />
|
||||
|
||||
<Button
|
||||
style="@style/Widget.AppCompat.Button.Colored"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:contentDescription="@string/edit_profile"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_baseline_edit_24"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toEndOf="@id/subscriber_count"
|
||||
app:layout_constraintTop_toBottomOf="@id/account_dn" />
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
@ -135,11 +111,8 @@
|
||||
android:visibility="gone" />
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
</com.google.android.material.appbar.CollapsingToolbarLayout>
|
||||
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/account_tabLayout"
|
||||
android:layout_width="match_parent"
|
||||
@ -157,14 +130,4 @@
|
||||
android:layout_marginTop="5dp"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/action_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="@dimen/fab_margin_button"
|
||||
android:src="@drawable/ic_baseline_add_24"
|
||||
android:tint="@android:color/white"
|
||||
android:visibility="gone" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
170
app/src/main/res/layout/activity_show_channel.xml
Normal file
170
app/src/main/res/layout/activity_show_channel.xml
Normal file
@ -0,0 +1,170 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
Copyright 2020 Thomas Schneider
|
||||
|
||||
This file is a part of TubeLab
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under the terms of the
|
||||
GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
TubeLab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with TubeLab; if not,
|
||||
see <http://www.gnu.org/licenses>.
|
||||
-->
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:context=".ShowChannelActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fitsSystemWindows="true"
|
||||
app:theme="@style/ThemeOverlay.AppCompat.ActionBar">
|
||||
|
||||
<com.google.android.material.appbar.CollapsingToolbarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fitsSystemWindows="true"
|
||||
app:contentScrim="?attr/colorPrimary"
|
||||
app:expandedTitleMarginEnd="64dp"
|
||||
app:expandedTitleMarginStart="48dp"
|
||||
app:layout_scrollFlags="scroll|exitUntilCollapsed">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/top_banner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/account_pp"
|
||||
android:layout_width="80dp"
|
||||
android:layout_height="80dp"
|
||||
android:layout_margin="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:background="@drawable/account_pp_border"
|
||||
android:contentDescription="@string/profile_picture"
|
||||
android:padding="2dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/account_dn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/subscriber_count"
|
||||
app:layout_constraintStart_toEndOf="@+id/account_pp"
|
||||
app:layout_constraintTop_toTopOf="@+id/account_pp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/subscriber_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:gravity="center_vertical"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
||||
android:textColor="@android:color/white"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintBottom_toBottomOf="@id/account_follow"
|
||||
app:layout_constraintStart_toEndOf="@+id/account_pp"
|
||||
app:layout_constraintTop_toBottomOf="@id/account_dn" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/account_follow"
|
||||
style="@style/Widget.AppCompat.Button.Colored"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:contentDescription="@string/make_an_action"
|
||||
android:scaleType="fitCenter"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toEndOf="@id/subscriber_count"
|
||||
app:layout_constraintTop_toBottomOf="@id/account_dn" />
|
||||
|
||||
<Button
|
||||
style="@style/Widget.AppCompat.Button.Colored"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:contentDescription="@string/edit_profile"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_baseline_edit_24"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toEndOf="@id/subscriber_count"
|
||||
app:layout_constraintTop_toBottomOf="@id/account_dn" />
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/top_banner"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="8dp"
|
||||
app:layout_scrollFlags="scroll|enterAlways">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/account_note"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:gravity="center"
|
||||
android:padding="10dp"
|
||||
android:textColor="@android:color/white"
|
||||
android:textIsSelectable="true"
|
||||
android:visibility="gone" />
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
</com.google.android.material.appbar.CollapsingToolbarLayout>
|
||||
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/account_tabLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:tabGravity="fill"
|
||||
app:tabMode="fixed"
|
||||
app:tabSelectedTextColor="?colorAccent"
|
||||
app:tabTextColor="@android:color/white" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/account_viewpager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/action_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="@dimen/fab_margin_button"
|
||||
android:src="@drawable/ic_baseline_add_24"
|
||||
android:tint="@android:color/white"
|
||||
android:visibility="gone" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
@ -21,7 +21,9 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:divider="?android:dividerHorizontal"
|
||||
android:orientation="vertical"
|
||||
android:showDividers="end">
|
||||
android:clickable="true"
|
||||
android:showDividers="end"
|
||||
android:focusable="true">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
@ -47,6 +49,18 @@
|
||||
app:layout_constraintStart_toEndOf="@+id/comment_account_profile"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/comment_account_username"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_marginStart="5dp"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:textSize="12sp"
|
||||
app:layout_constraintStart_toEndOf="@+id/comment_account_profile"
|
||||
app:layout_constraintTop_toBottomOf="@+id/comment_account_displayname" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/comment_date"
|
||||
android:layout_width="wrap_content"
|
||||
@ -71,28 +85,103 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/comment_date" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/comment_account_username"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:textSize="12sp"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/comment_account_profile"
|
||||
app:layout_constraintStart_toEndOf="@+id/comment_account_profile"
|
||||
app:layout_constraintTop_toBottomOf="@+id/comment_account_displayname" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/comment_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:textIsSelectable="true"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/comment_account_profile" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/number_of_replies"
|
||||
app:layout_constraintTop_toBottomOf="@+id/comment_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/colorAccent"/>
|
||||
|
||||
|
||||
<TextView
|
||||
app:layout_constraintTop_toBottomOf="@+id/comment_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:id="@+id/replyButton"
|
||||
android:text="@string/reply"
|
||||
android:textColor="?attr/colorAccent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
app:layout_constraintTop_toBottomOf="@+id/replyButton"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:id="@+id/write_comment_container_reply"
|
||||
android:layout_margin="10dp"
|
||||
android:visibility="gone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<View
|
||||
android:id="@+id/separator_top_reply"
|
||||
android:layout_margin="5dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/write_container_reply"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1px"
|
||||
android:background="@android:color/darker_gray"/>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
app:layout_constraintTop_toBottomOf="@+id/separator_top_reply"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/separator_bottom_reply"
|
||||
android:id="@+id/write_container_reply"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<studio.carbonylgroup.textfieldboxes.TextFieldBoxes
|
||||
android:id="@+id/text_field_boxes_reply"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/send_reply"
|
||||
app:labelText="@string/add_public_reply"
|
||||
app:secondaryColor="?attr/colorAccent"
|
||||
app:primaryColor="?attr/colorAccent"
|
||||
>
|
||||
<studio.carbonylgroup.textfieldboxes.ExtendedEditText
|
||||
android:id="@+id/add_comment_write_reply"
|
||||
app:alwaysShowHint="false"
|
||||
app:useDenseSpacing="false"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
</studio.carbonylgroup.textfieldboxes.TextFieldBoxes>
|
||||
<ImageView
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:id="@+id/send_reply"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/send_comment"
|
||||
android:src="@drawable/ic_baseline_send_24"
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/separator_bottom_reply"
|
||||
android:layout_margin="5dp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/write_container_reply"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1px"
|
||||
android:background="@android:color/darker_gray"/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -15,6 +15,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:background="#CC000000"
|
||||
android:animateLayoutChanges="true"
|
||||
android:layoutDirection="ltr"
|
||||
android:orientation="vertical"
|
||||
tools:targetApi="28">
|
||||
@ -34,13 +35,6 @@
|
||||
android:id="@id/exo_rew"
|
||||
style="@style/ExoMediaButton.Rewind" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@id/exo_shuffle"
|
||||
style="@style/ExoMediaButton.VR" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@id/exo_repeat_toggle"
|
||||
style="@style/ExoMediaButton" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@id/exo_play"
|
||||
|
@ -6,6 +6,16 @@
|
||||
android:icon="@drawable/ic_baseline_delete_24"
|
||||
android:title="@string/delete"
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/action_mute"
|
||||
android:icon="@drawable/ic_baseline_volume_mute_24"
|
||||
android:title="@string/action_mute"
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/action_remove_comments"
|
||||
android:icon="@drawable/ic_baseline_delete_24"
|
||||
android:title="@string/delete_account_comment"
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/action_report"
|
||||
android:icon="@drawable/ic_baseline_report_24"
|
||||
|
@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<item
|
||||
android:id="@+id/action_report"
|
||||
android:icon="@drawable/ic_baseline_report_24"
|
||||
android:title="@string/report"
|
||||
app:showAsAction="ifRoom" />
|
||||
</menu>
|
@ -16,4 +16,14 @@
|
||||
android:icon="@drawable/ic_baseline_subtitles_24"
|
||||
android:title="@string/captions"
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/action_edit"
|
||||
android:icon="@drawable/ic_baseline_edit_24"
|
||||
android:title="@string/edit"
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/action_report"
|
||||
android:icon="@drawable/ic_baseline_report_24"
|
||||
android:title="@string/report"
|
||||
app:showAsAction="ifRoom" />
|
||||
</menu>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user