summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Fix direction of swipe stringsElektroschmock2018-09-241-2/+2
| | | | | | | On a LTR system the -1 page is on the left, so you need to swipe to the right to access it. Change-Id: I092f5ed1a27045f8a42b62b93f74c4d3f278d6d7
* Automatic translation importMichael Bestas2018-08-1611-1/+30
| | | | Change-Id: Iccc22f28b921fd82292f2fd09a67b28b60fccfc8
* Automatic translation importMichael Bestas2018-08-05105-30/+353
| | | | Change-Id: If95c76daa61514f587e55edce8dea7349b258b83
* Fix another typoMichael Bestas2018-08-041-1/+1
| | | | Change-Id: I68b97ade4a16f1c7d309ba7686845c35876410f0
* Fix Google app stringsMichael Bestas2018-08-041-3/+3
| | | | | | | | * Don't use camel case * Fix typo * Uniform usage of homescreen Change-Id: Ib18375d8b02486f71a36b036e30ba90c4a573bc2
* Trebuchet: fix derpEdward Cross2018-07-311-5/+1
| | | | | | | | * a77601a96c9dc0f7489e87a6ab0bb2499b8a9461 made it load predictive apps through the SearchLauncherCallback instead of our implementation Change-Id: I939adb6e0c4009cd22df4f81eb0ce5ecb30134ad
* Launcher3: Google Feed integrationEdward Cross2018-07-1814-19/+395
| | | | | | | | If Google Search is installed, the Google Feed can be found at the -1 screen (which is the very left). This feature is enabled by default. Change-Id: I495196818699fd378cd60e6dd61b07a0ab951762
* Revert "Trebuchet: feed integration support"Joey2018-07-1810-1026/+0
| | | | | | This reverts commit 8dee56deeed7b09a9e5e9f4d21f27aa9d495930c. Change-Id: I911aff9099b69c07f784b89689dfeae0ec0e223c
* gradle: update, compatibility with newer AS versionsAlexander Martinz2018-07-141-18/+18
| | | | | | | | | | | | | | | | | *) Remove buildToolsVersion to let the gradle plugin pick the best one automatically. "If you're using Android plugin for Gradle 3.0.0 or higher, your project automatically uses a default version of the build tools that the plugin specifies." *) Upgrade android gradle plugin to latest stable version *) Upgrade protobuf plugin to 0.8.6, which does not depend on private APIs anymore and allows using newer AS versions. *) Update to new syntax, replace "compile" with "implementation" Change-Id: I87a3e444011fa46795908e85bafd9ed96cd78a97 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* Edit dialog: dynamically apply foreground to iconAlexander Martinz2018-07-142-18/+25
| | | | | | | | | | | If there are no icon packs installed, we can not edit the icon, though it always applied a foreground and click listener. Only apply foreground and set click listener, if there are icon packs installed and clicking on it actually does something. Change-Id: I09ac1473c75d5edcf5e940a0e5bb2ec7f2296e8f Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* Edit dialog: change brush color from black to whiteAlexander Martinz2018-07-141-2/+2
| | | | | | | | | | This looks really weird on dark color accents. As we are supporting dynamic color accents with RRO overlays, we might need to switch to something dynamically in future. Change-Id: I71fccc301de43d55bf7e9a31a3166b7a59a2c236 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* WallpaperManager: do not crash because of insufficient permissionsAlexander Martinz2018-07-141-1/+4
| | | | | | | | | | In order to get the wallpaper, the app needs to be able to read external storage. Check if READ_EXTERNAL_STORAGE is granted before using it. Change-Id: I1559a3b9fa3dc3e20180bc380ddd4fa70eda1be3 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* IconsHandler: use ViewHolder, prevent AsyncTask leaks, cleanupAlexander Martinz2018-07-141-28/+55
| | | | | | | | | *) Use a ViewHolder pattern for the list *) Make the AsyncTask static to prevent leaks *) Remove unnecessary null checks when using instanceOf Change-Id: I333758874c98341552a1cce626e208cc6096ecb1 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* logging: prevent NPE at logDeepShortcutsOpenAlexander Martinz2018-07-141-1/+1
| | | | | | | | | getLaunchProviderRecursive(View) can return null. Check if provider is null before using it. Change-Id: I8cd157ba315e1dcc1fed428e0474b55b774bbd2f Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* IconsHandler: prevent resource not found exception when getting xmlAlexander Martinz2018-07-141-3/+3
| | | | | | | | | JavaDoc of Resources#getIdentifier(...): Returns - The associated resource identifier. Returns 0 if no such resource was found. (0 is not a valid resource ID.) Change-Id: Ia9f4ea9efb56bb54d94729f70a3afcec5bce7999 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* Automatic translation importMichael Bestas2018-07-092-0/+4
| | | | Change-Id: Ic02d71841ded552fe7c1b370607b5afada970126
* Trebuchet: use system's accentJoey2018-07-063-5/+0
| | | | | Change-Id: Ic4d084179736aba1559fdd4ab0fef20c452dedf5 Signed-off-by: Joey <joey@lineageos.org>
* Trebuchet: the superior siege weapon doesn't need paddings in allApps' iconsJoey2018-07-061-2/+2
| | | | | Change-Id: Ia46972410d357cf167d2bdb60a617647e8d5b6cb Signed-off-by: Joey <joey@lineageos.org>
* IconPicker: clone drawables array to prevent IOOBEAlexander Martinz2018-07-041-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When binding the view holder, we are making use of lists, which can change. In case the lists are changing after binding, we can get an IOOBE when the click listener gets called. To work around this create a shallow copy of the lists and use it. ----- Stack Trace: java.lang.IndexOutOfBoundsException: Index: 44, Size: 44 at java.util.ArrayList.get(ArrayList.java:437) at com.android.launcher3.icons.IconPickerActivity$GridAdapter.lambda$-com_android_launcher3_icons_IconPickerActivity$GridAdapter_9734(IconPickerActivity.java:248) at com.android.launcher3.icons.-$Lambda$aHbfyH3p1fvGkmuJq2f35Z_cj_A$2.$m$0 at com.android.launcher3.icons.-$Lambda$aHbfyH3p1fvGkmuJq2f35Z_cj_A$2.onClick at android.view.View.performClick(View.java:6320) at android.view.View$PerformClick.run(View.java:25087) at android.os.Handler.handleCallback(Handler.java:869) at android.os.Handler.dispatchMessage(Handler.java:101) at android.os.Looper.loop(Looper.java:206) at android.app.ActivityThread.main(ActivityThread.java:6733) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:845) ----- Change-Id: Id3bc8a01c29517230765a032f220bccccda2b386 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* Automatic translation importMichael Bestas2018-06-1812-1/+37
| | | | Change-Id: Ia8c9ff9630d094826c53ecd38f2a46cdd62d333f
* IconCache: fix nullpointer exceptionsAlexander Martinz2018-06-181-4/+15
| | | | | | | | | | | | | | | | | | | | | | | | | LauncherActivityInfo's or resolved activities can be null. Example crash: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.ComponentName android.content.pm.LauncherActivityInfo.getComponentName()' on a null object reference at com.android.launcher3.IconCache.getCacheEntry(IconCache.java:392) at com.android.launcher3.Launcher.startEdit(Launcher.java:3988) at com.android.launcher3.popup.SystemShortcut$AppEdit.lambda$-com_android_launcher3_popup_SystemShortcut$AppEdit_4399(SystemShortcut.java:115) at com.android.launcher3.popup.-$Lambda$_SMHeS1Apq5nUPo60kvmkZszeNE.$m$0 at com.android.launcher3.popup.-$Lambda$_SMHeS1Apq5nUPo60kvmkZszeNE.onClick at android.view.View.performClick(View.java:6320) at android.view.View$PerformClick.run(View.java:25087) at android.os.Handler.handleCallback(Handler.java:869) at android.os.Handler.dispatchMessage(Handler.java:101) at android.os.Looper.loop(Looper.java:206) at android.app.ActivityThread.main(ActivityThread.java:6733) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:845) Issue: SHIFTOS-SW-31 Change-Id: If5f027e3146b358036b1ac1a1e973467d4fca2c4 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* Trebuchet: don't log apps for predictive suggestions when disabledJoey2018-06-123-0/+12
| | | | | Change-Id: I5d9b8174431cfbfa8c0227c31a9ec288433d6d4c Signed-off-by: Joey <joey@lineageos.org>
* Automatic translation importMichael Bestas2018-06-0320-3/+69
| | | | Change-Id: Ia5aebbd0346dfcb066d159807349c73f21c5902b
* Trebuchet: make forced adaptive icons optionalJoey2018-05-216-4/+58
| | | | | Change-Id: Ie84af7114118f54b2d267a35ce24dd5e58c0be22 Signed-off-by: Joey <joey@lineageos.org>
* config: enable LEGACY_ICON_TREATMENTAlexander Martinz2018-05-211-1/+1
| | | | | Change-Id: I724990a78d96b55724ee6387eb243cfb95871360 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* Icons: wrap all legacy icons to adaptive iconsAlexander Martinz2018-05-212-3/+9
| | | | | | | | | | Previously only apps targetting API 26 (O) would get wrapped as adaptive icon, resulting in legacy icons still looking out of place. Wrap all icons, independent of target API. Change-Id: I3647d95c7f4f5c0515a14cbf4eebd5afcdfb38ae Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* Icons: fix non-adaptive icon handlingAlexander Martinz2018-05-213-25/+28
| | | | | | | The icon pack support broke this feature, fix it up to make it work again. Change-Id: I22e1ba953fc8cabb0e7633a3c5cf3ce5c07cf762 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* Trebuchet: improve predictive appsJoey2018-05-215-97/+298
| | | | | | | | | | | | | | - Store data in a sql db - Categorize app launch between - Day - Night - Headphones The suggestions will change on the go basing on whether an headset is plugged in or it's day or night Change-Id: Ic9d8dd4dafbb1a56157140119df71efd6fb4349a Signed-off-by: Joey <joey@lineageos.org>
* Automatic translation importMichael Bestas2018-05-086-5/+51
| | | | Change-Id: Ie7169cfe1308493ebd515434d5d8e07848e2c416
* Trebuchet: update build.gradleJoey2018-05-021-2/+6
| | | | | Change-Id: If9f4d4ccddd2ea8e9cc44881964d698827609465 Signed-off-by: Joey <joey@lineageos.org>
* LauncherProvider: fix crash when disk is fullAlexander Martinz2018-04-291-2/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Stacktrace: android.database.sqlite.SQLiteFullException: database or disk is full (code 13) at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(SQLiteConnection.java) at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:750) at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754) at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64) at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1604) at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1550) at com.android.launcher3.LauncherProvider.update(LauncherProvider.java:360) at android.content.ContentProvider$Transport.update(ContentProvider.java:359) at android.content.ContentResolver.update(ContentResolver.java:1672) at com.android.launcher3.model.ModelWriter$UpdateItemRunnable.run(ModelWriter.java:290) at com.android.launcher3.util.LooperExecutor.execute(LooperExecutor.java:39) at com.android.launcher3.model.ModelWriter.updateItemInDatabase(ModelWriter.java:197) at com.android.launcher3.model.PackageUpdatedTask.execute(PackageUpdatedTask.java:258) at com.android.launcher3.model.BaseModelUpdateTask.run(BaseModelUpdateTask.java:67) at android.os.Handler.handleCallback(Handler.java:869) at android.os.Handler.dispatchMessage(Handler.java:101) at android.os.Looper.loop(Looper.java:206) at android.os.HandlerThread.run(HandlerThread.java:65) Issue: SHIFTOS-SW-18 Change-Id: I4c4fa9239b9ff14a6614187c450d12b6006fde82 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* PagedView: fix pointer index out of rangeAlexander Martinz2018-04-291-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Stacktrace: java.lang.IllegalArgumentException: pointerIndex out of range at android.view.MotionEvent.nativeGetAxisValue(MotionEvent.java) at android.view.MotionEvent.getX(MotionEvent.java:2201) at com.android.launcher3.PagedView.onTouchEvent(PagedView.java:1557) at android.view.View.dispatchTouchEvent(View.java:11842) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3068) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2700) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3074) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2714) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3074) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2714) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3074) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2714) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3074) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2714) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3074) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2714) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:464) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1854) at android.app.Activity.dispatchTouchEvent(Activity.java:3292) at com.android.launcher3.Launcher.dispatchTouchEvent(Launcher.java:2781) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:426) at android.view.View.dispatchPointerEvent(View.java:12092) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5279) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5084) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4581) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4634) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4600) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4747) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4608) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4804) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4581) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4634) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4600) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4608) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4581) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7259) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7233) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7176) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7431) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) at android.os.MessageQueue.nativePollOnce(MessageQueue.java) at android.os.MessageQueue.next(MessageQueue.java:325) at android.os.Looper.loop(Looper.java:147) at android.app.ActivityThread.main(ActivityThread.java:6733) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:845) Issue: SHIFTOS-SW-19 Change-Id: Idcab340d65ee2a4782052b4d1a9de73a886afef7 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* PredictiveAppsProvider: fix null pointer exceptionAlexander Martinz2018-04-271-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If component is null, we call ComponentName#getPackageName() on a null object reference. Happened when opening an app while it was upgraded. ---------- Stacktrace: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.ComponentName.getPackageName()' on a null object reference at com.android.launcher3.allapps.PredictiveAppsProvider.buildComponentString(PredictiveAppsProvider.java:99) at com.android.launcher3.allapps.PredictiveAppsProvider.updateComponentCount(PredictiveAppsProvider.java:32) at com.android.launcher3.Launcher.startActivitySafely(Launcher.java:2764) at com.android.launcher3.Launcher.startAppShortcutOrInfoActivity(Launcher.java:2520) at com.android.launcher3.Launcher.onClick(Launcher.java:2352) at android.view.View.performClick(View.java:6320) at android.view.View$PerformClick.run(View.java:25087) at android.os.Handler.handleCallback(Handler.java:869) at android.os.Handler.dispatchMessage(Handler.java:101) at android.os.Looper.loop(Looper.java:206) at android.app.ActivityThread.main(ActivityThread.java:6733) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:845) ---------- Issue: BUGBASH-1524 Change-Id: I970453f5da87c36e9915b8c0bbe9f1cd2302ec93 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* Avoid crash when widget previews have no intrinsic sizeRoger Olsson2018-04-271-3/+4
| | | | | | | | | | Intrinsic size for widget preview drawable checked. Needed since some drawables, like color drawables, do not have any intrinsic size. Bug: 78452220 Test: manual, see Bug info. Change-Id: I815353773e38b1fce2fe19962f07c1727e1b0768
* Automatic translation importMichael Bestas2018-04-202-3/+3
| | | | Change-Id: I29bd10eb84c8d86fec836530cbcadea978e2dd75
* Increased folder icon previewEmre Harbutoğlu2018-04-121-1/+1
| | | | | | It was very little. Change-Id: I2883c8ffb1eac927e67efd45639bad2fb2c5207e
* config: enable LAUNCHER3_PROMISE_APPS_IN_ALL_APPSAlexander Martinz2018-04-121-1/+1
| | | | | Change-Id: If8a0e5595734eacb038f31c38bf7b4f151fd4825 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* WallpaperManagerCompat: correct build version checkAlexander Martinz2018-04-101-1/+1
| | | | | | | | | | WallpaperManagerCompatVOMR1 is targeting API 27 (O MR1), but the api guard is checking, if we are running API 26 (O) or above. Correct the check to prevent using unavailable Wallpaper APIs. Change-Id: Iaf510bb79010e640db04adbbc2ee44de9abd6913 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* xml: device_profiles: correct XML tagAlexander Martinz2018-04-101-2/+2
| | | | | | | When specifying the package name, Android Studio gets really confused Change-Id: I26e2b874c4a72f1f042eb581cb14f3f6e055d61c Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* Utilities: fix checking whether non-default icon pack is appliedAlexander Martinz2018-04-093-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | The current check returns the opposite of what the method is called. Printing the following values: - defaultPack, defaultLocalizedPack, currentPack, isNotUsingIconPack without icon pack applied: - Default | System (Standard) | System (Standard) | false with "Frost" (com.dkanada.icecons) icon pack applied: - Default | System (Standard) | com.dkanada.icecons | true with "Pixel Icon Pack" (com.themezilla.pixelui) icon pack applied: - Default | System (Standard) | com.themezilla.pixelui | true To correct this behavior: *) rename "isNotUsingIconPack" to "isUsingIconPack" *) fix all the users of the method *) add comments to document the thoughts behind the logic Change-Id: I8a5339fae536a3f3803637353737994670d8ee92 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* Trebuchet: get rid of old iconsAlexander Martinz2018-04-0515-42/+3
| | | | | | | Update all references to use the new adaptive icon and drop the old ones. Change-Id: I8d81bc027ff965aad05d43514afbb77564b3651b Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
* Trebuchet: fix feed icon size in settingsJoey2018-04-041-2/+2
| | | | | Change-Id: Idfd67c32ae8c37c55dd98a7c20d58bd1e7bf72be Signed-off-by: Joey <joey@lineageos.org>
* Automatic translation importMichael Bestas2018-04-019-2/+113
| | | | Change-Id: I59f8f47657f8c550a89a09425a249c88b46e299b
* Automatic translation importMichael Bestas2018-03-0910-4/+187
| | | | Change-Id: Ie8db1cb142beb457d2ddfe4a0280e98af3357f4f
* Trebuchet: Add contacts to the hotseatLuca Stefani2018-03-041-1/+8
| | | | Change-Id: I1552fdab7de1249ee057125883672bcf028e7294
* Automatic translation importMichael Bestas2018-02-2519-0/+159
| | | | Change-Id: I2ba060bd210ed6633ce622ed38c62ce543023fed
* Automatic translation importMichael Bestas2018-02-22127-187/+7086
| | | | Change-Id: I8d0f8a46e6650ec2335606a413e04e26a94fb373
* Trebuchet: adaptive iconAsher Simonds2018-02-1712-1/+21
| | | | | Change-Id: I84662d7cb35ed751c61c6223dc02f256f5ab3311 Signed-off-by: Joey <joey@lineageos.org>
* Trebuchet: add super ellipse icon shapeJoey2018-02-172-5/+7
| | | | | Change-Id: Ie7cdbff0cafd5bfd26c807e10a8cae114aba9e1b Signed-off-by: Joey <joey@lineageos.org>
* TrebuchetGo: Rename Launcher3Go package namestaging/lineage-15.1Adrian DC2018-02-051-2/+4
| | | | | | | * Also allows holding both Trebuchet and Launcher3 in the same Android repository tree Change-Id: I3e37582746e2bca9549063cd8c69372c57bb525b