Merge branch 'master' into honeycomb-release
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
launcher:wallpaperCellSpanX="4"
|
||||
launcher:widgetCellCountX="16"
|
||||
launcher:cellCountX="8"
|
||||
launcher:cellCountY="3"
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
launcher:wallpaperCellSpanX="4"
|
||||
launcher:widgetCellCountX="10"
|
||||
launcher:cellCountX="5"
|
||||
launcher:cellCountY="3"
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2010 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="365dp"
|
||||
android:paddingLeft="12.5dp"
|
||||
android:paddingRight="12.5dp"
|
||||
android:paddingBottom="50dp"
|
||||
android:gravity="top"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!-- The preview image for the wallpaper. -->
|
||||
<ImageView
|
||||
android:id="@+id/wallpaper_preview"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.0"
|
||||
android:scaleType="fitStart" />
|
||||
|
||||
<!-- The divider image. -->
|
||||
<ImageView
|
||||
android:id="@+id/divider"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:src="@drawable/widget_divider" />
|
||||
|
||||
<!-- The name of the wallpaper -->
|
||||
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/wallpaper_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="left"
|
||||
|
||||
android:textColor="#FFFFFFFF"
|
||||
android:textSize="14sp"
|
||||
android:shadowColor="#FF000000"
|
||||
android:shadowDx="0.0"
|
||||
android:shadowDy="1.0"
|
||||
android:shadowRadius="1.0"
|
||||
|
||||
android:maxLines="2"
|
||||
android:fadingEdge="horizontal" />
|
||||
</LinearLayout>
|
||||
@@ -13,7 +13,7 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<com.android.launcher2.PagedViewWidgetIcon
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
|
||||
|
||||
@@ -76,4 +76,4 @@
|
||||
android:shadowDx="0.0"
|
||||
android:shadowDy="1.0"
|
||||
android:shadowRadius="1.0" />
|
||||
</com.android.launcher2.PagedViewWidgetIcon>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Aplikace"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Hry"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Stažené"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"Nenalezeny žádné hry."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"Žádné stažené aplikace."</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Název složky"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Přejmenovat složku"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Programmer"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Spil"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Downloadet"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"Ingen spil."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"Ingen hentede programmer."</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Mappenavn"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Omdøb mappe"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Apps"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Spiele"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Heruntergeladen"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"Keine Spiele gefunden."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"Keine heruntergeladenen Apps"</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Ordnername"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Ordner umbenennen"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Εφαρμογές"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Παιχνίδια"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Η λήψη ολοκληρώθηκε"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"Δεν βρέθηκαν παιχνίδια."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"Δεν βρέθηκαν ληφθ. εφαρμ."</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Όνομα φακέλου"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Μετονομασία φακέλου"</string>
|
||||
|
||||
@@ -37,8 +37,12 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Google Apps"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Juegos"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Descargado"</string>
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"No"</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"No Google Apps"</string>
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"No se encontraron juegos."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"No se encontraron apps."</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Nombre de carpeta"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Cambiar nombre de carpeta"</string>
|
||||
<string name="rename_action" msgid="6016003384693240896">"Aceptar"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Aplicaciones"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Juegos"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Descargadas"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"No hay juegos."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"Sin aplicaciones descarg."</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Nombre de carpeta"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Cambiar nombre de carpeta"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Applications"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Jeux"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Téléchargées"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"Aucun jeu n\'a été trouvé."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"Pas d\'application téléchargée"</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Nom du dossier"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Renommer le dossier"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Applicazioni"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Giochi"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Scaricate"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"Nessun gioco trovato."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"Nessuna appl. scaricata"</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Nome cartella"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Rinomina cartella"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"アプリ"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"ゲーム"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"ダウンロード済み"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"ゲームなし"</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"ダウンロードアプリなし"</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"フォルダ名"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"フォルダ名を変更"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"애플리케이션"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"게임"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"다운로드앱"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"게임이 없습니다."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"다운로드한 애플리케이션이 없습니다."</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"폴더 이름"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"폴더 이름 바꾸기"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Programmer"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Spill"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Nedlastet"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"Finner ingen spill."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"Finner ingen nedl.prog."</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Mappenavn"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Gi nytt navn til mappe"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Toepassingen"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Games"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Gedownload"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"Geen games gevonden."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"Geen gedownl. apps gevond."</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Mapnaam"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Naam van map wijzigen"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Aplikacje"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Gry"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Pobrane"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"Nie znaleziono gier."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"Brak pobranych aplikacji."</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Nazwa folderu"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Zmień nazwę folderu"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Aplicações"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Jogos"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Transferidas"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"Sem jogos."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"Sem aplic. transferidas."</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Nome da pasta"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Mudar o nome da pasta"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Aplicativos"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Jogos"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Download concluído"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"Nenhum jogo encontrado."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"Nenhum aplic. encontrado."</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Nome da pasta"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Renomear pasta"</string>
|
||||
|
||||
@@ -51,6 +51,10 @@
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<skip />
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Num da l\'ordinatur"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Renumnar l\'ordinatur"</string>
|
||||
<string name="rename_action" msgid="6016003384693240896">"OK"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Приложения"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Игры"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Загруженные"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"Игр не найдено."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"Нет загруженных приложений."</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Название папки"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Переименовать папку"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Program"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Spel"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"Hämtade"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"Inga spel hittades."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"Inga hämtade appar."</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Mappnamn"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Byt namn på mapp"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"Uygulamalar"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"Oyunlar"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"İndirilenler"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"Oyun bulunamadı."</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"İndirilmş uyg bulunamadı."</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"Klasör adı"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"Klasörü yeniden adlandır"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"应用程序"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"游戏"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"已下载"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"未找到游戏。"</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"未找到已下载的应用程序。"</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"文件夹名称"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"重命名文件夹"</string>
|
||||
|
||||
@@ -37,9 +37,11 @@
|
||||
<string name="all_apps_tab_apps" msgid="5468972551904071712">"應用程式"</string>
|
||||
<string name="all_apps_tab_games" msgid="1855736784923494918">"遊戲"</string>
|
||||
<string name="all_apps_tab_downloaded" msgid="2300935549064726963">"下載內容"</string>
|
||||
<!-- no translation found for all_apps_no_games (5293893733372793696) -->
|
||||
<string name="all_apps_no_games" msgid="5293893733372793696">"找不到遊戲。"</string>
|
||||
<string name="all_apps_no_downloads" msgid="6145042636084482299">"找不到已下載的應用程式。"</string>
|
||||
<!-- no translation found for external_drop_widget_error (7794528430439958736) -->
|
||||
<skip />
|
||||
<!-- no translation found for all_apps_no_downloads (6145042636084482299) -->
|
||||
<!-- no translation found for external_drop_widget_pick_title (4481311720134376218) -->
|
||||
<skip />
|
||||
<string name="rename_folder_label" msgid="5646236631298452787">"資料夾名稱"</string>
|
||||
<string name="rename_folder_title" msgid="4544573104191526550">"重新命名資料夾"</string>
|
||||
|
||||
@@ -74,15 +74,6 @@
|
||||
<attr name="checkedOutlineColor" format="color" />
|
||||
</declare-styleable>
|
||||
|
||||
<!-- PagedViewWidgetIcon specific attributes. These attributes are used to
|
||||
customize a PagedViewWidgetIcon view in XML files. -->
|
||||
<declare-styleable name="PagedViewWidgetIcon">
|
||||
<!-- The checked blur color of the holographic outline -->
|
||||
<attr name="checkedBlurColor" />
|
||||
<!-- The checked outline color of the holographic outline -->
|
||||
<attr name="checkedOutlineColor" />
|
||||
</declare-styleable>
|
||||
|
||||
<!-- PagedView specific attributes. These attributes are used to customize
|
||||
a PagedView view in XML files. -->
|
||||
<declare-styleable name="PagedView">
|
||||
@@ -105,6 +96,8 @@
|
||||
<!-- CustomizePagedView specific attributes. These attributes are used to customize
|
||||
a CustomizePagedView view in XML files. -->
|
||||
<declare-styleable name="CustomizePagedView">
|
||||
<!-- The cell span of an item in the wallpapers tab -->
|
||||
<attr name="wallpaperCellSpanX" format="integer" />
|
||||
<!-- The number of horizontal cells for the widget tab -->
|
||||
<attr name="widgetCellCountX" format="integer" />
|
||||
</declare-styleable>
|
||||
|
||||
@@ -77,12 +77,18 @@ public class CustomizePagedView extends PagedView
|
||||
// The mapping between the pages and the widgets that will be laid out on them
|
||||
private ArrayList<ArrayList<AppWidgetProviderInfo>> mWidgetPages;
|
||||
|
||||
// The max dimensions for the ImageView we use for displaying the widget
|
||||
// The max dimensions for the ImageView we use for displaying a widget
|
||||
private int mMaxWidgetWidth;
|
||||
|
||||
// The max number of widget cells to take a "page" of widget
|
||||
// The max number of widget cells to take a "page" of widgets
|
||||
private int mMaxWidgetsCellHSpan;
|
||||
|
||||
// The size of the items on the wallpaper tab
|
||||
private int mWallpaperCellHSpan;
|
||||
|
||||
// The max dimensions for the ImageView we use for displaying a wallpaper
|
||||
private int mMaxWallpaperWidth;
|
||||
|
||||
// The raw sources of data for each of the different tabs of the customization page
|
||||
private List<AppWidgetProviderInfo> mWidgetList;
|
||||
private List<ResolveInfo> mShortcutList;
|
||||
@@ -112,15 +118,15 @@ public class CustomizePagedView extends PagedView
|
||||
super(context, attrs, defStyle);
|
||||
|
||||
TypedArray a;
|
||||
a = context.obtainStyledAttributes(attrs, R.styleable.CustomizePagedView,
|
||||
defStyle, 0);
|
||||
a = context.obtainStyledAttributes(attrs, R.styleable.CustomizePagedView, defStyle, 0);
|
||||
mWallpaperCellHSpan = a.getInt(R.styleable.CustomizePagedView_wallpaperCellSpanX, 4);
|
||||
mMaxWidgetsCellHSpan = a.getInt(R.styleable.CustomizePagedView_widgetCellCountX, 8);
|
||||
a.recycle();
|
||||
a = context.obtainStyledAttributes(attrs, R.styleable.PagedView, defStyle, 0);
|
||||
mCellCountX = a.getInt(R.styleable.PagedView_cellCountX, 7);
|
||||
mCellCountY = a.getInt(R.styleable.PagedView_cellCountY, 4);
|
||||
|
||||
a.recycle();
|
||||
|
||||
mCustomizationType = CustomizationType.WidgetCustomization;
|
||||
mWidgetPages = new ArrayList<ArrayList<AppWidgetProviderInfo>>();
|
||||
mWorkspaceWidgetLayout = new PagedViewCellLayout(context);
|
||||
@@ -449,21 +455,58 @@ public class CustomizePagedView extends PagedView
|
||||
/**
|
||||
* Helper function to draw a drawable to the specified canvas with the specified bounds.
|
||||
*/
|
||||
private void renderDrawableToBitmap(Drawable d, Bitmap bitmap, int l, int t, int r, int b) {
|
||||
private void renderDrawableToBitmap(Drawable d, Bitmap bitmap, int x, int y, int w, int h) {
|
||||
if (bitmap != null) mCanvas.setBitmap(bitmap);
|
||||
mCanvas.save();
|
||||
d.setBounds(l, t, r, b);
|
||||
d.setBounds(x, y, x+w, y+h);
|
||||
d.draw(mCanvas);
|
||||
mCanvas.restore();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will extract the preview image specified by the wallpaper source provider (if it
|
||||
* exists) otherwise, it will try to generate a default image preview.
|
||||
*/
|
||||
private Drawable getWallpaperPreview(ResolveInfo info) {
|
||||
// To be implemented later: resolving the up-to-date wallpaper thumbnail
|
||||
|
||||
final int minDim = mWorkspaceWidgetLayout.estimateCellWidth(1);
|
||||
final int dim = mWorkspaceWidgetLayout.estimateCellWidth(mWallpaperCellHSpan);
|
||||
Resources resources = mLauncher.getResources();
|
||||
|
||||
// Create a new bitmap to hold the widget preview
|
||||
int width = (int) (dim * sScaleFactor);
|
||||
int height = (int) (dim * sScaleFactor);
|
||||
final Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
|
||||
final Drawable background = resources.getDrawable(R.drawable.default_widget_preview);
|
||||
renderDrawableToBitmap(background, bitmap, 0, 0, width, height);
|
||||
|
||||
// Draw the icon flush left
|
||||
try {
|
||||
final IconCache iconCache =
|
||||
((LauncherApplication) mLauncher.getApplication()).getIconCache();
|
||||
Drawable icon = new FastBitmapDrawable(Utilities.createIconBitmap(
|
||||
iconCache.getFullResIcon(info, mPackageManager), mContext));
|
||||
|
||||
final int iconSize = minDim / 2;
|
||||
final int offset = iconSize / 4;
|
||||
renderDrawableToBitmap(icon, null, offset, offset, iconSize, iconSize);
|
||||
} catch (Resources.NotFoundException e) {
|
||||
// if we can't find the icon, then just don't draw it
|
||||
}
|
||||
|
||||
Drawable drawable = new FastBitmapDrawable(bitmap);
|
||||
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
|
||||
return drawable;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will extract the preview image specified by the widget developer (if it exists),
|
||||
* otherwise, it will try to generate a default image preview with the widget's package icon.
|
||||
* @return the drawable will be used and sized in the ImageView to represent the widget
|
||||
* @return the drawable that will be used and sized in the ImageView to represent the widget
|
||||
*/
|
||||
private Drawable getWidgetPreview(AppWidgetProviderInfo info) {
|
||||
PackageManager packageManager = mLauncher.getPackageManager();
|
||||
final PackageManager packageManager = mPackageManager;
|
||||
String packageName = info.provider.getPackageName();
|
||||
Drawable drawable = null;
|
||||
if (info.previewImage != 0) {
|
||||
@@ -487,9 +530,8 @@ public class CustomizePagedView extends PagedView
|
||||
final Drawable background = resources.getDrawable(R.drawable.default_widget_preview);
|
||||
renderDrawableToBitmap(background, bitmap, 0, 0, width, height);
|
||||
|
||||
// Draw the icon vertically centered, flush left
|
||||
// Draw the icon flush left
|
||||
try {
|
||||
Rect tmpRect = new Rect();
|
||||
Drawable icon = null;
|
||||
if (info.icon > 0) {
|
||||
icon = packageManager.getDrawable(packageName, info.icon, null);
|
||||
@@ -497,12 +539,10 @@ public class CustomizePagedView extends PagedView
|
||||
if (icon == null) {
|
||||
icon = resources.getDrawable(R.drawable.ic_launcher_application);
|
||||
}
|
||||
background.getPadding(tmpRect);
|
||||
|
||||
final int iconSize = minDim / 2;
|
||||
final int offset = iconSize / 4;
|
||||
final int offsetIconSize = offset + iconSize;
|
||||
renderDrawableToBitmap(icon, null, offset, offset, offsetIconSize, offsetIconSize);
|
||||
renderDrawableToBitmap(icon, null, offset, offset, iconSize, iconSize);
|
||||
} catch (Resources.NotFoundException e) {
|
||||
// if we can't find the icon, then just don't draw it
|
||||
}
|
||||
@@ -548,6 +588,7 @@ public class CustomizePagedView extends PagedView
|
||||
mWorkspaceWidgetLayout.setPadding(20, 10, 20, 0);
|
||||
|
||||
mMaxWidgetWidth = mWorkspaceWidgetLayout.estimateCellWidth(sMaxWidgetCellHSpan);
|
||||
mMaxWallpaperWidth = mWorkspaceWidgetLayout.estimateCellWidth(mWallpaperCellHSpan);
|
||||
}
|
||||
|
||||
private void syncWidgetPages() {
|
||||
@@ -557,7 +598,7 @@ public class CustomizePagedView extends PagedView
|
||||
removeAllViews();
|
||||
int numPages = relayoutWidgets();
|
||||
for (int i = 0; i < numPages; ++i) {
|
||||
LinearLayout layout = new PagedViewWidgetLayout(getContext());
|
||||
LinearLayout layout = new PagedViewExtendedLayout(getContext());
|
||||
layout.setGravity(Gravity.CENTER_HORIZONTAL);
|
||||
layout.setPadding(mPageLayoutPaddingLeft, mPageLayoutPaddingTop,
|
||||
mPageLayoutPaddingRight, mPageLayoutPaddingBottom);
|
||||
@@ -610,6 +651,58 @@ public class CustomizePagedView extends PagedView
|
||||
}
|
||||
}
|
||||
|
||||
private void syncWallpaperPages() {
|
||||
if (mWallpaperList == null) return;
|
||||
|
||||
// We need to repopulate the LinearLayout for the wallpaper pages
|
||||
removeAllViews();
|
||||
int numPages = (int) Math.ceil((float) (mWallpaperList.size() * mWallpaperCellHSpan) /
|
||||
mMaxWidgetsCellHSpan);
|
||||
for (int i = 0; i < numPages; ++i) {
|
||||
LinearLayout layout = new PagedViewExtendedLayout(getContext());
|
||||
layout.setGravity(Gravity.CENTER_HORIZONTAL);
|
||||
layout.setPadding(mPageLayoutPaddingLeft, mPageLayoutPaddingTop,
|
||||
mPageLayoutPaddingRight, mPageLayoutPaddingBottom);
|
||||
|
||||
// Temporary change to prevent the last page from being too small (and items bleeding
|
||||
// onto it). We can remove this once we properly fix the fading algorithm
|
||||
if (i < numPages - 1) {
|
||||
addView(layout, new LinearLayout.LayoutParams(
|
||||
LinearLayout.LayoutParams.WRAP_CONTENT,
|
||||
LinearLayout.LayoutParams.MATCH_PARENT));
|
||||
} else {
|
||||
addView(layout, new LinearLayout.LayoutParams(
|
||||
LinearLayout.LayoutParams.MATCH_PARENT,
|
||||
LinearLayout.LayoutParams.MATCH_PARENT));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void syncWallpaperPageItems(int page) {
|
||||
// Load the items on to the pages
|
||||
LinearLayout layout = (LinearLayout) getChildAt(page);
|
||||
layout.removeAllViews();
|
||||
final int count = mWallpaperList.size();
|
||||
for (int i = 0; i < count; ++i) {
|
||||
final ResolveInfo info = mWallpaperList.get(i);
|
||||
|
||||
LinearLayout l = (LinearLayout) mInflater.inflate(
|
||||
R.layout.customize_paged_view_wallpaper, layout, false);
|
||||
l.setTag(info);
|
||||
l.setOnClickListener(this);
|
||||
|
||||
final Drawable icon = getWallpaperPreview(info);
|
||||
|
||||
ImageView image = (ImageView) l.findViewById(R.id.wallpaper_preview);
|
||||
image.setMaxWidth(mMaxWidgetWidth);
|
||||
image.setImageDrawable(icon);
|
||||
TextView name = (TextView) l.findViewById(R.id.wallpaper_name);
|
||||
name.setText(info.loadLabel(mPackageManager));
|
||||
|
||||
layout.addView(l);
|
||||
}
|
||||
}
|
||||
|
||||
private void syncListPages(List<ResolveInfo> list) {
|
||||
// we need to repopulate with PagedViewCellLayouts
|
||||
removeAllViews();
|
||||
@@ -716,8 +809,7 @@ public class CustomizePagedView extends PagedView
|
||||
centerPagedViewCellLayouts = true;
|
||||
break;
|
||||
case WallpaperCustomization:
|
||||
syncListPages(mWallpaperList);
|
||||
centerPagedViewCellLayouts = true;
|
||||
syncWallpaperPages();
|
||||
break;
|
||||
case ApplicationCustomization:
|
||||
syncAppPages();
|
||||
@@ -757,7 +849,7 @@ public class CustomizePagedView extends PagedView
|
||||
syncListPageItems(page, mShortcutList);
|
||||
break;
|
||||
case WallpaperCustomization:
|
||||
syncListPageItems(page, mWallpaperList);
|
||||
syncWallpaperPageItems(page);
|
||||
break;
|
||||
case ApplicationCustomization:
|
||||
syncAppPageItems(page);
|
||||
|
||||
@@ -16,12 +16,13 @@
|
||||
|
||||
package com.android.launcher2;
|
||||
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.PixelFormat;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.ColorFilter;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.PixelFormat;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.Drawable;
|
||||
|
||||
class FastBitmapDrawable extends Drawable {
|
||||
private Bitmap mBitmap;
|
||||
@@ -41,7 +42,8 @@ class FastBitmapDrawable extends Drawable {
|
||||
|
||||
@Override
|
||||
public void draw(Canvas canvas) {
|
||||
canvas.drawBitmap(mBitmap, 0.0f, 0.0f, mPaint);
|
||||
final Rect r = getBounds();
|
||||
canvas.drawBitmap(mBitmap, r.left, r.top, mPaint);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -47,12 +47,12 @@ import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.Intent.ShortcutIconResource;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.Intent.ShortcutIconResource;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.TypedArray;
|
||||
@@ -67,6 +67,7 @@ import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.os.Parcelable;
|
||||
import android.os.SystemClock;
|
||||
import android.os.SystemProperties;
|
||||
@@ -85,25 +86,27 @@ import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.View.OnLongClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowManager;
|
||||
import android.view.View.OnLongClickListener;
|
||||
import android.view.animation.AccelerateInterpolator;
|
||||
import android.view.animation.DecelerateInterpolator;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.Advanceable;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.PopupWindow;
|
||||
import android.widget.TabHost;
|
||||
import android.widget.TabHost.OnTabChangeListener;
|
||||
import android.widget.TabHost.TabContentFactory;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import android.widget.TabHost.OnTabChangeListener;
|
||||
import android.widget.TabHost.TabContentFactory;
|
||||
|
||||
import com.android.common.Search;
|
||||
import com.android.launcher.R;
|
||||
|
||||
|
||||
/**
|
||||
* Default launcher application.
|
||||
*/
|
||||
@@ -205,6 +208,7 @@ public final class Launcher extends Activity
|
||||
private HandleView mHandleView;
|
||||
private AllAppsView mAllAppsGrid;
|
||||
private TabHost mHomeCustomizationDrawer;
|
||||
private boolean mAutoAdvanceRunning = false;
|
||||
|
||||
private PagedView mAllAppsPagedView = null;
|
||||
private CustomizePagedView mCustomizePagedView = null;
|
||||
@@ -228,6 +232,7 @@ public final class Launcher extends Activity
|
||||
private static LocaleConfiguration sLocaleConfiguration = null;
|
||||
|
||||
private ArrayList<ItemInfo> mDesktopItems = new ArrayList<ItemInfo>();
|
||||
|
||||
private static HashMap<Long, FolderInfo> sFolders = new HashMap<Long, FolderInfo>();
|
||||
|
||||
private ImageView mPreviousView;
|
||||
@@ -241,6 +246,15 @@ public final class Launcher extends Activity
|
||||
|
||||
private Intent mAppMarketIntent = null;
|
||||
|
||||
// Related to the auto-advancing of widgets
|
||||
private final int ADVANCE_MSG = 1;
|
||||
private final int mAdvanceInterval = 20000;
|
||||
private final int mAdvanceStagger = 250;
|
||||
private long mAutoAdvanceSentTime;
|
||||
private long mAutoAdvanceTimeLeft = -1;
|
||||
private HashMap<View, AppWidgetProviderInfo> mWidgetsToAdvance =
|
||||
new HashMap<View, AppWidgetProviderInfo>();
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -1060,7 +1074,6 @@ public final class Launcher extends Activity
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add a widget to the workspace.
|
||||
*
|
||||
@@ -1133,18 +1146,128 @@ public final class Launcher extends Activity
|
||||
|
||||
mWorkspace.addInScreen(launcherInfo.hostView, screen, cellXY[0], cellXY[1],
|
||||
launcherInfo.spanX, launcherInfo.spanY, isWorkspaceLocked());
|
||||
|
||||
addWidgetToAutoAdvanceIfNeeded(launcherInfo.hostView, appWidgetInfo);
|
||||
}
|
||||
}
|
||||
|
||||
void showOutOfSpaceMessage() {
|
||||
Toast.makeText(this, getString(R.string.out_of_space), Toast.LENGTH_SHORT).show();
|
||||
private boolean mUserPresent = true;
|
||||
private boolean mVisible = false;
|
||||
|
||||
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
final String action = intent.getAction();
|
||||
if (Intent.ACTION_SCREEN_OFF.equals(action)) {
|
||||
mUserPresent = false;
|
||||
updateRunning();
|
||||
} else if (Intent.ACTION_USER_PRESENT.equals(action)) {
|
||||
mUserPresent = true;
|
||||
updateRunning();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
|
||||
// Listen for broadcasts related to user-presence
|
||||
final IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(Intent.ACTION_SCREEN_OFF);
|
||||
filter.addAction(Intent.ACTION_USER_PRESENT);
|
||||
registerReceiver(mReceiver, filter);
|
||||
|
||||
mVisible = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow();
|
||||
mVisible = false;
|
||||
|
||||
unregisterReceiver(mReceiver);
|
||||
updateRunning();
|
||||
}
|
||||
|
||||
public void onWindowVisibilityChanged(int visibility) {
|
||||
mVisible = visibility == View.VISIBLE;
|
||||
updateRunning();
|
||||
}
|
||||
|
||||
private void sendAdvanceMessage(long delay) {
|
||||
mHandler.removeMessages(ADVANCE_MSG);
|
||||
Message msg = mHandler.obtainMessage(ADVANCE_MSG);
|
||||
mHandler.sendMessageDelayed(msg, delay);
|
||||
mAutoAdvanceSentTime = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
private void updateRunning() {
|
||||
boolean autoAdvanceRunning = mVisible && mUserPresent && !mWidgetsToAdvance.isEmpty();
|
||||
if (autoAdvanceRunning != mAutoAdvanceRunning) {
|
||||
mAutoAdvanceRunning = autoAdvanceRunning;
|
||||
if (autoAdvanceRunning) {
|
||||
long delay = mAutoAdvanceTimeLeft == -1 ? mAdvanceInterval : mAutoAdvanceTimeLeft;
|
||||
sendAdvanceMessage(delay);
|
||||
} else {
|
||||
if (!mWidgetsToAdvance.isEmpty()) {
|
||||
mAutoAdvanceTimeLeft = Math.max(0, mAdvanceInterval -
|
||||
(System.currentTimeMillis() - mAutoAdvanceSentTime));
|
||||
}
|
||||
mHandler.removeMessages(ADVANCE_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private final Handler mHandler = new Handler() {
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
if (msg.what == ADVANCE_MSG) {
|
||||
int i = 0;
|
||||
for (View key: mWidgetsToAdvance.keySet()) {
|
||||
final View v = key.findViewById(mWidgetsToAdvance.get(key).autoAdvanceViewId);
|
||||
final int delay = mAdvanceStagger * i;
|
||||
if (v instanceof Advanceable) {
|
||||
postDelayed(new Runnable() {
|
||||
public void run() {
|
||||
((Advanceable) v).advance();
|
||||
}
|
||||
}, delay);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
sendAdvanceMessage(mAdvanceInterval);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
void addWidgetToAutoAdvanceIfNeeded(View hostView, AppWidgetProviderInfo appWidgetInfo) {
|
||||
if (appWidgetInfo.autoAdvanceViewId == -1) return;
|
||||
View v = hostView.findViewById(appWidgetInfo.autoAdvanceViewId);
|
||||
if (v instanceof Advanceable) {
|
||||
mWidgetsToAdvance.put(hostView, appWidgetInfo);
|
||||
((Advanceable) v).willBeAdvancedByHost();
|
||||
updateRunning();
|
||||
}
|
||||
}
|
||||
|
||||
void removeWidgetToAutoAdvance(View hostView) {
|
||||
if (mWidgetsToAdvance.containsKey(hostView)) {
|
||||
mWidgetsToAdvance.remove(hostView);
|
||||
updateRunning();
|
||||
}
|
||||
}
|
||||
|
||||
public void removeAppWidget(LauncherAppWidgetInfo launcherInfo) {
|
||||
mDesktopItems.remove(launcherInfo);
|
||||
removeWidgetToAutoAdvance(launcherInfo.hostView);
|
||||
launcherInfo.hostView = null;
|
||||
}
|
||||
|
||||
void showOutOfSpaceMessage() {
|
||||
Toast.makeText(this, getString(R.string.out_of_space), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
public LauncherAppWidgetHost getAppWidgetHost() {
|
||||
return mAppWidgetHost;
|
||||
}
|
||||
@@ -3064,6 +3187,8 @@ public final class Launcher extends Activity
|
||||
workspace.addInScreen(item.hostView, item.screen, item.cellX,
|
||||
item.cellY, item.spanX, item.spanY, false);
|
||||
|
||||
addWidgetToAutoAdvanceIfNeeded(item.hostView, appWidgetInfo);
|
||||
|
||||
workspace.requestLayout();
|
||||
|
||||
mDesktopItems.add(item);
|
||||
|
||||
@@ -37,7 +37,7 @@ class LauncherAppWidgetInfo extends ItemInfo {
|
||||
int appWidgetId = NO_ID;
|
||||
|
||||
ComponentName providerName;
|
||||
|
||||
|
||||
// TODO: Are these necessary here?
|
||||
int minWidth = -1;
|
||||
int minHeight = -1;
|
||||
@@ -65,7 +65,7 @@ class LauncherAppWidgetInfo extends ItemInfo {
|
||||
itemType = LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET;
|
||||
this.appWidgetId = appWidgetId;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
void onAddToDatabase(ContentValues values) {
|
||||
super.onAddToDatabase(values);
|
||||
|
||||
@@ -621,6 +621,9 @@ public abstract class PagedView extends ViewGroup {
|
||||
* scrolling there.
|
||||
*/
|
||||
|
||||
// Skip touch handling if there are no pages to swipe
|
||||
if (getChildCount() <= 0) return super.onInterceptTouchEvent(ev);
|
||||
|
||||
/*
|
||||
* Shortcut the most recurring case: the user is in the dragging
|
||||
* state and he is moving his finger. We want to intercept this
|
||||
@@ -775,6 +778,9 @@ public abstract class PagedView extends ViewGroup {
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent ev) {
|
||||
// Skip touch handling if there are no pages to swipe
|
||||
if (getChildCount() <= 0) return super.onTouchEvent(ev);
|
||||
|
||||
acquireVelocityTrackerAndAddMovement(ev);
|
||||
|
||||
final int action = ev.getAction();
|
||||
|
||||
+5
-5
@@ -22,20 +22,20 @@ import android.view.MotionEvent;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
/**
|
||||
* The linear layout used strictly for the widget tab of the customization tray
|
||||
* The linear layout used strictly for the widget/wallpaper tab of the customization tray
|
||||
*/
|
||||
public class PagedViewWidgetLayout extends LinearLayout {
|
||||
public class PagedViewExtendedLayout extends LinearLayout {
|
||||
static final String TAG = "PagedViewWidgetLayout";
|
||||
|
||||
public PagedViewWidgetLayout(Context context) {
|
||||
public PagedViewExtendedLayout(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public PagedViewWidgetLayout(Context context, AttributeSet attrs) {
|
||||
public PagedViewExtendedLayout(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
public PagedViewWidgetLayout(Context context, AttributeSet attrs, int defStyle) {
|
||||
public PagedViewExtendedLayout(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
}
|
||||
|
||||
@@ -1,156 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2010 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.launcher2;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.PorterDuffXfermode;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.widget.Checkable;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import com.android.launcher.R;
|
||||
|
||||
/**
|
||||
* An widget icon for use specifically in the CustomizePagedView. In class form so that
|
||||
* we can add logic for how it will look when checked/unchecked.
|
||||
*/
|
||||
public class PagedViewWidgetIcon extends LinearLayout implements Checkable {
|
||||
private static final String TAG = "PagedViewIcon";
|
||||
|
||||
// Holographic outline
|
||||
private final Paint mPaint = new Paint();
|
||||
private static HolographicOutlineHelper sHolographicOutlineHelper;
|
||||
private final Paint mErasePaint = new Paint();
|
||||
private Bitmap mCheckedOutline;
|
||||
private Canvas mHolographicOutlineCanvas;
|
||||
private boolean mIsHolographicUpdatePass;
|
||||
|
||||
private int mAlpha;
|
||||
|
||||
private boolean mIsChecked;
|
||||
|
||||
// Highlight colours
|
||||
private int mCheckedBlurColor;
|
||||
private int mCheckedOutlineColor;
|
||||
|
||||
|
||||
public PagedViewWidgetIcon(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public PagedViewWidgetIcon(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
public PagedViewWidgetIcon(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PagedViewWidgetIcon,
|
||||
defStyle, 0);
|
||||
mCheckedBlurColor = a.getColor(R.styleable.PagedViewWidgetIcon_checkedBlurColor, 0);
|
||||
mCheckedOutlineColor = a.getColor(R.styleable.PagedViewWidgetIcon_checkedOutlineColor, 0);
|
||||
mErasePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
|
||||
mErasePaint.setFilterBitmap(true);
|
||||
a.recycle();
|
||||
|
||||
if (sHolographicOutlineHelper == null) {
|
||||
sHolographicOutlineHelper = new HolographicOutlineHelper();
|
||||
}
|
||||
|
||||
setWillNotDraw(false);
|
||||
}
|
||||
|
||||
public void invalidateCheckedImage() {
|
||||
if (mCheckedOutline != null) {
|
||||
mCheckedOutline.recycle();
|
||||
mCheckedOutline = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
// Draw the view itself
|
||||
if (mIsHolographicUpdatePass) {
|
||||
canvas.save();
|
||||
final float alpha = getAlpha();
|
||||
super.setAlpha(1.0f);
|
||||
super.onDraw(canvas);
|
||||
super.setAlpha(alpha);
|
||||
canvas.restore();
|
||||
} else {
|
||||
if (mAlpha > 0) {
|
||||
super.onDraw(canvas);
|
||||
}
|
||||
}
|
||||
|
||||
// Draw the holographic checked overlay if necessary
|
||||
if (!mIsHolographicUpdatePass) {
|
||||
if (mCheckedOutline != null) {
|
||||
mPaint.setAlpha(255);
|
||||
canvas.drawBitmap(mCheckedOutline, 0, 0, mPaint);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isChecked() {
|
||||
return mIsChecked;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setChecked(boolean checked) {
|
||||
if (mIsChecked != checked) {
|
||||
mIsChecked = checked;
|
||||
|
||||
if (mIsChecked) {
|
||||
// set a flag to indicate that we are going to draw the view at full alpha
|
||||
mIsHolographicUpdatePass = true;
|
||||
final int width = getMeasuredWidth();
|
||||
final int height = getMeasuredHeight();
|
||||
mCheckedOutline = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
|
||||
mHolographicOutlineCanvas = new Canvas(mCheckedOutline);
|
||||
mHolographicOutlineCanvas.concat(getMatrix());
|
||||
draw(mHolographicOutlineCanvas);
|
||||
sHolographicOutlineHelper.applyExpensiveOutlineWithBlur(mCheckedOutline,
|
||||
mHolographicOutlineCanvas, mCheckedBlurColor, mCheckedOutlineColor);
|
||||
|
||||
// Unlike PagedViewIcon, we can't seem to properly set the clip rect for all the
|
||||
// children to respect when drawing... so for now, we erase over those parts in the
|
||||
// checked highlight image
|
||||
mHolographicOutlineCanvas.drawRect(0, findViewById(R.id.divider).getTop(),
|
||||
width, height, mErasePaint);
|
||||
|
||||
mIsHolographicUpdatePass = false;
|
||||
mHolographicOutlineCanvas = null;
|
||||
} else {
|
||||
invalidateCheckedImage();
|
||||
}
|
||||
|
||||
invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toggle() {
|
||||
setChecked(!mIsChecked);
|
||||
}
|
||||
}
|
||||
@@ -426,6 +426,10 @@ public class Workspace extends SmoothPagedView
|
||||
return false;
|
||||
}
|
||||
|
||||
protected void onWindowVisibilityChanged (int visibility) {
|
||||
mLauncher.onWindowVisibilityChanged(visibility);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean dispatchUnhandledMove(View focused, int direction) {
|
||||
if (mIsSmall || mIsInUnshrinkAnimation) {
|
||||
|
||||
Reference in New Issue
Block a user