manageShares shares = withShared Nothing $ \cs->forever $
(viewSharesGrid cs shares -|| updateShares shares <<@ ArrangeVertical)
@! ()
+
updateShares :: [MTaskShare] -> Task BCValue
updateShares shares = anyTask (map updateS shares) <<@ ArrangeWithTabs
viewSharedInformation "Current value" [] (getSDSShare sh)
||- (
updateSharedInformation "New value" [] (getSDSShare sh)
- >>= \nv->allTasks (map getDevice sh.withDevice)
+ >>= \nv->allTasks (map (withDevice treturn) sh.withDevice)
>>= \devs->allTasks (map (sendMessages [MTUpd sh.identifier nv]) devs)
>>| treturn nv
)
viewSharesGrid cs sh = (allTasks [watch (getSDSShare m)\\m<-sh] <<@ NoUserInterface)
>&^ \st->flip (<<@) NoUserInterface $ whileUnchanged st $ \mshs->enterChoice "" [ChooseFromGrid id]
[{MTaskShare|ss&value=s}\\s<-fromJust mshs & ss<-sh]
-// >>* [OnValue (withValue $ \s->Just (set (Just s) cs))]
+ >>* [OnValue (withValue $ \s->Just (set (Just s) cs))]
@! fromJust mshs
viewShare :: MTaskShare -> Task BCValue