1 /* 2 * Copyright (C) 2010 Jonathan Matthew <jonathan@d14n.org> 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * The Rhythmbox authors hereby grants permission for non-GPL compatible 10 * GStreamer plugins to be used and distributed together with GStreamer 11 * and Rhythmbox. This permission is above and beyond the permissions granted 12 * by the GPL license by which Rhythmbox is covered. If you modify this code 13 * you may extend this exception to your version of the code, but you are not 14 * obligated to do so. If you do not wish to do so, delete this exception 15 * statement from your version. 16 * 17 * This program is distributed in the hope that it will be useful, 18 * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 * GNU General Public License for more details. 21 * 22 * You should have received a copy of the GNU General Public License 23 * along with this program; if not, write to the Free Software 24 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 25 * 26 */ 27 28 #ifndef __RB_TRACK_TRANSFER_BATCH_H 29 #define __RB_TRACK_TRANSFER_BATCH_H 30 31 #include <gst/pbutils/encoding-target.h> 32 33 #include <rhythmdb/rhythmdb.h> 34 35 G_BEGIN_DECLS 36 37 #define RB_TYPE_TRACK_TRANSFER_BATCH (rb_track_transfer_batch_get_type ()) 38 #define RB_TRACK_TRANSFER_BATCH(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), RB_TYPE_TRACK_TRANSFER_BATCH, RBTrackTransferBatch)) 39 #define RB_TRACK_TRANSFER_BATCH_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), RB_TYPE_TRACK_TRANSFER_BATCH, RBTrackTransferBatchClass)) 40 #define RB_IS_TRACK_TRANSFER_BATCH(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), RB_TYPE_TRACK_TRANSFER_BATCH)) 41 #define RB_IS_TRACK_TRANSFER_BATCH_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), RB_TYPE_TRACK_TRANSFER_BATCH)) 42 #define RB_TRACK_TRANSFER_BATCH_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), RB_TYPE_TRACK_TRANSFER_BATCH, RBTrackTransferBatchClass)) 43 44 typedef struct _RBTrackTransferBatch RBTrackTransferBatch; 45 typedef struct _RBTrackTransferBatchClass RBTrackTransferBatchClass; 46 typedef struct _RBTrackTransferBatchPrivate RBTrackTransferBatchPrivate; 47 48 struct _RBTrackTransferBatch 49 { 50 GObject parent; 51 RBTrackTransferBatchPrivate *priv; 52 }; 53 54 struct _RBTrackTransferBatchClass 55 { 56 GObjectClass parent_class; 57 58 /* signals */ 59 void (*started) (RBTrackTransferBatch *batch); 60 void (*cancelled) (RBTrackTransferBatch *batch); 61 void (*complete) (RBTrackTransferBatch *batch); 62 63 char * (*get_dest_uri) (RBTrackTransferBatch *batch, 64 RhythmDBEntry *entry, 65 const char *mediatype, 66 const char *extension); 67 gboolean (*overwrite_prompt) (RBTrackTransferBatch *batch, 68 GFile *dest_file); 69 void (*track_started) (RBTrackTransferBatch *batch, 70 RhythmDBEntry *entry, 71 const char *dest); 72 void (*track_progress) (RBTrackTransferBatch *batch, 73 RhythmDBEntry *entry, 74 const char *dest, 75 int done, 76 int total, 77 double fraction); 78 void (*track_done) (RBTrackTransferBatch *batch, 79 RhythmDBEntry *entry, 80 const char *dest, 81 guint64 dest_size, 82 const char *mediatype, 83 GError *error); 84 }; 85 86 GType rb_track_transfer_batch_get_type (void); 87 88 RBTrackTransferBatch * rb_track_transfer_batch_new (GstEncodingTarget *target, 89 GSettings *settings, 90 GObject *source, 91 GObject *destination, 92 GObject *queue); 93 void rb_track_transfer_batch_add (RBTrackTransferBatch *batch, 94 RhythmDBEntry *entry); 95 96 gboolean rb_track_transfer_batch_check_profiles (RBTrackTransferBatch *batch, 97 GList **missing_plugin_profiles, 98 int *error_count); 99 100 void rb_track_transfer_batch_cancel (RBTrackTransferBatch *batch); 101 102 /* called by the transfer queue */ 103 void _rb_track_transfer_batch_start (RBTrackTransferBatch *batch); 104 105 void _rb_track_transfer_batch_cancel (RBTrackTransferBatch *batch); 106 107 void _rb_track_transfer_batch_continue (RBTrackTransferBatch *batch, 108 gboolean overwrite); 109 110 G_END_DECLS 111 112 #endif /* __RB_TRACK_TRANSFER_BATCH_H */ 113