Merge "Allow the old launcher content URI to be overrided" into ub-now-mister-ugly
diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
index 1f35622..11684c3 100644
--- a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
+++ b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
@@ -367,17 +367,12 @@
// Get the crop
RectF cropRect = mCropView.getCrop();
- // due to rounding errors in the cropview renderer the edges can be slightly offset
- // therefore we ensure that the boundaries are sanely defined
- cropRect.left = Math.max(0, cropRect.left);
- cropRect.right = Math.min(mCropView.getWidth(), cropRect.right);
- cropRect.top = Math.max(0, cropRect.top);
- cropRect.bottom = Math.min(mCropView.getHeight(), cropRect.bottom);
+ Point inSize = mCropView.getSourceDimensions();
int cropRotation = mCropView.getImageRotation();
float cropScale = mCropView.getWidth() / (float) cropRect.width();
- Point inSize = mCropView.getSourceDimensions();
+
Matrix rotateMatrix = new Matrix();
rotateMatrix.setRotate(cropRotation);
float[] rotatedInSize = new float[] { inSize.x, inSize.y };
@@ -385,6 +380,14 @@
rotatedInSize[0] = Math.abs(rotatedInSize[0]);
rotatedInSize[1] = Math.abs(rotatedInSize[1]);
+
+ // due to rounding errors in the cropview renderer the edges can be slightly offset
+ // therefore we ensure that the boundaries are sanely defined
+ cropRect.left = Math.max(0, cropRect.left);
+ cropRect.right = Math.min(rotatedInSize[0], cropRect.right);
+ cropRect.top = Math.max(0, cropRect.top);
+ cropRect.bottom = Math.min(rotatedInSize[1], cropRect.bottom);
+
// ADJUST CROP WIDTH
// Extend the crop all the way to the right, for parallax
// (or all the way to the left, in RTL)
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index dfd11f1..3d337db 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Laai tans af…"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Installeer tans…"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Onbekend"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Fout"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Nie teruggestel nie"</string>
</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 05ecc9d..489164c 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"በማውረድ ላይ"</string>
<string name="package_state_installing" msgid="7588193972189849870">"በመጫን ላይ"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"የማይታወቅ"</string>
- <string name="package_state_error" msgid="6858560020210815018">"ስህተት"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"ወደነበረበት አልተመለሰም"</string>
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 21c4135..90eae74 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"جارٍ التنزيل"</string>
<string name="package_state_installing" msgid="7588193972189849870">"جارٍ التثبيت"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"غير معروفة"</string>
- <string name="package_state_error" msgid="6858560020210815018">"خطأ"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"استعادة مخفقة"</string>
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 322777c..198cd18 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Изтегля се"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Инсталира се"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Няма информация"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Грешка"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Не е възстановено"</string>
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 6ff3b4f..c187094 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"S\'està baixant"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Instal·lant"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Desconegut"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Error"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"No restaurat"</string>
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 59400ca..6870f89 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Stahování"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Instalace"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Neznámé"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Chyba"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Nebylo obnoveno"</string>
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index d6cfb83..f0ff7dc 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Downloader"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Installerer"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Ukendt"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Fejl"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Ikke gendannet"</string>
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index b4f189d..62e5266 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Download läuft"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Installation"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Unbekannt"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Fehler"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Nicht wiederhergestellt"</string>
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 096c1d2..66cea00 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Λήψη "</string>
<string name="package_state_installing" msgid="7588193972189849870">"Εγκατάσταση"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Άγνωστο"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Σφάλμα"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Δεν ανακτήθηκε"</string>
</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index ff83b1b..eed1f80 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Downloading"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Installing"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Unknown"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Error"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Not restored"</string>
</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index ff83b1b..eed1f80 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Downloading"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Installing"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Unknown"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Error"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Not restored"</string>
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 7f5f06c..b325c35 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Descargando"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Instalando"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Desconocido"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Error"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"No restaurado"</string>
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index da36650..3efdf9b 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Descargando"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Instalando"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Desconocido"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Error"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"No restaurado"</string>
</resources>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 185ddea..73e4779 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Allalaadimine"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Installimine"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Teadmata"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Viga"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Ei taastatud"</string>
</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index ba2d222..d5e271b 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"در حال دانلود"</string>
<string name="package_state_installing" msgid="7588193972189849870">"در حال نصب"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"نامشخص"</string>
- <string name="package_state_error" msgid="6858560020210815018">"خطا"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"بازیابی نشد"</string>
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 57a3bb5..c6ffdf6 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Ladataan"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Asennetaan"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Tuntematon"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Virhe"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Ei palautettu"</string>
</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index cd7d6c0..0c71823 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Téléchargement..."</string>
<string name="package_state_installing" msgid="7588193972189849870">"Installation…"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Inconnu"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Erreur"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Non restauré"</string>
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index f228628..41ea546 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Téléchargement…"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Installation…"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Inconnu"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Erreur"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Non restauré"</string>
</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index c79125a..d5e4074 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"डाउनलोड हो रहा है"</string>
<string name="package_state_installing" msgid="7588193972189849870">"इंस्टॉल हो रहा है"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"अज्ञात"</string>
- <string name="package_state_error" msgid="6858560020210815018">"त्रुटि"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"पुन:स्थापित नहीं हुआ"</string>
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 59ad94c..8116ba4 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Preuzimanje"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Instaliranje"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Nepoznato"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Pogreška"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Nije vraćeno"</string>
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index b9ffbb5..59fc6e1 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -108,8 +108,8 @@
<string name="wallpaper_button_text" msgid="8404103075899945851">"Háttérképek"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Beállítások"</string>
<string name="package_state_enqueued" msgid="6227252464303085641">"Várakozik"</string>
- <string name="package_state_downloading" msgid="4088770468458724721">"Letöltés"</string>
- <string name="package_state_installing" msgid="7588193972189849870">"Telepítése"</string>
+ <string name="package_state_downloading" msgid="4088770468458724721">"Letöltés alatt"</string>
+ <string name="package_state_installing" msgid="7588193972189849870">"Települ"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Ismeretlen"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Hiba"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Nincs visszaállítva"</string>
</resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 23a50c6..d02d48e 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Ներբեռնվում է"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Տեղադրվում է"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Անհայտ է"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Սխալ կա"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Չի վերականգնվել"</string>
</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index eb3d287..ba85886 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Mengunduh"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Memasang"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Tidak dikenal"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Kesalahan"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Tak dipulihkan"</string>
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index c71a14f..0d3bcc4 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Download..."</string>
<string name="package_state_installing" msgid="7588193972189849870">"Installazione..."</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Sconosciuto"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Errore"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Non ripristinato"</string>
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 3a79a1f..cdfaf04 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"מוריד"</string>
<string name="package_state_installing" msgid="7588193972189849870">"מתקין"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"לא ידוע"</string>
- <string name="package_state_error" msgid="6858560020210815018">"שגיאה"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"לא שוחזרה"</string>
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index d10089f..e3ec47d 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"ダウンロード中"</string>
<string name="package_state_installing" msgid="7588193972189849870">"インストール中"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"不明"</string>
- <string name="package_state_error" msgid="6858560020210815018">"エラー"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"復元失敗"</string>
</resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 74d1d45..de701ca 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -109,7 +109,7 @@
<string name="settings_button_text" msgid="8119458837558863227">"პარამეტრები"</string>
<string name="package_state_enqueued" msgid="6227252464303085641">"მოცდა..."</string>
<string name="package_state_downloading" msgid="4088770468458724721">"ჩამოტვირთვა..."</string>
- <string name="package_state_installing" msgid="7588193972189849870">"ინსტალაცია,,,"</string>
+ <string name="package_state_installing" msgid="7588193972189849870">"ინსტალაცია..."</string>
<string name="package_state_unknown" msgid="7592128424511031410">"უცნობი"</string>
- <string name="package_state_error" msgid="6858560020210815018">"შეცდომა"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"არ აღდგა"</string>
</resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index d397cff..a5b53be 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"ទាញយក"</string>
<string name="package_state_installing" msgid="7588193972189849870">"ដំឡើង"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"មិនស្គាល់"</string>
- <string name="package_state_error" msgid="6858560020210815018">"កំហុស"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"មិនបានស្តារ"</string>
</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 02dd6b1..f8a06c7 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"다운로드 중"</string>
<string name="package_state_installing" msgid="7588193972189849870">"설치 중"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"알 수 없음"</string>
- <string name="package_state_error" msgid="6858560020210815018">"오류"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"복원되지 않음"</string>
</resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index ec7316a..fd8c2c4 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"ກຳລັງດາວໂຫລດ"</string>
<string name="package_state_installing" msgid="7588193972189849870">"ກຳລັງຕິດຕັ້ງ"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"ບໍ່ຮູ້ຈັກ"</string>
- <string name="package_state_error" msgid="6858560020210815018">"ຜິດພາດ"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"ບໍ່ໄດ້ກູ້ຂໍ້ມູນມາເທື່ອ"</string>
</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 631508d..471201d 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Atsisiunčiama"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Diegiama"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Nežinoma"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Klaida"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Neatkurta"</string>
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 0ea54a4..6fb7d60 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Lejupielādē"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Instalē"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Nezināma"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Kļūda"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Nav atjaunota"</string>
</resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index d783199..a8ad568 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Татаж авч байна"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Суулгаж байна"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Тодорхойгүй"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Алдаа"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Сэргээгээгүй"</string>
</resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index a659e10..4c4b95f 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Memuat turun"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Memasang"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Tidak diketahui"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Ralat"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Tak dipulihkan"</string>
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index e88ff22..34cc488 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Laster ned …"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Installerer …"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Ukjent"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Feil"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Ikke gjenoppr."</string>
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index b2bb5e9..7bd3025 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Downloaden"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Installeren"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Onbekend"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Fout"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Niet hersteld"</string>
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index c408a32..07d7465 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Pobieranie"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Instalowanie"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Brak informacji"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Błąd"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Nie przywrócono"</string>
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 7fdd23e..0717c52 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"A transferir "</string>
<string name="package_state_installing" msgid="7588193972189849870">"A instalar"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Desconhecido"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Erro"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Não restaurado"</string>
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 156ad2a..e3f60ae 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Transferindo"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Instalando"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Desconhecido"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Erro"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Não restaurado"</string>
</resources>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 68d6dbf..be35c6b 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -200,6 +200,6 @@
<skip />
<!-- no translation found for package_state_unknown (7592128424511031410) -->
<skip />
- <!-- no translation found for package_state_error (6858560020210815018) -->
+ <!-- no translation found for package_state_error (7672093962724223588) -->
<skip />
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index ac6e6da..48fa11e 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -109,7 +109,7 @@
<string name="settings_button_text" msgid="8119458837558863227">"Setări"</string>
<string name="package_state_enqueued" msgid="6227252464303085641">"În așteptare"</string>
<string name="package_state_downloading" msgid="4088770468458724721">"Se descarcă"</string>
- <string name="package_state_installing" msgid="7588193972189849870">"În curs de instalare"</string>
+ <string name="package_state_installing" msgid="7588193972189849870">"Se instalează"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Necunoscut"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Eroare"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Nerestabilit"</string>
</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 2575305..8303350 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Скачивается"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Устанавливается"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Неизвестно"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Сбой"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Не восстановлен"</string>
</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 0e47c5d..b274926 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Sťahovanie"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Inštalácia"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Neznáme"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Chyba"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Nebolo obnovené"</string>
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 634c33f..62d90bb 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -108,8 +108,8 @@
<string name="wallpaper_button_text" msgid="8404103075899945851">"Ozadja"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Nastavitve"</string>
<string name="package_state_enqueued" msgid="6227252464303085641">"Čakanje"</string>
- <string name="package_state_downloading" msgid="4088770468458724721">"Prenos"</string>
+ <string name="package_state_downloading" msgid="4088770468458724721">"Prenašanje"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Nameščanje"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Neznano"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Napaka"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Ni obnovljen"</string>
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index ce4e749..9b30913 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Преузима се"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Инсталира се"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Непознато"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Грешка"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Није враћено"</string>
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index b154a3a..0469a8a 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Hämtas"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Installerar"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Okänt"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Fel"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Inte återställt"</string>
</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 8dfcff7..12f2428 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -113,5 +113,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Inapakua"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Inasakinisha"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Yasiyojulikana"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Hitilafu"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Haijarejeshwa"</string>
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index a79afaf..1c55e77 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"กำลังดาวน์โหลด"</string>
<string name="package_state_installing" msgid="7588193972189849870">"กำลังติดตั้ง"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"ไม่รู้จัก"</string>
- <string name="package_state_error" msgid="6858560020210815018">"ข้อผิดพลาด"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"ไม่ได้คืนค่า"</string>
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 77173bb..d30fb11 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Nagda-download"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Nag-i-install"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Hindi kilala"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Error"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Hindi naibalik"</string>
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index d65a5d0..bdc97df 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"İndiriliyor"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Yükleniyor"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Bilinmiyor"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Hata"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Geri yüklenmedi"</string>
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index acf8e27..94df4f3 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Завантаження"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Встановлення"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Невідомо"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Помилка"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Не відновлено"</string>
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 7797651..434b556 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Đang tải xuống"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Đang cài đặt"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Không xác định"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Lỗi"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Không được khôi phục"</string>
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index a4c80cc..a771f47 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"正在下载"</string>
<string name="package_state_installing" msgid="7588193972189849870">"正在安装"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"未知"</string>
- <string name="package_state_error" msgid="6858560020210815018">"错误"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"无法还原"</string>
</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 93e74cf..ed19b44 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"下載中"</string>
<string name="package_state_installing" msgid="7588193972189849870">"安裝中"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"不明"</string>
- <string name="package_state_error" msgid="6858560020210815018">"錯誤"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"無法還原"</string>
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 5764bb7..2449f60 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"下載中…"</string>
<string name="package_state_installing" msgid="7588193972189849870">"安裝中"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"不明"</string>
- <string name="package_state_error" msgid="6858560020210815018">"發生錯誤"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"無法還原"</string>
</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 7401bfb..209816e 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -111,5 +111,5 @@
<string name="package_state_downloading" msgid="4088770468458724721">"Iyalanda"</string>
<string name="package_state_installing" msgid="7588193972189849870">"Iyafaka"</string>
<string name="package_state_unknown" msgid="7592128424511031410">"Akwaziwa"</string>
- <string name="package_state_error" msgid="6858560020210815018">"Iphutha"</string>
+ <string name="package_state_error" msgid="7672093962724223588">"Ayibuyiselwe"</string>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b963edd..ad3a1c4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -276,5 +276,5 @@
<!-- Label on an icon that references an uninstalled package, for which we have no information about when it might be installed. [CHAR_LIMIT=15] -->
<string name="package_state_unknown">Unknown</string>
<!-- Label on an icon that references an uninstalled package, for which restore from market has failed. [CHAR_LIMIT=15] -->
- <string name="package_state_error">Error</string>
+ <string name="package_state_error">Not restored</string>
</resources>
diff --git a/src/com/android/launcher3/DragLayer.java b/src/com/android/launcher3/DragLayer.java
index 862ceca..c54db01 100644
--- a/src/com/android/launcher3/DragLayer.java
+++ b/src/com/android/launcher3/DragLayer.java
@@ -73,7 +73,9 @@
private final Rect mInsets = new Rect();
- private int mDragViewIndex;
+ private View mOverlayView;
+ private int mTopViewIndex;
+ private int mChildCountOnLastUpdate = -1;
/**
* Used to create a new DragLayer from XML.
@@ -120,6 +122,20 @@
setInsets(child, mInsets, new Rect());
}
+ public void showOverlayView(View overlayView) {
+ LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
+ mOverlayView = overlayView;
+ addView(overlayView, lp);
+
+ // ensure that the overlay view stays on top. we can't use drawing order for this
+ // because in API level 16 touch dispatch doesn't respect drawing order.
+ mOverlayView.bringToFront();
+ }
+
+ public void dismissOverlayView() {
+ removeView(mOverlayView);
+ }
+
private void setInsets(View child, Rect newInsets, Rect oldInsets) {
final FrameLayout.LayoutParams flp = (FrameLayout.LayoutParams) child.getLayoutParams();
if (child instanceof Insettable) {
@@ -762,6 +778,11 @@
@Override
public void onChildViewAdded(View parent, View child) {
+ if (mOverlayView != null) {
+ // ensure that the overlay view stays on top. we can't use drawing order for this
+ // because in API level 16 touch dispatch doesn't respect drawing order.
+ mOverlayView.bringToFront();
+ }
updateChildIndices();
}
@@ -770,27 +791,51 @@
updateChildIndices();
}
+ @Override
+ public void bringChildToFront(View child) {
+ super.bringChildToFront(child);
+ if (child != mOverlayView && mOverlayView != null) {
+ // ensure that the overlay view stays on top. we can't use drawing order for this
+ // because in API level 16 touch dispatch doesn't respect drawing order.
+ mOverlayView.bringToFront();
+ }
+ updateChildIndices();
+ }
+
private void updateChildIndices() {
- mDragViewIndex = -1;
+ mTopViewIndex = -1;
int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
if (getChildAt(i) instanceof DragView) {
- mDragViewIndex = i;
+ mTopViewIndex = i;
}
}
+ mChildCountOnLastUpdate = childCount;
}
@Override
protected int getChildDrawingOrder(int childCount, int i) {
- if (mDragViewIndex == -1) {
+ if (mChildCountOnLastUpdate != childCount) {
+ // between platform versions 17 and 18, behavior for onChildViewRemoved / Added changed.
+ // Pre-18, the child was not added / removed by the time of those callbacks. We need to
+ // force update our representation of things here to avoid crashing on pre-18 devices
+ // in certain instances.
+ updateChildIndices();
+ }
+
+ // i represents the current draw iteration
+ if (mTopViewIndex == -1) {
+ // in general we do nothing
return i;
- } else if (i == mDragViewIndex) {
- return getChildCount()-1;
- } else if (i < mDragViewIndex) {
+ } else if (i == childCount - 1) {
+ // if we have a top index, we return it when drawing last item (highest z-order)
+ return mTopViewIndex;
+ } else if (i < mTopViewIndex) {
return i;
} else {
- // i > mDragViewIndex
- return i-1;
+ // for indexes greater than the top index, we fetch one item above to shift for the
+ // displacement of the top index
+ return i + 1;
}
}
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 05be4ae..ff5b1eb 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -191,6 +191,7 @@
private static final String RUNTIME_STATE_VIEW_IDS = "launcher.view_ids";
+ static final String INTRO_SCREEN_DISMISSED = "launcher.intro_screen_dismissed";
static final String FIRST_RUN_ACTIVITY_DISPLAYED = "launcher.first_run_activity_displayed";
private static final String TOOLBAR_ICON_METADATA_NAME = "com.android.launcher.toolbar_icon";
@@ -213,6 +214,7 @@
public static final int EXIT_SPRINGLOADED_MODE_SHORT_TIMEOUT = 300;
public static final int EXIT_SPRINGLOADED_MODE_SHORT_TIMEOUT_FOLDER_CLOSE = 400;
private static final int ON_ACTIVITY_RESULT_ANIMATION_DELAY = 500;
+ private static final int ACTIVITY_START_DELAY = 1000;
private static final Object sLock = new Object();
private static int sScreen = DEFAULT_SCREEN;
@@ -481,10 +483,15 @@
// On large interfaces, we want the screen to auto-rotate based on the current orientation
unlockScreenOrientation(true);
+ if (shouldShowIntroScreen()) {
+ showIntroScreen();
+ } else {
+ showFirstRunActivity();
+ }
+
// The two first run cling paths are mutually exclusive, if the launcher is preinstalled
// on the device, then we always show the first run cling experience (or if there is no
// launcher2). Otherwise, we prompt the user upon started for migration
- showFirstRunActivity();
if (mLauncherClings.shouldShowFirstRunOrMigrationClings()) {
if (mModel.canMigrateFromOldLauncherDb(this)) {
mLauncherClings.showMigrationCling();
@@ -518,21 +525,6 @@
}
/**
- * To be overridden by subclasses to indicate that there is an activity to launch
- * before showing the standard launcher experience.
- */
- protected boolean hasFirstRunActivity() {
- return false;
- }
-
- /**
- * To be overridden by subclasses to launch any first run activity
- */
- protected Intent getFirstRunActivity() {
- return null;
- }
-
- /**
* Invoked by subclasses to signal a change to the {@link #addCustomContentToLeft} value to
* ensure the custom content page is added or removed if necessary.
*/
@@ -3990,7 +3982,15 @@
if (item.container == LauncherSettings.Favorites.CONTAINER_DESKTOP) {
CellLayout cl = mWorkspace.getScreenWithId(item.screenId);
if (cl != null && cl.isOccupied(item.cellX, item.cellY)) {
- throw new RuntimeException("OCCUPIED");
+ View v = cl.getChildAt(item.cellX, item.cellY);
+ Object tag = v.getTag();
+ String desc = "Collision while binding workspace item: " + item
+ + ". Collides with " + tag;
+ if (LauncherAppState.isDogfoodBuild()) {
+ throw (new RuntimeException(desc));
+ } else {
+ Log.d(TAG, desc);
+ }
}
}
@@ -4441,20 +4441,42 @@
mLauncherClings.dismissFolderCling(v);
}
+
+ /**
+ * To be overridden by subclasses to indicate that there is an activity to launch
+ * before showing the standard launcher experience.
+ */
+ protected boolean hasFirstRunActivity() {
+ return false;
+ }
+
+ /**
+ * To be overridden by subclasses to launch any first run activity
+ */
+ protected Intent getFirstRunActivity() {
+ return null;
+ }
+
private boolean shouldRunFirstRunActivity() {
return !ActivityManager.isRunningInTestHarness() &&
!mSharedPrefs.getBoolean(FIRST_RUN_ACTIVITY_DISPLAYED, false);
}
- public void showFirstRunActivity() {
+ protected boolean hasRunFirstRunActivity() {
+ return mSharedPrefs.getBoolean(FIRST_RUN_ACTIVITY_DISPLAYED, false);
+ }
+
+ public boolean showFirstRunActivity() {
if (shouldRunFirstRunActivity() &&
hasFirstRunActivity()) {
Intent firstRunIntent = getFirstRunActivity();
if (firstRunIntent != null) {
startActivity(firstRunIntent);
markFirstRunActivityShown();
+ return true;
}
}
+ return false;
}
private void markFirstRunActivityShown() {
@@ -4463,6 +4485,61 @@
editor.apply();
}
+ /**
+ * To be overridden by subclasses to indicate that there is an in-activity full-screen intro
+ * screen that must be displayed and dismissed.
+ */
+ protected boolean hasDismissableIntroScreen() {
+ return false;
+ }
+
+ /**
+ * Full screen intro screen to be shown and dismissed before the launcher can be used.
+ */
+ protected View getIntroScreen() {
+ return null;
+ }
+
+ /**
+ * To be overriden by subclasses to indicate whether the in-activity intro screen has been
+ * dismissed. This method is ignored if #hasDismissableIntroScreen returns false.
+ */
+ private boolean shouldShowIntroScreen() {
+ return hasDismissableIntroScreen() &&
+ !mSharedPrefs.getBoolean(INTRO_SCREEN_DISMISSED, false);
+ }
+
+ protected void showIntroScreen() {
+ View introScreen = getIntroScreen();
+ changeWallpaperVisiblity(false);
+ if (introScreen != null) {
+ mDragLayer.showOverlayView(introScreen);
+ }
+ }
+
+ public void dismissIntroScreen() {
+ markIntroScreenDismissed();
+ if (showFirstRunActivity()) {
+ // We delay hiding the intro view until the first run activity is showing. This
+ // avoids a blip.
+ mWorkspace.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ mDragLayer.dismissOverlayView();
+ }
+ }, ACTIVITY_START_DELAY);
+ } else {
+ mDragLayer.dismissOverlayView();
+ }
+ changeWallpaperVisiblity(true);
+ }
+
+ private void markIntroScreenDismissed() {
+ SharedPreferences.Editor editor = mSharedPrefs.edit();
+ editor.putBoolean(INTRO_SCREEN_DISMISSED, true);
+ editor.apply();
+ }
+
void showWorkspaceSearchAndHotseat() {
if (mWorkspace != null) mWorkspace.setAlpha(1f);
if (mHotseat != null) mHotseat.setAlpha(1f);
@@ -4477,7 +4554,6 @@
if (mSearchDropTargetBar != null) mSearchDropTargetBar.hideSearchBar(false);
}
-
public ItemInfo createAppDragInfo(Intent appLaunchIntent) {
ResolveInfo ri = getPackageManager().resolveActivity(appLaunchIntent, 0);
if (ri == null) {
@@ -4491,10 +4567,14 @@
return new ShortcutInfo(shortcutIntent, caption, icon);
}
+ protected void moveWorkspaceToDefaultScreen() {
+ mWorkspace.moveToDefaultScreen(false);
+ }
+
public void startDrag(View dragView, ItemInfo dragInfo, DragSource source) {
dragView.setTag(dragInfo);
- mWorkspace.onDragStartedWithItem(dragView);
- mWorkspace.beginDragShared(dragView, source);
+ mWorkspace.onExternalDragStartedWithItem(dragView);
+ mWorkspace.beginExternalDragShared(dragView, source);
}
@Override
diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java
index ba10f51..5ddafea 100644
--- a/src/com/android/launcher3/LauncherAppState.java
+++ b/src/com/android/launcher3/LauncherAppState.java
@@ -30,7 +30,7 @@
private static final String TAG = "LauncherAppState";
private static final String SHARED_PREFERENCES_KEY = "com.android.launcher3.prefs";
- private static final boolean DEBUG = true; // TODO STOPSHIP: set this to false
+ private static final boolean DEBUG = false;
private final AppFilter mAppFilter;
private final BuildInfo mBuildInfo;
diff --git a/src/com/android/launcher3/LauncherBackupAgentHelper.java b/src/com/android/launcher3/LauncherBackupAgentHelper.java
index 7dd8cde..de6aedd 100644
--- a/src/com/android/launcher3/LauncherBackupAgentHelper.java
+++ b/src/com/android/launcher3/LauncherBackupAgentHelper.java
@@ -61,7 +61,7 @@
@Override
public void onCreate() {
boolean restoreEnabled = 0 != Settings.Secure.getInt(
- getContentResolver(), SETTING_RESTORE_ENABLED, 1);
+ getContentResolver(), SETTING_RESTORE_ENABLED, 0);
if (VERBOSE) Log.v(TAG, "restore is " + (restoreEnabled ? "enabled" : "disabled"));
addHelper(LauncherBackupHelper.LAUNCHER_PREFS_PREFIX,
diff --git a/src/com/android/launcher3/LauncherClings.java b/src/com/android/launcher3/LauncherClings.java
index 952edfd..97138ee 100644
--- a/src/com/android/launcher3/LauncherClings.java
+++ b/src/com/android/launcher3/LauncherClings.java
@@ -21,8 +21,11 @@
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.app.ActivityManager;
+import android.content.ComponentName;
import android.content.Context;
import android.content.SharedPreferences;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.UserManager;
@@ -262,12 +265,21 @@
Cling c = initCling(R.id.workspace_cling, 0, false, true);
c.updateWorkspaceBubblePosition();
- // Set the focused hotseat app if there is one
- c.setFocusedHotseatApp(mLauncher.getFirstRunFocusedHotseatAppDrawableId(),
- mLauncher.getFirstRunFocusedHotseatAppRank(),
- mLauncher.getFirstRunFocusedHotseatAppComponentName(),
- mLauncher.getFirstRunFocusedHotseatAppBubbleTitle(),
- mLauncher.getFirstRunFocusedHotseatAppBubbleDescription());
+ try {
+ // We only enable the focused hotseat app if we are preinstalled
+ PackageManager pm = mLauncher.getPackageManager();
+ ApplicationInfo ai = pm.getApplicationInfo(mLauncher.getPackageName(), 0);
+ if ((ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
+ // Set the focused hotseat app
+ c.setFocusedHotseatApp(mLauncher.getFirstRunFocusedHotseatAppDrawableId(),
+ mLauncher.getFirstRunFocusedHotseatAppRank(),
+ mLauncher.getFirstRunFocusedHotseatAppComponentName(),
+ mLauncher.getFirstRunFocusedHotseatAppBubbleTitle(),
+ mLauncher.getFirstRunFocusedHotseatAppBubbleDescription());
+ }
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
} else {
removeCling(R.id.workspace_cling);
}
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 937f02b..d8645aa 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -971,6 +971,7 @@
values.put(LauncherSettings.Favorites._ID, item.id);
item.updateValuesWithCoordinates(values, item.cellX, item.cellY);
+ final StackTraceElement[] stackTrace = new Throwable().getStackTrace();
Runnable r = new Runnable() {
public void run() {
cr.insert(notify ? LauncherSettings.Favorites.CONTENT_URI :
@@ -978,7 +979,7 @@
// Lock on mBgLock *after* the db operation
synchronized (sBgLock) {
- checkItemInfoLocked(item.id, item, null);
+ checkItemInfoLocked(item.id, item, stackTrace);
sBgItemsIdMap.put(item.id, item);
switch (item.itemType) {
case LauncherSettings.Favorites.ITEM_TYPE_FOLDER:
diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java
index 734db65..0e559a8 100644
--- a/src/com/android/launcher3/LauncherProvider.java
+++ b/src/com/android/launcher3/LauncherProvider.java
@@ -74,7 +74,7 @@
private static final String DATABASE_NAME = "launcher.db";
- private static final int DATABASE_VERSION = 17;
+ private static final int DATABASE_VERSION = 18;
static final String OLD_AUTHORITY = "com.android.launcher2.settings";
static final String AUTHORITY = ProviderConfig.AUTHORITY;
@@ -492,6 +492,13 @@
");");
}
+ private void removeOrphanedItems(SQLiteDatabase db) {
+ db.execSQL("DELETE FROM " + TABLE_FAVORITES + " WHERE " +
+ LauncherSettings.Favorites.SCREEN + " NOT IN (SELECT " +
+ LauncherSettings.WorkspaceScreens._ID + " FROM " + TABLE_WORKSPACE_SCREENS +
+ ")");
+ }
+
private void setFlagJustLoadedOldDb() {
String spKey = LauncherAppState.getSharedPreferencesKey();
SharedPreferences sp = mContext.getSharedPreferences(spKey, Context.MODE_PRIVATE);
@@ -792,6 +799,17 @@
version = 17;
}
+ if (version < 18) {
+ // Due to a data loss bug, some users may have items associated with screen ids
+ // which no longer exist. Since this can cause other problems, and since the user
+ // will never see these items anyway, we use database upgrade as an opportunity to
+ // clean things up.
+
+ // TODO: this needs to be fixed, currently causes data loss.
+ //removeOrphanedItems(db);
+ version = 18;
+ }
+
if (version != DATABASE_VERSION) {
Log.w(TAG, "Destroying all old data.");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_FAVORITES);
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 1732e37..9800cf3 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -37,6 +37,7 @@
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
+import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.PointF;
import android.graphics.Rect;
@@ -59,7 +60,6 @@
import android.view.animation.DecelerateInterpolator;
import android.view.animation.Interpolator;
import android.widget.TextView;
-
import com.android.launcher3.FolderIcon.FolderRingAnimator;
import com.android.launcher3.Launcher.CustomContentCallbacks;
import com.android.launcher3.LauncherSettings.Favorites;
@@ -696,6 +696,12 @@
// Log to disk
Launcher.addDumpLog(TAG, "11683562 - convertFinalScreenToEmptyScreenIfNecessary()", true);
+ if (mLauncher.isWorkspaceLoading()) {
+ // Invalid and dangerous operation if workspace is loading
+ Launcher.addDumpLog(TAG, " - workspace loading, skip", true);
+ return;
+ }
+
if (hasExtraEmptyScreen() || mScreenOrder.size() == 0) return;
long finalScreenId = mScreenOrder.get(mScreenOrder.size() - 1);
@@ -726,6 +732,12 @@
final int delay, final boolean stripEmptyScreens) {
// Log to disk
Launcher.addDumpLog(TAG, "11683562 - removeExtraEmptyScreen()", true);
+ if (mLauncher.isWorkspaceLoading()) {
+ // Don't strip empty screens if the workspace is still loading
+ Launcher.addDumpLog(TAG, " - workspace loading, skip", true);
+ return;
+ }
+
if (delay > 0) {
postDelayed(new Runnable() {
@Override
@@ -810,6 +822,11 @@
public long commitExtraEmptyScreen() {
// Log to disk
Launcher.addDumpLog(TAG, "11683562 - commitExtraEmptyScreen()", true);
+ if (mLauncher.isWorkspaceLoading()) {
+ // Invalid and dangerous operation if workspace is loading
+ Launcher.addDumpLog(TAG, " - workspace loading, skip", true);
+ return -1;
+ }
int index = getPageIndexForScreenId(EXTRA_EMPTY_SCREEN_ID);
CellLayout cl = mWorkspaceScreens.get(EXTRA_EMPTY_SCREEN_ID);
@@ -867,7 +884,8 @@
Launcher.addDumpLog(TAG, "11683562 - stripEmptyScreens()", true);
if (mLauncher.isWorkspaceLoading()) {
- // Don't strip empty screens if the workspace is still loading
+ // Don't strip empty screens if the workspace is still loading.
+ // This is dangerous and can result in data loss.
Launcher.addDumpLog(TAG, " - workspace loading, skip", true);
return;
}
@@ -1974,6 +1992,45 @@
mDragOutline = createDragOutline(v, canvas, DRAG_BITMAP_PADDING);
}
+ private Rect getDrawableBounds(Drawable d) {
+ Rect bounds = new Rect();
+ d.copyBounds(bounds);
+ if (bounds.width() == 0 || bounds.height() == 0) {
+ bounds.set(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
+ }
+ return bounds;
+ }
+
+ public void onExternalDragStartedWithItem(View v) {
+ final Canvas canvas = new Canvas();
+
+ // Compose a drag bitmap with the view scaled to the icon size
+ LauncherAppState app = LauncherAppState.getInstance();
+ DeviceProfile grid = app.getDynamicGrid().getDeviceProfile();
+ int iconSize = grid.iconSizePx;
+ int bmpWidth = v.getMeasuredWidth();
+ int bmpHeight = v.getMeasuredHeight();
+
+ // If this is a text view, use its drawable instead
+ if (v instanceof TextView) {
+ TextView tv = (TextView) v;
+ Drawable d = tv.getCompoundDrawables()[1];
+ Rect bounds = getDrawableBounds(d);
+ bmpWidth = bounds.width();
+ bmpHeight = bounds.height();
+ }
+
+ // Compose the bitmap to create the icon from
+ Bitmap b = Bitmap.createBitmap(bmpWidth, bmpHeight,
+ Bitmap.Config.ARGB_8888);
+ Canvas c = new Canvas(b);
+ drawDragView(v, c, 0, true);
+ c.setBitmap(null);
+
+ // The outline is used to visualize where the item will land if dropped
+ mDragOutline = createDragOutline(b, canvas, DRAG_BITMAP_PADDING, iconSize, iconSize, true);
+ }
+
public void onDragStartedWithItem(PendingAddItemInfo info, Bitmap b, boolean clipAlpha) {
final Canvas canvas = new Canvas();
@@ -2022,6 +2079,11 @@
protected void onEndReordering() {
super.onEndReordering();
+ if (mLauncher.isWorkspaceLoading()) {
+ // Invalid and dangerous operation if workspace is loading
+ return;
+ }
+
hideOutlines();
mScreenOrder.clear();
int count = getChildCount();
@@ -2475,7 +2537,8 @@
destCanvas.save();
if (v instanceof TextView && pruneToDrawable) {
Drawable d = ((TextView) v).getCompoundDrawables()[1];
- clipRect.set(0, 0, d.getIntrinsicWidth() + padding, d.getIntrinsicHeight() + padding);
+ Rect bounds = getDrawableBounds(d);
+ clipRect.set(0, 0, bounds.width() + padding, bounds.height() + padding);
destCanvas.translate(padding / 2, padding / 2);
d.draw(destCanvas);
} else {
@@ -2516,8 +2579,9 @@
if (v instanceof TextView) {
Drawable d = ((TextView) v).getCompoundDrawables()[1];
- b = Bitmap.createBitmap(d.getIntrinsicWidth() + padding,
- d.getIntrinsicHeight() + padding, Bitmap.Config.ARGB_8888);
+ Rect bounds = getDrawableBounds(d);
+ b = Bitmap.createBitmap(bounds.width() + padding,
+ bounds.height() + padding, Bitmap.Config.ARGB_8888);
} else {
b = Bitmap.createBitmap(
v.getWidth() + padding, v.getHeight() + padding, Bitmap.Config.ARGB_8888);
@@ -2606,10 +2670,8 @@
final int bmpHeight = b.getHeight();
float scale = mLauncher.getDragLayer().getLocationInDragLayer(child, mTempXY);
- int dragLayerX =
- Math.round(mTempXY[0] - (bmpWidth - scale * child.getWidth()) / 2);
- int dragLayerY =
- Math.round(mTempXY[1] - (bmpHeight - scale * bmpHeight) / 2
+ int dragLayerX = Math.round(mTempXY[0] - (bmpWidth - scale * child.getWidth()) / 2);
+ int dragLayerY = Math.round(mTempXY[1] - (bmpHeight - scale * bmpHeight) / 2
- DRAG_BITMAP_PADDING / 2);
LauncherAppState app = LauncherAppState.getInstance();
@@ -2659,6 +2721,52 @@
b.recycle();
}
+ public void beginExternalDragShared(View child, DragSource source) {
+ LauncherAppState app = LauncherAppState.getInstance();
+ DeviceProfile grid = app.getDynamicGrid().getDeviceProfile();
+ int iconSize = grid.iconSizePx;
+
+ // Notify launcher of drag start
+ mLauncher.onDragStarted(child);
+
+ // Compose a new drag bitmap that is of the icon size
+ final Bitmap tmpB = createDragBitmap(child, new Canvas(), DRAG_BITMAP_PADDING);
+ Bitmap b = Bitmap.createBitmap(iconSize, iconSize, Bitmap.Config.ARGB_8888);
+ Paint p = new Paint();
+ p.setFilterBitmap(true);
+ Canvas c = new Canvas(b);
+ c.drawBitmap(tmpB, new Rect(0, 0, tmpB.getWidth(), tmpB.getHeight()),
+ new Rect(0, 0, iconSize, iconSize), p);
+ c.setBitmap(null);
+
+ // Find the child's location on the screen
+ int bmpWidth = tmpB.getWidth();
+ float iconScale = (float) bmpWidth / iconSize;
+ float scale = mLauncher.getDragLayer().getLocationInDragLayer(child, mTempXY) * iconScale;
+ int dragLayerX = Math.round(mTempXY[0] - (bmpWidth - scale * child.getWidth()) / 2);
+ int dragLayerY = Math.round(mTempXY[1]);
+
+ // Note: The drag region is used to calculate drag layer offsets, but the
+ // dragVisualizeOffset in addition to the dragRect (the size) to position the outline.
+ Point dragVisualizeOffset = new Point(-DRAG_BITMAP_PADDING / 2, DRAG_BITMAP_PADDING / 2);
+ Rect dragRect = new Rect(0, 0, iconSize, iconSize);
+
+ if (child.getTag() == null || !(child.getTag() instanceof ItemInfo)) {
+ String msg = "Drag started with a view that has no tag set. This "
+ + "will cause a crash (issue 11627249) down the line. "
+ + "View: " + child + " tag: " + child.getTag();
+ throw new IllegalStateException(msg);
+ }
+
+ // Start the drag
+ DragView dv = mDragController.startDrag(b, dragLayerX, dragLayerY, source, child.getTag(),
+ DragController.DRAG_ACTION_MOVE, dragVisualizeOffset, dragRect, scale);
+ dv.setIntrinsicIconScaleFactor(source.getIntrinsicIconScaleFactor());
+
+ // Recycle temporary bitmaps
+ tmpB.recycle();
+ }
+
void addApplicationShortcut(ShortcutInfo info, CellLayout target, long container, long screenId,
int cellX, int cellY, boolean insertAtFirst, int intersectX, int intersectY) {
View view = mLauncher.createShortcut(R.layout.application, target, (ShortcutInfo) info);