201027
authorhgs
Tue, 13 Jul 2010 20:12:19 +0300
changeset 9 a03989fb355a
parent 8 02a1dd166f2b
child 11 83e593299ea6
201027
.hg_archival.txt
.hgignore
bin/installs.py
bin/rom.py
confml/confml/CI_hbtheme.confml
confml/confml/hbtheme.confml
confml/implml/hbtheme.implml
confml/implml/hbtheme_20022e82.crml
confml/platformthemes.confml
platformthemes.pro
src/effects/sfwhitetheme/applications.zip
src/effects/sfwhitetheme/widgets.zip
src/icons/sfblacktheme/scalable/applications.zip
src/icons/sfblacktheme/scalable/icons.zip
src/icons/sfblacktheme/scalable/widgets.zip
src/icons/sfwhitetheme/scalable/applications.zip
src/icons/sfwhitetheme/scalable/icons.zip
src/icons/sfwhitetheme/scalable/widgets.zip
src/style/sfblacktheme/variables/color/hbapplicationcolorgroup.css
src/style/sfwhitetheme/variables/color/hbapplicationcolorgroup.css
src/style/sfwhitetheme/variables/color/hbwidgetcolorgroup.css
--- a/.hg_archival.txt	Tue Jul 06 14:53:09 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-repo: 3d51a84f3bf4dec77d58f1fac7210a6385dd25ec
-node: 2103b889d8045565157030549ac7e0805672f8a4
--- a/.hgignore	Tue Jul 06 14:53:09 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-# A note on the rules: there are two rules for each specific name (but not
-# for file extensions), since e.g. "^tmp$" matches "tmp" in the root directory
-# (i.e. the same directory this .hgignore file is in) and "/tmp$"" matches
-# "tmp" in any subdirectory of the root. A simple rule "tmp$" will not do,
-# since it will erroneously match anything ending in "tmp", e.g. "myfiletmp",
-# anywhere in the directory hierarchy.
-
-# Sadly "bld.inf", "*.mmp" and "*.def" files cannot be blindly ignored, since
-# the code base contains some native S60 projects, for which these files are 
-# not generated automatically.
-
-# Make sure were using the regular expression syntax, not globbing.
-syntax: regexp
-
-# Doxygen generated directories and files.
-^doc/html$
-^warn.log$
-
-# Directory names.
-^\.project$
-/\.project$
-^\.cproject$
-/\.cproject$
-^\.settings$
-/\.settings$
-^debug$
-/debug$
-^include$
-^lib$
-/lib$
-^moc$
-/moc$
-^obj$
-/obj$
-^rcc$
-/rcc$
-^release$
-/release$
-^tmp$
-/tmp$
-
-# File names.
-^\.qmake\.cache$
-^ABLD\.BAT$
-/ABLD\.BAT$
-#^bld\.inf$
-#/bld\.inf$
-#^hb_install\.prf$
-^Makefile$
-/Makefile$
-^mocinclude\.tmp$
-/mocinclude\.tmp$
-^Thumbs\.db$
-/Thumbs\.db$
-
-# File name patterns.
-^Makefile.*\..*$
-/Makefile.*\..*$
-^moc_.*\.cpp$
-/moc_.*\.cpp$
-^object_script\..*$
-/object_script\..*$
-^qrc_.*\.cpp$
-/qrc_.*\.cpp$
-/tmp[^/]*$
-
-# File name extensions.
-\.a$
-\.bak$
-#\.def$
-\.dll$
-\.exe$
-\.idb$
-\.ilk$
-\.loc$
-#\.mmp$
-\.moc$
-\.ncb$
-\.o$
-\.orig$
-\.pdb$
-\.pkg$
-\.pro.user$
-\.qtplugin$
-\.rss$
-\.sln$
-\.so$
-\.suo$
-\.tmp$
-\.user$
-\.vcproj$
-
-# Theme content is always delivered ZIP-packaged
-\.svg$
-\.png$
-\.jpg$
-\.gif$
-\.svgt$
--- a/bin/installs.py	Tue Jul 06 14:53:09 2010 +0300
+++ b/bin/installs.py	Tue Jul 13 20:12:19 2010 +0300
@@ -84,7 +84,7 @@
                 target = make_target(root)
                 relpath = os.path.relpath(root, input_dir).replace("\\", "/")
                 if os.path.splitext(file)[1] == ".zip":
