Commit Graph

146 Commits

Author SHA1 Message Date
mpodolian 06fb33ceb3 Align hotseat drop target with the adjusted hotseat
Added logic to adjust the drop target to account for changes in the
hotseat position when accommodating the bubble bar.

Fixes: 382348730
Test: all tests in package src.com.android.launcher3.celllayout
Test: Manual. Ensure bubbles are present, and the hotseat width is
adjusted. Long-press any icon in the hotseat, begin dragging it over
other hotseat icons, and observe that the drop target is drawn
appropriately.
Flag: com.android.wm.shell.enable_bubble_bar

Change-Id: Ice961f40ace03077ab8c9312a93eda1a16d7da34
2024-12-06 14:57:31 -08:00
Mykola Podolian 362e060c4e Merge "Update Hotseat icons adjustment X calculation based on cell X Index" into main 2024-12-05 19:59:51 +00:00
mpodolian 2fd98270a7 Update Hotseat icons adjustment X calculation based on cell X Index
Resolved an issue where the X translation for hotseat icons was computed
using the view index in the parent, leading to misaligned adjustments.
The logic has been updated to calculate translation based on the cell X
index, ensuring more accurate positioning and alignment.

Fixes: 380794616
Test: Manual. Have a bubble in landscape orientation. Drag any item from
the hotseat to the workspace, then rotate the device.
Flag: com.android.wm.shell.enable_bubble_bar

Change-Id: Ibd0709e6c58ad9c1470de469cfced8bbe66fd30b
2024-12-04 16:23:00 -08:00
mpodolian 28907bcbd6 Set bubble bar aligned to QSB
Change logic to updated bubble bar alignment with the QSB vertical
center for 3 buttons navigation mode.

Fixes: 378400160
Flag: com.android.wm.shell.enable_bubble_bar
Test: PersistentBubbleStashControllerTest
Test: TransientBubbleStashControllerTest
Test: Manual. Set the buttons navigation mode and observe that the
bubble bar is centered with the QSB when the QSB is not aligned with the
hotseat. Then, switch to gestures navigation mode and observe that the
bubble bar is centered with the hotseat when the QSB is not aligned with
the hotseat.

Change-Id: I57a32ac5bde7a7055b54a89727429424e5c0ca4f
2024-11-27 10:15:08 -08:00
mpodolian b563271ff5 Fix hotseat layout on device rotation.
When rotating the device, a few issues were causing improper hotseat
layout:

- BubbleBarController receives an initial configuration before the UI
controller is set.
- The updated device profile, including the correct `isQsbInline` value,
arrives after all controllers are recreated, and the UI controller is
not informed of the device profile update.

Added logic to carry over the bubble bar bubble visibility state to the
new UI controller. Included a call to notify the UI controller of the
device profile update.

Fixes: 378400160
Flag: com.android.wm.shell.enable_bubble_bar
Test: Manual. Have a Tangor device in landscape orientation with the
bubble bar. Rotate the device - observe hotseat and QSB are reduced in
width. Dismiss the bubble bar - observe hotseat and QSB extends to the
full width.
video: http://recall/-/gx8ASgewUeUS3QYohfrd1J/e8e1ZFRQlbHQtUlCXVJbFJ

Change-Id: If180b01c8cdb329cd45d084af63a986c08cf65a1
2024-11-13 17:41:17 -08:00
mpodolian 5bf8bffdb2 Fixed quick search bar shrinking.
Added an early return logic. So only icon translation provider is being
set to the hotseat icons.

Fixes: 375240372
Fixes: 377402904
Flag: com.android.wm.shell.enable_bubble_bar
Test: Manual. Added first bubble on unfolded Felix, quick search bar
remained the same size. Fold the device, hotseat icons do not overlap.

Change-Id: I292e565a79cfe121c2f8c617440d8b40c09bef82
2024-11-07 15:52:25 -08:00
mpodolian 9fc4fad24f Fixed icons overlapping issue.
Removed early return condition from the Hotseat view

Flag: com.android.wm.shell.enable_bubble_bar
Test: Manual. Unfold foldable device and have bubble. Fold the device.
Hotseat icons are not overlapped.
Fixes: 375240372

Change-Id: I576c893896c98d2a0dcb25f64396f4e9fe62f61c
2024-10-24 11:24:07 -07:00
mpodolian 51e2bb31ed Created a helper method that calculates the hotseat icons shift X.
Moved out logic that computes the translation X for the hotseat icons.

Fixes: 368379159
Test: Manual. Have the hotseat adjusted. Open any application from the
hotseat bar. Go back to home.
Flag: EXEMPT refactoring

Change-Id: If9dfa70be537f87b075bd865e7f9c5cd1ae78f00
2024-10-09 12:17:01 -07:00
mpodolian dfb48214ea Update placement of the hotseat according to the bubble bar location.
Update the hotseat and Qsb placement according to the 3 nav buttons bar.

Test: Manual.
Set navigation mode to 3 buttons.
On launcher home screen move the bubble bar from one side to another.
Observe that the Hotseat and Qsb moving together with the navigation
bar.
Once moved the bubble bar, expand the bubble bar and collapse it.
Observe how the Hotseat is stashing and un-stashing.
After bubble bar changes position hit the recent apps button, observe
the transition.
On launcher home screen start application with the hotseat icon and exit
opened application. Observe that flying icon comes back to the correct
position in the hotseat.
Video with the above scenarios:
http://recall/-/gx8ASgewUeUS3QYohfrd1J/blTYrKopTyufOcRoPuVpYK
Bug: 346381754
Flag: com.android.wm.shell.enable_bubble_bar_in_persistent_task_bar

Change-Id: Ic8c6acdffbbb111cbe4f3fd6bc60195578d7035d
2024-09-26 19:04:01 -07:00
Liran Binyamin 69f4974e24 Hide hotseat when bubble bar is expanded.
Added logic to stash the hotseat when on launcher home screen.

Bug: 280494203
Test: Manual:
http://recall/-/gx8ASgewUeUS3QYohfrd1J/fjfjUw296LRXUm9uYqXU4K
all tests in com.android.launcher3.taskbar
Flag: com.android.wm.shell.enable_bubble_bar

Change-Id: I67b298831eaed9c549a2fae7dc5a0d9fae51f7c4
2024-09-16 15:50:28 -07:00
Liran Binyamin 2a47a4a68d Fix squished hotseat due to bubbles
Hotseat supports adjusting its layout to make room for bubbles when
needed. There are 2 events that trigger this:
  1. When Hotseat's layout is reset, it checks for whether bubbles
     are showing.
  2. When Bubble Bar visibility changes it notifies hotseat so that
     it can update itself.

Folding the device is recreated triggers both hotseat layout reset
and recreation of taskbar, but the order in which these happen is not
guaranteed. Sometimes hotseat checks for the status of bubble bar
which may be visible if taskbar hasn't been recreated yet.

This change makes sure that hotseat updates itself after taskbar is
recreated and the ui controller is set, so that it cleans up any
adjustments it may have if bubbles are not visible.

This change also updates the way QSB adjusts itself for bubbles.
Previously it always animated from the same start value to a target
value. Now the animation starts from its current width to the target,
so that if the current width is already equal to the target width,
there is no visible change.

Flag: com.android.wm.shell.enable_bubble_bar
Fixes: 349430356
Test: manual
       - unfold the device
       - create bubbles
       - observe hotseat adjusts itself for the bubble bar
       - fold the device
       - observe bubble bar is gone and hotseat shows correctly
Test: manual
       - start a youtube video in full screen
       - swipe from the edge of the screen to show the gesture nav
       - swipe on the gesture nav to go home
       - observe that the QSB does not animate
Change-Id: Ia0267ec518d6af9c3c3b68f17bb20ea67a49e5fd
2024-07-24 12:49:17 -04:00
Liran Binyamin 891e9e3c4b Fix hotseat icon translation issue
The current behavior that adjusts hotseat icons to make room for the
bubble bar uses the index of the hotseat icon to calculate translation x.

The problem is that if icons are reordered, the index of the icon may be
different than the actual cell number it belongs to.

This change updates the logic to use the cell rather than the index.

Flag: com.android.wm.shell.enable_bubble_bar
Fixes: 345686425
Test: manual - on tablet in portrait
       - show bubble bar
       - observe hotseat icons adjust
       - drag an icon from the home screen into hotseat
       - observe icons are shown correctly
       - rotate the device to landscape and back to portrait
