diff --git a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java index cfe9cd778a42c1efddfccfc159b9ffa15e2e9cad..3c372f249ded0b22b07fc94e87f0e0ed3bc15a86 100755 --- a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java +++ b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java @@ -64,6 +64,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; +import androidx.core.view.GestureDetectorCompat; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; @@ -203,6 +204,7 @@ public class LauncherActivity extends AppCompatActivity implements private boolean allAppsDisplayed; private boolean forceRefreshSuggestedApps = false; + private List mUsageStats; private FrameLayout swipeSearchContainer; private InsettableRelativeLayout workspace; @@ -241,6 +243,7 @@ public class LauncherActivity extends AppCompatActivity implements private int moveTo; private Configuration oldConfig; private WallpaperChangeReceiver wallpaperChangeReceiver; + private GestureDetectorCompat mDetector; public static LauncherActivity getLauncher(Context context) { if (context instanceof LauncherActivity) { @@ -1705,10 +1708,17 @@ public class LauncherActivity extends AppCompatActivity implements parentPage = -99; } iconView.clearAnimation(); - iconView.setVisibility(View.INVISIBLE); + movingApp.setVisibility(View.INVISIBLE); dragDropEnabled = true; - return true; } + } else if (event.getAction() == MotionEvent.ACTION_UP) { + new Handler(Looper.getMainLooper()).post(() -> { + if (movingApp != null && movingApp.getVisibility() != VISIBLE) { + movingApp.setVisibility(VISIBLE); + movingApp.invalidate(); + } + }); + return false; } return false; } @@ -1881,7 +1891,7 @@ public class LauncherActivity extends AppCompatActivity implements } } } else { - blissFrameLayout.setAnimation(null); + blissFrameLayout.clearAnimation(); new Handler(Looper.getMainLooper()).post( () -> removeUninstallIcon(blissFrameLayout)); } @@ -1960,7 +1970,7 @@ public class LauncherActivity extends AppCompatActivity implements if (mFolderWindowContainer.getVisibility() == View.VISIBLE) { activeFolder.items.remove(shortcutItem); mFolderAppsViewPager.getAdapter().notifyDataSetChanged(); - blissFrameLayout.setAnimation(null); + blissFrameLayout.clearAnimation(); ((ViewGroup) blissFrameLayout.getParent()).removeView(blissFrameLayout); if (activeFolder.items.size() == 0) { ((ViewGroup) activeFolderView.getParent()).removeView @@ -1980,7 +1990,7 @@ public class LauncherActivity extends AppCompatActivity implements addAppToGrid(gridLayout, view, gridLayout.indexOfChild(activeFolderView)); } - activeFolderView.setAnimation(null); + activeFolderView.clearAnimation(); ((ViewGroup) activeFolderView.getParent()).removeView( activeFolderView); hideFolderWindowContainer(); @@ -1991,7 +2001,7 @@ public class LauncherActivity extends AppCompatActivity implements hideFolderWindowContainer(); } } else { - blissFrameLayout.setAnimation(null); + blissFrameLayout.clearAnimation(); ((ViewGroup) blissFrameLayout.getParent()).removeView(blissFrameLayout); } } @@ -2032,6 +2042,7 @@ public class LauncherActivity extends AppCompatActivity implements cY = mDock.getY() + dragEvent.getY() - dragShadowBuilder.yOffset; int index = getIndex(mDock, cX, cY); + // If hovering over self, ignore drag/drop if (index == mDock.indexOfChild(movingApp)) { discardCollidingApp(); @@ -2039,14 +2050,11 @@ public class LauncherActivity extends AppCompatActivity implements } // If hovering over an empty location, ignore drag/drop + // If hovering over another app icon either move it + // Or create a folder depending on time and distance if (index == EMPTY_LOCATION_DRAG) { discardCollidingApp(); - } - - // If hovering over another app icon - // either move it or create a folder - // depending on time and distance - if (index != EMPTY_LOCATION_DRAG) { + } else { BlissFrameLayout latestCollidingApp = (BlissFrameLayout) mDock.getChildAt(index); if (collidingApp != latestCollidingApp) { @@ -2148,7 +2156,6 @@ public class LauncherActivity extends AppCompatActivity implements @Override public boolean onDrag(View view, DragEvent dragEvent) { - if (dragEvent.getAction() == DragEvent.ACTION_DRAG_STARTED) { isDragging = true; if (mWobblingCountDownTimer != null) { @@ -2217,12 +2224,7 @@ public class LauncherActivity extends AppCompatActivity implements // If hovering over an empty location, ignore drag/drop if (index == EMPTY_LOCATION_DRAG) { discardCollidingApp(); - } - - // If hovering over another app icon - // either move it or create a folder - // depending on time and distance - if (index != EMPTY_LOCATION_DRAG) { + } else { View latestCollidingApp = getGridFromPage(page).getChildAt(index); if (collidingApp != latestCollidingApp) { if (collidingApp != null) { @@ -2277,6 +2279,7 @@ public class LauncherActivity extends AppCompatActivity implements addAppToGrid(gridLayout, movingApp); } } + movingApp.setVisibility(View.VISIBLE); makeAppWobble(movingApp, true, gridLayout.indexOfChild(movingApp)); } else { @@ -2306,9 +2309,12 @@ public class LauncherActivity extends AppCompatActivity implements } else { movingApp.setVisibility(View.VISIBLE); int currentItem = mFolderAppsViewPager.getCurrentItem(); - makeAppWobble(movingApp, true, - ((GridLayout) mFolderAppsViewPager.getChildAt( - currentItem)).indexOfChild(movingApp)); + GridLayout gridLayout = (GridLayout) mFolderAppsViewPager.getChildAt( + currentItem); + if (gridLayout != null) { + makeAppWobble(movingApp, true, + gridLayout.indexOfChild(movingApp)); + } } } } else if (dragEvent.getAction() == DragEvent.ACTION_DRAG_ENDED) { @@ -2316,9 +2322,8 @@ public class LauncherActivity extends AppCompatActivity implements isDragging = false; } - if (movingApp.getVisibility() != VISIBLE) { - movingApp.setVisibility(View.VISIBLE); - } + cleanupReorder(true); + cleanupDockReorder(true); if (!dragEvent.getResult()) { if (mFolderWindowContainer.getVisibility() == View.VISIBLE) { @@ -2335,6 +2340,11 @@ public class LauncherActivity extends AppCompatActivity implements } } + new Handler(Looper.getMainLooper()).post(() -> { + movingApp.setVisibility(VISIBLE); + movingApp = null; + }); + if (mWobblingCountDownTimer != null) { mWobblingCountDownTimer.cancel(); } @@ -2416,7 +2426,7 @@ public class LauncherActivity extends AppCompatActivity implements } else { GridLayout gridLayout = pages.get(getCurrentAppsPageNumber()); int index = gridLayout.indexOfChild(activeFolderView); - activeFolderView.setAnimation(null); + activeFolderView.clearAnimation(); removeUninstallIcon(activeFolderView); gridLayout.removeView(activeFolderView); addAppToGrid(gridLayout, view, index); @@ -2435,7 +2445,7 @@ public class LauncherActivity extends AppCompatActivity implements BlissFrameLayout view = prepareLauncherItem(item); if (folderFromDock) { int index = mDock.indexOfChild(activeFolderView); - activeFolderView.setAnimation(null); + activeFolderView.clearAnimation(); removeUninstallIcon(activeFolderView); mDock.removeView(activeFolderView); addAppToDock(view, index); @@ -2443,7 +2453,7 @@ public class LauncherActivity extends AppCompatActivity implements } else { GridLayout gridLayout = pages.get(getCurrentAppsPageNumber()); int index = gridLayout.indexOfChild(activeFolderView); - activeFolderView.setAnimation(null); + activeFolderView.clearAnimation(); removeUninstallIcon(activeFolderView); gridLayout.removeView(activeFolderView); addAppToGrid(gridLayout, view, index); @@ -2490,7 +2500,7 @@ public class LauncherActivity extends AppCompatActivity implements private void createOrUpdateFolder(boolean fromDock) { int index; - collidingApp.setAnimation(null); + collidingApp.clearAnimation(); if (fromDock) { index = mDock.indexOfChild(collidingApp); @@ -3129,12 +3139,16 @@ public class LauncherActivity extends AppCompatActivity implements public void onSwipeStart() { swipeSearchContainer.setTranslationY( BlissLauncher.getApplication(this).getDeviceProfile().availableHeightPx); - swipeSearchContainer.setVisibility(VISIBLE); + swipeSearchContainer.setVisibility(GONE); showSwipeSearch = false; } @Override public void onSwipe(int position) { + if ((longPressed && !mLongClickStartsDrag) || (!longPressed && isWobbling)) { + return; + } + swipeSearchContainer.setVisibility(VISIBLE); float translateBy = position * 1.25f; if (translateBy <= swipeSearchContainer.getHeight()) { swipeSearchContainer.setTranslationY(-swipeSearchContainer.getHeight() + translateBy); diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index a6b3daec9354f9ae75cdf8d94a67446c6227dd96..aa3220f9a0a5b6c18906b80740ac51e837b14a40 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -1,2 +1,133 @@ - \ No newline at end of file + + Benachrichtigungspunkte anzeigen + Seite %1$d von %2$d + App ist nicht installiert + Tippen, um App-Vorschläge einzurichten + Zum Startbildschirm hinzufügen + Automatisch hinzufügen + Einer App erlauben, Verknüpfungen ohne Benutzereingriff zu entfernen. + Einer App erlauben, Verknüpfungen ohne Benutzereingriff zu erstellen. + Verknüpfungen entfernen + Verknüpfungen installieren + Symbolgruppenbild + Wetterbedingungsbild + Wettereinstellungssymbol + 42° / 28° + 36° + Tippen, um Wetter einzurichten + Wetter + Mehr erhalten ... + Einfarbig + Farbig + Symbolgruppe + Standort auswählen + Wetterüberblick anzeigen, wenn Widget minimiert ist +\n + Zeigen wenn minimiert + Auswählen, um zwischen Standard- (farbigen) und alternativen (weißen) Symbolen zu wechseln + Farbige Symbole verwenden + Standort wird überprüft + Niedrige/hohe Temperaturen umkehren + Aktivieren + Standortermittlung ist deaktiviert. +\n +\nStandort zum Betreiben des Wetter-Widget freigeben. + Standortbestimmung nicht möglich! + Metrische Einheiten verwenden (°C) + Aktualisierungsintervall + Zeitstempel anzeigen + Standort anzeigen + Standort + Stadt, Bundesland/Land + Standort eingeben + Standortbestimmung durch Netzwerk + benutzerdefinierten Standort verwenden + Datenquelle + Wetter anzeigen + Aktiviert + Anzeige + Wetteranzeige + Allgemein + 8 Stunden + 6 Stunden + 4 Stunden + 2 Stunden + 60 Minuten + 30 Minuten + Manuell + Auswahl antippen + Keine Quelle für Wetterdaten ausgewählt + %s derzeit nicht erreichbar + Gerade eben + Wird aktualisiert + Zur Aktualisierung tippen + Keine Daten + NW + W + SW + S + SO + O + NO + N + mi/h + km/h + Vereinzelte Gewitterschauer + Schneeschauer + Gewitterschauer + Teilweise bewölkt + Starker Schneefall + Vereinzelte Schneeschauer + Starker Schneefall + Vereinzelte Regenschauer + Vereinzelte Gewitter + Vereinzelte Gewitter + Vereinzelte Gewitter + Heiß + Regen und Hagel + Heiter + Heiter + Sonnig + Klarer Himmel + Teilweise bewölkt + Teilweise Bewölkt + Überwiegend Bewölkt + Überwiegend Bewölkt + Bewölkt + Kalt + Windig + Stürmisch + Qualmig + Dunst + Nebelig + Staub + Schneeregen + Hagel + Schnee + Schneetreiben + Leichter Schneeschauer + Schneegestöber + Regenschauer + Regenschauer + Gefrierender Regen + Nieselregen + Gefrierender Niesel + Schnee und Graupelschauer + Regen und Graupelschauer + Schneeregen + Gewitter + Heftige Gewitter + Orkan + Tropengewitter + Tornado + Abbrechen + Unbekannt + " +\nAktiviere den Zugriff auf Apps, um App-Vorschläge anzuzeigen. +\n" + APP VORSCHLÄGE + Unbenannt + Suche + Bliss Starter + \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index c6c405bdba0c898b5d1ee722b007a7606a667703..38d7d7451af32821d31ba327f9b402a49ff2b0ed 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -6,9 +6,9 @@ Pluie verglaçante Bruine Bruine verglaçante - Neige et neige fondue mélangées - Pluie et neige fondue - Pluie et neige mêlées + Mélange de Neige et Neige fondue + Mélange de Pluie et Neige fondue + Mélange de Pluie et Neige Orages Orages violents Ouragan @@ -16,35 +16,35 @@ Tornade Annuler Inconnu - Activer l\'accès aux application pour pouvoir afficher les suggestions d\'application. - Suggestions d\'application + Activer l\'accès aux données d\'utilisation pour pouvoir afficher les suggestions d\'applications. + SUGGESTIONS D\'APPLICATIONS Sans titre Rechercher - BlissLauncher + Bliss Launcher Légères averses de neige - Rafales de neige + Poudrerie Neige Ajouter à l\'écran d\'accueil Ajouter automatiquement - Autorise une app à supprimer des raccourcis sans l\'intervention de l\'utilisateur - Donne la permission à une app d\'ajouter un raccourci sans l\'intervention de l\'utilisateur. - racourcis de désinstallation - raccourcis d\'installation - Image du jeu d\'icones - Images de la situation météo - Icone de configuration de la Météo + Autorise une application à supprimer des raccourcis sans l\'intervention de l\'utilisateur. + Autorise une application à ajouter un raccourci sans l\'intervention de l\'utilisateur. + désinstaller les raccourcis + installer des raccourcis + Image du jeu d\'icônes + Image des conditions météorologiques + Icône de configuration de la Météo 42° / 28° 36° Appuyer pour configurer la météo Météo - Accéder à davantage… + En obtenir plus… Monochrome En couleurs - Jeu d\'icones + Jeu d’icônes Sélectionner l\'emplacement Afficher un résumé météo quand le widget est minimisé Montrer lors de la minimisation - Sélectionner pour basculer des icones par défaut (Couleurs) aux icones alternatives (Blanches) + Sélectionner pour basculer entre les icônes par défaut (Couleur) et les icônes alternatives (Blanc) Utiliser les icones en couleurs Emplacement en cours de vérification Inverser basses et hautes températures @@ -55,13 +55,13 @@ Impossible de trouver l\'emplacement ! Utiliser le système métrique (°C) Intervalle de mise à jour - Afficher l\'heure + Afficher l\'horodatage Montrer l\'emplacement Emplacement - Ville, Etat/Pays + Ville, État/Pays Saisir l\'emplacement Géolocalisation en utilisant le réseau - Utiliser une localisation personnalisée + Utiliser un emplacement personnalisé Service Météo Afficher la Météo Activé @@ -79,9 +79,9 @@ Aucun service météo sélectionné %s actuellement injoignable Maintenant - Mise à jour - Appuyer pour rafraîchir - Aucunes données + Actualisation + Appuyer pour actualiser + Aucune donnée NO O SO @@ -90,41 +90,41 @@ E NE N - mph + miles/h km/h Averses orageuses isolées Averses de neige Averses orageuses Partiellement couvert - Fortes chûtes de neige + Fortes chutes de neige Averses de neiges éparses Fortes chutes de neige - Averses isolées - Orages isolés - Orages isolés + Averses éparses + Orages dispersés + Orages dispersés Orages isolés Chaud - Giboulées + Pluie et grêle Beau temps Beau temps Ensoleillé Clair - Nuages éparses + Nuages épars Partiellement nuageux - Jour - Nuit - Couvert + Très nuageux + Très nuageux + Nuageux Froid Venteux - Venteux - Fumée - Brumeux + Vents violents + Enfumé + Brume Brouillard - Beau temps - Poussières + Grésil + Poussière Grêle Afficher les bulles de notification Page %1$d sur %2$d - L\'app n\'est pas installée + L\'application n\'est pas installée Appuyer pour configurer les suggestions d\'applications \ No newline at end of file diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index a6b3daec9354f9ae75cdf8d94a67446c6227dd96..d9a046b006396d3d0e55a87fe43ebf1925803f75 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -1,2 +1,98 @@ - \ No newline at end of file + + Icoon set afbeelding + Weer toestand afbeelding + 42° / 28° + 36° + Gekleurd + Icoon set + Selecteer locatie + Locatie verifiëren + Laag/hoog temperaturen omkeren + Inschakelen + Geolocatie via netwerk is uitgeschakeld. +\n +\nSchakel Locatie in om te kunnen werken met Weer widget. + Kan locatie niet ophalen! + Gebruik metrisch (°C) + Update interval + Toon tijdstip + Toon locatie + Locatie + Stad, Land + Geef locatie + Gelokaliseerd via netwerk + Weeraanbieder + Ingeschakeld + Weergave + Weer paneel + Algemeen + 8 uren + 6 uren + 4 uren + 2 uren + 60 minuten + 30 minuten + Tik om één te selecteren + Geen weer informatiebron geselecteerd + Kan %s op dit moment niet bereiken + Zojuist + Aan het vernieuwen + Tik om te vernieuwen + Geen gegevens + NW + W + ZW + Z + ZO + O + NO + N + m/pu + km/u + Plaatselijke Onweersbuien + Sneeuwbuien + Onweersbuien + Licht Bewolkt + Hevige Sneeuw + Verspreide Sneeuwbuien + Hevige Sneeuw + " Verspreide Regenbuien" + " Verspreide Onweersbuien" + Verspreide Onweersbuien + Plaatselijke Onweersbuien + Warm + Regen met hagelbuien + Redelijk + Redelijk + Zonnig + Helder + Meestal Bewolkt + Meestal Bewolkt + Bewolkt + Koud + Winderig + Stormachtig + Nevel + Mist + Stof + IJzel + Hagel + Sneeuw + Lichte sneeuwbuien + Lichte sneeuw + Stortregen + Stortregen + Motregen + Motregen met ijzel + Onweer + Hevig Onweer + Orkaan + Tropische storm + Tornado + Annuleren + Onbekend + APP SUGGESTIES + Zoeken + Bliss Launcher + \ No newline at end of file