X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Ffillmore%2Ffillmore%2Faudio_project.c;fp=src%2Ffillmore%2Ffillmore%2Faudio_project.c;h=6f8dd493488d210fd3f4f98874ea9d7b4673a29f;hb=a712cd772f4f3db8bed7037bb95c4de94767b230;hp=0000000000000000000000000000000000000000;hpb=2f0296582bf5d3f51db40d299f434fc8240ca6a5;p=fillmore diff --git a/src/fillmore/fillmore/audio_project.c b/src/fillmore/fillmore/audio_project.c new file mode 100644 index 0000000..6f8dd49 --- /dev/null +++ b/src/fillmore/fillmore/audio_project.c @@ -0,0 +1,786 @@ +/* audio_project.c generated by valac, the Vala compiler + * generated from audio_project.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + + +#define MODEL_TYPE_RECORD_FETCHER_COMPLETION (model_record_fetcher_completion_get_type ()) +#define MODEL_RECORD_FETCHER_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_RECORD_FETCHER_COMPLETION, ModelRecordFetcherCompletion)) +#define MODEL_RECORD_FETCHER_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_RECORD_FETCHER_COMPLETION, ModelRecordFetcherCompletionClass)) +#define MODEL_IS_RECORD_FETCHER_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_RECORD_FETCHER_COMPLETION)) +#define MODEL_IS_RECORD_FETCHER_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_RECORD_FETCHER_COMPLETION)) +#define MODEL_RECORD_FETCHER_COMPLETION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_RECORD_FETCHER_COMPLETION, ModelRecordFetcherCompletionClass)) + +typedef struct _ModelRecordFetcherCompletion ModelRecordFetcherCompletion; +typedef struct _ModelRecordFetcherCompletionClass ModelRecordFetcherCompletionClass; +typedef struct _ModelRecordFetcherCompletionPrivate ModelRecordFetcherCompletionPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) + +#define MODEL_TYPE_AUDIO_PROJECT (model_audio_project_get_type ()) +#define MODEL_AUDIO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProject)) +#define MODEL_AUDIO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProjectClass)) +#define MODEL_IS_AUDIO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_AUDIO_PROJECT)) +#define MODEL_IS_AUDIO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_AUDIO_PROJECT)) +#define MODEL_AUDIO_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProjectClass)) + +typedef struct _ModelAudioProject ModelAudioProject; +typedef struct _ModelAudioProjectClass ModelAudioProjectClass; +typedef struct _ModelAudioProjectPrivate ModelAudioProjectPrivate; +#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL))) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +#define _model_fetcher_completion_unref0(var) ((var == NULL) ? NULL : (var = (model_fetcher_completion_unref (var), NULL))) +#define _g_dir_close0(var) ((var == NULL) ? NULL : (var = (g_dir_close (var), NULL))) + +struct _ModelRecordFetcherCompletion { + ModelFetcherCompletion parent_instance; + ModelRecordFetcherCompletionPrivate * priv; +}; + +struct _ModelRecordFetcherCompletionClass { + ModelFetcherCompletionClass parent_class; +}; + +struct _ModelRecordFetcherCompletionPrivate { + ModelTrack* track; + ModelProject* project; + gint64 position; +}; + +struct _ModelAudioProject { + ModelProject parent_instance; + ModelAudioProjectPrivate * priv; +}; + +struct _ModelAudioProjectClass { + ModelProjectClass parent_class; +}; + +struct _ModelAudioProjectPrivate { + gboolean has_been_saved; +}; + + +static gpointer model_record_fetcher_completion_parent_class = NULL; +static gpointer model_audio_project_parent_class = NULL; + +GType model_record_fetcher_completion_get_type (void); +#define MODEL_RECORD_FETCHER_COMPLETION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_RECORD_FETCHER_COMPLETION, ModelRecordFetcherCompletionPrivate)) +enum { + MODEL_RECORD_FETCHER_COMPLETION_DUMMY_PROPERTY +}; +ModelRecordFetcherCompletion* model_record_fetcher_completion_new (ModelProject* project, ModelTrack* track, gint64 position); +ModelRecordFetcherCompletion* model_record_fetcher_completion_construct (GType object_type, ModelProject* project, ModelTrack* track, gint64 position); +static void model_record_fetcher_completion_real_complete (ModelFetcherCompletion* base, ModelFetcher* fetch); +static void model_record_fetcher_completion_finalize (ModelFetcherCompletion* obj); +GType model_audio_project_get_type (void); +#define MODEL_AUDIO_PROJECT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProjectPrivate)) +enum { + MODEL_AUDIO_PROJECT_DUMMY_PROPERTY +}; +static char* model_audio_project_generate_filename (ModelAudioProject* self); +static void _view_media_engine_on_callback_pulse_view_media_engine_callback_pulse (ViewMediaEngine* _sender, gpointer self); +void model_audio_project_on_record_completed (ModelAudioProject* self); +static void _model_audio_project_on_record_completed_view_media_engine_record_completed (ViewMediaEngine* _sender, gpointer self); +ModelAudioProject* model_audio_project_new (const char* filename, GError** error); +ModelAudioProject* model_audio_project_construct (GType object_type, const char* filename, GError** error); +static void model_audio_project_real_get_clip_time (ModelProject* base, ModelClipFile* f, TimeCode* result); +static char* model_audio_project_real_get_project_file (ModelProject* base); +#define RECORDER_NAME "Fillmore" +static char* model_audio_project_real_get_app_name (ModelProject* base); +static void model_audio_project_real_add_track (ModelProject* base, ModelTrack* track); +void model_audio_project_record (ModelAudioProject* self, ModelAudioTrack* track); +static void model_audio_project_real_load (ModelProject* base, const char* filename); +static void model_audio_project_move_audio_files (ModelAudioProject* self, const char* filename); +static void model_audio_project_real_save (ModelProject* base, const char* filename); +static void model_audio_project_finalize (GObject* obj); +static int _vala_strcmp0 (const char * str1, const char * str2); + + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 15 "audio_project.vala" +ModelRecordFetcherCompletion* model_record_fetcher_completion_construct (GType object_type, ModelProject* project, ModelTrack* track, gint64 position) { +#line 122 "audio_project.c" + ModelRecordFetcherCompletion* self; + ModelTrack* _tmp0_; + ModelProject* _tmp1_; +#line 15 "audio_project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (project), NULL); +#line 15 "audio_project.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 16 "audio_project.vala" + self = (ModelRecordFetcherCompletion*) model_fetcher_completion_construct (object_type); +#line 17 "audio_project.vala" + self->priv->track = (_tmp0_ = _g_object_ref0 (track), _g_object_unref0 (self->priv->track), _tmp0_); +#line 18 "audio_project.vala" + self->priv->project = (_tmp1_ = _g_object_ref0 (project), _g_object_unref0 (self->priv->project), _tmp1_); +#line 19 "audio_project.vala" + self->priv->position = position; +#line 138 "audio_project.c" + return self; +} + + +#line 15 "audio_project.vala" +ModelRecordFetcherCompletion* model_record_fetcher_completion_new (ModelProject* project, ModelTrack* track, gint64 position) { +#line 15 "audio_project.vala" + return model_record_fetcher_completion_construct (MODEL_TYPE_RECORD_FETCHER_COMPLETION, project, track, position); +#line 147 "audio_project.c" +} + + +#line 22 "audio_project.vala" +static void model_record_fetcher_completion_real_complete (ModelFetcherCompletion* base, ModelFetcher* fetch) { +#line 153 "audio_project.c" + ModelRecordFetcherCompletion * self; + char* _tmp0_; + ModelClip* _tmp1_; + ModelClip* the_clip; + self = MODEL_RECORD_FETCHER_COMPLETION (base); +#line 22 "audio_project.vala" + g_return_if_fail (MODEL_IS_FETCHER (fetch)); +#line 23 "audio_project.vala" + MODEL_FETCHER_COMPLETION_CLASS (model_record_fetcher_completion_parent_class)->complete (MODEL_FETCHER_COMPLETION (self), fetch); +#line 24 "audio_project.vala" + the_clip = (_tmp1_ = model_clip_new (fetch->clipfile, MODEL_MEDIA_TYPE_AUDIO, _tmp0_ = isolate_filename (fetch->clipfile->filename), (gint64) 0, (gint64) 0, model_clip_file_get_length (fetch->clipfile), FALSE), _g_free0 (_tmp0_), _tmp1_); +#line 26 "audio_project.vala" + model_undo_manager_start_transaction (self->priv->project->undo_manager, "Record"); +#line 27 "audio_project.vala" + model_track_append_at_time (self->priv->track, the_clip, self->priv->position, TRUE); +#line 28 "audio_project.vala" + model_undo_manager_end_transaction (self->priv->project->undo_manager, "Record"); +#line 171 "audio_project.c" + _g_object_unref0 (the_clip); +} + + +static void model_record_fetcher_completion_class_init (ModelRecordFetcherCompletionClass * klass) { + model_record_fetcher_completion_parent_class = g_type_class_peek_parent (klass); + MODEL_FETCHER_COMPLETION_CLASS (klass)->finalize = model_record_fetcher_completion_finalize; + g_type_class_add_private (klass, sizeof (ModelRecordFetcherCompletionPrivate)); + MODEL_FETCHER_COMPLETION_CLASS (klass)->complete = model_record_fetcher_completion_real_complete; +} + + +static void model_record_fetcher_completion_instance_init (ModelRecordFetcherCompletion * self) { + self->priv = MODEL_RECORD_FETCHER_COMPLETION_GET_PRIVATE (self); +} + + +static void model_record_fetcher_completion_finalize (ModelFetcherCompletion* obj) { + ModelRecordFetcherCompletion * self; + self = MODEL_RECORD_FETCHER_COMPLETION (obj); + _g_object_unref0 (self->priv->track); + _g_object_unref0 (self->priv->project); + MODEL_FETCHER_COMPLETION_CLASS (model_record_fetcher_completion_parent_class)->finalize (obj); +} + + +GType model_record_fetcher_completion_get_type (void) { + static volatile gsize model_record_fetcher_completion_type_id__volatile = 0; + if (g_once_init_enter (&model_record_fetcher_completion_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelRecordFetcherCompletionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_record_fetcher_completion_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelRecordFetcherCompletion), 0, (GInstanceInitFunc) model_record_fetcher_completion_instance_init, NULL }; + GType model_record_fetcher_completion_type_id; + model_record_fetcher_completion_type_id = g_type_register_static (MODEL_TYPE_FETCHER_COMPLETION, "ModelRecordFetcherCompletion", &g_define_type_info, 0); + g_once_init_leave (&model_record_fetcher_completion_type_id__volatile, model_record_fetcher_completion_type_id); + } + return model_record_fetcher_completion_type_id__volatile; +} + + +#line 75 "marina.vapi" +static void _view_media_engine_on_callback_pulse_view_media_engine_callback_pulse (ViewMediaEngine* _sender, gpointer self) { +#line 212 "audio_project.c" + view_media_engine_on_callback_pulse (self); +} + + +#line 92 "audio_project.vala" +static void _model_audio_project_on_record_completed_view_media_engine_record_completed (ViewMediaEngine* _sender, gpointer self) { +#line 219 "audio_project.c" + model_audio_project_on_record_completed (self); +} + + +#line 35 "audio_project.vala" +ModelAudioProject* model_audio_project_construct (GType object_type, const char* filename, GError** error) { +#line 226 "audio_project.c" + ModelAudioProject * self; +#line 36 "audio_project.vala" + self = (ModelAudioProject*) model_project_construct (object_type, filename, FALSE, error); +#line 38 "audio_project.vala" + if (self != NULL) { +#line 39 "audio_project.vala" + self->priv->has_been_saved = filename != NULL; +#line 40 "audio_project.vala" + if (!self->priv->has_been_saved) { +#line 236 "audio_project.c" + char* _tmp1_; + char* *_tmp0_; +#line 41 "audio_project.vala" + _tmp0_ = &MODEL_PROJECT (self)->project_file; +#line 41 "audio_project.vala" + (*_tmp0_) = (_tmp1_ = model_audio_project_generate_filename (self), _g_free0 ((*_tmp0_)), _tmp1_); +#line 243 "audio_project.c" + } +#line 43 "audio_project.vala" + g_signal_connect_object (MODEL_PROJECT (self)->media_engine, "callback-pulse", (GCallback) _view_media_engine_on_callback_pulse_view_media_engine_callback_pulse, MODEL_PROJECT (self)->media_engine, 0); +#line 44 "audio_project.vala" + g_signal_connect_object (MODEL_PROJECT (self)->media_engine, "record-completed", (GCallback) _model_audio_project_on_record_completed_view_media_engine_record_completed, self, 0); +#line 249 "audio_project.c" + } + return self; +} + + +#line 35 "audio_project.vala" +ModelAudioProject* model_audio_project_new (const char* filename, GError** error) { +#line 35 "audio_project.vala" + return model_audio_project_construct (MODEL_TYPE_AUDIO_PROJECT, filename, error); +#line 259 "audio_project.c" +} + + +#line 48 "audio_project.vala" +static void model_audio_project_real_get_clip_time (ModelProject* base, ModelClipFile* f, TimeCode* result) { +#line 265 "audio_project.c" + ModelAudioProject * self; + TimeCode _tmp0_ = {0}; + TimeCode t; + self = MODEL_AUDIO_PROJECT (base); +#line 48 "audio_project.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (f)); +#line 49 "audio_project.vala" + t = (_tmp0_); +#line 51 "audio_project.vala" + time_code_get_from_length (&t, model_clip_file_get_length (f)); +#line 276 "audio_project.c" + *result = t; +#line 52 "audio_project.vala" + return; +#line 280 "audio_project.c" +} + + +#line 55 "audio_project.vala" +static char* model_audio_project_real_get_project_file (ModelProject* base) { +#line 286 "audio_project.c" + ModelAudioProject * self; + char* result = NULL; + self = MODEL_AUDIO_PROJECT (base); +#line 56 "audio_project.vala" + if (!self->priv->has_been_saved) { +#line 292 "audio_project.c" + result = NULL; +#line 57 "audio_project.vala" + return result; +#line 296 "audio_project.c" + } else { + result = MODEL_PROJECT_CLASS (model_audio_project_parent_class)->get_project_file (MODEL_PROJECT (self)); +#line 59 "audio_project.vala" + return result; +#line 301 "audio_project.c" + } +} + + +#line 2153 "glib-2.0.vapi" +static void g_time_local (time_t time, struct tm* result) { +#line 308 "audio_project.c" + struct tm _result_ = {0}; +#line 2155 "glib-2.0.vapi" + localtime_r (&time, &_result_); +#line 312 "audio_project.c" + *result = _result_; +#line 2156 "glib-2.0.vapi" + return; +#line 316 "audio_project.c" +} + + +#line 2159 "glib-2.0.vapi" +static char* g_time_to_string (struct tm *self) { +#line 322 "audio_project.c" + char* result = NULL; + result = g_strdup_printf ("%04d-%02d-%02d %02d:%02d:%02d", (*self).tm_year + 1900, (*self).tm_mon + 1, (*self).tm_mday, (*self).tm_hour, (*self).tm_min, (*self).tm_sec); +#line 2160 "glib-2.0.vapi" + return result; +#line 327 "audio_project.c" +} + + +#line 1148 "glib-2.0.vapi" +static char* string_replace (const char* self, const char* old, const char* replacement) { +#line 333 "audio_project.c" + char* result = NULL; + GError * _inner_error_; +#line 1148 "glib-2.0.vapi" + g_return_val_if_fail (self != NULL, NULL); +#line 1148 "glib-2.0.vapi" + g_return_val_if_fail (old != NULL, NULL); +#line 1148 "glib-2.0.vapi" + g_return_val_if_fail (replacement != NULL, NULL); +#line 342 "audio_project.c" + _inner_error_ = NULL; + { + char* _tmp0_; + GRegex* _tmp1_; + GRegex* regex; + char* _tmp2_; +#line 1150 "glib-2.0.vapi" + regex = (_tmp1_ = g_regex_new (_tmp0_ = g_regex_escape_string (old, -1), 0, 0, &_inner_error_), _g_free0 (_tmp0_), _tmp1_); +#line 351 "audio_project.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_REGEX_ERROR) { + goto __catch0_g_regex_error; + } + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } +#line 1151 "glib-2.0.vapi" + _tmp2_ = g_regex_replace_literal (regex, self, (gssize) (-1), 0, replacement, 0, &_inner_error_); +#line 362 "audio_project.c" + if (_inner_error_ != NULL) { + _g_regex_unref0 (regex); + if (_inner_error_->domain == G_REGEX_ERROR) { + goto __catch0_g_regex_error; + } + _g_regex_unref0 (regex); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } + result = _tmp2_; + _g_regex_unref0 (regex); +#line 1151 "glib-2.0.vapi" + return result; +#line 377 "audio_project.c" + } + goto __finally0; + __catch0_g_regex_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 1153 "glib-2.0.vapi" + g_assert_not_reached (); +#line 388 "audio_project.c" + _g_error_free0 (e); + } + } + __finally0: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } +} + + +#line 63 "audio_project.vala" +static char* model_audio_project_generate_filename (ModelAudioProject* self) { +#line 403 "audio_project.c" + char* result = NULL; + struct tm _tmp0_ = {0}; + struct tm now; + char* timestring; + char* _tmp1_; + char* pathname; + char* filename; +#line 63 "audio_project.vala" + g_return_val_if_fail (MODEL_IS_AUDIO_PROJECT (self), NULL); +#line 64 "audio_project.vala" + now = (g_time_local (time (NULL), &_tmp0_), _tmp0_); +#line 65 "audio_project.vala" + timestring = g_time_to_string (&now); +#line 66 "audio_project.vala" + timestring = (_tmp1_ = string_replace (timestring, ":", "_"), _g_free0 (timestring), _tmp1_); +#line 67 "audio_project.vala" + pathname = g_build_filename (g_get_home_dir (), ".fillmore", timestring, NULL); +#line 69 "audio_project.vala" + g_mkdir (pathname, 0777); +#line 70 "audio_project.vala" + filename = g_strdup_printf ("%s.%s", timestring, "fill"); +#line 425 "audio_project.c" + result = g_build_filename (pathname, filename, NULL); + _g_free0 (timestring); + _g_free0 (pathname); + _g_free0 (filename); +#line 71 "audio_project.vala" + return result; +#line 432 "audio_project.c" +} + + +#line 74 "audio_project.vala" +static char* model_audio_project_real_get_app_name (ModelProject* base) { +#line 438 "audio_project.c" + ModelAudioProject * self; + char* result = NULL; + self = MODEL_AUDIO_PROJECT (base); + result = g_strdup (RECORDER_NAME); +#line 75 "audio_project.vala" + return result; +#line 445 "audio_project.c" +} + + +#line 78 "audio_project.vala" +static void model_audio_project_real_add_track (ModelProject* base, ModelTrack* track) { +#line 451 "audio_project.c" + ModelAudioProject * self; + self = MODEL_AUDIO_PROJECT (base); +#line 78 "audio_project.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 79 "audio_project.vala" + if (model_track_media_type (track) == MODEL_MEDIA_TYPE_VIDEO) { +#line 80 "audio_project.vala" + model_track_hide (track); +#line 81 "audio_project.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self)->inactive_tracks), track); +#line 82 "audio_project.vala" + return; +#line 464 "audio_project.c" + } +#line 85 "audio_project.vala" + MODEL_PROJECT_CLASS (model_audio_project_parent_class)->add_track (MODEL_PROJECT (self), track); +#line 468 "audio_project.c" +} + + +#line 88 "audio_project.vala" +void model_audio_project_record (ModelAudioProject* self, ModelAudioTrack* track) { +#line 88 "audio_project.vala" + g_return_if_fail (MODEL_IS_AUDIO_PROJECT (self)); +#line 88 "audio_project.vala" + g_return_if_fail (MODEL_IS_AUDIO_TRACK (track)); +#line 89 "audio_project.vala" + view_media_engine_record (MODEL_PROJECT (self)->media_engine, track); +#line 480 "audio_project.c" +} + + +#line 92 "audio_project.vala" +void model_audio_project_on_record_completed (ModelAudioProject* self) { +#line 486 "audio_project.c" + GError * _inner_error_; +#line 92 "audio_project.vala" + g_return_if_fail (MODEL_IS_AUDIO_PROJECT (self)); +#line 490 "audio_project.c" + _inner_error_ = NULL; +#line 93 "audio_project.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_record_completed"); +#line 494 "audio_project.c" + { + ModelRecordFetcherCompletion* _tmp0_; +#line 95 "audio_project.vala" + model_project_create_clip_fetcher (MODEL_PROJECT (self), MODEL_FETCHER_COMPLETION (_tmp0_ = model_record_fetcher_completion_new (MODEL_PROJECT (self), MODEL_TRACK (MODEL_PROJECT (self)->media_engine->record_track), model_clip_get_start (MODEL_PROJECT (self)->media_engine->record_region))), MODEL_PROJECT (self)->media_engine->record_region->clipfile->filename, &_inner_error_); +#line 499 "audio_project.c" + _model_fetcher_completion_unref0 (_tmp0_); + if (_inner_error_ != NULL) { + goto __catch1_g_error; + } + } + goto __finally1; + __catch1_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 98 "audio_project.vala" + g_signal_emit_by_name (MODEL_PROJECT (self), "error-occurred", "Could not complete recording", e->message); +#line 514 "audio_project.c" + _g_error_free0 (e); + } + } + __finally1: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +} + + +#line 102 "audio_project.vala" +static void model_audio_project_real_load (ModelProject* base, const char* filename) { +#line 529 "audio_project.c" + ModelAudioProject * self; + self = MODEL_AUDIO_PROJECT (base); +#line 103 "audio_project.vala" + self->priv->has_been_saved = filename != NULL; +#line 104 "audio_project.vala" + if (!self->priv->has_been_saved) { +#line 536 "audio_project.c" + char* _tmp1_; + char* *_tmp0_; +#line 105 "audio_project.vala" + _tmp0_ = &MODEL_PROJECT (self)->project_file; +#line 105 "audio_project.vala" + (*_tmp0_) = (_tmp1_ = model_audio_project_generate_filename (self), _g_free0 ((*_tmp0_)), _tmp1_); +#line 543 "audio_project.c" + } +#line 107 "audio_project.vala" + MODEL_PROJECT_CLASS (model_audio_project_parent_class)->load (MODEL_PROJECT (self), filename); +#line 547 "audio_project.c" +} + + +#line 110 "audio_project.vala" +static void model_audio_project_real_save (ModelProject* base, const char* filename) { +#line 553 "audio_project.c" + ModelAudioProject * self; + gboolean _tmp0_ = FALSE; + self = MODEL_AUDIO_PROJECT (base); +#line 111 "audio_project.vala" + if (!self->priv->has_been_saved) { +#line 111 "audio_project.vala" + _tmp0_ = filename != NULL; +#line 561 "audio_project.c" + } else { +#line 111 "audio_project.vala" + _tmp0_ = FALSE; +#line 565 "audio_project.c" + } +#line 111 "audio_project.vala" + if (_tmp0_) { +#line 569 "audio_project.c" + char* _tmp1_; +#line 112 "audio_project.vala" + model_audio_project_move_audio_files (self, filename); +#line 113 "audio_project.vala" + g_remove (MODEL_PROJECT (self)->project_file); +#line 114 "audio_project.vala" + g_rmdir (_tmp1_ = g_path_get_dirname (MODEL_PROJECT (self)->project_file)); +#line 577 "audio_project.c" + _g_free0 (_tmp1_); + } +#line 117 "audio_project.vala" + MODEL_PROJECT_CLASS (model_audio_project_parent_class)->save (MODEL_PROJECT (self), filename); +#line 118 "audio_project.vala" + self->priv->has_been_saved = TRUE; +#line 584 "audio_project.c" +} + + +#line 121 "audio_project.vala" +static void model_audio_project_move_audio_files (ModelAudioProject* self, const char* filename) { +#line 590 "audio_project.c" + GError * _inner_error_; + char* audio_path; + char* _tmp0_; + char* _tmp1_; + char* destination_path; + GDir* dir; + const char* base_name; +#line 121 "audio_project.vala" + g_return_if_fail (MODEL_IS_AUDIO_PROJECT (self)); +#line 121 "audio_project.vala" + g_return_if_fail (filename != NULL); +#line 602 "audio_project.c" + _inner_error_ = NULL; +#line 122 "audio_project.vala" + audio_path = model_project_get_audio_path (MODEL_PROJECT (self)); +#line 123 "audio_project.vala" + destination_path = (_tmp1_ = g_build_filename (_tmp0_ = g_path_get_dirname (filename), "audio files", NULL), _g_free0 (_tmp0_), _tmp1_); +#line 124 "audio_project.vala" + g_mkdir (destination_path, 0777); +#line 610 "audio_project.c" + dir = NULL; + { + GDir* _tmp2_; + GDir* _tmp3_; +#line 127 "audio_project.vala" + _tmp2_ = g_dir_open (audio_path, 0, &_inner_error_); +#line 617 "audio_project.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_FILE_ERROR) { + goto __catch2_g_file_error; + } + _g_free0 (audio_path); + _g_free0 (destination_path); + _g_dir_close0 (dir); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 127 "audio_project.vala" + dir = (_tmp3_ = _tmp2_, _g_dir_close0 (dir), _tmp3_); +#line 631 "audio_project.c" + } + goto __finally2; + __catch2_g_file_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + _g_free0 (audio_path); + _g_free0 (destination_path); + _g_dir_close0 (dir); +#line 129 "audio_project.vala" + return; +#line 646 "audio_project.c" + } + } + __finally2: + if (_inner_error_ != NULL) { + _g_free0 (audio_path); + _g_free0 (destination_path); + _g_dir_close0 (dir); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 133 "audio_project.vala" + base_name = NULL; +#line 660 "audio_project.c" + { + gboolean _tmp4_; +#line 134 "audio_project.vala" + _tmp4_ = TRUE; +#line 134 "audio_project.vala" + while (TRUE) { +#line 667 "audio_project.c" + char* destination; + char* _tmp5_; +#line 134 "audio_project.vala" + if (!_tmp4_) { +#line 138 "audio_project.vala" + if (!(base_name != NULL)) { +#line 138 "audio_project.vala" + break; +#line 676 "audio_project.c" + } + } +#line 134 "audio_project.vala" + _tmp4_ = FALSE; +#line 135 "audio_project.vala" + base_name = g_dir_read_name (dir); +#line 136 "audio_project.vala" + destination = g_build_filename (destination_path, base_name, NULL); +#line 137 "audio_project.vala" + g_rename (_tmp5_ = g_build_filename (audio_path, base_name, NULL), destination); +#line 687 "audio_project.c" + _g_free0 (_tmp5_); + _g_free0 (destination); + } + } + { + GeeIterator* _clip_file_it; + _clip_file_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self)->clipfiles)); +#line 141 "audio_project.vala" + while (TRUE) { +#line 697 "audio_project.c" + ModelClipFile* clip_file; + char* _tmp6_; + gboolean _tmp7_; +#line 141 "audio_project.vala" + if (!gee_iterator_next (_clip_file_it)) { +#line 141 "audio_project.vala" + break; +#line 705 "audio_project.c" + } +#line 141 "audio_project.vala" + clip_file = (ModelClipFile*) gee_iterator_get (_clip_file_it); +#line 142 "audio_project.vala" + if ((_tmp7_ = _vala_strcmp0 (_tmp6_ = g_path_get_dirname (clip_file->filename), audio_path) == 0, _g_free0 (_tmp6_), _tmp7_)) { +#line 711 "audio_project.c" + char* file_name; + char* destination; + char* _tmp8_; +#line 143 "audio_project.vala" + file_name = g_path_get_basename (clip_file->filename); +#line 144 "audio_project.vala" + destination = g_build_filename (destination_path, file_name, NULL); +#line 145 "audio_project.vala" + clip_file->filename = (_tmp8_ = g_strdup (destination), _g_free0 (clip_file->filename), _tmp8_); +#line 721 "audio_project.c" + _g_free0 (file_name); + _g_free0 (destination); + } + _g_object_unref0 (clip_file); + } + _g_object_unref0 (_clip_file_it); + } +#line 149 "audio_project.vala" + g_rmdir (audio_path); +#line 731 "audio_project.c" + _g_free0 (audio_path); + _g_free0 (destination_path); + _g_dir_close0 (dir); +} + + +static void model_audio_project_class_init (ModelAudioProjectClass * klass) { + model_audio_project_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelAudioProjectPrivate)); + MODEL_PROJECT_CLASS (klass)->get_clip_time = model_audio_project_real_get_clip_time; + MODEL_PROJECT_CLASS (klass)->get_project_file = model_audio_project_real_get_project_file; + MODEL_PROJECT_CLASS (klass)->get_app_name = model_audio_project_real_get_app_name; + MODEL_PROJECT_CLASS (klass)->add_track = model_audio_project_real_add_track; + MODEL_PROJECT_CLASS (klass)->load = model_audio_project_real_load; + MODEL_PROJECT_CLASS (klass)->save = model_audio_project_real_save; + G_OBJECT_CLASS (klass)->finalize = model_audio_project_finalize; +} + + +static void model_audio_project_instance_init (ModelAudioProject * self) { + self->priv = MODEL_AUDIO_PROJECT_GET_PRIVATE (self); +} + + +static void model_audio_project_finalize (GObject* obj) { + ModelAudioProject * self; + self = MODEL_AUDIO_PROJECT (obj); + G_OBJECT_CLASS (model_audio_project_parent_class)->finalize (obj); +} + + +GType model_audio_project_get_type (void) { + static volatile gsize model_audio_project_type_id__volatile = 0; + if (g_once_init_enter (&model_audio_project_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelAudioProjectClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_audio_project_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelAudioProject), 0, (GInstanceInitFunc) model_audio_project_instance_init, NULL }; + GType model_audio_project_type_id; + model_audio_project_type_id = g_type_register_static (MODEL_TYPE_PROJECT, "ModelAudioProject", &g_define_type_info, 0); + g_once_init_leave (&model_audio_project_type_id__volatile, model_audio_project_type_id); + } + return model_audio_project_type_id__volatile; +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + +