diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/BottomBarBehavior.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/BottomBarBehavior.java new file mode 100644 index 00000000..e50799d9 --- /dev/null +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/BottomBarBehavior.java @@ -0,0 +1,102 @@ +package com.github.dfa.diaspora_android.ui; + +import android.content.Context; +import android.os.Build; +import android.support.design.widget.CoordinatorLayout; +import android.support.v4.view.ViewCompat; +import android.support.v4.view.ViewPropertyAnimatorListener; +import android.support.v4.view.animation.FastOutSlowInInterpolator; +import android.util.AttributeSet; +import android.view.View; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.widget.LinearLayout; + +import com.github.dfa.diaspora_android.R; + +/** + * Created by vanitas on 21.06.16. + */ +public class BottomBarBehavior extends CoordinatorLayout.Behavior { + private static final FastOutSlowInInterpolator INTERPOLATOR = new FastOutSlowInInterpolator(); + private boolean mIsAnimatingOut = false; + + public BottomBarBehavior(Context context, AttributeSet attrs) { + super(); + } + + @Override + public boolean onStartNestedScroll(final CoordinatorLayout coordinatorLayout, final LinearLayout child, + final View directTargetChild, final View target, final int nestedScrollAxes) { + return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL + || super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes); + } + + @Override + public void onNestedScroll(final CoordinatorLayout coordinatorLayout, final LinearLayout child, + final View target, final int dxConsumed, final int dyConsumed, + final int dxUnconsumed, final int dyUnconsumed) { + + super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed); + if (dyConsumed < 0 && !this.mIsAnimatingOut && child.getVisibility() == View.VISIBLE) { + // User scrolled down and the FAB is currently visible -> hide the FAB + animateOut(child); + } else if (dyConsumed > 0 && child.getVisibility() != View.VISIBLE) { + // User scrolled up and the FAB is currently not visible -> show the FAB + animateIn(child); + } + } + + private void animateOut(final LinearLayout linearLayout) { + if (Build.VERSION.SDK_INT >= 14) { + ViewCompat.animate(linearLayout).translationY(168F).alpha(0.0F).setInterpolator(INTERPOLATOR).withLayer() + .setListener(new ViewPropertyAnimatorListener() { + public void onAnimationStart(View view) { + BottomBarBehavior.this.mIsAnimatingOut = true; + } + + public void onAnimationCancel(View view) { + BottomBarBehavior.this.mIsAnimatingOut = false; + } + + public void onAnimationEnd(View view) { + BottomBarBehavior.this.mIsAnimatingOut = false; + view.setVisibility(View.GONE); + } + }).start(); + } else { + Animation anim = AnimationUtils.loadAnimation(linearLayout.getContext(), R.anim.bottom_bar_up); + anim.setInterpolator(INTERPOLATOR); + anim.setDuration(200L); + anim.setAnimationListener(new Animation.AnimationListener() { + public void onAnimationStart(Animation animation) { + BottomBarBehavior.this.mIsAnimatingOut = true; + } + + public void onAnimationEnd(Animation animation) { + BottomBarBehavior.this.mIsAnimatingOut = false; + linearLayout.setVisibility(View.GONE); + } + + @Override + public void onAnimationRepeat(final Animation animation) { + } + }); + linearLayout.startAnimation(anim); + } + } + + private void animateIn(LinearLayout linearLayout) { + linearLayout.setVisibility(View.VISIBLE); + if (Build.VERSION.SDK_INT >= 14) { + ViewCompat.animate(linearLayout).translationY(0).scaleX(1.0F).scaleY(1.0F).alpha(1.0F) + .setInterpolator(INTERPOLATOR).withLayer().setListener(null) + .start(); + } else { + Animation anim = AnimationUtils.loadAnimation(linearLayout.getContext(), R.anim.bottom_bar_down); + anim.setDuration(200L); + anim.setInterpolator(INTERPOLATOR); + linearLayout.startAnimation(anim); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/CustomWebViewClient.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/CustomWebViewClient.java index 5e90e312..4f7a3390 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/CustomWebViewClient.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/CustomWebViewClient.java @@ -38,7 +38,7 @@ public class CustomWebViewClient extends WebViewClient { public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); swipeRefreshLayout.setEnabled(true); - if(url.endsWith("/conversations/new")){ + if(url.contains(app.getSettings().getPodDomain()+"/conversations/") || url.endsWith("status_messages/new")){ swipeRefreshLayout.setEnabled(false); } } diff --git a/app/src/main/res/anim/bottom_bar_down.xml b/app/src/main/res/anim/bottom_bar_down.xml new file mode 100644 index 00000000..f016fc2f --- /dev/null +++ b/app/src/main/res/anim/bottom_bar_down.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/bottom_bar_up.xml b/app/src/main/res/anim/bottom_bar_up.xml new file mode 100644 index 00000000..d72c1e0d --- /dev/null +++ b/app/src/main/res/anim/bottom_bar_up.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/main__app_bar.xml b/app/src/main/res/layout/main__app_bar.xml index 76406973..62909dab 100644 --- a/app/src/main/res/layout/main__app_bar.xml +++ b/app/src/main/res/layout/main__app_bar.xml @@ -42,13 +42,15 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" - android:theme="@style/AppTheme.AppBarOverlay"> + android:theme="@style/AppTheme.AppBarOverlay" + app:layout_behavior=".ui.BottomBarBehavior"> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 91e0537d..e07bc286 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -16,17 +16,17 @@ Du musst der App Zugriff auf den Gerätespeicher gewähren, damit das Bildschirmfoto gespeichert werden kann. Danach solltest du die Anwendung komplett schließen oder das Telefon neu starten. Wenn du den Zugriff verweigerst und die Funktion später doch nutzen willst, kannst du die Berechtigung - nachträglich erteilen. Öffne dafür: Systemeinstellungen - Apps - Wetter. Im Bereich Berechtigungen kannst + nachträglich erteilen. Öffne dafür: Systemeinstellungen - Apps - Diaspora. Im Bereich Berechtigungen kannst dann die entsprechende Einstellung vornehmen. Du musst der App Zugriff auf den Gerätespeicher gewähren, damit das Bild gespeichert werden kann. Danach solltest du die Anwendung komplett schließen oder das Telefon neu starten. Wenn du den Zugriff verweigerst und die Funktion später doch nutzen willst, kannst du die Berechtigung - nachträglich erteilen. Öffne dafür: Systemeinstellungen - Apps - Wetter. Im Bereich Berechtigungen kannst + nachträglich erteilen. Öffne dafür: Systemeinstellungen - Apps - Diaspora. Im Bereich Berechtigungen kannst dann die entsprechende Einstellung vornehmen. Berechtigung verweigert. Berechtigung erteilt. Bitte versuche es erneut. - //Titles + D* Benachrichtigungen D* Unterhaltungen @@ -39,7 +39,7 @@ D* Erwähnungen D* Öffentliche Aktivitäten - // Drawer and App + Einstellungen Stream @@ -51,7 +51,7 @@ Aspekte Öffentliche Aktivitäten - // Floating Action Buttons - Titles + Nach oben scrollen Suche nach Tags oder Personen … @@ -62,10 +62,8 @@ nach Personen Füge einen Namen ein. - //Dialog + - - //Dialog Unterhaltungen D* Neuer Beitrag Benachrichtigungen diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml new file mode 100644 index 00000000..d3c2f246 --- /dev/null +++ b/app/src/main/res/values-fr/strings.xml @@ -0,0 +1,177 @@ + + + + + + Rafraîchir + Notifications non lues. Lire ? + Conversations non lues. Lire ? + Vous devez autoriser \"Modifier ou supprimer le contenu de la carte SD \" pour sauvegarder les captures d\'écrans. Ensuite, vous devriez fermer l\'application ou redémarrer votre téléphone. Si vous n\'avez pas autorisé l\'accès à l\'espace de stockage mais que vous souhaitez utiliser la fonctionnalité de prise de capture d\'écran plus tard, vous pouvez donner la permission plus tard. Veuillez ouvrir : Paramètres - applications - Diaspora. Dans la section Autorisations, vous pouvez autoriser \"Modifier ou supprimer le contenu de la carte SD \". + Vous devez autoriser \"Modifier ou supprimer le contenu de la carte SD \" pour sauvegarder les images. Ensuite, vous devriez fermer l\'application ou redémarrer votre téléphone. Si vous n\'avez pas autorisé l\'accès à l\'espace de stockage mais que vous souhaitez sauvegarder des images ultérieurement, vous pouvez donner la permission plus tard. Veuillez ouvrir : Paramètres - applications - Diaspora. Dans la section Autorisations, vous pouvez autoriser \"Modifier ou supprimer le contenu de la carte SD \". + Permission refusée. + Permission accordée. Veuillez réessayer. + + + + + D* Notifications + D* Discussions + D* Flux + D* Profil + D* Aspects + D* Activités + D* Aimés + D* Commentés + D* Mentions + D* Public + + + + + Selectionnez un Pod + Entrez le nom de domaine du pod + Confirmez l\'url du pod + Note : la liste est générée à partir de la liste des pods sécurisés depuis https://podupti.me. Vous pouvez entrer l\'url d\'un pod non listé. + Veuillez entrer un nom de domaine valide + Erreur : impossible de récupérer la liste des pods ! + + + Désolé, vous devez être connecté à Internet pour continuer + Confirmation + Voulez-vous vraiment utiliser\nhttps://%1$s\ncomme pod Diaspora ? + Souhaitez-vous quitter ? + Cette opération va effacer les cookies et données de session. Voulez-vous vraiment changer de pod ? + D* Nouveau message + Notifications + Discussions + + + + Paramètres + A propos de l\'application | Aide + Flux + Aimés + Commentés + Contacts + Mentions + Activités + Hashtags suivis + Gérer les Hashtags + Paramètres personnels + Aspects + Changer de pod + Activités publiques + Paramètres de l\'application + Paramètres du pod + Partager du contenu + + Changer la taille de la police + Charger les images + Ne pas charger les images + Changer de vue + Proxy + Activé + Hôte + Port + Partager le lien comme texte + Partager la capture d\'écran d\'un site web + Prendre une capture d\'écran d\'un site web + + Licence + Mise en page Markdown + Changelog + + Enregistrer la capture d\'écran sous : + + + + + Retour en haut + Recherche par tags ou par personnes + Nouveau message + + + Recherche + par tags + par personne + Veuillez ajouter un nom + + + + <i>"Sur diaspora* il est possible de mettre en forme votre texte des messages de statut, des commentaires et des conversations en utilisant un système de balises simple nommé Markdown. Cette page est une introduction aux codes utilisés pour créer ce formatage..</i><br> <br> + + <b>En-têtes</b><br> + # Ceci est un très grand titre<br> + ## Moitié moins grand que le précédent<br> + ### Deux fois la taille d\'un texte normal<br> <br> + + <b>Italique et gras</b><br> + Italiques : *mot* ou _mot_<br> + Gras : **mot** ou __mot__<br> + Gras italique : ***mot*** ou ___mot___<br> <br> + + <b>Listes</b><br> + *, + ou - au début chaque ligne que vous souhaitez lister ou 1., 2., etc. au début de chaque ligne de la liste<br> <br> + + <b>Citation</b><br> + Lorsque vous souhaitez citer un extrait d\'un article ou d\'un autre commentaire, vous pouvez formater facilement votre texte en commençant la ligne ou le paragraphe avec le caractère ><br> <br> + + <b>Ligne horizontale</b><br> + Pour créer une ligne horizontale, utilisez au moins trois ---, ___ ou *** sur une ligne à part. N\'importe quel nombre au-delà de trois aura le même résultat et les espaces entre les caractères n\'ont pas d\'importance.<br> <br> + + <b>Liens intégrés</b><br> + [texte qui apparaîtra ici](http://lien.adresse.ici \"texte alternatif\") Le \"texte alternatif\" est facultatif et affiché lorsque la souris survole le lien.<br> <br> + + <b>Images</b><br> + ![Texte alternatif](http://siteweb.com/image.jpg \"titre facultatif\") Le texte alternatif entre crochets est affiché si l\'image ne peut pas être chargée et le titre optionnel est affiché lorsque la souris survole l\'image ; les deux sont utiles mais pas essentiels.<br> <br> + + <b>Escape</b><br> + Si vous voulez inclure dans votre message un caractère aussi utilisé dans le codage Markdown, vous pouvez empêcher qu\'il soit interprété en l\'\"échappant\". Pour cela, placez un backslash (\) devant le caractère. Vous pouvez toutefois écrire "diaspora*" ou "D*" sans que l\'astérisque devienne un code de formatage !<br> <br> + + <b>Caractères spéciaux</b><br> + Vous pouvez créez les symboles et autres caractères spéciaux suivants en utilisant une combinaison de caractères :<br> + (c) = © ; (r) = ® ; x^2 = x²" + + <b>Principaux contributeurs :</b><br> + + • gsantner https://gsantner.github.io<br> + • martinchodev https://github.com/martinchodev<br> + • scoute-dich https://github.com/scoute-dich<br> <br> + + 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. + + This program 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 this program. If not, see http://www.gnu.org/licenses.<br> <br> + + <i>The splashscreen images can be found on flickr: + https://www.flickr.com/photos/129581906@N06/sets/72157651933980136/with/16594947123. + They were published by \"Lydia\" and are licensed under cc by-nc-sa.</i> + + Splash screen + Normal + Large + Énorme + Impossible de récupérer l\'image + Profile + + Quitter l\'application + *[partagé via #DiasporaForAndroid]* + Lien copié... + Partager un lien + Enregistrer l\'image + Partager l\'image + Ouvrir dans un navigateur externe... + Copier le lien dans le presse-papier + Enregistrer l\'image sous + Partager... + + Attention : connexion au proxy impossible... + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 93269cb9..3b18571e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - //Application + Open navigation drawer Close navigation drawer @@ -11,16 +11,16 @@ You must grant \"Access Storage Permission\" to save screenshots. After that you should completely close the app or restart the phone. If you don\'t permit the storage access but want to use the screenshot function at a later time, you can grant the permission later. Please open then: systemsettings - apps - - weather. In the permissions section you can grant the \"write storage permission\". + Diaspora. In the permissions section you can grant the \"write storage permission\". You must grant \"Access Storage Permission\" to save images. After that you should completely close the app or restart the phone. If you don\'t permit the storage access but want to save images at a later time, you can grant the permission later. Please open then: systemsettings - apps - - weather. In the permissions section you can grant the \"write storage permission\". + Diaspora. In the permissions section you can grant the \"write storage permission\". Permission denied. Permission granted. Please try again. - //Titles + D* Notifications D* Conversations @@ -34,7 +34,7 @@ D* Public - //Pod Activity + Select Pod Enter pod domain @@ -52,7 +52,7 @@ Notifications Conversations - // Drawer and App + The community-run distributed social network Settings @@ -83,7 +83,7 @@ Saving screenshot as: - // Floating Action Buttons - Titles + Go to top Search by tags or persons @@ -95,7 +95,7 @@ by people Please add a name - //Dialog //License + <i>"On diaspora* it's possible to format your text in status messages, comments and conversations using a simplified mark-up system called Markdown. This page gives an introduction to the diff --git a/build.gradle b/build.gradle index 327cdcb3..34414aca 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.0' + classpath 'com.android.tools.build:gradle:2.1.2' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // NOTE: Do not place your application dependencies here; they belong