I was able to get this working, thought it might help someone else so here's the Home.xml and the backend python script that add a Resume section to the Home screeen.
I tested this with the default Confluence skin, basically you would add the snippet I have below to the end of the skin's Home.xml file (before the last </controls> </window>). The backend python script is for gathering the bookmarks info and making it available for the visual. I created an autoexec.py file with this script and dropped in userdata folder. This is hacky, feel free to do it in a cleaner way if you care. This works well on XBMC startup to refresh the bookmarks but after launched the only time it refreshes is when you click on any of the Resume points that show up on the Home screen. Feel free to add a separate button to refresh the bookmarks if you'd prefer that.
I borrowed heavily from the post that was linked to in my prior post, so thanks to pilluli.
Home.xml snippet:
Code:
<!-- Resume-->
<control type="group">
<posx>20</posx>
<posy>20</posy>
<visible>true</visible>
<control type="group">
<control type="image">
<description>background top</description>
<posx>0</posx>
<posy>0</posy>
<width>512</width>
<height>50</height>
<colordiffuse>CCFFFFFF</colordiffuse>
<texture>DialogContextTop.png</texture>
</control>
<control type="image">
<posx>0</posx>
<posy>50</posy>
<description>background</description>
<width>512</width>
<height>150</height>
<colordiffuse>CCFFFFFF</colordiffuse>
<texture>DialogContextMiddle.png</texture>
</control>
<control type="image">
<description>background bottom</description>
<posx>0</posx>
<posy>200</posy>
<width>512</width>
<height>50</height>
<colordiffuse>CCFFFFFF</colordiffuse>
<texture>DialogContextBottom.png</texture>
</control>
<control type="label">
<description>Title</description>
<posx>50</posx>
<posy>40</posy>
<width>150</width>
<height>30</height>
<textcolor>lightgrey</textcolor>
<shadowcolor>black</shadowcolor>
<font>font20_title</font>
<label>Resume</label>
<aligny>center</aligny>
<align>left</align>
</control>
<control type="group">
<description>Resume Menu</description>
<posx>40</posx>
<posy>25</posy>
<control type="button" id="32">
<description>Resume playback button</description>
<posx>10</posx>
<posy>50</posy>
<width>420</width>
<height>25</height>
<label>$INFO[Window(Home).Property(MyVal.1.Name)]</label>
<onclick>XBMC.RunScript(special://profile\autoexec.py)</onclick>
<onclick>PlayMedia($INFO[Window(Home).Property(MyVal.1.Path)])</onclick>
<aligny>center</aligny>
<textcolor>88FF7777</textcolor>
<focusedcolor>white</focusedcolor>
<onup>20</onup>
<ondown>33</ondown>
</control>
<control type="button" id="33">
<description>Resume playback button</description>
<posx>10</posx>
<posy>75</posy>
<width>420</width>
<height>25</height>
<label>$INFO[Window(Home).Property(MyVal.2.Name)]</label>
<onclick>XBMC.RunScript(special://profile\autoexec.py)</onclick>
<onclick>PlayMedia($INFO[Window(Home).Property(MyVal.2.Path)])</onclick>
<aligny>center</aligny>
<textcolor>88FF7777</textcolor>
<focusedcolor>white</focusedcolor>
<onup>32</onup>
<ondown>34</ondown>
</control>
<control type="button" id="34">
<description>Resume playback button</description>
<posx>10</posx>
<posy>100</posy>
<width>420</width>
<height>25</height>
<label>$INFO[Window(Home).Property(MyVal.3.Name)]</label>
<onclick>XBMC.RunScript(special://profile\autoexec.py)</onclick>
<onclick>PlayMedia($INFO[Window(Home).Property(MyVal.3.Path)])</onclick>
<aligny>center</aligny>
<textcolor>88FF7777</textcolor>
<focusedcolor>white</focusedcolor>
<onup>33</onup>
<ondown>35</ondown>
</control>
<control type="button" id="35">
<description>Resume playback button</description>
<posx>10</posx>
<posy>125</posy>
<width>420</width>
<height>25</height>
<label>$INFO[Window(Home).Property(MyVal.4.Name)]</label>
<onclick>XBMC.RunScript(special://profile\autoexec.py)</onclick>
<onclick>PlayMedia($INFO[Window(Home).Property(MyVal.4.Path)])</onclick>
<aligny>center</aligny>
<textcolor>88FF7777</textcolor>
<focusedcolor>white</focusedcolor>
<onup>34</onup>
<ondown>36</ondown>
</control>
<control type="button" id="36">
<description>Resume playback button</description>
<posx>10</posx>
<posy>150</posy>
<width>420</width>
<height>25</height>
<label>$INFO[Window(Home).Property(MyVal.5.Name)]</label>
<onclick>XBMC.RunScript(special://profile\autoexec.py)</onclick>
<onclick>PlayMedia($INFO[Window(Home).Property(MyVal.5.Path)])</onclick>
<aligny>center</aligny>
<textcolor>88FF7777</textcolor>
<focusedcolor>white</focusedcolor>
<onup>35</onup>
<ondown>9003</ondown>
</control>
</control>
</control>
<!--Resume-->
Backend script:
Code:
import urllib
import os
import sys
from traceback import print_exc
import re
import socket
import xbmc
import xbmcgui
import xbmcplugin
import time
import threading
from urllib import quote_plus, unquote_plus
print "[Resume] started..."
HomeWindow = xbmcgui.Window( 10000 )
xbmc.executehttpapi( "SetResponseFormat()" )
xbmc.executehttpapi( "SetResponseFormat(OpenField,%s)" % ( "<field>", ) )
xbmc.executehttpapi( "SetResponseFormat(CloseField,%s)" % ( "</field>", ) )
xbmc.executehttpapi( "SetResponseFormat(OpenRecord,%s)" % ( "<record>", ) )
xbmc.executehttpapi( "SetResponseFormat(CloseRecord,%s)" % ( "</record>", ) )
sql_movies = "select bookmark.idBookmark,files.strfilename,path.strPath from bookmark join files on (files.idFile = bookmark.idFile) join path on (path.idPath =files.idPath) ORDER BY bookmark.idFile DESC limit 5"
movies_xml = xbmc.executehttpapi( "QueryVideoDatabase(%s)" % quote_plus( sql_movies ), )
movies = re.findall( "<record>(.+?)</record>", movies_xml, re.DOTALL )
count = 0
for movie in movies:
fields = re.findall( "<field>(.*?)</field>", movie, re.DOTALL )
videoFile = fields[1]
videoPath = fields[2]
count = count + 1
fullPath = videoPath+videoFile
HomeWindow.setProperty( "MyVal.%d.Name" % ( count ), videoFile )
HomeWindow.setProperty( "MyVal.%d.Path" % ( count ), fullPath )