Home | History | Annotate | Download | only in Launcher3
      1 #!/usr/bin/env python2.5
      2 
      3 import cgi
      4 import os
      5 import shutil
      6 import sys
      7 import sqlite3
      8 
      9 SCREENS = 5
     10 COLUMNS = 4
     11 ROWS = 4
     12 CELL_SIZE = 110
     13 
     14 DIR = "db_files"
     15 AUTO_FILE = "launcher.db"
     16 
     17 APPLICATION_COMPONENTS = [
     18   "com.android.calculator2/com.android.calculator2.Calculator",
     19   "com.android.providers.downloads.ui/com.android.providers.downloads.ui.DownloadList",
     20   "com.android.settings/com.android.settings.Settings",
     21   "com.android.mms/com.android.mms.ui.ConversationList",
     22   "com.android.contacts/com.android.contacts.activities.PeopleActivity",
     23   "com.android.dialer/com.android.dialer.DialtactsActivity"
     24 ]
     25 
     26 def usage():
     27   print "usage: fill_screens.py -- fills up the launcher db"
     28 
     29 
     30 def make_dir():
     31   shutil.rmtree(DIR, True)
     32   os.makedirs(DIR)
     33 
     34 def pull_file(fn):
     35   print "pull_file: " + fn
     36   rv = os.system("adb pull"
     37     + " /data/data/com.android.launcher/databases/launcher.db"
     38     + " " + fn);
     39   if rv != 0:
     40     print "adb pull failed"
     41     sys.exit(1)
     42 
     43 def push_file(fn):
     44   print "push_file: " + fn
     45   rv = os.system("adb push"
     46     + " " + fn
     47     + " /data/data/com.android.launcher/databases/launcher.db")
     48   if rv != 0:
     49     print "adb push failed"
     50     sys.exit(1)
     51 
     52 def process_file(fn):
     53   print "process_file: " + fn
     54   conn = sqlite3.connect(fn)
     55   c = conn.cursor()
     56   c.execute("DELETE FROM favorites")
     57 
     58   intentFormat = "#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=%s;end"
     59 
     60   id = 0;
     61   for s in range(SCREENS):
     62     for x in range(ROWS):
     63       for y in range(COLUMNS):
     64         id += 1
     65         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)"
     66         insert = insert % (id, "title", "", -100, s, x, y, 1, 1, 2, -1, 0)
     67         c.execute(insert)
     68         folder_id = id
     69 
     70         for z in range(15):
     71           id += 1
     72           intent = intentFormat % (APPLICATION_COMPONENTS[id % len(APPLICATION_COMPONENTS)])
     73           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)"
     74           insert = insert % (id, "title", intent, folder_id, 0, 0, 0, 1, 1, 0, -1, 0)
     75           c.execute(insert)
     76 
     77   conn.commit()
     78   c.close()
     79 
     80 def main(argv):
     81   if len(argv) == 1:
     82     make_dir()
     83     pull_file(AUTO_FILE)
     84     process_file(AUTO_FILE)
     85     push_file(AUTO_FILE)
     86   else:
     87     usage()
     88 
     89 if __name__=="__main__":
     90   main(sys.argv)
     91