From 7984c9496bcaeca23ee7fdecc4d4f1bb2467e0f2 Mon Sep 17 00:00:00 2001 From: Bjorn Bringert Date: Wed, 9 Dec 2009 15:38:25 +0000 Subject: [PATCH] Get rid of the built-in search widget in Launcher2 Uses the widget from packages/apps/QuickSearchBox instead. Change-Id: I85d64defe155c0cad97fafef6a3db62c6cab504a --- res/drawable-hdpi/ic_search_widget.png | Bin 4048 -> 0 bytes res/drawable-hdpi/search_button_bg.9.png | Bin 836 -> 0 bytes res/drawable-hdpi/search_button_voice.png | Bin 1492 -> 0 bytes res/drawable-hdpi/search_floater.9.png | Bin 5550 -> 0 bytes .../textfield_searchwidget_default.9.png | Bin 2192 -> 0 bytes .../textfield_searchwidget_pressed.9.png | Bin 3379 -> 0 bytes .../textfield_searchwidget_selected.9.png | Bin 2535 -> 0 bytes res/drawable/textfield_searchwidget.xml | 31 -- res/layout/widget_search.xml | 61 --- res/values-cs/strings.xml | 3 - res/values-da/strings.xml | 3 - res/values-de/strings.xml | 3 - res/values-el/strings.xml | 3 - res/values-es-rUS/strings.xml | 3 - res/values-es/strings.xml | 3 - res/values-fr/strings.xml | 3 - res/values-it/strings.xml | 3 - res/values-ja/strings.xml | 3 - res/values-ko/strings.xml | 3 - res/values-land/dimens.xml | 1 - res/values-nb/strings.xml | 3 - res/values-nl/strings.xml | 3 - res/values-pl/strings.xml | 3 - res/values-pt-rPT/strings.xml | 3 - res/values-pt/strings.xml | 3 - res/values-ru/strings.xml | 3 - res/values-sv/strings.xml | 3 - res/values-tr/strings.xml | 3 - res/values-zh-rCN/strings.xml | 3 - res/values-zh-rTW/strings.xml | 3 - res/values/dimens.xml | 1 - res/values/strings.xml | 10 - src/com/android/launcher2/Launcher.java | 152 +------ src/com/android/launcher2/LauncherModel.java | 20 - .../android/launcher2/LauncherProvider.java | 57 ++- src/com/android/launcher2/Search.java | 380 ------------------ src/com/android/launcher2/Widget.java | 36 -- src/com/android/launcher2/Workspace.java | 36 +- 38 files changed, 48 insertions(+), 797 deletions(-) delete mode 100644 res/drawable-hdpi/ic_search_widget.png delete mode 100644 res/drawable-hdpi/search_button_bg.9.png delete mode 100644 res/drawable-hdpi/search_button_voice.png delete mode 100644 res/drawable-hdpi/search_floater.9.png delete mode 100644 res/drawable-hdpi/textfield_searchwidget_default.9.png delete mode 100644 res/drawable-hdpi/textfield_searchwidget_pressed.9.png delete mode 100644 res/drawable-hdpi/textfield_searchwidget_selected.9.png delete mode 100644 res/drawable/textfield_searchwidget.xml delete mode 100644 res/layout/widget_search.xml delete mode 100644 src/com/android/launcher2/Search.java delete mode 100644 src/com/android/launcher2/Widget.java diff --git a/res/drawable-hdpi/ic_search_widget.png b/res/drawable-hdpi/ic_search_widget.png deleted file mode 100644 index 06b9b251b1faa4b099fff61b7934d90dc05b27e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4048 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 diff --git a/res/drawable-hdpi/textfield_searchwidget_default.9.png b/res/drawable-hdpi/textfield_searchwidget_default.9.png deleted file mode 100644 index 2fe637d5f949b002a5d2ce9a3923eadcc881265f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2192 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 JPDHLkV1hgUlAZtn diff --git a/res/drawable-hdpi/textfield_searchwidget_selected.9.png b/res/drawable-hdpi/textfield_searchwidget_selected.9.png deleted file mode 100644 index 8a84fdcacb0d7b40478016c687a1bd065c4899c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2535 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 diff --git a/res/drawable/textfield_searchwidget.xml b/res/drawable/textfield_searchwidget.xml deleted file mode 100644 index 80f3dca34a..0000000000 --- a/res/drawable/textfield_searchwidget.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - diff --git a/res/layout/widget_search.xml b/res/layout/widget_search.xml deleted file mode 100644 index a3467234cd..0000000000 --- a/res/layout/widget_search.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index debfc8ba3a..a591ff7c25 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -30,7 +30,6 @@ "Přidat na plochu" "Aplikace" "Zástupce" - "Hledat" "Nová složka" "Složky" "Widgety" @@ -38,7 +37,6 @@ "Složka" "Hodiny" "Rámeček fotografie" - "Vyhledávání" "Na této ploše již není místo." "Zástupce %s byl vytvořen." "Zástupce %s byl odebrán." @@ -59,6 +57,5 @@ "Povoluje aplikaci číst nastavení a odkazy plochy." "zápis nastavení a odkazů plochy" "Povoluje aplikaci změnit nastavení a odkazy plochy." - "Vyhledávání Google" "Problém s načtením widgetu" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 95d43fd863..ec98ea6f4a 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -30,7 +30,6 @@ "Føj til Startskærm" "Programmer" "Genveje" - "Søg" "Ny mappe" "Mapper" "Widgets" @@ -38,7 +37,6 @@ "Mappe" "Ur" "Billedramme" - "Søg" "Der er ikke mere plads på Startskærmen." "Genvejen \"%s\" blev oprettet." "Genvejen \"%s\" blev fjernet." @@ -59,6 +57,5 @@ "Tillader et program at læse indstillingerne og genvejene i Start." "skriv indstillinger og genveje for Start" "Tillader et program at ændre indstillingerne og genvejene i Start." - "Google-søgning" "Der er problemer med at indlæse widget" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 117dedefa7..48b594498b 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -30,7 +30,6 @@ "Zum Startbildschirm hinzufügen" "Anwendungen" "Verknüpfungen" - "Suchen" "Neuer Ordner" "Ordner" "Widgets" @@ -38,7 +37,6 @@ "Ordner" "Uhr" "Bildrahmen" - "Suchen" "Auf dem Startbildschirm ist kein Platz mehr vorhanden." "\"%s\"-Verknüpfung wurde erstellt." "\"%s\"-Verknüpfung wurde entfernt." @@ -59,6 +57,5 @@ "Ermöglicht einer Anwendung, die Einstellungen und Shortcuts auf der Startseite zu lesen." "Einstellungen und Shortcuts für Startseite schreiben" "Ermöglicht einer Anwendung, die Einstellungen und Shortcuts auf der Startseite zu ändern." - "Google-Suche" "Problem beim Laden des Widgets" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index de44fcd8ef..7a6a108c3d 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -30,7 +30,6 @@ "Προσθήκη στην αρχική οθόνη" "Εφαρμογές" "Συντομεύσεις" - "Αναζήτηση" "Νέος φάκελος" "Φάκελοι" "Γραφικά στοιχεία" @@ -38,7 +37,6 @@ "Φάκελος" "Ρολόι" "Πλαίσιο εικόνας" - "Αναζήτηση" "Δεν υπάρχει χώρος σε αυτήν την αρχική οθόνη." "Δημιουργήθηκε η συντόμευση \"%s\"." "Η συντόμευση \"%s\" καταργήθηκε." @@ -59,6 +57,5 @@ "Επιτρέπει σε μια εφαρμογή την ανάγνωση των ρυθμίσεων και των συντομεύσεων στην αρχική οθόνη." "εγγραφή ρυθμίσεων και συντομεύσεων αρχικής οθόνης" "Επιτρέπει σε μια εφαρμογή την αλλαγή των ρυθμίσεων και των συντομεύσεων στην αρχική οθόνη." - "Αναζήτηση Google" "Παρουσιάστηκε πρόβλημα στη φόρτωση του γραφικού στοιχείου" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 22ecb7b862..ef6720be9a 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -30,7 +30,6 @@ "Agregar a la pantalla Página principal" "Aplicaciones" "Accesos directos" - "Buscar" "Carpeta nueva" "Carpetas" "Controles" @@ -38,7 +37,6 @@ "Carpeta" "Reloj" "Marco de imagen" - "Buscar" "No hay más espacio en esta pantalla de la página principal" "Acceso directo \"%s\" creado." "El acceso directo \"%s\" ha sido eliminado." @@ -59,6 +57,5 @@ "Permite a una aplicación leer la configuración y los accesos directos de la página principal." "escribir configuración y accesos directos de la página principal" "Permite a una aplicación cambiar la configuración y los accesos directos de la página principal." - "Búsqueda de Google" "Problema al cargar el widget" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 5af29896f1..23a3eb4abf 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -30,7 +30,6 @@ "Añadir a pantalla de página principal" "Aplicaciones" "Accesos directos" - "Búsqueda" "Nueva carpeta" "Carpetas" "Widgets" @@ -38,7 +37,6 @@ "Carpeta" "Reloj" "Picture frame" - "Búsqueda de Google" "No queda espacio en esta pantalla de página principal." "Se ha creado el acceso directo \"%s\"." "Se ha eliminado el acceso directo \"%s\"." @@ -59,6 +57,5 @@ "Permite que una aplicación lea la información de configuración y accesos directos de la página principal." "escribir información de accesos directos y de configuración de la página principal" "Permite que una aplicación modifique la configuración y los accesos directos de la página principal." - "Búsqueda de Google" "Problema al cargar el widget" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 63a146cde1..de5023c3c4 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -30,7 +30,6 @@ "Ajouter à l\'écran d\'accueil" "Applications" "Raccourcis" - "Recherche" "Nouveau dossier" "Dossiers" "Widgets" @@ -38,7 +37,6 @@ "Dossier" "Horloge" "Cadre d\'image" - "Recherche" "Plus d\'espace libre sur l\'écran d\'accueil." "Le raccourci \"%s\" a été créé." "Le raccourci \"%s\" a été supprimé." @@ -59,6 +57,5 @@ "Permet à une application de lire les paramètres et raccourcis de la page d\'accueil." "Enregistrer les paramètres de la page d\'accueil et des raccourcis" "Permet à une application de modifier les paramètres et les raccourcis de la page d\'accueil." - "Recherche Google" "Problème lors du chargement du widget" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 518507e576..485bd8a1c8 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -30,7 +30,6 @@ "Aggiungi a schermata Home" "Applicazioni" "Collegamenti" - "Ricerca" "Nuova cartella" "Cartelle" "Widget" @@ -38,7 +37,6 @@ "Cartella" "Orologio" "Cornice immagini" - "Ricerca" "Spazio nella schermata Home esaurito." "Collegamento \"%s\" creato." "Il collegamento \"%s\" è stato rimosso." @@ -59,6 +57,5 @@ "Consente a un\'applicazione di leggere le impostazioni e le scorciatoie in Home." "creare impostazioni e scorciatoie in Home" "Consente a un\'applicazione di modificare le impostazioni e le scorciatoie in Home." - "Ricerca Google" "Errore durante il caricamento del widget" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index dd17bd1a73..e5209c997a 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -30,7 +30,6 @@ "ホーム画面に追加" "アプリケーション" "ショートカット" - "検索" "新しいフォルダ" "フォルダ" "ウィジェット" @@ -38,7 +37,6 @@ "フォルダ" "時計" "写真フレーム" - "検索" "ホーム画面に空きスペースがありません。" "ショートカット「%s」を作成しました。" "ショートカット「%s」を削除しました。" @@ -59,6 +57,5 @@ "ホームの設定とショートカットの読み取りをアプリケーションに許可します。" "ホームの設定とショートカットの書き込み" "ホームの設定とショートカットの変更をアプリケーションに許可します。" - "Google検索" "ウィジェットを表示できません" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index b5bd1dd0cf..b3442f9e15 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -30,7 +30,6 @@ "홈 화면에 추가" "응용프로그램" "바로가기" - "검색" "새 폴더" "폴더" "위젯" @@ -38,7 +37,6 @@ "폴더" "시계" "사진 프레임" - "검색" "홈 화면에 더 이상 공간이 없습니다." "바로가기(\'%s\')가 생성되었습니다." "바로가기(\'%s\')가 삭제되었습니다." @@ -59,6 +57,5 @@ "응용프로그램이 홈에 있는 설정 및 바로가기를 읽을 수 있도록 합니다." "홈 설정 및 바로가기 쓰기" "응용프로그램이 홈에 있는 설정 및 바로가기를 변경할 수 있도록 합니다." - "Google 검색" "위젯을 로드하는 중 문제가 발생했습니다." diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml index d2d31c27a7..d1236f2323 100644 --- a/res/values-land/dimens.xml +++ b/res/values-land/dimens.xml @@ -17,7 +17,6 @@ 106dip 74dip - 19dip 8dip 64dip diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index fe22f69de7..20df495057 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -30,7 +30,6 @@ "Legg til skrivebord" "Applikasjoner" "Snarveier" - "Søk" "Ny mappe" "Mapper" "Skrivebordselementer" @@ -38,7 +37,6 @@ "Mappe" "Klokke" "Bilderamme" - "Søk" "Ikke nok plass på skrivebordet." "Opprettet snarveien «%s»." "Fjernet snarveien «%s»." @@ -59,6 +57,5 @@ "Lar applikasjonen lese innstillinger og snarveier fra skrivebordet." "skrive skrivebordsinnstillinger og -snarveier" "Lar applikasjonen endre innstillinger og snarveier på skrivebordet." - "Google-søk" "Problem under lasting av gadget" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index ffe5dae2d1..892e40529e 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -30,7 +30,6 @@ "Toevoegen aan startpagina" "Toepassingen" "Sneltoetsen" - "Zoeken" "Nieuwe map" "Mappen" "Widgets" @@ -38,7 +37,6 @@ "Map" "Klok" "Fotolijstje" - "Zoeken" "Er is geen ruimte meer op dit startscherm." "Snelkoppeling \'%s\' is gemaakt." "Snelkoppeling \'%s\' is verwijderd." @@ -59,6 +57,5 @@ "Hiermee kan een toepassing de instellingen en snelkoppelingen op de startpagina lezen." "instellingen en snelkoppelingen voor de startpagina schrijven" "Hiermee kan een toepassing de instellingen en snelkoppelingen op de startpagina wijzigen." - "Google Zoeken" "Probleem bij het laden van widget" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index a2b81c1817..971003822a 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -30,7 +30,6 @@ "Dodaj do strony głównej" "Aplikacje" "Skróty" - "Wyszukiwarka" "Nowy folder" "Foldery" "Widżety" @@ -38,7 +37,6 @@ "Folder" "Zegar" "Ramka obrazu" - "Wyszukiwarka" "Brak miejsca na tej stronie głównej" "Skrót „%s” został utworzony." "Skrót „%s” został usunięty." @@ -59,6 +57,5 @@ "Umożliwia aplikacji odczytywanie ustawień i skrótów strony głównej." "zapisywanie ustawień i skrótów strony głównej" "Umożliwia aplikacji zmianę ustawień i skrótów strony głównej." - "Szukaj w Google" "Problem podczas ładowania widżetu" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index f619526085..bc6256a31c 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -30,7 +30,6 @@ "Adicionar ao ecrã principal" "Aplicações" "Atalhos" - "Pesquisar" "Nova pasta" "Pastas" "Widgets" @@ -38,7 +37,6 @@ "Pasta" "Relógio" "Moldura de imagem" - "Pesquisar" "Não existe espaço suficiente neste ecrã principal." "O atalho \"%s\" foi criado." "O atalho \"%s\" foi removido." @@ -59,6 +57,5 @@ "Permite que uma aplicação leia as definições e os atalhos do ecrã principal." "escrever definições e atalhos do ecrã principal" "Permite que uma aplicação altere as definições e os atalhos do ecrã principal." - "Pesquisa do Google" "Erro ao carregar o widget" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 03547d1f70..49d773a918 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -30,7 +30,6 @@ "Adicionar à tela da Página inicial" "Aplicativos" "Atalhos" - "Pesquisar" "Nova pasta" "Pastas" "Widgets" @@ -38,7 +37,6 @@ "Pasta" "Relógio" "Frame da imagem" - "Pesquisar" "Não há mais espaço nesta tela da Página inicial." "Atalho \"%s\" criado." "O atalho \"%s\" foi removido." @@ -59,6 +57,5 @@ "Permite que um aplicativo leia as configurações e atalhos na Página inicial." "gravar configurações e atalhos da Página inicial" "Permite que um aplicativo altere as configurações e atalhos na Página inicial." - "Pesquisa do Google" "Problema ao carregar o widget" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index f74b5e5ddb..81a839f450 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -30,7 +30,6 @@ "Добавить на главный экран" "Приложения" "Ярлыки" - "Поиск" "Новая папка" "Папки" "Виджеты" @@ -38,7 +37,6 @@ "Папка" "Часы" "Рамка фотографии" - "Поиск" "На этом главном экране нет свободного места." "Ярлык \"%s\" создан" "Ярлык \"%s\" удален." @@ -59,6 +57,5 @@ "Позволяет приложению считывать настройки и ярлыки на главном экране." "изменять настройки и ярлыки главного экрана" "Позволяет приложению изменять настройки и ярлыки на главном экране." - "Поиск Google" "Не удалось загрузить виджет" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index cf448ad60b..f6fe34f5d9 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -30,7 +30,6 @@ "Lägg till på startsidan" "Program" "Genvägar" - "Sök" "Ny mapp" "Mappar" "Widgetar" @@ -38,7 +37,6 @@ "Mapp" "Klocka" "Bildram" - "Sök" "Det finns inte plats för mer på den här startsidan." "Genvägen \"%s\" har skapats." "Genvägen \"%s\" har tagits bort." @@ -59,6 +57,5 @@ "Tillåter att ett program läser inställningar och genvägar på startsidan." "skriva inställningar och genvägar för startsidan" "Tillåter att ett program ändrar inställningar och genvägar på startsidan." - "Sök på Google" "Det gick inte att läsa in widgeten" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 9d116ff7f8..eda50b130b 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -30,7 +30,6 @@ "Ana ekrana ekle" "Uygulamalar" "Kısayollar" - "Arama" "Yeni klasör" "Klasörler" "Widget\'lar" @@ -38,7 +37,6 @@ "Klasör" "Saat" "Resim çerçevesi" - "Arama" "Bu Ana ekranda başka yer yok." "\"%s\" kısayolu oluşturuldu." "\"%s\" kısayolu kaldırıldı." @@ -59,6 +57,5 @@ "Bir uygulamaya Ana Sayfadaki ayarları ve kısayolları okuma izni verir." "Ana Sayfa ayarlarını ve kısayollarını yaz" "Bir uygulamaya Ana Sayfadaki ayarları ve kısayolları değiştirme izni verir." - "Google Arama" "Widget yüklenirken sorun oluştu" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index ff7f489635..77db80cac6 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -30,7 +30,6 @@ "添加到主屏幕" "应用程序" "快捷方式" - "搜索" "新建文件夹" "文件夹" "窗口小部件" @@ -38,7 +37,6 @@ "文件夹" "时钟" "相框" - "搜索" "此主屏幕上已没有更多空间。" "已创建“%s”快捷方式。" "已删除“%s”快捷方式。" @@ -59,6 +57,5 @@ "允许应用程序读取主屏幕上的设置和快捷方式。" "写入主屏幕设置和快捷方式" "允许应用程序更改主屏幕上的设置和快捷方式。" - "Google 搜索" "载入窗口小部件时出现问题" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index b75995eb9c..fabb8267e4 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -30,7 +30,6 @@ "新增至首頁畫面" "應用程式" "捷徑" - "搜尋" "新資料夾" "資料夾" "小工具" @@ -38,7 +37,6 @@ "資料夾" "時鐘" "相框" - "搜尋" "首頁已無空間" "已建立「%s」捷徑。" "已移除「%s」捷徑。" @@ -59,6 +57,5 @@ "允許應用程式讀取首頁中的設定和捷徑。" "寫入首頁設定和捷徑" "允許應用程式變更首頁中的設定和捷徑。" - "Google 搜尋" "載入小工具時發生問題" diff --git a/res/values/dimens.xml b/res/values/dimens.xml index e0ca38469b..78756acbba 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -15,7 +15,6 @@ --> - 19dip 8dip 64dip 56dip diff --git a/res/values/strings.xml b/res/values/strings.xml index 38f27c7768..35d47338a9 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -56,8 +56,6 @@ Applications Shortcuts - - Search New folder @@ -72,8 +70,6 @@ Clock Picture frame - - Search No more room on this Home screen. @@ -126,12 +122,6 @@ - - Google Search - Problem loading widget diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index aa6b7cedf1..f07810dfc0 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -110,9 +110,6 @@ public final class Launcher extends Activity static final String EXTRA_SHORTCUT_DUPLICATE = "duplicate"; - static final String EXTRA_CUSTOM_WIDGET = "custom_widget"; - static final String SEARCH_WIDGET = "search_widget"; - static final int SCREEN_COUNT = 5; static final int DEFAULT_SCREEN = 2; static final int NUMBER_CELLS_X = 4; @@ -180,8 +177,6 @@ public final class Launcher extends Activity private SpannableStringBuilder mDefaultKeySsb = null; - private boolean mIsNewIntent; - private boolean mWorkspaceLoading = true; private boolean mRestoring; @@ -406,21 +401,6 @@ public final class Launcher extends Activity mModel.startLoader(this, true); mRestoring = false; } - - // If this was a new intent (i.e., the mIsNewIntent flag got set to true by - // onNewIntent), then close the search dialog if needed, because it probably - // came from the user pressing 'home' (rather than, for example, pressing 'back'). - if (mIsNewIntent) { - // Post to a handler so that this happens after the search dialog tries to open - // itself again. - mWorkspace.post(new Runnable() { - public void run() { - stopSearch(); - } - }); - } - - mIsNewIntent = false; } @Override @@ -841,11 +821,6 @@ public final class Launcher extends Activity // also will cancel mWaitingForResult. closeSystemDialogs(); - // Set this flag so that onResume knows to close the search dialog if it's open, - // because this was a new intent (thus a press of 'home' or some such) rather than - // for example onResume being called when the user pressed the 'back' button. - mIsNewIntent = true; - boolean alreadyOnHome = ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); boolean allAppsVisible = isAllAppsVisible(); @@ -947,26 +922,6 @@ public final class Launcher extends Activity closeAllApps(true); - // Slide the search widget to the top, if it's on the current screen, - // otherwise show the search dialog immediately. - Search searchWidget = mWorkspace.findSearchWidgetOnCurrentScreen(); - if (searchWidget == null) { - showSearchDialog(initialQuery, selectInitialQuery, appSearchData, globalSearch); - } else { - searchWidget.startSearch(initialQuery, selectInitialQuery, appSearchData, globalSearch); - // show the currently typed text in the search widget while sliding - searchWidget.setQuery(getTypedText()); - } - } - - /** - * Show the search dialog immediately, without changing the search widget. - * - * @see Activity#startSearch(String, boolean, android.os.Bundle, boolean) - */ - void showSearchDialog(String initialQuery, boolean selectInitialQuery, - Bundle appSearchData, boolean globalSearch) { - if (initialQuery == null) { // Use any text typed in the launcher as the initial query initialQuery = getTypedText(); @@ -979,37 +934,10 @@ public final class Launcher extends Activity final SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); - - final Search searchWidget = mWorkspace.findSearchWidgetOnCurrentScreen(); - if (searchWidget != null) { - // This gets called when the user leaves the search dialog to go back to - // the Launcher. - searchManager.setOnCancelListener(new SearchManager.OnCancelListener() { - public void onCancel() { - searchManager.setOnCancelListener(null); - stopSearch(); - } - }); - } - searchManager.startSearch(initialQuery, selectInitialQuery, getComponentName(), appSearchData, globalSearch); } - /** - * Cancel search dialog if it is open. - */ - void stopSearch() { - // Close search dialog - SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); - searchManager.stopSearch(); - // Restore search widget to its normal position - Search searchWidget = mWorkspace.findSearchWidgetOnCurrentScreen(); - if (searchWidget != null) { - searchWidget.stopSearch(false); - } - } - @Override public boolean onCreateOptionsMenu(Menu menu) { if (isWorkspaceLocked()) { @@ -1094,51 +1022,21 @@ public final class Launcher extends Activity void addAppWidget(Intent data) { // TODO: catch bad widget exception when sent int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1); + AppWidgetProviderInfo appWidget = mAppWidgetManager.getAppWidgetInfo(appWidgetId); - String customWidget = data.getStringExtra(EXTRA_CUSTOM_WIDGET); - if (SEARCH_WIDGET.equals(customWidget)) { - // We don't need this any more, since this isn't a real app widget. - mAppWidgetHost.deleteAppWidgetId(appWidgetId); - // add the search widget - addSearch(); + if (appWidget.configure != null) { + // Launch over to configure widget, if needed + Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE); + intent.setComponent(appWidget.configure); + intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); + + startActivityForResult(intent, REQUEST_CREATE_APPWIDGET); } else { - AppWidgetProviderInfo appWidget = mAppWidgetManager.getAppWidgetInfo(appWidgetId); - - if (appWidget.configure != null) { - // Launch over to configure widget, if needed - Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE); - intent.setComponent(appWidget.configure); - intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); - - startActivityForResult(intent, REQUEST_CREATE_APPWIDGET); - } else { - // Otherwise just add it - onActivityResult(REQUEST_CREATE_APPWIDGET, Activity.RESULT_OK, data); - } + // Otherwise just add it + onActivityResult(REQUEST_CREATE_APPWIDGET, Activity.RESULT_OK, data); } } - void addSearch() { - final Widget info = Widget.makeSearch(); - final CellLayout.CellInfo cellInfo = mAddItemCellInfo; - - final int[] xy = mCellCoordinates; - final int spanX = info.spanX; - final int spanY = info.spanY; - - if (!findSlot(cellInfo, xy, spanX, spanY)) return; - - LauncherModel.addItemToDatabase(this, info, LauncherSettings.Favorites.CONTAINER_DESKTOP, - mWorkspace.getCurrentScreen(), xy[0], xy[1], false); - - final View view = mInflater.inflate(info.layoutResource, null); - view.setTag(info); - Search search = (Search) view.findViewById(R.id.widget_search); - search.setLauncher(this); - - mWorkspace.addInCurrentScreen(view, xy[0], xy[1], info.spanX, spanY); - } - void processShortcut(Intent intent, int requestCodeApplication, int requestCodeShortcut) { // Handle case where user selected "Applications" String applicationName = getResources().getString(R.string.group_applications); @@ -1937,22 +1835,6 @@ public final class Launcher extends Activity Intent pickIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK); pickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); - // add the search widget - ArrayList customInfo = - new ArrayList(); - AppWidgetProviderInfo info = new AppWidgetProviderInfo(); - info.provider = new ComponentName(getPackageName(), "XXX.YYY"); - info.label = getString(R.string.group_search); - info.icon = R.drawable.ic_search_widget; - customInfo.add(info); - pickIntent.putParcelableArrayListExtra( - AppWidgetManager.EXTRA_CUSTOM_INFO, customInfo); - ArrayList customExtras = new ArrayList(); - Bundle b = new Bundle(); - b.putString(EXTRA_CUSTOM_WIDGET, SEARCH_WIDGET); - customExtras.add(b); - pickIntent.putParcelableArrayListExtra( - AppWidgetManager.EXTRA_CUSTOM_EXTRAS, customExtras); // start the pick activity startActivityForResult(pickIntent, REQUEST_PICK_APPWIDGET); break; @@ -2097,19 +1979,6 @@ public final class Launcher extends Activity workspace.addInScreen(newLiveFolder, item.screen, item.cellX, item.cellY, 1, 1, false); break; - case LauncherSettings.Favorites.ITEM_TYPE_WIDGET_SEARCH: - final int screen = workspace.getCurrentScreen(); - final View view = mInflater.inflate(R.layout.widget_search, - (ViewGroup) workspace.getChildAt(screen), false); - - Search search = (Search) view.findViewById(R.id.widget_search); - search.setLauncher(this); - - final Widget widget = (Widget) item; - view.setTag(widget); - - workspace.addWidget(view, widget, false); - break; } } @@ -2230,7 +2099,6 @@ public final class Launcher extends Activity public void dumpState() { Log.d(TAG, "BEGIN launcher2 dump state for launcher " + this); Log.d(TAG, "mSavedState=" + mSavedState); - Log.d(TAG, "mIsNewIntent=" + mIsNewIntent); Log.d(TAG, "mWorkspaceLoading=" + mWorkspaceLoading); Log.d(TAG, "mRestoring=" + mRestoring); Log.d(TAG, "mWaitingForResult=" + mWaitingForResult); diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java index 97fa554c2f..cafb9fabeb 100644 --- a/src/com/android/launcher2/LauncherModel.java +++ b/src/com/android/launcher2/LauncherModel.java @@ -651,7 +651,6 @@ public class LauncherModel extends BroadcastReceiver { ApplicationInfo info; String intentDescription; - Widget widgetInfo; LauncherAppWidgetInfo appWidgetInfo; int container; long id; @@ -770,25 +769,6 @@ public class LauncherModel extends BroadcastReceiver { mFolders.put(liveFolderInfo.id, liveFolderInfo); break; - case LauncherSettings.Favorites.ITEM_TYPE_WIDGET_SEARCH: - widgetInfo = Widget.makeSearch(); - - container = c.getInt(containerIndex); - if (container != LauncherSettings.Favorites.CONTAINER_DESKTOP) { - Log.e(TAG, "Widget found where container " - + "!= CONTAINER_DESKTOP ignoring!"); - continue; - } - - widgetInfo.id = c.getLong(idIndex); - widgetInfo.screen = c.getInt(screenIndex); - widgetInfo.container = container; - widgetInfo.cellX = c.getInt(cellXIndex); - widgetInfo.cellY = c.getInt(cellYIndex); - - mItems.add(widgetInfo); - break; - case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET: // Read all Launcher-specific widget details int appWidgetId = c.getInt(appWidgetIdIndex); diff --git a/src/com/android/launcher2/LauncherProvider.java b/src/com/android/launcher2/LauncherProvider.java index c3ceefdd32..47d8991259 100644 --- a/src/com/android/launcher2/LauncherProvider.java +++ b/src/com/android/launcher2/LauncherProvider.java @@ -58,7 +58,7 @@ public class LauncherProvider extends ContentProvider { private static final String DATABASE_NAME = "launcher.db"; - private static final int DATABASE_VERSION = 6; + private static final int DATABASE_VERSION = 7; static final String AUTHORITY = "com.android.launcher2.settings"; @@ -382,7 +382,13 @@ public class LauncherProvider extends ContentProvider { version = 6; } } - + + if (version < 7) { + // Version 7 gets rid of the special search widget. + convertWidgets(db); + version = 7; + } + if (version != DATABASE_VERSION) { Log.w(TAG, "Destroying all old data."); db.execSQL("DROP TABLE IF EXISTS " + TABLE_FAVORITES); @@ -466,6 +472,7 @@ public class LauncherProvider extends ContentProvider { final int[] bindSources = new int[] { Favorites.ITEM_TYPE_WIDGET_CLOCK, Favorites.ITEM_TYPE_WIDGET_PHOTO_FRAME, + Favorites.ITEM_TYPE_WIDGET_SEARCH, }; final ArrayList bindTargets = new ArrayList(); @@ -473,7 +480,9 @@ public class LauncherProvider extends ContentProvider { "com.android.alarmclock.AnalogAppWidgetProvider")); bindTargets.add(new ComponentName("com.android.camera", "com.android.camera.PhotoAppWidgetProvider")); - + bindTargets.add(new ComponentName("com.android.quicksearchbox", + "com.android.quicksearchbox.SearchWidgetProvider")); + final String selectWhere = buildOrWhereString(Favorites.ITEM_TYPE, bindSources); Cursor c = null; @@ -482,7 +491,7 @@ public class LauncherProvider extends ContentProvider { db.beginTransaction(); try { // Select and iterate through each matching widget - c = db.query(TABLE_FAVORITES, new String[] { Favorites._ID }, + c = db.query(TABLE_FAVORITES, new String[] { Favorites._ID, Favorites.ITEM_TYPE }, selectWhere, null, null, null, null); if (LOGD) Log.d(TAG, "found upgrade cursor count=" + c.getCount()); @@ -490,7 +499,8 @@ public class LauncherProvider extends ContentProvider { final ContentValues values = new ContentValues(); while (c != null && c.moveToNext()) { long favoriteId = c.getLong(0); - + int favoriteType = c.getInt(1); + // Allocate and update database with new appWidgetId try { int appWidgetId = mAppWidgetHost.allocateAppWidgetId(); @@ -499,13 +509,18 @@ public class LauncherProvider extends ContentProvider { Log.d(TAG, "allocated appWidgetId=" + appWidgetId + " for favoriteId=" + favoriteId); } - values.clear(); - values.put(LauncherSettings.Favorites.APPWIDGET_ID, appWidgetId); - + values.put(Favorites.ITEM_TYPE, Favorites.ITEM_TYPE_APPWIDGET); + values.put(Favorites.APPWIDGET_ID, appWidgetId); + // Original widgets might not have valid spans when upgrading - values.put(LauncherSettings.Favorites.SPANX, 2); - values.put(LauncherSettings.Favorites.SPANY, 2); + if (favoriteType == Favorites.ITEM_TYPE_WIDGET_SEARCH) { + values.put(LauncherSettings.Favorites.SPANX, 4); + values.put(LauncherSettings.Favorites.SPANY, 1); + } else { + values.put(LauncherSettings.Favorites.SPANX, 2); + values.put(LauncherSettings.Favorites.SPANY, 2); + } String updateWhere = Favorites._ID + "=" + favoriteId; db.update(TABLE_FAVORITES, values, updateWhere, null); @@ -646,13 +661,9 @@ public class LauncherProvider extends ContentProvider { } private boolean addSearchWidget(SQLiteDatabase db, ContentValues values) { - // Add a search box - values.put(Favorites.ITEM_TYPE, Favorites.ITEM_TYPE_WIDGET_SEARCH); - values.put(Favorites.SPANX, 4); - values.put(Favorites.SPANY, 1); - db.insert(TABLE_FAVORITES, null, values); - - return true; + ComponentName cn = new ComponentName("com.android.quicksearchbox", + "com.android.quicksearchbox.SearchWidgetProvider"); + return addAppWidget(db, values, cn, 4, 1); } private boolean addClockWidget(SQLiteDatabase db, ContentValues values) { @@ -698,7 +709,13 @@ public class LauncherProvider extends ContentProvider { } ComponentName cn = new ComponentName(packageName, className); - + int spanX = a.getInt(R.styleable.Favorite_spanX, 0); + int spanY = a.getInt(R.styleable.Favorite_spanY, 0); + return addAppWidget(db, values, cn, spanX, spanY); + } + + private boolean addAppWidget(SQLiteDatabase db, ContentValues values, ComponentName cn, + int spanX, int spanY) { boolean allocatedAppWidgets = false; final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(mContext); @@ -706,8 +723,8 @@ public class LauncherProvider extends ContentProvider { int appWidgetId = mAppWidgetHost.allocateAppWidgetId(); values.put(Favorites.ITEM_TYPE, Favorites.ITEM_TYPE_APPWIDGET); - values.put(Favorites.SPANX, a.getString(R.styleable.Favorite_spanX)); - values.put(Favorites.SPANY, a.getString(R.styleable.Favorite_spanY)); + values.put(Favorites.SPANX, spanX); + values.put(Favorites.SPANY, spanY); values.put(Favorites.APPWIDGET_ID, appWidgetId); db.insert(TABLE_FAVORITES, null, values); diff --git a/src/com/android/launcher2/Search.java b/src/com/android/launcher2/Search.java deleted file mode 100644 index 283042d19b..0000000000 --- a/src/com/android/launcher2/Search.java +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright (C) 2008 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.app.Activity; -import android.content.ActivityNotFoundException; -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.content.res.Configuration; -import android.graphics.drawable.Drawable; -import android.os.Bundle; -import android.util.AttributeSet; -import android.util.Log; -import android.view.KeyEvent; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.View.OnKeyListener; -import android.view.View.OnLongClickListener; -import android.view.animation.AccelerateDecelerateInterpolator; -import android.view.animation.Animation; -import android.view.animation.Interpolator; -import android.view.animation.Transformation; -import android.view.inputmethod.InputMethodManager; -import android.widget.ImageButton; -import android.widget.LinearLayout; -import android.widget.TextView; - -public class Search extends LinearLayout - implements OnClickListener, OnKeyListener, OnLongClickListener { - - // Speed at which the widget slides up/down, in pixels/ms. - private static final float ANIMATION_VELOCITY = 1.0f; - - /** The distance in dips between the optical top of the widget and the top if its bounds */ - private static final float WIDGET_TOP_OFFSET = 9; - - - private final String TAG = "Launcher.SearchWidget"; - - private Launcher mLauncher; - - private TextView mSearchText; - private ImageButton mVoiceButton; - - /** The animation that morphs the search widget to the search dialog. */ - private Animation mMorphAnimation; - - /** The animation that morphs the search widget back to its normal position. */ - private Animation mUnmorphAnimation; - - // These four are passed to Launcher.startSearch() when the search widget - // has finished morphing. They are instance variables to make it possible to update - // them while the widget is morphing. - private String mInitialQuery; - private boolean mSelectInitialQuery; - private Bundle mAppSearchData; - private boolean mGlobalSearch; - - // For voice searching - private Intent mVoiceSearchIntent; - - private int mWidgetTopOffset; - - /** - * Used to inflate the Workspace from XML. - * - * @param context The application's context. - * @param attrs The attributes set containing the Workspace's customization values. - */ - public Search(Context context, AttributeSet attrs) { - super(context, attrs); - - final float scale = context.getResources().getDisplayMetrics().density; - mWidgetTopOffset = Math.round(WIDGET_TOP_OFFSET * scale); - - Interpolator interpolator = new AccelerateDecelerateInterpolator(); - - mMorphAnimation = new ToParentOriginAnimation(); - // no need to apply transformation before the animation starts, - // since the gadget is already in its normal place. - mMorphAnimation.setFillBefore(false); - // stay in the top position after the animation finishes - mMorphAnimation.setFillAfter(true); - mMorphAnimation.setInterpolator(interpolator); - mMorphAnimation.setAnimationListener(new Animation.AnimationListener() { - // The amount of time before the animation ends to show the search dialog. - private static final long TIME_BEFORE_ANIMATION_END = 80; - - // The runnable which we'll pass to our handler to show the search dialog. - private final Runnable mShowSearchDialogRunnable = new Runnable() { - public void run() { - showSearchDialog(); - } - }; - - public void onAnimationEnd(Animation animation) { } - public void onAnimationRepeat(Animation animation) { } - public void onAnimationStart(Animation animation) { - // Make the search dialog show up ideally *just* as the animation reaches - // the top, to aid the illusion that the widget becomes the search dialog. - // Otherwise, there is a short delay when the widget reaches the top before - // the search dialog shows. We do this roughly 80ms before the animation ends. - getHandler().postDelayed( - mShowSearchDialogRunnable, - Math.max(mMorphAnimation.getDuration() - TIME_BEFORE_ANIMATION_END, 0)); - } - }); - - mUnmorphAnimation = new FromParentOriginAnimation(); - // stay in the top position until the animation starts - mUnmorphAnimation.setFillBefore(true); - // no need to apply transformation after the animation finishes, - // since the gadget is now back in its normal place. - mUnmorphAnimation.setFillAfter(false); - mUnmorphAnimation.setInterpolator(interpolator); - mUnmorphAnimation.setAnimationListener(new Animation.AnimationListener(){ - public void onAnimationEnd(Animation animation) { - clearAnimation(); - } - public void onAnimationRepeat(Animation animation) { } - public void onAnimationStart(Animation animation) { } - }); - - mVoiceSearchIntent = new Intent(android.speech.RecognizerIntent.ACTION_WEB_SEARCH); - mVoiceSearchIntent.putExtra(android.speech.RecognizerIntent.EXTRA_LANGUAGE_MODEL, - android.speech.RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); - } - - /** - * Implements OnClickListener. - */ - public void onClick(View v) { - if (v == mVoiceButton) { - startVoiceSearch(); - } else { - mLauncher.onSearchRequested(); - } - } - - private void startVoiceSearch() { - try { - getContext().startActivity(mVoiceSearchIntent); - } catch (ActivityNotFoundException ex) { - // Should not happen, since we check the availability of - // voice search before showing the button. But just in case... - Log.w(TAG, "Could not find voice search activity"); - } - } - - /** - * Sets the query text. The query field is not editable, instead we forward - * the key events to the launcher, which keeps track of the text, - * calls setQuery() to show it, and gives it to the search dialog. - */ - public void setQuery(String query) { - mSearchText.setText(query, TextView.BufferType.NORMAL); - } - - /** - * Morph the search gadget to the search dialog. - * See {@link Activity#startSearch()} for the arguments. - */ - public void startSearch(String initialQuery, boolean selectInitialQuery, - Bundle appSearchData, boolean globalSearch) { - mInitialQuery = initialQuery; - mSelectInitialQuery = selectInitialQuery; - mAppSearchData = appSearchData; - mGlobalSearch = globalSearch; - - if (isAtTop()) { - showSearchDialog(); - } else { - // Call up the keyboard before we actually call the search dialog so that it - // (hopefully) animates in at about the same time as the widget animation, and - // so that it becomes available as soon as possible. Only do this if a hard - // keyboard is not currently available. - if (getContext().getResources().getConfiguration().hardKeyboardHidden == - Configuration.HARDKEYBOARDHIDDEN_YES) { - InputMethodManager inputManager = (InputMethodManager) - getContext().getSystemService(Context.INPUT_METHOD_SERVICE); - inputManager.showSoftInputUnchecked(0, null); - } - - // Start the animation, unless it has already started. - if (getAnimation() != mMorphAnimation) { - mMorphAnimation.setDuration(getAnimationDuration()); - startAnimation(mMorphAnimation); - } - } - } - - /** - * Shows the system search dialog immediately, without any animation. - */ - private void showSearchDialog() { - mLauncher.showSearchDialog( - mInitialQuery, mSelectInitialQuery, mAppSearchData, mGlobalSearch); - } - - /** - * Restore the search gadget to its normal position. - * - * @param animate Whether to animate the movement of the gadget. - */ - public void stopSearch(boolean animate) { - setQuery(""); - - // Only restore if we are not already restored. - if (getAnimation() == mMorphAnimation) { - if (animate && !isAtTop()) { - mUnmorphAnimation.setDuration(getAnimationDuration()); - startAnimation(mUnmorphAnimation); - } else { - clearAnimation(); - } - } - } - - private boolean isAtTop() { - return getWidgetTop() == 0; - } - - private int getAnimationDuration() { - return (int) (getWidgetTop() / ANIMATION_VELOCITY); - } - - /** - * Modify clearAnimation() to invalidate the parent. This works around - * an issue where the region where the end of the animation placed the view - * was not redrawn after clearing the animation. - */ - @Override - public void clearAnimation() { - Animation animation = getAnimation(); - if (animation != null) { - super.clearAnimation(); - if (animation.hasEnded() - && animation.getFillAfter() - && animation.willChangeBounds()) { - View parent = (View) getParent(); - if (parent != null) parent.invalidate(); - } else { - invalidate(); - } - } - } - - public boolean onKey(View v, int keyCode, KeyEvent event) { - if (!event.isSystem() && - (keyCode != KeyEvent.KEYCODE_DPAD_UP) && - (keyCode != KeyEvent.KEYCODE_DPAD_DOWN) && - (keyCode != KeyEvent.KEYCODE_DPAD_LEFT) && - (keyCode != KeyEvent.KEYCODE_DPAD_RIGHT) && - (keyCode != KeyEvent.KEYCODE_DPAD_CENTER)) { - // Forward key events to Launcher, which will forward text - // to search dialog - switch (event.getAction()) { - case KeyEvent.ACTION_DOWN: - return mLauncher.onKeyDown(keyCode, event); - case KeyEvent.ACTION_MULTIPLE: - return mLauncher.onKeyMultiple(keyCode, event.getRepeatCount(), event); - case KeyEvent.ACTION_UP: - return mLauncher.onKeyUp(keyCode, event); - } - } - return false; - } - - /** - * Implements OnLongClickListener to pass long clicks on child views - * to the widget. This makes it possible to pick up the widget by long - * clicking on the text field or a button. - */ - public boolean onLongClick(View v) { - return performLongClick(); - } - - @Override - protected void onFinishInflate() { - super.onFinishInflate(); - - mSearchText = (TextView) findViewById(R.id.search_src_text); - mVoiceButton = (ImageButton) findViewById(R.id.search_voice_btn); - - mSearchText.setOnKeyListener(this); - - mSearchText.setOnClickListener(this); - mVoiceButton.setOnClickListener(this); - setOnClickListener(this); - - mSearchText.setOnLongClickListener(this); - mVoiceButton.setOnLongClickListener(this); - - // Set the placeholder text to be the Google logo within the search widget. - Drawable googlePlaceholder = - getContext().getResources().getDrawable(R.drawable.placeholder_google); - mSearchText.setCompoundDrawablesWithIntrinsicBounds(googlePlaceholder, null, null, null); - - configureVoiceSearchButton(); - } - - @Override - public void onDetachedFromWindow() { - super.onDetachedFromWindow(); - } - - /** - * If appropriate & available, configure voice search - * - * Note: Because the home screen search widget is always web search, we only check for - * getVoiceSearchLaunchWebSearch() modes. We don't support the alternate form of app-specific - * voice search. - */ - private void configureVoiceSearchButton() { - // Enable the voice search button if there is an activity that can handle it - PackageManager pm = getContext().getPackageManager(); - ResolveInfo ri = pm.resolveActivity(mVoiceSearchIntent, - PackageManager.MATCH_DEFAULT_ONLY); - boolean voiceSearchVisible = ri != null; - - // finally, set visible state of voice search button, as appropriate - mVoiceButton.setVisibility(voiceSearchVisible ? View.VISIBLE : View.GONE); - } - - /** - * Sets the {@link Launcher} that this gadget will call on to display the search dialog. - */ - public void setLauncher(Launcher launcher) { - mLauncher = launcher; - } - - /** - * Moves the view to the top left corner of its parent. - */ - private class ToParentOriginAnimation extends Animation { - @Override - protected void applyTransformation(float interpolatedTime, Transformation t) { - float dx = -getLeft() * interpolatedTime; - float dy = -getWidgetTop() * interpolatedTime; - t.getMatrix().setTranslate(dx, dy); - } - } - - /** - * Moves the view from the top left corner of its parent. - */ - private class FromParentOriginAnimation extends Animation { - @Override - protected void applyTransformation(float interpolatedTime, Transformation t) { - float dx = -getLeft() * (1.0f - interpolatedTime); - float dy = -getWidgetTop() * (1.0f - interpolatedTime); - t.getMatrix().setTranslate(dx, dy); - } - } - - /** - * The widget is centered vertically within it's 4x1 slot. This is accomplished by nesting - * the actual widget inside another view. For animation purposes, we care about the top of the - * actual widget rather than it's container. This method return the top of the actual widget. - */ - private int getWidgetTop() { - return getTop() + getChildAt(0).getTop() + mWidgetTopOffset; - } -} diff --git a/src/com/android/launcher2/Widget.java b/src/com/android/launcher2/Widget.java deleted file mode 100644 index 348acee7cb..0000000000 --- a/src/com/android/launcher2/Widget.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2008 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.ContentValues; -import android.graphics.Bitmap; - -/** - * Represents one instance of a Launcher widget, such as search. - */ -class Widget extends ItemInfo { - int layoutResource; - - static Widget makeSearch() { - Widget w = new Widget(); - w.itemType = LauncherSettings.Favorites.ITEM_TYPE_WIDGET_SEARCH; - w.spanX = 4; - w.spanY = 1; - w.layoutResource = R.layout.widget_search; - return w; - } -} diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index f1ee817da0..927bd4c0fc 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -332,16 +332,6 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag } } - void addWidget(View view, Widget widget) { - addInScreen(view, widget.screen, widget.cellX, widget.cellY, widget.spanX, - widget.spanY, false); - } - - void addWidget(View view, Widget widget, boolean insert) { - addInScreen(view, widget.screen, widget.cellX, widget.cellY, widget.spanX, - widget.spanY, insert); - } - CellLayout.CellInfo findAllVacantCells(boolean[] occupied) { CellLayout group = (CellLayout) getChildAt(mCurrentScreen); if (group != null) { @@ -856,8 +846,7 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag View child = cellInfo.cell; // Make sure the drag was started by a long press as opposed to a long click. - // Note that Search takes focus when clicked rather than entering touch mode - if (!child.isInTouchMode() && !(child instanceof Search)) { + if (!child.isInTouchMode()) { return; } @@ -1123,29 +1112,6 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag return result; } - /** - * Find a search widget on the given screen - */ - private Search findSearchWidget(CellLayout screen) { - final int count = screen.getChildCount(); - for (int i = 0; i < count; i++) { - View v = screen.getChildAt(i); - if (v instanceof Search) { - return (Search) v; - } - } - return null; - } - - /** - * Gets the first search widget on the current screen, if there is one. - * Returns null otherwise. - */ - public Search findSearchWidgetOnCurrentScreen() { - CellLayout currentScreen = (CellLayout)getChildAt(mCurrentScreen); - return findSearchWidget(currentScreen); - } - public Folder getFolderForTag(Object tag) { int screenCount = getChildCount(); for (int screen = 0; screen < screenCount; screen++) {