-                    out.write("symbian:BLD_INF_RULES.prj_exports += \":zip %s $${EPOCROOT}epoc32/data/z/resource/hb/themes/%s/\"\n" % (filepath, relpath))
+                    out.write("symbian:BLD_INF_RULES.prj_exports += \":zip %s $${EPOCROOT}epoc32/data/z/resource/hb/themes/%s/\"\n" % (filepath, relpath)) 
                     out.write("symbian:BLD_INF_RULES.prj_exports += \":zip %s $${EPOCROOT}epoc32/winscw/c/resource/hb/themes/%s/\"\n" % (filepath, relpath))
                     out.write("!isEmpty(%s.commands): %s.commands += &&\n" % (target, target))
                     out.write("%s.commands += $$QMAKE_UNZIP %s -d $$(HB_THEMES_DIR)/themes/%s\n" % (target, filepath, relpath))
--- a/bin/rom.py	Tue Jul 06 14:53:09 2010 +0300
+++ b/bin/rom.py	Tue Jul 13 20:12:19 2010 +0300
@@ -23,6 +23,7 @@
 import zipfile
 import optparse
 import posixpath
+import ConfigParser
 
 # ============================================================================
 # Globals
@@ -97,21 +98,27 @@
         self.files = {}
         self.archives = {}
 
+    def add_file(self, filepath):
+        if self._include(filepath):
+            filepath = filepath.replace("\\", "/")
+            path = os.path.split(filepath)[0]
+            extension = os.path.splitext(filepath)[1]
+            if extension == ".zip":
+                if path not in self.archives:
+                    self.archives[path] = list()
+                if filepath not in self.archives[path]:
+                    self.archives[path].append(filepath)
+            else:
+                if path not in self.files:
+                    self.files[path] = list()
+                if filepath not in self.files[path]:
+                    self.files[path].append(filepath)
+
     def initialize(self):
         for path in self.paths:
             for root, dirs, files in os.walk(path):
                 for file in files:
-                    filepath = posixpath.join(root, file).replace("\\", "/")
-                    if self._include(filepath):
-                        extension = os.path.splitext(filepath)[1]
-                        if extension == ".zip":
-                            if root not in self.archives:
-                                self.archives[root] = list()
-                            self.archives[root].append(filepath)
-                        else:
-                            if root not in self.files:
-                                self.files[root] = list()
-                            self.files[root].append(filepath)
+                    self.add_file(os.path.join(root, file))
 
     def write_iby(self, ibypath):
         global SOURCE_PREFIX, TARGET_PREFIX, EXIT_STATUS
@@ -153,6 +160,36 @@
         out.write("#endif __%s_IBY__\n" % self.name.upper())
         out.close()
 
+    def write_thx(self, thxpath):
+        global SOURCE_PREFIX, TARGET_PREFIX, EXIT_STATUS
+        outpath = os.path.dirname(thxpath)
+        if not os.path.exists(outpath):
+            os.makedirs(outpath)
+        archive = zipfile.ZipFile(thxpath, "w")
+        os.chdir(INPUT_DIR)
+        written_entries = list()
+        for path, files in self.files.iteritems():
+            relpath = os.path.relpath(path, INPUT_DIR).replace("\\", "/")
+            for filepath in files:
+                filename = os.path.basename(filepath)
+                entry = posixpath.join(relpath, filename)
+                if entry not in written_entries:
+                    written_entries.append(entry)
+                    archive.write(entry)
+                else:
+                    print "ERROR: %s duplicate entry %s" % (thxpath, entry)
+                    EXIT_STATUS = -1
+        archive.close()
+
+    def hidden(self):
+        result = False
+        config = ConfigParser.ConfigParser()
+        indexthemepath = INPUT_DIR + '/icons/' + self.name + '/index.theme'
+        if os.path.exists(indexthemepath):
+            config.read(indexthemepath)
+            result = config.getboolean('Icon Theme', 'Hidden')
+        return result
+
     def _include(self, filepath):
         result = True
         if INCLUDE != None:
@@ -179,6 +216,10 @@
                         if theme not in themes:
                             themes[theme] = Theme(theme)
                         themes[theme].paths.append(themepath)
+                        # special case: themeindex
+                        themeindex = os.path.join(path, theme + ".themeindex")
+                        if os.path.exists(themeindex):
+                            themes[theme].add_file(themeindex)
     return themes
 
 # ============================================================================
@@ -208,8 +249,12 @@
     themes = lookup_themes(INPUT_DIR)
     for name, theme in themes.iteritems():
         theme.initialize()