Change-Id: I8628892234d1b31205b93ba3089c6dbf2820ea04
2024-06-21 16:33:45 -04:00
Sihua Ma a44f4ac861 Push a potential fix for hotseat aggregation
This could be caused by landscape layout not receiving inset changes

Adding logs for hotseat layout info as well

Bug: 335141365
Flag: EXEMPT bugfix
Test: N/A
Change-Id: I987f8622907a10fac5375ddddac3db2c5eba41c1
2024-06-05 18:58:23 +00:00
Sebastian Franco 2986e0b4d1 Removing the Worskapce as a dependency of CellLayout
This will make it easier to test CellLayout, also we should avoid
circular dependencies as much as poisble.

This also allows the CellLayout to be created in other containers
that are not workspace.

Bug: 318417510
Test: creating HotseatReorderUnitTest in follow up cl
Test: TaplReorderWidgets
Test: ReorderAlgorithmUnitTest
Flag: NA
Change-Id: Ic45029a244cb11f8d6775c50b90af9c56f01eaa3
2024-01-26 09:28:57 -08:00
Liran Binyamin a833af316b Adjust the hotseat when the bubble bar becomes visible
When the bubble bar becomes visible the space between icons in the
hotseat is now adjusted. This change only does it when the QSB is
above the icons, but this will be changed in the future to be based
on the amount of space between the hotseat and the edge of the screen.

When the hotseat is adjusted, the new width is smaller by the size of
2 icons. The icons are then translated to be evenly spaced within the
boundaries of the new width.

Since the adjustment is only applied when the QSB is above the icons,
it is resized accordingly to the new width.

All visual updates currently snap to the new position, but will be animated
in a follow up.

Demo: https://recall.googleplex.com/projects/3391fc5c-599d-4827-b6f8-d2deb160aa99/sessions/fad1a5c5-e9cf-4586-92e4-1e92df3b002e

Bug: 280494203
Test: Manual (on tangor)
      - Set device to landscape
      - Make the bubble bar visible by adding a bubble
      - Rotate to portrait mode
      - Observe that the hotseat is adjusted
      - Rotate to landscape
      - Observe that the hotseat adjustment is removed
      - Rotate back to portrait
      - Observe that the hotseat is adjusted again
      - Dismiss the bubble to hide he bubble bar
      - Observe the hotseat adjustment is removed

Change-Id: I5b02a60b6cb301ffa2507a6d825c748a782cca18
2023-09-13 17:08:42 -04:00
Sunny Goyal 171bb04407 Removing some obsolete features
Bug: 270386012
Test: Presubmit
Change-Id: I9d68b3d17e02d6e79ab726eb7c8da1e5a4d337ef
2023-02-22 23:17:15 +00:00
Alex Chau 206ede9c1f Adjust height of tablet AllApps base on row height
- Also used hotseatQsbHeight for AllApps QSB height as they have to match to transform between each other

Fix: 232907846
Test: manual on different tablets
Test: atest DeviceProfileTest
Change-Id: I001d0e129db2a5de6c8ace4c3302381110da03f1
2022-08-03 15:29:22 +00:00
Thales Lima b8c0595d42 Add new hotseat bottom margin options
This changes how the hotseat height is calculated and by consequence how spaces are distributed in the workspace as well. This is the first of a series of changes that will improve and streamline workspace calculations.

Bug: 228998463
Fix: 234023782
Fix: 230191631
Fix: 232914299
Fix: 236238226
Test: manual, HSV and comparing to mocks
Change-Id: If021e8ba2c7c24c0bf9f27a1aa7aa946792ed04f
2022-07-05 15:33:47 +01:00
Alex Chau c1d26448c5 Animate inline QSB between home and apps
- Added a QSB to taskbar to be animated between inline QSB and taskbar
- Passed endValue of taskbar animator to TaskbarController to have aniamtion variation between home -> app and app -> home
- Tuned duartion of taskbar animation and also stagger animation when taskbar is present
- Disabled scaling down of taskbar and inline QSB for home -> app
- Disabled stagger animation of taskbar and inline QSB for app -> home

Bug: 220733187
Test: manual
Change-Id: I4aac0bbc343b992a0472298595770e2bf2a55990
2022-06-15 22:12:29 +01:00
Thales Lima 425f6828f1 Fix hotseat width to span a number of columns
Fix: 227344807
Fix: 231283023
Test: manual
Change-Id: Iad0f38c2323be6d9752a8e509fc7e1164edbcf4e
2022-05-11 10:09:03 -03:00
Sunny Goyal 89a89d63a4 Revert "Fix hotseat width to span a number of columns"
Revert submission 17983445-hotseat_span

