From 82196ead569c25dae76a70be6b2bc147666ea24d Mon Sep 17 00:00:00 2001 From: Raj Yengisetty Date: Tue, 13 May 2014 23:19:54 -0700 Subject: Trebuchet Settings UI Refresh - Overview Panel contains all Launcher Settings - Accessible through long press on Workspace or HW Menu button - Settings are held in a SlidingPanel in the Overview Panel - Replace the Settings shortcut in Overview Panel with Themes shortcut - Replace widgets icon with new widgets icon from Launcher3 - Trebuchet Settings changes no longer require restarting Process - Transition Effects have PNG Sequence to show animation sequence - Remove PageIndicator click event to open Overview Panel in AppTray Contributors: Adrian Foulk - UX Lead Abishek Devkota - Project Manager Hayden Schoen - UX Designer Change-Id: I2186213960cf12e840e814757894fe104551856b --- res/anim/drop_down.xml | 13 + res/anim/enter_from_left.xml | 12 + res/anim/enter_from_right.xml | 12 + res/anim/exit_out_left.xml | 13 + res/anim/exit_out_right.xml | 12 + res/color/listitem_text.xml | 6 + res/drawable-hdpi/ic_default_screen.png | Bin 18144 -> 2046 bytes res/drawable-hdpi/ic_default_screen_pressed.png | Bin 18857 -> 1993 bytes res/drawable-hdpi/ic_setting.png | Bin 2637 -> 0 bytes res/drawable-hdpi/ic_setting_pressed.png | Bin 3099 -> 0 bytes res/drawable-hdpi/ic_themes.png | Bin 0 -> 2242 bytes res/drawable-hdpi/ic_themes_pressed.png | Bin 0 -> 3201 bytes res/drawable-hdpi/ic_widget.png | Bin 410 -> 1560 bytes res/drawable-hdpi/ic_widget_pressed.png | Bin 1961 -> 2332 bytes res/drawable-mdpi/ic_default_screen.png | Bin 17779 -> 1597 bytes res/drawable-mdpi/ic_default_screen_pressed.png | Bin 18202 -> 1626 bytes res/drawable-mdpi/ic_themes.png | Bin 0 -> 1946 bytes res/drawable-mdpi/ic_themes_pressed.png | Bin 0 -> 2433 bytes res/drawable-mdpi/ic_widget.png | Bin 370 -> 1174 bytes res/drawable-mdpi/ic_widget_pressed.png | Bin 1658 -> 1487 bytes res/drawable-xhdpi/ic_default_screen.png | Bin 18388 -> 2323 bytes res/drawable-xhdpi/ic_default_screen_pressed.png | Bin 19556 -> 2385 bytes res/drawable-xhdpi/ic_setting.png | Bin 3625 -> 0 bytes res/drawable-xhdpi/ic_setting_pressed.png | Bin 4524 -> 0 bytes res/drawable-xhdpi/ic_themes.png | Bin 0 -> 2926 bytes res/drawable-xhdpi/ic_themes_pressed.png | Bin 0 -> 4949 bytes res/drawable-xhdpi/ic_widget.png | Bin 498 -> 1978 bytes res/drawable-xhdpi/ic_widget_pressed.png | Bin 2359 -> 3360 bytes res/drawable-xxhdpi/ic_default_screen.png | Bin 19024 -> 3187 bytes res/drawable-xxhdpi/ic_default_screen_pressed.png | Bin 21488 -> 3237 bytes res/drawable-xxhdpi/ic_setting.png | Bin 4105 -> 0 bytes res/drawable-xxhdpi/ic_setting_pressed.png | Bin 7113 -> 0 bytes res/drawable-xxhdpi/ic_themes.png | Bin 0 -> 3232 bytes res/drawable-xxhdpi/ic_themes_pressed.png | Bin 0 -> 6630 bytes res/drawable-xxhdpi/ic_widget.png | Bin 555 -> 2413 bytes res/drawable-xxhdpi/ic_widget_pressed.png | Bin 2916 -> 5518 bytes res/drawable/above_shadow.xml | 8 + res/drawable/acordian_00000.png | Bin 0 -> 214 bytes res/drawable/acordian_00001.png | Bin 0 -> 209 bytes res/drawable/acordian_00002.png | Bin 0 -> 225 bytes res/drawable/acordian_00003.png | Bin 0 -> 235 bytes res/drawable/acordian_00004.png | Bin 0 -> 233 bytes res/drawable/acordian_00005.png | Bin 0 -> 230 bytes res/drawable/acordian_00006.png | Bin 0 -> 245 bytes res/drawable/acordian_00007.png | Bin 0 -> 243 bytes res/drawable/acordian_00008.png | Bin 0 -> 258 bytes res/drawable/acordian_00009.png | Bin 0 -> 204 bytes res/drawable/acordian_00010.png | Bin 0 -> 210 bytes res/drawable/acordian_00011.png | Bin 0 -> 210 bytes res/drawable/acordian_00012.png | Bin 0 -> 210 bytes res/drawable/acordian_00013.png | Bin 0 -> 210 bytes res/drawable/acordian_00014.png | Bin 0 -> 210 bytes res/drawable/acordian_00015.png | Bin 0 -> 210 bytes res/drawable/acordian_00016.png | Bin 0 -> 210 bytes res/drawable/acordian_00017.png | Bin 0 -> 210 bytes res/drawable/acordian_00018.png | Bin 0 -> 210 bytes res/drawable/acordian_00019.png | Bin 0 -> 210 bytes res/drawable/acordian_00020.png | Bin 0 -> 210 bytes res/drawable/acordian_00021.png | Bin 0 -> 210 bytes res/drawable/acordian_00022.png | Bin 0 -> 210 bytes res/drawable/acordian_00023.png | Bin 0 -> 210 bytes res/drawable/acordian_00024.png | Bin 0 -> 210 bytes res/drawable/acordian_00025.png | Bin 0 -> 210 bytes res/drawable/acordian_00026.png | Bin 0 -> 210 bytes res/drawable/acordian_00027.png | Bin 0 -> 204 bytes res/drawable/acordian_00028.png | Bin 0 -> 258 bytes res/drawable/acordian_00029.png | Bin 0 -> 243 bytes res/drawable/acordian_00030.png | Bin 0 -> 245 bytes res/drawable/acordian_00031.png | Bin 0 -> 239 bytes res/drawable/acordian_00032.png | Bin 0 -> 233 bytes res/drawable/acordian_00033.png | Bin 0 -> 235 bytes res/drawable/acordian_00034.png | Bin 0 -> 225 bytes res/drawable/acordian_00035.png | Bin 0 -> 209 bytes res/drawable/acordian_00036.png | Bin 0 -> 214 bytes res/drawable/acordian_00037.png | Bin 0 -> 214 bytes res/drawable/acordian_00038.png | Bin 0 -> 214 bytes res/drawable/acordian_00039.png | Bin 0 -> 214 bytes res/drawable/acordian_00040.png | Bin 0 -> 214 bytes res/drawable/acordian_00041.png | Bin 0 -> 214 bytes res/drawable/acordian_00042.png | Bin 0 -> 214 bytes res/drawable/acordian_00043.png | Bin 0 -> 214 bytes res/drawable/acordian_00044.png | Bin 0 -> 214 bytes res/drawable/acordian_00045.png | Bin 0 -> 214 bytes res/drawable/acordian_00046.png | Bin 0 -> 214 bytes res/drawable/acordian_00047.png | Bin 0 -> 214 bytes res/drawable/acordian_00048.png | Bin 0 -> 214 bytes res/drawable/acordian_00049.png | Bin 0 -> 214 bytes res/drawable/below_shadow.xml | 8 + res/drawable/carousel_00000.png | Bin 0 -> 153 bytes res/drawable/carousel_00001.png | Bin 0 -> 168 bytes res/drawable/carousel_00002.png | Bin 0 -> 192 bytes res/drawable/carousel_00003.png | Bin 0 -> 218 bytes res/drawable/carousel_00004.png | Bin 0 -> 267 bytes res/drawable/carousel_00005.png | Bin 0 -> 257 bytes res/drawable/carousel_00006.png | Bin 0 -> 285 bytes res/drawable/carousel_00007.png | Bin 0 -> 299 bytes res/drawable/carousel_00008.png | Bin 0 -> 282 bytes res/drawable/carousel_00009.png | Bin 0 -> 298 bytes res/drawable/carousel_00010.png | Bin 0 -> 299 bytes res/drawable/carousel_00011.png | Bin 0 -> 296 bytes res/drawable/carousel_00012.png | Bin 0 -> 348 bytes res/drawable/carousel_00013.png | Bin 0 -> 366 bytes res/drawable/carousel_00014.png | Bin 0 -> 360 bytes res/drawable/carousel_00015.png | Bin 0 -> 373 bytes res/drawable/carousel_00016.png | Bin 0 -> 364 bytes res/drawable/carousel_00017.png | Bin 0 -> 307 bytes res/drawable/carousel_00018.png | Bin 0 -> 267 bytes res/drawable/carousel_00019.png | Bin 0 -> 202 bytes res/drawable/carousel_00020.png | Bin 0 -> 153 bytes res/drawable/carousel_00021.png | Bin 0 -> 153 bytes res/drawable/carousel_00022.png | Bin 0 -> 153 bytes res/drawable/carousel_00023.png | Bin 0 -> 153 bytes res/drawable/carousel_00024.png | Bin 0 -> 153 bytes res/drawable/carousel_00025.png | Bin 0 -> 153 bytes res/drawable/carousel_00026.png | Bin 0 -> 153 bytes res/drawable/carousel_00027.png | Bin 0 -> 153 bytes res/drawable/carousel_00028.png | Bin 0 -> 153 bytes res/drawable/carousel_00029.png | Bin 0 -> 153 bytes res/drawable/carousel_00030.png | Bin 0 -> 153 bytes res/drawable/carousel_00031.png | Bin 0 -> 153 bytes res/drawable/carousel_00032.png | Bin 0 -> 153 bytes res/drawable/carousel_00033.png | Bin 0 -> 153 bytes res/drawable/carousel_00034.png | Bin 0 -> 153 bytes res/drawable/carousel_00035.png | Bin 0 -> 153 bytes res/drawable/carousel_00036.png | Bin 0 -> 153 bytes res/drawable/carousel_00037.png | Bin 0 -> 153 bytes res/drawable/carousel_00038.png | Bin 0 -> 153 bytes res/drawable/carousel_00039.png | Bin 0 -> 153 bytes res/drawable/carousel_00040.png | Bin 0 -> 153 bytes res/drawable/carousel_00041.png | Bin 0 -> 153 bytes res/drawable/carousel_00042.png | Bin 0 -> 153 bytes res/drawable/carousel_00043.png | Bin 0 -> 153 bytes res/drawable/carousel_00044.png | Bin 0 -> 153 bytes res/drawable/carousel_00045.png | Bin 0 -> 153 bytes res/drawable/carousel_00046.png | Bin 0 -> 153 bytes res/drawable/carousel_00047.png | Bin 0 -> 153 bytes res/drawable/carousel_00048.png | Bin 0 -> 153 bytes res/drawable/carousel_00049.png | Bin 0 -> 153 bytes res/drawable/cubein_00000.png | Bin 0 -> 153 bytes res/drawable/cubein_00001.png | Bin 0 -> 201 bytes res/drawable/cubein_00002.png | Bin 0 -> 260 bytes res/drawable/cubein_00003.png | Bin 0 -> 316 bytes res/drawable/cubein_00004.png | Bin 0 -> 358 bytes res/drawable/cubein_00005.png | Bin 0 -> 365 bytes res/drawable/cubein_00006.png | Bin 0 -> 411 bytes res/drawable/cubein_00007.png | Bin 0 -> 425 bytes res/drawable/cubein_00008.png | Bin 0 -> 407 bytes res/drawable/cubein_00009.png | Bin 0 -> 415 bytes res/drawable/cubein_00010.png | Bin 0 -> 411 bytes res/drawable/cubein_00011.png | Bin 0 -> 429 bytes res/drawable/cubein_00012.png | Bin 0 -> 413 bytes res/drawable/cubein_00013.png | Bin 0 -> 405 bytes res/drawable/cubein_00014.png | Bin 0 -> 383 bytes res/drawable/cubein_00015.png | Bin 0 -> 356 bytes res/drawable/cubein_00016.png | Bin 0 -> 368 bytes res/drawable/cubein_00017.png | Bin 0 -> 318 bytes res/drawable/cubein_00018.png | Bin 0 -> 257 bytes res/drawable/cubein_00019.png | Bin 0 -> 198 bytes res/drawable/cubein_00020.png | Bin 0 -> 173 bytes res/drawable/cubein_00021.png | Bin 0 -> 173 bytes res/drawable/cubein_00022.png | Bin 0 -> 173 bytes res/drawable/cubein_00023.png | Bin 0 -> 173 bytes res/drawable/cubein_00024.png | Bin 0 -> 173 bytes res/drawable/cubein_00025.png | Bin 0 -> 173 bytes res/drawable/cubein_00026.png | Bin 0 -> 173 bytes res/drawable/cubein_00027.png | Bin 0 -> 173 bytes res/drawable/cubein_00028.png | Bin 0 -> 173 bytes res/drawable/cubein_00029.png | Bin 0 -> 173 bytes res/drawable/cubein_00030.png | Bin 0 -> 173 bytes res/drawable/cubein_00031.png | Bin 0 -> 173 bytes res/drawable/cubein_00032.png | Bin 0 -> 173 bytes res/drawable/cubein_00033.png | Bin 0 -> 173 bytes res/drawable/cubein_00034.png | Bin 0 -> 173 bytes res/drawable/cubein_00035.png | Bin 0 -> 173 bytes res/drawable/cubein_00036.png | Bin 0 -> 173 bytes res/drawable/cubein_00037.png | Bin 0 -> 173 bytes res/drawable/cubein_00038.png | Bin 0 -> 173 bytes res/drawable/cubein_00039.png | Bin 0 -> 173 bytes res/drawable/cubein_00040.png | Bin 0 -> 173 bytes res/drawable/cubein_00041.png | Bin 0 -> 173 bytes res/drawable/cubein_00042.png | Bin 0 -> 173 bytes res/drawable/cubein_00043.png | Bin 0 -> 173 bytes res/drawable/cubein_00044.png | Bin 0 -> 173 bytes res/drawable/cubein_00045.png | Bin 0 -> 173 bytes res/drawable/cubein_00046.png | Bin 0 -> 173 bytes res/drawable/cubein_00047.png | Bin 0 -> 173 bytes res/drawable/cubein_00048.png | Bin 0 -> 173 bytes res/drawable/cubein_00049.png | Bin 0 -> 173 bytes res/drawable/cubeout_00000.png | Bin 0 -> 153 bytes res/drawable/cubeout_00001.png | Bin 0 -> 206 bytes res/drawable/cubeout_00002.png | Bin 0 -> 208 bytes res/drawable/cubeout_00003.png | Bin 0 -> 225 bytes res/drawable/cubeout_00004.png | Bin 0 -> 260 bytes res/drawable/cubeout_00005.png | Bin 0 -> 327 bytes res/drawable/cubeout_00006.png | Bin 0 -> 340 bytes res/drawable/cubeout_00007.png | Bin 0 -> 327 bytes res/drawable/cubeout_00008.png | Bin 0 -> 346 bytes res/drawable/cubeout_00009.png | Bin 0 -> 343 bytes res/drawable/cubeout_00010.png | Bin 0 -> 339 bytes res/drawable/cubeout_00011.png | Bin 0 -> 332 bytes res/drawable/cubeout_00012.png | Bin 0 -> 352 bytes res/drawable/cubeout_00013.png | Bin 0 -> 327 bytes res/drawable/cubeout_00014.png | Bin 0 -> 329 bytes res/drawable/cubeout_00015.png | Bin 0 -> 318 bytes res/drawable/cubeout_00016.png | Bin 0 -> 266 bytes res/drawable/cubeout_00017.png | Bin 0 -> 220 bytes res/drawable/cubeout_00018.png | Bin 0 -> 205 bytes res/drawable/cubeout_00019.png | Bin 0 -> 167 bytes res/drawable/cubeout_00020.png | Bin 0 -> 173 bytes res/drawable/cubeout_00021.png | Bin 0 -> 173 bytes res/drawable/cubeout_00022.png | Bin 0 -> 173 bytes res/drawable/cubeout_00023.png | Bin 0 -> 173 bytes res/drawable/cubeout_00024.png | Bin 0 -> 173 bytes res/drawable/cubeout_00025.png | Bin 0 -> 173 bytes res/drawable/cubeout_00026.png | Bin 0 -> 173 bytes res/drawable/cubeout_00027.png | Bin 0 -> 173 bytes res/drawable/cubeout_00028.png | Bin 0 -> 173 bytes res/drawable/cubeout_00029.png | Bin 0 -> 173 bytes res/drawable/cubeout_00030.png | Bin 0 -> 173 bytes res/drawable/cubeout_00031.png | Bin 0 -> 173 bytes res/drawable/cubeout_00032.png | Bin 0 -> 173 bytes res/drawable/cubeout_00033.png | Bin 0 -> 173 bytes res/drawable/cubeout_00034.png | Bin 0 -> 173 bytes res/drawable/cubeout_00035.png | Bin 0 -> 173 bytes res/drawable/cubeout_00036.png | Bin 0 -> 173 bytes res/drawable/cubeout_00037.png | Bin 0 -> 173 bytes res/drawable/cubeout_00038.png | Bin 0 -> 173 bytes res/drawable/cubeout_00039.png | Bin 0 -> 173 bytes res/drawable/cubeout_00040.png | Bin 0 -> 173 bytes res/drawable/cubeout_00041.png | Bin 0 -> 173 bytes res/drawable/cubeout_00042.png | Bin 0 -> 173 bytes res/drawable/cubeout_00043.png | Bin 0 -> 173 bytes res/drawable/cubeout_00044.png | Bin 0 -> 173 bytes res/drawable/cubeout_00045.png | Bin 0 -> 173 bytes res/drawable/cubeout_00046.png | Bin 0 -> 173 bytes res/drawable/cubeout_00047.png | Bin 0 -> 173 bytes res/drawable/cubeout_00048.png | Bin 0 -> 173 bytes res/drawable/cubeout_00049.png | Bin 0 -> 173 bytes res/drawable/cylinderin_00000.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00001.png | Bin 0 -> 451 bytes res/drawable/cylinderin_00002.png | Bin 0 -> 449 bytes res/drawable/cylinderin_00003.png | Bin 0 -> 436 bytes res/drawable/cylinderin_00004.png | Bin 0 -> 477 bytes res/drawable/cylinderin_00005.png | Bin 0 -> 502 bytes res/drawable/cylinderin_00006.png | Bin 0 -> 489 bytes res/drawable/cylinderin_00007.png | Bin 0 -> 494 bytes res/drawable/cylinderin_00008.png | Bin 0 -> 491 bytes res/drawable/cylinderin_00009.png | Bin 0 -> 516 bytes res/drawable/cylinderin_00010.png | Bin 0 -> 476 bytes res/drawable/cylinderin_00011.png | Bin 0 -> 500 bytes res/drawable/cylinderin_00012.png | Bin 0 -> 475 bytes res/drawable/cylinderin_00013.png | Bin 0 -> 487 bytes res/drawable/cylinderin_00014.png | Bin 0 -> 555 bytes res/drawable/cylinderin_00015.png | Bin 0 -> 475 bytes res/drawable/cylinderin_00016.png | Bin 0 -> 485 bytes res/drawable/cylinderin_00017.png | Bin 0 -> 487 bytes res/drawable/cylinderin_00018.png | Bin 0 -> 430 bytes res/drawable/cylinderin_00019.png | Bin 0 -> 444 bytes res/drawable/cylinderin_00020.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00021.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00022.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00023.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00024.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00025.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00026.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00027.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00028.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00029.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00030.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00031.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00032.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00033.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00034.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00035.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00036.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00037.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00038.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00039.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00040.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00041.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00042.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00043.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00044.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00045.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00046.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00047.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00048.png | Bin 0 -> 421 bytes res/drawable/cylinderin_00049.png | Bin 0 -> 421 bytes res/drawable/cylinderout_00000.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00001.png | Bin 0 -> 389 bytes res/drawable/cylinderout_00002.png | Bin 0 -> 376 bytes res/drawable/cylinderout_00003.png | Bin 0 -> 374 bytes res/drawable/cylinderout_00004.png | Bin 0 -> 419 bytes res/drawable/cylinderout_00005.png | Bin 0 -> 417 bytes res/drawable/cylinderout_00006.png | Bin 0 -> 414 bytes res/drawable/cylinderout_00007.png | Bin 0 -> 400 bytes res/drawable/cylinderout_00008.png | Bin 0 -> 466 bytes res/drawable/cylinderout_00009.png | Bin 0 -> 430 bytes res/drawable/cylinderout_00010.png | Bin 0 -> 394 bytes res/drawable/cylinderout_00011.png | Bin 0 -> 412 bytes res/drawable/cylinderout_00012.png | Bin 0 -> 420 bytes res/drawable/cylinderout_00013.png | Bin 0 -> 404 bytes res/drawable/cylinderout_00014.png | Bin 0 -> 415 bytes res/drawable/cylinderout_00015.png | Bin 0 -> 446 bytes res/drawable/cylinderout_00016.png | Bin 0 -> 418 bytes res/drawable/cylinderout_00017.png | Bin 0 -> 377 bytes res/drawable/cylinderout_00018.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00019.png | Bin 0 -> 394 bytes res/drawable/cylinderout_00020.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00021.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00022.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00023.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00024.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00025.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00026.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00027.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00028.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00029.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00030.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00031.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00032.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00033.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00034.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00035.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00036.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00037.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00038.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00039.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00040.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00041.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00042.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00043.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00044.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00045.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00046.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00047.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00048.png | Bin 0 -> 372 bytes res/drawable/cylinderout_00049.png | Bin 0 -> 372 bytes res/drawable/flip_00000.png | Bin 0 -> 178 bytes res/drawable/flip_00001.png | Bin 0 -> 208 bytes res/drawable/flip_00002.png | Bin 0 -> 221 bytes res/drawable/flip_00003.png | Bin 0 -> 243 bytes res/drawable/flip_00004.png | Bin 0 -> 346 bytes res/drawable/flip_00005.png | Bin 0 -> 321 bytes res/drawable/flip_00006.png | Bin 0 -> 364 bytes res/drawable/flip_00007.png | Bin 0 -> 377 bytes res/drawable/flip_00008.png | Bin 0 -> 359 bytes res/drawable/flip_00009.png | Bin 0 -> 360 bytes res/drawable/flip_00010.png | Bin 0 -> 359 bytes res/drawable/flip_00011.png | Bin 0 -> 378 bytes res/drawable/flip_00012.png | Bin 0 -> 378 bytes res/drawable/flip_00013.png | Bin 0 -> 369 bytes res/drawable/flip_00014.png | Bin 0 -> 341 bytes res/drawable/flip_00015.png | Bin 0 -> 353 bytes res/drawable/flip_00016.png | Bin 0 -> 325 bytes res/drawable/flip_00017.png | Bin 0 -> 259 bytes res/drawable/flip_00018.png | Bin 0 -> 204 bytes res/drawable/flip_00019.png | Bin 0 -> 220 bytes res/drawable/flip_00020.png | Bin 0 -> 178 bytes res/drawable/flip_00021.png | Bin 0 -> 178 bytes res/drawable/flip_00022.png | Bin 0 -> 178 bytes res/drawable/flip_00023.png | Bin 0 -> 178 bytes res/drawable/flip_00024.png | Bin 0 -> 178 bytes res/drawable/flip_00025.png | Bin 0 -> 178 bytes res/drawable/flip_00026.png | Bin 0 -> 178 bytes res/drawable/flip_00027.png | Bin 0 -> 178 bytes res/drawable/flip_00028.png | Bin 0 -> 178 bytes res/drawable/flip_00029.png | Bin 0 -> 178 bytes res/drawable/flip_00030.png | Bin 0 -> 178 bytes res/drawable/flip_00031.png | Bin 0 -> 178 bytes res/drawable/flip_00032.png | Bin 0 -> 178 bytes res/drawable/flip_00033.png | Bin 0 -> 178 bytes res/drawable/flip_00034.png | Bin 0 -> 178 bytes res/drawable/flip_00035.png | Bin 0 -> 178 bytes res/drawable/flip_00036.png | Bin 0 -> 178 bytes res/drawable/flip_00037.png | Bin 0 -> 178 bytes res/drawable/flip_00038.png | Bin 0 -> 178 bytes res/drawable/flip_00039.png | Bin 0 -> 178 bytes res/drawable/flip_00040.png | Bin 0 -> 178 bytes res/drawable/flip_00041.png | Bin 0 -> 178 bytes res/drawable/flip_00042.png | Bin 0 -> 178 bytes res/drawable/flip_00043.png | Bin 0 -> 178 bytes res/drawable/flip_00044.png | Bin 0 -> 178 bytes res/drawable/flip_00045.png | Bin 0 -> 178 bytes res/drawable/flip_00046.png | Bin 0 -> 178 bytes res/drawable/flip_00047.png | Bin 0 -> 178 bytes res/drawable/flip_00048.png | Bin 0 -> 178 bytes res/drawable/flip_00049.png | Bin 0 -> 178 bytes res/drawable/handle.png | Bin 0 -> 442 bytes res/drawable/handle_left.png | Bin 0 -> 370 bytes res/drawable/handle_reversed.png | Bin 0 -> 442 bytes res/drawable/launcheranimatedarrow_00000.png | Bin 0 -> 661 bytes res/drawable/launcheranimatedarrow_00001.png | Bin 0 -> 749 bytes res/drawable/launcheranimatedarrow_00002.png | Bin 0 -> 705 bytes res/drawable/launcheranimatedarrow_00003.png | Bin 0 -> 746 bytes res/drawable/launcheranimatedarrow_00004.png | Bin 0 -> 747 bytes res/drawable/launcheranimatedarrow_00005.png | Bin 0 -> 664 bytes res/drawable/launcheranimatedarrow_00006.png | Bin 0 -> 1007 bytes res/drawable/launcheranimatedarrow_00007.png | Bin 0 -> 999 bytes res/drawable/launcheranimatedarrow_00008.png | Bin 0 -> 710 bytes res/drawable/launcheranimatedarrow_00009.png | Bin 0 -> 968 bytes res/drawable/launcheranimatedarrow_00010.png | Bin 0 -> 990 bytes res/drawable/launcheranimatedarrow_00011.png | Bin 0 -> 671 bytes res/drawable/launcheranimatedarrow_00012.png | Bin 0 -> 744 bytes res/drawable/launcheranimatedarrow_00013.png | Bin 0 -> 750 bytes res/drawable/launcheranimatedarrow_00014.png | Bin 0 -> 747 bytes res/drawable/launcheranimatedarrow_00015.png | Bin 0 -> 736 bytes res/drawable/launcheranimatedarrow_00016.png | Bin 0 -> 668 bytes res/drawable/listitem_bg.xml | 6 + res/drawable/listitem_selector.xml | 6 + res/drawable/lock.png | Bin 0 -> 19461 bytes res/drawable/none_00000.png | Bin 0 -> 215 bytes res/drawable/none_00001.png | Bin 0 -> 234 bytes res/drawable/none_00002.png | Bin 0 -> 247 bytes res/drawable/none_00003.png | Bin 0 -> 222 bytes res/drawable/none_00004.png | Bin 0 -> 265 bytes res/drawable/none_00005.png | Bin 0 -> 246 bytes res/drawable/none_00006.png | Bin 0 -> 258 bytes res/drawable/none_00007.png | Bin 0 -> 250 bytes res/drawable/none_00008.png | Bin 0 -> 256 bytes res/drawable/none_00009.png | Bin 0 -> 247 bytes res/drawable/none_00010.png | Bin 0 -> 253 bytes res/drawable/none_00011.png | Bin 0 -> 261 bytes res/drawable/none_00012.png | Bin 0 -> 274 bytes res/drawable/none_00013.png | Bin 0 -> 252 bytes res/drawable/none_00014.png | Bin 0 -> 263 bytes res/drawable/none_00015.png | Bin 0 -> 267 bytes res/drawable/none_00016.png | Bin 0 -> 232 bytes res/drawable/none_00017.png | Bin 0 -> 222 bytes res/drawable/none_00018.png | Bin 0 -> 219 bytes res/drawable/none_00019.png | Bin 0 -> 223 bytes res/drawable/none_00020.png | Bin 0 -> 220 bytes res/drawable/none_00021.png | Bin 0 -> 220 bytes res/drawable/none_00022.png | Bin 0 -> 220 bytes res/drawable/none_00023.png | Bin 0 -> 220 bytes res/drawable/none_00024.png | Bin 0 -> 220 bytes res/drawable/none_00025.png | Bin 0 -> 220 bytes res/drawable/none_00026.png | Bin 0 -> 220 bytes res/drawable/none_00027.png | Bin 0 -> 220 bytes res/drawable/none_00028.png | Bin 0 -> 220 bytes res/drawable/none_00029.png | Bin 0 -> 220 bytes res/drawable/none_00030.png | Bin 0 -> 220 bytes res/drawable/none_00031.png | Bin 0 -> 220 bytes res/drawable/none_00032.png | Bin 0 -> 220 bytes res/drawable/none_00033.png | Bin 0 -> 220 bytes res/drawable/none_00034.png | Bin 0 -> 220 bytes res/drawable/none_00035.png | Bin 0 -> 220 bytes res/drawable/none_00036.png | Bin 0 -> 220 bytes res/drawable/none_00037.png | Bin 0 -> 220 bytes res/drawable/none_00038.png | Bin 0 -> 220 bytes res/drawable/none_00039.png | Bin 0 -> 220 bytes res/drawable/none_00040.png | Bin 0 -> 220 bytes res/drawable/none_00041.png | Bin 0 -> 220 bytes res/drawable/none_00042.png | Bin 0 -> 220 bytes res/drawable/none_00043.png | Bin 0 -> 220 bytes res/drawable/none_00044.png | Bin 0 -> 220 bytes res/drawable/none_00045.png | Bin 0 -> 220 bytes res/drawable/none_00046.png | Bin 0 -> 220 bytes res/drawable/none_00047.png | Bin 0 -> 220 bytes res/drawable/none_00048.png | Bin 0 -> 220 bytes res/drawable/none_00049.png | Bin 0 -> 220 bytes res/drawable/overview_00000.png | Bin 0 -> 223 bytes res/drawable/overview_00001.png | Bin 0 -> 268 bytes res/drawable/overview_00002.png | Bin 0 -> 283 bytes res/drawable/overview_00003.png | Bin 0 -> 265 bytes res/drawable/overview_00004.png | Bin 0 -> 277 bytes res/drawable/overview_00005.png | Bin 0 -> 251 bytes res/drawable/overview_00006.png | Bin 0 -> 256 bytes res/drawable/overview_00007.png | Bin 0 -> 242 bytes res/drawable/overview_00008.png | Bin 0 -> 254 bytes res/drawable/overview_00009.png | Bin 0 -> 265 bytes res/drawable/overview_00010.png | Bin 0 -> 247 bytes res/drawable/overview_00011.png | Bin 0 -> 266 bytes res/drawable/overview_00012.png | Bin 0 -> 244 bytes res/drawable/overview_00013.png | Bin 0 -> 240 bytes res/drawable/overview_00014.png | Bin 0 -> 224 bytes res/drawable/overview_00015.png | Bin 0 -> 244 bytes res/drawable/overview_00016.png | Bin 0 -> 254 bytes res/drawable/overview_00017.png | Bin 0 -> 246 bytes res/drawable/overview_00018.png | Bin 0 -> 253 bytes res/drawable/overview_00019.png | Bin 0 -> 259 bytes res/drawable/overview_00020.png | Bin 0 -> 226 bytes res/drawable/overview_00021.png | Bin 0 -> 226 bytes res/drawable/overview_00022.png | Bin 0 -> 226 bytes res/drawable/overview_00023.png | Bin 0 -> 226 bytes res/drawable/overview_00024.png | Bin 0 -> 226 bytes res/drawable/overview_00025.png | Bin 0 -> 226 bytes res/drawable/overview_00026.png | Bin 0 -> 226 bytes res/drawable/overview_00027.png | Bin 0 -> 226 bytes res/drawable/overview_00028.png | Bin 0 -> 226 bytes res/drawable/overview_00029.png | Bin 0 -> 226 bytes res/drawable/overview_00030.png | Bin 0 -> 226 bytes res/drawable/overview_00031.png | Bin 0 -> 226 bytes res/drawable/overview_00032.png | Bin 0 -> 226 bytes res/drawable/overview_00033.png | Bin 0 -> 226 bytes res/drawable/overview_00034.png | Bin 0 -> 226 bytes res/drawable/overview_00035.png | Bin 0 -> 226 bytes res/drawable/overview_00036.png | Bin 0 -> 226 bytes res/drawable/overview_00037.png | Bin 0 -> 226 bytes res/drawable/overview_00038.png | Bin 0 -> 226 bytes res/drawable/overview_00039.png | Bin 0 -> 226 bytes res/drawable/overview_00040.png | Bin 0 -> 226 bytes res/drawable/overview_00041.png | Bin 0 -> 226 bytes res/drawable/overview_00042.png | Bin 0 -> 226 bytes res/drawable/overview_00043.png | Bin 0 -> 226 bytes res/drawable/overview_00044.png | Bin 0 -> 226 bytes res/drawable/overview_00045.png | Bin 0 -> 226 bytes res/drawable/overview_00046.png | Bin 0 -> 226 bytes res/drawable/overview_00047.png | Bin 0 -> 226 bytes res/drawable/overview_00048.png | Bin 0 -> 226 bytes res/drawable/overview_00049.png | Bin 0 -> 226 bytes res/drawable/rotatedown_00000.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00001.png | Bin 0 -> 189 bytes res/drawable/rotatedown_00002.png | Bin 0 -> 285 bytes res/drawable/rotatedown_00003.png | Bin 0 -> 375 bytes res/drawable/rotatedown_00004.png | Bin 0 -> 435 bytes res/drawable/rotatedown_00005.png | Bin 0 -> 502 bytes res/drawable/rotatedown_00006.png | Bin 0 -> 485 bytes res/drawable/rotatedown_00007.png | Bin 0 -> 530 bytes res/drawable/rotatedown_00008.png | Bin 0 -> 491 bytes res/drawable/rotatedown_00009.png | Bin 0 -> 488 bytes res/drawable/rotatedown_00010.png | Bin 0 -> 578 bytes res/drawable/rotatedown_00011.png | Bin 0 -> 498 bytes res/drawable/rotatedown_00012.png | Bin 0 -> 520 bytes res/drawable/rotatedown_00013.png | Bin 0 -> 1100 bytes res/drawable/rotatedown_00014.png | Bin 0 -> 1016 bytes res/drawable/rotatedown_00015.png | Bin 0 -> 761 bytes res/drawable/rotatedown_00016.png | Bin 0 -> 924 bytes res/drawable/rotatedown_00017.png | Bin 0 -> 1024 bytes res/drawable/rotatedown_00018.png | Bin 0 -> 514 bytes res/drawable/rotatedown_00019.png | Bin 0 -> 479 bytes res/drawable/rotatedown_00020.png | Bin 0 -> 532 bytes res/drawable/rotatedown_00021.png | Bin 0 -> 519 bytes res/drawable/rotatedown_00022.png | Bin 0 -> 491 bytes res/drawable/rotatedown_00023.png | Bin 0 -> 533 bytes res/drawable/rotatedown_00024.png | Bin 0 -> 482 bytes res/drawable/rotatedown_00025.png | Bin 0 -> 465 bytes res/drawable/rotatedown_00026.png | Bin 0 -> 429 bytes res/drawable/rotatedown_00027.png | Bin 0 -> 384 bytes res/drawable/rotatedown_00028.png | Bin 0 -> 280 bytes res/drawable/rotatedown_00029.png | Bin 0 -> 205 bytes res/drawable/rotatedown_00030.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00031.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00032.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00033.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00034.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00035.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00036.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00037.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00038.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00039.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00040.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00041.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00042.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00043.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00044.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00045.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00046.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00047.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00048.png | Bin 0 -> 173 bytes res/drawable/rotatedown_00049.png | Bin 0 -> 173 bytes res/drawable/rotateup_00000.png | Bin 0 -> 173 bytes res/drawable/rotateup_00001.png | Bin 0 -> 189 bytes res/drawable/rotateup_00002.png | Bin 0 -> 285 bytes res/drawable/rotateup_00003.png | Bin 0 -> 368 bytes res/drawable/rotateup_00004.png | Bin 0 -> 432 bytes res/drawable/rotateup_00005.png | Bin 0 -> 495 bytes res/drawable/rotateup_00006.png | Bin 0 -> 485 bytes res/drawable/rotateup_00007.png | Bin 0 -> 536 bytes res/drawable/rotateup_00008.png | Bin 0 -> 495 bytes res/drawable/rotateup_00009.png | Bin 0 -> 527 bytes res/drawable/rotateup_00010.png | Bin 0 -> 569 bytes res/drawable/rotateup_00011.png | Bin 0 -> 505 bytes res/drawable/rotateup_00012.png | Bin 0 -> 517 bytes res/drawable/rotateup_00013.png | Bin 0 -> 1114 bytes res/drawable/rotateup_00014.png | Bin 0 -> 996 bytes res/drawable/rotateup_00015.png | Bin 0 -> 768 bytes res/drawable/rotateup_00016.png | Bin 0 -> 937 bytes res/drawable/rotateup_00017.png | Bin 0 -> 1013 bytes res/drawable/rotateup_00018.png | Bin 0 -> 517 bytes res/drawable/rotateup_00019.png | Bin 0 -> 469 bytes res/drawable/rotateup_00020.png | Bin 0 -> 587 bytes res/drawable/rotateup_00021.png | Bin 0 -> 519 bytes res/drawable/rotateup_00022.png | Bin 0 -> 479 bytes res/drawable/rotateup_00023.png | Bin 0 -> 535 bytes res/drawable/rotateup_00024.png | Bin 0 -> 486 bytes res/drawable/rotateup_00025.png | Bin 0 -> 461 bytes res/drawable/rotateup_00026.png | Bin 0 -> 438 bytes res/drawable/rotateup_00027.png | Bin 0 -> 380 bytes res/drawable/rotateup_00028.png | Bin 0 -> 274 bytes res/drawable/rotateup_00029.png | Bin 0 -> 205 bytes res/drawable/rotateup_00030.png | Bin 0 -> 173 bytes res/drawable/rotateup_00031.png | Bin 0 -> 173 bytes res/drawable/rotateup_00032.png | Bin 0 -> 173 bytes res/drawable/rotateup_00033.png | Bin 0 -> 173 bytes res/drawable/rotateup_00034.png | Bin 0 -> 173 bytes res/drawable/rotateup_00035.png | Bin 0 -> 173 bytes res/drawable/rotateup_00036.png | Bin 0 -> 173 bytes res/drawable/rotateup_00037.png | Bin 0 -> 173 bytes res/drawable/rotateup_00038.png | Bin 0 -> 173 bytes res/drawable/rotateup_00039.png | Bin 0 -> 173 bytes res/drawable/rotateup_00040.png | Bin 0 -> 173 bytes res/drawable/rotateup_00041.png | Bin 0 -> 173 bytes res/drawable/rotateup_00042.png | Bin 0 -> 173 bytes res/drawable/rotateup_00043.png | Bin 0 -> 173 bytes res/drawable/rotateup_00044.png | Bin 0 -> 173 bytes res/drawable/rotateup_00045.png | Bin 0 -> 173 bytes res/drawable/rotateup_00046.png | Bin 0 -> 173 bytes res/drawable/rotateup_00047.png | Bin 0 -> 173 bytes res/drawable/rotateup_00048.png | Bin 0 -> 173 bytes res/drawable/rotateup_00049.png | Bin 0 -> 173 bytes res/drawable/stack_00000.png | Bin 0 -> 203 bytes res/drawable/stack_00001.png | Bin 0 -> 217 bytes res/drawable/stack_00002.png | Bin 0 -> 216 bytes res/drawable/stack_00003.png | Bin 0 -> 216 bytes res/drawable/stack_00004.png | Bin 0 -> 241 bytes res/drawable/stack_00005.png | Bin 0 -> 246 bytes res/drawable/stack_00006.png | Bin 0 -> 234 bytes res/drawable/stack_00007.png | Bin 0 -> 240 bytes res/drawable/stack_00008.png | Bin 0 -> 285 bytes res/drawable/stack_00009.png | Bin 0 -> 295 bytes res/drawable/stack_00010.png | Bin 0 -> 289 bytes res/drawable/stack_00011.png | Bin 0 -> 284 bytes res/drawable/stack_00012.png | Bin 0 -> 290 bytes res/drawable/stack_00013.png | Bin 0 -> 278 bytes res/drawable/stack_00014.png | Bin 0 -> 266 bytes res/drawable/stack_00015.png | Bin 0 -> 294 bytes res/drawable/stack_00016.png | Bin 0 -> 285 bytes res/drawable/stack_00017.png | Bin 0 -> 272 bytes res/drawable/stack_00018.png | Bin 0 -> 574 bytes res/drawable/stack_00019.png | Bin 0 -> 213 bytes res/drawable/stack_00020.png | Bin 0 -> 215 bytes res/drawable/stack_00021.png | Bin 0 -> 215 bytes res/drawable/stack_00022.png | Bin 0 -> 215 bytes res/drawable/stack_00023.png | Bin 0 -> 215 bytes res/drawable/stack_00024.png | Bin 0 -> 215 bytes res/drawable/stack_00025.png | Bin 0 -> 215 bytes res/drawable/stack_00026.png | Bin 0 -> 215 bytes res/drawable/stack_00027.png | Bin 0 -> 215 bytes res/drawable/stack_00028.png | Bin 0 -> 215 bytes res/drawable/stack_00029.png | Bin 0 -> 215 bytes res/drawable/stack_00030.png | Bin 0 -> 215 bytes res/drawable/stack_00031.png | Bin 0 -> 215 bytes res/drawable/stack_00032.png | Bin 0 -> 215 bytes res/drawable/stack_00033.png | Bin 0 -> 215 bytes res/drawable/stack_00034.png | Bin 0 -> 215 bytes res/drawable/stack_00035.png | Bin 0 -> 215 bytes res/drawable/stack_00036.png | Bin 0 -> 215 bytes res/drawable/stack_00037.png | Bin 0 -> 215 bytes res/drawable/stack_00038.png | Bin 0 -> 215 bytes res/drawable/stack_00039.png | Bin 0 -> 215 bytes res/drawable/stack_00040.png | Bin 0 -> 215 bytes res/drawable/stack_00041.png | Bin 0 -> 215 bytes res/drawable/stack_00042.png | Bin 0 -> 215 bytes res/drawable/stack_00043.png | Bin 0 -> 215 bytes res/drawable/stack_00044.png | Bin 0 -> 215 bytes res/drawable/stack_00045.png | Bin 0 -> 215 bytes res/drawable/stack_00046.png | Bin 0 -> 215 bytes res/drawable/stack_00047.png | Bin 0 -> 215 bytes res/drawable/stack_00048.png | Bin 0 -> 215 bytes res/drawable/stack_00049.png | Bin 0 -> 215 bytes res/drawable/themes_button.xml | 21 + res/drawable/transition_accordion.xml | 54 + res/drawable/transition_arrow.xml | 21 + res/drawable/transition_arrow_reverse.xml | 21 + res/drawable/transition_carousel.xml | 55 + res/drawable/transition_cubein.xml | 55 + res/drawable/transition_cubeout.xml | 55 + res/drawable/transition_cylinderin.xml | 55 + res/drawable/transition_cylinderout.xml | 55 + res/drawable/transition_flip.xml | 55 + res/drawable/transition_none.xml | 55 + res/drawable/transition_overview.xml | 55 + res/drawable/transition_rotatedown.xml | 55 + res/drawable/transition_rotateup.xml | 55 + res/drawable/transition_stack.xml | 55 + res/drawable/transition_zoomin.xml | 55 + res/drawable/transition_zoomout.xml | 55 + res/drawable/zoomin_00000.png | Bin 0 -> 231 bytes res/drawable/zoomin_00001.png | Bin 0 -> 263 bytes res/drawable/zoomin_00002.png | Bin 0 -> 279 bytes res/drawable/zoomin_00003.png | Bin 0 -> 272 bytes res/drawable/zoomin_00004.png | Bin 0 -> 287 bytes res/drawable/zoomin_00005.png | Bin 0 -> 279 bytes res/drawable/zoomin_00006.png | Bin 0 -> 285 bytes res/drawable/zoomin_00007.png | Bin 0 -> 328 bytes res/drawable/zoomin_00008.png | Bin 0 -> 303 bytes res/drawable/zoomin_00009.png | Bin 0 -> 296 bytes res/drawable/zoomin_00010.png | Bin 0 -> 307 bytes res/drawable/zoomin_00011.png | Bin 0 -> 306 bytes res/drawable/zoomin_00012.png | Bin 0 -> 300 bytes res/drawable/zoomin_00013.png | Bin 0 -> 294 bytes res/drawable/zoomin_00014.png | Bin 0 -> 308 bytes res/drawable/zoomin_00015.png | Bin 0 -> 321 bytes res/drawable/zoomin_00016.png | Bin 0 -> 321 bytes res/drawable/zoomin_00017.png | Bin 0 -> 270 bytes res/drawable/zoomin_00018.png | Bin 0 -> 248 bytes res/drawable/zoomin_00019.png | Bin 0 -> 247 bytes res/drawable/zoomin_00020.png | Bin 0 -> 246 bytes res/drawable/zoomin_00021.png | Bin 0 -> 246 bytes res/drawable/zoomin_00022.png | Bin 0 -> 246 bytes res/drawable/zoomin_00023.png | Bin 0 -> 246 bytes res/drawable/zoomin_00024.png | Bin 0 -> 246 bytes res/drawable/zoomin_00025.png | Bin 0 -> 246 bytes res/drawable/zoomin_00026.png | Bin 0 -> 246 bytes res/drawable/zoomin_00027.png | Bin 0 -> 246 bytes res/drawable/zoomin_00028.png | Bin 0 -> 246 bytes res/drawable/zoomin_00029.png | Bin 0 -> 246 bytes res/drawable/zoomin_00030.png | Bin 0 -> 246 bytes res/drawable/zoomin_00031.png | Bin 0 -> 246 bytes res/drawable/zoomin_00032.png | Bin 0 -> 246 bytes res/drawable/zoomin_00033.png | Bin 0 -> 246 bytes res/drawable/zoomin_00034.png | Bin 0 -> 246 bytes res/drawable/zoomin_00035.png | Bin 0 -> 246 bytes res/drawable/zoomin_00036.png | Bin 0 -> 246 bytes res/drawable/zoomin_00037.png | Bin 0 -> 246 bytes res/drawable/zoomin_00038.png | Bin 0 -> 246 bytes res/drawable/zoomin_00039.png | Bin 0 -> 246 bytes res/drawable/zoomin_00040.png | Bin 0 -> 246 bytes res/drawable/zoomin_00041.png | Bin 0 -> 246 bytes res/drawable/zoomin_00042.png | Bin 0 -> 246 bytes res/drawable/zoomin_00043.png | Bin 0 -> 246 bytes res/drawable/zoomin_00044.png | Bin 0 -> 246 bytes res/drawable/zoomin_00045.png | Bin 0 -> 246 bytes res/drawable/zoomin_00046.png | Bin 0 -> 246 bytes res/drawable/zoomin_00047.png | Bin 0 -> 246 bytes res/drawable/zoomin_00048.png | Bin 0 -> 246 bytes res/drawable/zoomin_00049.png | Bin 0 -> 246 bytes res/drawable/zoomout_00000.png | Bin 0 -> 286 bytes res/drawable/zoomout_00001.png | Bin 0 -> 271 bytes res/drawable/zoomout_00002.png | Bin 0 -> 295 bytes res/drawable/zoomout_00003.png | Bin 0 -> 293 bytes res/drawable/zoomout_00004.png | Bin 0 -> 334 bytes res/drawable/zoomout_00005.png | Bin 0 -> 337 bytes res/drawable/zoomout_00006.png | Bin 0 -> 342 bytes res/drawable/zoomout_00007.png | Bin 0 -> 336 bytes res/drawable/zoomout_00008.png | Bin 0 -> 343 bytes res/drawable/zoomout_00009.png | Bin 0 -> 344 bytes res/drawable/zoomout_00010.png | Bin 0 -> 336 bytes res/drawable/zoomout_00011.png | Bin 0 -> 332 bytes res/drawable/zoomout_00012.png | Bin 0 -> 333 bytes res/drawable/zoomout_00013.png | Bin 0 -> 339 bytes res/drawable/zoomout_00014.png | Bin 0 -> 346 bytes res/drawable/zoomout_00015.png | Bin 0 -> 325 bytes res/drawable/zoomout_00016.png | Bin 0 -> 372 bytes res/drawable/zoomout_00017.png | Bin 0 -> 309 bytes res/drawable/zoomout_00018.png | Bin 0 -> 292 bytes res/drawable/zoomout_00019.png | Bin 0 -> 300 bytes res/drawable/zoomout_00020.png | Bin 0 -> 279 bytes res/drawable/zoomout_00021.png | Bin 0 -> 279 bytes res/drawable/zoomout_00022.png | Bin 0 -> 279 bytes res/drawable/zoomout_00023.png | Bin 0 -> 279 bytes res/drawable/zoomout_00024.png | Bin 0 -> 279 bytes res/drawable/zoomout_00025.png | Bin 0 -> 279 bytes res/drawable/zoomout_00026.png | Bin 0 -> 279 bytes res/drawable/zoomout_00027.png | Bin 0 -> 279 bytes res/drawable/zoomout_00028.png | Bin 0 -> 279 bytes res/drawable/zoomout_00029.png | Bin 0 -> 279 bytes res/drawable/zoomout_00030.png | Bin 0 -> 279 bytes res/drawable/zoomout_00031.png | Bin 0 -> 279 bytes res/drawable/zoomout_00032.png | Bin 0 -> 279 bytes res/drawable/zoomout_00033.png | Bin 0 -> 279 bytes res/drawable/zoomout_00034.png | Bin 0 -> 279 bytes res/drawable/zoomout_00035.png | Bin 0 -> 279 bytes res/drawable/zoomout_00036.png | Bin 0 -> 279 bytes res/drawable/zoomout_00037.png | Bin 0 -> 279 bytes res/drawable/zoomout_00038.png | Bin 0 -> 279 bytes res/drawable/zoomout_00039.png | Bin 0 -> 279 bytes res/drawable/zoomout_00040.png | Bin 0 -> 279 bytes res/drawable/zoomout_00041.png | Bin 0 -> 279 bytes res/drawable/zoomout_00042.png | Bin 0 -> 279 bytes res/drawable/zoomout_00043.png | Bin 0 -> 279 bytes res/drawable/zoomout_00044.png | Bin 0 -> 279 bytes res/drawable/zoomout_00045.png | Bin 0 -> 279 bytes res/drawable/zoomout_00046.png | Bin 0 -> 279 bytes res/drawable/zoomout_00047.png | Bin 0 -> 279 bytes res/drawable/zoomout_00048.png | Bin 0 -> 279 bytes res/drawable/zoomout_00049.png | Bin 0 -> 279 bytes res/layout/overview_panel.xml | 148 +-- res/layout/settings_pane.xml | 121 ++ res/layout/settings_pane_list_header.xml | 19 + res/layout/settings_pane_list_item.xml | 36 + res/layout/settings_transitions_screen.xml | 51 + res/values-sw320dp/dimens.xml | 6 +- res/values-sw600dp/dimens.xml | 3 + res/values/attrs.xml | 11 + res/values/cm_arrays.xml | 18 +- res/values/cm_strings.xml | 21 + res/values/colors.xml | 8 +- res/values/config.xml | 2 +- res/values/dimens.xml | 7 +- src/com/android/launcher3/AppsCustomizeLayout.java | 4 +- src/com/android/launcher3/DragLayer.java | 3 + src/com/android/launcher3/DynamicGrid.java | 7 +- src/com/android/launcher3/Launcher.java | 382 +++--- src/com/android/launcher3/LauncherAppState.java | 11 +- .../android/launcher3/OverviewSettingsPanel.java | 203 +++ src/com/android/launcher3/PagedView.java | 5 - src/com/android/launcher3/SearchDropTargetBar.java | 9 +- .../android/launcher3/SlidingUpPanelLayout.java | 1315 ++++++++++++++++++++ .../launcher3/TransitionEffectsFragment.java | 222 ++++ src/com/android/launcher3/Workspace.java | 61 +- .../android/launcher3/list/AutoScrollListView.java | 117 ++ .../launcher3/list/CompositeCursorAdapter.java | 532 ++++++++ .../launcher3/list/PinnedHeaderListAdapter.java | 172 +++ .../launcher3/list/PinnedHeaderListView.java | 565 +++++++++ .../list/SettingsPinnedHeaderAdapter.java | 248 ++++ 807 files changed, 4867 insertions(+), 368 deletions(-) create mode 100644 res/anim/drop_down.xml create mode 100644 res/anim/enter_from_left.xml create mode 100644 res/anim/enter_from_right.xml create mode 100644 res/anim/exit_out_left.xml create mode 100644 res/anim/exit_out_right.xml create mode 100644 res/color/listitem_text.xml delete mode 100644 res/drawable-hdpi/ic_setting.png delete mode 100644 res/drawable-hdpi/ic_setting_pressed.png create mode 100644 res/drawable-hdpi/ic_themes.png create mode 100644 res/drawable-hdpi/ic_themes_pressed.png create mode 100644 res/drawable-mdpi/ic_themes.png create mode 100644 res/drawable-mdpi/ic_themes_pressed.png delete mode 100644 res/drawable-xhdpi/ic_setting.png delete mode 100644 res/drawable-xhdpi/ic_setting_pressed.png create mode 100644 res/drawable-xhdpi/ic_themes.png create mode 100644 res/drawable-xhdpi/ic_themes_pressed.png delete mode 100644 res/drawable-xxhdpi/ic_setting.png delete mode 100644 res/drawable-xxhdpi/ic_setting_pressed.png create mode 100644 res/drawable-xxhdpi/ic_themes.png create mode 100644 res/drawable-xxhdpi/ic_themes_pressed.png create mode 100644 res/drawable/above_shadow.xml create mode 100644 res/drawable/acordian_00000.png create mode 100644 res/drawable/acordian_00001.png create mode 100644 res/drawable/acordian_00002.png create mode 100644 res/drawable/acordian_00003.png create mode 100644 res/drawable/acordian_00004.png create mode 100644 res/drawable/acordian_00005.png create mode 100644 res/drawable/acordian_00006.png create mode 100644 res/drawable/acordian_00007.png create mode 100644 res/drawable/acordian_00008.png create mode 100644 res/drawable/acordian_00009.png create mode 100644 res/drawable/acordian_00010.png create mode 100644 res/drawable/acordian_00011.png create mode 100644 res/drawable/acordian_00012.png create mode 100644 res/drawable/acordian_00013.png create mode 100644 res/drawable/acordian_00014.png create mode 100644 res/drawable/acordian_00015.png create mode 100644 res/drawable/acordian_00016.png create mode 100644 res/drawable/acordian_00017.png create mode 100644 res/drawable/acordian_00018.png create mode 100644 res/drawable/acordian_00019.png create mode 100644 res/drawable/acordian_00020.png create mode 100644 res/drawable/acordian_00021.png create mode 100644 res/drawable/acordian_00022.png create mode 100644 res/drawable/acordian_00023.png create mode 100644 res/drawable/acordian_00024.png create mode 100644 res/drawable/acordian_00025.png create mode 100644 res/drawable/acordian_00026.png create mode 100644 res/drawable/acordian_00027.png create mode 100644 res/drawable/acordian_00028.png create mode 100644 res/drawable/acordian_00029.png create mode 100644 res/drawable/acordian_00030.png create mode 100644 res/drawable/acordian_00031.png create mode 100644 res/drawable/acordian_00032.png create mode 100644 res/drawable/acordian_00033.png create mode 100644 res/drawable/acordian_00034.png create mode 100644 res/drawable/acordian_00035.png create mode 100644 res/drawable/acordian_00036.png create mode 100644 res/drawable/acordian_00037.png create mode 100644 res/drawable/acordian_00038.png create mode 100644 res/drawable/acordian_00039.png create mode 100644 res/drawable/acordian_00040.png create mode 100644 res/drawable/acordian_00041.png create mode 100644 res/drawable/acordian_00042.png create mode 100644 res/drawable/acordian_00043.png create mode 100644 res/drawable/acordian_00044.png create mode 100644 res/drawable/acordian_00045.png create mode 100644 res/drawable/acordian_00046.png create mode 100644 res/drawable/acordian_00047.png create mode 100644 res/drawable/acordian_00048.png create mode 100644 res/drawable/acordian_00049.png create mode 100644 res/drawable/below_shadow.xml create mode 100644 res/drawable/carousel_00000.png create mode 100644 res/drawable/carousel_00001.png create mode 100644 res/drawable/carousel_00002.png create mode 100644 res/drawable/carousel_00003.png create mode 100644 res/drawable/carousel_00004.png create mode 100644 res/drawable/carousel_00005.png create mode 100644 res/drawable/carousel_00006.png create mode 100644 res/drawable/carousel_00007.png create mode 100644 res/drawable/carousel_00008.png create mode 100644 res/drawable/carousel_00009.png create mode 100644 res/drawable/carousel_00010.png create mode 100644 res/drawable/carousel_00011.png create mode 100644 res/drawable/carousel_00012.png create mode 100644 res/drawable/carousel_00013.png create mode 100644 res/drawable/carousel_00014.png create mode 100644 res/drawable/carousel_00015.png create mode 100644 res/drawable/carousel_00016.png create mode 100644 res/drawable/carousel_00017.png create mode 100644 res/drawable/carousel_00018.png create mode 100644 res/drawable/carousel_00019.png create mode 100644 res/drawable/carousel_00020.png create mode 100644 res/drawable/carousel_00021.png create mode 100644 res/drawable/carousel_00022.png create mode 100644 res/drawable/carousel_00023.png create mode 100644 res/drawable/carousel_00024.png create mode 100644 res/drawable/carousel_00025.png create mode 100644 res/drawable/carousel_00026.png create mode 100644 res/drawable/carousel_00027.png create mode 100644 res/drawable/carousel_00028.png create mode 100644 res/drawable/carousel_00029.png create mode 100644 res/drawable/carousel_00030.png create mode 100644 res/drawable/carousel_00031.png create mode 100644 res/drawable/carousel_00032.png create mode 100644 res/drawable/carousel_00033.png create mode 100644 res/drawable/carousel_00034.png create mode 100644 res/drawable/carousel_00035.png create mode 100644 res/drawable/carousel_00036.png create mode 100644 res/drawable/carousel_00037.png create mode 100644 res/drawable/carousel_00038.png create mode 100644 res/drawable/carousel_00039.png create mode 100644 res/drawable/carousel_00040.png create mode 100644 res/drawable/carousel_00041.png create mode 100644 res/drawable/carousel_00042.png create mode 100644 res/drawable/carousel_00043.png create mode 100644 res/drawable/carousel_00044.png create mode 100644 res/drawable/carousel_00045.png create mode 100644 res/drawable/carousel_00046.png create mode 100644 res/drawable/carousel_00047.png create mode 100644 res/drawable/carousel_00048.png create mode 100644 res/drawable/carousel_00049.png create mode 100644 res/drawable/cubein_00000.png create mode 100644 res/drawable/cubein_00001.png create mode 100644 res/drawable/cubein_00002.png create mode 100644 res/drawable/cubein_00003.png create mode 100644 res/drawable/cubein_00004.png create mode 100644 res/drawable/cubein_00005.png create mode 100644 res/drawable/cubein_00006.png create mode 100644 res/drawable/cubein_00007.png create mode 100644 res/drawable/cubein_00008.png create mode 100644 res/drawable/cubein_00009.png create mode 100644 res/drawable/cubein_00010.png create mode 100644 res/drawable/cubein_00011.png create mode 100644 res/drawable/cubein_00012.png create mode 100644 res/drawable/cubein_00013.png create mode 100644 res/drawable/cubein_00014.png create mode 100644 res/drawable/cubein_00015.png create mode 100644 res/drawable/cubein_00016.png create mode 100644 res/drawable/cubein_00017.png create mode 100644 res/drawable/cubein_00018.png create mode 100644 res/drawable/cubein_00019.png create mode 100644 res/drawable/cubein_00020.png create mode 100644 res/drawable/cubein_00021.png create mode 100644 res/drawable/cubein_00022.png create mode 100644 res/drawable/cubein_00023.png create mode 100644 res/drawable/cubein_00024.png create mode 100644 res/drawable/cubein_00025.png create mode 100644 res/drawable/cubein_00026.png create mode 100644 res/drawable/cubein_00027.png create mode 100644 res/drawable/cubein_00028.png create mode 100644 res/drawable/cubein_00029.png create mode 100644 res/drawable/cubein_00030.png create mode 100644 res/drawable/cubein_00031.png create mode 100644 res/drawable/cubein_00032.png create mode 100644 res/drawable/cubein_00033.png create mode 100644 res/drawable/cubein_00034.png create mode 100644 res/drawable/cubein_00035.png create mode 100644 res/drawable/cubein_00036.png create mode 100644 res/drawable/cubein_00037.png create mode 100644 res/drawable/cubein_00038.png create mode 100644 res/drawable/cubein_00039.png create mode 100644 res/drawable/cubein_00040.png create mode 100644 res/drawable/cubein_00041.png create mode 100644 res/drawable/cubein_00042.png create mode 100644 res/drawable/cubein_00043.png create mode 100644 res/drawable/cubein_00044.png create mode 100644 res/drawable/cubein_00045.png create mode 100644 res/drawable/cubein_00046.png create mode 100644 res/drawable/cubein_00047.png create mode 100644 res/drawable/cubein_00048.png create mode 100644 res/drawable/cubein_00049.png create mode 100644 res/drawable/cubeout_00000.png create mode 100644 res/drawable/cubeout_00001.png create mode 100644 res/drawable/cubeout_00002.png create mode 100644 res/drawable/cubeout_00003.png create mode 100644 res/drawable/cubeout_00004.png create mode 100644 res/drawable/cubeout_00005.png create mode 100644 res/drawable/cubeout_00006.png create mode 100644 res/drawable/cubeout_00007.png create mode 100644 res/drawable/cubeout_00008.png create mode 100644 res/drawable/cubeout_00009.png create mode 100644 res/drawable/cubeout_00010.png create mode 100644 res/drawable/cubeout_00011.png create mode 100644 res/drawable/cubeout_00012.png create mode 100644 res/drawable/cubeout_00013.png create mode 100644 res/drawable/cubeout_00014.png create mode 100644 res/drawable/cubeout_00015.png create mode 100644 res/drawable/cubeout_00016.png create mode 100644 res/drawable/cubeout_00017.png create mode 100644 res/drawable/cubeout_00018.png create mode 100644 res/drawable/cubeout_00019.png create mode 100644 res/drawable/cubeout_00020.png create mode 100644 res/drawable/cubeout_00021.png create mode 100644 res/drawable/cubeout_00022.png create mode 100644 res/drawable/cubeout_00023.png create mode 100644 res/drawable/cubeout_00024.png create mode 100644 res/drawable/cubeout_00025.png create mode 100644 res/drawable/cubeout_00026.png create mode 100644 res/drawable/cubeout_00027.png create mode 100644 res/drawable/cubeout_00028.png create mode 100644 res/drawable/cubeout_00029.png create mode 100644 res/drawable/cubeout_00030.png create mode 100644 res/drawable/cubeout_00031.png create mode 100644 res/drawable/cubeout_00032.png create mode 100644 res/drawable/cubeout_00033.png create mode 100644 res/drawable/cubeout_00034.png create mode 100644 res/drawable/cubeout_00035.png create mode 100644 res/drawable/cubeout_00036.png create mode 100644 res/drawable/cubeout_00037.png create mode 100644 res/drawable/cubeout_00038.png create mode 100644 res/drawable/cubeout_00039.png create mode 100644 res/drawable/cubeout_00040.png create mode 100644 res/drawable/cubeout_00041.png create mode 100644 res/drawable/cubeout_00042.png create mode 100644 res/drawable/cubeout_00043.png create mode 100644 res/drawable/cubeout_00044.png create mode 100644 res/drawable/cubeout_00045.png create mode 100644 res/drawable/cubeout_00046.png create mode 100644 res/drawable/cubeout_00047.png create mode 100644 res/drawable/cubeout_00048.png create mode 100644 res/drawable/cubeout_00049.png create mode 100644 res/drawable/cylinderin_00000.png create mode 100644 res/drawable/cylinderin_00001.png create mode 100644 res/drawable/cylinderin_00002.png create mode 100644 res/drawable/cylinderin_00003.png create mode 100644 res/drawable/cylinderin_00004.png create mode 100644 res/drawable/cylinderin_00005.png create mode 100644 res/drawable/cylinderin_00006.png create mode 100644 res/drawable/cylinderin_00007.png create mode 100644 res/drawable/cylinderin_00008.png create mode 100644 res/drawable/cylinderin_00009.png create mode 100644 res/drawable/cylinderin_00010.png create mode 100644 res/drawable/cylinderin_00011.png create mode 100644 res/drawable/cylinderin_00012.png create mode 100644 res/drawable/cylinderin_00013.png create mode 100644 res/drawable/cylinderin_00014.png create mode 100644 res/drawable/cylinderin_00015.png create mode 100644 res/drawable/cylinderin_00016.png create mode 100644 res/drawable/cylinderin_00017.png create mode 100644 res/drawable/cylinderin_00018.png create mode 100644 res/drawable/cylinderin_00019.png create mode 100644 res/drawable/cylinderin_00020.png create mode 100644 res/drawable/cylinderin_00021.png create mode 100644 res/drawable/cylinderin_00022.png create mode 100644 res/drawable/cylinderin_00023.png create mode 100644 res/drawable/cylinderin_00024.png create mode 100644 res/drawable/cylinderin_00025.png create mode 100644 res/drawable/cylinderin_00026.png create mode 100644 res/drawable/cylinderin_00027.png create mode 100644 res/drawable/cylinderin_00028.png create mode 100644 res/drawable/cylinderin_00029.png create mode 100644 res/drawable/cylinderin_00030.png create mode 100644 res/drawable/cylinderin_00031.png create mode 100644 res/drawable/cylinderin_00032.png create mode 100644 res/drawable/cylinderin_00033.png create mode 100644 res/drawable/cylinderin_00034.png create mode 100644 res/drawable/cylinderin_00035.png create mode 100644 res/drawable/cylinderin_00036.png create mode 100644 res/drawable/cylinderin_00037.png create mode 100644 res/drawable/cylinderin_00038.png create mode 100644 res/drawable/cylinderin_00039.png create mode 100644 res/drawable/cylinderin_00040.png create mode 100644 res/drawable/cylinderin_00041.png create mode 100644 res/drawable/cylinderin_00042.png create mode 100644 res/drawable/cylinderin_00043.png create mode 100644 res/drawable/cylinderin_00044.png create mode 100644 res/drawable/cylinderin_00045.png create mode 100644 res/drawable/cylinderin_00046.png create mode 100644 res/drawable/cylinderin_00047.png create mode 100644 res/drawable/cylinderin_00048.png create mode 100644 res/drawable/cylinderin_00049.png create mode 100644 res/drawable/cylinderout_00000.png create mode 100644 res/drawable/cylinderout_00001.png create mode 100644 res/drawable/cylinderout_00002.png create mode 100644 res/drawable/cylinderout_00003.png create mode 100644 res/drawable/cylinderout_00004.png create mode 100644 res/drawable/cylinderout_00005.png create mode 100644 res/drawable/cylinderout_00006.png create mode 100644 res/drawable/cylinderout_00007.png create mode 100644 res/drawable/cylinderout_00008.png create mode 100644 res/drawable/cylinderout_00009.png create mode 100644 res/drawable/cylinderout_00010.png create mode 100644 res/drawable/cylinderout_00011.png create mode 100644 res/drawable/cylinderout_00012.png create mode 100644 res/drawable/cylinderout_00013.png create mode 100644 res/drawable/cylinderout_00014.png create mode 100644 res/drawable/cylinderout_00015.png create mode 100644 res/drawable/cylinderout_00016.png create mode 100644 res/drawable/cylinderout_00017.png create mode 100644 res/drawable/cylinderout_00018.png create mode 100644 res/drawable/cylinderout_00019.png create mode 100644 res/drawable/cylinderout_00020.png create mode 100644 res/drawable/cylinderout_00021.png create mode 100644 res/drawable/cylinderout_00022.png create mode 100644 res/drawable/cylinderout_00023.png create mode 100644 res/drawable/cylinderout_00024.png create mode 100644 res/drawable/cylinderout_00025.png create mode 100644 res/drawable/cylinderout_00026.png create mode 100644 res/drawable/cylinderout_00027.png create mode 100644 res/drawable/cylinderout_00028.png create mode 100644 res/drawable/cylinderout_00029.png create mode 100644 res/drawable/cylinderout_00030.png create mode 100644 res/drawable/cylinderout_00031.png create mode 100644 res/drawable/cylinderout_00032.png create mode 100644 res/drawable/cylinderout_00033.png create mode 100644 res/drawable/cylinderout_00034.png create mode 100644 res/drawable/cylinderout_00035.png create mode 100644 res/drawable/cylinderout_00036.png create mode 100644 res/drawable/cylinderout_00037.png create mode 100644 res/drawable/cylinderout_00038.png create mode 100644 res/drawable/cylinderout_00039.png create mode 100644 res/drawable/cylinderout_00040.png create mode 100644 res/drawable/cylinderout_00041.png create mode 100644 res/drawable/cylinderout_00042.png create mode 100644 res/drawable/cylinderout_00043.png create mode 100644 res/drawable/cylinderout_00044.png create mode 100644 res/drawable/cylinderout_00045.png create mode 100644 res/drawable/cylinderout_00046.png create mode 100644 res/drawable/cylinderout_00047.png create mode 100644 res/drawable/cylinderout_00048.png create mode 100644 res/drawable/cylinderout_00049.png create mode 100644 res/drawable/flip_00000.png create mode 100644 res/drawable/flip_00001.png create mode 100644 res/drawable/flip_00002.png create mode 100644 res/drawable/flip_00003.png create mode 100644 res/drawable/flip_00004.png create mode 100644 res/drawable/flip_00005.png create mode 100644 res/drawable/flip_00006.png create mode 100644 res/drawable/flip_00007.png create mode 100644 res/drawable/flip_00008.png create mode 100644 res/drawable/flip_00009.png create mode 100644 res/drawable/flip_00010.png create mode 100644 res/drawable/flip_00011.png create mode 100644 res/drawable/flip_00012.png create mode 100644 res/drawable/flip_00013.png create mode 100644 res/drawable/flip_00014.png create mode 100644 res/drawable/flip_00015.png create mode 100644 res/drawable/flip_00016.png create mode 100644 res/drawable/flip_00017.png create mode 100644 res/drawable/flip_00018.png create mode 100644 res/drawable/flip_00019.png create mode 100644 res/drawable/flip_00020.png create mode 100644 res/drawable/flip_00021.png create mode 100644 res/drawable/flip_00022.png create mode 100644 res/drawable/flip_00023.png create mode 100644 res/drawable/flip_00024.png create mode 100644 res/drawable/flip_00025.png create mode 100644 res/drawable/flip_00026.png create mode 100644 res/drawable/flip_00027.png create mode 100644 res/drawable/flip_00028.png create mode 100644 res/drawable/flip_00029.png create mode 100644 res/drawable/flip_00030.png create mode 100644 res/drawable/flip_00031.png create mode 100644 res/drawable/flip_00032.png create mode 100644 res/drawable/flip_00033.png create mode 100644 res/drawable/flip_00034.png create mode 100644 res/drawable/flip_00035.png create mode 100644 res/drawable/flip_00036.png create mode 100644 res/drawable/flip_00037.png create mode 100644 res/drawable/flip_00038.png create mode 100644 res/drawable/flip_00039.png create mode 100644 res/drawable/flip_00040.png create mode 100644 res/drawable/flip_00041.png create mode 100644 res/drawable/flip_00042.png create mode 100644 res/drawable/flip_00043.png create mode 100644 res/drawable/flip_00044.png create mode 100644 res/drawable/flip_00045.png create mode 100644 res/drawable/flip_00046.png create mode 100644 res/drawable/flip_00047.png create mode 100644 res/drawable/flip_00048.png create mode 100644 res/drawable/flip_00049.png create mode 100644 res/drawable/handle.png create mode 100644 res/drawable/handle_left.png create mode 100644 res/drawable/handle_reversed.png create mode 100644 res/drawable/launcheranimatedarrow_00000.png create mode 100644 res/drawable/launcheranimatedarrow_00001.png create mode 100644 res/drawable/launcheranimatedarrow_00002.png create mode 100644 res/drawable/launcheranimatedarrow_00003.png create mode 100644 res/drawable/launcheranimatedarrow_00004.png create mode 100644 res/drawable/launcheranimatedarrow_00005.png create mode 100644 res/drawable/launcheranimatedarrow_00006.png create mode 100644 res/drawable/launcheranimatedarrow_00007.png create mode 100644 res/drawable/launcheranimatedarrow_00008.png create mode 100644 res/drawable/launcheranimatedarrow_00009.png create mode 100644 res/drawable/launcheranimatedarrow_00010.png create mode 100644 res/drawable/launcheranimatedarrow_00011.png create mode 100644 res/drawable/launcheranimatedarrow_00012.png create mode 100644 res/drawable/launcheranimatedarrow_00013.png create mode 100644 res/drawable/launcheranimatedarrow_00014.png create mode 100644 res/drawable/launcheranimatedarrow_00015.png create mode 100644 res/drawable/launcheranimatedarrow_00016.png create mode 100644 res/drawable/listitem_bg.xml create mode 100644 res/drawable/listitem_selector.xml create mode 100644 res/drawable/lock.png create mode 100644 res/drawable/none_00000.png create mode 100644 res/drawable/none_00001.png create mode 100644 res/drawable/none_00002.png create mode 100644 res/drawable/none_00003.png create mode 100644 res/drawable/none_00004.png create mode 100644 res/drawable/none_00005.png create mode 100644 res/drawable/none_00006.png create mode 100644 res/drawable/none_00007.png create mode 100644 res/drawable/none_00008.png create mode 100644 res/drawable/none_00009.png create mode 100644 res/drawable/none_00010.png create mode 100644 res/drawable/none_00011.png create mode 100644 res/drawable/none_00012.png create mode 100644 res/drawable/none_00013.png create mode 100644 res/drawable/none_00014.png create mode 100644 res/drawable/none_00015.png create mode 100644 res/drawable/none_00016.png create mode 100644 res/drawable/none_00017.png create mode 100644 res/drawable/none_00018.png create mode 100644 res/drawable/none_00019.png create mode 100644 res/drawable/none_00020.png create mode 100644 res/drawable/none_00021.png create mode 100644 res/drawable/none_00022.png create mode 100644 res/drawable/none_00023.png create mode 100644 res/drawable/none_00024.png create mode 100644 res/drawable/none_00025.png create mode 100644 res/drawable/none_00026.png create mode 100644 res/drawable/none_00027.png create mode 100644 res/drawable/none_00028.png create mode 100644 res/drawable/none_00029.png create mode 100644 res/drawable/none_00030.png create mode 100644 res/drawable/none_00031.png create mode 100644 res/drawable/none_00032.png create mode 100644 res/drawable/none_00033.png create mode 100644 res/drawable/none_00034.png create mode 100644 res/drawable/none_00035.png create mode 100644 res/drawable/none_00036.png create mode 100644 res/drawable/none_00037.png create mode 100644 res/drawable/none_00038.png create mode 100644 res/drawable/none_00039.png create mode 100644 res/drawable/none_00040.png create mode 100644 res/drawable/none_00041.png create mode 100644 res/drawable/none_00042.png create mode 100644 res/drawable/none_00043.png create mode 100644 res/drawable/none_00044.png create mode 100644 res/drawable/none_00045.png create mode 100644 res/drawable/none_00046.png create mode 100644 res/drawable/none_00047.png create mode 100644 res/drawable/none_00048.png create mode 100644 res/drawable/none_00049.png create mode 100644 res/drawable/overview_00000.png create mode 100644 res/drawable/overview_00001.png create mode 100644 res/drawable/overview_00002.png create mode 100644 res/drawable/overview_00003.png create mode 100644 res/drawable/overview_00004.png create mode 100644 res/drawable/overview_00005.png create mode 100644 res/drawable/overview_00006.png create mode 100644 res/drawable/overview_00007.png create mode 100644 res/drawable/overview_00008.png create mode 100644 res/drawable/overview_00009.png create mode 100644 res/drawable/overview_00010.png create mode 100644 res/drawable/overview_00011.png create mode 100644 res/drawable/overview_00012.png create mode 100644 res/drawable/overview_00013.png create mode 100644 res/drawable/overview_00014.png create mode 100644 res/drawable/overview_00015.png create mode 100644 res/drawable/overview_00016.png create mode 100644 res/drawable/overview_00017.png create mode 100644 res/drawable/overview_00018.png create mode 100644 res/drawable/overview_00019.png create mode 100644 res/drawable/overview_00020.png create mode 100644 res/drawable/overview_00021.png create mode 100644 res/drawable/overview_00022.png create mode 100644 res/drawable/overview_00023.png create mode 100644 res/drawable/overview_00024.png create mode 100644 res/drawable/overview_00025.png create mode 100644 res/drawable/overview_00026.png create mode 100644 res/drawable/overview_00027.png create mode 100644 res/drawable/overview_00028.png create mode 100644 res/drawable/overview_00029.png create mode 100644 res/drawable/overview_00030.png create mode 100644 res/drawable/overview_00031.png create mode 100644 res/drawable/overview_00032.png create mode 100644 res/drawable/overview_00033.png create mode 100644 res/drawable/overview_00034.png create mode 100644 res/drawable/overview_00035.png create mode 100644 res/drawable/overview_00036.png create mode 100644 res/drawable/overview_00037.png create mode 100644 res/drawable/overview_00038.png create mode 100644 res/drawable/overview_00039.png create mode 100644 res/drawable/overview_00040.png create mode 100644 res/drawable/overview_00041.png create mode 100644 res/drawable/overview_00042.png create mode 100644 res/drawable/overview_00043.png create mode 100644 res/drawable/overview_00044.png create mode 100644 res/drawable/overview_00045.png create mode 100644 res/drawable/overview_00046.png create mode 100644 res/drawable/overview_00047.png create mode 100644 res/drawable/overview_00048.png create mode 100644 res/drawable/overview_00049.png create mode 100644 res/drawable/rotatedown_00000.png create mode 100644 res/drawable/rotatedown_00001.png create mode 100644 res/drawable/rotatedown_00002.png create mode 100644 res/drawable/rotatedown_00003.png create mode 100644 res/drawable/rotatedown_00004.png create mode 100644 res/drawable/rotatedown_00005.png create mode 100644 res/drawable/rotatedown_00006.png create mode 100644 res/drawable/rotatedown_00007.png create mode 100644 res/drawable/rotatedown_00008.png create mode 100644 res/drawable/rotatedown_00009.png create mode 100644 res/drawable/rotatedown_00010.png create mode 100644 res/drawable/rotatedown_00011.png create mode 100644 res/drawable/rotatedown_00012.png create mode 100644 res/drawable/rotatedown_00013.png create mode 100644 res/drawable/rotatedown_00014.png create mode 100644 res/drawable/rotatedown_00015.png create mode 100644 res/drawable/rotatedown_00016.png create mode 100644 res/drawable/rotatedown_00017.png create mode 100644 res/drawable/rotatedown_00018.png create mode 100644 res/drawable/rotatedown_00019.png create mode 100644 res/drawable/rotatedown_00020.png create mode 100644 res/drawable/rotatedown_00021.png create mode 100644 res/drawable/rotatedown_00022.png create mode 100644 res/drawable/rotatedown_00023.png create mode 100644 res/drawable/rotatedown_00024.png create mode 100644 res/drawable/rotatedown_00025.png create mode 100644 res/drawable/rotatedown_00026.png create mode 100644 res/drawable/rotatedown_00027.png create mode 100644 res/drawable/rotatedown_00028.png create mode 100644 res/drawable/rotatedown_00029.png create mode 100644 res/drawable/rotatedown_00030.png create mode 100644 res/drawable/rotatedown_00031.png create mode 100644 res/drawable/rotatedown_00032.png create mode 100644 res/drawable/rotatedown_00033.png create mode 100644 res/drawable/rotatedown_00034.png create mode 100644 res/drawable/rotatedown_00035.png create mode 100644 res/drawable/rotatedown_00036.png create mode 100644 res/drawable/rotatedown_00037.png create mode 100644 res/drawable/rotatedown_00038.png create mode 100644 res/drawable/rotatedown_00039.png create mode 100644 res/drawable/rotatedown_00040.png create mode 100644 res/drawable/rotatedown_00041.png create mode 100644 res/drawable/rotatedown_00042.png create mode 100644 res/drawable/rotatedown_00043.png create mode 100644 res/drawable/rotatedown_00044.png create mode 100644 res/drawable/rotatedown_00045.png create mode 100644 res/drawable/rotatedown_00046.png create mode 100644 res/drawable/rotatedown_00047.png create mode 100644 res/drawable/rotatedown_00048.png create mode 100644 res/drawable/rotatedown_00049.png create mode 100644 res/drawable/rotateup_00000.png create mode 100644 res/drawable/rotateup_00001.png create mode 100644 res/drawable/rotateup_00002.png create mode 100644 res/drawable/rotateup_00003.png create mode 100644 res/drawable/rotateup_00004.png create mode 100644 res/drawable/rotateup_00005.png create mode 100644 res/drawable/rotateup_00006.png create mode 100644 res/drawable/rotateup_00007.png create mode 100644 res/drawable/rotateup_00008.png create mode 100644 res/drawable/rotateup_00009.png create mode 100644 res/drawable/rotateup_00010.png create mode 100644 res/drawable/rotateup_00011.png create mode 100644 res/drawable/rotateup_00012.png create mode 100644 res/drawable/rotateup_00013.png create mode 100644 res/drawable/rotateup_00014.png create mode 100644 res/drawable/rotateup_00015.png create mode 100644 res/drawable/rotateup_00016.png create mode 100644 res/drawable/rotateup_00017.png create mode 100644 res/drawable/rotateup_00018.png create mode 100644 res/drawable/rotateup_00019.png create mode 100644 res/drawable/rotateup_00020.png create mode 100644 res/drawable/rotateup_00021.png create mode 100644 res/drawable/rotateup_00022.png create mode 100644 res/drawable/rotateup_00023.png create mode 100644 res/drawable/rotateup_00024.png create mode 100644 res/drawable/rotateup_00025.png create mode 100644 res/drawable/rotateup_00026.png create mode 100644 res/drawable/rotateup_00027.png create mode 100644 res/drawable/rotateup_00028.png create mode 100644 res/drawable/rotateup_00029.png create mode 100644 res/drawable/rotateup_00030.png create mode 100644 res/drawable/rotateup_00031.png create mode 100644 res/drawable/rotateup_00032.png create mode 100644 res/drawable/rotateup_00033.png create mode 100644 res/drawable/rotateup_00034.png create mode 100644 res/drawable/rotateup_00035.png create mode 100644 res/drawable/rotateup_00036.png create mode 100644 res/drawable/rotateup_00037.png create mode 100644 res/drawable/rotateup_00038.png create mode 100644 res/drawable/rotateup_00039.png create mode 100644 res/drawable/rotateup_00040.png create mode 100644 res/drawable/rotateup_00041.png create mode 100644 res/drawable/rotateup_00042.png create mode 100644 res/drawable/rotateup_00043.png create mode 100644 res/drawable/rotateup_00044.png create mode 100644 res/drawable/rotateup_00045.png create mode 100644 res/drawable/rotateup_00046.png create mode 100644 res/drawable/rotateup_00047.png create mode 100644 res/drawable/rotateup_00048.png create mode 100644 res/drawable/rotateup_00049.png create mode 100644 res/drawable/stack_00000.png create mode 100644 res/drawable/stack_00001.png create mode 100644 res/drawable/stack_00002.png create mode 100644 res/drawable/stack_00003.png create mode 100644 res/drawable/stack_00004.png create mode 100644 res/drawable/stack_00005.png create mode 100644 res/drawable/stack_00006.png create mode 100644 res/drawable/stack_00007.png create mode 100644 res/drawable/stack_00008.png create mode 100644 res/drawable/stack_00009.png create mode 100644 res/drawable/stack_00010.png create mode 100644 res/drawable/stack_00011.png create mode 100644 res/drawable/stack_00012.png create mode 100644 res/drawable/stack_00013.png create mode 100644 res/drawable/stack_00014.png create mode 100644 res/drawable/stack_00015.png create mode 100644 res/drawable/stack_00016.png create mode 100644 res/drawable/stack_00017.png create mode 100644 res/drawable/stack_00018.png create mode 100644 res/drawable/stack_00019.png create mode 100644 res/drawable/stack_00020.png create mode 100644 res/drawable/stack_00021.png create mode 100644 res/drawable/stack_00022.png create mode 100644 res/drawable/stack_00023.png create mode 100644 res/drawable/stack_00024.png create mode 100644 res/drawable/stack_00025.png create mode 100644 res/drawable/stack_00026.png create mode 100644 res/drawable/stack_00027.png create mode 100644 res/drawable/stack_00028.png create mode 100644 res/drawable/stack_00029.png create mode 100644 res/drawable/stack_00030.png create mode 100644 res/drawable/stack_00031.png create mode 100644 res/drawable/stack_00032.png create mode 100644 res/drawable/stack_00033.png create mode 100644 res/drawable/stack_00034.png create mode 100644 res/drawable/stack_00035.png create mode 100644 res/drawable/stack_00036.png create mode 100644 res/drawable/stack_00037.png create mode 100644 res/drawable/stack_00038.png create mode 100644 res/drawable/stack_00039.png create mode 100644 res/drawable/stack_00040.png create mode 100644 res/drawable/stack_00041.png create mode 100644 res/drawable/stack_00042.png create mode 100644 res/drawable/stack_00043.png create mode 100644 res/drawable/stack_00044.png create mode 100644 res/drawable/stack_00045.png create mode 100644 res/drawable/stack_00046.png create mode 100644 res/drawable/stack_00047.png create mode 100644 res/drawable/stack_00048.png create mode 100644 res/drawable/stack_00049.png create mode 100644 res/drawable/themes_button.xml create mode 100644 res/drawable/transition_accordion.xml create mode 100644 res/drawable/transition_arrow.xml create mode 100644 res/drawable/transition_arrow_reverse.xml create mode 100644 res/drawable/transition_carousel.xml create mode 100644 res/drawable/transition_cubein.xml create mode 100644 res/drawable/transition_cubeout.xml create mode 100644 res/drawable/transition_cylinderin.xml create mode 100644 res/drawable/transition_cylinderout.xml create mode 100644 res/drawable/transition_flip.xml create mode 100644 res/drawable/transition_none.xml create mode 100644 res/drawable/transition_overview.xml create mode 100644 res/drawable/transition_rotatedown.xml create mode 100644 res/drawable/transition_rotateup.xml create mode 100644 res/drawable/transition_stack.xml create mode 100644 res/drawable/transition_zoomin.xml create mode 100644 res/drawable/transition_zoomout.xml create mode 100644 res/drawable/zoomin_00000.png create mode 100644 res/drawable/zoomin_00001.png create mode 100644 res/drawable/zoomin_00002.png create mode 100644 res/drawable/zoomin_00003.png create mode 100644 res/drawable/zoomin_00004.png create mode 100644 res/drawable/zoomin_00005.png create mode 100644 res/drawable/zoomin_00006.png create mode 100644 res/drawable/zoomin_00007.png create mode 100644 res/drawable/zoomin_00008.png create mode 100644 res/drawable/zoomin_00009.png create mode 100644 res/drawable/zoomin_00010.png create mode 100644 res/drawable/zoomin_00011.png create mode 100644 res/drawable/zoomin_00012.png create mode 100644 res/drawable/zoomin_00013.png create mode 100644 res/drawable/zoomin_00014.png create mode 100644 res/drawable/zoomin_00015.png create mode 100644 res/drawable/zoomin_00016.png create mode 100644 res/drawable/zoomin_00017.png create mode 100644 res/drawable/zoomin_00018.png create mode 100644 res/drawable/zoomin_00019.png create mode 100644 res/drawable/zoomin_00020.png create mode 100644 res/drawable/zoomin_00021.png create mode 100644 res/drawable/zoomin_00022.png create mode 100644 res/drawable/zoomin_00023.png create mode 100644 res/drawable/zoomin_00024.png create mode 100644 res/drawable/zoomin_00025.png create mode 100644 res/drawable/zoomin_00026.png create mode 100644 res/drawable/zoomin_00027.png create mode 100644 res/drawable/zoomin_00028.png create mode 100644 res/drawable/zoomin_00029.png create mode 100644 res/drawable/zoomin_00030.png create mode 100644 res/drawable/zoomin_00031.png create mode 100644 res/drawable/zoomin_00032.png create mode 100644 res/drawable/zoomin_00033.png create mode 100644 res/drawable/zoomin_00034.png create mode 100644 res/drawable/zoomin_00035.png create mode 100644 res/drawable/zoomin_00036.png create mode 100644 res/drawable/zoomin_00037.png create mode 100644 res/drawable/zoomin_00038.png create mode 100644 res/drawable/zoomin_00039.png create mode 100644 res/drawable/zoomin_00040.png create mode 100644 res/drawable/zoomin_00041.png create mode 100644 res/drawable/zoomin_00042.png create mode 100644 res/drawable/zoomin_00043.png create mode 100644 res/drawable/zoomin_00044.png create mode 100644 res/drawable/zoomin_00045.png create mode 100644 res/drawable/zoomin_00046.png create mode 100644 res/drawable/zoomin_00047.png create mode 100644 res/drawable/zoomin_00048.png create mode 100644 res/drawable/zoomin_00049.png create mode 100644 res/drawable/zoomout_00000.png create mode 100644 res/drawable/zoomout_00001.png create mode 100644 res/drawable/zoomout_00002.png create mode 100644 res/drawable/zoomout_00003.png create mode 100644 res/drawable/zoomout_00004.png create mode 100644 res/drawable/zoomout_00005.png create mode 100644 res/drawable/zoomout_00006.png create mode 100644 res/drawable/zoomout_00007.png create mode 100644 res/drawable/zoomout_00008.png create mode 100644 res/drawable/zoomout_00009.png create mode 100644 res/drawable/zoomout_00010.png create mode 100644 res/drawable/zoomout_00011.png create mode 100644 res/drawable/zoomout_00012.png create mode 100644 res/drawable/zoomout_00013.png create mode 100644 res/drawable/zoomout_00014.png create mode 100644 res/drawable/zoomout_00015.png create mode 100644 res/drawable/zoomout_00016.png create mode 100644 res/drawable/zoomout_00017.png create mode 100644 res/drawable/zoomout_00018.png create mode 100644 res/drawable/zoomout_00019.png create mode 100644 res/drawable/zoomout_00020.png create mode 100644 res/drawable/zoomout_00021.png create mode 100644 res/drawable/zoomout_00022.png create mode 100644 res/drawable/zoomout_00023.png create mode 100644 res/drawable/zoomout_00024.png create mode 100644 res/drawable/zoomout_00025.png create mode 100644 res/drawable/zoomout_00026.png create mode 100644 res/drawable/zoomout_00027.png create mode 100644 res/drawable/zoomout_00028.png create mode 100644 res/drawable/zoomout_00029.png create mode 100644 res/drawable/zoomout_00030.png create mode 100644 res/drawable/zoomout_00031.png create mode 100644 res/drawable/zoomout_00032.png create mode 100644 res/drawable/zoomout_00033.png create mode 100644 res/drawable/zoomout_00034.png create mode 100644 res/drawable/zoomout_00035.png create mode 100644 res/drawable/zoomout_00036.png create mode 100644 res/drawable/zoomout_00037.png create mode 100644 res/drawable/zoomout_00038.png create mode 100644 res/drawable/zoomout_00039.png create mode 100644 res/drawable/zoomout_00040.png create mode 100644 res/drawable/zoomout_00041.png create mode 100644 res/drawable/zoomout_00042.png create mode 100644 res/drawable/zoomout_00043.png create mode 100644 res/drawable/zoomout_00044.png create mode 100644 res/drawable/zoomout_00045.png create mode 100644 res/drawable/zoomout_00046.png create mode 100644 res/drawable/zoomout_00047.png create mode 100644 res/drawable/zoomout_00048.png create mode 100644 res/drawable/zoomout_00049.png create mode 100644 res/layout/settings_pane.xml create mode 100644 res/layout/settings_pane_list_header.xml create mode 100644 res/layout/settings_pane_list_item.xml create mode 100644 res/layout/settings_transitions_screen.xml create mode 100644 src/com/android/launcher3/OverviewSettingsPanel.java create mode 100644 src/com/android/launcher3/SlidingUpPanelLayout.java create mode 100644 src/com/android/launcher3/TransitionEffectsFragment.java create mode 100644 src/com/android/launcher3/list/AutoScrollListView.java create mode 100644 src/com/android/launcher3/list/CompositeCursorAdapter.java create mode 100644 src/com/android/launcher3/list/PinnedHeaderListAdapter.java create mode 100644 src/com/android/launcher3/list/PinnedHeaderListView.java create mode 100644 src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java diff --git a/res/anim/drop_down.xml b/res/anim/drop_down.xml new file mode 100644 index 000000000..49059a048 --- /dev/null +++ b/res/anim/drop_down.xml @@ -0,0 +1,13 @@ + + + + diff --git a/res/anim/enter_from_left.xml b/res/anim/enter_from_left.xml new file mode 100644 index 000000000..e2bdbdda3 --- /dev/null +++ b/res/anim/enter_from_left.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/res/anim/enter_from_right.xml b/res/anim/enter_from_right.xml new file mode 100644 index 000000000..02a56c7ae --- /dev/null +++ b/res/anim/enter_from_right.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/res/anim/exit_out_left.xml b/res/anim/exit_out_left.xml new file mode 100644 index 000000000..eae925a2a --- /dev/null +++ b/res/anim/exit_out_left.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/res/anim/exit_out_right.xml b/res/anim/exit_out_right.xml new file mode 100644 index 000000000..7345c942d --- /dev/null +++ b/res/anim/exit_out_right.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/res/color/listitem_text.xml b/res/color/listitem_text.xml new file mode 100644 index 000000000..c17b8555d --- /dev/null +++ b/res/color/listitem_text.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/res/drawable-hdpi/ic_default_screen.png b/res/drawable-hdpi/ic_default_screen.png index 832fdef35..41dcf8f6e 100644 Binary files a/res/drawable-hdpi/ic_default_screen.png and b/res/drawable-hdpi/ic_default_screen.png differ diff --git a/res/drawable-hdpi/ic_default_screen_pressed.png b/res/drawable-hdpi/ic_default_screen_pressed.png index 2975c6152..7779058c5 100644 Binary files a/res/drawable-hdpi/ic_default_screen_pressed.png and b/res/drawable-hdpi/ic_default_screen_pressed.png differ diff --git a/res/drawable-hdpi/ic_setting.png b/res/drawable-hdpi/ic_setting.png deleted file mode 100644 index c617154f1..000000000 Binary files a/res/drawable-hdpi/ic_setting.png and /dev/null differ diff --git a/res/drawable-hdpi/ic_setting_pressed.png b/res/drawable-hdpi/ic_setting_pressed.png deleted file mode 100644 index fb58a4b12..000000000 Binary files a/res/drawable-hdpi/ic_setting_pressed.png and /dev/null differ diff --git a/res/drawable-hdpi/ic_themes.png b/res/drawable-hdpi/ic_themes.png new file mode 100644 index 000000000..7a9b4b450 Binary files /dev/null and b/res/drawable-hdpi/ic_themes.png differ diff --git a/res/drawable-hdpi/ic_themes_pressed.png b/res/drawable-hdpi/ic_themes_pressed.png new file mode 100644 index 000000000..e78606a29 Binary files /dev/null and b/res/drawable-hdpi/ic_themes_pressed.png differ diff --git a/res/drawable-hdpi/ic_widget.png b/res/drawable-hdpi/ic_widget.png index e7cc5346a..8c57af0de 100644 Binary files a/res/drawable-hdpi/ic_widget.png and b/res/drawable-hdpi/ic_widget.png differ diff --git a/res/drawable-hdpi/ic_widget_pressed.png b/res/drawable-hdpi/ic_widget_pressed.png index 4d0a1e43e..081f9f9ce 100644 Binary files a/res/drawable-hdpi/ic_widget_pressed.png and b/res/drawable-hdpi/ic_widget_pressed.png differ diff --git a/res/drawable-mdpi/ic_default_screen.png b/res/drawable-mdpi/ic_default_screen.png index 431b16841..8a2c1e1c0 100644 Binary files a/res/drawable-mdpi/ic_default_screen.png and b/res/drawable-mdpi/ic_default_screen.png differ diff --git a/res/drawable-mdpi/ic_default_screen_pressed.png b/res/drawable-mdpi/ic_default_screen_pressed.png index 361f023f8..20606ce62 100644 Binary files a/res/drawable-mdpi/ic_default_screen_pressed.png and b/res/drawable-mdpi/ic_default_screen_pressed.png differ diff --git a/res/drawable-mdpi/ic_themes.png b/res/drawable-mdpi/ic_themes.png new file mode 100644 index 000000000..1178efdf6 Binary files /dev/null and b/res/drawable-mdpi/ic_themes.png differ diff --git a/res/drawable-mdpi/ic_themes_pressed.png b/res/drawable-mdpi/ic_themes_pressed.png new file mode 100644 index 000000000..4fae34b2d Binary files /dev/null and b/res/drawable-mdpi/ic_themes_pressed.png differ diff --git a/res/drawable-mdpi/ic_widget.png b/res/drawable-mdpi/ic_widget.png index 955ebf5b7..5f974c28c 100644 Binary files a/res/drawable-mdpi/ic_widget.png and b/res/drawable-mdpi/ic_widget.png differ diff --git a/res/drawable-mdpi/ic_widget_pressed.png b/res/drawable-mdpi/ic_widget_pressed.png index f65f49f8a..0a3e8838f 100644 Binary files a/res/drawable-mdpi/ic_widget_pressed.png and b/res/drawable-mdpi/ic_widget_pressed.png differ diff --git a/res/drawable-xhdpi/ic_default_screen.png b/res/drawable-xhdpi/ic_default_screen.png index da1e3a883..735332ae5 100644 Binary files a/res/drawable-xhdpi/ic_default_screen.png and b/res/drawable-xhdpi/ic_default_screen.png differ diff --git a/res/drawable-xhdpi/ic_default_screen_pressed.png b/res/drawable-xhdpi/ic_default_screen_pressed.png index b8dc28c0c..11dede0a0 100644 Binary files a/res/drawable-xhdpi/ic_default_screen_pressed.png and b/res/drawable-xhdpi/ic_default_screen_pressed.png differ diff --git a/res/drawable-xhdpi/ic_setting.png b/res/drawable-xhdpi/ic_setting.png deleted file mode 100644 index 91ba98c55..000000000 Binary files a/res/drawable-xhdpi/ic_setting.png and /dev/null differ diff --git a/res/drawable-xhdpi/ic_setting_pressed.png b/res/drawable-xhdpi/ic_setting_pressed.png deleted file mode 100644 index 08aafc405..000000000 Binary files a/res/drawable-xhdpi/ic_setting_pressed.png and /dev/null differ diff --git a/res/drawable-xhdpi/ic_themes.png b/res/drawable-xhdpi/ic_themes.png new file mode 100644 index 000000000..f229e25a7 Binary files /dev/null and b/res/drawable-xhdpi/ic_themes.png differ diff --git a/res/drawable-xhdpi/ic_themes_pressed.png b/res/drawable-xhdpi/ic_themes_pressed.png new file mode 100644 index 000000000..07c234d01 Binary files /dev/null and b/res/drawable-xhdpi/ic_themes_pressed.png differ diff --git a/res/drawable-xhdpi/ic_widget.png b/res/drawable-xhdpi/ic_widget.png index fae347ba7..47dcdd14f 100644 Binary files a/res/drawable-xhdpi/ic_widget.png and b/res/drawable-xhdpi/ic_widget.png differ diff --git a/res/drawable-xhdpi/ic_widget_pressed.png b/res/drawable-xhdpi/ic_widget_pressed.png index eca9bcc26..8bb387b88 100644 Binary files a/res/drawable-xhdpi/ic_widget_pressed.png and b/res/drawable-xhdpi/ic_widget_pressed.png differ diff --git a/res/drawable-xxhdpi/ic_default_screen.png b/res/drawable-xxhdpi/ic_default_screen.png index 4577ad2b5..253bd2d4d 100644 Binary files a/res/drawable-xxhdpi/ic_default_screen.png and b/res/drawable-xxhdpi/ic_default_screen.png differ diff --git a/res/drawable-xxhdpi/ic_default_screen_pressed.png b/res/drawable-xxhdpi/ic_default_screen_pressed.png index cf9cd10e2..5367b7abd 100644 Binary files a/res/drawable-xxhdpi/ic_default_screen_pressed.png and b/res/drawable-xxhdpi/ic_default_screen_pressed.png differ diff --git a/res/drawable-xxhdpi/ic_setting.png b/res/drawable-xxhdpi/ic_setting.png deleted file mode 100644 index 6e1e6627c..000000000 Binary files a/res/drawable-xxhdpi/ic_setting.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_setting_pressed.png b/res/drawable-xxhdpi/ic_setting_pressed.png deleted file mode 100644 index a202a40fe..000000000 Binary files a/res/drawable-xxhdpi/ic_setting_pressed.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_themes.png b/res/drawable-xxhdpi/ic_themes.png new file mode 100644 index 000000000..62d129627 Binary files /dev/null and b/res/drawable-xxhdpi/ic_themes.png differ diff --git a/res/drawable-xxhdpi/ic_themes_pressed.png b/res/drawable-xxhdpi/ic_themes_pressed.png new file mode 100644 index 000000000..604b9c4dd Binary files /dev/null and b/res/drawable-xxhdpi/ic_themes_pressed.png differ diff --git a/res/drawable-xxhdpi/ic_widget.png b/res/drawable-xxhdpi/ic_widget.png index 3bdb42d5e..fddfecaa3 100644 Binary files a/res/drawable-xxhdpi/ic_widget.png and b/res/drawable-xxhdpi/ic_widget.png differ diff --git a/res/drawable-xxhdpi/ic_widget_pressed.png b/res/drawable-xxhdpi/ic_widget_pressed.png index db6765f13..3d3670ed4 100644 Binary files a/res/drawable-xxhdpi/ic_widget_pressed.png and b/res/drawable-xxhdpi/ic_widget_pressed.png differ diff --git a/res/drawable/above_shadow.xml b/res/drawable/above_shadow.xml new file mode 100644 index 000000000..5965c971e --- /dev/null +++ b/res/drawable/above_shadow.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/res/drawable/acordian_00000.png b/res/drawable/acordian_00000.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00000.png differ diff --git a/res/drawable/acordian_00001.png b/res/drawable/acordian_00001.png new file mode 100644 index 000000000..48f07492b Binary files /dev/null and b/res/drawable/acordian_00001.png differ diff --git a/res/drawable/acordian_00002.png b/res/drawable/acordian_00002.png new file mode 100644 index 000000000..3ae1b69ca Binary files /dev/null and b/res/drawable/acordian_00002.png differ diff --git a/res/drawable/acordian_00003.png b/res/drawable/acordian_00003.png new file mode 100644 index 000000000..da2ffe0bf Binary files /dev/null and b/res/drawable/acordian_00003.png differ diff --git a/res/drawable/acordian_00004.png b/res/drawable/acordian_00004.png new file mode 100644 index 000000000..66f0a26f7 Binary files /dev/null and b/res/drawable/acordian_00004.png differ diff --git a/res/drawable/acordian_00005.png b/res/drawable/acordian_00005.png new file mode 100644 index 000000000..475060766 Binary files /dev/null and b/res/drawable/acordian_00005.png differ diff --git a/res/drawable/acordian_00006.png b/res/drawable/acordian_00006.png new file mode 100644 index 000000000..b52388848 Binary files /dev/null and b/res/drawable/acordian_00006.png differ diff --git a/res/drawable/acordian_00007.png b/res/drawable/acordian_00007.png new file mode 100644 index 000000000..053036747 Binary files /dev/null and b/res/drawable/acordian_00007.png differ diff --git a/res/drawable/acordian_00008.png b/res/drawable/acordian_00008.png new file mode 100644 index 000000000..11c23fe1f Binary files /dev/null and b/res/drawable/acordian_00008.png differ diff --git a/res/drawable/acordian_00009.png b/res/drawable/acordian_00009.png new file mode 100644 index 000000000..2fd060a03 Binary files /dev/null and b/res/drawable/acordian_00009.png differ diff --git a/res/drawable/acordian_00010.png b/res/drawable/acordian_00010.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00010.png differ diff --git a/res/drawable/acordian_00011.png b/res/drawable/acordian_00011.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00011.png differ diff --git a/res/drawable/acordian_00012.png b/res/drawable/acordian_00012.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00012.png differ diff --git a/res/drawable/acordian_00013.png b/res/drawable/acordian_00013.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00013.png differ diff --git a/res/drawable/acordian_00014.png b/res/drawable/acordian_00014.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00014.png differ diff --git a/res/drawable/acordian_00015.png b/res/drawable/acordian_00015.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00015.png differ diff --git a/res/drawable/acordian_00016.png b/res/drawable/acordian_00016.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00016.png differ diff --git a/res/drawable/acordian_00017.png b/res/drawable/acordian_00017.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00017.png differ diff --git a/res/drawable/acordian_00018.png b/res/drawable/acordian_00018.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00018.png differ diff --git a/res/drawable/acordian_00019.png b/res/drawable/acordian_00019.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00019.png differ diff --git a/res/drawable/acordian_00020.png b/res/drawable/acordian_00020.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00020.png differ diff --git a/res/drawable/acordian_00021.png b/res/drawable/acordian_00021.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00021.png differ diff --git a/res/drawable/acordian_00022.png b/res/drawable/acordian_00022.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00022.png differ diff --git a/res/drawable/acordian_00023.png b/res/drawable/acordian_00023.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00023.png differ diff --git a/res/drawable/acordian_00024.png b/res/drawable/acordian_00024.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00024.png differ diff --git a/res/drawable/acordian_00025.png b/res/drawable/acordian_00025.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00025.png differ diff --git a/res/drawable/acordian_00026.png b/res/drawable/acordian_00026.png new file mode 100644 index 000000000..5debae47a Binary files /dev/null and b/res/drawable/acordian_00026.png differ diff --git a/res/drawable/acordian_00027.png b/res/drawable/acordian_00027.png new file mode 100644 index 000000000..2fd060a03 Binary files /dev/null and b/res/drawable/acordian_00027.png differ diff --git a/res/drawable/acordian_00028.png b/res/drawable/acordian_00028.png new file mode 100644 index 000000000..11c23fe1f Binary files /dev/null and b/res/drawable/acordian_00028.png differ diff --git a/res/drawable/acordian_00029.png b/res/drawable/acordian_00029.png new file mode 100644 index 000000000..053036747 Binary files /dev/null and b/res/drawable/acordian_00029.png differ diff --git a/res/drawable/acordian_00030.png b/res/drawable/acordian_00030.png new file mode 100644 index 000000000..b52388848 Binary files /dev/null and b/res/drawable/acordian_00030.png differ diff --git a/res/drawable/acordian_00031.png b/res/drawable/acordian_00031.png new file mode 100644 index 000000000..734bb390d Binary files /dev/null and b/res/drawable/acordian_00031.png differ diff --git a/res/drawable/acordian_00032.png b/res/drawable/acordian_00032.png new file mode 100644 index 000000000..66f0a26f7 Binary files /dev/null and b/res/drawable/acordian_00032.png differ diff --git a/res/drawable/acordian_00033.png b/res/drawable/acordian_00033.png new file mode 100644 index 000000000..da2ffe0bf Binary files /dev/null and b/res/drawable/acordian_00033.png differ diff --git a/res/drawable/acordian_00034.png b/res/drawable/acordian_00034.png new file mode 100644 index 000000000..3ae1b69ca Binary files /dev/null and b/res/drawable/acordian_00034.png differ diff --git a/res/drawable/acordian_00035.png b/res/drawable/acordian_00035.png new file mode 100644 index 000000000..48f07492b Binary files /dev/null and b/res/drawable/acordian_00035.png differ diff --git a/res/drawable/acordian_00036.png b/res/drawable/acordian_00036.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00036.png differ diff --git a/res/drawable/acordian_00037.png b/res/drawable/acordian_00037.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00037.png differ diff --git a/res/drawable/acordian_00038.png b/res/drawable/acordian_00038.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00038.png differ diff --git a/res/drawable/acordian_00039.png b/res/drawable/acordian_00039.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00039.png differ diff --git a/res/drawable/acordian_00040.png b/res/drawable/acordian_00040.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00040.png differ diff --git a/res/drawable/acordian_00041.png b/res/drawable/acordian_00041.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00041.png differ diff --git a/res/drawable/acordian_00042.png b/res/drawable/acordian_00042.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00042.png differ diff --git a/res/drawable/acordian_00043.png b/res/drawable/acordian_00043.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00043.png differ diff --git a/res/drawable/acordian_00044.png b/res/drawable/acordian_00044.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00044.png differ diff --git a/res/drawable/acordian_00045.png b/res/drawable/acordian_00045.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00045.png differ diff --git a/res/drawable/acordian_00046.png b/res/drawable/acordian_00046.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00046.png differ diff --git a/res/drawable/acordian_00047.png b/res/drawable/acordian_00047.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00047.png differ diff --git a/res/drawable/acordian_00048.png b/res/drawable/acordian_00048.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00048.png differ diff --git a/res/drawable/acordian_00049.png b/res/drawable/acordian_00049.png new file mode 100644 index 000000000..72bebb4b3 Binary files /dev/null and b/res/drawable/acordian_00049.png differ diff --git a/res/drawable/below_shadow.xml b/res/drawable/below_shadow.xml new file mode 100644 index 000000000..c724e27d3 --- /dev/null +++ b/res/drawable/below_shadow.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/res/drawable/carousel_00000.png b/res/drawable/carousel_00000.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00000.png differ diff --git a/res/drawable/carousel_00001.png b/res/drawable/carousel_00001.png new file mode 100644 index 000000000..ebd6200a4 Binary files /dev/null and b/res/drawable/carousel_00001.png differ diff --git a/res/drawable/carousel_00002.png b/res/drawable/carousel_00002.png new file mode 100644 index 000000000..121f26fa6 Binary files /dev/null and b/res/drawable/carousel_00002.png differ diff --git a/res/drawable/carousel_00003.png b/res/drawable/carousel_00003.png new file mode 100644 index 000000000..9a61cb40b Binary files /dev/null and b/res/drawable/carousel_00003.png differ diff --git a/res/drawable/carousel_00004.png b/res/drawable/carousel_00004.png new file mode 100644 index 000000000..4f9a741cc Binary files /dev/null and b/res/drawable/carousel_00004.png differ diff --git a/res/drawable/carousel_00005.png b/res/drawable/carousel_00005.png new file mode 100644 index 000000000..32eadfea5 Binary files /dev/null and b/res/drawable/carousel_00005.png differ diff --git a/res/drawable/carousel_00006.png b/res/drawable/carousel_00006.png new file mode 100644 index 000000000..e9d8cd625 Binary files /dev/null and b/res/drawable/carousel_00006.png differ diff --git a/res/drawable/carousel_00007.png b/res/drawable/carousel_00007.png new file mode 100644 index 000000000..d4202b14c Binary files /dev/null and b/res/drawable/carousel_00007.png differ diff --git a/res/drawable/carousel_00008.png b/res/drawable/carousel_00008.png new file mode 100644 index 000000000..88247f836 Binary files /dev/null and b/res/drawable/carousel_00008.png differ diff --git a/res/drawable/carousel_00009.png b/res/drawable/carousel_00009.png new file mode 100644 index 000000000..503f791fe Binary files /dev/null and b/res/drawable/carousel_00009.png differ diff --git a/res/drawable/carousel_00010.png b/res/drawable/carousel_00010.png new file mode 100644 index 000000000..b439edc22 Binary files /dev/null and b/res/drawable/carousel_00010.png differ diff --git a/res/drawable/carousel_00011.png b/res/drawable/carousel_00011.png new file mode 100644 index 000000000..80a7eca42 Binary files /dev/null and b/res/drawable/carousel_00011.png differ diff --git a/res/drawable/carousel_00012.png b/res/drawable/carousel_00012.png new file mode 100644 index 000000000..57e72b869 Binary files /dev/null and b/res/drawable/carousel_00012.png differ diff --git a/res/drawable/carousel_00013.png b/res/drawable/carousel_00013.png new file mode 100644 index 000000000..6211a520e Binary files /dev/null and b/res/drawable/carousel_00013.png differ diff --git a/res/drawable/carousel_00014.png b/res/drawable/carousel_00014.png new file mode 100644 index 000000000..714466bdd Binary files /dev/null and b/res/drawable/carousel_00014.png differ diff --git a/res/drawable/carousel_00015.png b/res/drawable/carousel_00015.png new file mode 100644 index 000000000..0b34111c4 Binary files /dev/null and b/res/drawable/carousel_00015.png differ diff --git a/res/drawable/carousel_00016.png b/res/drawable/carousel_00016.png new file mode 100644 index 000000000..a3c08cd13 Binary files /dev/null and b/res/drawable/carousel_00016.png differ diff --git a/res/drawable/carousel_00017.png b/res/drawable/carousel_00017.png new file mode 100644 index 000000000..5fa15a7cb Binary files /dev/null and b/res/drawable/carousel_00017.png differ diff --git a/res/drawable/carousel_00018.png b/res/drawable/carousel_00018.png new file mode 100644 index 000000000..e10df7dd0 Binary files /dev/null and b/res/drawable/carousel_00018.png differ diff --git a/res/drawable/carousel_00019.png b/res/drawable/carousel_00019.png new file mode 100644 index 000000000..4e3765b40 Binary files /dev/null and b/res/drawable/carousel_00019.png differ diff --git a/res/drawable/carousel_00020.png b/res/drawable/carousel_00020.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00020.png differ diff --git a/res/drawable/carousel_00021.png b/res/drawable/carousel_00021.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00021.png differ diff --git a/res/drawable/carousel_00022.png b/res/drawable/carousel_00022.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00022.png differ diff --git a/res/drawable/carousel_00023.png b/res/drawable/carousel_00023.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00023.png differ diff --git a/res/drawable/carousel_00024.png b/res/drawable/carousel_00024.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00024.png differ diff --git a/res/drawable/carousel_00025.png b/res/drawable/carousel_00025.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00025.png differ diff --git a/res/drawable/carousel_00026.png b/res/drawable/carousel_00026.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00026.png differ diff --git a/res/drawable/carousel_00027.png b/res/drawable/carousel_00027.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00027.png differ diff --git a/res/drawable/carousel_00028.png b/res/drawable/carousel_00028.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00028.png differ diff --git a/res/drawable/carousel_00029.png b/res/drawable/carousel_00029.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00029.png differ diff --git a/res/drawable/carousel_00030.png b/res/drawable/carousel_00030.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00030.png differ diff --git a/res/drawable/carousel_00031.png b/res/drawable/carousel_00031.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00031.png differ diff --git a/res/drawable/carousel_00032.png b/res/drawable/carousel_00032.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00032.png differ diff --git a/res/drawable/carousel_00033.png b/res/drawable/carousel_00033.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00033.png differ diff --git a/res/drawable/carousel_00034.png b/res/drawable/carousel_00034.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00034.png differ diff --git a/res/drawable/carousel_00035.png b/res/drawable/carousel_00035.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00035.png differ diff --git a/res/drawable/carousel_00036.png b/res/drawable/carousel_00036.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00036.png differ diff --git a/res/drawable/carousel_00037.png b/res/drawable/carousel_00037.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00037.png differ diff --git a/res/drawable/carousel_00038.png b/res/drawable/carousel_00038.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00038.png differ diff --git a/res/drawable/carousel_00039.png b/res/drawable/carousel_00039.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00039.png differ diff --git a/res/drawable/carousel_00040.png b/res/drawable/carousel_00040.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00040.png differ diff --git a/res/drawable/carousel_00041.png b/res/drawable/carousel_00041.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00041.png differ diff --git a/res/drawable/carousel_00042.png b/res/drawable/carousel_00042.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00042.png differ diff --git a/res/drawable/carousel_00043.png b/res/drawable/carousel_00043.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00043.png differ diff --git a/res/drawable/carousel_00044.png b/res/drawable/carousel_00044.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00044.png differ diff --git a/res/drawable/carousel_00045.png b/res/drawable/carousel_00045.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00045.png differ diff --git a/res/drawable/carousel_00046.png b/res/drawable/carousel_00046.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00046.png differ diff --git a/res/drawable/carousel_00047.png b/res/drawable/carousel_00047.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00047.png differ diff --git a/res/drawable/carousel_00048.png b/res/drawable/carousel_00048.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00048.png differ diff --git a/res/drawable/carousel_00049.png b/res/drawable/carousel_00049.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/carousel_00049.png differ diff --git a/res/drawable/cubein_00000.png b/res/drawable/cubein_00000.png new file mode 100644 index 000000000..678a89d23 Binary files /dev/null and b/res/drawable/cubein_00000.png differ diff --git a/res/drawable/cubein_00001.png b/res/drawable/cubein_00001.png new file mode 100644 index 000000000..322899f46 Binary files /dev/null and b/res/drawable/cubein_00001.png differ diff --git a/res/drawable/cubein_00002.png b/res/drawable/cubein_00002.png new file mode 100644 index 000000000..3d963c7ee Binary files /dev/null and b/res/drawable/cubein_00002.png differ diff --git a/res/drawable/cubein_00003.png b/res/drawable/cubein_00003.png new file mode 100644 index 000000000..7dabd0bf3 Binary files /dev/null and b/res/drawable/cubein_00003.png differ diff --git a/res/drawable/cubein_00004.png b/res/drawable/cubein_00004.png new file mode 100644 index 000000000..b73ce02c8 Binary files /dev/null and b/res/drawable/cubein_00004.png differ diff --git a/res/drawable/cubein_00005.png b/res/drawable/cubein_00005.png new file mode 100644 index 000000000..d9c7ea1f0 Binary files /dev/null and b/res/drawable/cubein_00005.png differ diff --git a/res/drawable/cubein_00006.png b/res/drawable/cubein_00006.png new file mode 100644 index 000000000..2b3198bc9 Binary files /dev/null and b/res/drawable/cubein_00006.png differ diff --git a/res/drawable/cubein_00007.png b/res/drawable/cubein_00007.png new file mode 100644 index 000000000..915fbe71f Binary files /dev/null and b/res/drawable/cubein_00007.png differ diff --git a/res/drawable/cubein_00008.png b/res/drawable/cubein_00008.png new file mode 100644 index 000000000..4eee981b6 Binary files /dev/null and b/res/drawable/cubein_00008.png differ diff --git a/res/drawable/cubein_00009.png b/res/drawable/cubein_00009.png new file mode 100644 index 000000000..516661963 Binary files /dev/null and b/res/drawable/cubein_00009.png differ diff --git a/res/drawable/cubein_00010.png b/res/drawable/cubein_00010.png new file mode 100644 index 000000000..3fdb7af1a Binary files /dev/null and b/res/drawable/cubein_00010.png differ diff --git a/res/drawable/cubein_00011.png b/res/drawable/cubein_00011.png new file mode 100644 index 000000000..273b70afa Binary files /dev/null and b/res/drawable/cubein_00011.png differ diff --git a/res/drawable/cubein_00012.png b/res/drawable/cubein_00012.png new file mode 100644 index 000000000..4ed7571c0 Binary files /dev/null and b/res/drawable/cubein_00012.png differ diff --git a/res/drawable/cubein_00013.png b/res/drawable/cubein_00013.png new file mode 100644 index 000000000..6ec50e73c Binary files /dev/null and b/res/drawable/cubein_00013.png differ diff --git a/res/drawable/cubein_00014.png b/res/drawable/cubein_00014.png new file mode 100644 index 000000000..78eee8c7f Binary files /dev/null and b/res/drawable/cubein_00014.png differ diff --git a/res/drawable/cubein_00015.png b/res/drawable/cubein_00015.png new file mode 100644 index 000000000..cbf4bbd53 Binary files /dev/null and b/res/drawable/cubein_00015.png differ diff --git a/res/drawable/cubein_00016.png b/res/drawable/cubein_00016.png new file mode 100644 index 000000000..3bd56fc2d Binary files /dev/null and b/res/drawable/cubein_00016.png differ diff --git a/res/drawable/cubein_00017.png b/res/drawable/cubein_00017.png new file mode 100644 index 000000000..2783f73b1 Binary files /dev/null and b/res/drawable/cubein_00017.png differ diff --git a/res/drawable/cubein_00018.png b/res/drawable/cubein_00018.png new file mode 100644 index 000000000..052c7b22b Binary files /dev/null and b/res/drawable/cubein_00018.png differ diff --git a/res/drawable/cubein_00019.png b/res/drawable/cubein_00019.png new file mode 100644 index 000000000..7c99a679b Binary files /dev/null and b/res/drawable/cubein_00019.png differ diff --git a/res/drawable/cubein_00020.png b/res/drawable/cubein_00020.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00020.png differ diff --git a/res/drawable/cubein_00021.png b/res/drawable/cubein_00021.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00021.png differ diff --git a/res/drawable/cubein_00022.png b/res/drawable/cubein_00022.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00022.png differ diff --git a/res/drawable/cubein_00023.png b/res/drawable/cubein_00023.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00023.png differ diff --git a/res/drawable/cubein_00024.png b/res/drawable/cubein_00024.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00024.png differ diff --git a/res/drawable/cubein_00025.png b/res/drawable/cubein_00025.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00025.png differ diff --git a/res/drawable/cubein_00026.png b/res/drawable/cubein_00026.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00026.png differ diff --git a/res/drawable/cubein_00027.png b/res/drawable/cubein_00027.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00027.png differ diff --git a/res/drawable/cubein_00028.png b/res/drawable/cubein_00028.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00028.png differ diff --git a/res/drawable/cubein_00029.png b/res/drawable/cubein_00029.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00029.png differ diff --git a/res/drawable/cubein_00030.png b/res/drawable/cubein_00030.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00030.png differ diff --git a/res/drawable/cubein_00031.png b/res/drawable/cubein_00031.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00031.png differ diff --git a/res/drawable/cubein_00032.png b/res/drawable/cubein_00032.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00032.png differ diff --git a/res/drawable/cubein_00033.png b/res/drawable/cubein_00033.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00033.png differ diff --git a/res/drawable/cubein_00034.png b/res/drawable/cubein_00034.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00034.png differ diff --git a/res/drawable/cubein_00035.png b/res/drawable/cubein_00035.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00035.png differ diff --git a/res/drawable/cubein_00036.png b/res/drawable/cubein_00036.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00036.png differ diff --git a/res/drawable/cubein_00037.png b/res/drawable/cubein_00037.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00037.png differ diff --git a/res/drawable/cubein_00038.png b/res/drawable/cubein_00038.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00038.png differ diff --git a/res/drawable/cubein_00039.png b/res/drawable/cubein_00039.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00039.png differ diff --git a/res/drawable/cubein_00040.png b/res/drawable/cubein_00040.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00040.png differ diff --git a/res/drawable/cubein_00041.png b/res/drawable/cubein_00041.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00041.png differ diff --git a/res/drawable/cubein_00042.png b/res/drawable/cubein_00042.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00042.png differ diff --git a/res/drawable/cubein_00043.png b/res/drawable/cubein_00043.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00043.png differ diff --git a/res/drawable/cubein_00044.png b/res/drawable/cubein_00044.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00044.png differ diff --git a/res/drawable/cubein_00045.png b/res/drawable/cubein_00045.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00045.png differ diff --git a/res/drawable/cubein_00046.png b/res/drawable/cubein_00046.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00046.png differ diff --git a/res/drawable/cubein_00047.png b/res/drawable/cubein_00047.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00047.png differ diff --git a/res/drawable/cubein_00048.png b/res/drawable/cubein_00048.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00048.png differ diff --git a/res/drawable/cubein_00049.png b/res/drawable/cubein_00049.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubein_00049.png differ diff --git a/res/drawable/cubeout_00000.png b/res/drawable/cubeout_00000.png new file mode 100644 index 000000000..d444d1318 Binary files /dev/null and b/res/drawable/cubeout_00000.png differ diff --git a/res/drawable/cubeout_00001.png b/res/drawable/cubeout_00001.png new file mode 100644 index 000000000..69b57487c Binary files /dev/null and b/res/drawable/cubeout_00001.png differ diff --git a/res/drawable/cubeout_00002.png b/res/drawable/cubeout_00002.png new file mode 100644 index 000000000..58f4191ae Binary files /dev/null and b/res/drawable/cubeout_00002.png differ diff --git a/res/drawable/cubeout_00003.png b/res/drawable/cubeout_00003.png new file mode 100644 index 000000000..096771ec5 Binary files /dev/null and b/res/drawable/cubeout_00003.png differ diff --git a/res/drawable/cubeout_00004.png b/res/drawable/cubeout_00004.png new file mode 100644 index 000000000..2d027ffa5 Binary files /dev/null and b/res/drawable/cubeout_00004.png differ diff --git a/res/drawable/cubeout_00005.png b/res/drawable/cubeout_00005.png new file mode 100644 index 000000000..bc3876565 Binary files /dev/null and b/res/drawable/cubeout_00005.png differ diff --git a/res/drawable/cubeout_00006.png b/res/drawable/cubeout_00006.png new file mode 100644 index 000000000..742bebd0e Binary files /dev/null and b/res/drawable/cubeout_00006.png differ diff --git a/res/drawable/cubeout_00007.png b/res/drawable/cubeout_00007.png new file mode 100644 index 000000000..ec7b63326 Binary files /dev/null and b/res/drawable/cubeout_00007.png differ diff --git a/res/drawable/cubeout_00008.png b/res/drawable/cubeout_00008.png new file mode 100644 index 000000000..5eb601422 Binary files /dev/null and b/res/drawable/cubeout_00008.png differ diff --git a/res/drawable/cubeout_00009.png b/res/drawable/cubeout_00009.png new file mode 100644 index 000000000..30559fb95 Binary files /dev/null and b/res/drawable/cubeout_00009.png differ diff --git a/res/drawable/cubeout_00010.png b/res/drawable/cubeout_00010.png new file mode 100644 index 000000000..fa8b785fd Binary files /dev/null and b/res/drawable/cubeout_00010.png differ diff --git a/res/drawable/cubeout_00011.png b/res/drawable/cubeout_00011.png new file mode 100644 index 000000000..9de04f3e3 Binary files /dev/null and b/res/drawable/cubeout_00011.png differ diff --git a/res/drawable/cubeout_00012.png b/res/drawable/cubeout_00012.png new file mode 100644 index 000000000..343901380 Binary files /dev/null and b/res/drawable/cubeout_00012.png differ diff --git a/res/drawable/cubeout_00013.png b/res/drawable/cubeout_00013.png new file mode 100644 index 000000000..4fcd8444c Binary files /dev/null and b/res/drawable/cubeout_00013.png differ diff --git a/res/drawable/cubeout_00014.png b/res/drawable/cubeout_00014.png new file mode 100644 index 000000000..df3b99369 Binary files /dev/null and b/res/drawable/cubeout_00014.png differ diff --git a/res/drawable/cubeout_00015.png b/res/drawable/cubeout_00015.png new file mode 100644 index 000000000..b4f910f3c Binary files /dev/null and b/res/drawable/cubeout_00015.png differ diff --git a/res/drawable/cubeout_00016.png b/res/drawable/cubeout_00016.png new file mode 100644 index 000000000..262e12942 Binary files /dev/null and b/res/drawable/cubeout_00016.png differ diff --git a/res/drawable/cubeout_00017.png b/res/drawable/cubeout_00017.png new file mode 100644 index 000000000..873146bc3 Binary files /dev/null and b/res/drawable/cubeout_00017.png differ diff --git a/res/drawable/cubeout_00018.png b/res/drawable/cubeout_00018.png new file mode 100644 index 000000000..2d52f2343 Binary files /dev/null and b/res/drawable/cubeout_00018.png differ diff --git a/res/drawable/cubeout_00019.png b/res/drawable/cubeout_00019.png new file mode 100644 index 000000000..1b7bff44a Binary files /dev/null and b/res/drawable/cubeout_00019.png differ diff --git a/res/drawable/cubeout_00020.png b/res/drawable/cubeout_00020.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00020.png differ diff --git a/res/drawable/cubeout_00021.png b/res/drawable/cubeout_00021.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00021.png differ diff --git a/res/drawable/cubeout_00022.png b/res/drawable/cubeout_00022.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00022.png differ diff --git a/res/drawable/cubeout_00023.png b/res/drawable/cubeout_00023.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00023.png differ diff --git a/res/drawable/cubeout_00024.png b/res/drawable/cubeout_00024.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00024.png differ diff --git a/res/drawable/cubeout_00025.png b/res/drawable/cubeout_00025.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00025.png differ diff --git a/res/drawable/cubeout_00026.png b/res/drawable/cubeout_00026.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00026.png differ diff --git a/res/drawable/cubeout_00027.png b/res/drawable/cubeout_00027.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00027.png differ diff --git a/res/drawable/cubeout_00028.png b/res/drawable/cubeout_00028.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00028.png differ diff --git a/res/drawable/cubeout_00029.png b/res/drawable/cubeout_00029.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00029.png differ diff --git a/res/drawable/cubeout_00030.png b/res/drawable/cubeout_00030.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00030.png differ diff --git a/res/drawable/cubeout_00031.png b/res/drawable/cubeout_00031.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00031.png differ diff --git a/res/drawable/cubeout_00032.png b/res/drawable/cubeout_00032.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00032.png differ diff --git a/res/drawable/cubeout_00033.png b/res/drawable/cubeout_00033.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00033.png differ diff --git a/res/drawable/cubeout_00034.png b/res/drawable/cubeout_00034.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00034.png differ diff --git a/res/drawable/cubeout_00035.png b/res/drawable/cubeout_00035.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00035.png differ diff --git a/res/drawable/cubeout_00036.png b/res/drawable/cubeout_00036.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00036.png differ diff --git a/res/drawable/cubeout_00037.png b/res/drawable/cubeout_00037.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00037.png differ diff --git a/res/drawable/cubeout_00038.png b/res/drawable/cubeout_00038.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00038.png differ diff --git a/res/drawable/cubeout_00039.png b/res/drawable/cubeout_00039.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00039.png differ diff --git a/res/drawable/cubeout_00040.png b/res/drawable/cubeout_00040.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00040.png differ diff --git a/res/drawable/cubeout_00041.png b/res/drawable/cubeout_00041.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00041.png differ diff --git a/res/drawable/cubeout_00042.png b/res/drawable/cubeout_00042.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00042.png differ diff --git a/res/drawable/cubeout_00043.png b/res/drawable/cubeout_00043.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00043.png differ diff --git a/res/drawable/cubeout_00044.png b/res/drawable/cubeout_00044.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00044.png differ diff --git a/res/drawable/cubeout_00045.png b/res/drawable/cubeout_00045.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00045.png differ diff --git a/res/drawable/cubeout_00046.png b/res/drawable/cubeout_00046.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00046.png differ diff --git a/res/drawable/cubeout_00047.png b/res/drawable/cubeout_00047.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00047.png differ diff --git a/res/drawable/cubeout_00048.png b/res/drawable/cubeout_00048.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00048.png differ diff --git a/res/drawable/cubeout_00049.png b/res/drawable/cubeout_00049.png new file mode 100644 index 000000000..1662df8dc Binary files /dev/null and b/res/drawable/cubeout_00049.png differ diff --git a/res/drawable/cylinderin_00000.png b/res/drawable/cylinderin_00000.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00000.png differ diff --git a/res/drawable/cylinderin_00001.png b/res/drawable/cylinderin_00001.png new file mode 100644 index 000000000..bfc597a49 Binary files /dev/null and b/res/drawable/cylinderin_00001.png differ diff --git a/res/drawable/cylinderin_00002.png b/res/drawable/cylinderin_00002.png new file mode 100644 index 000000000..88114b7e2 Binary files /dev/null and b/res/drawable/cylinderin_00002.png differ diff --git a/res/drawable/cylinderin_00003.png b/res/drawable/cylinderin_00003.png new file mode 100644 index 000000000..fe24f3f22 Binary files /dev/null and b/res/drawable/cylinderin_00003.png differ diff --git a/res/drawable/cylinderin_00004.png b/res/drawable/cylinderin_00004.png new file mode 100644 index 000000000..c3a655b23 Binary files /dev/null and b/res/drawable/cylinderin_00004.png differ diff --git a/res/drawable/cylinderin_00005.png b/res/drawable/cylinderin_00005.png new file mode 100644 index 000000000..e34b658e8 Binary files /dev/null and b/res/drawable/cylinderin_00005.png differ diff --git a/res/drawable/cylinderin_00006.png b/res/drawable/cylinderin_00006.png new file mode 100644 index 000000000..7f4d7b9db Binary files /dev/null and b/res/drawable/cylinderin_00006.png differ diff --git a/res/drawable/cylinderin_00007.png b/res/drawable/cylinderin_00007.png new file mode 100644 index 000000000..bef4a2d11 Binary files /dev/null and b/res/drawable/cylinderin_00007.png differ diff --git a/res/drawable/cylinderin_00008.png b/res/drawable/cylinderin_00008.png new file mode 100644 index 000000000..3ed252efa Binary files /dev/null and b/res/drawable/cylinderin_00008.png differ diff --git a/res/drawable/cylinderin_00009.png b/res/drawable/cylinderin_00009.png new file mode 100644 index 000000000..6b47c400e Binary files /dev/null and b/res/drawable/cylinderin_00009.png differ diff --git a/res/drawable/cylinderin_00010.png b/res/drawable/cylinderin_00010.png new file mode 100644 index 000000000..5ffd650ed Binary files /dev/null and b/res/drawable/cylinderin_00010.png differ diff --git a/res/drawable/cylinderin_00011.png b/res/drawable/cylinderin_00011.png new file mode 100644 index 000000000..f6ad8cc80 Binary files /dev/null and b/res/drawable/cylinderin_00011.png differ diff --git a/res/drawable/cylinderin_00012.png b/res/drawable/cylinderin_00012.png new file mode 100644 index 000000000..27c7d6945 Binary files /dev/null and b/res/drawable/cylinderin_00012.png differ diff --git a/res/drawable/cylinderin_00013.png b/res/drawable/cylinderin_00013.png new file mode 100644 index 000000000..a78a4359d Binary files /dev/null and b/res/drawable/cylinderin_00013.png differ diff --git a/res/drawable/cylinderin_00014.png b/res/drawable/cylinderin_00014.png new file mode 100644 index 000000000..4eda97009 Binary files /dev/null and b/res/drawable/cylinderin_00014.png differ diff --git a/res/drawable/cylinderin_00015.png b/res/drawable/cylinderin_00015.png new file mode 100644 index 000000000..e3ddc7e98 Binary files /dev/null and b/res/drawable/cylinderin_00015.png differ diff --git a/res/drawable/cylinderin_00016.png b/res/drawable/cylinderin_00016.png new file mode 100644 index 000000000..eb48e294c Binary files /dev/null and b/res/drawable/cylinderin_00016.png differ diff --git a/res/drawable/cylinderin_00017.png b/res/drawable/cylinderin_00017.png new file mode 100644 index 000000000..fb7b3aff9 Binary files /dev/null and b/res/drawable/cylinderin_00017.png differ diff --git a/res/drawable/cylinderin_00018.png b/res/drawable/cylinderin_00018.png new file mode 100644 index 000000000..5c73e4d98 Binary files /dev/null and b/res/drawable/cylinderin_00018.png differ diff --git a/res/drawable/cylinderin_00019.png b/res/drawable/cylinderin_00019.png new file mode 100644 index 000000000..967423915 Binary files /dev/null and b/res/drawable/cylinderin_00019.png differ diff --git a/res/drawable/cylinderin_00020.png b/res/drawable/cylinderin_00020.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00020.png differ diff --git a/res/drawable/cylinderin_00021.png b/res/drawable/cylinderin_00021.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00021.png differ diff --git a/res/drawable/cylinderin_00022.png b/res/drawable/cylinderin_00022.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00022.png differ diff --git a/res/drawable/cylinderin_00023.png b/res/drawable/cylinderin_00023.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00023.png differ diff --git a/res/drawable/cylinderin_00024.png b/res/drawable/cylinderin_00024.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00024.png differ diff --git a/res/drawable/cylinderin_00025.png b/res/drawable/cylinderin_00025.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00025.png differ diff --git a/res/drawable/cylinderin_00026.png b/res/drawable/cylinderin_00026.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00026.png differ diff --git a/res/drawable/cylinderin_00027.png b/res/drawable/cylinderin_00027.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00027.png differ diff --git a/res/drawable/cylinderin_00028.png b/res/drawable/cylinderin_00028.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00028.png differ diff --git a/res/drawable/cylinderin_00029.png b/res/drawable/cylinderin_00029.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00029.png differ diff --git a/res/drawable/cylinderin_00030.png b/res/drawable/cylinderin_00030.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00030.png differ diff --git a/res/drawable/cylinderin_00031.png b/res/drawable/cylinderin_00031.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00031.png differ diff --git a/res/drawable/cylinderin_00032.png b/res/drawable/cylinderin_00032.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00032.png differ diff --git a/res/drawable/cylinderin_00033.png b/res/drawable/cylinderin_00033.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00033.png differ diff --git a/res/drawable/cylinderin_00034.png b/res/drawable/cylinderin_00034.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00034.png differ diff --git a/res/drawable/cylinderin_00035.png b/res/drawable/cylinderin_00035.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00035.png differ diff --git a/res/drawable/cylinderin_00036.png b/res/drawable/cylinderin_00036.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00036.png differ diff --git a/res/drawable/cylinderin_00037.png b/res/drawable/cylinderin_00037.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00037.png differ diff --git a/res/drawable/cylinderin_00038.png b/res/drawable/cylinderin_00038.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00038.png differ diff --git a/res/drawable/cylinderin_00039.png b/res/drawable/cylinderin_00039.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00039.png differ diff --git a/res/drawable/cylinderin_00040.png b/res/drawable/cylinderin_00040.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00040.png differ diff --git a/res/drawable/cylinderin_00041.png b/res/drawable/cylinderin_00041.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00041.png differ diff --git a/res/drawable/cylinderin_00042.png b/res/drawable/cylinderin_00042.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00042.png differ diff --git a/res/drawable/cylinderin_00043.png b/res/drawable/cylinderin_00043.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00043.png differ diff --git a/res/drawable/cylinderin_00044.png b/res/drawable/cylinderin_00044.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00044.png differ diff --git a/res/drawable/cylinderin_00045.png b/res/drawable/cylinderin_00045.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00045.png differ diff --git a/res/drawable/cylinderin_00046.png b/res/drawable/cylinderin_00046.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00046.png differ diff --git a/res/drawable/cylinderin_00047.png b/res/drawable/cylinderin_00047.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00047.png differ diff --git a/res/drawable/cylinderin_00048.png b/res/drawable/cylinderin_00048.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00048.png differ diff --git a/res/drawable/cylinderin_00049.png b/res/drawable/cylinderin_00049.png new file mode 100644 index 000000000..c5eeb55a0 Binary files /dev/null and b/res/drawable/cylinderin_00049.png differ diff --git a/res/drawable/cylinderout_00000.png b/res/drawable/cylinderout_00000.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00000.png differ diff --git a/res/drawable/cylinderout_00001.png b/res/drawable/cylinderout_00001.png new file mode 100644 index 000000000..ba768d300 Binary files /dev/null and b/res/drawable/cylinderout_00001.png differ diff --git a/res/drawable/cylinderout_00002.png b/res/drawable/cylinderout_00002.png new file mode 100644 index 000000000..c753c3b02 Binary files /dev/null and b/res/drawable/cylinderout_00002.png differ diff --git a/res/drawable/cylinderout_00003.png b/res/drawable/cylinderout_00003.png new file mode 100644 index 000000000..903d16029 Binary files /dev/null and b/res/drawable/cylinderout_00003.png differ diff --git a/res/drawable/cylinderout_00004.png b/res/drawable/cylinderout_00004.png new file mode 100644 index 000000000..803ba23be Binary files /dev/null and b/res/drawable/cylinderout_00004.png differ diff --git a/res/drawable/cylinderout_00005.png b/res/drawable/cylinderout_00005.png new file mode 100644 index 000000000..ccfb96d48 Binary files /dev/null and b/res/drawable/cylinderout_00005.png differ diff --git a/res/drawable/cylinderout_00006.png b/res/drawable/cylinderout_00006.png new file mode 100644 index 000000000..1b7a4c899 Binary files /dev/null and b/res/drawable/cylinderout_00006.png differ diff --git a/res/drawable/cylinderout_00007.png b/res/drawable/cylinderout_00007.png new file mode 100644 index 000000000..5366845fa Binary files /dev/null and b/res/drawable/cylinderout_00007.png differ diff --git a/res/drawable/cylinderout_00008.png b/res/drawable/cylinderout_00008.png new file mode 100644 index 000000000..325574a27 Binary files /dev/null and b/res/drawable/cylinderout_00008.png differ diff --git a/res/drawable/cylinderout_00009.png b/res/drawable/cylinderout_00009.png new file mode 100644 index 000000000..9280ff34b Binary files /dev/null and b/res/drawable/cylinderout_00009.png differ diff --git a/res/drawable/cylinderout_00010.png b/res/drawable/cylinderout_00010.png new file mode 100644 index 000000000..f667a3261 Binary files /dev/null and b/res/drawable/cylinderout_00010.png differ diff --git a/res/drawable/cylinderout_00011.png b/res/drawable/cylinderout_00011.png new file mode 100644 index 000000000..8d38ecf7e Binary files /dev/null and b/res/drawable/cylinderout_00011.png differ diff --git a/res/drawable/cylinderout_00012.png b/res/drawable/cylinderout_00012.png new file mode 100644 index 000000000..80359d12a Binary files /dev/null and b/res/drawable/cylinderout_00012.png differ diff --git a/res/drawable/cylinderout_00013.png b/res/drawable/cylinderout_00013.png new file mode 100644 index 000000000..087953e6c Binary files /dev/null and b/res/drawable/cylinderout_00013.png differ diff --git a/res/drawable/cylinderout_00014.png b/res/drawable/cylinderout_00014.png new file mode 100644 index 000000000..083009a08 Binary files /dev/null and b/res/drawable/cylinderout_00014.png differ diff --git a/res/drawable/cylinderout_00015.png b/res/drawable/cylinderout_00015.png new file mode 100644 index 000000000..c5cfb7eb9 Binary files /dev/null and b/res/drawable/cylinderout_00015.png differ diff --git a/res/drawable/cylinderout_00016.png b/res/drawable/cylinderout_00016.png new file mode 100644 index 000000000..c1e9eea70 Binary files /dev/null and b/res/drawable/cylinderout_00016.png differ diff --git a/res/drawable/cylinderout_00017.png b/res/drawable/cylinderout_00017.png new file mode 100644 index 000000000..cca8ec06e Binary files /dev/null and b/res/drawable/cylinderout_00017.png differ diff --git a/res/drawable/cylinderout_00018.png b/res/drawable/cylinderout_00018.png new file mode 100644 index 000000000..13c2a8ce6 Binary files /dev/null and b/res/drawable/cylinderout_00018.png differ diff --git a/res/drawable/cylinderout_00019.png b/res/drawable/cylinderout_00019.png new file mode 100644 index 000000000..3e806b910 Binary files /dev/null and b/res/drawable/cylinderout_00019.png differ diff --git a/res/drawable/cylinderout_00020.png b/res/drawable/cylinderout_00020.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00020.png differ diff --git a/res/drawable/cylinderout_00021.png b/res/drawable/cylinderout_00021.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00021.png differ diff --git a/res/drawable/cylinderout_00022.png b/res/drawable/cylinderout_00022.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00022.png differ diff --git a/res/drawable/cylinderout_00023.png b/res/drawable/cylinderout_00023.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00023.png differ diff --git a/res/drawable/cylinderout_00024.png b/res/drawable/cylinderout_00024.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00024.png differ diff --git a/res/drawable/cylinderout_00025.png b/res/drawable/cylinderout_00025.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00025.png differ diff --git a/res/drawable/cylinderout_00026.png b/res/drawable/cylinderout_00026.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00026.png differ diff --git a/res/drawable/cylinderout_00027.png b/res/drawable/cylinderout_00027.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00027.png differ diff --git a/res/drawable/cylinderout_00028.png b/res/drawable/cylinderout_00028.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00028.png differ diff --git a/res/drawable/cylinderout_00029.png b/res/drawable/cylinderout_00029.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00029.png differ diff --git a/res/drawable/cylinderout_00030.png b/res/drawable/cylinderout_00030.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00030.png differ diff --git a/res/drawable/cylinderout_00031.png b/res/drawable/cylinderout_00031.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00031.png differ diff --git a/res/drawable/cylinderout_00032.png b/res/drawable/cylinderout_00032.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00032.png differ diff --git a/res/drawable/cylinderout_00033.png b/res/drawable/cylinderout_00033.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00033.png differ diff --git a/res/drawable/cylinderout_00034.png b/res/drawable/cylinderout_00034.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00034.png differ diff --git a/res/drawable/cylinderout_00035.png b/res/drawable/cylinderout_00035.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00035.png differ diff --git a/res/drawable/cylinderout_00036.png b/res/drawable/cylinderout_00036.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00036.png differ diff --git a/res/drawable/cylinderout_00037.png b/res/drawable/cylinderout_00037.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00037.png differ diff --git a/res/drawable/cylinderout_00038.png b/res/drawable/cylinderout_00038.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00038.png differ diff --git a/res/drawable/cylinderout_00039.png b/res/drawable/cylinderout_00039.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00039.png differ diff --git a/res/drawable/cylinderout_00040.png b/res/drawable/cylinderout_00040.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00040.png differ diff --git a/res/drawable/cylinderout_00041.png b/res/drawable/cylinderout_00041.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00041.png differ diff --git a/res/drawable/cylinderout_00042.png b/res/drawable/cylinderout_00042.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00042.png differ diff --git a/res/drawable/cylinderout_00043.png b/res/drawable/cylinderout_00043.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00043.png differ diff --git a/res/drawable/cylinderout_00044.png b/res/drawable/cylinderout_00044.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00044.png differ diff --git a/res/drawable/cylinderout_00045.png b/res/drawable/cylinderout_00045.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00045.png differ diff --git a/res/drawable/cylinderout_00046.png b/res/drawable/cylinderout_00046.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00046.png differ diff --git a/res/drawable/cylinderout_00047.png b/res/drawable/cylinderout_00047.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00047.png differ diff --git a/res/drawable/cylinderout_00048.png b/res/drawable/cylinderout_00048.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00048.png differ diff --git a/res/drawable/cylinderout_00049.png b/res/drawable/cylinderout_00049.png new file mode 100644 index 000000000..d53161c2b Binary files /dev/null and b/res/drawable/cylinderout_00049.png differ diff --git a/res/drawable/flip_00000.png b/res/drawable/flip_00000.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00000.png differ diff --git a/res/drawable/flip_00001.png b/res/drawable/flip_00001.png new file mode 100644 index 000000000..086511876 Binary files /dev/null and b/res/drawable/flip_00001.png differ diff --git a/res/drawable/flip_00002.png b/res/drawable/flip_00002.png new file mode 100644 index 000000000..ae9f255f7 Binary files /dev/null and b/res/drawable/flip_00002.png differ diff --git a/res/drawable/flip_00003.png b/res/drawable/flip_00003.png new file mode 100644 index 000000000..62846c7d1 Binary files /dev/null and b/res/drawable/flip_00003.png differ diff --git a/res/drawable/flip_00004.png b/res/drawable/flip_00004.png new file mode 100644 index 000000000..ae70cb81b Binary files /dev/null and b/res/drawable/flip_00004.png differ diff --git a/res/drawable/flip_00005.png b/res/drawable/flip_00005.png new file mode 100644 index 000000000..ccef96be3 Binary files /dev/null and b/res/drawable/flip_00005.png differ diff --git a/res/drawable/flip_00006.png b/res/drawable/flip_00006.png new file mode 100644 index 000000000..ce8819c6a Binary files /dev/null and b/res/drawable/flip_00006.png differ diff --git a/res/drawable/flip_00007.png b/res/drawable/flip_00007.png new file mode 100644 index 000000000..b502e2d4a Binary files /dev/null and b/res/drawable/flip_00007.png differ diff --git a/res/drawable/flip_00008.png b/res/drawable/flip_00008.png new file mode 100644 index 000000000..bfaae1d36 Binary files /dev/null and b/res/drawable/flip_00008.png differ diff --git a/res/drawable/flip_00009.png b/res/drawable/flip_00009.png new file mode 100644 index 000000000..f974cd4c6 Binary files /dev/null and b/res/drawable/flip_00009.png differ diff --git a/res/drawable/flip_00010.png b/res/drawable/flip_00010.png new file mode 100644 index 000000000..9b298a83f Binary files /dev/null and b/res/drawable/flip_00010.png differ diff --git a/res/drawable/flip_00011.png b/res/drawable/flip_00011.png new file mode 100644 index 000000000..27accf584 Binary files /dev/null and b/res/drawable/flip_00011.png differ diff --git a/res/drawable/flip_00012.png b/res/drawable/flip_00012.png new file mode 100644 index 000000000..48f3d37b4 Binary files /dev/null and b/res/drawable/flip_00012.png differ diff --git a/res/drawable/flip_00013.png b/res/drawable/flip_00013.png new file mode 100644 index 000000000..ed3273f80 Binary files /dev/null and b/res/drawable/flip_00013.png differ diff --git a/res/drawable/flip_00014.png b/res/drawable/flip_00014.png new file mode 100644 index 000000000..24cfa1787 Binary files /dev/null and b/res/drawable/flip_00014.png differ diff --git a/res/drawable/flip_00015.png b/res/drawable/flip_00015.png new file mode 100644 index 000000000..dc8483e48 Binary files /dev/null and b/res/drawable/flip_00015.png differ diff --git a/res/drawable/flip_00016.png b/res/drawable/flip_00016.png new file mode 100644 index 000000000..c445a5b87 Binary files /dev/null and b/res/drawable/flip_00016.png differ diff --git a/res/drawable/flip_00017.png b/res/drawable/flip_00017.png new file mode 100644 index 000000000..0d269886a Binary files /dev/null and b/res/drawable/flip_00017.png differ diff --git a/res/drawable/flip_00018.png b/res/drawable/flip_00018.png new file mode 100644 index 000000000..39762fa11 Binary files /dev/null and b/res/drawable/flip_00018.png differ diff --git a/res/drawable/flip_00019.png b/res/drawable/flip_00019.png new file mode 100644 index 000000000..02f160ab3 Binary files /dev/null and b/res/drawable/flip_00019.png differ diff --git a/res/drawable/flip_00020.png b/res/drawable/flip_00020.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00020.png differ diff --git a/res/drawable/flip_00021.png b/res/drawable/flip_00021.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00021.png differ diff --git a/res/drawable/flip_00022.png b/res/drawable/flip_00022.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00022.png differ diff --git a/res/drawable/flip_00023.png b/res/drawable/flip_00023.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00023.png differ diff --git a/res/drawable/flip_00024.png b/res/drawable/flip_00024.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00024.png differ diff --git a/res/drawable/flip_00025.png b/res/drawable/flip_00025.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00025.png differ diff --git a/res/drawable/flip_00026.png b/res/drawable/flip_00026.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00026.png differ diff --git a/res/drawable/flip_00027.png b/res/drawable/flip_00027.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00027.png differ diff --git a/res/drawable/flip_00028.png b/res/drawable/flip_00028.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00028.png differ diff --git a/res/drawable/flip_00029.png b/res/drawable/flip_00029.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00029.png differ diff --git a/res/drawable/flip_00030.png b/res/drawable/flip_00030.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00030.png differ diff --git a/res/drawable/flip_00031.png b/res/drawable/flip_00031.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00031.png differ diff --git a/res/drawable/flip_00032.png b/res/drawable/flip_00032.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00032.png differ diff --git a/res/drawable/flip_00033.png b/res/drawable/flip_00033.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00033.png differ diff --git a/res/drawable/flip_00034.png b/res/drawable/flip_00034.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00034.png differ diff --git a/res/drawable/flip_00035.png b/res/drawable/flip_00035.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00035.png differ diff --git a/res/drawable/flip_00036.png b/res/drawable/flip_00036.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00036.png differ diff --git a/res/drawable/flip_00037.png b/res/drawable/flip_00037.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00037.png differ diff --git a/res/drawable/flip_00038.png b/res/drawable/flip_00038.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00038.png differ diff --git a/res/drawable/flip_00039.png b/res/drawable/flip_00039.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00039.png differ diff --git a/res/drawable/flip_00040.png b/res/drawable/flip_00040.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00040.png differ diff --git a/res/drawable/flip_00041.png b/res/drawable/flip_00041.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00041.png differ diff --git a/res/drawable/flip_00042.png b/res/drawable/flip_00042.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00042.png differ diff --git a/res/drawable/flip_00043.png b/res/drawable/flip_00043.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00043.png differ diff --git a/res/drawable/flip_00044.png b/res/drawable/flip_00044.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00044.png differ diff --git a/res/drawable/flip_00045.png b/res/drawable/flip_00045.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00045.png differ diff --git a/res/drawable/flip_00046.png b/res/drawable/flip_00046.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00046.png differ diff --git a/res/drawable/flip_00047.png b/res/drawable/flip_00047.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00047.png differ diff --git a/res/drawable/flip_00048.png b/res/drawable/flip_00048.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00048.png differ diff --git a/res/drawable/flip_00049.png b/res/drawable/flip_00049.png new file mode 100644 index 000000000..cbe7f859b Binary files /dev/null and b/res/drawable/flip_00049.png differ diff --git a/res/drawable/handle.png b/res/drawable/handle.png new file mode 100644 index 000000000..6e943f0da Binary files /dev/null and b/res/drawable/handle.png differ diff --git a/res/drawable/handle_left.png b/res/drawable/handle_left.png new file mode 100644 index 000000000..b78889ec0 Binary files /dev/null and b/res/drawable/handle_left.png differ diff --git a/res/drawable/handle_reversed.png b/res/drawable/handle_reversed.png new file mode 100644 index 000000000..6e943f0da Binary files /dev/null and b/res/drawable/handle_reversed.png differ diff --git a/res/drawable/launcheranimatedarrow_00000.png b/res/drawable/launcheranimatedarrow_00000.png new file mode 100644 index 000000000..2ed7fe9a7 Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00000.png differ diff --git a/res/drawable/launcheranimatedarrow_00001.png b/res/drawable/launcheranimatedarrow_00001.png new file mode 100644 index 000000000..f3707e07c Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00001.png differ diff --git a/res/drawable/launcheranimatedarrow_00002.png b/res/drawable/launcheranimatedarrow_00002.png new file mode 100644 index 000000000..3549389d0 Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00002.png differ diff --git a/res/drawable/launcheranimatedarrow_00003.png b/res/drawable/launcheranimatedarrow_00003.png new file mode 100644 index 000000000..891e86c42 Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00003.png differ diff --git a/res/drawable/launcheranimatedarrow_00004.png b/res/drawable/launcheranimatedarrow_00004.png new file mode 100644 index 000000000..7cfb1ef8c Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00004.png differ diff --git a/res/drawable/launcheranimatedarrow_00005.png b/res/drawable/launcheranimatedarrow_00005.png new file mode 100644 index 000000000..121f4d516 Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00005.png differ diff --git a/res/drawable/launcheranimatedarrow_00006.png b/res/drawable/launcheranimatedarrow_00006.png new file mode 100644 index 000000000..3a38e71f7 Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00006.png differ diff --git a/res/drawable/launcheranimatedarrow_00007.png b/res/drawable/launcheranimatedarrow_00007.png new file mode 100644 index 000000000..e81a719fd Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00007.png differ diff --git a/res/drawable/launcheranimatedarrow_00008.png b/res/drawable/launcheranimatedarrow_00008.png new file mode 100644 index 000000000..bd6f40981 Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00008.png differ diff --git a/res/drawable/launcheranimatedarrow_00009.png b/res/drawable/launcheranimatedarrow_00009.png new file mode 100644 index 000000000..c7cb60daf Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00009.png differ diff --git a/res/drawable/launcheranimatedarrow_00010.png b/res/drawable/launcheranimatedarrow_00010.png new file mode 100644 index 000000000..1bf30dcc3 Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00010.png differ diff --git a/res/drawable/launcheranimatedarrow_00011.png b/res/drawable/launcheranimatedarrow_00011.png new file mode 100644 index 000000000..3cb598806 Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00011.png differ diff --git a/res/drawable/launcheranimatedarrow_00012.png b/res/drawable/launcheranimatedarrow_00012.png new file mode 100644 index 000000000..58070de06 Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00012.png differ diff --git a/res/drawable/launcheranimatedarrow_00013.png b/res/drawable/launcheranimatedarrow_00013.png new file mode 100644 index 000000000..810d0a229 Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00013.png differ diff --git a/res/drawable/launcheranimatedarrow_00014.png b/res/drawable/launcheranimatedarrow_00014.png new file mode 100644 index 000000000..3f9e51861 Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00014.png differ diff --git a/res/drawable/launcheranimatedarrow_00015.png b/res/drawable/launcheranimatedarrow_00015.png new file mode 100644 index 000000000..348bfbbc6 Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00015.png differ diff --git a/res/drawable/launcheranimatedarrow_00016.png b/res/drawable/launcheranimatedarrow_00016.png new file mode 100644 index 000000000..5b0b28649 Binary files /dev/null and b/res/drawable/launcheranimatedarrow_00016.png differ diff --git a/res/drawable/listitem_bg.xml b/res/drawable/listitem_bg.xml new file mode 100644 index 000000000..b81e995f8 --- /dev/null +++ b/res/drawable/listitem_bg.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/res/drawable/listitem_selector.xml b/res/drawable/listitem_selector.xml new file mode 100644 index 000000000..b81e995f8 --- /dev/null +++ b/res/drawable/listitem_selector.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/res/drawable/lock.png b/res/drawable/lock.png new file mode 100644 index 000000000..132ad858a Binary files /dev/null and b/res/drawable/lock.png differ diff --git a/res/drawable/none_00000.png b/res/drawable/none_00000.png new file mode 100644 index 000000000..280dbde5c Binary files /dev/null and b/res/drawable/none_00000.png differ diff --git a/res/drawable/none_00001.png b/res/drawable/none_00001.png new file mode 100644 index 000000000..9318c29d5 Binary files /dev/null and b/res/drawable/none_00001.png differ diff --git a/res/drawable/none_00002.png b/res/drawable/none_00002.png new file mode 100644 index 000000000..41288e9bf Binary files /dev/null and b/res/drawable/none_00002.png differ diff --git a/res/drawable/none_00003.png b/res/drawable/none_00003.png new file mode 100644 index 000000000..831375e36 Binary files /dev/null and b/res/drawable/none_00003.png differ diff --git a/res/drawable/none_00004.png b/res/drawable/none_00004.png new file mode 100644 index 000000000..0ab2c45ac Binary files /dev/null and b/res/drawable/none_00004.png differ diff --git a/res/drawable/none_00005.png b/res/drawable/none_00005.png new file mode 100644 index 000000000..3a3904cad Binary files /dev/null and b/res/drawable/none_00005.png differ diff --git a/res/drawable/none_00006.png b/res/drawable/none_00006.png new file mode 100644 index 000000000..012ed8a6a Binary files /dev/null and b/res/drawable/none_00006.png differ diff --git a/res/drawable/none_00007.png b/res/drawable/none_00007.png new file mode 100644 index 000000000..f72aa33a4 Binary files /dev/null and b/res/drawable/none_00007.png differ diff --git a/res/drawable/none_00008.png b/res/drawable/none_00008.png new file mode 100644 index 000000000..520df34dc Binary files /dev/null and b/res/drawable/none_00008.png differ diff --git a/res/drawable/none_00009.png b/res/drawable/none_00009.png new file mode 100644 index 000000000..d8ce1ca76 Binary files /dev/null and b/res/drawable/none_00009.png differ diff --git a/res/drawable/none_00010.png b/res/drawable/none_00010.png new file mode 100644 index 000000000..50ea44727 Binary files /dev/null and b/res/drawable/none_00010.png differ diff --git a/res/drawable/none_00011.png b/res/drawable/none_00011.png new file mode 100644 index 000000000..bb664bb06 Binary files /dev/null and b/res/drawable/none_00011.png differ diff --git a/res/drawable/none_00012.png b/res/drawable/none_00012.png new file mode 100644 index 000000000..ba415ccdb Binary files /dev/null and b/res/drawable/none_00012.png differ diff --git a/res/drawable/none_00013.png b/res/drawable/none_00013.png new file mode 100644 index 000000000..5727430ea Binary files /dev/null and b/res/drawable/none_00013.png differ diff --git a/res/drawable/none_00014.png b/res/drawable/none_00014.png new file mode 100644 index 000000000..8791adc7e Binary files /dev/null and b/res/drawable/none_00014.png differ diff --git a/res/drawable/none_00015.png b/res/drawable/none_00015.png new file mode 100644 index 000000000..07ae898fa Binary files /dev/null and b/res/drawable/none_00015.png differ diff --git a/res/drawable/none_00016.png b/res/drawable/none_00016.png new file mode 100644 index 000000000..61954a175 Binary files /dev/null and b/res/drawable/none_00016.png differ diff --git a/res/drawable/none_00017.png b/res/drawable/none_00017.png new file mode 100644 index 000000000..38d3b8c3a Binary files /dev/null and b/res/drawable/none_00017.png differ diff --git a/res/drawable/none_00018.png b/res/drawable/none_00018.png new file mode 100644 index 000000000..59af03174 Binary files /dev/null and b/res/drawable/none_00018.png differ diff --git a/res/drawable/none_00019.png b/res/drawable/none_00019.png new file mode 100644 index 000000000..6dbff8983 Binary files /dev/null and b/res/drawable/none_00019.png differ diff --git a/res/drawable/none_00020.png b/res/drawable/none_00020.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00020.png differ diff --git a/res/drawable/none_00021.png b/res/drawable/none_00021.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00021.png differ diff --git a/res/drawable/none_00022.png b/res/drawable/none_00022.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00022.png differ diff --git a/res/drawable/none_00023.png b/res/drawable/none_00023.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00023.png differ diff --git a/res/drawable/none_00024.png b/res/drawable/none_00024.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00024.png differ diff --git a/res/drawable/none_00025.png b/res/drawable/none_00025.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00025.png differ diff --git a/res/drawable/none_00026.png b/res/drawable/none_00026.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00026.png differ diff --git a/res/drawable/none_00027.png b/res/drawable/none_00027.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00027.png differ diff --git a/res/drawable/none_00028.png b/res/drawable/none_00028.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00028.png differ diff --git a/res/drawable/none_00029.png b/res/drawable/none_00029.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00029.png differ diff --git a/res/drawable/none_00030.png b/res/drawable/none_00030.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00030.png differ diff --git a/res/drawable/none_00031.png b/res/drawable/none_00031.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00031.png differ diff --git a/res/drawable/none_00032.png b/res/drawable/none_00032.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00032.png differ diff --git a/res/drawable/none_00033.png b/res/drawable/none_00033.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00033.png differ diff --git a/res/drawable/none_00034.png b/res/drawable/none_00034.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00034.png differ diff --git a/res/drawable/none_00035.png b/res/drawable/none_00035.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00035.png differ diff --git a/res/drawable/none_00036.png b/res/drawable/none_00036.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00036.png differ diff --git a/res/drawable/none_00037.png b/res/drawable/none_00037.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00037.png differ diff --git a/res/drawable/none_00038.png b/res/drawable/none_00038.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00038.png differ diff --git a/res/drawable/none_00039.png b/res/drawable/none_00039.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00039.png differ diff --git a/res/drawable/none_00040.png b/res/drawable/none_00040.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00040.png differ diff --git a/res/drawable/none_00041.png b/res/drawable/none_00041.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00041.png differ diff --git a/res/drawable/none_00042.png b/res/drawable/none_00042.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00042.png differ diff --git a/res/drawable/none_00043.png b/res/drawable/none_00043.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00043.png differ diff --git a/res/drawable/none_00044.png b/res/drawable/none_00044.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00044.png differ diff --git a/res/drawable/none_00045.png b/res/drawable/none_00045.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00045.png differ diff --git a/res/drawable/none_00046.png b/res/drawable/none_00046.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00046.png differ diff --git a/res/drawable/none_00047.png b/res/drawable/none_00047.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00047.png differ diff --git a/res/drawable/none_00048.png b/res/drawable/none_00048.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00048.png differ diff --git a/res/drawable/none_00049.png b/res/drawable/none_00049.png new file mode 100644 index 000000000..cbcff0391 Binary files /dev/null and b/res/drawable/none_00049.png differ diff --git a/res/drawable/overview_00000.png b/res/drawable/overview_00000.png new file mode 100644 index 000000000..e000c6108 Binary files /dev/null and b/res/drawable/overview_00000.png differ diff --git a/res/drawable/overview_00001.png b/res/drawable/overview_00001.png new file mode 100644 index 000000000..ee52cae5e Binary files /dev/null and b/res/drawable/overview_00001.png differ diff --git a/res/drawable/overview_00002.png b/res/drawable/overview_00002.png new file mode 100644 index 000000000..401629303 Binary files /dev/null and b/res/drawable/overview_00002.png differ diff --git a/res/drawable/overview_00003.png b/res/drawable/overview_00003.png new file mode 100644 index 000000000..9fce3248f Binary files /dev/null and b/res/drawable/overview_00003.png differ diff --git a/res/drawable/overview_00004.png b/res/drawable/overview_00004.png new file mode 100644 index 000000000..6089f3611 Binary files /dev/null and b/res/drawable/overview_00004.png differ diff --git a/res/drawable/overview_00005.png b/res/drawable/overview_00005.png new file mode 100644 index 000000000..0195e61d5 Binary files /dev/null and b/res/drawable/overview_00005.png differ diff --git a/res/drawable/overview_00006.png b/res/drawable/overview_00006.png new file mode 100644 index 000000000..c91cc1ede Binary files /dev/null and b/res/drawable/overview_00006.png differ diff --git a/res/drawable/overview_00007.png b/res/drawable/overview_00007.png new file mode 100644 index 000000000..ca57ff22c Binary files /dev/null and b/res/drawable/overview_00007.png differ diff --git a/res/drawable/overview_00008.png b/res/drawable/overview_00008.png new file mode 100644 index 000000000..c42692f20 Binary files /dev/null and b/res/drawable/overview_00008.png differ diff --git a/res/drawable/overview_00009.png b/res/drawable/overview_00009.png new file mode 100644 index 000000000..e38b36827 Binary files /dev/null and b/res/drawable/overview_00009.png differ diff --git a/res/drawable/overview_00010.png b/res/drawable/overview_00010.png new file mode 100644 index 000000000..4416302f8 Binary files /dev/null and b/res/drawable/overview_00010.png differ diff --git a/res/drawable/overview_00011.png b/res/drawable/overview_00011.png new file mode 100644 index 000000000..013cdec94 Binary files /dev/null and b/res/drawable/overview_00011.png differ diff --git a/res/drawable/overview_00012.png b/res/drawable/overview_00012.png new file mode 100644 index 000000000..fe08ca75d Binary files /dev/null and b/res/drawable/overview_00012.png differ diff --git a/res/drawable/overview_00013.png b/res/drawable/overview_00013.png new file mode 100644 index 000000000..4907c3715 Binary files /dev/null and b/res/drawable/overview_00013.png differ diff --git a/res/drawable/overview_00014.png b/res/drawable/overview_00014.png new file mode 100644 index 000000000..26acf47bc Binary files /dev/null and b/res/drawable/overview_00014.png differ diff --git a/res/drawable/overview_00015.png b/res/drawable/overview_00015.png new file mode 100644 index 000000000..258059ae2 Binary files /dev/null and b/res/drawable/overview_00015.png differ diff --git a/res/drawable/overview_00016.png b/res/drawable/overview_00016.png new file mode 100644 index 000000000..8c164c139 Binary files /dev/null and b/res/drawable/overview_00016.png differ diff --git a/res/drawable/overview_00017.png b/res/drawable/overview_00017.png new file mode 100644 index 000000000..dd1df3330 Binary files /dev/null and b/res/drawable/overview_00017.png differ diff --git a/res/drawable/overview_00018.png b/res/drawable/overview_00018.png new file mode 100644 index 000000000..b3e54a3e6 Binary files /dev/null and b/res/drawable/overview_00018.png differ diff --git a/res/drawable/overview_00019.png b/res/drawable/overview_00019.png new file mode 100644 index 000000000..5a0b1cbc1 Binary files /dev/null and b/res/drawable/overview_00019.png differ diff --git a/res/drawable/overview_00020.png b/res/drawable/overview_00020.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00020.png differ diff --git a/res/drawable/overview_00021.png b/res/drawable/overview_00021.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00021.png differ diff --git a/res/drawable/overview_00022.png b/res/drawable/overview_00022.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00022.png differ diff --git a/res/drawable/overview_00023.png b/res/drawable/overview_00023.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00023.png differ diff --git a/res/drawable/overview_00024.png b/res/drawable/overview_00024.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00024.png differ diff --git a/res/drawable/overview_00025.png b/res/drawable/overview_00025.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00025.png differ diff --git a/res/drawable/overview_00026.png b/res/drawable/overview_00026.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00026.png differ diff --git a/res/drawable/overview_00027.png b/res/drawable/overview_00027.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00027.png differ diff --git a/res/drawable/overview_00028.png b/res/drawable/overview_00028.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00028.png differ diff --git a/res/drawable/overview_00029.png b/res/drawable/overview_00029.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00029.png differ diff --git a/res/drawable/overview_00030.png b/res/drawable/overview_00030.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00030.png differ diff --git a/res/drawable/overview_00031.png b/res/drawable/overview_00031.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00031.png differ diff --git a/res/drawable/overview_00032.png b/res/drawable/overview_00032.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00032.png differ diff --git a/res/drawable/overview_00033.png b/res/drawable/overview_00033.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00033.png differ diff --git a/res/drawable/overview_00034.png b/res/drawable/overview_00034.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00034.png differ diff --git a/res/drawable/overview_00035.png b/res/drawable/overview_00035.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00035.png differ diff --git a/res/drawable/overview_00036.png b/res/drawable/overview_00036.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00036.png differ diff --git a/res/drawable/overview_00037.png b/res/drawable/overview_00037.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00037.png differ diff --git a/res/drawable/overview_00038.png b/res/drawable/overview_00038.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00038.png differ diff --git a/res/drawable/overview_00039.png b/res/drawable/overview_00039.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00039.png differ diff --git a/res/drawable/overview_00040.png b/res/drawable/overview_00040.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00040.png differ diff --git a/res/drawable/overview_00041.png b/res/drawable/overview_00041.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00041.png differ diff --git a/res/drawable/overview_00042.png b/res/drawable/overview_00042.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00042.png differ diff --git a/res/drawable/overview_00043.png b/res/drawable/overview_00043.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00043.png differ diff --git a/res/drawable/overview_00044.png b/res/drawable/overview_00044.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00044.png differ diff --git a/res/drawable/overview_00045.png b/res/drawable/overview_00045.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00045.png differ diff --git a/res/drawable/overview_00046.png b/res/drawable/overview_00046.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00046.png differ diff --git a/res/drawable/overview_00047.png b/res/drawable/overview_00047.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00047.png differ diff --git a/res/drawable/overview_00048.png b/res/drawable/overview_00048.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00048.png differ diff --git a/res/drawable/overview_00049.png b/res/drawable/overview_00049.png new file mode 100644 index 000000000..a54f07a80 Binary files /dev/null and b/res/drawable/overview_00049.png differ diff --git a/res/drawable/rotatedown_00000.png b/res/drawable/rotatedown_00000.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00000.png differ diff --git a/res/drawable/rotatedown_00001.png b/res/drawable/rotatedown_00001.png new file mode 100644 index 000000000..98f1b6761 Binary files /dev/null and b/res/drawable/rotatedown_00001.png differ diff --git a/res/drawable/rotatedown_00002.png b/res/drawable/rotatedown_00002.png new file mode 100644 index 000000000..927f5d1a5 Binary files /dev/null and b/res/drawable/rotatedown_00002.png differ diff --git a/res/drawable/rotatedown_00003.png b/res/drawable/rotatedown_00003.png new file mode 100644 index 000000000..fcb6f47e3 Binary files /dev/null and b/res/drawable/rotatedown_00003.png differ diff --git a/res/drawable/rotatedown_00004.png b/res/drawable/rotatedown_00004.png new file mode 100644 index 000000000..16797d611 Binary files /dev/null and b/res/drawable/rotatedown_00004.png differ diff --git a/res/drawable/rotatedown_00005.png b/res/drawable/rotatedown_00005.png new file mode 100644 index 000000000..4c43eb8b6 Binary files /dev/null and b/res/drawable/rotatedown_00005.png differ diff --git a/res/drawable/rotatedown_00006.png b/res/drawable/rotatedown_00006.png new file mode 100644 index 000000000..2f03ec42b Binary files /dev/null and b/res/drawable/rotatedown_00006.png differ diff --git a/res/drawable/rotatedown_00007.png b/res/drawable/rotatedown_00007.png new file mode 100644 index 000000000..6a6d080b8 Binary files /dev/null and b/res/drawable/rotatedown_00007.png differ diff --git a/res/drawable/rotatedown_00008.png b/res/drawable/rotatedown_00008.png new file mode 100644 index 000000000..bf9f3103f Binary files /dev/null and b/res/drawable/rotatedown_00008.png differ diff --git a/res/drawable/rotatedown_00009.png b/res/drawable/rotatedown_00009.png new file mode 100644 index 000000000..f911bf4bc Binary files /dev/null and b/res/drawable/rotatedown_00009.png differ diff --git a/res/drawable/rotatedown_00010.png b/res/drawable/rotatedown_00010.png new file mode 100644 index 000000000..f84dd2051 Binary files /dev/null and b/res/drawable/rotatedown_00010.png differ diff --git a/res/drawable/rotatedown_00011.png b/res/drawable/rotatedown_00011.png new file mode 100644 index 000000000..7106a7db8 Binary files /dev/null and b/res/drawable/rotatedown_00011.png differ diff --git a/res/drawable/rotatedown_00012.png b/res/drawable/rotatedown_00012.png new file mode 100644 index 000000000..13cd0b2c6 Binary files /dev/null and b/res/drawable/rotatedown_00012.png differ diff --git a/res/drawable/rotatedown_00013.png b/res/drawable/rotatedown_00013.png new file mode 100644 index 000000000..4589bf263 Binary files /dev/null and b/res/drawable/rotatedown_00013.png differ diff --git a/res/drawable/rotatedown_00014.png b/res/drawable/rotatedown_00014.png new file mode 100644 index 000000000..6b59e5d07 Binary files /dev/null and b/res/drawable/rotatedown_00014.png differ diff --git a/res/drawable/rotatedown_00015.png b/res/drawable/rotatedown_00015.png new file mode 100644 index 000000000..890746b83 Binary files /dev/null and b/res/drawable/rotatedown_00015.png differ diff --git a/res/drawable/rotatedown_00016.png b/res/drawable/rotatedown_00016.png new file mode 100644 index 000000000..56d9e2343 Binary files /dev/null and b/res/drawable/rotatedown_00016.png differ diff --git a/res/drawable/rotatedown_00017.png b/res/drawable/rotatedown_00017.png new file mode 100644 index 000000000..d2d80406c Binary files /dev/null and b/res/drawable/rotatedown_00017.png differ diff --git a/res/drawable/rotatedown_00018.png b/res/drawable/rotatedown_00018.png new file mode 100644 index 000000000..43afa3ed8 Binary files /dev/null and b/res/drawable/rotatedown_00018.png differ diff --git a/res/drawable/rotatedown_00019.png b/res/drawable/rotatedown_00019.png new file mode 100644 index 000000000..4c6ec9095 Binary files /dev/null and b/res/drawable/rotatedown_00019.png differ diff --git a/res/drawable/rotatedown_00020.png b/res/drawable/rotatedown_00020.png new file mode 100644 index 000000000..2cfdd90ee Binary files /dev/null and b/res/drawable/rotatedown_00020.png differ diff --git a/res/drawable/rotatedown_00021.png b/res/drawable/rotatedown_00021.png new file mode 100644 index 000000000..a54e05333 Binary files /dev/null and b/res/drawable/rotatedown_00021.png differ diff --git a/res/drawable/rotatedown_00022.png b/res/drawable/rotatedown_00022.png new file mode 100644 index 000000000..7f9c0214c Binary files /dev/null and b/res/drawable/rotatedown_00022.png differ diff --git a/res/drawable/rotatedown_00023.png b/res/drawable/rotatedown_00023.png new file mode 100644 index 000000000..86c20dfbd Binary files /dev/null and b/res/drawable/rotatedown_00023.png differ diff --git a/res/drawable/rotatedown_00024.png b/res/drawable/rotatedown_00024.png new file mode 100644 index 000000000..cacf6274b Binary files /dev/null and b/res/drawable/rotatedown_00024.png differ diff --git a/res/drawable/rotatedown_00025.png b/res/drawable/rotatedown_00025.png new file mode 100644 index 000000000..f80765d5b Binary files /dev/null and b/res/drawable/rotatedown_00025.png differ diff --git a/res/drawable/rotatedown_00026.png b/res/drawable/rotatedown_00026.png new file mode 100644 index 000000000..cb0714379 Binary files /dev/null and b/res/drawable/rotatedown_00026.png differ diff --git a/res/drawable/rotatedown_00027.png b/res/drawable/rotatedown_00027.png new file mode 100644 index 000000000..4f5639729 Binary files /dev/null and b/res/drawable/rotatedown_00027.png differ diff --git a/res/drawable/rotatedown_00028.png b/res/drawable/rotatedown_00028.png new file mode 100644 index 000000000..b1b114e5c Binary files /dev/null and b/res/drawable/rotatedown_00028.png differ diff --git a/res/drawable/rotatedown_00029.png b/res/drawable/rotatedown_00029.png new file mode 100644 index 000000000..b20104e93 Binary files /dev/null and b/res/drawable/rotatedown_00029.png differ diff --git a/res/drawable/rotatedown_00030.png b/res/drawable/rotatedown_00030.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00030.png differ diff --git a/res/drawable/rotatedown_00031.png b/res/drawable/rotatedown_00031.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00031.png differ diff --git a/res/drawable/rotatedown_00032.png b/res/drawable/rotatedown_00032.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00032.png differ diff --git a/res/drawable/rotatedown_00033.png b/res/drawable/rotatedown_00033.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00033.png differ diff --git a/res/drawable/rotatedown_00034.png b/res/drawable/rotatedown_00034.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00034.png differ diff --git a/res/drawable/rotatedown_00035.png b/res/drawable/rotatedown_00035.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00035.png differ diff --git a/res/drawable/rotatedown_00036.png b/res/drawable/rotatedown_00036.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00036.png differ diff --git a/res/drawable/rotatedown_00037.png b/res/drawable/rotatedown_00037.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00037.png differ diff --git a/res/drawable/rotatedown_00038.png b/res/drawable/rotatedown_00038.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00038.png differ diff --git a/res/drawable/rotatedown_00039.png b/res/drawable/rotatedown_00039.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00039.png differ diff --git a/res/drawable/rotatedown_00040.png b/res/drawable/rotatedown_00040.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00040.png differ diff --git a/res/drawable/rotatedown_00041.png b/res/drawable/rotatedown_00041.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00041.png differ diff --git a/res/drawable/rotatedown_00042.png b/res/drawable/rotatedown_00042.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00042.png differ diff --git a/res/drawable/rotatedown_00043.png b/res/drawable/rotatedown_00043.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00043.png differ diff --git a/res/drawable/rotatedown_00044.png b/res/drawable/rotatedown_00044.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00044.png differ diff --git a/res/drawable/rotatedown_00045.png b/res/drawable/rotatedown_00045.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00045.png differ diff --git a/res/drawable/rotatedown_00046.png b/res/drawable/rotatedown_00046.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00046.png differ diff --git a/res/drawable/rotatedown_00047.png b/res/drawable/rotatedown_00047.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00047.png differ diff --git a/res/drawable/rotatedown_00048.png b/res/drawable/rotatedown_00048.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00048.png differ diff --git a/res/drawable/rotatedown_00049.png b/res/drawable/rotatedown_00049.png new file mode 100644 index 000000000..07ccb92e0 Binary files /dev/null and b/res/drawable/rotatedown_00049.png differ diff --git a/res/drawable/rotateup_00000.png b/res/drawable/rotateup_00000.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00000.png differ diff --git a/res/drawable/rotateup_00001.png b/res/drawable/rotateup_00001.png new file mode 100644 index 000000000..d43792b1d Binary files /dev/null and b/res/drawable/rotateup_00001.png differ diff --git a/res/drawable/rotateup_00002.png b/res/drawable/rotateup_00002.png new file mode 100644 index 000000000..f77000771 Binary files /dev/null and b/res/drawable/rotateup_00002.png differ diff --git a/res/drawable/rotateup_00003.png b/res/drawable/rotateup_00003.png new file mode 100644 index 000000000..f5c2493b6 Binary files /dev/null and b/res/drawable/rotateup_00003.png differ diff --git a/res/drawable/rotateup_00004.png b/res/drawable/rotateup_00004.png new file mode 100644 index 000000000..b84318252 Binary files /dev/null and b/res/drawable/rotateup_00004.png differ diff --git a/res/drawable/rotateup_00005.png b/res/drawable/rotateup_00005.png new file mode 100644 index 000000000..342b3f9ae Binary files /dev/null and b/res/drawable/rotateup_00005.png differ diff --git a/res/drawable/rotateup_00006.png b/res/drawable/rotateup_00006.png new file mode 100644 index 000000000..cbf69d75e Binary files /dev/null and b/res/drawable/rotateup_00006.png differ diff --git a/res/drawable/rotateup_00007.png b/res/drawable/rotateup_00007.png new file mode 100644 index 000000000..8826db503 Binary files /dev/null and b/res/drawable/rotateup_00007.png differ diff --git a/res/drawable/rotateup_00008.png b/res/drawable/rotateup_00008.png new file mode 100644 index 000000000..6c363edaa Binary files /dev/null and b/res/drawable/rotateup_00008.png differ diff --git a/res/drawable/rotateup_00009.png b/res/drawable/rotateup_00009.png new file mode 100644 index 000000000..48e289034 Binary files /dev/null and b/res/drawable/rotateup_00009.png differ diff --git a/res/drawable/rotateup_00010.png b/res/drawable/rotateup_00010.png new file mode 100644 index 000000000..5749ccd29 Binary files /dev/null and b/res/drawable/rotateup_00010.png differ diff --git a/res/drawable/rotateup_00011.png b/res/drawable/rotateup_00011.png new file mode 100644 index 000000000..2a0463c92 Binary files /dev/null and b/res/drawable/rotateup_00011.png differ diff --git a/res/drawable/rotateup_00012.png b/res/drawable/rotateup_00012.png new file mode 100644 index 000000000..9bcfa09d4 Binary files /dev/null and b/res/drawable/rotateup_00012.png differ diff --git a/res/drawable/rotateup_00013.png b/res/drawable/rotateup_00013.png new file mode 100644 index 000000000..bc4ebb9db Binary files /dev/null and b/res/drawable/rotateup_00013.png differ diff --git a/res/drawable/rotateup_00014.png b/res/drawable/rotateup_00014.png new file mode 100644 index 000000000..181456805 Binary files /dev/null and b/res/drawable/rotateup_00014.png differ diff --git a/res/drawable/rotateup_00015.png b/res/drawable/rotateup_00015.png new file mode 100644 index 000000000..48c34408b Binary files /dev/null and b/res/drawable/rotateup_00015.png differ diff --git a/res/drawable/rotateup_00016.png b/res/drawable/rotateup_00016.png new file mode 100644 index 000000000..772a31d6a Binary files /dev/null and b/res/drawable/rotateup_00016.png differ diff --git a/res/drawable/rotateup_00017.png b/res/drawable/rotateup_00017.png new file mode 100644 index 000000000..ddad38c9e Binary files /dev/null and b/res/drawable/rotateup_00017.png differ diff --git a/res/drawable/rotateup_00018.png b/res/drawable/rotateup_00018.png new file mode 100644 index 000000000..a401751be Binary files /dev/null and b/res/drawable/rotateup_00018.png differ diff --git a/res/drawable/rotateup_00019.png b/res/drawable/rotateup_00019.png new file mode 100644 index 000000000..2091c5e6e Binary files /dev/null and b/res/drawable/rotateup_00019.png differ diff --git a/res/drawable/rotateup_00020.png b/res/drawable/rotateup_00020.png new file mode 100644 index 000000000..61ca3b246 Binary files /dev/null and b/res/drawable/rotateup_00020.png differ diff --git a/res/drawable/rotateup_00021.png b/res/drawable/rotateup_00021.png new file mode 100644 index 000000000..27c4258f3 Binary files /dev/null and b/res/drawable/rotateup_00021.png differ diff --git a/res/drawable/rotateup_00022.png b/res/drawable/rotateup_00022.png new file mode 100644 index 000000000..6f158ba2f Binary files /dev/null and b/res/drawable/rotateup_00022.png differ diff --git a/res/drawable/rotateup_00023.png b/res/drawable/rotateup_00023.png new file mode 100644 index 000000000..6a0a4dae0 Binary files /dev/null and b/res/drawable/rotateup_00023.png differ diff --git a/res/drawable/rotateup_00024.png b/res/drawable/rotateup_00024.png new file mode 100644 index 000000000..cdfde2a76 Binary files /dev/null and b/res/drawable/rotateup_00024.png differ diff --git a/res/drawable/rotateup_00025.png b/res/drawable/rotateup_00025.png new file mode 100644 index 000000000..2ac9ffa0e Binary files /dev/null and b/res/drawable/rotateup_00025.png differ diff --git a/res/drawable/rotateup_00026.png b/res/drawable/rotateup_00026.png new file mode 100644 index 000000000..2e41a9719 Binary files /dev/null and b/res/drawable/rotateup_00026.png differ diff --git a/res/drawable/rotateup_00027.png b/res/drawable/rotateup_00027.png new file mode 100644 index 000000000..fc68c10aa Binary files /dev/null and b/res/drawable/rotateup_00027.png differ diff --git a/res/drawable/rotateup_00028.png b/res/drawable/rotateup_00028.png new file mode 100644 index 000000000..cc5fb9c28 Binary files /dev/null and b/res/drawable/rotateup_00028.png differ diff --git a/res/drawable/rotateup_00029.png b/res/drawable/rotateup_00029.png new file mode 100644 index 000000000..43ef7a180 Binary files /dev/null and b/res/drawable/rotateup_00029.png differ diff --git a/res/drawable/rotateup_00030.png b/res/drawable/rotateup_00030.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00030.png differ diff --git a/res/drawable/rotateup_00031.png b/res/drawable/rotateup_00031.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00031.png differ diff --git a/res/drawable/rotateup_00032.png b/res/drawable/rotateup_00032.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00032.png differ diff --git a/res/drawable/rotateup_00033.png b/res/drawable/rotateup_00033.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00033.png differ diff --git a/res/drawable/rotateup_00034.png b/res/drawable/rotateup_00034.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00034.png differ diff --git a/res/drawable/rotateup_00035.png b/res/drawable/rotateup_00035.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00035.png differ diff --git a/res/drawable/rotateup_00036.png b/res/drawable/rotateup_00036.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00036.png differ diff --git a/res/drawable/rotateup_00037.png b/res/drawable/rotateup_00037.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00037.png differ diff --git a/res/drawable/rotateup_00038.png b/res/drawable/rotateup_00038.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00038.png differ diff --git a/res/drawable/rotateup_00039.png b/res/drawable/rotateup_00039.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00039.png differ diff --git a/res/drawable/rotateup_00040.png b/res/drawable/rotateup_00040.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00040.png differ diff --git a/res/drawable/rotateup_00041.png b/res/drawable/rotateup_00041.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00041.png differ diff --git a/res/drawable/rotateup_00042.png b/res/drawable/rotateup_00042.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00042.png differ diff --git a/res/drawable/rotateup_00043.png b/res/drawable/rotateup_00043.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00043.png differ diff --git a/res/drawable/rotateup_00044.png b/res/drawable/rotateup_00044.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00044.png differ diff --git a/res/drawable/rotateup_00045.png b/res/drawable/rotateup_00045.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00045.png differ diff --git a/res/drawable/rotateup_00046.png b/res/drawable/rotateup_00046.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00046.png differ diff --git a/res/drawable/rotateup_00047.png b/res/drawable/rotateup_00047.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00047.png differ diff --git a/res/drawable/rotateup_00048.png b/res/drawable/rotateup_00048.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00048.png differ diff --git a/res/drawable/rotateup_00049.png b/res/drawable/rotateup_00049.png new file mode 100644 index 000000000..75e575f94 Binary files /dev/null and b/res/drawable/rotateup_00049.png differ diff --git a/res/drawable/stack_00000.png b/res/drawable/stack_00000.png new file mode 100644 index 000000000..b7e7f0bd2 Binary files /dev/null and b/res/drawable/stack_00000.png differ diff --git a/res/drawable/stack_00001.png b/res/drawable/stack_00001.png new file mode 100644 index 000000000..8b7f3a564 Binary files /dev/null and b/res/drawable/stack_00001.png differ diff --git a/res/drawable/stack_00002.png b/res/drawable/stack_00002.png new file mode 100644 index 000000000..c9e3aed80 Binary files /dev/null and b/res/drawable/stack_00002.png differ diff --git a/res/drawable/stack_00003.png b/res/drawable/stack_00003.png new file mode 100644 index 000000000..565f69b99 Binary files /dev/null and b/res/drawable/stack_00003.png differ diff --git a/res/drawable/stack_00004.png b/res/drawable/stack_00004.png new file mode 100644 index 000000000..2726dacc4 Binary files /dev/null and b/res/drawable/stack_00004.png differ diff --git a/res/drawable/stack_00005.png b/res/drawable/stack_00005.png new file mode 100644 index 000000000..266f1dcc0 Binary files /dev/null and b/res/drawable/stack_00005.png differ diff --git a/res/drawable/stack_00006.png b/res/drawable/stack_00006.png new file mode 100644 index 000000000..f26c0d042 Binary files /dev/null and b/res/drawable/stack_00006.png differ diff --git a/res/drawable/stack_00007.png b/res/drawable/stack_00007.png new file mode 100644 index 000000000..f6bd36217 Binary files /dev/null and b/res/drawable/stack_00007.png differ diff --git a/res/drawable/stack_00008.png b/res/drawable/stack_00008.png new file mode 100644 index 000000000..d9c20d803 Binary files /dev/null and b/res/drawable/stack_00008.png differ diff --git a/res/drawable/stack_00009.png b/res/drawable/stack_00009.png new file mode 100644 index 000000000..54620e210 Binary files /dev/null and b/res/drawable/stack_00009.png differ diff --git a/res/drawable/stack_00010.png b/res/drawable/stack_00010.png new file mode 100644 index 000000000..7ec4b8719 Binary files /dev/null and b/res/drawable/stack_00010.png differ diff --git a/res/drawable/stack_00011.png b/res/drawable/stack_00011.png new file mode 100644 index 000000000..300b98ac6 Binary files /dev/null and b/res/drawable/stack_00011.png differ diff --git a/res/drawable/stack_00012.png b/res/drawable/stack_00012.png new file mode 100644 index 000000000..eae0e919a Binary files /dev/null and b/res/drawable/stack_00012.png differ diff --git a/res/drawable/stack_00013.png b/res/drawable/stack_00013.png new file mode 100644 index 000000000..fa24d7461 Binary files /dev/null and b/res/drawable/stack_00013.png differ diff --git a/res/drawable/stack_00014.png b/res/drawable/stack_00014.png new file mode 100644 index 000000000..ad0a8108c Binary files /dev/null and b/res/drawable/stack_00014.png differ diff --git a/res/drawable/stack_00015.png b/res/drawable/stack_00015.png new file mode 100644 index 000000000..125950961 Binary files /dev/null and b/res/drawable/stack_00015.png differ diff --git a/res/drawable/stack_00016.png b/res/drawable/stack_00016.png new file mode 100644 index 000000000..cc0e9076b Binary files /dev/null and b/res/drawable/stack_00016.png differ diff --git a/res/drawable/stack_00017.png b/res/drawable/stack_00017.png new file mode 100644 index 000000000..174165b54 Binary files /dev/null and b/res/drawable/stack_00017.png differ diff --git a/res/drawable/stack_00018.png b/res/drawable/stack_00018.png new file mode 100644 index 000000000..0fb9cea69 Binary files /dev/null and b/res/drawable/stack_00018.png differ diff --git a/res/drawable/stack_00019.png b/res/drawable/stack_00019.png new file mode 100644 index 000000000..4a66a8fda Binary files /dev/null and b/res/drawable/stack_00019.png differ diff --git a/res/drawable/stack_00020.png b/res/drawable/stack_00020.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00020.png differ diff --git a/res/drawable/stack_00021.png b/res/drawable/stack_00021.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00021.png differ diff --git a/res/drawable/stack_00022.png b/res/drawable/stack_00022.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00022.png differ diff --git a/res/drawable/stack_00023.png b/res/drawable/stack_00023.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00023.png differ diff --git a/res/drawable/stack_00024.png b/res/drawable/stack_00024.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00024.png differ diff --git a/res/drawable/stack_00025.png b/res/drawable/stack_00025.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00025.png differ diff --git a/res/drawable/stack_00026.png b/res/drawable/stack_00026.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00026.png differ diff --git a/res/drawable/stack_00027.png b/res/drawable/stack_00027.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00027.png differ diff --git a/res/drawable/stack_00028.png b/res/drawable/stack_00028.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00028.png differ diff --git a/res/drawable/stack_00029.png b/res/drawable/stack_00029.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00029.png differ diff --git a/res/drawable/stack_00030.png b/res/drawable/stack_00030.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00030.png differ diff --git a/res/drawable/stack_00031.png b/res/drawable/stack_00031.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00031.png differ diff --git a/res/drawable/stack_00032.png b/res/drawable/stack_00032.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00032.png differ diff --git a/res/drawable/stack_00033.png b/res/drawable/stack_00033.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00033.png differ diff --git a/res/drawable/stack_00034.png b/res/drawable/stack_00034.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00034.png differ diff --git a/res/drawable/stack_00035.png b/res/drawable/stack_00035.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00035.png differ diff --git a/res/drawable/stack_00036.png b/res/drawable/stack_00036.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00036.png differ diff --git a/res/drawable/stack_00037.png b/res/drawable/stack_00037.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00037.png differ diff --git a/res/drawable/stack_00038.png b/res/drawable/stack_00038.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00038.png differ diff --git a/res/drawable/stack_00039.png b/res/drawable/stack_00039.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00039.png differ diff --git a/res/drawable/stack_00040.png b/res/drawable/stack_00040.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00040.png differ diff --git a/res/drawable/stack_00041.png b/res/drawable/stack_00041.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00041.png differ diff --git a/res/drawable/stack_00042.png b/res/drawable/stack_00042.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00042.png differ diff --git a/res/drawable/stack_00043.png b/res/drawable/stack_00043.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00043.png differ diff --git a/res/drawable/stack_00044.png b/res/drawable/stack_00044.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00044.png differ diff --git a/res/drawable/stack_00045.png b/res/drawable/stack_00045.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00045.png differ diff --git a/res/drawable/stack_00046.png b/res/drawable/stack_00046.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00046.png differ diff --git a/res/drawable/stack_00047.png b/res/drawable/stack_00047.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00047.png differ diff --git a/res/drawable/stack_00048.png b/res/drawable/stack_00048.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00048.png differ diff --git a/res/drawable/stack_00049.png b/res/drawable/stack_00049.png new file mode 100644 index 000000000..ebe970d76 Binary files /dev/null and b/res/drawable/stack_00049.png differ diff --git a/res/drawable/themes_button.xml b/res/drawable/themes_button.xml new file mode 100644 index 000000000..3006b9a6e --- /dev/null +++ b/res/drawable/themes_button.xml @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/res/drawable/transition_accordion.xml b/res/drawable/transition_accordion.xml new file mode 100644 index 000000000..5650ba2e6 --- /dev/null +++ b/res/drawable/transition_accordion.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_arrow.xml b/res/drawable/transition_arrow.xml new file mode 100644 index 000000000..540db93d8 --- /dev/null +++ b/res/drawable/transition_arrow.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_arrow_reverse.xml b/res/drawable/transition_arrow_reverse.xml new file mode 100644 index 000000000..855f08fb4 --- /dev/null +++ b/res/drawable/transition_arrow_reverse.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_carousel.xml b/res/drawable/transition_carousel.xml new file mode 100644 index 000000000..bebb5c006 --- /dev/null +++ b/res/drawable/transition_carousel.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_cubein.xml b/res/drawable/transition_cubein.xml new file mode 100644 index 000000000..b5a9321f3 --- /dev/null +++ b/res/drawable/transition_cubein.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_cubeout.xml b/res/drawable/transition_cubeout.xml new file mode 100644 index 000000000..c8694bb6f --- /dev/null +++ b/res/drawable/transition_cubeout.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_cylinderin.xml b/res/drawable/transition_cylinderin.xml new file mode 100644 index 000000000..e51d32e9c --- /dev/null +++ b/res/drawable/transition_cylinderin.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_cylinderout.xml b/res/drawable/transition_cylinderout.xml new file mode 100644 index 000000000..451964ee2 --- /dev/null +++ b/res/drawable/transition_cylinderout.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_flip.xml b/res/drawable/transition_flip.xml new file mode 100644 index 000000000..30897202e --- /dev/null +++ b/res/drawable/transition_flip.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_none.xml b/res/drawable/transition_none.xml new file mode 100644 index 000000000..e357939b5 --- /dev/null +++ b/res/drawable/transition_none.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_overview.xml b/res/drawable/transition_overview.xml new file mode 100644 index 000000000..47dac7d92 --- /dev/null +++ b/res/drawable/transition_overview.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_rotatedown.xml b/res/drawable/transition_rotatedown.xml new file mode 100644 index 000000000..f05f71003 --- /dev/null +++ b/res/drawable/transition_rotatedown.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_rotateup.xml b/res/drawable/transition_rotateup.xml new file mode 100644 index 000000000..3a2e8fa8e --- /dev/null +++ b/res/drawable/transition_rotateup.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_stack.xml b/res/drawable/transition_stack.xml new file mode 100644 index 000000000..1483a1bae --- /dev/null +++ b/res/drawable/transition_stack.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_zoomin.xml b/res/drawable/transition_zoomin.xml new file mode 100644 index 000000000..cf76e5312 --- /dev/null +++ b/res/drawable/transition_zoomin.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/transition_zoomout.xml b/res/drawable/transition_zoomout.xml new file mode 100644 index 000000000..1acdb0c94 --- /dev/null +++ b/res/drawable/transition_zoomout.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/zoomin_00000.png b/res/drawable/zoomin_00000.png new file mode 100644 index 000000000..f48138061 Binary files /dev/null and b/res/drawable/zoomin_00000.png differ diff --git a/res/drawable/zoomin_00001.png b/res/drawable/zoomin_00001.png new file mode 100644 index 000000000..d2f01b4d5 Binary files /dev/null and b/res/drawable/zoomin_00001.png differ diff --git a/res/drawable/zoomin_00002.png b/res/drawable/zoomin_00002.png new file mode 100644 index 000000000..f0bea7934 Binary files /dev/null and b/res/drawable/zoomin_00002.png differ diff --git a/res/drawable/zoomin_00003.png b/res/drawable/zoomin_00003.png new file mode 100644 index 000000000..23bd3d5ff Binary files /dev/null and b/res/drawable/zoomin_00003.png differ diff --git a/res/drawable/zoomin_00004.png b/res/drawable/zoomin_00004.png new file mode 100644 index 000000000..9f343a2dc Binary files /dev/null and b/res/drawable/zoomin_00004.png differ diff --git a/res/drawable/zoomin_00005.png b/res/drawable/zoomin_00005.png new file mode 100644 index 000000000..cf7d82ad5 Binary files /dev/null and b/res/drawable/zoomin_00005.png differ diff --git a/res/drawable/zoomin_00006.png b/res/drawable/zoomin_00006.png new file mode 100644 index 000000000..5043dfdab Binary files /dev/null and b/res/drawable/zoomin_00006.png differ diff --git a/res/drawable/zoomin_00007.png b/res/drawable/zoomin_00007.png new file mode 100644 index 000000000..013cbbf3c Binary files /dev/null and b/res/drawable/zoomin_00007.png differ diff --git a/res/drawable/zoomin_00008.png b/res/drawable/zoomin_00008.png new file mode 100644 index 000000000..d8acca68a Binary files /dev/null and b/res/drawable/zoomin_00008.png differ diff --git a/res/drawable/zoomin_00009.png b/res/drawable/zoomin_00009.png new file mode 100644 index 000000000..982aa00bf Binary files /dev/null and b/res/drawable/zoomin_00009.png differ diff --git a/res/drawable/zoomin_00010.png b/res/drawable/zoomin_00010.png new file mode 100644 index 000000000..7a5b96457 Binary files /dev/null and b/res/drawable/zoomin_00010.png differ diff --git a/res/drawable/zoomin_00011.png b/res/drawable/zoomin_00011.png new file mode 100644 index 000000000..94c374b3f Binary files /dev/null and b/res/drawable/zoomin_00011.png differ diff --git a/res/drawable/zoomin_00012.png b/res/drawable/zoomin_00012.png new file mode 100644 index 000000000..f4ca0cb6a Binary files /dev/null and b/res/drawable/zoomin_00012.png differ diff --git a/res/drawable/zoomin_00013.png b/res/drawable/zoomin_00013.png new file mode 100644 index 000000000..fbb30e04c Binary files /dev/null and b/res/drawable/zoomin_00013.png differ diff --git a/res/drawable/zoomin_00014.png b/res/drawable/zoomin_00014.png new file mode 100644 index 000000000..8e93f17c1 Binary files /dev/null and b/res/drawable/zoomin_00014.png differ diff --git a/res/drawable/zoomin_00015.png b/res/drawable/zoomin_00015.png new file mode 100644 index 000000000..bad7462a6 Binary files /dev/null and b/res/drawable/zoomin_00015.png differ diff --git a/res/drawable/zoomin_00016.png b/res/drawable/zoomin_00016.png new file mode 100644 index 000000000..282a8073f Binary files /dev/null and b/res/drawable/zoomin_00016.png differ diff --git a/res/drawable/zoomin_00017.png b/res/drawable/zoomin_00017.png new file mode 100644 index 000000000..ae94999f2 Binary files /dev/null and b/res/drawable/zoomin_00017.png differ diff --git a/res/drawable/zoomin_00018.png b/res/drawable/zoomin_00018.png new file mode 100644 index 000000000..3fcc59e52 Binary files /dev/null and b/res/drawable/zoomin_00018.png differ diff --git a/res/drawable/zoomin_00019.png b/res/drawable/zoomin_00019.png new file mode 100644 index 000000000..be9cfcbb3 Binary files /dev/null and b/res/drawable/zoomin_00019.png differ diff --git a/res/drawable/zoomin_00020.png b/res/drawable/zoomin_00020.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00020.png differ diff --git a/res/drawable/zoomin_00021.png b/res/drawable/zoomin_00021.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00021.png differ diff --git a/res/drawable/zoomin_00022.png b/res/drawable/zoomin_00022.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00022.png differ diff --git a/res/drawable/zoomin_00023.png b/res/drawable/zoomin_00023.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00023.png differ diff --git a/res/drawable/zoomin_00024.png b/res/drawable/zoomin_00024.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00024.png differ diff --git a/res/drawable/zoomin_00025.png b/res/drawable/zoomin_00025.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00025.png differ diff --git a/res/drawable/zoomin_00026.png b/res/drawable/zoomin_00026.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00026.png differ diff --git a/res/drawable/zoomin_00027.png b/res/drawable/zoomin_00027.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00027.png differ diff --git a/res/drawable/zoomin_00028.png b/res/drawable/zoomin_00028.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00028.png differ diff --git a/res/drawable/zoomin_00029.png b/res/drawable/zoomin_00029.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00029.png differ diff --git a/res/drawable/zoomin_00030.png b/res/drawable/zoomin_00030.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00030.png differ diff --git a/res/drawable/zoomin_00031.png b/res/drawable/zoomin_00031.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00031.png differ diff --git a/res/drawable/zoomin_00032.png b/res/drawable/zoomin_00032.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00032.png differ diff --git a/res/drawable/zoomin_00033.png b/res/drawable/zoomin_00033.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00033.png differ diff --git a/res/drawable/zoomin_00034.png b/res/drawable/zoomin_00034.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00034.png differ diff --git a/res/drawable/zoomin_00035.png b/res/drawable/zoomin_00035.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00035.png differ diff --git a/res/drawable/zoomin_00036.png b/res/drawable/zoomin_00036.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00036.png differ diff --git a/res/drawable/zoomin_00037.png b/res/drawable/zoomin_00037.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00037.png differ diff --git a/res/drawable/zoomin_00038.png b/res/drawable/zoomin_00038.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00038.png differ diff --git a/res/drawable/zoomin_00039.png b/res/drawable/zoomin_00039.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00039.png differ diff --git a/res/drawable/zoomin_00040.png b/res/drawable/zoomin_00040.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00040.png differ diff --git a/res/drawable/zoomin_00041.png b/res/drawable/zoomin_00041.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00041.png differ diff --git a/res/drawable/zoomin_00042.png b/res/drawable/zoomin_00042.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00042.png differ diff --git a/res/drawable/zoomin_00043.png b/res/drawable/zoomin_00043.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00043.png differ diff --git a/res/drawable/zoomin_00044.png b/res/drawable/zoomin_00044.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00044.png differ diff --git a/res/drawable/zoomin_00045.png b/res/drawable/zoomin_00045.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00045.png differ diff --git a/res/drawable/zoomin_00046.png b/res/drawable/zoomin_00046.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00046.png differ diff --git a/res/drawable/zoomin_00047.png b/res/drawable/zoomin_00047.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00047.png differ diff --git a/res/drawable/zoomin_00048.png b/res/drawable/zoomin_00048.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00048.png differ diff --git a/res/drawable/zoomin_00049.png b/res/drawable/zoomin_00049.png new file mode 100644 index 000000000..303e8f87f Binary files /dev/null and b/res/drawable/zoomin_00049.png differ diff --git a/res/drawable/zoomout_00000.png b/res/drawable/zoomout_00000.png new file mode 100644 index 000000000..94284f9b9 Binary files /dev/null and b/res/drawable/zoomout_00000.png differ diff --git a/res/drawable/zoomout_00001.png b/res/drawable/zoomout_00001.png new file mode 100644 index 000000000..8c2a2596a Binary files /dev/null and b/res/drawable/zoomout_00001.png differ diff --git a/res/drawable/zoomout_00002.png b/res/drawable/zoomout_00002.png new file mode 100644 index 000000000..e3c4cb49b Binary files /dev/null and b/res/drawable/zoomout_00002.png differ diff --git a/res/drawable/zoomout_00003.png b/res/drawable/zoomout_00003.png new file mode 100644 index 000000000..95af18d06 Binary files /dev/null and b/res/drawable/zoomout_00003.png differ diff --git a/res/drawable/zoomout_00004.png b/res/drawable/zoomout_00004.png new file mode 100644 index 000000000..4d8af9632 Binary files /dev/null and b/res/drawable/zoomout_00004.png differ diff --git a/res/drawable/zoomout_00005.png b/res/drawable/zoomout_00005.png new file mode 100644 index 000000000..6db1ab05a Binary files /dev/null and b/res/drawable/zoomout_00005.png differ diff --git a/res/drawable/zoomout_00006.png b/res/drawable/zoomout_00006.png new file mode 100644 index 000000000..277d8c4ac Binary files /dev/null and b/res/drawable/zoomout_00006.png differ diff --git a/res/drawable/zoomout_00007.png b/res/drawable/zoomout_00007.png new file mode 100644 index 000000000..4fe81f665 Binary files /dev/null and b/res/drawable/zoomout_00007.png differ diff --git a/res/drawable/zoomout_00008.png b/res/drawable/zoomout_00008.png new file mode 100644 index 000000000..fadd58a14 Binary files /dev/null and b/res/drawable/zoomout_00008.png differ diff --git a/res/drawable/zoomout_00009.png b/res/drawable/zoomout_00009.png new file mode 100644 index 000000000..5b6003e07 Binary files /dev/null and b/res/drawable/zoomout_00009.png differ diff --git a/res/drawable/zoomout_00010.png b/res/drawable/zoomout_00010.png new file mode 100644 index 000000000..b77a4f88b Binary files /dev/null and b/res/drawable/zoomout_00010.png differ diff --git a/res/drawable/zoomout_00011.png b/res/drawable/zoomout_00011.png new file mode 100644 index 000000000..85fbbb831 Binary files /dev/null and b/res/drawable/zoomout_00011.png differ diff --git a/res/drawable/zoomout_00012.png b/res/drawable/zoomout_00012.png new file mode 100644 index 000000000..eb8acb213 Binary files /dev/null and b/res/drawable/zoomout_00012.png differ diff --git a/res/drawable/zoomout_00013.png b/res/drawable/zoomout_00013.png new file mode 100644 index 000000000..3501c8514 Binary files /dev/null and b/res/drawable/zoomout_00013.png differ diff --git a/res/drawable/zoomout_00014.png b/res/drawable/zoomout_00014.png new file mode 100644 index 000000000..fd600be1b Binary files /dev/null and b/res/drawable/zoomout_00014.png differ diff --git a/res/drawable/zoomout_00015.png b/res/drawable/zoomout_00015.png new file mode 100644 index 000000000..b88c6bcd8 Binary files /dev/null and b/res/drawable/zoomout_00015.png differ diff --git a/res/drawable/zoomout_00016.png b/res/drawable/zoomout_00016.png new file mode 100644 index 000000000..c618a55fc Binary files /dev/null and b/res/drawable/zoomout_00016.png differ diff --git a/res/drawable/zoomout_00017.png b/res/drawable/zoomout_00017.png new file mode 100644 index 000000000..c54b0dc8f Binary files /dev/null and b/res/drawable/zoomout_00017.png differ diff --git a/res/drawable/zoomout_00018.png b/res/drawable/zoomout_00018.png new file mode 100644 index 000000000..8e974a18a Binary files /dev/null and b/res/drawable/zoomout_00018.png differ diff --git a/res/drawable/zoomout_00019.png b/res/drawable/zoomout_00019.png new file mode 100644 index 000000000..79c6fb0e0 Binary files /dev/null and b/res/drawable/zoomout_00019.png differ diff --git a/res/drawable/zoomout_00020.png b/res/drawable/zoomout_00020.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00020.png differ diff --git a/res/drawable/zoomout_00021.png b/res/drawable/zoomout_00021.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00021.png differ diff --git a/res/drawable/zoomout_00022.png b/res/drawable/zoomout_00022.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00022.png differ diff --git a/res/drawable/zoomout_00023.png b/res/drawable/zoomout_00023.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00023.png differ diff --git a/res/drawable/zoomout_00024.png b/res/drawable/zoomout_00024.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00024.png differ diff --git a/res/drawable/zoomout_00025.png b/res/drawable/zoomout_00025.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00025.png differ diff --git a/res/drawable/zoomout_00026.png b/res/drawable/zoomout_00026.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00026.png differ diff --git a/res/drawable/zoomout_00027.png b/res/drawable/zoomout_00027.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00027.png differ diff --git a/res/drawable/zoomout_00028.png b/res/drawable/zoomout_00028.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00028.png differ diff --git a/res/drawable/zoomout_00029.png b/res/drawable/zoomout_00029.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00029.png differ diff --git a/res/drawable/zoomout_00030.png b/res/drawable/zoomout_00030.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00030.png differ diff --git a/res/drawable/zoomout_00031.png b/res/drawable/zoomout_00031.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00031.png differ diff --git a/res/drawable/zoomout_00032.png b/res/drawable/zoomout_00032.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00032.png differ diff --git a/res/drawable/zoomout_00033.png b/res/drawable/zoomout_00033.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00033.png differ diff --git a/res/drawable/zoomout_00034.png b/res/drawable/zoomout_00034.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00034.png differ diff --git a/res/drawable/zoomout_00035.png b/res/drawable/zoomout_00035.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00035.png differ diff --git a/res/drawable/zoomout_00036.png b/res/drawable/zoomout_00036.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00036.png differ diff --git a/res/drawable/zoomout_00037.png b/res/drawable/zoomout_00037.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00037.png differ diff --git a/res/drawable/zoomout_00038.png b/res/drawable/zoomout_00038.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00038.png differ diff --git a/res/drawable/zoomout_00039.png b/res/drawable/zoomout_00039.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00039.png differ diff --git a/res/drawable/zoomout_00040.png b/res/drawable/zoomout_00040.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00040.png differ diff --git a/res/drawable/zoomout_00041.png b/res/drawable/zoomout_00041.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00041.png differ diff --git a/res/drawable/zoomout_00042.png b/res/drawable/zoomout_00042.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00042.png differ diff --git a/res/drawable/zoomout_00043.png b/res/drawable/zoomout_00043.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00043.png differ diff --git a/res/drawable/zoomout_00044.png b/res/drawable/zoomout_00044.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00044.png differ diff --git a/res/drawable/zoomout_00045.png b/res/drawable/zoomout_00045.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00045.png differ diff --git a/res/drawable/zoomout_00046.png b/res/drawable/zoomout_00046.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00046.png differ diff --git a/res/drawable/zoomout_00047.png b/res/drawable/zoomout_00047.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00047.png differ diff --git a/res/drawable/zoomout_00048.png b/res/drawable/zoomout_00048.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00048.png differ diff --git a/res/drawable/zoomout_00049.png b/res/drawable/zoomout_00049.png new file mode 100644 index 000000000..b4be2aa37 Binary files /dev/null and b/res/drawable/zoomout_00049.png differ diff --git a/res/layout/overview_panel.xml b/res/layout/overview_panel.xml index 479b622ec..b6707417c 100644 --- a/res/layout/overview_panel.xml +++ b/res/layout/overview_panel.xml @@ -1,5 +1,6 @@ - - + android:layout_height="match_parent" + android:gravity="bottom" + slidingpanel:overlay="false" + slidingpanel:panelHeight="@dimen/sliding_panel_padding" > + android:layout_gravity="center_horizontal" + android:background="@color/settings_bg_color" + android:paddingTop="@dimen/overview_panel_top_padding" > - - - - - - + android:paddingRight="@dimen/overview_panel_button_spacing"/> - + - - - - - - - + \ No newline at end of file diff --git a/res/layout/settings_pane.xml b/res/layout/settings_pane.xml new file mode 100644 index 000000000..26ee8fc26 --- /dev/null +++ b/res/layout/settings_pane.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/settings_pane_list_header.xml b/res/layout/settings_pane_list_header.xml new file mode 100644 index 000000000..700f5e773 --- /dev/null +++ b/res/layout/settings_pane_list_header.xml @@ -0,0 +1,19 @@ + + + + diff --git a/res/layout/settings_pane_list_item.xml b/res/layout/settings_pane_list_item.xml new file mode 100644 index 000000000..2a9d31b95 --- /dev/null +++ b/res/layout/settings_pane_list_item.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/res/layout/settings_transitions_screen.xml b/res/layout/settings_transitions_screen.xml new file mode 100644 index 000000000..23b3b37e9 --- /dev/null +++ b/res/layout/settings_transitions_screen.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/values-sw320dp/dimens.xml b/res/values-sw320dp/dimens.xml index bcc465e94..9958136ab 100644 --- a/res/values-sw320dp/dimens.xml +++ b/res/values-sw320dp/dimens.xml @@ -16,6 +16,8 @@ - 35dp - 15dp + 50dp + 32dp + 28dp + 16dp diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml index 8d6c7f4e3..cba5ac799 100644 --- a/res/values-sw600dp/dimens.xml +++ b/res/values-sw600dp/dimens.xml @@ -17,6 +17,9 @@ 64dp + + 22dp + 60dp 8dp diff --git a/res/values/attrs.xml b/res/values/attrs.xml index a2d3a83e0..a2266f7ef 100644 --- a/res/values/attrs.xml +++ b/res/values/attrs.xml @@ -157,4 +157,15 @@ + + + + + + + + + + + diff --git a/res/values/cm_arrays.xml b/res/values/cm_arrays.xml index 502b7a65c..2320f1805 100644 --- a/res/values/cm_arrays.xml +++ b/res/values/cm_arrays.xml @@ -58,4 +58,20 @@ carousel overview - + + @drawable/transition_none + @drawable/transition_zoomin + @drawable/transition_zoomout + @drawable/transition_rotateup + @drawable/transition_rotatedown + @drawable/transition_cubein + @drawable/transition_cubeout + @drawable/transition_stack + @drawable/transition_accordion + @drawable/transition_flip + @drawable/transition_cylinderin + @drawable/transition_cylinderout + @drawable/transition_carousel + @drawable/transition_overview + + \ No newline at end of file diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index d4effcc40..267d65a18 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -99,4 +99,25 @@ Hidden apps + + + LAUNCHER SETTINGS + HOME SCREEN SETTINGS + DRAWER SETTINGS + + Scroll effect + + Scroll effect + + Sorting mode + + Search bar + + Larger icons + + Hide icon labels + + ON + OFF + Themes diff --git a/res/values/colors.xml b/res/values/colors.xml index dc35a3f68..b55fb1704 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -35,6 +35,12 @@ #66000000 #FF333333 #FFFFFFFF - + #64b1ea + + #FF6cd2ea + #FF485459 + #FFb2b0ab + #26000000 + #50000000 diff --git a/res/values/config.xml b/res/values/config.xml index b7880fe1f..9ad34b52b 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -20,7 +20,7 @@ 80 - 58 + 90 diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 3b692a1d1..421222673 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -44,7 +44,9 @@ 20dp 50dp 30dp - 130dp + 60dp + 175dp + 50dp 4dip @@ -98,4 +100,7 @@ 4dp 10dp + + + 48dp diff --git a/src/com/android/launcher3/AppsCustomizeLayout.java b/src/com/android/launcher3/AppsCustomizeLayout.java index ea1c36a9c..7bcb90f18 100644 --- a/src/com/android/launcher3/AppsCustomizeLayout.java +++ b/src/com/android/launcher3/AppsCustomizeLayout.java @@ -67,12 +67,12 @@ public class AppsCustomizeLayout extends FrameLayout implements LauncherTransiti mContent = (FrameLayout) findViewById(R.id.apps_customize_content); if (mAppsCustomizePane == null) throw new Resources.NotFoundException(); - findViewById(R.id.page_indicator).setOnClickListener(new OnClickListener() { + /*findViewById(R.id.page_indicator).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mAppsCustomizePane.enterOverviewMode(); } - }); + });*/ } public boolean onInterceptTouchEvent(MotionEvent ev) { diff --git a/src/com/android/launcher3/DragLayer.java b/src/com/android/launcher3/DragLayer.java index 401f4ed52..54f489d76 100644 --- a/src/com/android/launcher3/DragLayer.java +++ b/src/com/android/launcher3/DragLayer.java @@ -107,6 +107,9 @@ public class DragLayer extends FrameLayout implements ViewGroup.OnHierarchyChang for (int i = 0; i < n; i++) { final View child = getChildAt(i); final FrameLayout.LayoutParams flp = (FrameLayout.LayoutParams) child.getLayoutParams(); + if (child.getId() == R.id.overview_panel) { + continue; + } if (child instanceof Insettable) { ((Insettable)child).setInsets(insets); } else { diff --git a/src/com/android/launcher3/DynamicGrid.java b/src/com/android/launcher3/DynamicGrid.java index 6457fdc31..574e9e566 100644 --- a/src/com/android/launcher3/DynamicGrid.java +++ b/src/com/android/launcher3/DynamicGrid.java @@ -377,6 +377,11 @@ class DeviceProfile { } public void layout(Launcher launcher) { + // Update search bar for live settings + searchBarVisible = SettingsProvider.getBoolean(launcher, SettingsProvider.SETTINGS_UI_HOMESCREEN_SEARCH, + R.bool.preferences_interface_homescreen_search_default); + searchBarSpaceHeightPx = searchBarHeightPx + (searchBarVisible ? 2 * edgeMarginPx : 0); + FrameLayout.LayoutParams lp; Resources res = launcher.getResources(); boolean hasVerticalBarLayout = isVerticalBarLayout(); @@ -493,7 +498,7 @@ class DeviceProfile { lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM; lp.width = LayoutParams.WRAP_CONTENT; lp.height = LayoutParams.WRAP_CONTENT; - lp.bottomMargin = hotseatBarHeightPx; + lp.bottomMargin = Math.max(hotseatBarHeightPx, lp.bottomMargin); pageIndicator.setLayoutParams(lp); } } diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 416c80641..4c63b9c83 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -29,8 +29,10 @@ import android.animation.ValueAnimator.AnimatorUpdateListener; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityOptions; -import android.app.AlertDialog; import android.app.Dialog; +import android.app.Fragment; +import android.app.FragmentManager; +import android.app.FragmentTransaction; import android.app.SearchManager; import android.appwidget.AppWidgetHostView; import android.appwidget.AppWidgetManager; @@ -41,7 +43,6 @@ import android.content.ComponentCallbacks2; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; @@ -83,7 +84,6 @@ import android.view.MenuItem; import android.view.MotionEvent; import android.view.Surface; import android.view.View; -import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.view.ViewGroup; import android.view.ViewTreeObserver; @@ -102,6 +102,7 @@ import android.widget.TextView; import android.widget.Toast; import com.android.launcher3.DropTarget.DragObject; +import com.android.launcher3.PagedView.TransitionEffect; import com.android.launcher3.settings.SettingsActivity; import com.android.launcher3.settings.SettingsProvider; @@ -129,6 +130,8 @@ public class Launcher extends Activity static final String TAG = "Launcher"; static final boolean LOGD = false; + DeviceProfile mGrid; + static final boolean PROFILE_STARTUP = false; static final boolean DEBUG_WIDGETS = false; static final boolean DEBUG_STRICT_MODE = false; @@ -143,6 +146,8 @@ public class Launcher extends Activity private static final int REQUEST_PICK_WALLPAPER = 10; private static final int REQUEST_BIND_APPWIDGET = 11; + public static final int REQUEST_TRANSITION_EFFECTS = 14; + static final int REQUEST_PICK_ICON = 13; /** @@ -233,6 +238,7 @@ public class Launcher extends Activity private DragLayer mDragLayer; private DragController mDragController; private View mWeightWatcher; + private TransitionEffectsFragment mTransitionEffectsFragment; private AppWidgetManager mAppWidgetManager; private LauncherAppWidgetHost mAppWidgetHost; @@ -246,6 +252,8 @@ public class Launcher extends Activity private Hotseat mHotseat; private View mOverviewPanel; + private View mDarkPanel; + OverviewSettingsPanel mOverviewSettingsPanel; private View mAllAppsButton; @@ -368,6 +376,19 @@ public class Launcher extends Activity private Stats mStats; + public Animator.AnimatorListener mAnimatorListener = new Animator.AnimatorListener() { + @Override + public void onAnimationStart(Animator arg0) {} + @Override + public void onAnimationRepeat(Animator arg0) {} + @Override + public void onAnimationEnd(Animator arg0) { + mDarkPanel.setVisibility(View.GONE); + } + @Override + public void onAnimationCancel(Animator arg0) {} + }; + private static boolean isPropertyEnabled(String propertyName) { return Log.isLoggable(propertyName, Log.VERBOSE); } @@ -391,35 +412,12 @@ public class Launcher extends Activity super.onCreate(savedInstanceState); - LauncherAppState.setApplicationContext(getApplicationContext()); - LauncherAppState app = LauncherAppState.getInstance(); - - mHideIconLabels = SettingsProvider.getBoolean(this, - SettingsProvider.SETTINGS_UI_HOMESCREEN_HIDE_ICON_LABELS, - R.bool.preferences_interface_homescreen_hide_icon_labels_default); - - // Determine the dynamic grid properties - Point smallestSize = new Point(); - Point largestSize = new Point(); - Point realSize = new Point(); - Display display = getWindowManager().getDefaultDisplay(); - display.getCurrentSizeRange(smallestSize, largestSize); - display.getRealSize(realSize); - DisplayMetrics dm = new DisplayMetrics(); - display.getMetrics(dm); - // Lazy-initialize the dynamic grid - DeviceProfile grid = app.initDynamicGrid(this, - Math.min(smallestSize.x, smallestSize.y), - Math.min(largestSize.x, largestSize.y), - realSize.x, realSize.y, - dm.widthPixels, dm.heightPixels); + initializeDynamicGrid(); // the LauncherApplication should call this, but in case of Instrumentation it might not be present yet mSharedPrefs = getSharedPreferences(LauncherAppState.getSharedPreferencesKey(), Context.MODE_PRIVATE); - mModel = app.setLauncher(this); - mIconCache = app.getIconCache(); - mIconCache.flushInvalidIcons(grid); + mDragController = new DragController(this); mInflater = getLayoutInflater(); @@ -445,7 +443,7 @@ public class Launcher extends Activity setContentView(R.layout.launcher); setupViews(); - grid.layout(this); + mGrid.layout(this); registerContentObservers(); @@ -491,6 +489,35 @@ public class Launcher extends Activity showFirstRunCling(); } + private void initializeDynamicGrid() { + LauncherAppState.setApplicationContext(getApplicationContext()); + LauncherAppState app = LauncherAppState.getInstance(); + + mHideIconLabels = SettingsProvider.getBoolean(this, + SettingsProvider.SETTINGS_UI_HOMESCREEN_HIDE_ICON_LABELS, + R.bool.preferences_interface_homescreen_hide_icon_labels_default); + + // Determine the dynamic grid properties + Point smallestSize = new Point(); + Point largestSize = new Point(); + Point realSize = new Point(); + Display display = getWindowManager().getDefaultDisplay(); + display.getCurrentSizeRange(smallestSize, largestSize); + display.getRealSize(realSize); + DisplayMetrics dm = new DisplayMetrics(); + display.getMetrics(dm); + // Lazy-initialize the dynamic grid + mGrid = app.initDynamicGrid(this, + Math.min(smallestSize.x, smallestSize.y), + Math.min(largestSize.x, largestSize.y), + realSize.x, realSize.y, + dm.widthPixels, dm.heightPixels); + + mModel = app.setLauncher(this); + mIconCache = app.getIconCache(); + mIconCache.flushInvalidIcons(mGrid); + } + protected void onUserLeaveHint() { super.onUserLeaveHint(); sPausedFromUserAction = true; @@ -937,6 +964,13 @@ public class Launcher extends Activity mWorkspace.updateInteractionForState(); mWorkspace.onResume(); mAppsCustomizeContent.onResume(); + + //Close out TransitionEffects Fragment + Fragment f = getFragmentManager().findFragmentByTag( + TransitionEffectsFragment.TRANSITION_EFFECTS_FRAGMENT); + if (f != null) { + mTransitionEffectsFragment.setEffect(); + } } @Override @@ -954,6 +988,9 @@ public class Launcher extends Activity if (mWorkspace.getCustomContentCallbacks() != null) { mWorkspace.getCustomContentCallbacks().onHide(); } + + //Reset the OverviewPanel position + ((SlidingUpPanelLayout) mOverviewPanel).collapsePane(); } protected void onFinishBindingItems() { @@ -992,17 +1029,11 @@ public class Launcher extends Activity public void onScrollProgressChanged(float progress); } - protected void startSettings() { - Intent settings; - // If we are on CyanogenMod the launcher settings are accessed from system settings. - if (!getPackageManager().hasSystemFeature("com.cyanogenmod.android")) { - settings = new Intent().setClass(this, SettingsActivity.class); - settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK - | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); - } else { - settings = new Intent(android.provider.Settings.ACTION_SETTINGS); - } + protected void startThemeSettings() { + Intent settings = new Intent().setClassName(OverviewSettingsPanel.ANDROID_SETTINGS, + OverviewSettingsPanel.THEME_SETTINGS); startActivity(settings); + if (mWorkspace.isInOverviewMode()) { mWorkspace.exitOverviewMode(false); } else if (mAppsCustomizeContent.isInOverviewMode()) { @@ -1038,89 +1069,60 @@ public class Launcher extends Activity mAppsCustomizeContent.setSortMode(AppsCustomizePagedView.SortMode.LaunchCount); break; } + mOverviewSettingsPanel.notifyDataSetInvalidated(); return true; } }); popupMenu.show(); } - public void onClickTransitionEffectButton(View v) { - AlertDialog.Builder builder = new AlertDialog.Builder(this); + public void onClickTransitionEffectButton(View v, final boolean pageOrDrawer) { + Bundle bundle = new Bundle(); + bundle.putBoolean(TransitionEffectsFragment.PAGE_OR_DRAWER_SCROLL_SELECT, + pageOrDrawer); + FragmentManager fragmentManager = getFragmentManager(); + FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); - // Load values - final PagedView pagedView = isAllAppsVisible() ? mAppsCustomizeContent : mWorkspace; - final PagedView.TransitionEffect oldEffect = pagedView.getTransitionEffect(); - final String oldEffectName = oldEffect != null ? oldEffect.getName() : - PagedView.TransitionEffect.TRANSITION_EFFECT_NONE; - final String[] titles = getResources().getStringArray(R.array.transition_effect_entries); - final String[] values = getResources().getStringArray(R.array.transition_effect_values); - - int selected = -1; - for (int i = values.length - 1; i >= 0; i--) { - if (values[i].equals(oldEffectName)) { - selected = i; - break; - } - } - - // Create title view with overflow menu - View customTitle = getLayoutInflater().inflate(R.layout.dialog_title_overflow_menu, null); - TextView title = (TextView) customTitle.findViewById(android.R.id.title); - title.setText(R.string.transition_effect_button_text); + mTransitionEffectsFragment = new TransitionEffectsFragment(); + mTransitionEffectsFragment.setArguments(bundle); + fragmentTransaction.setCustomAnimations(0, 0); + fragmentTransaction.replace(R.id.launcher, mTransitionEffectsFragment, + TransitionEffectsFragment.TRANSITION_EFFECTS_FRAGMENT); + fragmentTransaction.commit(); + } - View overflowMenu = customTitle.findViewById(R.id.overflow_menu_button); - overflowMenu.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - onClickTransitionEffectOverflowMenuButton(v); - } - }); + public void setTransitionEffect(boolean pageOrDrawer, String newTransitionEffect) { + String mSettingsProviderValue = pageOrDrawer ? + SettingsProvider.SETTINGS_UI_DRAWER_SCROLLING_TRANSITION_EFFECT + : SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_TRANSITION_EFFECT; + PagedView pagedView = pageOrDrawer ? mAppsCustomizeContent : mWorkspace; - builder.setCustomTitle(customTitle); + SettingsProvider + .get(getApplicationContext()) + .edit() + .putString(mSettingsProviderValue, + newTransitionEffect).commit(); + TransitionEffect.setFromString(pagedView, newTransitionEffect); - builder.setSingleChoiceItems(titles, selected, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - String effect = values[which]; - PagedView.TransitionEffect.setFromString(pagedView, effect); - - // Show the changes immediately - final int currentPage = pagedView.getNextPage(); - final int nextPage = currentPage + (currentPage != pagedView.getPageCount() - 1 ? 1 : -1); - pagedView.snapToPageImmediately(currentPage); - pagedView.snapToPage(nextPage, new Runnable() { - @Override - public void run() { - pagedView.snapToPage(currentPage); - } - }); + // Reset Settings Changed + SharedPreferences.Editor editor = mSharedPrefs.edit(); + editor.putBoolean(SettingsProvider.SETTINGS_CHANGED, false); + editor.commit(); - SettingsProvider.get(Launcher.this).edit() - .putString(!isAllAppsVisible() ? - SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_TRANSITION_EFFECT : - SettingsProvider.SETTINGS_UI_DRAWER_SCROLLING_TRANSITION_EFFECT, effect) - .commit(); - } - }); + mOverviewSettingsPanel.notifyDataSetInvalidated(); - if (isAllAppsVisible()) { - mAppsCustomizeContent.exitOverviewMode(true); - } else { - mWorkspace.exitOverviewMode(true); - } + FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); + fragmentTransaction + .setCustomAnimations(0, R.anim.exit_out_right); + fragmentTransaction + .remove(mTransitionEffectsFragment).commit(); - builder.setPositiveButton(android.R.string.ok, null) - .setOnDismissListener(new DialogInterface.OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - mTransitionEffectDialog = null; - } - }); - mTransitionEffectDialog = builder.create(); - mTransitionEffectDialog.show(); - mTransitionEffectDialog.setCanceledOnTouchOutside(true); - mTransitionEffectDialog.getWindow().getDecorView().setAlpha(0.6f); + mDarkPanel.setVisibility(View.VISIBLE); + ObjectAnimator anim = ObjectAnimator.ofFloat( + mDarkPanel, "alpha", 0.3f, 0.0f); + anim.start(); + anim.addListener(mAnimatorListener); } public void onClickTransitionEffectOverflowMenuButton(View v) { @@ -1348,78 +1350,11 @@ public class Launcher extends Activity } mOverviewPanel = findViewById(R.id.overview_panel); - mOverviewPanel.setAlpha(0f); - View widgetButton = findViewById(R.id.widget_button); - widgetButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - showAllApps(true, AppsCustomizePagedView.ContentType.Widgets, true); - } - }); - widgetButton.setOnTouchListener(getHapticFeedbackTouchListener()); - - View wallpaperButton = findViewById(R.id.wallpaper_button); - wallpaperButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - startWallpaper(); - } - }); - wallpaperButton.setOnTouchListener(getHapticFeedbackTouchListener()); - - View settingsButton = findViewById(R.id.settings_button); - settingsButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - startSettings(); - } - }); - settingsButton.setOnTouchListener(getHapticFeedbackTouchListener()); - - View defaultScreenButton = findViewById(R.id.default_screen_button); - defaultScreenButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - mWorkspace.onClickDefaultScreenButton(); - } - }); - defaultScreenButton.setOnTouchListener(getHapticFeedbackTouchListener()); - - View transitionEffectButton = findViewById(R.id.transition_effect_button); - transitionEffectButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - onClickTransitionEffectButton(arg0); - } - }); - transitionEffectButton.setOnTouchListener(getHapticFeedbackTouchListener()); - - View iconPackButton = findViewById(R.id.icon_pack_button); - iconPackButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - IconPackHelper.pickIconPack(Launcher.this, false); - } - }); - iconPackButton.setOnTouchListener(getHapticFeedbackTouchListener()); - - View sortButton = findViewById(R.id.sort_button); - sortButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - onClickSortModeButton(arg0); - } - }); - sortButton.setOnTouchListener(getHapticFeedbackTouchListener()); - - View filterButton = findViewById(R.id.filter_button); - filterButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - - } - }); - filterButton.setOnTouchListener(getHapticFeedbackTouchListener()); + mOverviewSettingsPanel = new OverviewSettingsPanel( + this, mOverviewPanel); + mOverviewSettingsPanel.initializeAdapter(); + mOverviewSettingsPanel.initializeViews(); + mDarkPanel = ((SlidingUpPanelLayout) mOverviewPanel).findViewById(R.id.dark_panel); // Setup the workspace mWorkspace.setHapticFeedbackEnabled(false); @@ -2128,12 +2063,6 @@ public class Launcher extends Activity } else { mWorkspace.exitOverviewMode(true); } - } else { - if (!mAppsCustomizeContent.isInOverviewMode()) { - mAppsCustomizeContent.enterOverviewMode(); - } else { - mAppsCustomizeContent.exitOverviewMode(true); - } } return false; } @@ -2380,7 +2309,13 @@ public class Launcher extends Activity } } } else if (mWorkspace.isInOverviewMode()) { - mWorkspace.exitOverviewMode(true); + Fragment f = getFragmentManager().findFragmentByTag( + TransitionEffectsFragment.TRANSITION_EFFECTS_FRAGMENT); + if (f != null) { + mTransitionEffectsFragment.setEffect(); + } else { + mWorkspace.exitOverviewMode(true); + } } else if (mWorkspace.getOpenFolder() != null) { Folder openFolder = mWorkspace.getOpenFolder(); if (openFolder.isEditingName()) { @@ -2592,7 +2527,7 @@ public class Launcher extends Activity void startApplicationDetailsActivity(ComponentName componentName) { String packageName = componentName.getPackageName(); - Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, + Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.fromParts("package", packageName, null)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); startActivitySafely(null, intent, "startApplicationDetailsActivity"); @@ -2915,6 +2850,9 @@ public class Launcher extends Activity View getOverviewPanel() { return mOverviewPanel; } + View getDarkPanel() { + return mDarkPanel; + } SearchDropTargetBar getSearchBar() { return mSearchDropTargetBar; } @@ -2938,35 +2876,12 @@ public class Launcher extends Activity return mWorkspace; } - public void updateOverviewPanel() { - View defaultScreenButton = mOverviewPanel.findViewById(R.id.default_screen_button); - View transitionEffectButton = mOverviewPanel.findViewById(R.id.transition_effect_button); - View widgetButton = mOverviewPanel.findViewById(R.id.widget_button); - View wallpaperButton = mOverviewPanel.findViewById(R.id.wallpaper_button); - View sortButton = mOverviewPanel.findViewById(R.id.sort_button); - View filterButton = mOverviewPanel.findViewById(R.id.filter_button); - View iconPackButton = findViewById(R.id.icon_pack_button); - - PagedView pagedView = !isAllAppsVisible() ? mWorkspace : mAppsCustomizeContent; - - defaultScreenButton.setVisibility((!isAllAppsVisible() && pagedView.getPageCount() > 1) ? View.VISIBLE : View.GONE); - transitionEffectButton.setVisibility(pagedView.getPageCount() > 1 ? View.VISIBLE : View.GONE); - widgetButton.setVisibility(!isAllAppsVisible() ? View.VISIBLE : View.GONE); - wallpaperButton.setVisibility(!isAllAppsVisible() ? View.VISIBLE : View.GONE); - sortButton.setVisibility(isAllAppsVisible() ? View.VISIBLE : View.GONE); - // TODO: implement filtering - // filterButton.setVisibility(isAllAppsVisible() ? View.VISIBLE : View.GONE); - filterButton.setVisibility(View.GONE); - - boolean isVisible = !isAllAppsVisible(); - if (isVisible) { - int numIconPacks = IconPackHelper.getSupportedPackages(this).size(); - isVisible = numIconPacks > 0; - } - iconPackButton.setVisibility(isVisible ? View.VISIBLE : View.GONE); + protected AppsCustomizePagedView getAppsCustomizeContent() { + return mAppsCustomizeContent; + } - // Make sure overview panel is drawn above apps customize - mOverviewPanel.bringToFront(); + public void updateOverviewPanel() { + mOverviewSettingsPanel.update(); } public boolean isAllAppsVisible() { @@ -4782,6 +4697,41 @@ public class Launcher extends Activity }.start(); } } + + public AppsCustomizePagedView.SortMode getAppsCustomizeContentSortMode () { + return mAppsCustomizeContent.getSortMode(); + } + + public boolean shouldShowSearchBar() { + return mWorkspace.getShowSearchBar(); + } + + public boolean shouldHideWorkspaceIconLables() { + return mWorkspace.getHideIconLables(); + } + + public String getWorkspaceTransitionEffect() { + TransitionEffect effect = mWorkspace.getTransitionEffect(); + return effect == null ? TransitionEffect.TRANSITION_EFFECT_NONE : effect.getName(); + } + + public String getAppsCustomizeTransitionEffect() { + TransitionEffect effect = mAppsCustomizeContent.getTransitionEffect(); + return effect == null ? TransitionEffect.TRANSITION_EFFECT_NONE : effect.getName(); + } + + public void updateDynamicGrid() { + mSearchDropTargetBar.setupQSB(this); + mSearchDropTargetBar.hideSearchBar(false); + + initializeDynamicGrid(); + + mGrid.layout(this); + mWorkspace.showOutlines(); + + // Synchronized reload + mModel.startLoader(true, mWorkspace.getCurrentPage()); + } } interface LauncherTransitionable { diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java index cba0d61ac..4cf64edd8 100644 --- a/src/com/android/launcher3/LauncherAppState.java +++ b/src/com/android/launcher3/LauncherAppState.java @@ -189,12 +189,11 @@ public class LauncherAppState { DeviceProfile initDynamicGrid(Context context, int minWidth, int minHeight, int width, int height, int availableWidth, int availableHeight) { - if (mDynamicGrid == null) { - mDynamicGrid = new DynamicGrid(context, - context.getResources(), - minWidth, minHeight, width, height, - availableWidth, availableHeight); - } + + mDynamicGrid = new DynamicGrid(context, + context.getResources(), + minWidth, minHeight, width, height, + availableWidth, availableHeight); // Update the icon size DeviceProfile grid = mDynamicGrid.getDeviceProfile(); diff --git a/src/com/android/launcher3/OverviewSettingsPanel.java b/src/com/android/launcher3/OverviewSettingsPanel.java new file mode 100644 index 000000000..718acbcbf --- /dev/null +++ b/src/com/android/launcher3/OverviewSettingsPanel.java @@ -0,0 +1,203 @@ +package com.android.launcher3; + +import android.content.res.Resources; +import android.database.Cursor; +import android.database.MatrixCursor; +import android.graphics.drawable.AnimationDrawable; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.ImageView; +import android.widget.ListView; +import com.android.launcher3.list.PinnedHeaderListView; +import com.android.launcher3.list.SettingsPinnedHeaderAdapter; + +public class OverviewSettingsPanel { + public static final String ANDROID_SETTINGS = "org.cyanogenmod.theme.chooser"; + public static final String THEME_SETTINGS = + "org.cyanogenmod.theme.chooser.ChooserActivity"; + public static final int HOME_SETTINGS_POSITION = 0; + public static final int DRAWER_SETTINGS_POSITION = 1; + + private Launcher mLauncher; + private View mOverviewPanel; + private SettingsPinnedHeaderAdapter mSettingsAdapter; + private PinnedHeaderListView mListView; + + OverviewSettingsPanel(Launcher launcher, View overviewPanel) { + mLauncher = launcher; + mOverviewPanel = overviewPanel; + } + + // One time initialization of the SettingsPinnedHeaderAdapter + public void initializeAdapter() { + // Settings pane Listview + mListView = (PinnedHeaderListView) mLauncher + .findViewById(R.id.settings_home_screen_listview); + mListView.setOverScrollMode(ListView.OVER_SCROLL_NEVER); + Resources res = mLauncher.getResources(); + String[] headers = new String[] { + res.getString(R.string.home_screen_settings), + res.getString(R.string.drawer_settings)}; + String[] values = new String[] { + res.getString(R.string.home_screen_search_text), + res.getString(R.string.page_scroll_effect_text), + res.getString(R.string.larger_icons_text), + res.getString(R.string.hide_icon_labels)}; + String[] valuesDrawer = new String[] { + res.getString(R.string.drawer_scroll_effect_text), + res.getString(R.string.drawer_sorting_text), + res.getString(R.string.hide_icon_labels)}; + + mSettingsAdapter = new SettingsPinnedHeaderAdapter(mLauncher); + mSettingsAdapter.setHeaders(headers); + mSettingsAdapter.addPartition(false, true); + mSettingsAdapter.addPartition(false, true); + mSettingsAdapter.mPinnedHeaderCount = headers.length; + + mSettingsAdapter.changeCursor(0, createCursor(headers[0], values)); + mSettingsAdapter.changeCursor(1, createCursor(headers[1], valuesDrawer)); + mListView.setAdapter(mSettingsAdapter); + } + + private Cursor createCursor(String header, String[] values) { + MatrixCursor cursor = new MatrixCursor(new String[]{"_id", header}); + int count = values.length; + for (int i = 0; i < count; i++) { + cursor.addRow(new Object[]{i, values[i]}); + } + return cursor; + } + + // One time View setup + public void initializeViews() { + mOverviewPanel.setAlpha(0f); + mOverviewPanel + .setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); + ((SlidingUpPanelLayout) mOverviewPanel) + .setPanelSlideListener(new SettingsSimplePanelSlideListener()); + + //Quick Settings Buttons + View widgetButton = mLauncher.findViewById(R.id.widget_button); + widgetButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View arg0) { + mLauncher.showAllApps(true, AppsCustomizePagedView.ContentType.Widgets, true); + } + }); + widgetButton.setOnTouchListener(mLauncher.getHapticFeedbackTouchListener()); + + View wallpaperButton = mLauncher.findViewById(R.id.wallpaper_button); + wallpaperButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View arg0) { + mLauncher.startWallpaper(); + } + }); + wallpaperButton.setOnTouchListener(mLauncher.getHapticFeedbackTouchListener()); + + View themesButton = mLauncher.findViewById(R.id.themes_button); + themesButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View arg0) { + mLauncher.startThemeSettings(); + } + }); + themesButton.setOnTouchListener(mLauncher.getHapticFeedbackTouchListener()); + + View defaultScreenButton = mLauncher.findViewById(R.id.default_screen_button); + defaultScreenButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View arg0) { + mLauncher.getWorkspace().onClickDefaultScreenButton(); + } + }); + + defaultScreenButton.setOnTouchListener(mLauncher.getHapticFeedbackTouchListener()); + + //Handle + View v = mOverviewPanel.findViewById(R.id.settings_pane_header); + ((SlidingUpPanelLayout) mOverviewPanel).setEnableDragViewTouchEvents(true); + ((SlidingUpPanelLayout) mOverviewPanel).setDragView(v); + v.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + if (((SlidingUpPanelLayout) mOverviewPanel).isExpanded()) { + ((SlidingUpPanelLayout) mOverviewPanel).collapsePane(); + } else { + ((SlidingUpPanelLayout) mOverviewPanel).expandPane(); + } + } + }); + } + + public void update() { + Resources res = mLauncher.getResources(); + View widgetButton = mOverviewPanel.findViewById(R.id.widget_button); + View wallpaperButton = mOverviewPanel + .findViewById(R.id.wallpaper_button); + View themesButton = mOverviewPanel.findViewById(R.id.themes_button); + View defaultHomePanel = mOverviewPanel.findViewById(R.id.default_screen_button); + + boolean isAllAppsVisible = mLauncher.isAllAppsVisible(); + + PagedView pagedView = !isAllAppsVisible ? mLauncher.getWorkspace() + : mLauncher.getAppsCustomizeContent(); + + defaultHomePanel.setVisibility((pagedView.getPageCount() > 1) ? + View.VISIBLE : View.GONE); + + if (mLauncher.isAllAppsVisible()) { + mSettingsAdapter.changeCursor(0, createCursor(res + .getString(R.string.home_screen_settings), new String[]{})); + } else { + String[] values = new String[] { + res.getString(R.string.home_screen_search_text), + res.getString(R.string.page_scroll_effect_text), + res.getString(R.string.larger_icons_text), + res.getString(R.string.hide_icon_labels)}; + mSettingsAdapter.changeCursor(0, createCursor(res + .getString(R.string.home_screen_settings), values)); + } + + // Make sure overview panel is drawn above apps customize and collapsed + mOverviewPanel.bringToFront(); + mOverviewPanel.invalidate(); + + ((SlidingUpPanelLayout) mOverviewPanel).setPanelHeight(isAllAppsVisible ? + res.getDimensionPixelSize(R.dimen.settings_pane_handle) + : res.getDimensionPixelSize(R.dimen.sliding_panel_padding)); + + ((SlidingUpPanelLayout) mOverviewPanel).collapsePane(); + } + + public void notifyDataSetInvalidated() { + mSettingsAdapter.notifyDataSetInvalidated(); + } + + + class SettingsSimplePanelSlideListener extends SlidingUpPanelLayout.SimplePanelSlideListener { + ImageView mAnimatedArrow; + + public SettingsSimplePanelSlideListener() { + super(); + mAnimatedArrow = (ImageView) mOverviewPanel.findViewById(R.id.settings_drag_arrow); + } + + @Override + public void onPanelCollapsed(View panel) { + mAnimatedArrow.setBackgroundResource(R.drawable.transition_arrow_reverse); + + AnimationDrawable frameAnimation = (AnimationDrawable) mAnimatedArrow.getBackground(); + frameAnimation.start(); + } + + @Override + public void onPanelExpanded(View panel) { + mAnimatedArrow.setBackgroundResource(R.drawable.transition_arrow); + + AnimationDrawable frameAnimation = (AnimationDrawable) mAnimatedArrow.getBackground(); + frameAnimation.start(); + } + } +} diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index 37cd1e9ca..f050799ae 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -1711,10 +1711,6 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc return OVERSCROLL_DAMP_FACTOR * f; } - protected void enableFreeScroll() { - setEnableFreeScroll(true, -1); - } - protected void disableFreeScroll(int snapPage) { setEnableFreeScroll(false, snapPage); } @@ -2597,7 +2593,6 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc mPostReorderingPreZoomInRunnable = new Runnable() { public void run() { onCompleteRunnable.run(); - enableFreeScroll(); }; }; diff --git a/src/com/android/launcher3/SearchDropTargetBar.java b/src/com/android/launcher3/SearchDropTargetBar.java index 15452070c..d38c61209 100644 --- a/src/com/android/launcher3/SearchDropTargetBar.java +++ b/src/com/android/launcher3/SearchDropTargetBar.java @@ -69,6 +69,11 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D dragController.setFlingToDeleteDropTarget(mDeleteDropTarget); mInfoDropTarget.setLauncher(launcher); mDeleteDropTarget.setLauncher(launcher); + + setupQSB(launcher); + } + + public void setupQSB(Launcher launcher) { mQSBSearchBar = launcher.getQsbBar(); if (mEnableDropDownDropTargets) { mQSBSearchBarAnim = LauncherAnimUtils.ofFloat(mQSBSearchBar, "translationY", 0, @@ -188,7 +193,7 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D // Animate out the QSB search bar, and animate in the drop target bar prepareStartAnimation(mDropTargetBar); mDropTargetBarAnim.start(); - if (!mIsSearchBarHidden) { + if (!mIsSearchBarHidden || mQSBSearchBar.getAlpha() > 0f) { prepareStartAnimation(mQSBSearchBar); mQSBSearchBarAnim.start(); } @@ -204,7 +209,7 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D // Restore the QSB search bar, and animate out the drop target bar prepareStartAnimation(mDropTargetBar); mDropTargetBarAnim.reverse(); - if (!mIsSearchBarHidden) { + if (!mIsSearchBarHidden || mQSBSearchBar.getAlpha() < 1f) { prepareStartAnimation(mQSBSearchBar); mQSBSearchBarAnim.reverse(); } diff --git a/src/com/android/launcher3/SlidingUpPanelLayout.java b/src/com/android/launcher3/SlidingUpPanelLayout.java new file mode 100644 index 000000000..52deeb355 --- /dev/null +++ b/src/com/android/launcher3/SlidingUpPanelLayout.java @@ -0,0 +1,1315 @@ +package com.android.launcher3; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.PixelFormat; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.os.Parcel; +import android.os.Parcelable; +import android.support.v4.view.MotionEventCompat; +import android.support.v4.view.ViewCompat; +import android.support.v4.widget.ViewDragHelper; +import android.util.AttributeSet; +import android.util.Log; +import android.view.Gravity; +import android.view.MotionEvent; +import android.view.SoundEffectConstants; +import android.view.View; +import android.view.ViewConfiguration; +import android.view.ViewGroup; +import android.view.accessibility.AccessibilityEvent; +import android.view.animation.Animation; +import android.view.animation.TranslateAnimation; + +public class SlidingUpPanelLayout extends ViewGroup { + private static final String TAG = SlidingUpPanelLayout.class.getSimpleName(); + + /** + * Default peeking out panel height + */ + private static final int DEFAULT_PANEL_HEIGHT = 68; // dp; + + /** + * Default height of the shadow above the peeking out panel + */ + private static final int DEFAULT_SHADOW_HEIGHT = 4; // dp; + + /** + * If no fade color is given by default it will fade to 80% gray. + */ + private static final int DEFAULT_FADE_COLOR = 0x99000000; + + /** + * Default Minimum velocity that will be detected as a fling + */ + private static final int DEFAULT_MIN_FLING_VELOCITY = 400; // dips per second + /** + * Default is set to false because that is how it was written + */ + private static final boolean DEFAULT_OVERLAY_FLAG = false; + /** + * Default attributes for layout + */ + private static final int[] DEFAULT_ATTRS = new int[] { + android.R.attr.gravity + }; + + /** + * Minimum velocity that will be detected as a fling + */ + private int mMinFlingVelocity = DEFAULT_MIN_FLING_VELOCITY; + + /** + * The fade color used for the panel covered by the slider. 0 = no fading. + */ + private int mCoveredFadeColor = DEFAULT_FADE_COLOR; + + /** + * Default paralax length of the main view + */ + private static final int DEFAULT_PARALAX_OFFSET = 0; + + /** + * The paint used to dim the main layout when sliding + */ + private final Paint mCoveredFadePaint = new Paint(); + + /** + * Drawable used to draw the shadow between panes. + */ + private final Drawable mShadowDrawable; + + /** + * The size of the overhang in pixels. + */ + private int mPanelHeight = -1; + + /** + * The size of the shadow in pixels. + */ + private int mShadowHeight = -1; + + /** + * Paralax offset + */ + private int mParalaxOffset = -1; + + /** + * True if the collapsed panel should be dragged up. + */ + private boolean mIsSlidingUp; + + /** + * True if a panel can slide with the current measurements + */ + private boolean mCanSlide; + + /** + * Panel overlays the windows instead of putting it underneath it. + */ + private boolean mOverlayContent = DEFAULT_OVERLAY_FLAG; + + /** + * If provided, the panel can be dragged by only this view. Otherwise, the entire panel can be + * used for dragging. + */ + private View mDragView; + + /** + * If provided, the panel can be dragged by only this view. Otherwise, the entire panel can be + * used for dragging. + */ + private int mDragViewResId = -1; + + /** + * The child view that can slide, if any. + */ + private View mSlideableView; + + /** + * The main view + */ + private View mMainView; + + /** + * Current state of the slideable view. + */ + private enum SlideState { + EXPANDED, + COLLAPSED, + ANCHORED + } + private SlideState mSlideState = SlideState.COLLAPSED; + + /** + * How far the panel is offset from its expanded position. + * range [0, 1] where 0 = expanded, 1 = collapsed. + */ + private float mSlideOffset; + + /** + * How far in pixels the slideable panel may move. + */ + private int mSlideRange; + + /** + * A panel view is locked into internal scrolling or another condition that + * is preventing a drag. + */ + private boolean mIsUnableToDrag; + + /** + * Flag indicating that sliding feature is enabled\disabled + */ + private boolean mIsSlidingEnabled; + + /** + * Flag indicating if a drag view can have its own touch events. If set + * to true, a drag view can scroll horizontally and have its own click listener. + * + * Default is set to false. + */ + private boolean mIsUsingDragViewTouchEvents; + + /** + * Threshold to tell if there was a scroll touch event. + */ + private final int mScrollTouchSlop; + + private float mInitialMotionX; + private float mInitialMotionY; + private float mAnchorPoint = 0.f; + private TranslateAnimation mAnimation; + + private PanelSlideListener mPanelSlideListener; + + private final ViewDragHelper mDragHelper; + + /** + * Stores whether or not the pane was expanded the last time it was slideable. + * If expand/collapse operations are invoked this state is modified. Used by + * instance state save/restore. + */ + private boolean mFirstLayout = true; + + private final Rect mTmpRect = new Rect(); + + /** + * Listener for monitoring events about sliding panes. + */ + public interface PanelSlideListener { + /** + * Called when a sliding pane's position changes. + * @param panel The child view that was moved + * @param slideOffset The new offset of this sliding pane within its range, from 0-1 + */ + public void onPanelSlide(View panel, float slideOffset); + /** + * Called when a sliding pane becomes slid completely collapsed. The pane may or may not + * be interactive at this point depending on if it's shown or hidden + * @param panel The child view that was slid to an collapsed position, revealing other panes + */ + public void onPanelCollapsed(View panel); + + /** + * Called when a sliding pane becomes slid completely expanded. The pane is now guaranteed + * to be interactive. It may now obscure other views in the layout. + * @param panel The child view that was slid to a expanded position + */ + public void onPanelExpanded(View panel); + + public void onPanelAnchored(View panel); + } + + /** + * No-op stubs for {@link PanelSlideListener}. If you only want to implement a subset + * of the listener methods you can extend this instead of implement the full interface. + */ + public static class SimplePanelSlideListener implements PanelSlideListener { + @Override + public void onPanelSlide(View panel, float slideOffset) { + } + @Override + public void onPanelCollapsed(View panel) { + } + @Override + public void onPanelExpanded(View panel) { + } + @Override + public void onPanelAnchored(View panel) { + } + } + + public SlidingUpPanelLayout(Context context) { + this(context, null); + } + + public SlidingUpPanelLayout(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public SlidingUpPanelLayout(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + if (attrs != null) { + TypedArray defAttrs = context.obtainStyledAttributes(attrs, DEFAULT_ATTRS); + + if (defAttrs != null) { + int gravity = defAttrs.getInt(0, Gravity.NO_GRAVITY); + if (gravity != Gravity.TOP && gravity != Gravity.BOTTOM) { + throw new IllegalArgumentException("gravity must be set to either top or bottom"); + } + mIsSlidingUp = gravity == Gravity.BOTTOM; + } + + defAttrs.recycle(); + + TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.SlidingUpPanelLayout); + + if (ta != null) { + mPanelHeight = ta.getDimensionPixelSize(R.styleable.SlidingUpPanelLayout_panelHeight, -1); + mShadowHeight = ta.getDimensionPixelSize(R.styleable.SlidingUpPanelLayout_shadowHeight, -1); + mParalaxOffset = ta.getDimensionPixelSize(R.styleable.SlidingUpPanelLayout_paralaxOffset, -1); + + mMinFlingVelocity = ta.getInt(R.styleable.SlidingUpPanelLayout_flingVelocity, DEFAULT_MIN_FLING_VELOCITY); + mCoveredFadeColor = ta.getColor(R.styleable.SlidingUpPanelLayout_fadeColor, DEFAULT_FADE_COLOR); + + mDragViewResId = ta.getResourceId(R.styleable.SlidingUpPanelLayout_dragView, -1); + + mOverlayContent = ta.getBoolean(R.styleable.SlidingUpPanelLayout_overlay,DEFAULT_OVERLAY_FLAG); + } + + ta.recycle(); + } + + final float density = context.getResources().getDisplayMetrics().density; + if (mPanelHeight == -1) { + mPanelHeight = (int) (DEFAULT_PANEL_HEIGHT * density + 0.5f); + } + if (mShadowHeight == -1) { + mShadowHeight = (int) (DEFAULT_SHADOW_HEIGHT * density + 0.5f); + } + if (mParalaxOffset == -1) { + mParalaxOffset = (int) (DEFAULT_PARALAX_OFFSET * density); + } + // If the shadow height is zero, don't show the shadow + if (mShadowHeight > 0) { + if (mIsSlidingUp) { + mShadowDrawable = getResources().getDrawable(R.drawable.above_shadow); + } else { + mShadowDrawable = getResources().getDrawable(R.drawable.below_shadow); + } + + } else { + mShadowDrawable = null; + } + + setWillNotDraw(false); + + mDragHelper = ViewDragHelper.create(this, 0.5f, new DragHelperCallback()); + mDragHelper.setMinVelocity(mMinFlingVelocity * density); + + mCanSlide = true; + mIsSlidingEnabled = true; + + ViewConfiguration vc = ViewConfiguration.get(context); + mScrollTouchSlop = vc.getScaledTouchSlop(); + } + + /** + * Set the Drag View after the view is inflated + */ + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + if (mDragViewResId != -1) { + mDragView = findViewById(mDragViewResId); + } + } + + /** + * Set the color used to fade the pane covered by the sliding pane out when the pane + * will become fully covered in the expanded state. + * + * @param color An ARGB-packed color value + */ + public void setCoveredFadeColor(int color) { + mCoveredFadeColor = color; + invalidate(); + } + + /** + * @return The ARGB-packed color value used to fade the fixed pane + */ + public int getCoveredFadeColor() { + return mCoveredFadeColor; + } + + /** + * Set sliding enabled flag + * @param enabled flag value + */ + public void setSlidingEnabled(boolean enabled) { + mIsSlidingEnabled = enabled; + } + + /** + * Set the collapsed panel height in pixels + * + * @param val A height in pixels + */ + public void setPanelHeight(int val) { + mPanelHeight = val; + requestLayout(); + } + + /** + * @return The current collapsed panel height + */ + public int getPanelHeight() { + return mPanelHeight; + } + + /** + * @return The current paralax offset + */ + public int getCurrentParalaxOffset() { + int offset = (int)(mParalaxOffset * (1 - mSlideOffset)); + return mIsSlidingUp ? -offset : offset; + } + + /** + * Sets the panel slide listener + * @param listener + */ + public void setPanelSlideListener(PanelSlideListener listener) { + mPanelSlideListener = listener; + } + + /** + * Set the draggable view portion. Use to null, to allow the whole panel to be draggable + * + * @param dragView A view that will be used to drag the panel. + */ + public void setDragView(View dragView) { + mDragView = dragView; + } + + /** + * Set an anchor point where the panel can stop during sliding + * + * @param anchorPoint A value between 0 and 1, determining the position of the anchor point + * starting from the top of the layout. + */ + public void setAnchorPoint(float anchorPoint) { + if (anchorPoint > 0 && anchorPoint < 1) + mAnchorPoint = anchorPoint; + } + + /** + * Sets whether or not the panel overlays the content + * @param overlayed + */ + public void setOverlayed(boolean overlayed) { + mOverlayContent = overlayed; + } + + /** + * Check if the panel is set as an overlay. + */ + public boolean isOverlayed() { + return mOverlayContent; + } + + void dispatchOnPanelSlide(View panel) { + if (mPanelSlideListener != null) { + mPanelSlideListener.onPanelSlide(panel, mSlideOffset); + } + } + + void dispatchOnPanelExpanded(View panel) { + if (mPanelSlideListener != null) { + mPanelSlideListener.onPanelExpanded(panel); + } + sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); + } + + void dispatchOnPanelCollapsed(View panel) { + if (mPanelSlideListener != null) { + mPanelSlideListener.onPanelCollapsed(panel); + } + sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); + } + + void dispatchOnPanelAnchored(View panel) { + if (mPanelSlideListener != null) { + mPanelSlideListener.onPanelAnchored(panel); + } + sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); + } + + void updateObscuredViewVisibility() { + if (getChildCount() == 0) { + return; + } + final int leftBound = getPaddingLeft(); + final int rightBound = getWidth() - getPaddingRight(); + final int topBound = getPaddingTop(); + final int bottomBound = getHeight() - getPaddingBottom(); + final int left; + final int right; + final int top; + final int bottom; + if (mSlideableView != null && hasOpaqueBackground(mSlideableView)) { + left = mSlideableView.getLeft(); + right = mSlideableView.getRight(); + top = mSlideableView.getTop(); + bottom = mSlideableView.getBottom(); + } else { + left = right = top = bottom = 0; + } + View child = getChildAt(0); + final int clampedChildLeft = Math.max(leftBound, child.getLeft()); + final int clampedChildTop = Math.max(topBound, child.getTop()); + final int clampedChildRight = Math.min(rightBound, child.getRight()); + final int clampedChildBottom = Math.min(bottomBound, child.getBottom()); + final int vis; + if (clampedChildLeft >= left && clampedChildTop >= top && + clampedChildRight <= right && clampedChildBottom <= bottom) { + vis = INVISIBLE; + } else { + vis = VISIBLE; + } + child.setVisibility(vis); + } + + void setAllChildrenVisible() { + for (int i = 0, childCount = getChildCount(); i < childCount; i++) { + final View child = getChildAt(i); + if (child.getVisibility() == INVISIBLE) { + child.setVisibility(VISIBLE); + } + } + } + + private static boolean hasOpaqueBackground(View v) { + final Drawable bg = v.getBackground(); + if (bg != null) { + return bg.getOpacity() == PixelFormat.OPAQUE; + } + return false; + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + mFirstLayout = true; + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + mFirstLayout = true; + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + final int widthMode = MeasureSpec.getMode(widthMeasureSpec); + final int widthSize = MeasureSpec.getSize(widthMeasureSpec); + final int heightMode = MeasureSpec.getMode(heightMeasureSpec); + final int heightSize = MeasureSpec.getSize(heightMeasureSpec); + + if (widthMode != MeasureSpec.EXACTLY) { + throw new IllegalStateException("Width must have an exact value or MATCH_PARENT"); + } else if (heightMode != MeasureSpec.EXACTLY) { + throw new IllegalStateException("Height must have an exact value or MATCH_PARENT"); + } + + int layoutHeight = heightSize - getPaddingTop() - getPaddingBottom(); + int panelHeight = mPanelHeight; + + final int childCount = getChildCount(); + + if (childCount > 2) { + Log.e(TAG, "onMeasure: More than two child views are not supported."); + } else if (getChildAt(1).getVisibility() == GONE) { + panelHeight = 0; + } + + // We'll find the current one below. + mSlideableView = null; + mCanSlide = false; + + // First pass. Measure based on child LayoutParams width/height. + for (int i = 0; i < childCount; i++) { + final View child = getChildAt(i); + final LayoutParams lp = (LayoutParams) child.getLayoutParams(); + + int height = layoutHeight; + if (child.getVisibility() == GONE) { + lp.dimWhenOffset = false; + continue; + } + + if (i == 1) { + lp.slideable = true; + lp.dimWhenOffset = true; + mSlideableView = child; + mCanSlide = true; + } else { + if (!mOverlayContent) { + height -= panelHeight; + } + mMainView = child; + } + + int childWidthSpec; + if (lp.width == LayoutParams.WRAP_CONTENT) { + childWidthSpec = MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.AT_MOST); + } else if (lp.width == LayoutParams.MATCH_PARENT) { + childWidthSpec = MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.EXACTLY); + } else { + childWidthSpec = MeasureSpec.makeMeasureSpec(lp.width, MeasureSpec.EXACTLY); + } + + int childHeightSpec; + if (lp.height == LayoutParams.WRAP_CONTENT) { + childHeightSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST); + } else if (lp.height == LayoutParams.MATCH_PARENT) { + childHeightSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); + } else { + childHeightSpec = MeasureSpec.makeMeasureSpec(lp.height, MeasureSpec.EXACTLY); + } + + child.measure(childWidthSpec, childHeightSpec); + } + + setMeasuredDimension(widthSize, heightSize); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + final int paddingLeft = getPaddingLeft(); + final int paddingTop = getPaddingTop(); + final int slidingTop = getSlidingTop(); + + final int childCount = getChildCount(); + + if (mFirstLayout) { + switch (mSlideState) { + case EXPANDED: + mSlideOffset = mCanSlide ? 0.f : 1.f; + break; + case ANCHORED: + mSlideOffset = mCanSlide ? mAnchorPoint : 1.f; + break; + default: + mSlideOffset = 1.f; + break; + } + } + + for (int i = 0; i < childCount; i++) { + final View child = getChildAt(i); + + if (child.getVisibility() == GONE) { + continue; + } + + final LayoutParams lp = (LayoutParams) child.getLayoutParams(); + final int childHeight = child.getMeasuredHeight(); + + if (lp.slideable) { + mSlideRange = childHeight - mPanelHeight; + } + + int childTop; + if (mIsSlidingUp) { + childTop = lp.slideable ? slidingTop + (int) (mSlideRange * mSlideOffset) : paddingTop; + } else { + childTop = lp.slideable ? slidingTop - (int) (mSlideRange * mSlideOffset) : paddingTop; + if (!lp.slideable && !mOverlayContent) { + childTop += mPanelHeight; + } + } + final int childBottom = childTop + childHeight; + final int childLeft = paddingLeft; + final int childRight = childLeft + child.getMeasuredWidth(); + + child.layout(childLeft, childTop, childRight, childBottom); + } + + if (mFirstLayout) { + updateObscuredViewVisibility(); + } + + mFirstLayout = false; + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + // Recalculate sliding panes and their details + if (h != oldh) { + mFirstLayout = true; + } + } + + /** + * Set if the drag view can have its own touch events. If set + * to true, a drag view can scroll horizontally and have its own click listener. + * + * Default is set to false. + */ + public void setEnableDragViewTouchEvents(boolean enabled) { + mIsUsingDragViewTouchEvents = enabled; + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + final int action = MotionEventCompat.getActionMasked(ev); + + if (mAnimation != null || !mCanSlide || !mIsSlidingEnabled || (mIsUnableToDrag && action != MotionEvent.ACTION_DOWN)) { + mDragHelper.cancel(); + return super.onInterceptTouchEvent(ev); + } + + if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP) { + mDragHelper.cancel(); + return false; + } + + final float x = ev.getX(); + final float y = ev.getY(); + boolean interceptTap = false; + + switch (action) { + case MotionEvent.ACTION_DOWN: { + mIsUnableToDrag = false; + mInitialMotionX = x; + mInitialMotionY = y; + if (isDragViewUnder((int) x, (int) y) && !mIsUsingDragViewTouchEvents) { + interceptTap = true; + } + break; + } + + case MotionEvent.ACTION_MOVE: { + final float adx = Math.abs(x - mInitialMotionX); + final float ady = Math.abs(y - mInitialMotionY); + final int dragSlop = mDragHelper.getTouchSlop(); + + // Handle any horizontal scrolling on the drag view. + if (mIsUsingDragViewTouchEvents) { + if (adx > mScrollTouchSlop && ady < mScrollTouchSlop) { + return super.onInterceptTouchEvent(ev); + } + // Intercept the touch if the drag view has any vertical scroll. + // onTouchEvent will determine if the view should drag vertically. + else if (ady > mScrollTouchSlop) { + interceptTap = isDragViewUnder((int) x, (int) y); + } + } + + if ((ady > dragSlop && adx > ady) || !isDragViewUnder((int) x, (int) y)) { + mDragHelper.cancel(); + mIsUnableToDrag = true; + return false; + } + break; + } + } + + final boolean interceptForDrag = mDragHelper.shouldInterceptTouchEvent(ev); + + return interceptForDrag; + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + if (!mCanSlide || !mIsSlidingEnabled || mAnimation != null) { + return super.onTouchEvent(ev); + } + + mDragHelper.processTouchEvent(ev); + + final int action = ev.getAction(); + boolean wantTouchEvents = true; + + switch (action & MotionEventCompat.ACTION_MASK) { + case MotionEvent.ACTION_DOWN: { + final float x = ev.getX(); + final float y = ev.getY(); + + //Fix to allow both SettingPanel Drag and Workspace Drag + if (mSlideState == SlideState.COLLAPSED) { + if (y < mSlideableView.getTop()) { + return false; + } + } + + mInitialMotionX = x; + mInitialMotionY = y; + break; + } + + case MotionEvent.ACTION_UP: { + final float x = ev.getX(); + final float y = ev.getY(); + final float dx = x - mInitialMotionX; + final float dy = y - mInitialMotionY; + final int slop = mDragHelper.getTouchSlop(); + View dragView = mDragView != null ? mDragView : mSlideableView; + if (dx * dx + dy * dy < slop * slop && + isDragViewUnder((int) x, (int) y)) { + dragView.playSoundEffect(SoundEffectConstants.CLICK); + if (!isExpanded() && !isAnchored()) { + expandPane(mAnchorPoint); + } else { + collapsePane(); + } + break; + } + break; + } + } + + return wantTouchEvents; + } + + private boolean isDragViewUnder(int x, int y) { + View dragView = mDragView != null ? mDragView : mSlideableView; + if (dragView == null) return false; + int[] viewLocation = new int[2]; + dragView.getLocationOnScreen(viewLocation); + int[] parentLocation = new int[2]; + this.getLocationOnScreen(parentLocation); + int screenX = parentLocation[0] + x; + int screenY = parentLocation[1] + y; + return screenX >= viewLocation[0] && screenX < viewLocation[0] + dragView.getWidth() && + screenY >= viewLocation[1] && screenY < viewLocation[1] + dragView.getHeight(); + } + + private boolean expandPane(View pane, int initialVelocity, float mSlideOffset) { + if (mFirstLayout || smoothSlideTo(mSlideOffset, initialVelocity)) { + return true; + } + return false; + } + + private boolean collapsePane(View pane, int initialVelocity) { + if (mFirstLayout || smoothSlideTo(1.f, initialVelocity)) { + return true; + } + return false; + } + + private int getSlidingTop() { + if (mSlideableView != null) { + return mIsSlidingUp + ? getMeasuredHeight() - getPaddingBottom() - mSlideableView.getMeasuredHeight() + : getPaddingTop(); + } + + return getMeasuredHeight() - getPaddingBottom(); + } + + /** + * Collapse the sliding pane if it is currently slideable. If first layout + * has already completed this will animate. + * + * @return true if the pane was slideable and is now collapsed/in the process of collapsing + */ + public boolean collapsePane() { + return collapsePane(mSlideableView, 0); + } + + /** + * Expand the sliding pane if it is currently slideable. If first layout + * has already completed this will animate. + * + * @return true if the pane was slideable and is now expanded/in the process of expading + */ + public boolean expandPane() { + return expandPane(0); + } + + /** + * Partially expand the sliding pane up to a specific offset + * + * @param mSlideOffset Value between 0 and 1, where 0 is completely expanded. + * @return true if the pane was slideable and is now expanded/in the process of expading + */ + public boolean expandPane(float mSlideOffset) { + if (!isPaneVisible()) { + showPane(); + } + return expandPane(mSlideableView, 0, mSlideOffset); + } + + /** + * Check if the layout is completely expanded. + * + * @return true if sliding panels are completely expanded + */ + public boolean isExpanded() { + return mSlideState == SlideState.EXPANDED; + } + + /** + * Check if the layout is anchored in an intermediate point. + * + * @return true if sliding panels are anchored + */ + public boolean isAnchored() { + return mSlideState == SlideState.ANCHORED; + } + + /** + * Check if the content in this layout cannot fully fit side by side and therefore + * the content pane can be slid back and forth. + * + * @return true if content in this layout can be expanded + */ + public boolean isSlideable() { + return mCanSlide; + } + + public boolean isPaneVisible() { + if (getChildCount() < 2) { + return false; + } + View slidingPane = getChildAt(1); + return slidingPane.getVisibility() == View.VISIBLE; + } + + public void showPane() { + if (getChildCount() < 2) { + return; + } + final View slidingPane = getChildAt(1); + mAnimation = new TranslateAnimation(0, 0, (mIsSlidingUp ? 1 : -1) * getPanelHeight(), 0); + mAnimation.setDuration(400); + mAnimation.setAnimationListener(new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + slidingPane.setVisibility(View.VISIBLE); + } + + @Override + public void onAnimationEnd(Animation animation) { + requestLayout(); + mAnimation = null; + } + + @Override + public void onAnimationRepeat(Animation animation) { + } + }); + slidingPane.startAnimation(mAnimation); + } + + public void hidePane() { + if (mSlideableView == null) { + return; + } + mAnimation = new TranslateAnimation(0, 0, 0, (mIsSlidingUp ? 1 : -1) * getPanelHeight()); + mAnimation.setDuration(500); + mAnimation.setAnimationListener(new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + + } + + @Override + public void onAnimationEnd(Animation animation) { + mSlideableView.setVisibility(View.GONE); + requestLayout(); + mAnimation = null; + } + + @Override + public void onAnimationRepeat(Animation animation) { + + } + }); + mSlideableView.startAnimation(mAnimation); + } + + private void onPanelDragged(int newTop) { + final int topBound = getSlidingTop(); + mSlideOffset = mIsSlidingUp + ? (float) (newTop - topBound) / mSlideRange + : (float) (topBound - newTop) / mSlideRange; + dispatchOnPanelSlide(mSlideableView); + + if (mParalaxOffset > 0) { + int mainViewOffset = getCurrentParalaxOffset(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + mMainView.setTranslationY(mainViewOffset); + } else { + mMainView.animate().translationY(mainViewOffset); + } + } + } + + @Override + protected boolean drawChild(Canvas canvas, View child, long drawingTime) { + final LayoutParams lp = (LayoutParams) child.getLayoutParams(); + boolean result; + final int save = canvas.save(Canvas.CLIP_SAVE_FLAG); + + boolean drawScrim = false; + + if (mCanSlide && !lp.slideable && mSlideableView != null) { + // Clip against the slider; no sense drawing what will immediately be covered, + // Unless the panel is set to overlay content + if (!mOverlayContent) { + canvas.getClipBounds(mTmpRect); + if (mIsSlidingUp) { + mTmpRect.bottom = Math.min(mTmpRect.bottom, mSlideableView.getTop()); + } else { + mTmpRect.top = Math.max(mTmpRect.top, mSlideableView.getBottom()); + } + canvas.clipRect(mTmpRect); + } + if (mSlideOffset < 1) { + drawScrim = true; + } + } + + result = super.drawChild(canvas, child, drawingTime); + canvas.restoreToCount(save); + + if (drawScrim) { + final int baseAlpha = (mCoveredFadeColor & 0xff000000) >>> 24; + final int imag = (int) (baseAlpha * (1 - mSlideOffset)); + final int color = imag << 24 | (mCoveredFadeColor & 0xffffff); + mCoveredFadePaint.setColor(color); + canvas.drawRect(mTmpRect, mCoveredFadePaint); + } + + return result; + } + + /** + * Smoothly animate mDraggingPane to the target X position within its range. + * + * @param slideOffset position to animate to + * @param velocity initial velocity in case of fling, or 0. + */ + boolean smoothSlideTo(float slideOffset, int velocity) { + if (!mCanSlide) { + // Nothing to do. + return false; + } + + final int topBound = getSlidingTop(); + int y = mIsSlidingUp + ? (int) (topBound + slideOffset * mSlideRange) + : (int) (topBound - slideOffset * mSlideRange); + + if (mDragHelper.smoothSlideViewTo(mSlideableView, mSlideableView.getLeft(), y)) { + setAllChildrenVisible(); + ViewCompat.postInvalidateOnAnimation(this); + return true; + } + return false; + } + + @Override + public void computeScroll() { + if (mDragHelper.continueSettling(true)) { + if (!mCanSlide) { + mDragHelper.abort(); + return; + } + + ViewCompat.postInvalidateOnAnimation(this); + } + } + + @Override + public void draw(Canvas c) { + super.draw(c); + + if (mSlideableView == null) { + // No need to draw a shadow if we don't have one. + return; + } + + final int right = mSlideableView.getRight(); + final int top; + final int bottom; + if (mIsSlidingUp) { + top = mSlideableView.getTop() - mShadowHeight; + bottom = mSlideableView.getTop(); + } else { + top = mSlideableView.getBottom(); + bottom = mSlideableView.getBottom() + mShadowHeight; + } + final int left = mSlideableView.getLeft(); + + if (mShadowDrawable != null) { + mShadowDrawable.setBounds(left, top, right, bottom); + mShadowDrawable.draw(c); + } + } + + /** + * Tests scrollability within child views of v given a delta of dx. + * + * @param v View to test for horizontal scrollability + * @param checkV Whether the view v passed should itself be checked for scrollability (true), + * or just its children (false). + * @param dx Delta scrolled in pixels + * @param x X coordinate of the active touch point + * @param y Y coordinate of the active touch point + * @return true if child views of v can be scrolled by delta of dx. + */ + protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) { + if (v instanceof ViewGroup) { + final ViewGroup group = (ViewGroup) v; + final int scrollX = v.getScrollX(); + final int scrollY = v.getScrollY(); + final int count = group.getChildCount(); + // Count backwards - let topmost views consume scroll distance first. + for (int i = count - 1; i >= 0; i--) { + final View child = group.getChildAt(i); + if (x + scrollX >= child.getLeft() && x + scrollX < child.getRight() && + y + scrollY >= child.getTop() && y + scrollY < child.getBottom() && + canScroll(child, true, dx, x + scrollX - child.getLeft(), + y + scrollY - child.getTop())) { + return true; + } + } + } + return checkV && ViewCompat.canScrollHorizontally(v, -dx); + } + + + @Override + protected ViewGroup.LayoutParams generateDefaultLayoutParams() { + return new LayoutParams(); + } + + @Override + protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) { + return p instanceof MarginLayoutParams + ? new LayoutParams((MarginLayoutParams) p) + : new LayoutParams(p); + } + + @Override + protected boolean checkLayoutParams(ViewGroup.LayoutParams p) { + return p instanceof LayoutParams && super.checkLayoutParams(p); + } + + @Override + public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs) { + return new LayoutParams(getContext(), attrs); + } + + @Override + protected Parcelable onSaveInstanceState() { + Parcelable superState = super.onSaveInstanceState(); + + SavedState ss = new SavedState(superState); + ss.mSlideState = mSlideState; + + return ss; + } + + @Override + protected void onRestoreInstanceState(Parcelable state) { + SavedState ss = (SavedState) state; + super.onRestoreInstanceState(ss.getSuperState()); + mSlideState = ss.mSlideState; + } + + private class DragHelperCallback extends ViewDragHelper.Callback { + + @Override + public boolean tryCaptureView(View child, int pointerId) { + if (mIsUnableToDrag) { + return false; + } + + return ((LayoutParams) child.getLayoutParams()).slideable; + } + + @Override + public void onViewDragStateChanged(int state) { + int anchoredTop = (int)(mAnchorPoint*mSlideRange); + + if (mDragHelper.getViewDragState() == ViewDragHelper.STATE_IDLE) { + if (mSlideOffset == 0) { + if (mSlideState != SlideState.EXPANDED) { + updateObscuredViewVisibility(); + dispatchOnPanelExpanded(mSlideableView); + mSlideState = SlideState.EXPANDED; + } + } else if (mSlideOffset == (float)anchoredTop/(float)mSlideRange) { + if (mSlideState != SlideState.ANCHORED) { + updateObscuredViewVisibility(); + dispatchOnPanelAnchored(mSlideableView); + mSlideState = SlideState.ANCHORED; + } + } else if (mSlideState != SlideState.COLLAPSED) { + dispatchOnPanelCollapsed(mSlideableView); + mSlideState = SlideState.COLLAPSED; + } + } + } + + @Override + public void onViewCaptured(View capturedChild, int activePointerId) { + // Make all child views visible in preparation for sliding things around + setAllChildrenVisible(); + } + + @Override + public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) { + onPanelDragged(top); + invalidate(); + } + + @Override + public void onViewReleased(View releasedChild, float xvel, float yvel) { + int top = mIsSlidingUp + ? getSlidingTop() + : getSlidingTop() - mSlideRange; + + if (mAnchorPoint != 0) { + int anchoredTop; + float anchorOffset; + if (mIsSlidingUp) { + anchoredTop = (int)(mAnchorPoint*mSlideRange); + anchorOffset = (float)anchoredTop/(float)mSlideRange; + } else { + anchoredTop = mPanelHeight - (int)(mAnchorPoint*mSlideRange); + anchorOffset = (float)(mPanelHeight - anchoredTop)/(float)mSlideRange; + } + + if (yvel > 0 || (yvel == 0 && mSlideOffset >= (1f+anchorOffset)/2)) { + top += mSlideRange; + } else if (yvel == 0 && mSlideOffset < (1f+anchorOffset)/2 + && mSlideOffset >= anchorOffset/2) { + top += mSlideRange * mAnchorPoint; + } + + } else if (yvel > 0 || (yvel == 0 && mSlideOffset > 0.5f)) { + top += mSlideRange; + } + + mDragHelper.settleCapturedViewAt(releasedChild.getLeft(), top); + invalidate(); + } + + @Override + public int getViewVerticalDragRange(View child) { + return mSlideRange; + } + + @Override + public int clampViewPositionVertical(View child, int top, int dy) { + final int topBound; + final int bottomBound; + if (mIsSlidingUp) { + topBound = getSlidingTop(); + bottomBound = topBound + mSlideRange; + } else { + bottomBound = getPaddingTop(); + topBound = bottomBound - mSlideRange; + } + + return Math.min(Math.max(top, topBound), bottomBound); + } + } + + public static class LayoutParams extends ViewGroup.MarginLayoutParams { + private static final int[] ATTRS = new int[] { + android.R.attr.layout_weight + }; + + /** + * True if this pane is the slideable pane in the layout. + */ + boolean slideable; + + /** + * True if this view should be drawn dimmed + * when it's been offset from its default position. + */ + boolean dimWhenOffset; + + Paint dimPaint; + + public LayoutParams() { + super(MATCH_PARENT, MATCH_PARENT); + } + + public LayoutParams(int width, int height) { + super(width, height); + } + + public LayoutParams(android.view.ViewGroup.LayoutParams source) { + super(source); + } + + public LayoutParams(MarginLayoutParams source) { + super(source); + } + + public LayoutParams(LayoutParams source) { + super(source); + } + + public LayoutParams(Context c, AttributeSet attrs) { + super(c, attrs); + + final TypedArray a = c.obtainStyledAttributes(attrs, ATTRS); + a.recycle(); + } + + } + + static class SavedState extends BaseSavedState { + SlideState mSlideState; + + SavedState(Parcelable superState) { + super(superState); + } + + private SavedState(Parcel in) { + super(in); + try { + mSlideState = Enum.valueOf(SlideState.class, in.readString()); + } catch (IllegalArgumentException e) { + mSlideState = SlideState.COLLAPSED; + } + } + + @Override + public void writeToParcel(Parcel out, int flags) { + super.writeToParcel(out, flags); + out.writeString(mSlideState.toString()); + } + + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + @Override + public SavedState createFromParcel(Parcel in) { + return new SavedState(in); + } + + @Override + public SavedState[] newArray(int size) { + return new SavedState[size]; + } + }; + } +} diff --git a/src/com/android/launcher3/TransitionEffectsFragment.java b/src/com/android/launcher3/TransitionEffectsFragment.java new file mode 100644 index 000000000..69231a8f0 --- /dev/null +++ b/src/com/android/launcher3/TransitionEffectsFragment.java @@ -0,0 +1,222 @@ +package com.android.launcher3; + +import android.animation.Animator; +import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; +import android.app.Fragment; +import android.content.Context; +import android.content.Intent; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Color; +import android.graphics.drawable.AnimationDrawable; +import android.os.Bundle; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.ScrollView; +import android.widget.TextView; +import com.android.launcher3.settings.SettingsProvider; + +public class TransitionEffectsFragment extends Fragment { + public static final String PAGE_OR_DRAWER_SCROLL_SELECT = "pageOrDrawer"; + public static final String SELECTED_TRANSITION_EFFECT = "selectedTransitionEffect"; + public static final String TRANSITION_EFFECTS_FRAGMENT = "transitionEffectsFragment"; + ImageView mTransitionIcon; + ListView mListView; + View mCurrentSelection; + ScrollView mScrollView; + + String[] mTransitionStates; + TypedArray mTransitionDrawables; + String mCurrentState; + int mCurrentPosition; + boolean mPageOrDrawer; + String mSettingsProviderValue; + int mPreferenceValue; + + OnClickListener mSettingsItemListener = new OnClickListener() { + + @Override + public void onClick(View v) { + if (mCurrentPosition == (Integer) v.getTag()) { + return; + } + mCurrentPosition = (Integer) v.getTag(); + mCurrentState = mTransitionStates[mCurrentPosition]; + + setCleared(mCurrentSelection); + setSelected(v); + mCurrentSelection = v; + + new Thread(new Runnable() { + public void run() { + mTransitionIcon.post(new Runnable() { + public void run() { + setImageViewToEffect(); + } + }); + } + }).start(); + + ((TransitionsArrayAdapter) mListView.getAdapter()).notifyDataSetChanged(); + } + }; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.settings_transitions_screen, container, false); + + mPageOrDrawer = getArguments().getBoolean(PAGE_OR_DRAWER_SCROLL_SELECT); + + mSettingsProviderValue = mPageOrDrawer ? + SettingsProvider.SETTINGS_UI_DRAWER_SCROLLING_TRANSITION_EFFECT + : SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_TRANSITION_EFFECT; + mPreferenceValue = mPageOrDrawer ? R.string.preferences_interface_drawer_scrolling_transition_effect + : R.string.preferences_interface_homescreen_scrolling_transition_effect; + + mTransitionIcon = (ImageView) v.findViewById(R.id.settings_transition_image); + mListView = (ListView) v.findViewById(R.id.settings_transitions_list); + mScrollView = (ScrollView) v.findViewById(R.id.scroll_view); + TextView title = (TextView) v.findViewById(R.id.transition_effect_title); + title.setText(mPageOrDrawer ? getResources().getString( + R.string.drawer_scroll_effect_text) : getResources().getString( + R.string.page_scroll_effect_text)); + LinearLayout titleLayout = (LinearLayout) v.findViewById(R.id.transition_title); + titleLayout.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + setEffect(); + } + }); + + String[] titles = getResources().getStringArray( + R.array.transition_effect_entries); + mListView.setAdapter(new TransitionsArrayAdapter(getActivity(), + R.layout.settings_pane_list_item, titles)); + + mTransitionStates = getResources().getStringArray( + R.array.transition_effect_values); + mTransitionDrawables = getResources().obtainTypedArray( + R.array.transition_effect_drawables); + + mCurrentState = SettingsProvider.getString(getActivity(), + mSettingsProviderValue, mPreferenceValue); + mCurrentPosition = mapEffectToPosition(mCurrentState); + + mListView.setSelection(mCurrentPosition); + + return v; + } + + public void setEffect() { + ((Launcher) getActivity()).setTransitionEffect(mPageOrDrawer, mCurrentState); + } + + private int mapEffectToPosition(String effect) { + int length = mTransitionStates.length; + for (int i = 0; i < length; i++) { + if (effect.equals(mTransitionStates[i])) { + return i; + } + } + return -1; + } + + private void setImageViewToEffect() { + mTransitionIcon.setBackgroundResource(mTransitionDrawables + .getResourceId(mCurrentPosition, R.drawable.transition_none)); + + AnimationDrawable frameAnimation = (AnimationDrawable) mTransitionIcon.getBackground(); + frameAnimation.start(); + } + + private void setSelected(View v) { + v.setBackgroundColor(Color.WHITE); + TextView t = (TextView) v.findViewById(R.id.item_name); + t.setTextColor(getResources().getColor(R.color.settings_bg_color)); + } + + private void setCleared(View v) { + v.setBackgroundColor(getResources().getColor(R.color.settings_bg_color)); + TextView t = (TextView) v.findViewById(R.id.item_name); + t.setTextColor(Color.WHITE); + } + + @Override + public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) { + if (enter) { + DisplayMetrics displaymetrics = new DisplayMetrics(); + getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); + int width = displaymetrics.widthPixels; + final ObjectAnimator anim = ObjectAnimator.ofFloat(this, "translationX", width, 0); + + final View darkPanel = ((Launcher) getActivity()).getDarkPanel(); + darkPanel.setVisibility(View.VISIBLE); + ObjectAnimator anim2 = ObjectAnimator.ofFloat( + darkPanel , "alpha", 0.0f, 0.3f); + anim2.start(); + + anim.addListener(new Animator.AnimatorListener() { + @Override + public void onAnimationStart(Animator arg0) {} + @Override + public void onAnimationRepeat(Animator arg0) {} + @Override + public void onAnimationEnd(Animator arg0) { + darkPanel.setVisibility(View.GONE); + setImageViewToEffect(); + } + @Override + public void onAnimationCancel(Animator arg0) {} + }); + + return anim; + } else { + return super.onCreateAnimator(transit, enter, nextAnim); + } + } + + private class TransitionsArrayAdapter extends ArrayAdapter { + Context mContext; + String[] titles; + + public TransitionsArrayAdapter(Context context, int textViewResourceId, + String[] objects) { + super(context, textViewResourceId, objects); + + mContext = context; + titles = objects; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + LayoutInflater inflater = (LayoutInflater) mContext + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + convertView = inflater.inflate(R.layout.settings_pane_list_item, + parent, false); + TextView textView = (TextView) convertView + .findViewById(R.id.item_name); + textView.setText(titles[position]); + // Set Selected State + if (position == mCurrentPosition) { + mCurrentSelection = convertView; + setSelected(mCurrentSelection); + } + + convertView.setOnClickListener(mSettingsItemListener); + convertView.setTag(position); + return convertView; + } + } +} \ No newline at end of file diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 37bd8aa73..d70875a42 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -55,6 +55,8 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityManager; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; import android.view.animation.DecelerateInterpolator; import android.view.animation.Interpolator; import android.widget.TextView; @@ -62,6 +64,7 @@ import android.widget.TextView; import com.android.launcher3.FolderIcon.FolderRingAnimator; import com.android.launcher3.Launcher.CustomContentCallbacks; import com.android.launcher3.LauncherSettings.Favorites; +import com.android.launcher3.backup.BackupProtos; import com.android.launcher3.settings.SettingsProvider; import java.util.ArrayList; @@ -864,6 +867,8 @@ public class Workspace extends SmoothPagedView */ void addInScreen(View child, long container, long screenId, int x, int y, int spanX, int spanY, boolean insert, boolean computeXYFromRank) { + //Reload settings + reloadSettings(); if (container == LauncherSettings.Favorites.CONTAINER_DESKTOP) { if (getScreenWithId(screenId) == null) { Log.e(TAG, "Skipping child, screenId " + screenId + " not found"); @@ -1900,7 +1905,7 @@ public class Workspace extends SmoothPagedView mDefaultScreenId = getScreenIdForPageIndex(getPageNearestToCenterOfScreen()); - exitOverviewMode(getPageNearestToCenterOfScreen(), true); + updateDefaultScreenButton(); SettingsProvider.get(mLauncher).edit() .putLong(SettingsProvider.SETTINGS_UI_HOMESCREEN_DEFAULT_SCREEN_ID, mDefaultScreenId) @@ -1972,6 +1977,9 @@ public class Workspace extends SmoothPagedView } private void enableOverviewMode(boolean enable, int snapPage, boolean animated) { + //Check to see if Settings need to taken + reloadSettings(); + State finalState = Workspace.State.OVERVIEW; if (!enable) { finalState = Workspace.State.NORMAL; @@ -1995,7 +2003,7 @@ public class Workspace extends SmoothPagedView int getOverviewModeTranslationY() { int childHeight = getNormalChildHeight(); int viewPortHeight = getViewportHeight(); - int scaledChildHeight = (int) (mOverviewModeShrinkFactor * childHeight); + int scaledChildHeight = (int) (getOverviewModeScaleY() * childHeight); int offset = (viewPortHeight - scaledChildHeight) / 2; int offsetDelta = mOverviewModePageOffset - offset + mInsets.top; @@ -2003,6 +2011,21 @@ public class Workspace extends SmoothPagedView return offsetDelta; } + float getOverviewModeScaleY() { + float childHeight = getNormalChildHeight(); + int viewPortHeight = getViewportHeight(); + + Resources res = getResources(); + int top = res.getDimensionPixelSize(R.dimen.overview_panel_top_padding); + top += res.getDimensionPixelSize(R.dimen.sliding_panel_padding); + top += res.getDimensionPixelSize(R.dimen.overview_scaling_padding); + + float scaledChildHeight = viewPortHeight - top; + + float scale = scaledChildHeight / childHeight; + return scale; + } + boolean shouldVoiceButtonProxyBeVisible() { if (isOnOrMovingToCustomContent()) { return false; @@ -2070,15 +2093,13 @@ public class Workspace extends SmoothPagedView if (oldStateIsOverview) { disableFreeScroll(snapPage); - } else if (stateIsOverview) { - enableFreeScroll(); } if (state != State.NORMAL) { if (stateIsSpringLoaded) { mNewScale = mSpringLoadedShrinkFactor; } else if (stateIsOverview) { - mNewScale = mOverviewModeShrinkFactor; + mNewScale = getOverviewModeScaleY(); } else if (stateIsSmall){ mNewScale = mOverviewModeShrinkFactor - 0.3f; } @@ -2217,7 +2238,10 @@ public class Workspace extends SmoothPagedView pageIndicatorAlpha.addListener(new AlphaUpdateListener(getPageIndicator())); } - anim.play(overviewPanelAlpha); + overviewPanel.setAlpha(finalOverviewPanelAlpha); + AlphaUpdateListener.updateVisibility(overviewPanel); + Animation animation = AnimationUtils.loadAnimation(mLauncher, R.anim.drop_down); + overviewPanel.startAnimation(animation); anim.play(hotseatAlpha); if (mShowSearchBar) anim.play(searchBarAlpha); anim.play(pageIndicatorAlpha); @@ -4592,4 +4616,29 @@ public class Workspace extends SmoothPagedView public void getLocationInDragLayer(int[] loc) { mLauncher.getDragLayer().getLocationInDragLayer(this, loc); } + + private void reloadSettings() { + mShowSearchBar = SettingsProvider.getBoolean(mLauncher, SettingsProvider.SETTINGS_UI_HOMESCREEN_SEARCH, + R.bool.preferences_interface_homescreen_search_default); + mShowOutlines = SettingsProvider.getBoolean(mLauncher, + SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_PAGE_OUTLINES, + R.bool.preferences_interface_homescreen_scrolling_page_outlines_default); + mHideIconLabels = SettingsProvider.getBoolean(mLauncher, + SettingsProvider.SETTINGS_UI_HOMESCREEN_HIDE_ICON_LABELS, + R.bool.preferences_interface_homescreen_hide_icon_labels_default); + mWorkspaceFadeInAdjacentScreens = SettingsProvider.getBoolean(mLauncher, + SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_FADE_ADJACENT, + R.bool.preferences_interface_homescreen_scrolling_fade_adjacent_default); + TransitionEffect.setFromString(this, SettingsProvider.getString(mLauncher, + SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_TRANSITION_EFFECT, + R.string.preferences_interface_homescreen_scrolling_transition_effect)); + } + + public boolean getShowSearchBar() { + return mShowSearchBar; + } + + public boolean getHideIconLables() { + return mHideIconLabels; + } } diff --git a/src/com/android/launcher3/list/AutoScrollListView.java b/src/com/android/launcher3/list/AutoScrollListView.java new file mode 100644 index 000000000..66336bc71 --- /dev/null +++ b/src/com/android/launcher3/list/AutoScrollListView.java @@ -0,0 +1,117 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher3.list; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.ListView; + +/** + * A ListView that can be asked to scroll (smoothly or otherwise) to a specific + * position. This class takes advantage of similar functionality that exists + * in {@link ListView} and enhances it. + */ +public class AutoScrollListView extends ListView { + + /** + * Position the element at about 1/3 of the list height + */ + private static final float PREFERRED_SELECTION_OFFSET_FROM_TOP = 0.33f; + + private int mRequestedScrollPosition = -1; + private boolean mSmoothScrollRequested; + + public AutoScrollListView(Context context) { + super(context); + } + + public AutoScrollListView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public AutoScrollListView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + /** + * Brings the specified position to view by optionally performing a jump-scroll maneuver: + * first it jumps to some position near the one requested and then does a smooth + * scroll to the requested position. This creates an impression of full smooth + * scrolling without actually traversing the entire list. If smooth scrolling is + * not requested, instantly positions the requested item at a preferred offset. + */ + public void requestPositionToScreen(int position, boolean smoothScroll) { + mRequestedScrollPosition = position; + mSmoothScrollRequested = smoothScroll; + requestLayout(); + } + + @Override + protected void layoutChildren() { + super.layoutChildren(); + if (mRequestedScrollPosition == -1) { + return; + } + + final int position = mRequestedScrollPosition; + mRequestedScrollPosition = -1; + + int firstPosition = getFirstVisiblePosition() + 1; + int lastPosition = getLastVisiblePosition(); + if (position >= firstPosition && position <= lastPosition) { + return; // Already on screen + } + + final int offset = (int) (getHeight() * PREFERRED_SELECTION_OFFSET_FROM_TOP); + if (!mSmoothScrollRequested) { + setSelectionFromTop(position, offset); + + // Since we have changed the scrolling position, we need to redo child layout + // Calling "requestLayout" in the middle of a layout pass has no effect, + // so we call layoutChildren explicitly + super.layoutChildren(); + + } else { + // We will first position the list a couple of screens before or after + // the new selection and then scroll smoothly to it. + int twoScreens = (lastPosition - firstPosition) * 2; + int preliminaryPosition; + if (position < firstPosition) { + preliminaryPosition = position + twoScreens; + if (preliminaryPosition >= getCount()) { + preliminaryPosition = getCount() - 1; + } + if (preliminaryPosition < firstPosition) { + setSelection(preliminaryPosition); + super.layoutChildren(); + } + } else { + preliminaryPosition = position - twoScreens; + if (preliminaryPosition < 0) { + preliminaryPosition = 0; + } + if (preliminaryPosition > lastPosition) { + setSelection(preliminaryPosition); + super.layoutChildren(); + } + } + + + smoothScrollToPositionFromTop(position, offset); + } + } +} diff --git a/src/com/android/launcher3/list/CompositeCursorAdapter.java b/src/com/android/launcher3/list/CompositeCursorAdapter.java new file mode 100644 index 000000000..b1ddb67fb --- /dev/null +++ b/src/com/android/launcher3/list/CompositeCursorAdapter.java @@ -0,0 +1,532 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.launcher3.list; + +import android.content.Context; +import android.database.Cursor; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; + +import java.util.ArrayList; + +/** + * A general purpose adapter that is composed of multiple cursors. It just + * appends them in the order they are added. + */ +public abstract class CompositeCursorAdapter extends BaseAdapter { + + private static final int INITIAL_CAPACITY = 2; + + public static class Partition { + boolean showIfEmpty; + boolean hasHeader; + + Cursor cursor; + int idColumnIndex; + int count; + + public Partition(boolean showIfEmpty, boolean hasHeader) { + this.showIfEmpty = showIfEmpty; + this.hasHeader = hasHeader; + } + + /** + * True if the directory should be shown even if no contacts are found. + */ + public boolean getShowIfEmpty() { + return showIfEmpty; + } + + public boolean getHasHeader() { + return hasHeader; + } + } + + private final Context mContext; + private ArrayList mPartitions; + private int mCount = 0; + private boolean mCacheValid = true; + private boolean mNotificationsEnabled = true; + private boolean mNotificationNeeded; + + public CompositeCursorAdapter(Context context) { + this(context, INITIAL_CAPACITY); + } + + public CompositeCursorAdapter(Context context, int initialCapacity) { + mContext = context; + mPartitions = new ArrayList(); + } + + public Context getContext() { + return mContext; + } + + /** + * Registers a partition. The cursor for that partition can be set later. + * Partitions should be added in the order they are supposed to appear in the + * list. + */ + public void addPartition(boolean showIfEmpty, boolean hasHeader) { + addPartition(new Partition(showIfEmpty, hasHeader)); + } + + public void addPartition(Partition partition) { + mPartitions.add(partition); + invalidate(); + notifyDataSetChanged(); + } + + public void addPartition(int location, Partition partition) { + mPartitions.add(location, partition); + invalidate(); + notifyDataSetChanged(); + } + + public void removePartition(int partitionIndex) { + Cursor cursor = mPartitions.get(partitionIndex).cursor; + if (cursor != null && !cursor.isClosed()) { + cursor.close(); + } + mPartitions.remove(partitionIndex); + invalidate(); + notifyDataSetChanged(); + } + + /** + * Removes cursors for all partitions. + */ + // TODO: Is this really what this is supposed to do? Just remove the cursors? Not close them? + // Not remove the partitions themselves? Isn't this leaking? + + public void clearPartitions() { + for (Partition partition : mPartitions) { + partition.cursor = null; + } + invalidate(); + notifyDataSetChanged(); + } + + /** + * Closes all cursors and removes all partitions. + */ + public void close() { + for (Partition partition : mPartitions) { + Cursor cursor = partition.cursor; + if (cursor != null && !cursor.isClosed()) { + cursor.close(); + } + } + mPartitions.clear(); + invalidate(); + notifyDataSetChanged(); + } + + public void setHasHeader(int partitionIndex, boolean flag) { + mPartitions.get(partitionIndex).hasHeader = flag; + invalidate(); + } + + public void setShowIfEmpty(int partitionIndex, boolean flag) { + mPartitions.get(partitionIndex).showIfEmpty = flag; + invalidate(); + } + + public Partition getPartition(int partitionIndex) { + return mPartitions.get(partitionIndex); + } + + protected void invalidate() { + mCacheValid = false; + } + + public int getPartitionCount() { + return mPartitions.size(); + } + + protected void ensureCacheValid() { + if (mCacheValid) { + return; + } + + mCount = 0; + for (Partition partition : mPartitions) { + Cursor cursor = partition.cursor; + int count = cursor != null ? cursor.getCount() : 0; + if (partition.hasHeader) { + if (count != 0 || partition.showIfEmpty) { + count++; + } + } + partition.count = count; + mCount += count; + } + + mCacheValid = true; + } + + /** + * Returns true if the specified partition was configured to have a header. + */ + public boolean hasHeader(int partition) { + return mPartitions.get(partition).hasHeader; + } + + /** + * Returns the total number of list items in all partitions. + */ + public int getCount() { + ensureCacheValid(); + return mCount; + } + + /** + * Returns the cursor for the given partition + */ + public Cursor getCursor(int partition) { + return mPartitions.get(partition).cursor; + } + + /** + * Changes the cursor for an individual partition. + */ + public void changeCursor(int partition, Cursor cursor) { + Cursor prevCursor = mPartitions.get(partition).cursor; + if (prevCursor != cursor) { + if (prevCursor != null && !prevCursor.isClosed()) { + prevCursor.close(); + } + mPartitions.get(partition).cursor = cursor; + if (cursor != null) { + mPartitions.get(partition).idColumnIndex = cursor.getColumnIndex("_id"); + } + invalidate(); + notifyDataSetChanged(); + } + } + + /** + * Returns true if the specified partition has no cursor or an empty cursor. + */ + public boolean isPartitionEmpty(int partition) { + Cursor cursor = mPartitions.get(partition).cursor; + return cursor == null || cursor.getCount() == 0; + } + + /** + * Given a list position, returns the index of the corresponding partition. + */ + public int getPartitionForPosition(int position) { + ensureCacheValid(); + int start = 0; + for (int i = 0, n = mPartitions.size(); i < n; i++) { + int end = start + mPartitions.get(i).count; + if (position >= start && position < end) { + return i; + } + start = end; + } + return -1; + } + + /** + * Given a list position, return the offset of the corresponding item in its + * partition. The header, if any, will have offset -1. + */ + public int getOffsetInPartition(int position) { + ensureCacheValid(); + int start = 0; + for (Partition partition : mPartitions) { + int end = start + partition.count; + if (position >= start && position < end) { + int offset = position - start; + if (partition.hasHeader) { + offset--; + } + return offset; + } + start = end; + } + return -1; + } + + /** + * Returns the first list position for the specified partition. + */ + public int getPositionForPartition(int partition) { + ensureCacheValid(); + int position = 0; + for (int i = 0; i < partition; i++) { + position += mPartitions.get(i).count; + } + return position; + } + + @Override + public int getViewTypeCount() { + return getItemViewTypeCount() + 1; + } + + /** + * Returns the overall number of item view types across all partitions. An + * implementation of this method needs to ensure that the returned count is + * consistent with the values returned by {@link #getItemViewType(int,int)}. + */ + public int getItemViewTypeCount() { + return 1; + } + + /** + * Returns the view type for the list item at the specified position in the + * specified partition. + */ + protected int getItemViewType(int partition, int position) { + return 1; + } + + @Override + public int getItemViewType(int position) { + ensureCacheValid(); + int start = 0; + for (int i = 0, n = mPartitions.size(); i < n; i++) { + int end = start + mPartitions.get(i).count; + if (position >= start && position < end) { + int offset = position - start; + if (mPartitions.get(i).hasHeader) { + offset--; + } + if (offset == -1) { + return IGNORE_ITEM_VIEW_TYPE; + } else { + return getItemViewType(i, offset); + } + } + start = end; + } + + throw new ArrayIndexOutOfBoundsException(position); + } + + public View getView(int position, View convertView, ViewGroup parent) { + ensureCacheValid(); + int start = 0; + for (int i = 0, n = mPartitions.size(); i < n; i++) { + int end = start + mPartitions.get(i).count; + if (position >= start && position < end) { + int offset = position - start; + if (mPartitions.get(i).hasHeader) { + offset--; + } + View view; + if (offset == -1) { + view = getHeaderView(i, mPartitions.get(i).cursor, convertView, parent); + } else { + if (!mPartitions.get(i).cursor.moveToPosition(offset)) { + throw new IllegalStateException("Couldn't move cursor to position " + + offset); + } + view = getView(i, mPartitions.get(i).cursor, offset, convertView, parent); + } + if (view == null) { + throw new NullPointerException("View should not be null, partition: " + i + + " position: " + offset); + } + return view; + } + start = end; + } + + throw new ArrayIndexOutOfBoundsException(position); + } + + /** + * Returns the header view for the specified partition, creating one if needed. + */ + protected View getHeaderView(int partition, Cursor cursor, View convertView, + ViewGroup parent) { + View view = convertView != null + ? convertView + : newHeaderView(mContext, partition, cursor, parent); + bindHeaderView(view, partition, cursor); + return view; + } + + /** + * Creates the header view for the specified partition. + */ + protected View newHeaderView(Context context, int partition, Cursor cursor, + ViewGroup parent) { + return null; + } + + /** + * Binds the header view for the specified partition. + */ + protected void bindHeaderView(View view, int partition, Cursor cursor) { + } + + /** + * Returns an item view for the specified partition, creating one if needed. + */ + protected View getView(int partition, Cursor cursor, int position, View convertView, + ViewGroup parent) { + View view; + if (convertView != null) { + view = convertView; + } else { + view = newView(mContext, partition, cursor, position, parent); + } + bindView(view, partition, cursor, position); + return view; + } + + /** + * Creates an item view for the specified partition and position. Position + * corresponds directly to the current cursor position. + */ + protected abstract View newView(Context context, int partition, Cursor cursor, int position, + ViewGroup parent); + + /** + * Binds an item view for the specified partition and position. Position + * corresponds directly to the current cursor position. + */ + protected abstract void bindView(View v, int partition, Cursor cursor, int position); + + /** + * Returns a pre-positioned cursor for the specified list position. + */ + public Object getItem(int position) { + ensureCacheValid(); + int start = 0; + for (Partition mPartition : mPartitions) { + int end = start + mPartition.count; + if (position >= start && position < end) { + int offset = position - start; + if (mPartition.hasHeader) { + offset--; + } + if (offset == -1) { + return null; + } + Cursor cursor = mPartition.cursor; + cursor.moveToPosition(offset); + return cursor; + } + start = end; + } + + return null; + } + + /** + * Returns the item ID for the specified list position. + */ + public long getItemId(int position) { + ensureCacheValid(); + int start = 0; + for (Partition mPartition : mPartitions) { + int end = start + mPartition.count; + if (position >= start && position < end) { + int offset = position - start; + if (mPartition.hasHeader) { + offset--; + } + if (offset == -1) { + return 0; + } + if (mPartition.idColumnIndex == -1) { + return 0; + } + + Cursor cursor = mPartition.cursor; + if (cursor == null || cursor.isClosed() || !cursor.moveToPosition(offset)) { + return 0; + } + return cursor.getLong(mPartition.idColumnIndex); + } + start = end; + } + + return 0; + } + + /** + * Returns false if any partition has a header. + */ + @Override + public boolean areAllItemsEnabled() { + for (Partition mPartition : mPartitions) { + if (mPartition.hasHeader) { + return false; + } + } + return true; + } + + /** + * Returns true for all items except headers. + */ + @Override + public boolean isEnabled(int position) { + ensureCacheValid(); + int start = 0; + for (int i = 0, n = mPartitions.size(); i < n; i++) { + int end = start + mPartitions.get(i).count; + if (position >= start && position < end) { + int offset = position - start; + if (mPartitions.get(i).hasHeader && offset == 0) { + return false; + } else { + return isEnabled(i, offset); + } + } + start = end; + } + + return false; + } + + /** + * Returns true if the item at the specified offset of the specified + * partition is selectable and clickable. + */ + protected boolean isEnabled(int partition, int position) { + return true; + } + + /** + * Enable or disable data change notifications. It may be a good idea to + * disable notifications before making changes to several partitions at once. + */ + public void setNotificationsEnabled(boolean flag) { + mNotificationsEnabled = flag; + if (flag && mNotificationNeeded) { + notifyDataSetChanged(); + } + } + + @Override + public void notifyDataSetChanged() { + if (mNotificationsEnabled) { + mNotificationNeeded = false; + super.notifyDataSetChanged(); + } else { + mNotificationNeeded = true; + } + } +} diff --git a/src/com/android/launcher3/list/PinnedHeaderListAdapter.java b/src/com/android/launcher3/list/PinnedHeaderListAdapter.java new file mode 100644 index 000000000..c15e87a46 --- /dev/null +++ b/src/com/android/launcher3/list/PinnedHeaderListAdapter.java @@ -0,0 +1,172 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.launcher3.list; + +import android.content.Context; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; + +/** + * A subclass of {@link CompositeCursorAdapter} that manages pinned partition headers. + */ +public abstract class PinnedHeaderListAdapter extends CompositeCursorAdapter + implements PinnedHeaderListView.PinnedHeaderAdapter { + + public static final int PARTITION_HEADER_TYPE = 0; + + private boolean mPinnedPartitionHeadersEnabled; + private boolean mHeaderVisibility[]; + + public PinnedHeaderListAdapter(Context context) { + super(context); + } + + public PinnedHeaderListAdapter(Context context, int initialCapacity) { + super(context, initialCapacity); + } + + public boolean getPinnedPartitionHeadersEnabled() { + return mPinnedPartitionHeadersEnabled; + } + + public void setPinnedPartitionHeadersEnabled(boolean flag) { + this.mPinnedPartitionHeadersEnabled = flag; + } + + @Override + public int getPinnedHeaderCount() { + if (mPinnedPartitionHeadersEnabled) { + return getPartitionCount(); + } else { + return 0; + } + } + + protected boolean isPinnedPartitionHeaderVisible(int partition) { + return getPinnedPartitionHeadersEnabled() && hasHeader(partition) + && !isPartitionEmpty(partition); + } + + /** + * The default implementation creates the same type of view as a normal + * partition header. + */ + @Override + public View getPinnedHeaderView(int partition, View convertView, ViewGroup parent) { + if (hasHeader(partition)) { + View view = null; + if (convertView != null) { + Integer headerType = (Integer)convertView.getTag(); + if (headerType != null && headerType == PARTITION_HEADER_TYPE) { + view = convertView; + } + } + if (view == null) { + view = newHeaderView(getContext(), partition, null, parent); + view.setTag(PARTITION_HEADER_TYPE); + view.setFocusable(false); + view.setEnabled(false); + } + bindHeaderView(view, partition, getCursor(partition)); + view.setLayoutDirection(parent.getLayoutDirection()); + return view; + } else { + return null; + } + } + + @Override + public void configurePinnedHeaders(PinnedHeaderListView listView) { + if (!getPinnedPartitionHeadersEnabled()) { + return; + } + + int size = getPartitionCount(); + boolean unCached = false; + // Cache visibility bits, because we will need them several times later on + if (mHeaderVisibility == null || mHeaderVisibility.length != size) { + mHeaderVisibility = new boolean[size]; + unCached = true; + } + for (int i = 0; i < size; i++) { + boolean visible = isPinnedPartitionHeaderVisible(i); + mHeaderVisibility[i] = visible; + if (!visible) { + listView.setHeaderInvisible(i, true); + } + } + + int headerViewsCount = listView.getHeaderViewsCount(); + + // Starting at the top, find and pin headers for partitions preceding the visible one(s) + int maxTopHeader = -1; + int topHeaderHeight = 0; + for (int i = 0; i < size; i++) { + if (mHeaderVisibility[i]) { + int position = listView.getPositionAt(topHeaderHeight) - headerViewsCount; + int partition = getPartitionForPosition(position); + if (i > partition) { + break; + } + + if (!unCached){ + listView.setHeaderPinnedAtTop(i, topHeaderHeight, false); + topHeaderHeight += listView.getPinnedHeaderHeight(i); + maxTopHeader = i; + } + + } + } + + // Starting at the bottom, find and pin headers for partitions following the visible one(s) + /*int maxBottomHeader = size; + int bottomHeaderHeight = 0; + int listHeight = listView.getHeight(); + for (int i = size; --i > maxTopHeader;) { + if (mHeaderVisibility[i]) { + int position = listView.getPositionAt(listHeight - bottomHeaderHeight) + - headerViewsCount; + if (position < 0) { + break; + } + + int partition = getPartitionForPosition(position - 1); + if (partition == -1 || i <= partition) { + break; + } + + int height = listView.getPinnedHeaderHeight(i); + bottomHeaderHeight += height; + + listView.setHeaderPinnedAtBottom(i, listHeight - bottomHeaderHeight, false); + maxBottomHeader = i; + } + } + + // Headers in between the top-pinned and bottom-pinned should be hidden + for (int i = maxTopHeader + 1; i < maxBottomHeader; i++) { + if (mHeaderVisibility[i]) { + listView.setHeaderInvisible(i, isPartitionEmpty(i)); + } + }*/ + } + + @Override + public int getScrollPositionForHeader(int viewIndex) { + return getPositionForPartition(viewIndex); + } +} diff --git a/src/com/android/launcher3/list/PinnedHeaderListView.java b/src/com/android/launcher3/list/PinnedHeaderListView.java new file mode 100644 index 000000000..30688fea3 --- /dev/null +++ b/src/com/android/launcher3/list/PinnedHeaderListView.java @@ -0,0 +1,565 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher3.list; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.graphics.RectF; +import android.util.AttributeSet; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AbsListView; +import android.widget.AbsListView.OnScrollListener; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemSelectedListener; +import android.widget.ListAdapter; + +/** + * A ListView that maintains a header pinned at the top of the list. The + * pinned header can be pushed up and dissolved as needed. + */ +public class PinnedHeaderListView extends AutoScrollListView + implements OnScrollListener, OnItemSelectedListener { + + /** + * Adapter interface. The list adapter must implement this interface. + */ + public interface PinnedHeaderAdapter { + + /** + * Returns the overall number of pinned headers, visible or not. + */ + int getPinnedHeaderCount(); + + /** + * Creates or updates the pinned header view. + */ + View getPinnedHeaderView(int viewIndex, View convertView, ViewGroup parent); + + /** + * Configures the pinned headers to match the visible list items. The + * adapter should call {@link PinnedHeaderListView#setHeaderPinnedAtTop}, + * {@link PinnedHeaderListView#setHeaderPinnedAtBottom}, + * {@link PinnedHeaderListView#setFadingHeader} or + * {@link PinnedHeaderListView#setHeaderInvisible}, for each header that + * needs to change its position or visibility. + */ + void configurePinnedHeaders(PinnedHeaderListView listView); + + /** + * Returns the list position to scroll to if the pinned header is touched. + * Return -1 if the list does not need to be scrolled. + */ + int getScrollPositionForHeader(int viewIndex); + } + + private static final int MAX_ALPHA = 255; + private static final int TOP = 0; + private static final int BOTTOM = 1; + private static final int FADING = 2; + + private static final int DEFAULT_ANIMATION_DURATION = 20; + + private static final int DEFAULT_SMOOTH_SCROLL_DURATION = 100; + + private static final class PinnedHeader { + View view; + boolean visible; + int y; + int height; + int alpha; + int state; + + boolean animating; + boolean targetVisible; + int sourceY; + int targetY; + long targetTime; + } + + private PinnedHeaderAdapter mAdapter; + private int mSize; + private PinnedHeader[] mHeaders; + private RectF mBounds = new RectF(); + private Rect mClipRect = new Rect(); + private OnScrollListener mOnScrollListener; + private OnItemSelectedListener mOnItemSelectedListener; + private int mScrollState; + + private boolean mScrollToSectionOnHeaderTouch = false; + private boolean mHeaderTouched = false; + + private int mAnimationDuration = DEFAULT_ANIMATION_DURATION; + private boolean mAnimating; + private long mAnimationTargetTime; + private int mHeaderPaddingStart; + private int mHeaderWidth; + + public PinnedHeaderListView(Context context) { + this(context, null, android.R.attr.listViewStyle); + } + + public PinnedHeaderListView(Context context, AttributeSet attrs) { + this(context, attrs, android.R.attr.listViewStyle); + } + + public PinnedHeaderListView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + super.setOnScrollListener(this); + super.setOnItemSelectedListener(this); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + super.onLayout(changed, l, t, r, b); + mHeaderPaddingStart = getPaddingStart(); + mHeaderWidth = r - l - mHeaderPaddingStart - getPaddingEnd(); + } + + public void setPinnedHeaderAnimationDuration(int duration) { + mAnimationDuration = duration; + } + + @Override + public void setAdapter(ListAdapter adapter) { + mAdapter = (PinnedHeaderAdapter)adapter; + super.setAdapter(adapter); + } + + @Override + public void setOnScrollListener(OnScrollListener onScrollListener) { + mOnScrollListener = onScrollListener; + super.setOnScrollListener(this); + } + + @Override + public void setOnItemSelectedListener(OnItemSelectedListener listener) { + mOnItemSelectedListener = listener; + super.setOnItemSelectedListener(this); + } + + public void setScrollToSectionOnHeaderTouch(boolean value) { + mScrollToSectionOnHeaderTouch = value; + } + + @Override + public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, + int totalItemCount) { + if (mAdapter != null) { + int count = mAdapter.getPinnedHeaderCount(); + if (count != mSize) { + mSize = count; + if (mHeaders == null) { + mHeaders = new PinnedHeader[mSize]; + } else if (mHeaders.length < mSize) { + PinnedHeader[] headers = mHeaders; + mHeaders = new PinnedHeader[mSize]; + System.arraycopy(headers, 0, mHeaders, 0, headers.length); + } + } + + for (int i = 0; i < mSize; i++) { + if (mHeaders[i] == null) { + mHeaders[i] = new PinnedHeader(); + } + mHeaders[i].view = mAdapter.getPinnedHeaderView(i, mHeaders[i].view, this); + } + + mAnimationTargetTime = System.currentTimeMillis() + mAnimationDuration; + mAdapter.configurePinnedHeaders(this); + invalidateIfAnimating(); + + } + if (mOnScrollListener != null) { + mOnScrollListener.onScroll(this, firstVisibleItem, visibleItemCount, totalItemCount); + } + } + + @Override + protected float getTopFadingEdgeStrength() { + // Disable vertical fading at the top when the pinned header is present + return mSize > 0 ? 0 : super.getTopFadingEdgeStrength(); + } + + @Override + public void onScrollStateChanged(AbsListView view, int scrollState) { + mScrollState = scrollState; + if (mOnScrollListener != null) { + mOnScrollListener.onScrollStateChanged(this, scrollState); + } + } + + /** + * Ensures that the selected item is positioned below the top-pinned headers + * and above the bottom-pinned ones. + */ + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + int height = getHeight(); + + int windowTop = 0; + int windowBottom = height; + + for (int i = 0; i < mSize; i++) { + PinnedHeader header = mHeaders[i]; + if (header.visible) { + if (header.state == TOP) { + windowTop = header.y + header.height; + } else if (header.state == BOTTOM) { + windowBottom = header.y; + break; + } + } + } + + View selectedView = getSelectedView(); + if (selectedView != null) { + if (selectedView.getTop() < windowTop) { + setSelectionFromTop(position, windowTop); + } else if (selectedView.getBottom() > windowBottom) { + setSelectionFromTop(position, windowBottom - selectedView.getHeight()); + } + } + + if (mOnItemSelectedListener != null) { + mOnItemSelectedListener.onItemSelected(parent, view, position, id); + } + } + + @Override + public void onNothingSelected(AdapterView parent) { + if (mOnItemSelectedListener != null) { + mOnItemSelectedListener.onNothingSelected(parent); + } + } + + public int getPinnedHeaderHeight(int viewIndex) { + ensurePinnedHeaderLayout(viewIndex); + return mHeaders[viewIndex].view.getHeight(); + } + + /** + * Set header to be pinned at the top. + * + * @param viewIndex index of the header view + * @param y is position of the header in pixels. + * @param animate true if the transition to the new coordinate should be animated + */ + public void setHeaderPinnedAtTop(int viewIndex, int y, boolean animate) { + ensurePinnedHeaderLayout(viewIndex); + PinnedHeader header = mHeaders[viewIndex]; + header.visible = true; + header.y = y; + header.state = TOP; + + // TODO perhaps we should animate at the top as well + header.animating = false; + } + + /** + * Set header to be pinned at the bottom. + * + * @param viewIndex index of the header view + * @param y is position of the header in pixels. + * @param animate true if the transition to the new coordinate should be animated + */ + public void setHeaderPinnedAtBottom(int viewIndex, int y, boolean animate) { + ensurePinnedHeaderLayout(viewIndex); + PinnedHeader header = mHeaders[viewIndex]; + header.state = BOTTOM; + if (header.animating) { + header.targetTime = mAnimationTargetTime; + header.sourceY = header.y; + header.targetY = y; + } else if (animate && (header.y != y || !header.visible)) { + if (header.visible) { + header.sourceY = header.y; + } else { + header.visible = true; + header.sourceY = y + header.height; + } + header.animating = true; + header.targetVisible = true; + header.targetTime = mAnimationTargetTime; + header.targetY = y; + } else { + header.visible = true; + header.y = y; + } + } + + /** + * Set header to be pinned at the top of the first visible item. + * + * @param viewIndex index of the header view + * @param position is position of the header in pixels. + */ + public void setFadingHeader(int viewIndex, int position, boolean fade) { + ensurePinnedHeaderLayout(viewIndex); + + View child = getChildAt(position - getFirstVisiblePosition()); + if (child == null) return; + + PinnedHeader header = mHeaders[viewIndex]; + header.visible = true; + header.state = FADING; + header.alpha = MAX_ALPHA; + header.animating = false; + + int top = getTotalTopPinnedHeaderHeight(); + header.y = top; + if (fade) { + int bottom = child.getBottom() - top; + int headerHeight = header.height; + if (bottom < headerHeight) { + int portion = bottom - headerHeight; + header.alpha = MAX_ALPHA * (headerHeight + portion) / headerHeight; + header.y = top + portion; + } + } + } + + /** + * Makes header invisible. + * + * @param viewIndex index of the header view + * @param animate true if the transition to the new coordinate should be animated + */ + public void setHeaderInvisible(int viewIndex, boolean animate) { + PinnedHeader header = mHeaders[viewIndex]; + if (header.visible && (animate || header.animating) && header.state == BOTTOM) { + header.sourceY = header.y; + if (!header.animating) { + header.visible = true; + header.targetY = getBottom() + header.height; + } + header.animating = true; + header.targetTime = mAnimationTargetTime; + header.targetVisible = false; + } else { + header.visible = false; + } + } + + private void ensurePinnedHeaderLayout(int viewIndex) { + View view = mHeaders[viewIndex].view; + if (view.isLayoutRequested()) { + int widthSpec = View.MeasureSpec.makeMeasureSpec(mHeaderWidth, View.MeasureSpec.EXACTLY); + int heightSpec; + ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); + if (layoutParams != null && layoutParams.height > 0) { + heightSpec = View.MeasureSpec + .makeMeasureSpec(layoutParams.height, View.MeasureSpec.EXACTLY); + } else { + heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); + } + view.measure(widthSpec, heightSpec); + int height = view.getMeasuredHeight(); + mHeaders[viewIndex].height = height; + view.layout(0, 0, mHeaderWidth, height); + } + } + + /** + * Returns the sum of heights of headers pinned to the top. + */ + public int getTotalTopPinnedHeaderHeight() { + for (int i = mSize; --i >= 0;) { + PinnedHeader header = mHeaders[i]; + if (header.visible && header.state == TOP) { + return header.y + header.height; + } + } + return 0; + } + + /** + * Returns the list item position at the specified y coordinate. + */ + public int getPositionAt(int y) { + do { + int position = pointToPosition(getPaddingLeft() + 1, y); + if (position != -1) { + return position; + } + // If position == -1, we must have hit a separator. Let's examine + // a nearby pixel + y--; + } while (y > 0); + return 0; + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + mHeaderTouched = false; + if (super.onInterceptTouchEvent(ev)) { + return true; + } + + if (mScrollState == SCROLL_STATE_IDLE) { + final int y = (int)ev.getY(); + final int x = (int)ev.getX(); + for (int i = mSize; --i >= 0;) { + PinnedHeader header = mHeaders[i]; + // For RTL layouts, this also takes into account that the scrollbar is on the left + // side. + final int padding = getPaddingLeft(); + if (header.visible && header.y <= y && header.y + header.height > y && + x >= padding && padding + mHeaderWidth >= x) { + mHeaderTouched = true; + if (mScrollToSectionOnHeaderTouch && + ev.getAction() == MotionEvent.ACTION_DOWN) { + return smoothScrollToPartition(i); + } else { + return true; + } + } + } + } + + return false; + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + if (mHeaderTouched) { + if (ev.getAction() == MotionEvent.ACTION_UP) { + mHeaderTouched = false; + } + return true; + } + return super.onTouchEvent(ev); + }; + + private boolean smoothScrollToPartition(int partition) { + final int position = mAdapter.getScrollPositionForHeader(partition); + if (position == -1) { + return false; + } + + int offset = 0; + for (int i = 0; i < partition; i++) { + PinnedHeader header = mHeaders[i]; + if (header.visible) { + offset += header.height; + } + } + smoothScrollToPositionFromTop(position + getHeaderViewsCount(), offset, + DEFAULT_SMOOTH_SCROLL_DURATION); + return true; + } + + private void invalidateIfAnimating() { + mAnimating = false; + for (int i = 0; i < mSize; i++) { + if (mHeaders[i].animating) { + mAnimating = true; + invalidate(); + return; + } + } + } + + @Override + protected void dispatchDraw(Canvas canvas) { + long currentTime = mAnimating ? System.currentTimeMillis() : 0; + + int top = 0; + int bottom = getBottom(); + boolean hasVisibleHeaders = false; + for (int i = 0; i < mSize; i++) { + PinnedHeader header = mHeaders[i]; + if (header.visible) { + hasVisibleHeaders = true; + if (header.state == BOTTOM && header.y < bottom) { + bottom = header.y; + } else if (header.state == TOP || header.state == FADING) { + int newTop = header.y + header.height; + if (newTop > top) { + top = newTop; + } + } + } + } + + if (hasVisibleHeaders) { + canvas.save(); + mClipRect.set(0, top, getWidth(), bottom); + canvas.clipRect(mClipRect); + } + + super.dispatchDraw(canvas); + + if (hasVisibleHeaders) { + canvas.restore(); + + // First draw top headers, then the bottom ones to handle the Z axis correctly + for (int i = mSize; --i >= 0;) { + PinnedHeader header = mHeaders[i]; + if (header.visible && (header.state == TOP || header.state == FADING)) { + drawHeader(canvas, header, currentTime); + } + } + + for (int i = 0; i < mSize; i++) { + PinnedHeader header = mHeaders[i]; + if (header.visible && header.state == BOTTOM) { + drawHeader(canvas, header, currentTime); + } + } + } + + invalidateIfAnimating(); + } + + private void drawHeader(Canvas canvas, PinnedHeader header, long currentTime) { + if (header.animating) { + int timeLeft = (int)(header.targetTime - currentTime); + if (timeLeft <= 0) { + header.y = header.targetY; + header.visible = header.targetVisible; + header.animating = false; + } else { + header.y = header.targetY + (header.sourceY - header.targetY) * timeLeft + / mAnimationDuration; + } + } + if (header.visible) { + View view = header.view; + int saveCount = canvas.save(); + canvas.translate(isLayoutRtl() ? + getWidth() - mHeaderPaddingStart - mHeaderWidth : mHeaderPaddingStart, + header.y); + if (header.state == FADING) { + mBounds.set(0, 0, mHeaderWidth, view.getHeight()); + canvas.saveLayerAlpha(mBounds, header.alpha, Canvas.ALL_SAVE_FLAG); + } + view.draw(canvas); + canvas.restoreToCount(saveCount); + } + } + + /** + * Note: this is a reimplementation of View.isLayoutRtl() since that is currently hidden api. + */ + public boolean isLayoutRtl() { + return (getLayoutDirection() == LAYOUT_DIRECTION_RTL); + } +} diff --git a/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java b/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java new file mode 100644 index 000000000..1b6316293 --- /dev/null +++ b/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java @@ -0,0 +1,248 @@ +package com.android.launcher3.list; + +import android.content.Context; +import android.content.res.Resources; +import android.database.Cursor; +import android.graphics.Typeface; +import android.util.TypedValue; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import com.android.launcher3.Launcher; +import com.android.launcher3.OverviewSettingsPanel; +import com.android.launcher3.R; +import com.android.launcher3.settings.SettingsProvider; +import android.view.View.OnClickListener; +import android.content.SharedPreferences; + +public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { + private Launcher mLauncher; + private Context mContext; + + public SettingsPinnedHeaderAdapter(Context context) { + super(context); + mLauncher = (Launcher) context; + mContext = context; + } + + private String[] mHeaders; + public int mPinnedHeaderCount; + + public void setHeaders(String[] headers) { + this.mHeaders = headers; + } + + @Override + protected View newHeaderView(Context context, int partition, Cursor cursor, + ViewGroup parent) { + LayoutInflater inflater = LayoutInflater.from(context); + return inflater.inflate(R.layout.settings_pane_list_header, null); + } + + @Override + protected void bindHeaderView(View view, int partition, Cursor cursor) { + TextView textView = (TextView) view.findViewById(R.id.item_name); + textView.setText(mHeaders[partition]); + textView.setTypeface(textView.getTypeface(), Typeface.BOLD); + + textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16); + } + + @Override + protected View newView(Context context, int partition, Cursor cursor, int position, + ViewGroup parent) { + LayoutInflater inflater = LayoutInflater.from(context); + return inflater.inflate(R.layout.settings_pane_list_item, null); + } + + @Override + protected void bindView(View v, int partition, Cursor cursor, int position) { + TextView text = (TextView)v.findViewById(R.id.item_name); + String title = cursor.getString(1); + text.setText(title); + + Resources res = mLauncher.getResources(); + + if (title.equals(res + .getString(R.string.home_screen_search_text))) { + boolean current = mLauncher.shouldShowSearchBar(); + String state = current ? res.getString( + R.string.setting_state_on) : res.getString( + R.string.setting_state_off); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } else if (title.equals(res + .getString(R.string.drawer_sorting_text))) { + updateDrawerSortSettingsItem(v); + } else if (title.equals(res + .getString(R.string.drawer_scroll_effect_text)) && + partition == OverviewSettingsPanel.DRAWER_SETTINGS_POSITION) { + String state = mLauncher.getAppsCustomizeTransitionEffect(); + state = mapEffectToValue(state); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } else if (title.equals(res + .getString(R.string.page_scroll_effect_text)) && + partition == OverviewSettingsPanel.HOME_SETTINGS_POSITION) { + String state = mLauncher.getWorkspaceTransitionEffect(); + state = mapEffectToValue(state); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } else if (title.equals(res + .getString(R.string.larger_icons_text))) { + boolean current = SettingsProvider + .getBoolean( + mContext, + SettingsProvider.SETTINGS_UI_GENERAL_ICONS_LARGE, + R.bool.preferences_interface_general_icons_large_default); + String state = current ? res.getString( + R.string.setting_state_on) : res.getString( + R.string.setting_state_off); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } else if (title.equals(res + .getString(R.string.hide_icon_labels)) && + partition == OverviewSettingsPanel.HOME_SETTINGS_POSITION) { + boolean current = mLauncher.shouldHideWorkspaceIconLables(); + String state = current ? res.getString( + R.string.setting_state_on) : res.getString( + R.string.setting_state_off); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } else if (title.equals(res + .getString(R.string.hide_icon_labels)) && + partition == OverviewSettingsPanel.DRAWER_SETTINGS_POSITION) { + boolean current = SettingsProvider + .getBoolean( + mContext, + SettingsProvider.SETTINGS_UI_DRAWER_HIDE_ICON_LABELS, + R.bool.preferences_interface_drawer_hide_icon_labels_default); + String state = current ? res.getString( + R.string.setting_state_on) : res.getString( + R.string.setting_state_off); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } + + v.setTag(partition); + v.setOnClickListener(mSettingsItemListener); + } + + @Override + public View getPinnedHeaderView(int viewIndex, View convertView, ViewGroup parent) { + LayoutInflater inflater = LayoutInflater.from(getContext()); + View view = inflater.inflate(R.layout.settings_pane_list_header, parent, false); + view.setFocusable(false); + view.setEnabled(false); + bindHeaderView(view, viewIndex, null); + return view; + } + + @Override + public int getPinnedHeaderCount() { + return mPinnedHeaderCount; + } + + public void updateDrawerSortSettingsItem(View v) { + String state = ""; + switch (mLauncher.getAppsCustomizeContentSortMode()) { + case Title: + state = mLauncher.getResources().getString(R.string.sort_mode_title); + break; + case LaunchCount: + state = mLauncher.getResources().getString( + R.string.sort_mode_launch_count); + break; + case InstallTime: + state = mLauncher.getResources().getString( + R.string.sort_mode_install_time); + break; + } + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } + + private String mapEffectToValue(String effect) { + final String[] titles = mLauncher.getResources().getStringArray( + R.array.transition_effect_entries); + final String[] values = mLauncher.getResources().getStringArray( + R.array.transition_effect_values); + + int length = values.length; + for (int i = 0; i < length; i++) { + if (effect.equals(values[i])) { + return titles[i]; + } + } + return ""; + } + + OnClickListener mSettingsItemListener = new OnClickListener() { + + @Override + public void onClick(View v) { + // TODO Auto-generated method stub + String value = ((TextView) v.findViewById(R.id.item_name)).getText().toString(); + Resources res = mLauncher.getResources(); + + // Handle toggles or launch pickers + if (value.equals(res + .getString(R.string.home_screen_search_text))) { + onSettingsBooleanChanged( + v, + SettingsProvider.SETTINGS_UI_HOMESCREEN_SEARCH, + R.bool.preferences_interface_homescreen_search_default); + mLauncher.updateDynamicGrid(); + } else if (value.equals(res + .getString(R.string.drawer_sorting_text))) { + mLauncher.onClickSortModeButton(v); + } else if (value.equals(res + .getString(R.string.drawer_scroll_effect_text)) && + ((Integer)v.getTag() == OverviewSettingsPanel.DRAWER_SETTINGS_POSITION)) { + mLauncher.onClickTransitionEffectButton(v, true); + } else if (value.equals(res + .getString(R.string.page_scroll_effect_text)) && + ((Integer)v.getTag() == OverviewSettingsPanel.HOME_SETTINGS_POSITION)) { + mLauncher.onClickTransitionEffectButton(v, false); + } else if (value.equals(res + .getString(R.string.larger_icons_text))) { + onSettingsBooleanChanged( + v, + SettingsProvider.SETTINGS_UI_GENERAL_ICONS_LARGE, + R.bool.preferences_interface_general_icons_large_default); + mLauncher.updateDynamicGrid(); + } else if (value.equals(res + .getString(R.string.hide_icon_labels)) && + ((Integer)v.getTag() == OverviewSettingsPanel.HOME_SETTINGS_POSITION)) { + onSettingsBooleanChanged( + v, + SettingsProvider.SETTINGS_UI_HOMESCREEN_HIDE_ICON_LABELS, + R.bool.preferences_interface_homescreen_hide_icon_labels_default); + mLauncher.updateDynamicGrid(); + } else if (value.equals(res + .getString(R.string.hide_icon_labels)) && + ((Integer)v.getTag() == OverviewSettingsPanel.DRAWER_SETTINGS_POSITION)) { + onSettingsBooleanChanged( + v, + SettingsProvider.SETTINGS_UI_DRAWER_HIDE_ICON_LABELS, + R.bool.preferences_interface_drawer_hide_icon_labels_default); + mLauncher.updateDynamicGrid(); + } + + View defaultHome = mLauncher.findViewById(R.id.default_home_screen_panel); + defaultHome.setVisibility(getCursor(0).getCount() > 1 ? View.VISIBLE : View.GONE); + } + }; + + private void onSettingsBooleanChanged(View v, String key, int res) { + boolean current = SettingsProvider.getBoolean( + mContext, key, res); + + // Set new state + SharedPreferences sharedPref = SettingsProvider + .get(mContext); + sharedPref.edit().putBoolean(key, !current).commit(); + sharedPref.edit() + .putBoolean(SettingsProvider.SETTINGS_CHANGED, true) + .commit(); + + String state = current ? mLauncher.getResources().getString( + R.string.setting_state_off) : mLauncher.getResources().getString( + R.string.setting_state_on); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } +} -- cgit v1.2.3 From a869d707552dcd12c6aabd5099f3194d9591f496 Mon Sep 17 00:00:00 2001 From: Michael Bestas Date: Sun, 25 May 2014 14:44:14 +0300 Subject: Automatic translation import Change-Id: I614b5765661973095a0fd6247df0e33c65edc68b --- res/values-et/cm_strings.xml | 64 ++++++++++++++++++++++++++++++++++++++++++++ res/values-th/cm_arrays.xml | 40 +++++++++++++++++++++++++++ res/values-th/cm_strings.xml | 64 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 168 insertions(+) create mode 100644 res/values-et/cm_strings.xml create mode 100644 res/values-th/cm_arrays.xml create mode 100644 res/values-th/cm_strings.xml diff --git a/res/values-et/cm_strings.xml b/res/values-et/cm_strings.xml new file mode 100644 index 000000000..3b3ff2b5f --- /dev/null +++ b/res/values-et/cm_strings.xml @@ -0,0 +1,64 @@ + + + + + Autoriõigus \u00A9 2014 The CyanogenMod Project + Sorteeri + Filtreeri + Vaikimisi ekraan + Kerimisefekt + Pealkiri + Käivitamiste arv + Installeerimise aeg + Lehe äärisjooned + Sulanda äärislehed + Keri taustapilti + Sätted + Rakendus + Koduekraan + Otsinguriba + Näita püsivat otsinguriba ekraani ülaosas + Peida ikoonide sildid + Peida ikoonide sildid koduekraanil + Sahtel + Rakenduste ja vidinate sahtel + Rakendused + Peidetud rakendused + Peida rakendusi sahtlist + Eemalda otseteed + Eemalda peidetud rakenduste otseteed koduekraanilt + Eemalda vidinad + Eemalda peidetud rakenduste vidinad koduekraanilt + Peida ikoonide sildid + Peida ikoonide sildid sahtlis + Dokk + Üldine + Ikoonid + Suuremad ikoonid + Kasuta ülisuuri rakenduste ikoone koduekraanil ja sahtlis + Kirja fondistiil + Fondi tüüp ja stiil mida kasutatakse ikoonidel + Vali ikoonipakk + Vaikimisi ikoonid + Ikoonipakid + Ühtegi ikoonipakki pole installitud + Selge + Kohandage oma sahtlit + Puudutage lehe indikaatoril et näha täiendavaid sätteid + Lähtesta + Peidetud rakendused + diff --git a/res/values-th/cm_arrays.xml b/res/values-th/cm_arrays.xml new file mode 100644 index 000000000..1f612140a --- /dev/null +++ b/res/values-th/cm_arrays.xml @@ -0,0 +1,40 @@ + + + + + + ปกติ + บาง + บีบ + + + ไม่มี + ขยาย + ย่อ + หมุนขึ้น + หมุนลง + เข้าลูกบาศก์ + ออกลูกบาศก์ + ไพ่ + หีบเพลง + พลิก + เข้าทรงกระบอก + ออกทรงกระบอก + Carousel + ภาพรวม + + diff --git a/res/values-th/cm_strings.xml b/res/values-th/cm_strings.xml new file mode 100644 index 000000000..8fc18cb92 --- /dev/null +++ b/res/values-th/cm_strings.xml @@ -0,0 +1,64 @@ + + + + + สงวนลิขสิทธิ์ \u00A9 2014 The CyanogenMod Project + เรียงลำดับ + ตัวกรอง + หน้าจอเริ่มต้น + เอฟเฟกต์เลื่อน + ชื่อเรื่อง + ตัวนับครั้งการเปิด + เวลาติดตั้ง + โครงร่างหน้า + จากหน้าด้านข้าง + เลื่อนภาพพื้นหลัง + ตั้งค่า + แอป + หน้าจอหลัก + แถบค้นหา + แสดงแถบค้นหาแบบคงที่ด้านบนของหน้าจอ + ซ่อนป้ายชื่อไอคอน + ซ่อนป้ายชื่อบนหน้าจอหลัก + พื้นที่วาง + พื้นที่วางแอป และ วิดเจ็ท + แอป + ซ่อนแอป + ซ่อนแอปจากพื้นที่วางแอป + เอาทางลัดออก + เอาทางลัดของแอปที่ซ่อนออกจากหน้าจอหลัก + นำวิดเจ็ดออก + นำวิดเจ็ทของแอปที่ถูกซ่อนออกจากจอหลัก + ซ่อนป้ายชื่อไอคอน + ซ่อนป้ายชื่อไอคอนในที่วางแอป + แถบวาง + ทั่วไป + ไอคอน + ไอคอนขนาดใหญ่ + ใช้ไอคอนแอปพิเคชันขนาดใหญ่มากในจอหลักและที่วางแอป + รูปแบบข้อความ + ลักษณะของแบบอักษรที่จะใช้สำหรับป้ายชื่อไอคอน + เลือกชุดไอคอน + ไอคอนเริ่มต้น + ชุดไอคอน + ไม่มีชุดไอคอนที่ติดตั้งอยู่ + ล้าง + กำหนดที่วางแอปของคุณ + แตะตัวแบ่งหน้าเพื่อดูการตั้งค่าเพิ่มเติม + ล้างค่า + ซ่อนแอป + -- cgit v1.2.3 From f73e7924ac9520dc1b260150ab2218e13730a8ac Mon Sep 17 00:00:00 2001 From: Nebojsa Cvetkovic Date: Fri, 16 May 2014 19:42:58 +0100 Subject: Revert "Trebuchet: add lockscreen wallpaper picker" This reverts commit 29c2da02bf48fbdba977bc774027e218487e1abe. Change-Id: Ie5addf5ac77acb6411a6f22195d8608df625462a --- Android.mk | 2 +- AndroidManifest.xml | 1 - res/drawable-hdpi/ic_clear.png | Bin 501 -> 0 bytes res/drawable-mdpi/ic_clear.png | Bin 329 -> 0 bytes res/drawable-xhdpi/ic_clear.png | Bin 611 -> 0 bytes res/drawable-xxhdpi/ic_clear.png | Bin 1102 -> 0 bytes res/layout/wallpaper_picker_clear.xml | 42 - res/values/cm_strings.xml | 3 - src/android/util/Pools.java | 165 ++ src/com/android/launcher3/DragLayer.java | 3 +- .../launcher3/LiveWallpaperListAdapter.java | 2 +- .../launcher3/LockWallpaperPickerActivity.java | 1600 -------------------- .../android/launcher3/SavedWallpaperImages.java | 8 +- .../ThirdPartyWallpaperPickerListAdapter.java | 2 +- .../android/launcher3/WallpaperCropActivity.java | 46 +- .../android/launcher3/WallpaperPickerActivity.java | 40 +- src/com/android/launcher3/WallpaperRootView.java | 6 +- src/com/android/photos/BitmapRegionTileSource.java | 44 +- 18 files changed, 216 insertions(+), 1748 deletions(-) delete mode 100644 res/drawable-hdpi/ic_clear.png delete mode 100644 res/drawable-mdpi/ic_clear.png delete mode 100644 res/drawable-xhdpi/ic_clear.png delete mode 100644 res/drawable-xxhdpi/ic_clear.png delete mode 100644 res/layout/wallpaper_picker_clear.xml create mode 100644 src/android/util/Pools.java delete mode 100644 src/com/android/launcher3/LockWallpaperPickerActivity.java diff --git a/Android.mk b/Android.mk index f5bdaca84..0fd1ff77f 100644 --- a/Android.mk +++ b/Android.mk @@ -32,7 +32,7 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src) \ LOCAL_PROTOC_OPTIMIZE_TYPE := nano LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/protos/ -#LOCAL_SDK_VERSION := 19 +LOCAL_SDK_VERSION := 19 LOCAL_PACKAGE_NAME := Trebuchet LOCAL_PRIVILEGED_MODULE := true diff --git a/AndroidManifest.xml b/AndroidManifest.xml index ba7c8b4a7..1eabdcf33 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -52,7 +52,6 @@ - diff --git a/res/drawable-hdpi/ic_clear.png b/res/drawable-hdpi/ic_clear.png deleted file mode 100644 index 67e0e6695..000000000 Binary files a/res/drawable-hdpi/ic_clear.png and /dev/null differ diff --git a/res/drawable-mdpi/ic_clear.png b/res/drawable-mdpi/ic_clear.png deleted file mode 100644 index 9d08a42b7..000000000 Binary files a/res/drawable-mdpi/ic_clear.png and /dev/null differ diff --git a/res/drawable-xhdpi/ic_clear.png b/res/drawable-xhdpi/ic_clear.png deleted file mode 100644 index d5925c795..000000000 Binary files a/res/drawable-xhdpi/ic_clear.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_clear.png b/res/drawable-xxhdpi/ic_clear.png deleted file mode 100644 index 1472e7cc7..000000000 Binary files a/res/drawable-xxhdpi/ic_clear.png and /dev/null differ diff --git a/res/layout/wallpaper_picker_clear.xml b/res/layout/wallpaper_picker_clear.xml deleted file mode 100644 index 727c3b422..000000000 --- a/res/layout/wallpaper_picker_clear.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index 267d65a18..da5e877f5 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -86,9 +86,6 @@ Google - - Clear - Customize your drawer diff --git a/src/android/util/Pools.java b/src/android/util/Pools.java new file mode 100644 index 000000000..40bab1eae --- /dev/null +++ b/src/android/util/Pools.java @@ -0,0 +1,165 @@ +/* + * Copyright (C) 2009 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 android.util; + +/** + * Helper class for crating pools of objects. An example use looks like this: + *
+ * public class MyPooledClass {
+ *
+ *     private static final SynchronizedPool sPool =
+ *             new SynchronizedPool(10);
+ *
+ *     public static MyPooledClass obtain() {
+ *         MyPooledClass instance = sPool.acquire();
+ *         return (instance != null) ? instance : new MyPooledClass();
+ *     }
+ *
+ *     public void recycle() {
+ *          // Clear state if needed.
+ *          sPool.release(this);
+ *     }
+ *
+ *     . . .
+ * }
+ * 
+ * + * @hide + */ +public final class Pools { + + /** + * Interface for managing a pool of objects. + * + * @param The pooled type. + */ + public static interface Pool { + + /** + * @return An instance from the pool if such, null otherwise. + */ + public T acquire(); + + /** + * Release an instance to the pool. + * + * @param instance The instance to release. + * @return Whether the instance was put in the pool. + * + * @throws IllegalStateException If the instance is already in the pool. + */ + public boolean release(T instance); + } + + private Pools() { + /* do nothing - hiding constructor */ + } + + /** + * Simple (non-synchronized) pool of objects. + * + * @param The pooled type. + */ + public static class SimplePool implements Pool { + private final Object[] mPool; + + private int mPoolSize; + + /** + * Creates a new instance. + * + * @param maxPoolSize The max pool size. + * + * @throws IllegalArgumentException If the max pool size is less than zero. + */ + public SimplePool(int maxPoolSize) { + if (maxPoolSize <= 0) { + throw new IllegalArgumentException("The max pool size must be > 0"); + } + mPool = new Object[maxPoolSize]; + } + + @Override + @SuppressWarnings("unchecked") + public T acquire() { + if (mPoolSize > 0) { + final int lastPooledIndex = mPoolSize - 1; + T instance = (T) mPool[lastPooledIndex]; + mPool[lastPooledIndex] = null; + mPoolSize--; + return instance; + } + return null; + } + + @Override + public boolean release(T instance) { + if (isInPool(instance)) { + throw new IllegalStateException("Already in the pool!"); + } + if (mPoolSize < mPool.length) { + mPool[mPoolSize] = instance; + mPoolSize++; + return true; + } + return false; + } + + private boolean isInPool(T instance) { + for (int i = 0; i < mPoolSize; i++) { + if (mPool[i] == instance) { + return true; + } + } + return false; + } + } + + /** + * Synchronized) pool of objects. + * + * @param The pooled type. + */ + public static class SynchronizedPool extends SimplePool { + private final Object mLock = new Object(); + + /** + * Creates a new instance. + * + * @param maxPoolSize The max pool size. + * + * @throws IllegalArgumentException If the max pool size is less than zero. + */ + public SynchronizedPool(int maxPoolSize) { + super(maxPoolSize); + } + + @Override + public T acquire() { + synchronized (mLock) { + return super.acquire(); + } + } + + @Override + public boolean release(T element) { + synchronized (mLock) { + return super.release(element); + } + } + } +} \ No newline at end of file diff --git a/src/com/android/launcher3/DragLayer.java b/src/com/android/launcher3/DragLayer.java index 54f489d76..14c08b65d 100644 --- a/src/com/android/launcher3/DragLayer.java +++ b/src/com/android/launcher3/DragLayer.java @@ -803,8 +803,7 @@ public class DragLayer extends FrameLayout implements ViewGroup.OnHierarchyChang /** * Note: this is a reimplementation of View.isLayoutRtl() since that is currently hidden api. */ - @Override - public boolean isLayoutRtl() { + private boolean isLayoutRtl() { return (getLayoutDirection() == LAYOUT_DIRECTION_RTL); } diff --git a/src/com/android/launcher3/LiveWallpaperListAdapter.java b/src/com/android/launcher3/LiveWallpaperListAdapter.java index 43d8cfe0c..54e0af749 100644 --- a/src/com/android/launcher3/LiveWallpaperListAdapter.java +++ b/src/com/android/launcher3/LiveWallpaperListAdapter.java @@ -118,7 +118,7 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter mInfo = info; } @Override - public void onClick(WallpaperCropActivity a) { + public void onClick(WallpaperPickerActivity a) { Intent preview = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); preview.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, mInfo.getComponent()); diff --git a/src/com/android/launcher3/LockWallpaperPickerActivity.java b/src/com/android/launcher3/LockWallpaperPickerActivity.java deleted file mode 100644 index 483568480..000000000 --- a/src/com/android/launcher3/LockWallpaperPickerActivity.java +++ /dev/null @@ -1,1600 +0,0 @@ -/* - * Copyright (C) 2014 The CyanogenMod 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.launcher3; - -import android.animation.Animator; -import android.animation.LayoutTransition; -import android.app.ActionBar; -import android.app.Activity; -import android.app.WallpaperInfo; -import android.app.WallpaperManager; -import android.content.ContentResolver; -import android.content.Context; -import android.content.Intent; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.content.res.AssetManager; -import android.content.res.Resources; -import android.database.Cursor; -import android.graphics.Bitmap; -import android.graphics.Bitmap.CompressFormat; -import android.graphics.BitmapFactory; -import android.graphics.BitmapRegionDecoder; -import android.graphics.Canvas; -import android.graphics.Matrix; -import android.graphics.Paint; -import android.graphics.Point; -import android.graphics.PorterDuff; -import android.graphics.Rect; -import android.graphics.RectF; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.LevelListDrawable; -import android.net.Uri; -import android.os.AsyncTask; -import android.os.Bundle; -import android.provider.MediaStore; -import android.provider.ThemesContract.ThemesColumns; -import android.util.Log; -import android.util.Pair; -import android.view.ActionMode; -import android.view.Display; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.view.ViewTreeObserver; -import android.view.ViewTreeObserver.OnGlobalLayoutListener; -import android.view.animation.AccelerateInterpolator; -import android.view.animation.DecelerateInterpolator; -import android.widget.BaseAdapter; -import android.widget.FrameLayout; -import android.widget.HorizontalScrollView; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.ListAdapter; - -import com.android.gallery3d.common.Utils; -import com.android.launcher3.WallpaperCropActivity.BitmapCropTask; -import com.android.launcher3.WallpaperCropActivity.OnBitmapCroppedHandler; -import com.android.photos.BitmapRegionTileSource; - -import java.io.BufferedInputStream; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; - -public class LockWallpaperPickerActivity extends WallpaperCropActivity { - static final String TAG = LockWallpaperPickerActivity.class.getSimpleName(); - - public static final int IMAGE_PICK = 5; - public static final int PICK_WALLPAPER_THIRD_PARTY_ACTIVITY = 6; - public static final int PICK_LIVE_WALLPAPER = 7; - private static final String TEMP_WALLPAPER_TILES = "TEMP_KEYGUARD_WALLPAPER_TILES"; - - private View mSelectedThumb; - private boolean mIgnoreNextTap; - private OnClickListener mThumbnailOnClickListener; - - private LinearLayout mWallpapersView; - private View mWallpaperStrip; - - private ActionMode.Callback mActionModeCallback; - private ActionMode mActionMode; - - private View.OnLongClickListener mLongClickListener; - - ArrayList mTempWallpaperTiles = new ArrayList(); - private SavedWallpaperImages mSavedImages; - - public static class PickImageInfo extends WallpaperTileInfo { - @Override - public void onClick(WallpaperCropActivity a) { - Intent intent = new Intent(Intent.ACTION_GET_CONTENT); - intent.setType("image/*"); - Utilities.startActivityForResultSafely(((LockWallpaperPickerActivity)a), intent, IMAGE_PICK); - } - } - - public static class UserDesktopWallpaperInfo extends WallpaperTileInfo { - @Override - public void onClick(WallpaperCropActivity a) { - WallpaperManager am = WallpaperManager.getInstance(a); - am.clearKeyguardWallpaper(); - a.setResult(RESULT_OK); - a.finish(); - } - } - - public static class UriWallpaperInfo extends WallpaperTileInfo { - private Uri mUri; - public UriWallpaperInfo(Uri uri) { - mUri = uri; - } - @Override - public void onClick(WallpaperCropActivity a) { - CropView v = a.getCropView(); - int rotation = WallpaperCropActivity.getRotationFromExif(a, mUri); - v.setTileSource(new BitmapRegionTileSource(a, mUri, 1024, rotation), null); - v.setTouchEnabled(true); - } - @Override - public void onSave(final WallpaperCropActivity a) { - boolean finishActivityWhenDone = true; - OnBitmapCroppedHandler h = new OnBitmapCroppedHandler() { - public void onBitmapCropped(byte[] imageBytes) { - Point thumbSize = getDefaultThumbnailSize(a.getResources()); - Bitmap thumb = createThumbnail( - thumbSize, null, null, imageBytes, null, 0, 0, true); - a.getSavedImages().writeImage(thumb, imageBytes); - } - }; - ((LockWallpaperPickerActivity)a).cropImageAndSetWallpaper(mUri, h, finishActivityWhenDone); - } - @Override - public boolean isSelectable() { - return true; - } - @Override - public boolean isNamelessWallpaper() { - return true; - } - } - - /** - * For themes which have regular wallpapers - */ - public static class ThemeWallpaperInfo extends WallpaperTileInfo { - String mPackageName; - boolean mIsLegacy; - Drawable mThumb; - Context mContext; - - public ThemeWallpaperInfo(Context context, String packageName, boolean legacy, Drawable thumb) { - this.mContext = context; - this.mPackageName = packageName; - this.mIsLegacy = legacy; - this.mThumb = thumb; - } - - @Override - public void onClick(WallpaperCropActivity a) { - CropView v = a.getCropView(); - try { - BitmapRegionTileSource source = null; - if (mIsLegacy) { - final PackageManager pm = a.getPackageManager(); - PackageInfo pi = pm.getPackageInfo(mPackageName, 0); - Resources res = a.getPackageManager().getResourcesForApplication(mPackageName); - int resId = pi.legacyThemeInfos[0].wallpaperResourceId; - - int rotation = WallpaperCropActivity.getRotationFromExif(res, resId); - source = new BitmapRegionTileSource( - res, a, resId, 1024, rotation); - } else { - Resources res = a.getPackageManager().getResourcesForApplication(mPackageName); - if (res == null) { - return; - } - - int rotation = 0; - source = new BitmapRegionTileSource( - res, a, "wallpapers", 1024, rotation, true); - } - v.setTileSource(source, null); - v.setTouchEnabled(true); - } catch (NameNotFoundException e) { - } - } - - @Override - public void onSave(WallpaperCropActivity a) { - ((LockWallpaperPickerActivity)a).cropImageAndSetWallpaper( - "wallpapers", - mPackageName, - mIsLegacy, - true); - } - - @Override - public boolean isNamelessWallpaper() { - return true; - } - - @Override - public boolean isSelectable() { - return true; - } - } - - /** - * For themes that have LOCKSCREEN wallpapers - */ - public static class ThemeLockWallpaperInfo extends WallpaperTileInfo { - String mPackageName; - Drawable mThumb; - Context mContext; - - public ThemeLockWallpaperInfo(Context context, String packageName, Drawable thumb) { - this.mContext = context; - this.mPackageName = packageName; - this.mThumb = thumb; - } - - @Override - public void onClick(WallpaperCropActivity a) { - CropView v = a.getCropView(); - try { - BitmapRegionTileSource source = null; - Resources res = a.getPackageManager().getResourcesForApplication(mPackageName); - if (res == null) { - return; - } - - int rotation = 0; - source = new BitmapRegionTileSource( - res, a, "lockscreen", 1024, rotation, true); - v.setTileSource(source, null); - v.setTouchEnabled(true); - } catch (NameNotFoundException e) { - } - } - - @Override - public void onSave(WallpaperCropActivity a) { - ((LockWallpaperPickerActivity)a).cropImageAndSetWallpaper( - "lockscreen", - mPackageName, - false, - true); - } - - @Override - public boolean isNamelessWallpaper() { - return true; - } - - @Override - public boolean isSelectable() { - return true; - } - } - - public static class ResourceWallpaperInfo extends WallpaperTileInfo { - private Resources mResources; - private int mResId; - private Drawable mThumb; - - public ResourceWallpaperInfo(Resources res, int resId, Drawable thumb) { - mResources = res; - mResId = resId; - mThumb = thumb; - } - @Override - public void onClick(WallpaperCropActivity a) { - int rotation = WallpaperCropActivity.getRotationFromExif(mResources, mResId); - BitmapRegionTileSource source = new BitmapRegionTileSource( - mResources, a, mResId, 1024, rotation); - CropView v = a.getCropView(); - v.setTileSource(source, null); - Point wallpaperSize = WallpaperCropActivity.getDefaultWallpaperSize( - a.getResources(), a.getWindowManager()); - RectF crop = WallpaperCropActivity.getMaxCropRect( - source.getImageWidth(), source.getImageHeight(), - wallpaperSize.x, wallpaperSize.y, false); - v.setScale(wallpaperSize.x / crop.width()); - v.setTouchEnabled(false); - } - @Override - public void onSave(WallpaperCropActivity a) { - boolean finishActivityWhenDone = true; - ((LockWallpaperPickerActivity)a).cropImageAndSetWallpaper(mResources, mResId, finishActivityWhenDone); - } - @Override - public boolean isSelectable() { - return true; - } - @Override - public boolean isNamelessWallpaper() { - return true; - } - } - - protected void cropImageAndSetWallpaper(String path, String packageName, final boolean legacy, - final boolean finishActivityWhenDone) { - - Point outSize = new Point(); - getWindowManager().getDefaultDisplay().getSize(outSize); - - final int outWidth = outSize.x; - final int outHeight = outSize.y; - Runnable onEndCrop = new Runnable() { - public void run() { - if (finishActivityWhenDone) { - setResult(Activity.RESULT_OK); - finish(); - } - } - }; - - RectF cropRect = new RectF(mCropView.getCrop()); - BitmapCropTask cropTask = null; - try { - if (legacy) { - final PackageManager pm = getPackageManager(); - PackageInfo pi = pm.getPackageInfo(packageName, 0); - Resources res = getPackageManager().getResourcesForApplication(packageName); - int resId = pi.legacyThemeInfos[0].wallpaperResourceId; - cropTask = new BitmapCropTask(this, res, resId, - cropRect, 0, outWidth, outHeight, true, false, onEndCrop); - } else { - Resources res = getPackageManager().getResourcesForApplication(packageName); - if (res == null) { - return; - } - cropTask = new BitmapCropTask(this, res, path, cropRect, - 0, outWidth, outHeight, true, false, onEndCrop); - } - } catch (NameNotFoundException e) { - return; - } - - if (cropTask != null) { - cropTask.execute(); - } - } - - @Override - protected void cropImageAndSetWallpaper(Uri uri, - OnBitmapCroppedHandler onBitmapCroppedHandler, final boolean finishActivityWhenDone) { - // Get the crop - boolean ltr = mCropView.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR; - - Point minDims = new Point(); - Point maxDims = new Point(); - Display d = getWindowManager().getDefaultDisplay(); - d.getCurrentSizeRange(minDims, maxDims); - - Point displaySize = new Point(); - d.getSize(displaySize); - - int maxDim = Math.max(maxDims.x, maxDims.y); - final int minDim = Math.min(minDims.x, minDims.y); - int defaultWallpaperWidth; - if (isScreenLarge(getResources())) { - defaultWallpaperWidth = (int) (maxDim * - wallpaperTravelToScreenWidthRatio(maxDim, minDim)); - } else { - defaultWallpaperWidth = Math.max((int) - (minDim * WALLPAPER_SCREENS_SPAN), maxDim); - } - - boolean isPortrait = displaySize.x < displaySize.y; - int portraitHeight; - if (isPortrait) { - portraitHeight = mCropView.getHeight(); - } else { - // TODO: how to actually get the proper portrait height? - // This is not quite right: - portraitHeight = Math.max(maxDims.x, maxDims.y); - } - if (android.os.Build.VERSION.SDK_INT >= - android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) { - Point realSize = new Point(); - d.getRealSize(realSize); - portraitHeight = Math.max(realSize.x, realSize.y); - } - // Get the crop - RectF cropRect = mCropView.getCrop(); - int cropRotation = mCropView.getImageRotation(); - float cropScale = mCropView.getWidth() / (float) cropRect.width(); - - Point inSize = mCropView.getSourceDimensions(); - Matrix rotateMatrix = new Matrix(); - rotateMatrix.setRotate(cropRotation); - float[] rotatedInSize = new float[] { inSize.x, inSize.y }; - rotateMatrix.mapPoints(rotatedInSize); - rotatedInSize[0] = Math.abs(rotatedInSize[0]); - rotatedInSize[1] = Math.abs(rotatedInSize[1]); - - // ADJUST CROP WIDTH - // Extend the crop all the way to the right, for parallax - // (or all the way to the left, in RTL) - float extraSpace = ltr ? rotatedInSize[0] - cropRect.right : cropRect.left; - // Cap the amount of extra width - float maxExtraSpace = defaultWallpaperWidth / cropScale - cropRect.width(); - extraSpace = Math.min(extraSpace, maxExtraSpace); - - if (ltr) { - cropRect.right += extraSpace; - } else { - cropRect.left -= extraSpace; - } - - // ADJUST CROP HEIGHT - if (isPortrait) { - cropRect.bottom = cropRect.top + portraitHeight / cropScale; - } else { // LANDSCAPE - float extraPortraitHeight = - portraitHeight / cropScale - cropRect.height(); - float expandHeight = - Math.min(Math.min(rotatedInSize[1] - cropRect.bottom, cropRect.top), - extraPortraitHeight / 2); - cropRect.top -= expandHeight; - cropRect.bottom += expandHeight; - } - final int outWidth = (int) Math.round(cropRect.width() * cropScale); - final int outHeight = (int) Math.round(cropRect.height() * cropScale); - - Runnable onEndCrop = new Runnable() { - public void run() { - updateWallpaperDimensions(outWidth, outHeight); - if (finishActivityWhenDone) { - setResult(Activity.RESULT_OK); - finish(); - } - } - }; - BitmapCropTask cropTask = new BitmapCropTask(this, uri, - cropRect, cropRotation, outWidth, outHeight, true, false, onEndCrop); - if (onBitmapCroppedHandler != null) { - cropTask.setOnBitmapCropped(onBitmapCroppedHandler); - } - cropTask.execute(); - } - - @Override - protected void setWallpaper(String filePath, final boolean finishActivityWhenDone) { - int rotation = getRotationFromExif(filePath); - BitmapCropTask cropTask = new BitmapCropTask( - this, filePath, null, rotation, 0, 0, true, false, null); - final Point bounds = cropTask.getImageBounds(); - Runnable onEndCrop = new Runnable() { - public void run() { - updateWallpaperDimensions(bounds.x, bounds.y); - if (finishActivityWhenDone) { - setResult(Activity.RESULT_OK); - finish(); - } - } - }; - cropTask.setOnEndRunnable(onEndCrop); - cropTask.setNoCrop(true); - cropTask.execute(); - } - - protected static class BitmapCropTask extends AsyncTask { - Uri mInUri = null; - Context mContext; - String mInFilePath; - byte[] mInImageBytes; - int mInResId = 0; - InputStream mInStream; - RectF mCropBounds = null; - int mOutWidth, mOutHeight; - int mRotation; - String mOutputFormat = "jpg"; // for now - boolean mSetWallpaper; - boolean mSaveCroppedBitmap; - Bitmap mCroppedBitmap; - Runnable mOnEndRunnable; - Resources mResources; - OnBitmapCroppedHandler mOnBitmapCroppedHandler; - boolean mNoCrop; - boolean mImageFromAsset; - - public BitmapCropTask(Context c, Resources res , String assetPath, - RectF cropBounds, int rotation, int outWidth, int outHeight, - boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { - mContext = c; - mResources = res; - mInFilePath = assetPath; - mImageFromAsset = true; - init(cropBounds, rotation, - outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); - } - - public BitmapCropTask(Context c, String filePath, - RectF cropBounds, int rotation, int outWidth, int outHeight, - boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { - mContext = c; - mInFilePath = filePath; - init(cropBounds, rotation, - outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); - } - - public BitmapCropTask(byte[] imageBytes, - RectF cropBounds, int rotation, int outWidth, int outHeight, - boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { - mInImageBytes = imageBytes; - init(cropBounds, rotation, - outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); - } - - public BitmapCropTask(Context c, Uri inUri, - RectF cropBounds, int rotation, int outWidth, int outHeight, - boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { - mContext = c; - mInUri = inUri; - init(cropBounds, rotation, - outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); - } - - public BitmapCropTask(Context c, Resources res, int inResId, - RectF cropBounds, int rotation, int outWidth, int outHeight, - boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { - mContext = c; - mInResId = inResId; - mResources = res; - init(cropBounds, rotation, - outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); - } - - private void init(RectF cropBounds, int rotation, int outWidth, int outHeight, - boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { - mCropBounds = cropBounds; - mRotation = rotation; - mOutWidth = outWidth; - mOutHeight = outHeight; - mSetWallpaper = setWallpaper; - mSaveCroppedBitmap = saveCroppedBitmap; - mOnEndRunnable = onEndRunnable; - } - - public void setOnBitmapCropped(OnBitmapCroppedHandler handler) { - mOnBitmapCroppedHandler = handler; - } - - public void setNoCrop(boolean value) { - mNoCrop = value; - } - - public void setOnEndRunnable(Runnable onEndRunnable) { - mOnEndRunnable = onEndRunnable; - } - - // Helper to setup input stream - private void regenerateInputStream() { - if (mInUri == null && mInResId == 0 && mInFilePath == null && mInImageBytes == null && !mImageFromAsset) { - Log.w(TAG, "cannot read original file, no input URI, resource ID, or " + - "image byte array given"); - } else { - Utils.closeSilently(mInStream); - try { - if (mImageFromAsset) { - AssetManager am = mResources.getAssets(); - String[] pathImages = am.list(mInFilePath); - if (pathImages == null || pathImages.length == 0) { - throw new IOException("did not find any images in path: " + mInFilePath); - } - InputStream is = am.open(mInFilePath + File.separator + pathImages[0]); - mInStream = new BufferedInputStream(is); - } else if (mInUri != null) { - mInStream = new BufferedInputStream( - mContext.getContentResolver().openInputStream(mInUri)); - } else if (mInFilePath != null) { - mInStream = mContext.openFileInput(mInFilePath); - } else if (mInImageBytes != null) { - mInStream = new BufferedInputStream( - new ByteArrayInputStream(mInImageBytes)); - } else { - mInStream = new BufferedInputStream( - mResources.openRawResource(mInResId)); - } - } catch (FileNotFoundException e) { - Log.w(TAG, "cannot read file: " + mInUri.toString(), e); - } catch (IOException e) { - Log.w(TAG, "cannot read file: " + mInUri.toString(), e); - } - } - } - - public Point getImageBounds() { - regenerateInputStream(); - if (mInStream != null) { - BitmapFactory.Options options = new BitmapFactory.Options(); - options.inJustDecodeBounds = true; - BitmapFactory.decodeStream(mInStream, null, options); - if (options.outWidth != 0 && options.outHeight != 0) { - return new Point(options.outWidth, options.outHeight); - } - } - return null; - } - - public void setCropBounds(RectF cropBounds) { - mCropBounds = cropBounds; - } - - public Bitmap getCroppedBitmap() { - return mCroppedBitmap; - } - public boolean cropBitmap() { - boolean failure = false; - - regenerateInputStream(); - - WallpaperManager wallpaperManager = null; - if (mSetWallpaper) { - wallpaperManager = WallpaperManager.getInstance(mContext.getApplicationContext()); - } - if (mSetWallpaper && mNoCrop && mInStream != null) { - try { - wallpaperManager.setKeyguardStream(mInStream); - } catch (IOException e) { - Log.w(TAG, "cannot write stream to wallpaper", e); - failure = true; - } - return !failure; - } - if (mInStream != null) { - // Find crop bounds (scaled to original image size) - Rect roundedTrueCrop = new Rect(); - Matrix rotateMatrix = new Matrix(); - Matrix inverseRotateMatrix = new Matrix(); - if (mRotation > 0) { - rotateMatrix.setRotate(mRotation); - inverseRotateMatrix.setRotate(-mRotation); - - mCropBounds.roundOut(roundedTrueCrop); - mCropBounds = new RectF(roundedTrueCrop); - - Point bounds = getImageBounds(); - - float[] rotatedBounds = new float[] { bounds.x, bounds.y }; - rotateMatrix.mapPoints(rotatedBounds); - rotatedBounds[0] = Math.abs(rotatedBounds[0]); - rotatedBounds[1] = Math.abs(rotatedBounds[1]); - - mCropBounds.offset(-rotatedBounds[0]/2, -rotatedBounds[1]/2); - inverseRotateMatrix.mapRect(mCropBounds); - mCropBounds.offset(bounds.x/2, bounds.y/2); - - regenerateInputStream(); - } - - mCropBounds.roundOut(roundedTrueCrop); - - if (roundedTrueCrop.width() <= 0 || roundedTrueCrop.height() <= 0) { - Log.w(TAG, "crop has bad values for full size image"); - failure = true; - return false; - } - - // See how much we're reducing the size of the image - int scaleDownSampleSize = Math.min(roundedTrueCrop.width() / mOutWidth, - roundedTrueCrop.height() / mOutHeight); - - // Attempt to open a region decoder - BitmapRegionDecoder decoder = null; - try { - decoder = BitmapRegionDecoder.newInstance(mInStream, true); - } catch (IOException e) { - Log.w(TAG, "cannot open region decoder for file: " + mInUri.toString(), e); - } - - Bitmap crop = null; - if (decoder != null) { - // Do region decoding to get crop bitmap - BitmapFactory.Options options = new BitmapFactory.Options(); - if (scaleDownSampleSize > 1) { - options.inSampleSize = scaleDownSampleSize; - } - crop = decoder.decodeRegion(roundedTrueCrop, options); - decoder.recycle(); - } - - if (crop == null) { - // BitmapRegionDecoder has failed, try to crop in-memory - regenerateInputStream(); - Bitmap fullSize = null; - if (mInStream != null) { - BitmapFactory.Options options = new BitmapFactory.Options(); - if (scaleDownSampleSize > 1) { - options.inSampleSize = scaleDownSampleSize; - } - fullSize = BitmapFactory.decodeStream(mInStream, null, options); - } - if (fullSize != null) { - mCropBounds.left /= scaleDownSampleSize; - mCropBounds.top /= scaleDownSampleSize; - mCropBounds.bottom /= scaleDownSampleSize; - mCropBounds.right /= scaleDownSampleSize; - mCropBounds.roundOut(roundedTrueCrop); - - crop = Bitmap.createBitmap(fullSize, roundedTrueCrop.left, - roundedTrueCrop.top, roundedTrueCrop.width(), - roundedTrueCrop.height()); - } - } - - if (crop == null) { - Log.w(TAG, "cannot decode file: " + mInUri.toString()); - failure = true; - return false; - } - if (mOutWidth > 0 && mOutHeight > 0 || mRotation > 0) { - float[] dimsAfter = new float[] { crop.getWidth(), crop.getHeight() }; - rotateMatrix.mapPoints(dimsAfter); - dimsAfter[0] = Math.abs(dimsAfter[0]); - dimsAfter[1] = Math.abs(dimsAfter[1]); - - if (!(mOutWidth > 0 && mOutHeight > 0)) { - mOutWidth = Math.round(dimsAfter[0]); - mOutHeight = Math.round(dimsAfter[1]); - } - - RectF cropRect = new RectF(0, 0, dimsAfter[0], dimsAfter[1]); - RectF returnRect = new RectF(0, 0, mOutWidth, mOutHeight); - - Matrix m = new Matrix(); - if (mRotation == 0) { - m.setRectToRect(cropRect, returnRect, Matrix.ScaleToFit.FILL); - } else { - Matrix m1 = new Matrix(); - m1.setTranslate(-crop.getWidth() / 2f, -crop.getHeight() / 2f); - Matrix m2 = new Matrix(); - m2.setRotate(mRotation); - Matrix m3 = new Matrix(); - m3.setTranslate(dimsAfter[0] / 2f, dimsAfter[1] / 2f); - Matrix m4 = new Matrix(); - m4.setRectToRect(cropRect, returnRect, Matrix.ScaleToFit.FILL); - - Matrix c1 = new Matrix(); - c1.setConcat(m2, m1); - Matrix c2 = new Matrix(); - c2.setConcat(m4, m3); - m.setConcat(c2, c1); - } - - Bitmap tmp = Bitmap.createBitmap((int) returnRect.width(), - (int) returnRect.height(), Bitmap.Config.ARGB_8888); - if (tmp != null) { - Canvas c = new Canvas(tmp); - Paint p = new Paint(); - p.setFilterBitmap(true); - c.drawBitmap(crop, m, p); - crop = tmp; - } - } - - if (mSaveCroppedBitmap) { - mCroppedBitmap = crop; - } - - // Get output compression format - CompressFormat cf = - convertExtensionToCompressFormat(getFileExtension(mOutputFormat)); - - // Compress to byte array - ByteArrayOutputStream tmpOut = new ByteArrayOutputStream(2048); - if (crop.compress(cf, DEFAULT_COMPRESS_QUALITY, tmpOut)) { - // If we need to set to the wallpaper, set it - if (mSetWallpaper && wallpaperManager != null) { - try { - byte[] outByteArray = tmpOut.toByteArray(); - wallpaperManager.setKeyguardStream(new ByteArrayInputStream(outByteArray)); - if (mOnBitmapCroppedHandler != null) { - mOnBitmapCroppedHandler.onBitmapCropped(outByteArray); - } - } catch (IOException e) { - Log.w(TAG, "cannot write stream to wallpaper", e); - failure = true; - } - } - } else { - Log.w(TAG, "cannot compress bitmap"); - failure = true; - } - } else { - Log.w(TAG, "could not complete crop task because input stream is null"); - } - return !failure; // True if any of the operations failed - } - - @Override - protected Boolean doInBackground(Void... params) { - return cropBitmap(); - } - - @Override - protected void onPostExecute(Boolean result) { - if (mOnEndRunnable != null) { - mOnEndRunnable.run(); - } - } - } - - @Override - protected void setWallpaperStripYOffset(int offset) { - mWallpaperStrip.setPadding(0, 0, 0, offset); - } - - // called by onCreate; this is subclassed to overwrite WallpaperCropActivity - protected void init() { - setContentView(R.layout.wallpaper_picker); - - mCropView = (CropView) findViewById(R.id.cropView); - mWallpaperStrip = findViewById(R.id.wallpaper_strip); - mCropView.setTouchCallback(new CropView.TouchCallback() { - LauncherViewPropertyAnimator mAnim; - @Override - public void onTouchDown() { - if (mAnim != null) { - mAnim.cancel(); - } - if (mWallpaperStrip.getAlpha() == 1f) { - mIgnoreNextTap = true; - } - mAnim = new LauncherViewPropertyAnimator(mWallpaperStrip); - mAnim.alpha(0f) - .setDuration(150) - .addListener(new Animator.AnimatorListener() { - public void onAnimationStart(Animator animator) { } - public void onAnimationEnd(Animator animator) { - mWallpaperStrip.setVisibility(View.INVISIBLE); - } - public void onAnimationCancel(Animator animator) { } - public void onAnimationRepeat(Animator animator) { } - }); - mAnim.setInterpolator(new AccelerateInterpolator(0.75f)); - mAnim.start(); - } - @Override - public void onTouchUp() { - mIgnoreNextTap = false; - } - @Override - public void onTap() { - boolean ignoreTap = mIgnoreNextTap; - mIgnoreNextTap = false; - if (!ignoreTap) { - if (mAnim != null) { - mAnim.cancel(); - } - mWallpaperStrip.setVisibility(View.VISIBLE); - mAnim = new LauncherViewPropertyAnimator(mWallpaperStrip); - mAnim.alpha(1f) - .setDuration(150) - .setInterpolator(new DecelerateInterpolator(0.75f)); - mAnim.start(); - } - } - }); - - mThumbnailOnClickListener = new OnClickListener() { - public void onClick(View v) { - if (mActionMode != null) { - // When CAB is up, clicking toggles the item instead - if (v.isLongClickable()) { - mLongClickListener.onLongClick(v); - } - return; - } - WallpaperTileInfo info = (WallpaperTileInfo) v.getTag(); - if (info.isSelectable()) { - if (mSelectedThumb != null) { - mSelectedThumb.setSelected(false); - mSelectedThumb = null; - } - mSelectedThumb = v; - v.setSelected(true); - // TODO: Remove this once the accessibility framework and - // services have better support for selection state. - v.announceForAccessibility( - getString(R.string.announce_selection, v.getContentDescription())); - } - info.onClick(LockWallpaperPickerActivity.this); - } - }; - mLongClickListener = new View.OnLongClickListener() { - // Called when the user long-clicks on someView - public boolean onLongClick(View view) { - CheckableFrameLayout c = (CheckableFrameLayout) view; - c.toggle(); - - if (mActionMode != null) { - mActionMode.invalidate(); - } else { - // Start the CAB using the ActionMode.Callback defined below - mActionMode = startActionMode(mActionModeCallback); - int childCount = mWallpapersView.getChildCount(); - for (int i = 0; i < childCount; i++) { - mWallpapersView.getChildAt(i).setSelected(false); - } - } - return true; - } - }; - - mWallpapersView = (LinearLayout) findViewById(R.id.wallpaper_list); - - // Add a tile for the Gallery - LinearLayout masterWallpaperList = (LinearLayout) findViewById(R.id.master_wallpaper_list); - FrameLayout pickImageTile = (FrameLayout) getLayoutInflater(). - inflate(R.layout.wallpaper_picker_image_picker_item, masterWallpaperList, false); - setWallpaperItemPaddingToZero(pickImageTile); - masterWallpaperList.addView(pickImageTile, 0); - - // Add tile for clear image - FrameLayout clearImageTile = (FrameLayout) getLayoutInflater(). - inflate(R.layout.wallpaper_picker_clear, masterWallpaperList, false); - setWallpaperItemPaddingToZero(clearImageTile); - masterWallpaperList.addView(clearImageTile, 0); - - // theme LOCKSCREEN wallpapers - ArrayList themeLockWallpapers = findThemeLockWallpapers(); - ThemeLockWallpapersAdapter tla = new ThemeLockWallpapersAdapter(this, themeLockWallpapers); - populateWallpapersFromAdapter(mWallpapersView, tla, false, true); - - // theme wallpapers - ArrayList themeWallpapers = findThemeWallpapers(); - ThemeWallpapersAdapter ta = new ThemeWallpapersAdapter(this, themeWallpapers); - populateWallpapersFromAdapter(mWallpapersView, ta, false, true); - - // Populate the saved wallpapers - mSavedImages = new SavedWallpaperImages(this); - mSavedImages.loadThumbnailsAndImageIdList(); - populateWallpapersFromAdapter(mWallpapersView, mSavedImages, true, true); - - // Make its background the last photo taken on external storage - Bitmap lastPhoto = getThumbnailOfLastPhoto(); - if (lastPhoto != null) { - ImageView galleryThumbnailBg = - (ImageView) pickImageTile.findViewById(R.id.wallpaper_image); - galleryThumbnailBg.setImageBitmap(getThumbnailOfLastPhoto()); - int colorOverlay = getResources().getColor(R.color.wallpaper_picker_translucent_gray); - galleryThumbnailBg.setColorFilter(colorOverlay, PorterDuff.Mode.SRC_ATOP); - } - - PickImageInfo pickImageInfo = new PickImageInfo(); - pickImageTile.setTag(pickImageInfo); - pickImageInfo.setView(pickImageTile); - pickImageTile.setOnClickListener(mThumbnailOnClickListener); - pickImageInfo.setView(pickImageTile); - - UserDesktopWallpaperInfo clearImageInfo = new UserDesktopWallpaperInfo(); - clearImageTile.setTag(clearImageInfo); - clearImageInfo.setView(clearImageTile); - clearImageTile.setOnClickListener(mThumbnailOnClickListener); - clearImageInfo.setView(clearImageTile); - - updateTileIndices(); - - // Update the scroll for RTL - initializeScrollForRtl(); - - // Create smooth layout transitions for when items are deleted - final LayoutTransition transitioner = new LayoutTransition(); - transitioner.setDuration(200); - transitioner.setStartDelay(LayoutTransition.CHANGE_DISAPPEARING, 0); - transitioner.setAnimator(LayoutTransition.DISAPPEARING, null); - mWallpapersView.setLayoutTransition(transitioner); - - // Action bar - // Show the custom action bar view - final ActionBar actionBar = getActionBar(); - actionBar.setCustomView(R.layout.actionbar_set_wallpaper); - actionBar.getCustomView().setOnClickListener( - new View.OnClickListener() { - @Override - public void onClick(View v) { - if (mSelectedThumb != null) { - WallpaperTileInfo info = (WallpaperTileInfo) mSelectedThumb.getTag(); - info.onSave(LockWallpaperPickerActivity.this); - } - } - }); - - // CAB for deleting items - mActionModeCallback = new ActionMode.Callback() { - // Called when the action mode is created; startActionMode() was called - @Override - public boolean onCreateActionMode(ActionMode mode, Menu menu) { - // Inflate a menu resource providing context menu items - MenuInflater inflater = mode.getMenuInflater(); - inflater.inflate(R.menu.cab_delete_wallpapers, menu); - return true; - } - - private int numCheckedItems() { - int childCount = mWallpapersView.getChildCount(); - int numCheckedItems = 0; - for (int i = 0; i < childCount; i++) { - CheckableFrameLayout c = (CheckableFrameLayout) mWallpapersView.getChildAt(i); - if (c.isChecked()) { - numCheckedItems++; - } - } - return numCheckedItems; - } - - // Called each time the action mode is shown. Always called after onCreateActionMode, - // but may be called multiple times if the mode is invalidated. - @Override - public boolean onPrepareActionMode(ActionMode mode, Menu menu) { - int numCheckedItems = numCheckedItems(); - if (numCheckedItems == 0) { - mode.finish(); - return true; - } else { - mode.setTitle(getResources().getQuantityString( - R.plurals.number_of_items_selected, numCheckedItems, numCheckedItems)); - return true; - } - } - - // Called when the user selects a contextual menu item - @Override - public boolean onActionItemClicked(ActionMode mode, MenuItem item) { - int itemId = item.getItemId(); - if (itemId == R.id.menu_delete) { - int childCount = mWallpapersView.getChildCount(); - ArrayList viewsToRemove = new ArrayList(); - for (int i = 0; i < childCount; i++) { - CheckableFrameLayout c = - (CheckableFrameLayout) mWallpapersView.getChildAt(i); - if (c.isChecked()) { - WallpaperTileInfo info = (WallpaperTileInfo) c.getTag(); - info.onDelete(LockWallpaperPickerActivity.this); - viewsToRemove.add(c); - } - } - for (View v : viewsToRemove) { - mWallpapersView.removeView(v); - } - updateTileIndices(); - mode.finish(); // Action picked, so close the CAB - return true; - } else { - return false; - } - } - - // Called when the user exits the action mode - @Override - public void onDestroyActionMode(ActionMode mode) { - int childCount = mWallpapersView.getChildCount(); - for (int i = 0; i < childCount; i++) { - CheckableFrameLayout c = (CheckableFrameLayout) mWallpapersView.getChildAt(i); - c.setChecked(false); - } - mSelectedThumb.setSelected(true); - mActionMode = null; - } - }; - } - - private void initializeScrollForRtl() { - final HorizontalScrollView scroll = - (HorizontalScrollView) findViewById(R.id.wallpaper_scroll_container); - - if (scroll.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) { - final ViewTreeObserver observer = scroll.getViewTreeObserver(); - observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { - public void onGlobalLayout() { - LinearLayout masterWallpaperList = - (LinearLayout) findViewById(R.id.master_wallpaper_list); - scroll.scrollTo(masterWallpaperList.getWidth(), 0); - scroll.getViewTreeObserver().removeOnGlobalLayoutListener(this); - } - }); - } - } - - public boolean enableRotation() { - return super.enableRotation() || Launcher.sForceEnableRotation; - } - - protected Bitmap getThumbnailOfLastPhoto() { - Cursor cursor = MediaStore.Images.Media.query(getContentResolver(), - MediaStore.Images.Media.EXTERNAL_CONTENT_URI, - new String[] { MediaStore.Images.ImageColumns._ID, - MediaStore.Images.ImageColumns.DATE_TAKEN}, - null, null, MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC LIMIT 1"); - Bitmap thumb = null; - if (cursor != null) { - if (cursor.moveToFirst()) { - int id = cursor.getInt(0); - thumb = MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), - id, MediaStore.Images.Thumbnails.MINI_KIND, null); - } - cursor.close(); - } - return thumb; - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - return super.onCreateOptionsMenu(menu); - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - return super.onPrepareOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle presses on the action bar items - switch (item.getItemId()) { - default: - return super.onOptionsItemSelected(item); - } - } - - protected void onStop() { - super.onStop(); - mWallpaperStrip = findViewById(R.id.wallpaper_strip); - if (mWallpaperStrip.getAlpha() < 1f) { - mWallpaperStrip.setAlpha(1f); - mWallpaperStrip.setVisibility(View.VISIBLE); - } - } - - @Override - protected void onDestroy() { - mWallpapersView.removeAllViews(); - super.onDestroy(); - } - - protected void onSaveInstanceState(Bundle outState) { - outState.putParcelableArrayList(TEMP_WALLPAPER_TILES, mTempWallpaperTiles); - } - - protected void onRestoreInstanceState(Bundle savedInstanceState) { - ArrayList uris = savedInstanceState.getParcelableArrayList(TEMP_WALLPAPER_TILES); - for (Uri uri : uris) { - addTemporaryWallpaperTile(uri); - } - } - - private void populateWallpapersFromAdapter(ViewGroup parent, BaseAdapter adapter, - boolean addLongPressHandler, boolean selectFirstTile) { - for (int i = 0; i < adapter.getCount(); i++) { - FrameLayout thumbnail = (FrameLayout) adapter.getView(i, null, parent); - parent.addView(thumbnail, i); - WallpaperTileInfo info = (WallpaperTileInfo) adapter.getItem(i); - thumbnail.setTag(info); - info.setView(thumbnail); - if (addLongPressHandler) { - addLongPressHandler(thumbnail); - } - thumbnail.setOnClickListener(mThumbnailOnClickListener); - if (i == 0 && selectFirstTile) { - mThumbnailOnClickListener.onClick(thumbnail); - } - } - } - - private void updateTileIndices() { - LinearLayout masterWallpaperList = (LinearLayout) findViewById(R.id.master_wallpaper_list); - final int childCount = masterWallpaperList.getChildCount(); - final Resources res = getResources(); - - // Do two passes; the first pass gets the total number of tiles - int numTiles = 0; - for (int passNum = 0; passNum < 2; passNum++) { - int tileIndex = 0; - for (int i = 0; i < childCount; i++) { - View child = masterWallpaperList.getChildAt(i); - LinearLayout subList; - - int subListStart; - int subListEnd; - if (child.getTag() instanceof WallpaperTileInfo) { - subList = masterWallpaperList; - subListStart = i; - subListEnd = i + 1; - } else { // if (child instanceof LinearLayout) { - subList = (LinearLayout) child; - subListStart = 0; - subListEnd = subList.getChildCount(); - } - - for (int j = subListStart; j < subListEnd; j++) { - WallpaperTileInfo info = (WallpaperTileInfo) subList.getChildAt(j).getTag(); - if (info.isNamelessWallpaper()) { - if (passNum == 0) { - numTiles++; - } else { - CharSequence label = res.getString( - R.string.wallpaper_accessibility_name, ++tileIndex, numTiles); - info.onIndexUpdated(label); - } - } - } - } - } - } - - private static Point getDefaultThumbnailSize(Resources res) { - return new Point(res.getDimensionPixelSize(R.dimen.wallpaperThumbnailWidth), - res.getDimensionPixelSize(R.dimen.wallpaperThumbnailHeight)); - } - - private static Bitmap createThumbnail(Point size, Context context, Uri uri, byte[] imageBytes, - Resources res, int resId, int rotation, boolean leftAligned) { - int width = size.x; - int height = size.y; - - BitmapCropTask cropTask; - if (uri != null) { - cropTask = new BitmapCropTask( - context, uri, null, rotation, width, height, false, true, null); - } else if (imageBytes != null) { - cropTask = new BitmapCropTask( - imageBytes, null, rotation, width, height, false, true, null); - } else { - cropTask = new BitmapCropTask( - context, res, resId, null, rotation, width, height, false, true, null); - } - Point bounds = cropTask.getImageBounds(); - if (bounds == null || bounds.x == 0 || bounds.y == 0) { - return null; - } - - Matrix rotateMatrix = new Matrix(); - rotateMatrix.setRotate(rotation); - float[] rotatedBounds = new float[] { bounds.x, bounds.y }; - rotateMatrix.mapPoints(rotatedBounds); - rotatedBounds[0] = Math.abs(rotatedBounds[0]); - rotatedBounds[1] = Math.abs(rotatedBounds[1]); - - RectF cropRect = WallpaperCropActivity.getMaxCropRect( - (int) rotatedBounds[0], (int) rotatedBounds[1], width, height, leftAligned); - cropTask.setCropBounds(cropRect); - - if (cropTask.cropBitmap()) { - return cropTask.getCroppedBitmap(); - } else { - return null; - } - } - - private void addTemporaryWallpaperTile(Uri uri) { - mTempWallpaperTiles.add(uri); - // Add a tile for the image picked from Gallery - FrameLayout pickedImageThumbnail = (FrameLayout) getLayoutInflater(). - inflate(R.layout.wallpaper_picker_item, mWallpapersView, false); - setWallpaperItemPaddingToZero(pickedImageThumbnail); - - // Load the thumbnail - ImageView image = (ImageView) pickedImageThumbnail.findViewById(R.id.wallpaper_image); - Point defaultSize = getDefaultThumbnailSize(this.getResources()); - int rotation = WallpaperCropActivity.getRotationFromExif(this, uri); - Bitmap thumb = createThumbnail(defaultSize, this, uri, null, null, 0, rotation, false); - if (thumb != null) { - image.setImageBitmap(thumb); - Drawable thumbDrawable = image.getDrawable(); - thumbDrawable.setDither(true); - } else { - Log.e(TAG, "Error loading thumbnail for uri=" + uri); - } - mWallpapersView.addView(pickedImageThumbnail, 0); - - UriWallpaperInfo info = new UriWallpaperInfo(uri); - pickedImageThumbnail.setTag(info); - info.setView(pickedImageThumbnail); - addLongPressHandler(pickedImageThumbnail); - updateTileIndices(); - pickedImageThumbnail.setOnClickListener(mThumbnailOnClickListener); - mThumbnailOnClickListener.onClick(pickedImageThumbnail); - } - - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == IMAGE_PICK && resultCode == RESULT_OK) { - if (data != null && data.getData() != null) { - Uri uri = data.getData(); - addTemporaryWallpaperTile(uri); - } - } else if (requestCode == PICK_WALLPAPER_THIRD_PARTY_ACTIVITY) { - setResult(RESULT_OK); - finish(); - } - } - - static void setWallpaperItemPaddingToZero(FrameLayout frameLayout) { - frameLayout.setPadding(0, 0, 0, 0); - frameLayout.setForeground(new ZeroPaddingDrawable(frameLayout.getForeground())); - } - - private void addLongPressHandler(View v) { - v.setOnLongClickListener(mLongClickListener); - } - - private ArrayList findThemeWallpapers() { - ArrayList themeWallpapers = - new ArrayList(); - ContentResolver cr = getContentResolver(); - String[] projection = { ThemesColumns.PKG_NAME, ThemesColumns.IS_LEGACY_THEME }; - String selection = ThemesColumns.MODIFIES_LAUNCHER + "=? AND " + - ThemesColumns.PKG_NAME + "!=?"; - String[] selectoinArgs = {"1", "default"}; - String sortOrder = null; - Cursor c = cr.query(ThemesColumns.CONTENT_URI, projection, selection, - selectoinArgs, sortOrder); - if (c != null) { - Bitmap bmp; - while (c.moveToNext()) { - String pkgName = c.getString(c.getColumnIndexOrThrow(ThemesColumns.PKG_NAME)); - boolean isLegacy = c.getInt(c.getColumnIndexOrThrow( - ThemesColumns.IS_LEGACY_THEME)) == 1; - bmp = getThemeWallpaper(this, "wallpapers", pkgName, isLegacy, true /* thumb*/); - themeWallpapers.add( - new ThemeWallpaperInfo(this, pkgName, isLegacy, - new BitmapDrawable(getResources(), bmp))); - if (bmp != null) { - Log.d("", String.format("Loaded bitmap of size %dx%d for %s", - bmp.getWidth(), bmp.getHeight(), pkgName)); - } - } - c.close(); - } - return themeWallpapers; - } - - private ArrayList findThemeLockWallpapers() { - ArrayList themeWallpapers = - new ArrayList(); - ContentResolver cr = getContentResolver(); - String[] projection = { ThemesColumns.PKG_NAME }; - String selection = ThemesColumns.MODIFIES_LOCKSCREEN + "=? AND " + - ThemesColumns.PKG_NAME + "!=?"; - String[] selectoinArgs = {"1", "default"}; - String sortOrder = null; - Cursor c = cr.query(ThemesColumns.CONTENT_URI, projection, selection, - selectoinArgs, sortOrder); - if (c != null) { - Bitmap bmp; - while (c.moveToNext()) { - String pkgName = c.getString(c.getColumnIndexOrThrow(ThemesColumns.PKG_NAME)); - bmp = getThemeWallpaper(this, "lockscreen", pkgName, false, true /* thumb*/); - themeWallpapers.add( - new ThemeLockWallpaperInfo(this, pkgName, - new BitmapDrawable(getResources(), bmp))); - if (bmp != null) { - Log.d("", String.format("Loaded bitmap of size %dx%d for %s", - bmp.getWidth(), bmp.getHeight(), pkgName)); - } - } - c.close(); - } - return themeWallpapers; - } - - public Pair getWallpaperArrayResourceId() { - // Context.getPackageName() may return the "original" package name, - // com.android.launcher3; Resources needs the real package name, - // com.android.launcher3. So we ask Resources for what it thinks the - // package name should be. - final String packageName = getResources().getResourcePackageName(R.array.wallpapers); - try { - ApplicationInfo info = getPackageManager().getApplicationInfo(packageName, 0); - return new Pair(info, R.array.wallpapers); - } catch (PackageManager.NameNotFoundException e) { - return null; - } - } - - public CropView getCropView() { - return mCropView; - } - - public SavedWallpaperImages getSavedImages() { - return mSavedImages; - } - - static class ZeroPaddingDrawable extends LevelListDrawable { - public ZeroPaddingDrawable(Drawable d) { - super(); - addLevel(0, 0, d); - setLevel(0); - } - - @Override - public boolean getPadding(Rect padding) { - padding.set(0, 0, 0, 0); - return true; - } - } - - private static class ThemeLockWallpapersAdapter extends BaseAdapter implements ListAdapter { - private LayoutInflater mLayoutInflater; - private ArrayList mWallpapers; - - ThemeLockWallpapersAdapter(Activity activity, ArrayList wallpapers) { - mLayoutInflater = activity.getLayoutInflater(); - mWallpapers = wallpapers; - } - - public int getCount() { - return mWallpapers.size(); - } - - public ThemeLockWallpaperInfo getItem(int position) { - return mWallpapers.get(position); - } - - public long getItemId(int position) { - return position; - } - - public View getView(int position, View convertView, ViewGroup parent) { - Drawable thumb = mWallpapers.get(position).mThumb; - if (thumb == null) { - Log.e(TAG, "Error decoding thumbnail for wallpaper #" + position); - } - return createImageTileView(mLayoutInflater, position, convertView, parent, thumb); - } - } - - private static class ThemeWallpapersAdapter extends BaseAdapter implements ListAdapter { - private LayoutInflater mLayoutInflater; - private ArrayList mWallpapers; - - ThemeWallpapersAdapter(Activity activity, ArrayList wallpapers) { - mLayoutInflater = activity.getLayoutInflater(); - mWallpapers = wallpapers; - } - - public int getCount() { - return mWallpapers.size(); - } - - public ThemeWallpaperInfo getItem(int position) { - return mWallpapers.get(position); - } - - public long getItemId(int position) { - return position; - } - - public View getView(int position, View convertView, ViewGroup parent) { - Drawable thumb = mWallpapers.get(position).mThumb; - if (thumb == null) { - Log.e(TAG, "Error decoding thumbnail for wallpaper #" + position); - } - return createImageTileView(mLayoutInflater, position, convertView, parent, thumb); - } - } - - public static View createImageTileView(LayoutInflater layoutInflater, int position, - View convertView, ViewGroup parent, Drawable thumb) { - View view; - - if (convertView == null) { - view = layoutInflater.inflate(R.layout.wallpaper_picker_item, parent, false); - } else { - view = convertView; - } - - setWallpaperItemPaddingToZero((FrameLayout) view); - - ImageView image = (ImageView) view.findViewById(R.id.wallpaper_image); - - if (thumb != null) { - image.setImageDrawable(thumb); - thumb.setDither(true); - } - - return view; - } - - private static Bitmap getThemeWallpaper(Context context, String path, String pkgName, - boolean legacyTheme, boolean thumb) { - if (legacyTheme) { - return getLegacyThemeWallpaper(context, pkgName, thumb); - } - InputStream is = null; - try { - Resources res = context.getPackageManager().getResourcesForApplication(pkgName); - if (res == null) { - return null; - } - - AssetManager am = res.getAssets(); - String[] wallpapers = am.list(path); - if (wallpapers == null || wallpapers.length == 0) { - return null; - } - is = am.open(path + File.separator + wallpapers[0]); - - BitmapFactory.Options bounds = new BitmapFactory.Options(); - bounds.inJustDecodeBounds = true; - BitmapFactory.decodeStream(is, null, bounds); - if ((bounds.outWidth == -1) || (bounds.outHeight == -1)) - return null; - - int originalSize = (bounds.outHeight > bounds.outWidth) ? bounds.outHeight - : bounds.outWidth; - Point outSize; - - if (thumb) { - outSize = getDefaultThumbnailSize(context.getResources()); - } else { - outSize = getDefaultWallpaperSize(res, ((Activity) context).getWindowManager()); - } - int thumbSampleSize = (outSize.y > outSize.x) ? outSize.y : outSize.x; - - BitmapFactory.Options opts = new BitmapFactory.Options(); - opts.inSampleSize = originalSize / thumbSampleSize; - return BitmapFactory.decodeStream(is, null, opts); - } catch (IOException e) { - return null; - } catch (NameNotFoundException e) { - return null; - } catch (OutOfMemoryError e) { - return null; - } finally { - if (is != null) { - try { - is.close(); - } catch (IOException e) { - } - } - } - } - - private static Bitmap getLegacyThemeWallpaper(Context context, String pkgName, boolean thumb) { - try { - final PackageManager pm = context.getPackageManager(); - PackageInfo pi = pm.getPackageInfo(pkgName, 0); - Resources res = context.getPackageManager().getResourcesForApplication(pkgName); - - if (pi == null || res == null) { - return null; - } - int resId = pi.legacyThemeInfos[0].wallpaperResourceId; - - BitmapFactory.Options opts = new BitmapFactory.Options(); - opts.inJustDecodeBounds = true; - BitmapFactory.decodeResource(res, resId, opts); - if ((opts.outWidth == -1) || (opts.outHeight == -1)) - return null; - - int originalSize = (opts.outHeight > opts.outWidth) ? opts.outHeight - : opts.outWidth; - Point outSize; - if (thumb) { - outSize = getDefaultThumbnailSize(context.getResources()); - } else { - outSize = getDefaultWallpaperSize(res, ((Activity) context).getWindowManager()); - } - int thumbSampleSize = (outSize.y > outSize.x) ? outSize.y : outSize.x; - - opts.inJustDecodeBounds = false; - opts.inSampleSize = originalSize / thumbSampleSize; - - return BitmapFactory.decodeResource(res, resId, opts); - } catch (NameNotFoundException e) { - return null; - } catch (OutOfMemoryError e1) { - return null; - } - } -} diff --git a/src/com/android/launcher3/SavedWallpaperImages.java b/src/com/android/launcher3/SavedWallpaperImages.java index a418b8f5c..8d5b00535 100644 --- a/src/com/android/launcher3/SavedWallpaperImages.java +++ b/src/com/android/launcher3/SavedWallpaperImages.java @@ -49,7 +49,7 @@ public class SavedWallpaperImages extends BaseAdapter implements ListAdapter { Context mContext; LayoutInflater mLayoutInflater; - public static class SavedWallpaperTile extends WallpaperCropActivity.WallpaperTileInfo { + public static class SavedWallpaperTile extends WallpaperPickerActivity.WallpaperTileInfo { private int mDbId; private Drawable mThumb; public SavedWallpaperTile(int dbId, Drawable thumb) { @@ -57,7 +57,7 @@ public class SavedWallpaperImages extends BaseAdapter implements ListAdapter { mThumb = thumb; } @Override - public void onClick(WallpaperCropActivity a) { + public void onClick(WallpaperPickerActivity a) { String imageFilename = a.getSavedImages().getImageFilename(mDbId); File file = new File(a.getFilesDir(), imageFilename); CropView v = a.getCropView(); @@ -68,13 +68,13 @@ public class SavedWallpaperImages extends BaseAdapter implements ListAdapter { v.setTouchEnabled(false); } @Override - public void onSave(WallpaperCropActivity a) { + public void onSave(WallpaperPickerActivity a) { boolean finishActivityWhenDone = true; String imageFilename = a.getSavedImages().getImageFilename(mDbId); a.setWallpaper(imageFilename, finishActivityWhenDone); } @Override - public void onDelete(WallpaperCropActivity a) { + public void onDelete(WallpaperPickerActivity a) { a.getSavedImages().deleteImage(mDbId); } @Override diff --git a/src/com/android/launcher3/ThirdPartyWallpaperPickerListAdapter.java b/src/com/android/launcher3/ThirdPartyWallpaperPickerListAdapter.java index 81cd5a0f0..494694cbd 100644 --- a/src/com/android/launcher3/ThirdPartyWallpaperPickerListAdapter.java +++ b/src/com/android/launcher3/ThirdPartyWallpaperPickerListAdapter.java @@ -51,7 +51,7 @@ public class ThirdPartyWallpaperPickerListAdapter extends BaseAdapter implements mResolveInfo = resolveInfo; } @Override - public void onClick(WallpaperCropActivity a) { + public void onClick(WallpaperPickerActivity a) { final ComponentName itemComponentName = new ComponentName( mResolveInfo.activityInfo.packageName, mResolveInfo.activityInfo.name); Intent launchIntent = new Intent(Intent.ACTION_SET_WALLPAPER); diff --git a/src/com/android/launcher3/WallpaperCropActivity.java b/src/com/android/launcher3/WallpaperCropActivity.java index 5796a5ddd..30ec340b1 100644 --- a/src/com/android/launcher3/WallpaperCropActivity.java +++ b/src/com/android/launcher3/WallpaperCropActivity.java @@ -59,7 +59,7 @@ public class WallpaperCropActivity extends Activity { protected static final String WALLPAPER_WIDTH_KEY = "wallpaper.width"; protected static final String WALLPAPER_HEIGHT_KEY = "wallpaper.height"; - protected static final int DEFAULT_COMPRESS_QUALITY = 90; + private static final int DEFAULT_COMPRESS_QUALITY = 90; /** * The maximum bitmap size we allow to be returned through the intent. * Intents have a maximum of 1MB in total size. However, the Bitmap seems to @@ -68,28 +68,11 @@ public class WallpaperCropActivity extends Activity { * array instead of a Bitmap instance to avoid overhead. */ public static final int MAX_BMAP_IN_INTENT = 750000; - protected static final float WALLPAPER_SCREENS_SPAN = 2f; + private static final float WALLPAPER_SCREENS_SPAN = 2f; protected CropView mCropView; protected Uri mUri; - public static abstract class WallpaperTileInfo { - protected View mView; - public void setView(View v) { - mView = v; - } - public void onClick(WallpaperCropActivity a) {} - public void onSave(WallpaperCropActivity a) {} - public void onDelete(WallpaperCropActivity a) {} - public boolean isSelectable() { return false; } - public boolean isNamelessWallpaper() { return false; } - public void onIndexUpdated(CharSequence label) { - if (isNamelessWallpaper()) { - mView.setContentDescription(label); - } - } - } - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -140,7 +123,7 @@ public class WallpaperCropActivity extends Activity { // As a ratio of screen height, the total distance we want the parallax effect to span // horizontally - protected static float wallpaperTravelToScreenWidthRatio(int width, int height) { + private static float wallpaperTravelToScreenWidthRatio(int width, int height) { float aspectRatio = width / (float) height; // At an aspect ratio of 16/10, the wallpaper parallax effect should span 1.5 * screen width @@ -227,8 +210,6 @@ public class WallpaperCropActivity extends Activity { } } catch (IOException e) { Log.w(LOGTAG, "Getting exif data failed", e); - } catch (NullPointerException e) { - Log.w(LOGTAG, "Getting exif data failed", e); } return 0; } @@ -278,7 +259,7 @@ public class WallpaperCropActivity extends Activity { cropTask.execute(); } - protected static boolean isScreenLarge(Resources res) { + private static boolean isScreenLarge(Resources res) { Configuration config = res.getConfiguration(); return config.smallestScreenWidthDp >= 720; } @@ -771,23 +752,4 @@ public class WallpaperCropActivity extends Activity { ? "png" // We don't support gif compression. : "jpg"; } - - protected void setWallpaperStripYOffset(int bottom) { - // - } - - protected SavedWallpaperImages getSavedImages() { - // for subclasses - throw new UnsupportedOperationException("Not implemented for WallpaperCropActivity"); - } - - protected CropView getCropView() { - // for subclasses - throw new UnsupportedOperationException("Not implemented for WallpaperCropActivity"); - } - - protected void onLiveWallpaperPickerLaunch() { - // for subclasses - throw new UnsupportedOperationException("Not implemented for WallpaperCropActivity"); - } } diff --git a/src/com/android/launcher3/WallpaperPickerActivity.java b/src/com/android/launcher3/WallpaperPickerActivity.java index f8e5233f7..1b8e75c9e 100644 --- a/src/com/android/launcher3/WallpaperPickerActivity.java +++ b/src/com/android/launcher3/WallpaperPickerActivity.java @@ -102,12 +102,29 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { private SavedWallpaperImages mSavedImages; private WallpaperInfo mLiveWallpaperInfoOnPickerLaunch; + public static abstract class WallpaperTileInfo { + protected View mView; + public void setView(View v) { + mView = v; + } + public void onClick(WallpaperPickerActivity a) {} + public void onSave(WallpaperPickerActivity a) {} + public void onDelete(WallpaperPickerActivity a) {} + public boolean isSelectable() { return false; } + public boolean isNamelessWallpaper() { return false; } + public void onIndexUpdated(CharSequence label) { + if (isNamelessWallpaper()) { + mView.setContentDescription(label); + } + } + } + public static class PickImageInfo extends WallpaperTileInfo { @Override - public void onClick(WallpaperCropActivity a) { + public void onClick(WallpaperPickerActivity a) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); - Utilities.startActivityForResultSafely(((WallpaperPickerActivity)a), intent, IMAGE_PICK); + Utilities.startActivityForResultSafely(a, intent, IMAGE_PICK); } } @@ -117,14 +134,14 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { mUri = uri; } @Override - public void onClick(WallpaperCropActivity a) { + public void onClick(WallpaperPickerActivity a) { CropView v = a.getCropView(); int rotation = WallpaperCropActivity.getRotationFromExif(a, mUri); v.setTileSource(new BitmapRegionTileSource(a, mUri, 1024, rotation), null); v.setTouchEnabled(true); } @Override - public void onSave(final WallpaperCropActivity a) { + public void onSave(final WallpaperPickerActivity a) { boolean finishActivityWhenDone = true; OnBitmapCroppedHandler h = new OnBitmapCroppedHandler() { public void onBitmapCropped(byte[] imageBytes) { @@ -132,10 +149,10 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { // rotation is set to 0 since imageBytes has already been correctly rotated Bitmap thumb = createThumbnail( thumbSize, null, null, imageBytes, null, 0, 0, true); - ((WallpaperPickerActivity)a).getSavedImages().writeImage(thumb, imageBytes); + a.getSavedImages().writeImage(thumb, imageBytes); } }; - ((WallpaperPickerActivity)a).cropImageAndSetWallpaper(mUri, h, finishActivityWhenDone); + a.cropImageAndSetWallpaper(mUri, h, finishActivityWhenDone); } @Override public boolean isSelectable() { @@ -158,7 +175,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { mThumb = thumb; } @Override - public void onClick(WallpaperCropActivity a) { + public void onClick(WallpaperPickerActivity a) { int rotation = WallpaperCropActivity.getRotationFromExif(mResources, mResId); BitmapRegionTileSource source = new BitmapRegionTileSource( mResources, a, mResId, 1024, rotation); @@ -173,9 +190,9 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { v.setTouchEnabled(false); } @Override - public void onSave(WallpaperCropActivity a) { + public void onSave(WallpaperPickerActivity a) { boolean finishActivityWhenDone = true; - ((WallpaperPickerActivity)a).cropImageAndSetWallpaper(mResources, mResId, finishActivityWhenDone); + a.cropImageAndSetWallpaper(mResources, mResId, finishActivityWhenDone); } @Override public boolean isSelectable() { @@ -187,9 +204,8 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { } } - @Override - protected void setWallpaperStripYOffset(int offset) { - mWallpaperStrip.setPadding(0, 0, 0, offset); + public void setWallpaperStripYOffset(float offset) { + mWallpaperStrip.setPadding(0, 0, 0, (int) offset); } // called by onCreate; this is subclassed to overwrite WallpaperCropActivity diff --git a/src/com/android/launcher3/WallpaperRootView.java b/src/com/android/launcher3/WallpaperRootView.java index 7b0d4f147..ceaa043a7 100644 --- a/src/com/android/launcher3/WallpaperRootView.java +++ b/src/com/android/launcher3/WallpaperRootView.java @@ -22,14 +22,14 @@ import android.util.AttributeSet; import android.widget.RelativeLayout; public class WallpaperRootView extends RelativeLayout { - private final WallpaperCropActivity a; + private final WallpaperPickerActivity a; public WallpaperRootView(Context context, AttributeSet attrs) { super(context, attrs); - a = (WallpaperCropActivity) context; + a = (WallpaperPickerActivity) context; } public WallpaperRootView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - a = (WallpaperCropActivity) context; + a = (WallpaperPickerActivity) context; } protected boolean fitSystemWindows(Rect insets) { diff --git a/src/com/android/photos/BitmapRegionTileSource.java b/src/com/android/photos/BitmapRegionTileSource.java index 4d1a84ed7..5f6401868 100644 --- a/src/com/android/photos/BitmapRegionTileSource.java +++ b/src/com/android/photos/BitmapRegionTileSource.java @@ -18,7 +18,6 @@ package com.android.photos; import android.annotation.TargetApi; import android.content.Context; -import android.content.res.AssetManager; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; @@ -37,7 +36,6 @@ import com.android.gallery3d.glrenderer.BitmapTexture; import com.android.photos.views.TiledImageRenderer; import java.io.BufferedInputStream; -import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -71,38 +69,25 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource { private Canvas mCanvas; public BitmapRegionTileSource(Context context, String path, int previewSize, int rotation) { - this(null, context, path, null, 0, previewSize, rotation, false); - } - - public BitmapRegionTileSource(Resources res, Context context, String path, int previewSize, int rotation, boolean assetPath) { - this(res, context, path, null, 0, previewSize, rotation, assetPath); + this(null, context, path, null, 0, previewSize, rotation); } public BitmapRegionTileSource(Context context, Uri uri, int previewSize, int rotation) { - this(null, context, null, uri, 0, previewSize, rotation, false); + this(null, context, null, uri, 0, previewSize, rotation); } public BitmapRegionTileSource(Resources res, Context context, int resId, int previewSize, int rotation) { - this(res, context, null, null, resId, previewSize, rotation, false); + this(res, context, null, null, resId, previewSize, rotation); } private BitmapRegionTileSource(Resources res, - Context context, String path, Uri uri, int resId, int previewSize, int rotation, boolean assetPath) { + Context context, String path, Uri uri, int resId, int previewSize, int rotation) { mTileSize = TiledImageRenderer.suggestedTileSize(context); mRotation = rotation; try { - if (path != null && !assetPath) { + if (path != null) { mDecoder = BitmapRegionDecoder.newInstance(path, true); - } else if (path != null && res != null && assetPath) { - AssetManager am = res.getAssets(); - String[] pathImages = am.list(path); - if (pathImages == null || pathImages.length == 0) { - throw new IOException("did not find any images in path: " + path); - } - InputStream is = am.open(path + File.separator + pathImages[0]); - BufferedInputStream bis = new BufferedInputStream(is); - mDecoder = BitmapRegionDecoder.newInstance(bis, true); } else if (uri != null) { InputStream is = context.getContentResolver().openInputStream(uri); BufferedInputStream bis = new BufferedInputStream(is); @@ -126,7 +111,7 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource { // Although this is the same size as the Bitmap that is likely already // loaded, the lifecycle is different and interactions are on a different // thread. Thus to simplify, this source will decode its own bitmap. - Bitmap preview = decodePreview(res, context, path, uri, resId, previewSize, assetPath); + Bitmap preview = decodePreview(res, context, path, uri, resId, previewSize); if (preview.getWidth() <= GL_SIZE_LIMIT && preview.getHeight() <= GL_SIZE_LIMIT) { mPreview = new BitmapTexture(preview); } else { @@ -231,26 +216,13 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource { * than the targetSize, but it will always be less than 2x the targetSize */ private Bitmap decodePreview( - Resources res, Context context, String file, Uri uri, int resId, int targetSize, boolean assetPath) { + Resources res, Context context, String file, Uri uri, int resId, int targetSize) { float scale = (float) targetSize / Math.max(mWidth, mHeight); mOptions.inSampleSize = BitmapUtils.computeSampleSizeLarger(scale); mOptions.inJustDecodeBounds = false; Bitmap result = null; - if (file != null && res != null && assetPath) { - try { - AssetManager am = res.getAssets(); - String[] pathImages = am.list(file); - if (pathImages == null || pathImages.length == 0) { - throw new IOException("did not find any images in path: " + file); - } - InputStream is = am.open(file + File.separator + pathImages[0]); - BufferedInputStream bis = new BufferedInputStream(is); - result = BitmapFactory.decodeStream(bis, null, mOptions); - } catch (IOException e) { - Log.w("BitmapRegionTileSource", "getting preview failed", e); - } - } else if (file != null) { + if (file != null) { result = BitmapFactory.decodeFile(file, mOptions); } else if (uri != null) { try { -- cgit v1.2.3 From ffb6497b10f4d792a5337a682d05037dc43c78a4 Mon Sep 17 00:00:00 2001 From: Michael Bestas Date: Tue, 27 May 2014 20:02:40 +0300 Subject: Trebuchet: Remove duplicate string Change-Id: I5a1ed314ca05eb4771038c0e08c4695ed51b3f92 --- res/values/cm_strings.xml | 6 ++---- src/com/android/launcher3/OverviewSettingsPanel.java | 6 +++--- src/com/android/launcher3/TransitionEffectsFragment.java | 6 ++---- src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java | 8 ++++---- 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index da5e877f5..b3cdc4289 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -101,10 +101,8 @@ LAUNCHER SETTINGS HOME SCREEN SETTINGS DRAWER SETTINGS - - Scroll effect - - Scroll effect + + Scroll effect Sorting mode diff --git a/src/com/android/launcher3/OverviewSettingsPanel.java b/src/com/android/launcher3/OverviewSettingsPanel.java index 718acbcbf..98ee7609e 100644 --- a/src/com/android/launcher3/OverviewSettingsPanel.java +++ b/src/com/android/launcher3/OverviewSettingsPanel.java @@ -40,11 +40,11 @@ public class OverviewSettingsPanel { res.getString(R.string.drawer_settings)}; String[] values = new String[] { res.getString(R.string.home_screen_search_text), - res.getString(R.string.page_scroll_effect_text), + res.getString(R.string.scroll_effect_text), res.getString(R.string.larger_icons_text), res.getString(R.string.hide_icon_labels)}; String[] valuesDrawer = new String[] { - res.getString(R.string.drawer_scroll_effect_text), + res.getString(R.string.scroll_effect_text), res.getString(R.string.drawer_sorting_text), res.getString(R.string.hide_icon_labels)}; @@ -153,7 +153,7 @@ public class OverviewSettingsPanel { } else { String[] values = new String[] { res.getString(R.string.home_screen_search_text), - res.getString(R.string.page_scroll_effect_text), + res.getString(R.string.scroll_effect_text), res.getString(R.string.larger_icons_text), res.getString(R.string.hide_icon_labels)}; mSettingsAdapter.changeCursor(0, createCursor(res diff --git a/src/com/android/launcher3/TransitionEffectsFragment.java b/src/com/android/launcher3/TransitionEffectsFragment.java index 69231a8f0..88c6481d7 100644 --- a/src/com/android/launcher3/TransitionEffectsFragment.java +++ b/src/com/android/launcher3/TransitionEffectsFragment.java @@ -89,9 +89,7 @@ public class TransitionEffectsFragment extends Fragment { mListView = (ListView) v.findViewById(R.id.settings_transitions_list); mScrollView = (ScrollView) v.findViewById(R.id.scroll_view); TextView title = (TextView) v.findViewById(R.id.transition_effect_title); - title.setText(mPageOrDrawer ? getResources().getString( - R.string.drawer_scroll_effect_text) : getResources().getString( - R.string.page_scroll_effect_text)); + title.setText(getResources().getString(R.string.scroll_effect_text)); LinearLayout titleLayout = (LinearLayout) v.findViewById(R.id.transition_title); titleLayout.setOnClickListener(new OnClickListener() { @Override @@ -219,4 +217,4 @@ public class TransitionEffectsFragment extends Fragment { return convertView; } } -} \ No newline at end of file +} diff --git a/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java b/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java index 1b6316293..43d98c33e 100644 --- a/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java +++ b/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java @@ -75,13 +75,13 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { .getString(R.string.drawer_sorting_text))) { updateDrawerSortSettingsItem(v); } else if (title.equals(res - .getString(R.string.drawer_scroll_effect_text)) && + .getString(R.string.scroll_effect_text)) && partition == OverviewSettingsPanel.DRAWER_SETTINGS_POSITION) { String state = mLauncher.getAppsCustomizeTransitionEffect(); state = mapEffectToValue(state); ((TextView) v.findViewById(R.id.item_state)).setText(state); } else if (title.equals(res - .getString(R.string.page_scroll_effect_text)) && + .getString(R.string.scroll_effect_text)) && partition == OverviewSettingsPanel.HOME_SETTINGS_POSITION) { String state = mLauncher.getWorkspaceTransitionEffect(); state = mapEffectToValue(state); @@ -191,11 +191,11 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { .getString(R.string.drawer_sorting_text))) { mLauncher.onClickSortModeButton(v); } else if (value.equals(res - .getString(R.string.drawer_scroll_effect_text)) && + .getString(R.string.scroll_effect_text)) && ((Integer)v.getTag() == OverviewSettingsPanel.DRAWER_SETTINGS_POSITION)) { mLauncher.onClickTransitionEffectButton(v, true); } else if (value.equals(res - .getString(R.string.page_scroll_effect_text)) && + .getString(R.string.scroll_effect_text)) && ((Integer)v.getTag() == OverviewSettingsPanel.HOME_SETTINGS_POSITION)) { mLauncher.onClickTransitionEffectButton(v, false); } else if (value.equals(res -- cgit v1.2.3 From d2e0c5413b4e97dbdffc215710a6ae90fc527f37 Mon Sep 17 00:00:00 2001 From: Adnan Begovic Date: Tue, 27 May 2014 14:25:47 -0700 Subject: Trebuchet: Update default_workspace - Gmail has changed its className for its android.intent.category.LAUNCHER intent. Change-Id: I34b1ab38696971fafb9d65fff5f3c5ce7c13eba7 --- res/xml-sw600dp/default_workspace.xml | 2 +- res/xml-sw600dp/default_workspace_no_telephony.xml | 2 +- res/xml-sw720dp/default_workspace.xml | 2 +- res/xml-sw720dp/default_workspace_no_telephony.xml | 2 +- res/xml/default_workspace.xml | 2 +- res/xml/default_workspace_no_telephony.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/res/xml-sw600dp/default_workspace.xml b/res/xml-sw600dp/default_workspace.xml index 64896f245..e0502aa13 100644 --- a/res/xml-sw600dp/default_workspace.xml +++ b/res/xml-sw600dp/default_workspace.xml @@ -41,7 +41,7 @@ launcher:className="com.google.android.maps.MapsActivity" launcher:packageName="com.google.android.apps.maps" /> Date: Fri, 30 May 2014 17:46:45 +0300 Subject: Automatic translation import Change-Id: I7a74a5756ed7c724ea8c4f2fbabf9c15a1484441 --- res/values-af/cm_strings.xml | 12 ++++++++- res/values-ar/cm_strings.xml | 12 ++++++++- res/values-ca/cm_strings.xml | 14 ++++++++-- res/values-cs/cm_strings.xml | 12 ++++++++- res/values-da/cm_strings.xml | 12 ++++++++- res/values-de/cm_strings.xml | 12 ++++++++- res/values-el/cm_strings.xml | 12 ++++++++- res/values-es-rXA/cm_strings.xml | 12 ++++++++- res/values-es/cm_strings.xml | 12 ++++++++- res/values-et/cm_strings.xml | 1 - res/values-fi/cm_strings.xml | 12 ++++++++- res/values-fr/cm_strings.xml | 12 ++++++++- res/values-hu/cm_strings.xml | 12 ++++++++- res/values-in/cm_strings.xml | 12 ++++++++- res/values-it/cm_strings.xml | 12 ++++++++- res/values-iw/cm_strings.xml | 11 +++++++- res/values-ja/cm_arrays.xml | 22 +++++++-------- res/values-ja/cm_strings.xml | 20 ++++++++++---- res/values-lt/cm_strings.xml | 12 ++++++++- res/values-nb/cm_strings.xml | 12 ++++++++- res/values-nl/cm_strings.xml | 12 ++++++++- res/values-pl/cm_strings.xml | 12 ++++++++- res/values-pt-rBR/cm_strings.xml | 12 ++++++++- res/values-pt-rPT/cm_strings.xml | 14 ++++++++-- res/values-ru/cm_strings.xml | 12 ++++++++- res/values-si/cm_strings.xml | 12 ++++++++- res/values-sk/cm_strings.xml | 12 ++++++++- res/values-sr/cm_arrays.xml | 6 ++--- res/values-sr/cm_strings.xml | 14 ++++++++-- res/values-sv/cm_strings.xml | 1 - res/values-th/cm_strings.xml | 1 - res/values-tr/cm_strings.xml | 12 ++++++++- res/values-uk/cm_strings.xml | 1 - res/values-zh-rCN/cm_strings.xml | 12 ++++++++- res/values-zh-rHK/cm_strings.xml | 22 ++++++++++----- res/values-zh-rTW/cm_arrays.xml | 40 +++++++++++++++++++++++++++ res/values-zh-rTW/cm_strings.xml | 58 ++++++++++++++++++++++++++++++++++++++++ 37 files changed, 442 insertions(+), 59 deletions(-) create mode 100644 res/values-zh-rTW/cm_arrays.xml create mode 100644 res/values-zh-rTW/cm_strings.xml diff --git a/res/values-af/cm_strings.xml b/res/values-af/cm_strings.xml index a501119de..977937abb 100644 --- a/res/values-af/cm_strings.xml +++ b/res/values-af/cm_strings.xml @@ -56,9 +56,19 @@ Standaard ikone Ikoon stelle Geen ikoon stelle geïnstalleer - Verwyder Verpersoonlik jou laai Tik die bladsy aanwyser vir bykomende konfigurasie-instellings Herstel Versteekte programme + LANSEERDER INSTELLINGS + TUIS SKERM INSTELLINGS + LAAI INSTELLINGS + Rol effek + Sorteer metode + Soekbalk + Groter ikone + Steek ikoon etikette weg + AAN + AF + Temas diff --git a/res/values-ar/cm_strings.xml b/res/values-ar/cm_strings.xml index d0161cdce..aa22abdf7 100644 --- a/res/values-ar/cm_strings.xml +++ b/res/values-ar/cm_strings.xml @@ -56,9 +56,19 @@ الإيقونات الافتراضية حزم الإيقونات لا توجد حزم أيقونات لتثبيت - تصفية تخصيص الفراغ انقر فوق مؤشر الصفحة لعرض إعدادات التكوين الإضافي إعادة تعيين تطبيقات المخفية + إعدادات اللنشر + إعدادات الشاشة الرئيسية + إعدادات الفراغ + تأثير التمرير + وضع الفرز + شريط البحث + أيقونات كبيرة + إخفاء تسميات الرمز + يعمل + لايعمل + المواضيع diff --git a/res/values-ca/cm_strings.xml b/res/values-ca/cm_strings.xml index ff387a6e1..a08ac119c 100644 --- a/res/values-ca/cm_strings.xml +++ b/res/values-ca/cm_strings.xml @@ -27,7 +27,7 @@ Vores de la pàgina Esvaeix els costats de les pàgines Desplaça el fons de pantalla - Ajustaments + Configuració App Pantalla d\'inici Barra de cerca @@ -56,9 +56,19 @@ Icones per defecte Paquets d\'icones No hi ha paquets d\'icones instal·lats - Neteja Personalitza el teu calaix Pica l\'indicador de pàgina per veure les opcions de configuració addicionals Reinicia Apps amagades + CONFIGURACIÓ DEL LLANÇADOR + CONFIGURACIÓ DE LA PANTALLA D\'INICI + CONFIGURACIÓ DEL CALAIX + Efecte desplaçament + Mode d\'ordenació + Barra de cerca + Icones grans + Amaga les etiquetes de les icones + + NO + Temes diff --git a/res/values-cs/cm_strings.xml b/res/values-cs/cm_strings.xml index 449e1db3a..b593e9038 100644 --- a/res/values-cs/cm_strings.xml +++ b/res/values-cs/cm_strings.xml @@ -56,9 +56,19 @@ Výchozí ikony Balíčky ikon Není nainstalován žádný balíček ikon - Odstranit Upravit vlastní složku Dotykem na indikátor stránky zobrazit další možnosti nastavení Obnovit Skryté aplikace + NASTAVENÍ SPOUŠTĚČE + NASTAVENÍ DOMOVSKÉ OBRAZOVKY + NASTAVENÍ SLOŽKY + Efekt přechodu + Režim třídění + Vyhledávací lišta + Větší ikony + Skrýt popisky ikon + Zap. + Vyp. + Témata diff --git a/res/values-da/cm_strings.xml b/res/values-da/cm_strings.xml index 0149c9c91..e10e96be7 100644 --- a/res/values-da/cm_strings.xml +++ b/res/values-da/cm_strings.xml @@ -56,9 +56,19 @@ Standardikoner Ikonpakker Ingen ikonpakker installeret - Ryd Tilpas din oversigt Tryk på sideindikatoren for at vise yderligere konfigurationsindstillinger Nulstil Skjulte apps + INDSTILLINGER FOR LAUNCHER + INDSTILLINGER FOR STARTSKÆRM + INDSTILLINGER FOR OVERSIGT + Rulleeffekt + Sorteringstilstand + Søgelinje + Større ikoner + Skjul ikontekster + TIL + FRA + Temaer diff --git a/res/values-de/cm_strings.xml b/res/values-de/cm_strings.xml index 8e784472e..0b2b99bbc 100644 --- a/res/values-de/cm_strings.xml +++ b/res/values-de/cm_strings.xml @@ -56,9 +56,19 @@ Standardsymbole Symbolpakete Es sind keine Symbolpakete installiert - Zurücksetzen App-Übersicht konfigurieren Berühren Sie den Seitenindikator, um die erweiterten Einstellungen zu öffnen. Zurücksetzen Versteckte Apps + LAUNCHER-EINSTELLUNGEN + STARTBILDSCHIRM-EINSTELLUNGEN + APP-ÜBERSICHT-EINSTELLUNGEN + Scroll-Effekt + Sortiermodus + Suchleiste + Große Symbole + Symbolbeschriftungen ausblenden + AN + AUS + Designs diff --git a/res/values-el/cm_strings.xml b/res/values-el/cm_strings.xml index df3a2a6bb..177a62f3e 100644 --- a/res/values-el/cm_strings.xml +++ b/res/values-el/cm_strings.xml @@ -56,9 +56,19 @@ Προεπιλεγμένα εικονίδια Πακέτα εικονιδίων Δεν υπάρχουν εγκατεστημένα πακέτα εικονιδίων - Εκκαθάριση Προσαρμόστε το συρτάρι σας Αγγίξτε την ένδειξη σελίδας για προβολή πρόσθετων ρυθμίσεων Επαναφορά Κρυμμένες εφαρμογές + ΓΕΝΙΚΕΣ ΡΥΘΜΙΣΕΙΣ + ΡΥΘΜΙΣΕΙΣ ΑΡΧΙΚΗΣ ΟΘΟΝΗΣ + ΡΥΘΜΙΣΕΙΣ ΣΥΡΤΑΡΙΟΥ + Εφέ κύλισης + Ταξινόμηση + Μπάρα αναζήτησης + Μεγαλύτερα εικονίδια + Απόκρυψη ετικετών εικονιδίων + ΕΝΕΡΓΟ + ΑΝΕΝΕΡΓΟ + Θέματα diff --git a/res/values-es-rXA/cm_strings.xml b/res/values-es-rXA/cm_strings.xml index df3dedecb..311c88986 100644 --- a/res/values-es-rXA/cm_strings.xml +++ b/res/values-es-rXA/cm_strings.xml @@ -56,9 +56,19 @@ Iconos por defeutu Paquetes d\'iconos Nun hai paquetes d\'iconos instalaos - Llimpiar Personaliza les tos aplicaciones Primi l\'indicador de páxina p\'amosar axustes adicionales Restablecer Aplicaciones anubríes + AXUSTES DEL LLANZADOR + AXUSTES DE PANTALLA D\'ANICIU + AXUSTES DE LES APLICACIONES + Efeutu de desplazamientu + Mou d\'ordenación + Barra de gueta + Iconos grandes + Anubrir etiquetes d\'iconos + + NON + Temes diff --git a/res/values-es/cm_strings.xml b/res/values-es/cm_strings.xml index e0478d8ea..d1bf0dd36 100644 --- a/res/values-es/cm_strings.xml +++ b/res/values-es/cm_strings.xml @@ -56,9 +56,19 @@ Iconos por defecto Paquetes de iconos No hay paquetes de iconos instalados - Limpiar Personalizar tus aplicaciones Tocar el indicador de página para mostrar ajustes adicionales Restablecer Ocultar aplicaciones + AJUSTES DEL LANZADOR + AJUSTES DEL INICIO + AJUSTES DE LAS APLICACIONES + Efecto de desplazamiento + Modo de ordenación + Barra de búsqueda + Iconos grandes + Ocultar etiquetas + + NO + Temas diff --git a/res/values-et/cm_strings.xml b/res/values-et/cm_strings.xml index 3b3ff2b5f..10b14920e 100644 --- a/res/values-et/cm_strings.xml +++ b/res/values-et/cm_strings.xml @@ -56,7 +56,6 @@ Vaikimisi ikoonid Ikoonipakid Ühtegi ikoonipakki pole installitud - Selge Kohandage oma sahtlit Puudutage lehe indikaatoril et näha täiendavaid sätteid Lähtesta diff --git a/res/values-fi/cm_strings.xml b/res/values-fi/cm_strings.xml index 679510ca5..6386eeec6 100644 --- a/res/values-fi/cm_strings.xml +++ b/res/values-fi/cm_strings.xml @@ -56,9 +56,19 @@ Oletuskuvakkeet Kuvakepaketit Kuvakepaketteja ei asennettu - Tyhjennä Muokkaa sovellusvalikkoa Napauta sivun ilmaisinta nähdäksesi lisää asetuksia Nollaa Piilotetut sovellukset + LAUNCHERIN ASETUKSET + KOTINÄYTÖN ASETUKSET + SOVELLUSVALIKON ASETUKSET + Vieritysefekti + Lajittelu + Hakupalkki + Suuremmat kuvakkeet + Piilota kuvakkeiden tekstit + PÄÄLLÄ + POIS + Teemat diff --git a/res/values-fr/cm_strings.xml b/res/values-fr/cm_strings.xml index 1ba03261b..30b1d2bbe 100644 --- a/res/values-fr/cm_strings.xml +++ b/res/values-fr/cm_strings.xml @@ -56,9 +56,19 @@ Icônes par défaut Packs d\'icônes Aucun pack d\'icônes installé - Supprimer Personnaliser votre affichage Appuyez sur l\'indicateur de page pour afficher les paramètres de configuration supplémentaires Réinitialiser Applications masquées + PARAMÈTRES DU LANCEUR + PARAMÈTRES DE L\'ÉCRAN D\'ACCUEIL + PARAMÈTRES DE L\'ÉCRAN DES APPLICATIONS + Effet de défilement + Mode de tri + Barre de recherche + Grandes icônes + Masquer le nom des icônes + OUI + NON + Thèmes diff --git a/res/values-hu/cm_strings.xml b/res/values-hu/cm_strings.xml index 434fd319e..88f438412 100644 --- a/res/values-hu/cm_strings.xml +++ b/res/values-hu/cm_strings.xml @@ -56,9 +56,19 @@ Alapértelmezett ikonok Ikon csomagok Nincsenek telepítve ikoncsomagok - Törlés Alkalmazásképernyők testreszabása Érintse meg az oldaljelölőt a további konfigurációs beállítások megtekintéséhez Visszaállítás Rejtett alkalmazások + PROGRAMINDÍTÓ BEÁLLÍTÁSOK + KEZDŐKÉPERNYŐ BEÁLLÍTÁSOK + ALKALMAZÁSKÉPERNYŐ BEÁLLÍTÁSOK + Görgetés effekt + Rendezési mód + Keresési sáv + Nagyobb ikonok + Ikon feliratok elrejtése + BE + KI + Témák diff --git a/res/values-in/cm_strings.xml b/res/values-in/cm_strings.xml index 85cd71ba4..6cace9768 100644 --- a/res/values-in/cm_strings.xml +++ b/res/values-in/cm_strings.xml @@ -56,9 +56,19 @@ Ikon semula Paket ikon Tidak ada ikon paket yang diinstal - Bersihkan Sesuaikan drawer anda Tap indikator halaman untuk melihat pengaturan konfigurasi tambahan Kembalikan Aplikasi tersembunyi + PENGATURAN PELUNCUR + PENGATURAN LAYAR HOME + PENGATURAN DRAWER + Efek scroll + Mode penyortiran + Bar pencarian + Ikon lebih besar + Sembunyikan label ikon + ON + OFF + Tema diff --git a/res/values-it/cm_strings.xml b/res/values-it/cm_strings.xml index 1b1e072a8..db53f6999 100644 --- a/res/values-it/cm_strings.xml +++ b/res/values-it/cm_strings.xml @@ -56,9 +56,19 @@ Icone predefinite Pacchetti icone Nessun pacchetto di icone installato - Svuota Personalizza il drawer Tocca l\'indicatore della pagina per visualizzare le impostazioni di configurazione aggiuntive Ripristina App nascoste + Impostazioni launcher + Impostazioni schermata Home + Impostazioni drawer + Effetto scorrimento + Modalità ordinamento + Barra di ricerca + Icone grandi + Nascondi etichette icone + ON + OFF + Temi diff --git a/res/values-iw/cm_strings.xml b/res/values-iw/cm_strings.xml index 05d328735..96d573a0c 100644 --- a/res/values-iw/cm_strings.xml +++ b/res/values-iw/cm_strings.xml @@ -56,9 +56,18 @@ סמלי ברירת מחדל אוסף סמלים לא מותקנות ערכות סמל - נקה התאמה אישית של מגירת היישומים הקש על מחוון הדף כדי להציג הגדרות נוספות אפס יישומים מוסתרים + הגדרות מסך הבית + הגדרות מגירת יישומים + אפקט גלילה + מצב המיון + סרגל החיפוש + סמלים גדולים יותר + הסתר תוויות הסמלים + מופעל + מושבת + ערכות עיצוב diff --git a/res/values-ja/cm_arrays.xml b/res/values-ja/cm_arrays.xml index e78f2b716..273ab0a1c 100644 --- a/res/values-ja/cm_arrays.xml +++ b/res/values-ja/cm_arrays.xml @@ -23,18 +23,18 @@ なし - ズームイン - ズームアウト - 上回転 - 下回転 - キューブイン - キューブアウト + Zoom In + Zoom Out + Rotate Up + Rotate Down + Cube In + Cube Out スタック - アコーディオン - フリップ + Accordion + Flip シリンダーイン - シリンダーアウト - カルーセル - オーバービュー + Cylinder Out + Carousel + Overview diff --git a/res/values-ja/cm_strings.xml b/res/values-ja/cm_strings.xml index 3a6bd8644..1a5813c7d 100644 --- a/res/values-ja/cm_strings.xml +++ b/res/values-ja/cm_strings.xml @@ -32,8 +32,8 @@ ホーム画面 検索バー 画面の上部に検索バーを常に表示する - アイコンラベルを非表示にする - ホーム画面でアイコンラベルを非表示にする + アイコンラベルを表示しない + ホーム画面でアイコンラベルを表示しない ドロワー アプリとウィジェットのドロワー アプリ @@ -43,8 +43,8 @@ ホーム画面から非表示にしたアプリのショートカットを削除する ウィジェットを削除 ホーム画面から非表示にしたアプリのウィジェットを削除する - アイコンラベルを非表示にする - ドロワーでアイコンラベルを非表示にする + アイコンラベルを表示しない + ドロワーでアイコンラベルを表示しない ドック 全般 アイコン @@ -56,9 +56,19 @@ デフォルトのアイコン アイコンパック アイコンパックがインストールされていません - クリア ドロワーをカスタマイズ 追加の構成設定を表示するには、ページインジケータをタップします。 リセット 非表示にするアプリ + ランチャーの設定 + ホーム画面の設定 + ドロワーの設定 + スクロール効果 + 並べ替えモード + 検索バー + 大きいアイコン + アイコンラベルを表示しない + ON + OFF + テーマ diff --git a/res/values-lt/cm_strings.xml b/res/values-lt/cm_strings.xml index 116b19e46..159e37113 100644 --- a/res/values-lt/cm_strings.xml +++ b/res/values-lt/cm_strings.xml @@ -56,9 +56,19 @@ Numatytosios piktogramos Piktogramų paketai Piktogramų paketai neįdiegti - Išvalyti Tinkinti savo stalčių Bakstelėkite puslapio indikatorių norėdami peržiūrėti papildomus konfigūracijos nustatymus Atkurti Paslėptos programos + PALEIDĖJO NUSTATYMAI + PAGRINDINIO EKRANO NUSTATYMAI + STALČIAUS NUSTATYMAI + Slinkimo efektas + Rūšiavimo režimas + Paieškos juosta + Didesnės piktogramos + Paslėpti piktogramų pavadinimus + ĮJUNGTA + IŠJUNGTA + Temos diff --git a/res/values-nb/cm_strings.xml b/res/values-nb/cm_strings.xml index ed18d7186..be8df7019 100644 --- a/res/values-nb/cm_strings.xml +++ b/res/values-nb/cm_strings.xml @@ -56,9 +56,19 @@ Standardikoner Symbol-pakker Ingen ikon pakker installert - Fjern Tilpasse din skuff Trykk på sideindikatoren for å vise flere konfigurasjonsinnstillinger Tilbakestille Skjulte programmer + LAUNCHER INNSTILLINGER + HJEMMESKJERM INNSTILLINGER + SKUFF INNSTILLINGER + Bla effekt + Sorteringsmodus + Søkefelt + Større ikoner + Skjul ikonetiketter + + AV + Temaer diff --git a/res/values-nl/cm_strings.xml b/res/values-nl/cm_strings.xml index bf5021141..5790c170d 100644 --- a/res/values-nl/cm_strings.xml +++ b/res/values-nl/cm_strings.xml @@ -56,9 +56,19 @@ Standaard Pictogram\npakket Geen pictogrampakketten geïnstalleerd - Verwijderen App-overzicht aanpassen Tik op de pagina-indicator voor extra instellingen Opnieuw instellen Verborgen apps + INSTELLINGEN STARTPAGINA + INSTELLINGEN THUISSCHERM + INSTELLINGEN OVERZICHT + Overgangseffect + Sorteren op + Zoekbalk + Grote pictogrammen + Pictogramlabels verbergen + AAN + UIT + Thema\'s diff --git a/res/values-pl/cm_strings.xml b/res/values-pl/cm_strings.xml index 6bf22dc0f..2578693c3 100644 --- a/res/values-pl/cm_strings.xml +++ b/res/values-pl/cm_strings.xml @@ -56,9 +56,19 @@ Domyślne ikony Paczki ikon Brak zainstalowanych paczek ikon - Wyczyść Dostosuj szufladę Naciśnij na wskaźnik strony by zobaczyć dodatkowe opcje konfiguracji Przywróć domyślne Ukryte aplikacje + USTAWIENIA LAUNCHERA + USTAWIENIA EKRANU GŁÓWNEGO + USTAWIENIA SZUFLADY APLIKACJI + Efekt przewijania + Tryb sortowania + Pasek wyszukiwania + Większe ikony + Ukryj etykiety ikon + WŁĄCZONE + WYŁĄCZONE + Motywy diff --git a/res/values-pt-rBR/cm_strings.xml b/res/values-pt-rBR/cm_strings.xml index 01381a48e..928ddee33 100644 --- a/res/values-pt-rBR/cm_strings.xml +++ b/res/values-pt-rBR/cm_strings.xml @@ -56,9 +56,19 @@ Ícones padrão Pacote de ícones Nenhum pacote de ícones instalado - Limpar Personalizar sua gaveta de aplicativos Toque o indicador desta página para visualizar configurações adicionais Redefinir Aplicativos ocultos + CONFIGURAÇÕES DO LAUNCHER + CONFIGURAÇÕES DA TELA DE INÍCIO + CONFIGURAÇÕES DA GAVETA APLICAÇÕES + Efeito de rolagem + Modo de ordenação + Barra de pesquisa + Ícones grandes + Ocultar as legendas dos ícones + LIG + DESL + Temas diff --git a/res/values-pt-rPT/cm_strings.xml b/res/values-pt-rPT/cm_strings.xml index 127a341d6..eb138dfda 100644 --- a/res/values-pt-rPT/cm_strings.xml +++ b/res/values-pt-rPT/cm_strings.xml @@ -26,7 +26,7 @@ Data de instalação Contorno das páginas Desvanecer as páginas laterais - Deslizar papel de parede + Deslizar imagem de fundo Definições Aplicação Ecrã inicial @@ -56,9 +56,19 @@ Ícones padrão Pacotes de Ícones Nenhum pacote de ícones instalado - Limpar Personalize a sua gaveta de aplicações Toque no indicador de página para ver definições adicionais Restaurar Aplicações ocultas + DEFINIÇÕES DO LANÇADOR + DEFINIÇÕES DO ECRÃ INICIAL + DEFINIÇÕES DA GAVETA APLICAÇÕES + Efeito de transição + Ordenar por + Barra de pesquisa + Ícones grandes + Ocultar as legendas dos ícones + LIG. + DESL. + Temas diff --git a/res/values-ru/cm_strings.xml b/res/values-ru/cm_strings.xml index af3f3baa0..fecb43a2b 100644 --- a/res/values-ru/cm_strings.xml +++ b/res/values-ru/cm_strings.xml @@ -56,9 +56,19 @@ Значки по умолчанию Наборы значков Наборы значков не установлены - Очистить Настройте меню приложений по своему вкусу Коснитесь индикатора страницы внизу для перехода к настройкам. Сброс Скрытые приложения + НАСТРОЙКИ ЛАУНЧЕРА + ДОМАШНИЙ ЭКРАН + МЕНЮ ПРИЛОЖЕНИЙ + Эффект прокрутки + Режим сортировки + Строка поиска + Крупные значки + Скрывать подписи значков + \u2759 + \u3007 + Темы diff --git a/res/values-si/cm_strings.xml b/res/values-si/cm_strings.xml index 9804bb914..d2ca8d91f 100644 --- a/res/values-si/cm_strings.xml +++ b/res/values-si/cm_strings.xml @@ -56,9 +56,19 @@ පෙරනිමි අයිකන අයිකන පොදි අයිකන පොදි කිසිවක් පිහිටුවා නැත - හිස් කරන්න ඔබගේ ලාච්චුව රිසිකරණය කරන්න අතිරේක වින්‍යාසන සැකසීම් බැලීමට පිටු දර්ශකය මත තට්ටු කරන්න ප්‍රත්‍යාරම්භනය සැඟවුණු යෙදුම් + දියත් කරකයේ සැකසීම් + මුල් තිරයේ සැකසීම් + ලාච්චුවේ සැකසීම් + අනුචලන ආටෝපය + සුබෙදීමේ ප්‍රකාරය + සෙවුම් තීරුව + විශාල අයිකන + අයිකන ලේබල සඟවන්න + සක්‍රීයයි + අක්‍රීයයි + තේමා diff --git a/res/values-sk/cm_strings.xml b/res/values-sk/cm_strings.xml index 6a78d0a7d..bc500fbdc 100644 --- a/res/values-sk/cm_strings.xml +++ b/res/values-sk/cm_strings.xml @@ -56,9 +56,19 @@ Predvolené ikony Balíky ikon Žiadne balíky ikon nie sú nainštalované - Vymazať Prispôsobte si vašu ponuku Kliknite na ukazovateľ stránky pre zobrazenie ďalších nastavení Obnoviť Skryté aplikácie + NASTAVENIA SPÚŠŤAČA + NASTAVENIA DOMOVSKEJ OBRAZOVKY + NASTAVENIA PONUKY + Efekt posunu + Režim triedenia + Vyhľadávací panel + Väčšie ikony + Skryť menovky ikon + Zapnuté + VYPNUTÉ + Témy diff --git a/res/values-sr/cm_arrays.xml b/res/values-sr/cm_arrays.xml index 54f520e01..f5c7d9912 100644 --- a/res/values-sr/cm_arrays.xml +++ b/res/values-sr/cm_arrays.xml @@ -22,9 +22,9 @@ Кондензовано - Без ефекта - Увећај - Умањи + Ниједан + Увећавање + Умањивање Ротирај нагоре Ротирај надоле Коцка унутра diff --git a/res/values-sr/cm_strings.xml b/res/values-sr/cm_strings.xml index 4c4eaf47b..6c509176e 100644 --- a/res/values-sr/cm_strings.xml +++ b/res/values-sr/cm_strings.xml @@ -16,7 +16,7 @@ limitations under the License. --> - Copyright \u00A9 2014 The CyanogenMod Project + Ауторско право \u00A9 2014 CyanogenMod Пројекат Приказ Филтер Подразумевани екран @@ -56,9 +56,19 @@ Подразумеване иконе Пакети икона Нема инсталираних пакета са иконама - Чисто Прилагодите фиоку Додирните индикатор странице да би сте видели додатна подешавања Ресетовање Скривене апликације + ПОДЕШАВАЊА ПОКРЕТАЧА + ПОДЕШАВАЊА ПОЧЕТНОГ ЕКРАНА + ПОДЕШАВАЊА ФИОКЕ + Ефекат скроловања + Режим сортирања + Табла за претрагу + Веће иконе + Сакриј етикете икона + УКЉУЧЕНО + ИСКЉУЧЕНО + Теме diff --git a/res/values-sv/cm_strings.xml b/res/values-sv/cm_strings.xml index 530ebab3a..36fde9442 100644 --- a/res/values-sv/cm_strings.xml +++ b/res/values-sv/cm_strings.xml @@ -56,7 +56,6 @@ Standardikoner Ikonpaket Inga ikonpaket installerade - Ta bort Anpassa din appmeny Tryck på sidindikatorn för att se ytterligare inställningar Återställ diff --git a/res/values-th/cm_strings.xml b/res/values-th/cm_strings.xml index 8fc18cb92..c326bc88b 100644 --- a/res/values-th/cm_strings.xml +++ b/res/values-th/cm_strings.xml @@ -56,7 +56,6 @@ ไอคอนเริ่มต้น ชุดไอคอน ไม่มีชุดไอคอนที่ติดตั้งอยู่ - ล้าง กำหนดที่วางแอปของคุณ แตะตัวแบ่งหน้าเพื่อดูการตั้งค่าเพิ่มเติม ล้างค่า diff --git a/res/values-tr/cm_strings.xml b/res/values-tr/cm_strings.xml index 529b76b03..5a891171d 100644 --- a/res/values-tr/cm_strings.xml +++ b/res/values-tr/cm_strings.xml @@ -56,9 +56,19 @@ Varsayılan simgeler Simge paketleri Yüklü simge paketi yok - Temizle Uygulama çekmecesini özelleştir Ek ayarlara bakmak için sayfa göstergesine dokun Sıfırla Gizli uygulamalar + BAŞLATICI AYARLARI + ANA EKRAN AYARLARI + ÇEKMECE AYARLARI + Kaydırma efekti + Sıralama modu + Arama çubuğu + Daha büyük simgeler + Simge etiketlerini gizle + AÇIK + KAPALI + Temalar diff --git a/res/values-uk/cm_strings.xml b/res/values-uk/cm_strings.xml index 005ef45e7..5feacde1c 100644 --- a/res/values-uk/cm_strings.xml +++ b/res/values-uk/cm_strings.xml @@ -56,7 +56,6 @@ Типові значки Набори значків Жодного набору значків не встановлено - Очистити Налаштуйте меню програм Торкніться індикатора сторінки знизу, щоб перейти до налаштувань Скидання diff --git a/res/values-zh-rCN/cm_strings.xml b/res/values-zh-rCN/cm_strings.xml index 408769dac..fcb593216 100644 --- a/res/values-zh-rCN/cm_strings.xml +++ b/res/values-zh-rCN/cm_strings.xml @@ -56,9 +56,19 @@ 默认图标 图标包 没有安装的图标包 - 清除 自定义抽屉 点击页面指示器以查看其他设置 重置 隐藏的应用 + 启动器设置 + 主屏幕设置 + 抽屉设置 + 滚动特效 + 排序模式 + 搜索栏 + 大图标 + 隐藏图标标签 + 打开 + 关闭 + 主题 diff --git a/res/values-zh-rHK/cm_strings.xml b/res/values-zh-rHK/cm_strings.xml index ce4bfcf4f..31d4c8823 100644 --- a/res/values-zh-rHK/cm_strings.xml +++ b/res/values-zh-rHK/cm_strings.xml @@ -16,7 +16,7 @@ limitations under the License. --> - 版權所有 \u00A9 2013年 CyanogenMod 計畫 + 版權所有 \u00A9 2014 年 CyanogenMod 計畫 排序 篩選過濾 預設螢幕 @@ -30,8 +30,8 @@ 設定 應用程式 主螢幕 - 搜尋欄 - 在螢幕上方顯示搜尋欄 + 搜尋列 + 在螢幕上方顯示搜尋列 隱藏圖示標籤 隱藏主螢幕的圖示標籤 抽屜 @@ -45,20 +45,30 @@ 從主螢幕移除已隱藏的應用程式小工具 隱藏圖示標籤 隱藏在抽屜裡的圖示標籤 - 基座 + 座架 一般 圖示 大圖示 - 使用超大的應用程序圖標於主螢幕和抽屜 + 使用超大的應用程式圖示於主螢幕和抽屜 字體風格 變體和字體風格用來應用於圖示的文本上 選擇圖示包 預設圖示 圖示包 沒有安裝圖示包 - 清除 自訂您的抽屜 點擊頁面指標來查看其他配置設定 重設 隱藏的應用程式 + 啟動器設定 + 主螢幕設定 + 抽屜設定 + 滾動效果 + 排序模式 + 搜尋列 + 大圖示 + 隱藏圖示標籤 + 開啟 + 關閉 + 主題 diff --git a/res/values-zh-rTW/cm_arrays.xml b/res/values-zh-rTW/cm_arrays.xml new file mode 100644 index 000000000..b965aee31 --- /dev/null +++ b/res/values-zh-rTW/cm_arrays.xml @@ -0,0 +1,40 @@ + + + + + + 正常 + Light + Condensed + + + + Zoom In + Zoom Out + Rotate Up + Rotate Down + Cube In + Cube Out + Stack + 手風琴 + Flip + Cylinder In + Cylinder Out + Carousel + 概述 + + diff --git a/res/values-zh-rTW/cm_strings.xml b/res/values-zh-rTW/cm_strings.xml new file mode 100644 index 000000000..0fcf0c6d0 --- /dev/null +++ b/res/values-zh-rTW/cm_strings.xml @@ -0,0 +1,58 @@ + + + + + 版權所有 \u00A9 2014 年 CyanogenMod 計畫 + 排序 + 篩選過濾 + 預設螢幕 + 滾動效果 + 標題 + 啟動次數 + 安裝時間 + 邊頁淡出 + 設定 + 應用程式 + 主螢幕 + 搜尋列 + 在螢幕上方顯示常駐搜尋列 + 隱藏圖示標籤 + 隱藏主螢幕的圖示標籤 + 抽屜 + 應用程式和小工具的抽屜 + 應用程式 + 隱藏的應用程式 + 刪除捷徑 + 從主螢幕刪除已隱藏的應用程式捷徑 + 移除小工具 + 從主螢幕移除已隱藏的應用程式小工具 + 隱藏圖示標籤 + 一般 + 圖示 + 大圖示 + 選擇圖示包 + 預設圖示 + 圖示包 + 輕按頁面指示器即可檢視更多配置設定 + 重設 + 隱藏的應用程式 + 搜尋列 + 大圖示 + 開啟 + 關閉 + 主題 + -- cgit v1.2.3 From 7bdf4ea47e247a7c51376690c2e1008a75112a7e Mon Sep 17 00:00:00 2001 From: Raj Yengisetty Date: Sat, 31 May 2014 15:29:59 -0700 Subject: Trebuchet: Themes shortcut should take you to ThemeSettings preference fragment instead of ThemeChooser Change-Id: Id2e57e2b1c03bed8cc30050c432d4449d29f4c87 --- src/com/android/launcher3/OverviewSettingsPanel.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/OverviewSettingsPanel.java b/src/com/android/launcher3/OverviewSettingsPanel.java index 98ee7609e..9d947466b 100644 --- a/src/com/android/launcher3/OverviewSettingsPanel.java +++ b/src/com/android/launcher3/OverviewSettingsPanel.java @@ -12,9 +12,9 @@ import com.android.launcher3.list.PinnedHeaderListView; import com.android.launcher3.list.SettingsPinnedHeaderAdapter; public class OverviewSettingsPanel { - public static final String ANDROID_SETTINGS = "org.cyanogenmod.theme.chooser"; + public static final String ANDROID_SETTINGS = "com.android.settings"; public static final String THEME_SETTINGS = - "org.cyanogenmod.theme.chooser.ChooserActivity"; + "com.android.settings.Settings$ThemeSettingsActivity"; public static final int HOME_SETTINGS_POSITION = 0; public static final int DRAWER_SETTINGS_POSITION = 1; -- cgit v1.2.3 From e5315923d298bf3f623532dbf7a98bdbb3f404f0 Mon Sep 17 00:00:00 2001 From: Raj Yengisetty Date: Tue, 3 Jun 2014 14:30:38 -0700 Subject: Fix bug: Scroll Effect issues in Workspace Repro: - Set HomeScreen Scroll Effect to Flip or Stack - Create at least 3 pages in HomeScreen - Switch rapidly back and forth between pages - Observe certain pages will be transparent Change-Id: I405a113fb947b193706d10921c2cf6ee7bb82b4f --- src/com/android/launcher3/PagedView.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index f050799ae..dbec42fa8 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -3104,10 +3104,10 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc v.setAlpha(alpha); } - // If the view has 0 alpha, we set it to be invisible so as to prevent + // If the view has 0 alpha, we move it off screen so as to prevent // it from accepting touches if (alpha == 0) { - v.setVisibility(INVISIBLE); + v.setTranslationX(v.getMeasuredWidth() * -10f); } else if (v.getVisibility() != VISIBLE) { v.setVisibility(VISIBLE); } @@ -3149,8 +3149,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc v.setVisibility(VISIBLE); } } else { - v.setTranslationX(0f); - v.setVisibility(INVISIBLE); + v.setTranslationX(v.getMeasuredWidth() * -10f); } } } -- cgit v1.2.3 From d90bcfe751dc99b4712a883206bf2a164af8f6c4 Mon Sep 17 00:00:00 2001 From: Abhisek Devkota Date: Wed, 4 Jun 2014 17:53:41 +0000 Subject: Revert "Trebuchet : Show cling for allapps overview" This reverts commit 20109c489eed6e97803ed5e5745c8c377b0446cb. Change-Id: I025c038d85256e2aa8500e098646a57a2fb41d5c --- res/layout-land/all_apps_cling.xml | 42 ++++++++---------------- res/layout-land/launcher.xml | 6 ---- res/layout-port/all_apps_cling.xml | 51 ++++++++++-------------------- res/layout-port/launcher.xml | 6 ---- res/layout-sw600dp-port/all_apps_cling.xml | 50 +++++++++++++++++++++++++++++ res/layout-sw720dp/all_apps_cling.xml | 46 +++++++++++++++++++++++++++ res/layout-sw720dp/launcher.xml | 6 ---- res/values/cm_strings.xml | 5 --- src/com/android/launcher3/Cling.java | 41 ++++++------------------ src/com/android/launcher3/Launcher.java | 33 ------------------- 10 files changed, 135 insertions(+), 151 deletions(-) create mode 100644 res/layout-sw600dp-port/all_apps_cling.xml create mode 100644 res/layout-sw720dp/all_apps_cling.xml diff --git a/res/layout-land/all_apps_cling.xml b/res/layout-land/all_apps_cling.xml index 19a93a5f3..820f00a6d 100644 --- a/res/layout-land/all_apps_cling.xml +++ b/res/layout-land/all_apps_cling.xml @@ -16,49 +16,33 @@ + launcher:drawIdentifier="all_apps_landscape"> + android:layout_marginStart="40dp" + android:layout_marginTop="40dp"> - + - - - + android:text="@string/all_apps_cling_add_item" />