| #!/usr/bin/env python2.5 | 
 |  | 
 | import cgi | 
 | import os | 
 | import shutil | 
 | import sys | 
 | import sqlite3 | 
 |  | 
 | SCREENS = 5 | 
 | COLUMNS = 4 | 
 | ROWS = 4 | 
 | CELL_SIZE = 110 | 
 |  | 
 | DIR = "db_files" | 
 | AUTO_FILE = "launcher.db" | 
 |  | 
 | APPLICATION_COMPONENTS = [ | 
 |   "com.android.calculator2/com.android.calculator2.Calculator", | 
 |   "com.android.providers.downloads.ui/com.android.providers.downloads.ui.DownloadList", | 
 |   "com.android.settings/com.android.settings.Settings", | 
 |   "com.android.mms/com.android.mms.ui.ConversationList", | 
 |   "com.android.contacts/com.android.contacts.activities.PeopleActivity", | 
 |   "com.android.dialer/com.android.dialer.DialtactsActivity" | 
 | ] | 
 |  | 
 | def usage(): | 
 |   print "usage: fill_screens.py -- fills up the launcher db" | 
 |  | 
 |  | 
 | def make_dir(): | 
 |   shutil.rmtree(DIR, True) | 
 |   os.makedirs(DIR) | 
 |  | 
 | def pull_file(fn): | 
 |   print "pull_file: " + fn | 
 |   rv = os.system("adb pull" | 
 |     + " /data/data/com.android.launcher/databases/launcher.db" | 
 |     + " " + fn); | 
 |   if rv != 0: | 
 |     print "adb pull failed" | 
 |     sys.exit(1) | 
 |  | 
 | def push_file(fn): | 
 |   print "push_file: " + fn | 
 |   rv = os.system("adb push" | 
 |     + " " + fn | 
 |     + " /data/data/com.android.launcher/databases/launcher.db") | 
 |   if rv != 0: | 
 |     print "adb push failed" | 
 |     sys.exit(1) | 
 |  | 
 | def process_file(fn): | 
 |   print "process_file: " + fn | 
 |   conn = sqlite3.connect(fn) | 
 |   c = conn.cursor() | 
 |   c.execute("DELETE FROM favorites") | 
 |  | 
 |   intentFormat = "#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=%s;end" | 
 |  | 
 |   id = 0; | 
 |   for s in range(SCREENS): | 
 |     for x in range(ROWS): | 
 |       for y in range(COLUMNS): | 
 |         id += 1 | 
 |         insert = "INSERT into favorites (_id, title, intent, container, screen, cellX, cellY, spanX, spanY, itemType, appWidgetId, iconType) VALUES (%d, '%s', '%s', %d, %d, %d, %d, %d, %d, %d, %d, %d)" | 
 |         insert = insert % (id, "title", "", -100, s, x, y, 1, 1, 2, -1, 0) | 
 |         c.execute(insert) | 
 |         folder_id = id | 
 |  | 
 |         for z in range(15): | 
 |           id += 1 | 
 |           intent = intentFormat % (APPLICATION_COMPONENTS[id % len(APPLICATION_COMPONENTS)]) | 
 |           insert = "INSERT into favorites (_id, title, intent, container, screen, cellX, cellY, spanX, spanY, itemType, appWidgetId, iconType) VALUES (%d, '%s', '%s', %d, %d, %d, %d, %d, %d, %d, %d, %d)" | 
 |           insert = insert % (id, "title", intent, folder_id, 0, 0, 0, 1, 1, 0, -1, 0) | 
 |           c.execute(insert) | 
 |  | 
 |   conn.commit() | 
 |   c.close() | 
 |  | 
 | def main(argv): | 
 |   if len(argv) == 1: | 
 |     make_dir() | 
 |     pull_file(AUTO_FILE) | 
 |     process_file(AUTO_FILE) | 
 |     push_file(AUTO_FILE) | 
 |   else: | 
 |     usage() | 
 |  | 
 | if __name__=="__main__": | 
 |   main(sys.argv) |