Reason for revert: b/231283023
Reverted Changes:
Ice4e37929:Fix hotseat width to span a number of columns
I9ed508490:Fix hotseat width to span a number of columns

Change-Id: Iabf67c5efd8155131a0c8a88192ddd671a43747b
2022-05-09 19:32:07 +00:00
Thales Lima 828875cd12 Fix hotseat width to span a number of columns
Bug: 227344807
Test: manual
Change-Id: Ice4e37929bcbb8c9cf3af340e67b6bec002578bd
2022-04-29 14:56:30 +00:00
Thales Lima ee80d6919e Merge "Make hotseat RTL aware" into tm-dev 2022-04-19 16:47:52 +00:00
Shikha Malhotra f78da1bae3 Review comments followup
These are review comments followup from ag/17399997

Bug: b/218187058
Test: manually test thet Launcher3 features work correctly
Change-Id: I9865a37c1ed663370dc28e7678994f3d961e3cd1
2022-04-12 14:33:07 +00:00
Thales Lima 612230dbd3 Make hotseat RTL aware
Fix: 217567306
Test: manual, turning on "Force RTL"
Change-Id: I1369cfc6e9afd328a1a6945469064d4cd54f31ea
2022-04-04 13:32:10 +01:00
Thales Lima 60dc19cb71 Merge "Fix height of hotseat" into tm-dev 2022-03-22 11:43:13 +00:00
Thales Lima 7d14923195 Fix height of hotseat
Hotseat size was going behind workspace unnecessarily, causing some issues and also had the wrong hotseat height which was cutting the icons in folders.

Fixes: 224713923
Fixes: 221101290
Test: manual
Change-Id: I2646abc4a6aaa5bf2ea85e55e2f3618f8d7efd9b
2022-03-21 18:32:22 +00:00
Thales Lima 8cd020bb1d Reset the size of hotseat cells
When resetting the hotseat layout, the size of cells also can be changed based on changes in DeviceProfile. In this case, the border size changes when rotating the device.

Fixes 216071526
Test: manual and HSV

Change-Id: Idf7b7972e7be347a991cad1cb8ee8cf95cbc4a87
2022-03-16 17:49:40 +00:00
Luca Zuccarini 5c65febbb6 Ensure that the Hotseat respects the margins of the QSB.
Before this change they were ignored by onMeasure(), so that the QSB
couldn't rely on margins for its positioning.

Bug: 217477426
Test: manual
Change-Id: Ifecd3d40ea584273b7857d19b25a90dbafe1c656
(cherry picked from commit 410c75a442)
2022-02-25 17:00:07 +00:00
Thales Lima a1012904bb Make hotseat fit one line on tablets
When running on tablets in landscape, the QSB should inline with the hotseat icons. This does that and fixes small bugs that didn't account for the new hotseatBorderSpace.

Bug: 210118169
Test: atest Launcher3Tests:DeviceProfileTest
Test: visual, using HSV and Window
Change-Id: I5a89c5449bf59fde736618151eceaacca443ef67
2022-01-21 17:42:48 +00:00
Tracy Zhou ae88197e5f Track LauncherState for task bar stashing better
- Animate in onStateTransitionStart
- Commit in onStateTransitionComplete

Fixes: 193938970
Fixes: 200765631
Fixes: 201644899
Test: Go home from overview; Go to all apps from home; Go to overview from home
Change-Id: I393022c86f09806fea29fb5bc7191304b473f231
2021-10-18 10:51:51 -07:00
Alex Chau 21698c5799 Always let Hotseat touches follow through to Workspace if not intercepted
Fix: 200812841
Fix: 201306660
Test: Long press around QSB, hotseat, inbetween hotseat icons works
Test: Can scroll pages on top of hotseat and QSB
Test: Drag and drop still works in hotseat
Test: Can still press and long press on QSB
Change-Id: I3f6807be08ff2c55644e3bf8f6d05a3954a8ede6
2021-09-28 12:27:26 +00:00
Sunny Goyal 57b2279dcb Taskbar layout update
> Calculating the hotseat padding statically
> Animating taskbar views individually when animating to home
  instead of a layout animation
> Moving all navbar buttons to a separate layout/controller and independent
  of Launcher
> Fixing RTL layout for taskbar and nav bar

Bug: 187353581
Test: Manual
Change-Id: If21696f38beee328f553e467394776a8e8ed4c3e
2021-06-03 16:10:02 -07:00
Sunny Goyal d5500548dc Revert^2 "Moving taskbar lifecycle to TouchInteractionService"
430465a3d5
Bug: 187353581
Change-Id: I7b2280d16adfafd3e85ffc1d22e32d0c00d12b67
2021-05-21 07:05:02 +00:00
Kholoud Mohamed 430465a3d5 Revert "Moving taskbar lifecycle to TouchInteractionService"
This reverts commit e215fb730b.

Reason for revert: DroidMonitor-triggered revert due to breakage https://android-build.googleplex.com/builds/tests/view?invocationId=I13700009003387451&testResultId=TR89423459137251402, bug https://buganizer.corp.google.com/issues/188755902

Bug: 188755902
Change-Id: I4650136975b60f311499ee6ff5b27ab9a32d23d6
2021-05-20 13:32:05 +01:00
Sunny Goyal e215fb730b Moving taskbar lifecycle to TouchInteractionService
> Inflating taskbar views with a non-launcher window context
> Removing separate taskbar view in Launcher
> Handling taskbar icon clicks directly instead of going via launcher
> Fixing some relayouts during show/hide animation

Bug: 187353581
Test: Manual
Change-Id: Ia7d44acbb770bf0345922234b3daa5cc040a5843
2021-05-17 21:47:08 -07:00
Sunny Goyal 19ff728b92 Adding support for determining split layout for launcher.
> Simulating the windo wmanager API to get available device
  profiles until final API
> When a device has multiple internal displays, and with both
  tablet and phone possibilities, it uses a split workspace layout

Bug: 186160341
Bug: 175782275
Test: Manual
Change-Id: Ieff2329acac7cdd6b9abe6f96cd459cd45bd0efe
2021-05-03 14:48:28 -07:00
Tony Wickham 81f8175ab1 Move taskbar to be closer to QSB
- Offset taskbar to be halfway between QSB and bottom of the screen.
- Add taskbar translationY state property to animate when going
  between launcher and an app.
- Draw the taskbar background in TaskbarContainerView instead of
  TaskbarView so it stays pinned to the bottom as TaskbarView
  translates up. If we want to have a background behind the
  taskbar on home, this should move back to TaskbarView so that
  the drawing can be shared by mTaskbarViewOnHome.

Test: visually on home screen, translates when entering and
exiting an app

Bug: 182981881
Bug: 171917176
Change-Id: I44f8b2c770074f7f015dcccbc2befd3453811193
2021-04-13 10:10:54 -07:00
Tony Wickham b87f3cdc1c Add support for having more hotseat icons in the DB than we show
Split InvariantDeviceProfile#numHotseatIcons into two variables:
numDatabaseHotseatIcons and numShownHotseatIcons. These are generally
the same, but different DisplayOptions within the same GridOption
can choose to show different numbers of hotseat icons while sharing
the same database.

numDatabaseHotseatIcons is used for all reading/writing/migrating
purposes, while numShownHotseatIcons determines how many Hotseat
icons to show in the UI.

Test: Existing tests pass, added two new migration tests
Bug: 184789479
Bug: 171917176

Change-Id: I54583504f61a47a4444b6a637ebb7e3ab31528b7
2021-04-12 16:08:15 -07:00
Sunny Goyal 0b5b8d4969 Fixing all-apps appearing as blank
Since all-apps and homescreen do not share any QSB, we can
change the alpha for hotseat QSB directly

Bug: 184122599
Test: Manual
Change-Id: Ifa610fe75ad22cfe8a7d816ed2b48e2b9411c4c1
2021-03-31 14:59:54 -07:00
Andras Kloczl 35d23a62f0 Fix app close animation for two panel home
Change getFirstMatchForAppClose to check all the visible
pages not just the page with the currentPage index.

