Author: bklaas
Date: Wed Apr 21 11:17:35 2010
New Revision: 8719

URL: http://svn.slimdevices.com/jive?rev=8719&view=rev
Log:
Bug: 15827
Description: patches from Michael
1. do not present SBS as a menu option when drive is read-only (this will 
likely be reworked to better message the user, but this is a start)
2. only add menu items for mounts that end in numbers (i.e., partitions)

Modified:
    
7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/MediaManager/MediaManagerApplet.lua
    
7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/MediaManager/MediaManagerMeta.lua
    
7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeCenter/SqueezeCenterMeta.lua

Modified: 
7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/MediaManager/MediaManagerApplet.lua
URL: 
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/MediaManager/MediaManagerApplet.lua?rev=8719&r1=8718&r2=8719&view=diff
==============================================================================
--- 
7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/MediaManager/MediaManagerApplet.lua
 (original)
+++ 
7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/MediaManager/MediaManagerApplet.lua
 Wed Apr 21 11:17:35 2010
@@ -59,8 +59,12 @@
        if mountedDrivePresent then
                -- create menu items for each
                for k, v in pairs(mountedDrives) do
-                       log:debug('STARTUP | Create main menu item for ', k)
-                       self:addMountedDevice(k, false)
+                       -- check whether the mount point is ending in a 
partition number
+                       -- ignore disks without partition like eg. sdb (virtual 
CD drive)
+                       if string.match(k, "[123456789]$") then
+                               log:debug('STARTUP | Create main menu item for 
', k)
+                               self:addMountedDevice(k, false)
+                       end
                end
        end
 
@@ -120,7 +124,10 @@
 
                local addThisItem = true
                if v.onlyIfTrue or v.onlyIfFalse then
-                       if v.onlyIfTrue then
+                       if v.onlyIfTrue and v.onlyIfFalse then
+                               log:info('needs to return true for onlyIfTrue 
and false for onlyIfFalse to add this menu item')
+                               addThisItem = 
appletManager:callService(v.onlyIfTrue, devName) and not 
appletManager:callService(v.onlyIfFalse, devName)
+                       elseif v.onlyIfTrue then
                                log:info('onlyIfTrue method needs to return 
true to add this menu item')
                                addThisItem = 
appletManager:callService(v.onlyIfTrue, devName)
                        elseif v.onlyIfFalse then
@@ -738,6 +745,38 @@
        return false
 end
 
+
+function isReadOnlyMedia(self, devName)
+       local mounts = io.open("/proc/mounts", "r")
+       local isReadOnly = false
+       
+       if mounts == nil then
+               log:error("/proc/mounts could not be opened")
+               return nil
+       end
+
+       for line in mounts:lines() do
+               if string.match(line, "/media/" .. devName) then
+                       if string.match(line, "[^%d%a]ro[^%d%a]") then
+                               log:debug('/media/', devName, ' is read-only')
+                               isReadOnly = true
+                               break
+                       else
+                               log:debug('/media/', devName, ' is NOT 
read-only')
+                               break
+                       end
+               end
+       end
+       mounts:close()
+
+       return isReadOnly
+end
+
+function isWriteableMedia(self, ...)
+       return not self:isReadOnlyMedia(...)
+end
+
+
 function _mediaDirExists(self, devName)
        local dirExists = nil
        

Modified: 
7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/MediaManager/MediaManagerMeta.lua
URL: 
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/MediaManager/MediaManagerMeta.lua?rev=8719&r1=8718&r2=8719&view=diff
==============================================================================
--- 
7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/MediaManager/MediaManagerMeta.lua
 (original)
+++ 
7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/MediaManager/MediaManagerMeta.lua
 Wed Apr 21 11:17:35 2010
@@ -30,6 +30,8 @@
        meta:registerService("udevEventHandler")
        meta:registerService("mmConfirmEject")
        meta:registerService("mmGetMountedDevices")
+       meta:registerService("isReadOnlyMedia")
+       meta:registerService("isWriteableMedia")
 end
 
 function configureApplet(meta)

Modified: 
7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeCenter/SqueezeCenterMeta.lua
URL: 
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeCenter/SqueezeCenterMeta.lua?rev=8719&r1=8718&r2=8719&view=diff
==============================================================================
--- 
7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeCenter/SqueezeCenterMeta.lua
 (original)
+++ 
7.5/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeCenter/SqueezeCenterMeta.lua
 Wed Apr 21 11:17:35 2010
@@ -41,6 +41,7 @@
                serviceMethod = "mmSqueezeCenterMenu",
                menuText      = meta:string('SQUEEZEBOX_SERVER'),
                onlyIfTrue    = "isBuiltInSCRunning",
+               onlyIfFalse   = "isReadOnlyMedia",
                weight        = 20,
                }
        )

_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/jive-checkins

Reply via email to