-        print "Generating: %s.iby" % name
-        theme.write_iby(posixpath.join(OUTPUT_DIR, "%s.iby" % name))
+        if theme.hidden():
+            print "Generating: %s.iby" % name
+            theme.write_iby(posixpath.join(OUTPUT_DIR, "%s.iby" % name))
+        else:
+            print "Generating: %s.thx" % name
+            theme.write_thx(posixpath.join(OUTPUT_DIR, "%s.thx" % name))
 
     return EXIT_STATUS
 
Binary file confml/confml/CI_hbtheme.confml has changed
Binary file confml/confml/hbtheme.confml has changed
--- a/confml/implml/hbtheme.implml	Tue Jul 06 14:53:09 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
-
-<container> 
-    <phase name="pre"/> 
-    <tag name="target" value="rofs3"/> 
-
-    <ruleml xmlns="http://www.s60.com/xml/ruleml/3">
-        <rule>
-            ${HbTheme.UIThemeFile} configures ${HbTheme.HbDefaultTheme} = {% get_themename_from_thx( ${HbTheme.UIThemeFile}, 'themes' ) %}
-        </rule>
-        <rule>
-            ${HbTheme.PriorityThemeFile} configures ${HbTheme.HbPriorityThemeName} = {% get_themename_from_thx( ${HbTheme.PriorityThemeFile}, 'prioritytheme' ) %}
-        </rule>
-        <eval_globals>
-
-import sys, zipfile, os, os.path
-import tempfile
-import shutil
-    
-def get_themename_from_thx(file, themesfolder):
-    ret = None
-
-    outdir = get_output_folder()
-    outdir = os.path.join(outdir, 'resource')
-    if not os.path.exists(outdir):    
-        os.mkdir(outdir)
-    outdir = os.path.join(outdir, 'hb')
-    if not os.path.exists(outdir):    
-        os.mkdir(outdir)
-    outdir = os.path.join(outdir, themesfolder)
-    if not os.path.exists(outdir):    
-        os.mkdir(outdir)
-    unzip_file_into_dir(file, outdir)
-    
-    # Get filesnames in outdir
-    files_in_dir = os.listdir(outdir)
-    
-    # Search for themeindex file
-    for fn in files_in_dir:
-        if os.path.splitext(fn)[1] == '.themeindex':
-            ret = os.path.splitext(fn)[0]
-        
-    return ret
-        
-def unzip_file_into_dir(file, dir):
-    """
-    Unzips file into given folder.
-    """
-
-    zfobj = zipfile.ZipFile(file,'r')
-    for name in zfobj.namelist():
-        if name.endswith('/'):        
-            os.mkdir(os.path.join(dir, name))
-        else:
-            outfile = open(os.path.join(dir, name), 'wb')
-            outfile.write(zfobj.read(name))
-            outfile.close()
-
-def get_output_folder():
-    output = ruleml.context.output
-    output = os.path.join(output, 'content')
-    if not os.path.exists(output):
-        os.mkdir(output)
-
-    return output
-
-        </eval_globals>
-    
-    </ruleml>
-</container>
-
-<container>
-    <phase name="normal"/>
-    <tag name="target" value="rofs3"/> 
-
-    <content xmlns="http://www.s60.com/xml/content/2">
-        <output dir="">
-            <input dir="content"/>
-        </output>
-    </content>
-</container>
-
-</container>
Binary file confml/implml/hbtheme_20022e82.crml has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/confml/platformthemes.confml	Tue Jul 13 20:12:19 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration xmlns="http://www.s60.com/xml/confml/1" xmlns:xi="http://www.w3.org/2001/XInclude" name="theme" version="1">
+  <desc>HbTheme</desc>
+  <data>
+    <HbTheme>
+      <AvailableThemes extensionPolicy="append">
+        <ThemeName>sfblacktheme</ThemeName>
+        <ThxPath>\epoc32\data\z\resource\hb\themes\sfblacktheme.thx</ThxPath>
+      </AvailableThemes>
+      <AvailableThemes>
+        <ThemeName>sfwhitetheme</ThemeName>
+        <ThxPath>\epoc32\data\z\resource\hb\themes\sfwhitetheme.thx</ThxPath>
+      </AvailableThemes>
+    </HbTheme>
+  </data>
+</configuration>
\ No newline at end of file
--- a/platformthemes.pro	Tue Jul 06 14:53:09 2010 +0300
+++ b/platformthemes.pro	Tue Jul 13 20:12:19 2010 +0300
@@ -36,6 +36,9 @@
 }
 HB_THEMES_DIR = $$HB_THEMES_DIR/themes
 