Test: manual
Bug: 183606840
Change-Id: If5280797f821f7d10f82376aeef5e8eb4d352e2a
2021-03-31 00:09:07 +02:00
Tony Wickham 9ce3b25ef6 Add TaskbarView as a child of Hotseat
Instead of keeping the Taskbar window showing above the home screen,
we now integrate a copy of TaskbarView directly into Launcher's view
hierarchy. Most TaskbarController calls apply to both TaskbarViews
(mTaskbarViewInApp and mTaskbarViewOnHome), except for calls related
to Hotseat, which only apply to mTasbkarViewInApp given the real
Hotseat will be showing with mTaskbarViewOnHome.

More cleanup will follow this change.

Test: All taskbar interactions (e.g. drag and drop) continue to work
Bug: 182512211
Bug: 171917176
Change-Id: I0f0b124f652daa85f866e1df8f9e2981540331a0
2021-03-22 15:26:01 -07:00
Tony Wickham 4076cae87f Merge "Use taskbarSize as bottom inset when taskbar is present." into sc-dev 2021-03-19 18:15:52 +00:00
Tony Wickham 72c15ef913 Fix QSB and Hotseat positions when ENABLE_DEVICE_SEARCH is enabled
Test: visual
Change-Id: I755de7552e2bb3f927f6be59c07f910ddfbc4650
2021-03-18 18:06:47 -07:00
Tony Wickham b31d8fc379 Use taskbarSize as bottom inset when taskbar is present.
This was done in ag/13841736 but not included in ag/13821586

Test: QSB in correct position when taskbar present and not present
Bug: 171917176
Change-Id: I6aa220559afebe8710b5f01cdec9c2baa9f4c926
2021-03-18 13:57:20 -07:00
Sunny Goyal c373e1c642 Adding an optional QSB in hotseat
Removing sections in all-apps during transition and treating
it as a single unit

Bug: 175137718
Test: Manual
Change-Id: I55a501d80b5903f1a9d92a26b3784784fd9e50fd
2021-03-17 12:21:44 -07:00
Tony Wickham ae72b46b2c Replace taskbar hotseat with real hotseat when folder is open
- Seamlessly show real hotseat and hide taskbar hotseat, while
  keeping rest of taskbar visible
- Update MultiValueAlpha to allow for taking max alpha instead
  of blending, and use that for Hotseat
- Fix folder open bounds on home screen when taskbar is present

Test: Open folder from taskbar on home, can drag out items
Bug: 182079330
Bug: 171917176
Change-Id: I7c1983e3219b1341cf233260f0ccac9051c4dc14
2021-03-12 11:05:43 -08:00
Tony Wickham 39938cbc94 Initiate Hotseat drag from long pressing corresponding Taskbar item
When you long press on the taskbar hotseat item, the following happens:
- We start a system drag and drop with an invisible drag shadow
- We create a new DragOptions with the simulatedDndStartPoint set to the
  drag down position, and tell Launcher to use that for the next drag
- We perform a long click on the equivalent Hotseat item in Launcher
- We pass the drag events of that operation to Launcher's DragController

This allows Launcher to handle the entire drag operation, including the
pre-drag (with popup), and taskbar already hides when the drag starts.

Test: Long press items in taskbar hotseat, able to drag them to workspace

Bug: 179886115
Bug: 171917176
Change-Id: I576b80cb1bd0225cdc91cf7689fdee0481265109
2021-03-06 03:39:54 +00:00
Tony Wickham a29a046d83 Align real hotseat with taskbar hotseat during drag and drop
Remove hotseat space from workspace in DeviceProfile if
taskbar is present, and instantly swap between taskbar and
hotseat when entering SpringLoadedMode. To allow for an exact
handoff, we also scale up the TaskbarView such that its icons
match the hotseat icon size when on the home screen.

Note that this CL only supports dragging to the taskbar, not
out of it (which still triggers system drag and drop instead).

Test: In RTL and LTR, drag a workspace item and ensure hotseat
seamlessly swaps with the taskbar hotseat and allows drops.

Bug: 179886115
Bug: 171917176

Change-Id: Id6462075b9b0b66b06d51a78c9c0b3e11e83e84d
2021-03-03 11:16:42 -08:00
Samuel Fufa 2ea01e4871 Separate QSB from on device search
Bug: 175125073
[Preview attached to BR]

Change-Id: If967d95e32b58263ede5eb8a3c1b773cef789f28
2020-12-09 12:46:30 -06:00