From fec9e799e4b4fd11d651f03ef91361e03175b693 Mon Sep 17 00:00:00 2001
From: Owen <owenca@users.noreply.github.com>
Date: Fri, 8 Dec 2017 06:38:31 +0000
Subject: [PATCH 4/4] Add PlaylistTrackCount and PlaylistTrackTitle to
scripting
PlaylistTrackCount returns the number of tacks in Playlist,
and PlaylistTrackTitle the title of a numbered track.
Also, remove B_TRANSLATE macros in scripting properties
---
src/apps/mediaplayer/MainWin.cpp | 102 ++++++++++++++++++++++-----------------
1 file changed, 59 insertions(+), 43 deletions(-)
diff --git a/src/apps/mediaplayer/MainWin.cpp b/src/apps/mediaplayer/MainWin.cpp
index b63b193..b338404 100644
a
|
b
|
enum {
|
122 | 122 | |
123 | 123 | |
124 | 124 | static property_info sPropertyInfo[] = { |
125 | | { B_TRANSLATE("Next"), { B_EXECUTE_PROPERTY }, |
| 125 | { "Next", { B_EXECUTE_PROPERTY }, |
126 | 126 | { B_DIRECT_SPECIFIER, 0 }, |
127 | | B_TRANSLATE("Skip to the next track."), 0 |
| 127 | "Skip to the next track.", 0 |
128 | 128 | }, |
129 | | { B_TRANSLATE("Prev"), { B_EXECUTE_PROPERTY }, |
| 129 | { "Prev", { B_EXECUTE_PROPERTY }, |
130 | 130 | { B_DIRECT_SPECIFIER, 0 }, |
131 | | B_TRANSLATE("Skip to the previous track."), 0 |
| 131 | "Skip to the previous track.", 0 |
132 | 132 | }, |
133 | | { B_TRANSLATE("Play"), { B_EXECUTE_PROPERTY }, |
| 133 | { "Play", { B_EXECUTE_PROPERTY }, |
134 | 134 | { B_DIRECT_SPECIFIER, 0 }, |
135 | | B_TRANSLATE("Start playing."), 0 |
| 135 | "Start playing.", 0 |
136 | 136 | }, |
137 | | { B_TRANSLATE("Stop"), { B_EXECUTE_PROPERTY }, |
| 137 | { "Stop", { B_EXECUTE_PROPERTY }, |
138 | 138 | { B_DIRECT_SPECIFIER, 0 }, |
139 | | B_TRANSLATE("Stop playing."), 0 |
| 139 | "Stop playing.", 0 |
140 | 140 | }, |
141 | | { B_TRANSLATE("Pause"), { B_EXECUTE_PROPERTY }, |
| 141 | { "Pause", { B_EXECUTE_PROPERTY }, |
142 | 142 | { B_DIRECT_SPECIFIER, 0 }, |
143 | | B_TRANSLATE("Pause playback."), 0 |
| 143 | "Pause playback.", 0 |
144 | 144 | }, |
145 | | { B_TRANSLATE("TogglePlaying"), { B_EXECUTE_PROPERTY }, |
| 145 | { "TogglePlaying", { B_EXECUTE_PROPERTY }, |
146 | 146 | { B_DIRECT_SPECIFIER, 0 }, |
147 | | B_TRANSLATE("Toggle pause/play."), 0 |
| 147 | "Toggle pause/play.", 0 |
148 | 148 | }, |
149 | | { B_TRANSLATE("Mute"), { B_EXECUTE_PROPERTY }, |
| 149 | { "Mute", { B_EXECUTE_PROPERTY }, |
150 | 150 | { B_DIRECT_SPECIFIER, 0 }, |
151 | | B_TRANSLATE("Toggle mute."), 0 |
| 151 | "Toggle mute.", 0 |
152 | 152 | }, |
153 | | { B_TRANSLATE("Volume"), { B_GET_PROPERTY, B_SET_PROPERTY, 0 }, |
| 153 | { "Volume", { B_GET_PROPERTY, B_SET_PROPERTY, 0 }, |
154 | 154 | { B_DIRECT_SPECIFIER, 0 }, |
155 | | B_TRANSLATE("Gets/sets the volume (0.0-2.0)."), 0, |
| 155 | "Gets/sets the volume (0.0-2.0).", 0, |
156 | 156 | { B_FLOAT_TYPE } |
157 | 157 | }, |
158 | | { B_TRANSLATE("URI"), { B_GET_PROPERTY, 0 }, |
| 158 | { "URI", { B_GET_PROPERTY, 0 }, |
159 | 159 | { B_DIRECT_SPECIFIER, 0 }, |
160 | | B_TRANSLATE("Gets the URI of the currently playing item."), 0, |
| 160 | "Gets the URI of the currently playing item.", 0, |
161 | 161 | { B_STRING_TYPE } |
162 | 162 | }, |
163 | | { B_TRANSLATE("ToggleFullscreen"), { B_EXECUTE_PROPERTY }, |
| 163 | { "ToggleFullscreen", { B_EXECUTE_PROPERTY }, |
164 | 164 | { B_DIRECT_SPECIFIER, 0 }, |
165 | | B_TRANSLATE("Toggle fullscreen."), 0 |
| 165 | "Toggle fullscreen.", 0 |
166 | 166 | }, |
167 | | { B_TRANSLATE("Duration"), { B_GET_PROPERTY, 0 }, |
| 167 | { "Duration", { B_GET_PROPERTY, 0 }, |
168 | 168 | { B_DIRECT_SPECIFIER, 0 }, |
169 | | B_TRANSLATE("Gets the duration of the currently playing item " |
170 | | "in microseconds."), 0, |
| 169 | "Gets the duration of the currently playing item " |
| 170 | "in microseconds.", 0, |
171 | 171 | { B_INT64_TYPE } |
172 | 172 | }, |
173 | | { B_TRANSLATE("Position"), { B_GET_PROPERTY, B_SET_PROPERTY, 0 }, |
| 173 | { "Position", { B_GET_PROPERTY, B_SET_PROPERTY, 0 }, |
174 | 174 | { B_DIRECT_SPECIFIER, 0 }, |
175 | | B_TRANSLATE("Gets/sets the current playing position in microseconds."), |
| 175 | "Gets/sets the current playing position in microseconds.", |
176 | 176 | 0, { B_INT64_TYPE } |
177 | 177 | }, |
178 | | { B_TRANSLATE("Seek"), { B_SET_PROPERTY }, |
| 178 | { "Seek", { B_SET_PROPERTY }, |
179 | 179 | { B_DIRECT_SPECIFIER, 0 }, |
180 | | B_TRANSLATE("Seek by the specified amounts of microseconds."), 0, |
| 180 | "Seek by the specified amounts of microseconds.", 0, |
181 | 181 | { B_INT64_TYPE } |
182 | 182 | }, |
| 183 | { "PlaylistTrackCount", { B_GET_PROPERTY, 0 }, |
| 184 | { B_DIRECT_SPECIFIER, 0 }, |
| 185 | "Gets the number of tracks in Playlist.", 0, |
| 186 | { B_INT16_TYPE } |
| 187 | }, |
| 188 | { "PlaylistTrackTitle", { B_GET_PROPERTY, 0 }, |
| 189 | { B_INDEX_SPECIFIER, 0 }, |
| 190 | "Gets the title of the nth track in Playlist.", 0, |
| 191 | { B_STRING_TYPE } |
| 192 | }, |
183 | 193 | |
184 | 194 | { 0 } |
185 | 195 | }; |
… |
… |
MainWin::MessageReceived(BMessage* msg)
|
606 | 616 | break; |
607 | 617 | } |
608 | 618 | |
| 619 | case 13: |
| 620 | result = reply.AddInt16("result", fPlaylist->CountItems()); |
| 621 | break; |
| 622 | |
| 623 | case 14: |
| 624 | { |
| 625 | int32 i = specifier.GetInt32("index", 0); |
| 626 | if (i >= fPlaylist->CountItems()) { |
| 627 | result = B_NO_INIT; |
| 628 | break; |
| 629 | } |
| 630 | |
| 631 | BAutolock _(fPlaylist); |
| 632 | const PlaylistItem* item = fPlaylist->ItemAt(i); |
| 633 | result = item == NULL ? B_NO_INIT |
| 634 | : reply.AddString("result", item->Title()); |
| 635 | break; |
| 636 | } |
| 637 | |
609 | 638 | default: |
610 | 639 | return BWindow::MessageReceived(msg); |
611 | 640 | } |
… |
… |
MainWin::ResolveSpecifier(BMessage* message, int32 index, BMessage* specifier,
|
1300 | 1329 | int32 what, const char* property) |
1301 | 1330 | { |
1302 | 1331 | BPropertyInfo propertyInfo(sPropertyInfo); |
1303 | | switch (propertyInfo.FindMatch(message, index, specifier, what, property)) { |
1304 | | case 0: |
1305 | | case 1: |
1306 | | case 2: |
1307 | | case 3: |
1308 | | case 4: |
1309 | | case 5: |
1310 | | case 6: |
1311 | | case 7: |
1312 | | case 8: |
1313 | | case 9: |
1314 | | case 10: |
1315 | | case 11: |
1316 | | case 12: |
1317 | | return this; |
1318 | | } |
| 1332 | if (propertyInfo.FindMatch(message, index, specifier, what, property) |
| 1333 | < propertyInfo.CountProperties()) |
| 1334 | return this; |
1319 | 1335 | |
1320 | 1336 | return BWindow::ResolveSpecifier(message, index, specifier, what, property); |
1321 | 1337 | } |