+# ============================================================================
+# determine dir separators & /dev/null
+# ============================================================================
 win32:!win32-g++ {
     unixstyle = false
 } else:symbian:isEmpty(QMAKE_SH) {
@@ -80,15 +83,15 @@
         error(\'$$THEMEINDEXER\' must be in PATH.)
     }
 }
-ARGS = -s $$OUT_PWD/tmp/src -t $$OUT_PWD/tmp
+ARGS = -s $$OUT_PWD/tmp/src -t $$OUT_PWD/tmp/src
 !system($$THEMEINDEXER $$ARGS) {
     error(*** $$THEMEINDEXER reported an error. Stop.)
 }
 
 index.path = $$(HB_THEMES_DIR)/themes
-index.files = $$OUT_PWD/tmp/*.themeindex
+index.files = $$OUT_PWD/tmp/src/*.themeindex
 INSTALLS += index
-QMAKE_CLEAN += $$OUT_PWD/tmp/*.themeindex
+QMAKE_CLEAN += $$OUT_PWD/tmp/src/*.themeindex
 
 # ============================================================================
 # generate installs.pri
@@ -98,7 +101,6 @@
     error(*** bin/installs.py reported an error. Stop.)
 }
 isEmpty(QMAKE_UNZIP):QMAKE_UNZIP = unzip -u -o
-include($$OUT_PWD/tmp/installs.pri)
 QMAKE_DISTCLEAN += $$OUT_PWD/tmp/installs.pri
 
 # ============================================================================
@@ -110,6 +112,7 @@
         error(*** bin/rom.py reported an error. Stop.)
     }
     QMAKE_CLEAN += $$OUT_PWD/tmp/*.iby
+    QMAKE_CLEAN += $$OUT_PWD/tmp/*.thx
 }
 
 # ============================================================================
@@ -140,13 +143,11 @@
         return(true)
     }
     exportThemeFiles($$files($$OUT_PWD/tmp/*.iby), $$CORE_MW_LAYER_IBY_EXPORT_PATH())
-    exportThemeFiles($$files($$OUT_PWD/tmp/*.themeindex), $${EPOCROOT}epoc32/data/z/resource/hb/themes/)
-    exportThemeFiles($$files($$OUT_PWD/tmp/*.themeindex), $${EPOCROOT}epoc32/winscw/c/resource/hb/themes/)
+    exportThemeFiles($$files($$OUT_PWD/tmp/*.thx), $${EPOCROOT}epoc32/data/z/resource/hb/themes/)
+    exportThemeFiles($$files($$OUT_PWD/tmp/src/*.themeindex), $${EPOCROOT}epoc32/winscw/c/resource/hb/themes/)
 
-    # configuration files - exporting removed from platformthemes
-#    BLD_INF_RULES.prj_exports += "$$section(PWD, ":", 1)/confml/confml/hbtheme.confml            MW_LAYER_CONFML(hbtheme.confml)
-#    BLD_INF_RULES.prj_exports += "$$section(PWD, ":", 1)/confml/implml/hbtheme_20022e82.crml     MW_LAYER_CRML(hbtheme_20022e82.crml)
-#    BLD_INF_RULES.prj_exports += "$$section(PWD, ":", 1)/confml/implml/hbtheme.implml            MW_LAYER_CRML(hbtheme.implml)
+    # configuration files
+    BLD_INF_RULES.prj_exports += "$$section(PWD, ":", 1)/confml/platformthemes.confml            MW_LAYER_CONFML(platformthemes.confml)
 
 } else {
     exists(src/theme.theme) {
@@ -166,3 +167,4 @@
 }
 
 message(Run \'make install\')
+include($$OUT_PWD/tmp/installs.pri)
Binary file src/effects/sfwhitetheme/applications.zip has changed
Binary file src/effects/sfwhitetheme/widgets.zip has changed
Binary file src/icons/sfblacktheme/scalable/applications.zip has changed
Binary file src/icons/sfblacktheme/scalable/icons.zip has changed
Binary file src/icons/sfblacktheme/scalable/widgets.zip has changed
Binary file src/icons/sfwhitetheme/scalable/applications.zip has changed
Binary file src/icons/sfwhitetheme/scalable/icons.zip has changed
Binary file src/icons/sfwhitetheme/scalable/widgets.zip has changed
--- a/src/style/sfblacktheme/variables/color/hbapplicationcolorgroup.css	Tue Jul 06 14:53:09 2010 +0300
+++ b/src/style/sfblacktheme/variables/color/hbapplicationcolorgroup.css	Tue Jul 13 20:12:19 2010 +0300
@@ -23,6 +23,8 @@
 qtc_cal_day_preview_text:#FFFFFF; /* Added 05.02.2010 */
 qtc_cal_day_hour_lines:#8E8E8E; /* Added 05.02.2010 */
 qtc_cal_monthgrid_title:#FFFFFF; /* Added 05.02.2010 */
+qtc_cal_meeting:#FFFFFF; /* Added 14.06.2010 */
+qtc_cal_view_text:#FFFFFF; /* Added 14.06.2010 */
 
 /* Application specific - Call handling */ 
 qtc_callhandling_answer_normal:#FFFFFF; /* Added 05.02.2010 */
@@ -57,5 +59,8 @@
 
 /* Application specific - Messaging */ 
 qtc_messaging_char_count:#FFFFFF; /* Added 19.04.2010 */
+
+/* Screensaver */
+qtc_screensaver:#FFFFFF; /* Added 16.06.2010 */
 }
 
--- a/src/style/sfwhitetheme/variables/color/hbapplicationcolorgroup.css	Tue Jul 06 14:53:09 2010 +0300
+++ b/src/style/sfwhitetheme/variables/color/hbapplicationcolorgroup.css	Tue Jul 13 20:12:19 2010 +0300
@@ -23,6 +23,8 @@
 qtc_cal_day_preview_text:#FFFFFF; /* Added 05.02.2010 */
 qtc_cal_day_hour_lines:#505050; /* Added 05.02.2010 */
 qtc_cal_monthgrid_title:#FFFFFF; /* Added 05.02.2010 */
+qtc_cal_meeting:#000000; /* Added 14.06.2010 */
+qtc_cal_view_text:#000000; /* Added 14.06.2010 */
 
 /* Application specific - Call handling */ 
 qtc_callhandling_answer_normal:#FFFFFF; /* Added 05.02.2010 */
@@ -57,5 +59,8 @@
 
 /* Application specific - Messaging */ 
 qtc_messaging_char_count:#FFFFFF; /* Added 19.04.2010 */
+
+/* Screensaver */
+qtc_screensaver:#FFFFFF; /* Added 16.06.2010 */
 }
 
--- a/src/style/sfwhitetheme/variables/color/hbwidgetcolorgroup.css	Tue Jul 06 14:53:09 2010 +0300
+++ b/src/style/sfwhitetheme/variables/color/hbwidgetcolorgroup.css	Tue Jul 13 20:12:19 2010 +0300
@@ -13,7 +13,7 @@
 qtc_default_main_pane_pressed:#3F89A9;
 qtc_default_main_pane_latched:#009CEF;
 qtc_default_main_pane_highlight:#B27200;
-qtc_default_main_pane_disabled:#595B5D; 
+qtc_default_main_pane_disabled:#9B9B9B; 
 qtc_default_popup_normal:#505050;
 qtc_default_popup_pressed:#FFFFFF;
 qtc_default_popup_latched:#FFFFFF;
@@ -33,9 +33,9 @@
 qtc_status_pane_trans:#FFFFFF; /* Added 05.02.2010 */
 
 /* Main area - View */
-qtc_view_normal:#FFFFFF;
-qtc_view_pressed:#FFFFFF;
-qtc_view_line_normal:#FFFFFF;
+qtc_view_normal:#000000;
+qtc_view_pressed:#505050;
+qtc_view_line_normal:#A0A0A0;
 qtc_view_link_normal:#33C8FF;
 qtc_view_visited_normal:#B378FF;
 qtc_view_separator_normal:#9B9B9B;
@@ -88,8 +88,8 @@
 qtc_tumbler_highlight:#FFFFFF;
 
 /* Main area - DataForm */
-qtc_dataform_heading:#3C3C3C; /* Added 04.03.2010 */
-qtc_dataform_heading_link:#33C8FF; /* Added 22.03.2010 */
+qtc_dataform_heading:#FFFFFF; /* Modified 10.06.2010 */
+qtc_dataform_heading_link:#8CE0FF; /* Modified 10.06.2010 */
 
 /* Main area - ProgressSlider */
 qtc_progslider_normal:#3C3C3C; /* Added 09.02.2010 */