+ (when id
+ (comint-send-string (get-buffer-process "*squeeze*") (format "%s power ?\n" id))))
+
+(defun squeeze-control-volume-up (&optional id inc)
+ (interactive)
+ (unless inc (setq inc 5))
+ (unless id
+ (setq id (get-text-property (point) 'squeeze-playerid)))
+ (when id
+ (comint-send-string (get-buffer-process "*squeeze*") (format "%s mixer volume %+d\n" id inc))))
+
+(defun squeeze-control-volume-down (&optional id inc)
+ (interactive)
+ (unless inc (setq inc 5))
+ (unless id
+ (setq id (get-text-property (point) 'squeeze-playerid)))
+ (when id
+ (comint-send-string (get-buffer-process "*squeeze*") (format "%s mixer volume %+d\n" id (- inc)))))
+
+(defun squeeze-control-query-mixer-volume (&optional id)
+ (interactive)
+ (unless id
+ (setq id (get-text-property (point) 'squeeze-playerid)))
+ (when id
+ (comint-send-string (get-buffer-process "*squeeze*") (format "%s mixer volume ?\n" id))))
+
+(defun squeeze-control-player-face (player)
+ (let ((power (squeeze-player-power player)))
+ (cond ((string= power "1") 'squeeze-player-on-face)
+ ((string= power "0") 'squeeze-player-off-face)
+ (t 'squeeze-player-face))))
+
+(defun squeeze-control-listen ()
+ (comint-send-string (get-buffer-process "*squeeze*") (format "listen 1\n")))
+
+(defun squeeze-control-refresh ()
+ (interactive)
+ (let ((squeeze-control-inhibit-display t))
+ (squeeze-control-query-players)
+ (accept-process-output (get-buffer-process "*squeeze*"))
+ (dolist (player squeeze-players)
+ (squeeze-control-query-power (squeeze-player-playerid player))
+ (accept-process-output (get-buffer-process "*squeeze*"))
+ (squeeze-control-query-mixer-volume (squeeze-player-playerid player))
+ (accept-process-output (get-buffer-process "*squeeze*"))))
+ (squeeze-control-display-players))