Source file mpris_client_generic.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
open Lwt
open Mpris_interfaces

module Org_mpris_MediaPlayer2 =
struct
  open Org_mpris_MediaPlayer2


  let quit proxy =
    OBus_method.call m_Quit proxy ()

  let raise proxy =
    OBus_method.call m_Raise proxy ()

  let can_quit proxy =
    OBus_property.make p_CanQuit proxy

  let fullscreen proxy =
    OBus_property.make p_Fullscreen proxy

  let can_set_fullscreen proxy =
    OBus_property.make p_CanSetFullscreen proxy

  let can_raise proxy =
    OBus_property.make p_CanRaise proxy

  let has_track_list proxy =
    OBus_property.make p_HasTrackList proxy

  let identity proxy =
    OBus_property.make p_Identity proxy

  let desktop_entry proxy =
    OBus_property.make p_DesktopEntry proxy

  let supported_uri_schemes proxy =
    OBus_property.make p_SupportedUriSchemes proxy

  let supported_mime_types proxy =
    OBus_property.make p_SupportedMimeTypes proxy
end

module Org_mpris_MediaPlayer2_Player =
struct
  open Org_mpris_MediaPlayer2_Player


  let next proxy =
    OBus_method.call m_Next proxy ()

  let previous proxy =
    OBus_method.call m_Previous proxy ()

  let pause proxy =
    OBus_method.call m_Pause proxy ()

  let play_pause proxy =
    OBus_method.call m_PlayPause proxy ()

  let stop proxy =
    OBus_method.call m_Stop proxy ()

  let play proxy =
    OBus_method.call m_Play proxy ()

  let seek proxy ~offset =
    OBus_method.call m_Seek proxy offset

  let set_position proxy ~trackid ~position =
    let trackid = OBus_proxy.path trackid in
    OBus_method.call m_SetPosition proxy (trackid, position)

  let open_uri proxy ~uri =
    OBus_method.call m_OpenUri proxy uri

  let seeked proxy =
    OBus_signal.make s_Seeked proxy

  let can_control proxy =
    OBus_property.make p_CanControl proxy

  let can_go_next proxy =
    OBus_property.make p_CanGoNext proxy

  let can_go_previous proxy =
    OBus_property.make p_CanGoPrevious proxy

  let can_pause proxy =
    OBus_property.make p_CanPause proxy

  let can_play proxy =
    OBus_property.make p_CanPlay proxy

  let can_seek proxy =
    OBus_property.make p_CanSeek proxy

  let minimum_rate proxy =
    OBus_property.make p_MinimumRate proxy

  let maximum_rate proxy =
    OBus_property.make p_MaximumRate proxy

  let rate proxy =
    OBus_property.make p_Rate proxy

  let shuffle proxy =
    OBus_property.make p_Shuffle proxy

  let loop_status proxy =
    OBus_property.make p_LoopStatus proxy

  let playback_status proxy =
    OBus_property.make p_PlaybackStatus proxy

  let metadata proxy =
    OBus_property.make p_Metadata proxy

  let volume proxy =
    OBus_property.make p_Volume proxy

  let position proxy =
    OBus_property.make p_Position proxy
end

module Org_mpris_MediaPlayer2_Playlists =
struct
  open Org_mpris_MediaPlayer2_Playlists


  let activate_playlist proxy ~playlist_id =
    let playlist_id = OBus_proxy.path playlist_id in
    OBus_method.call m_ActivatePlaylist proxy playlist_id

  let get_playlists proxy ~index ~max_count ~order ~reverse_order =
    let index = Int32.of_int index in
    let max_count = Int32.of_int max_count in
    let%lwt (context, ret) = OBus_method.call_with_context m_GetPlaylists proxy (index, max_count, order, reverse_order) in
    let ret = List.map (fun (x1, x2, x3) ->
      (OBus_proxy.make ~peer:(OBus_context.sender context) ~path:x1, x2, x3)) ret in
    return ret

  let playlist_changed proxy =
    OBus_signal.map_with_context
      (fun context playlist ->
         let playlist = (fun (x1, x2, x3) ->
           (OBus_proxy.make ~peer:(OBus_context.sender context) ~path:x1, x2, x3)) playlist in
         playlist)
      (OBus_signal.make s_PlaylistChanged proxy)

  let playlist_count proxy =
    OBus_property.map_r
      (fun x -> Int32.to_int x)
      (OBus_property.make p_PlaylistCount proxy)

  let orderings proxy =
    OBus_property.make p_Orderings proxy

  let active_playlist proxy =
    OBus_property.map_r_with_context
      (fun context x -> (fun (x1, x2) -> (x1, (fun (x1, x2, x3) ->
        (OBus_proxy.make ~peer:(OBus_context.sender context) ~path:x1, x2, x3)) x2)) x)
      (OBus_property.make p_ActivePlaylist proxy)
end