Commit 07b3a22a authored by W. Michael Petullo's avatar W. Michael Petullo
Browse files

Work on Vala code, including start of dacplisten test application


Signed-off-by: W. Michael Petullo's avatarW. Michael Petullo <mike@flyn.org>
parent 03eef01e
......@@ -27,27 +27,51 @@
G_BEGIN_DECLS
/**
* DACP_TYPE_PLAYER:
*
* The type for #DACPPlayer.
*/
#define DACP_TYPE_PLAYER (dacp_player_get_type ())
#define DACP_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DACP_TYPE_PLAYER, DACPPlayer))
#define IS_DACP_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DACP_TYPE_PLAYER))
#define DACP_PLAYER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), \
/**
* DACP_PLAYER:
* @o: Object which is subject to casting.
*
* Casts a #DACPPlayer or derived pointer into a (DACPPlayer *) pointer.
* Depending on the current debugging level, this function may invoke
* certain runtime checks to identify invalid casts.
*/
#define DACP_PLAYER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), DACP_TYPE_PLAYER, DACPPlayer))
/**
* IS_DACP_PLAYER:
* @o: Instance to check for being a %DACP_TYPE_PLAYER.
*
* Checks whether a valid #GTypeInstance pointer is of type %DACP_TYPE_PLAYER.
*/
#define IS_DACP_PLAYER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), DACP_TYPE_PLAYER))
/**
* DACP_PLAYER_GET_INTERFACE:
* @o: a #DACPPlayer instance.
*
* Get the insterface structure associated to a #DACPPlayer instance.
*
* Returns: pointer to object interface structure.
*/
#define DACP_PLAYER_GET_INTERFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), \
DACP_TYPE_PLAYER, DACPPlayerIface))
typedef struct _DACPPlayerIface DACPPlayerIface;
typedef struct _DACPPlayer DACPPlayer;
/**
* DACPRepeatState:
*/
typedef enum {
REPEAT_NONE = 0,
REPEAT_SINGLE = 1,
REPEAT_ALL = 2
} DACPRepeatState;
/**
* DACPPlayState:
*/
typedef enum {
PLAY_STOPPED = 2,
PLAY_PAUSED = 3,
......@@ -71,14 +95,56 @@ struct _DACPPlayerIface
GType dacp_player_get_type (void);
/**
* dacp_player_now_playing_record
* @player: a player
*/
DAAPRecord *dacp_player_now_playing_record (DACPPlayer *player);
/**
* dacp_player_now_playing_artwork
* @player: a player
* @width: width
* @height: height
*/
gchar *dacp_player_now_playing_artwork (DACPPlayer *player, guint width, guint height);
/**
* dacp_player_play_pause
* @player: a player
*/
void dacp_player_play_pause (DACPPlayer *player);
/**
* dacp_player_pause
* @player: a player
*/
void dacp_player_pause (DACPPlayer *player);
/**
* dacp_player_next_item
* @player: a player
*/
void dacp_player_next_item (DACPPlayer *player);
/**
* dacp_player_now_prev_item
* @player: a player
*/
void dacp_player_prev_item (DACPPlayer *player);
/**
* dacp_player_cue_clear
* @player: a player
*/
void dacp_player_cue_clear (DACPPlayer *player);
/**
* dacp_player_cue_play
* @player: a player
* @records : a list of records
* @index: an index
*/
void dacp_player_cue_play (DACPPlayer *player, GList *records, guint index);
G_END_DECLS
......
noinst_PROGRAMS = test-dmap-client test-dmap-server
if HAVE_VALA
noinst_PROGRAMS += dpapview dmapcopy dmapserve
noinst_PROGRAMS += dacplisten dpapview dmapcopy dmapserve
endif
test_dmap_client_SOURCES = \
......@@ -45,7 +45,11 @@ test_dmap_server_LDADD = \
$(MDNS_LIBS)
if MAINTAINER_MODE
BUILT_SOURCES = dpapview.stamp dmapcopy.stamp dmapserve.stamp
BUILT_SOURCES = dacplisten.stamp dpapview.stamp dmapcopy.stamp dmapserve.stamp
dacplisten.stamp: $(dacplisten_VALASOURCES)
$(VALAC) --vapidir=../vala --pkg gee-1.0 --pkg gstreamer-0.10 --pkg libdmapsharing-3.0 --pkg libsoup-2.4 --pkg glib-2.0 $^ -C
touch $@
dpapview.stamp: $(dpapview_VALASOURCES)
$(VALAC) --vapidir=../vala --pkg gee-1.0 --pkg gtk+-2.0 --pkg gstreamer-0.10 --pkg libdmapsharing-3.0 --pkg libsoup-2.4 --pkg glib-2.0 $^ -C
......@@ -61,6 +65,18 @@ dmapserve.stamp: $(dmapserve_VALASOURCES)
endif
if HAVE_VALA
dacplisten_VALASOURCES = \
dacplisten.vala
dacplisten_VALABUILTSOURCES = $(dacplisten_VALASOURCES:.vala=.c)
dacplisten_SOURCES = \
$(dacplisten_VALABUILTSOURCES)
dacplisten_LDADD = \
$(top_builddir)/libdmapsharing/libdmapsharing-3.0.la \
$(GEE_LIBS)
dpapview_VALASOURCES = \
dpapview.vala \
vala-dmap-db.vala \
......@@ -140,4 +156,3 @@ CLEANFILES = \
$(BUILT_SOURCES) \
$(dpapview_VALABUILTSOURCES)
endif
/* FILE: dacplisten.vala -- Listen to DACP remotes
* AUTHOR: W. Michael Petullo <mike@flyn.org>
* DATE: 06 January 2011
*
* Copyright (c) 2011 W. Michael Petullo <new@flyn.org>
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
private class ValaDACPPlayer : DACP.Player {
unowned DAAP.Record now_playing_record () {
stdout.printf ("Now playing record request received");
return null;
}
/* FIXME: This should return uint8[], modify dacp-player.h? */
unowned string now_playing_artwork (uint width, uint heigth) {
stdout.printf ("Now playing artwork request received");
return null;
}
void play_pause () {
stdout.printf ("Play/pause request received");
}
void pause () {
stdout.printf ("Pause request received");
}
void next_item () {
stdout.printf ("Next item request received");
}
void prev_item () {
stdout.printf ("Previous item request received");
}
void cue_clear () {
stdout.printf ("Cue clear request received");
}
void cue_play (GLib.List records, uint index) {
stdout.printf ("Cue play request received");
}
}
private class DACPListener {
}
int main (string[] args) {
var loop = new GLib.MainLoop ();
var dacplistener = new DACPListener ();
loop.run ();
return 0;
}
......@@ -35,7 +35,7 @@ private class DPAPViewer {
if (((ValaDPAPRecord) v).filesize > 0) {
string path;
int fd = GLib.FileUtils.open_tmp ("dpapview.XXXXXX", out path);
GLib.FileUtils.set_contents (path, (string) ((ValaDPAPRecord) v).thumbnail, ((ValaDPAPRecord) v).filesize);
GLib.FileUtils.set_data (path, ((ValaDPAPRecord) v).thumbnail);
GLib.FileUtils.close (fd);
pixbuf = new Gdk.Pixbuf.from_file (path);
GLib.FileUtils.unlink (path);
......
......@@ -26,7 +26,7 @@ private class ValaDPAPRecord : GLib.Object, DMAP.Record, DPAP.Record {
private string _aspect_ratio;
private string _format;
private string _comments;
private string _thumbnail;
private uint8[] _thumbnail;
private int _filesize;
private int _large_filesize;
private int _pixel_height;
......@@ -54,7 +54,7 @@ private class ValaDPAPRecord : GLib.Object, DMAP.Record, DPAP.Record {
set { _format = value; }
}
public string thumbnail {
public uint8[] thumbnail {
get { return _thumbnail; }
set { _thumbnail = value; }
}
......@@ -118,10 +118,9 @@ private class ValaDPAPRecord : GLib.Object, DMAP.Record, DPAP.Record {
_rating = 5;
_creation_date = 0;
size_t size;
string path = GLib.Environment.get_current_dir () + "/media/test.jpeg";
GLib.FileUtils.get_contents (path, out _thumbnail, out size);
_filesize = (int) size;
GLib.FileUtils.get_data (path, out _thumbnail);
_filesize = _thumbnail.length;
}
}
......
......@@ -35,6 +35,7 @@ libdmapsharing-@API_VERSION@.vapi: libdmapsharing-@API_VERSION@-daap.vapi libdma
sed 's/DPAP\.DMAPDb/DMAP.Db/g' | \
sed 's/DAAP\.DMAPRecordFactory/DMAP.RecordFactory/g' | \
sed 's/DPAP\.DMAPRecordFactory/DMAP.RecordFactory/g' | \
sed 's/DACP\.DAAPRecord/DAAP.Record/g' | \
cat > libdmapsharing-@API_VERSION@.vapi.tmp
mv libdmapsharing-@API_VERSION@.vapi.tmp libdmapsharing-@API_VERSION@.vapi
rm -f libdmapsharing-@API_VERSION@-daap.vapi libdmapsharing-@API_VERSION@-dacp.vapi libdmapsharing-@API_VERSION@-dmap.vapi libdmapsharing-@API_VERSION@-dpap.vapi
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment