apply content_retip_if_fail() for invalid parameters
[platform/core/api/media-content.git] / src / media_pvr.c
1  /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifdef _USE_TVPD_MODE
18 #include <media_info_private.h>
19 #include <media_util_private.h>
20 #include <media_pvr.h>
21
22
23 int media_pvr_get_media_count_from_db(filter_h filter, int *media_count)
24 {
25         content_retip_if_fail(media_count);
26
27         return _media_db_get_group_item_count(NULL, filter, MEDIA_GROUP_PVR, media_count);
28 }
29
30 int media_pvr_foreach_media_from_db(filter_h filter, media_pvr_cb callback, void *user_data)
31 {
32         content_retip_if_fail(callback);
33
34         return _media_db_get_pvr(filter, callback, user_data);
35 }
36
37 int media_pvr_destroy(media_pvr_h pvr)
38 {
39         int ret = MEDIA_CONTENT_ERROR_NONE;
40         media_pvr_s *_pvr = (media_pvr_s*)pvr;
41
42         content_retip_if_fail(pvr);
43
44         g_free(_pvr->media_id);
45         g_free(_pvr->storage_id);
46         g_free(_pvr->channel_name);
47         g_free(_pvr->channel_num);
48         g_free(_pvr->program_title);
49         g_free(_pvr->program_crid);
50         g_free(_pvr->guidance);
51         g_free(_pvr->synopsis);
52         g_free(_pvr->genre);
53         g_free(_pvr->language);
54         g_free(_pvr->path);
55         g_free(_pvr->modified_month);
56         g_free(_pvr->private_data);
57         g_free(_pvr);
58
59         return MEDIA_CONTENT_ERROR_NONE;
60 }
61
62 int media_pvr_clone(media_pvr_h *dst, media_pvr_h src)
63 {
64         media_pvr_s *_src = (media_pvr_s*)src;
65
66         content_retip_if_fail(dst);
67         content_retip_if_fail(src);
68
69         media_pvr_s *_dst = g_new0(media_pvr_s, 1);
70
71         _dst->media_id = g_strdup(_src->media_id);
72         _dst->channel_name = g_strdup(_src->channel_name);
73         _dst->channel_num = g_strdup(_src->channel_num);
74         _dst->program_title = g_strdup(_src->program_title);
75         _dst->program_crid = g_strdup(_src->program_crid);
76         _dst->guidance = g_strdup(_src->guidance);
77         _dst->synopsis = g_strdup(_src->synopsis);
78         _dst->genre = g_strdup(_src->genre);
79         _dst->language = g_strdup(_src->language);
80         _dst->path = g_strdup(_src->path);
81         _dst->storage_id = g_strdup(_src->storage_id);
82         _dst->modified_month = g_strdup(_src->modified_month);
83         _dst->private_data = g_strdup(_src->private_data);
84         _dst->duration = _src->duration;
85         _dst->timezone = _src->timezone;
86         _dst->ptc = _src->ptc;
87         _dst->major = _src->major;
88         _dst->minor = _src->minor;
89         _dst->channel_type = _src->channel_type;
90         _dst->program_num = _src->program_num;
91         _dst->service_profile = _src->service_profile;
92         _dst->timer_record = _src->timer_record;
93         _dst->series_record = _src->series_record;
94         _dst->hd = _src->hd;
95         _dst->subtitle = _src->subtitle;
96         _dst->ttx = _src->ttx;
97         _dst->ad = _src->ad;
98         _dst->hard_of_hearing_radio = _src->hard_of_hearing_radio;
99         _dst->data_service = _src->data_service;
100         _dst->content_lock = _src->content_lock;
101         _dst->embargo_time = _src->embargo_time;
102         _dst->expiry_time = _src->expiry_time;
103         _dst->size = _src->size;
104         _dst->parental_rating = _src->parental_rating;
105         _dst->start_time = _src->start_time;
106         _dst->program_start_time = _src->program_start_time;
107         _dst->program_end_time = _src->program_end_time;
108         _dst->program_date = _src->program_date;
109         _dst->content_watch = _src->content_watch;
110         _dst->has_audio_only = _src->has_audio_only;
111         _dst->is_local_record = _src->is_local_record;
112         _dst->resolution = _src->resolution;
113         _dst->aspectratio = _src->aspectratio;
114         _dst->sports_type = _src->sports_type;
115         _dst->guidance_length = _src->guidance_length;
116         _dst->tvmode = _src->tvmode;
117         _dst->play_count = _src->play_count;
118
119         *dst = (media_pvr_h)_dst;
120
121         return MEDIA_CONTENT_ERROR_NONE;
122 }
123
124 int media_pvr_get_pvr_from_db(const char *media_id, media_pvr_h *pvr)
125 {
126         int ret = MEDIA_CONTENT_ERROR_NONE;
127         char *select_query = NULL;
128         sqlite3_stmt *stmt = NULL;
129
130         content_retip_if_fail(STRING_VALID(media_id));
131         content_retip_if_fail(pvr);
132
133         select_query = sqlite3_mprintf(SELECT_PVR_FROM_PVR, media_id);
134
135         ret = _content_get_result(select_query, &stmt);
136         sqlite3_free(select_query);
137         content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
138
139         media_pvr_s *_pvr = NULL;
140
141         if (sqlite3_step(stmt) == SQLITE_ROW) {
142                 _pvr = g_new0(media_pvr_s, 1);
143
144                 _media_pvr_item_get_detail(stmt, (media_pvr_h)_pvr);
145
146                 *pvr = (media_info_h)_pvr;
147         } else {
148                 content_error("Nonexistent media_id[%s]", media_id);
149                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
150         }
151
152         SQLITE3_FINALIZE(stmt);
153
154         return ret;
155 }
156
157 int media_pvr_get_media_id(media_pvr_h pvr, char **media_id)
158 {
159         media_pvr_s *_pvr = (media_pvr_s*)pvr;
160
161         content_retip_if_fail(pvr);
162         content_retip_if_fail(media_id);
163
164         *media_id = g_strdup(_pvr->media_id);
165
166         return MEDIA_CONTENT_ERROR_NONE;
167 }
168
169 int media_pvr_get_channel_name(media_pvr_h pvr, char **channel_name)
170 {
171         media_pvr_s *_pvr = (media_pvr_s*)pvr;
172
173         content_retip_if_fail(pvr);
174         content_retip_if_fail(channel_name);
175
176         *channel_name = g_strdup(_pvr->channel_name);
177
178         return MEDIA_CONTENT_ERROR_NONE;
179 }
180
181 int media_pvr_get_channel_num(media_pvr_h pvr, char **channel_num)
182 {
183         media_pvr_s *_pvr = (media_pvr_s*)pvr;
184
185         content_retip_if_fail(pvr);
186         content_retip_if_fail(channel_num);
187
188         *channel_num = g_strdup(_pvr->channel_num);
189
190         return MEDIA_CONTENT_ERROR_NONE;
191 }
192
193 int media_pvr_get_program_title(media_pvr_h pvr, char **program_title)
194 {
195         media_pvr_s *_pvr = (media_pvr_s*)pvr;
196
197         content_retip_if_fail(pvr);
198         content_retip_if_fail(program_title);
199
200         *program_title = g_strdup(_pvr->program_title);
201
202         return MEDIA_CONTENT_ERROR_NONE;
203 }
204
205 int media_pvr_get_program_crid(media_pvr_h pvr, char **program_crid)
206 {
207         media_pvr_s *_pvr = (media_pvr_s*)pvr;
208
209         content_retip_if_fail(pvr);
210         content_retip_if_fail(program_crid);
211
212         *program_crid = g_strdup(_pvr->program_crid);
213
214         return MEDIA_CONTENT_ERROR_NONE;
215 }
216
217 int media_pvr_get_guidance(media_pvr_h pvr, char **guidance)
218 {
219         media_pvr_s *_pvr = (media_pvr_s*)pvr;
220
221         content_retip_if_fail(pvr);
222         content_retip_if_fail(guidance);
223
224         *guidance = g_strdup(_pvr->guidance);
225
226         return MEDIA_CONTENT_ERROR_NONE;
227 }
228
229 int media_pvr_get_synopsis(media_pvr_h pvr, char **synopsis)
230 {
231         media_pvr_s *_pvr = (media_pvr_s*)pvr;
232
233         content_retip_if_fail(pvr);
234         content_retip_if_fail(synopsis);
235
236         *synopsis = g_strdup(_pvr->synopsis);
237
238         return MEDIA_CONTENT_ERROR_NONE;
239 }
240
241 int media_pvr_get_genre(media_pvr_h pvr, char **genre)
242 {
243         media_pvr_s *_pvr = (media_pvr_s*)pvr;
244
245         content_retip_if_fail(pvr);
246         content_retip_if_fail(genre);
247
248         *genre = g_strdup(_pvr->genre);
249
250         return MEDIA_CONTENT_ERROR_NONE;
251 }
252
253 int media_pvr_get_language(media_pvr_h pvr, char **language)
254 {
255         media_pvr_s *_pvr = (media_pvr_s*)pvr;
256
257         content_retip_if_fail(pvr);
258         content_retip_if_fail(language);
259
260         *language = g_strdup(_pvr->language);
261
262         return MEDIA_CONTENT_ERROR_NONE;
263 }
264
265 int media_pvr_get_path(media_pvr_h pvr, char **path)
266 {
267         media_pvr_s *_pvr = (media_pvr_s*)pvr;
268
269         content_retip_if_fail(pvr);
270         content_retip_if_fail(path);
271
272         *path = g_strdup(_pvr->path);
273
274         return MEDIA_CONTENT_ERROR_NONE;
275 }
276
277 int media_pvr_get_storage_id(media_pvr_h pvr, char **storage_id)
278 {
279         media_pvr_s *_pvr = (media_pvr_s*)pvr;
280
281         content_retip_if_fail(pvr);
282         content_retip_if_fail(storage_id);
283
284         *storage_id = g_strdup(_pvr->storage_id);
285
286         return MEDIA_CONTENT_ERROR_NONE;
287 }
288
289 int media_pvr_get_size(media_pvr_h pvr, unsigned long long *size)
290 {
291         media_pvr_s *_pvr = (media_pvr_s*)pvr;
292
293         content_retip_if_fail(pvr);
294         content_retip_if_fail(size);
295
296         *size = _pvr->size;
297
298         return MEDIA_CONTENT_ERROR_NONE;
299 }
300
301 int media_pvr_get_timezone(media_pvr_h pvr, int *timezone)
302 {
303         media_pvr_s *_pvr = (media_pvr_s*)pvr;
304
305         content_retip_if_fail(pvr);
306         content_retip_if_fail(timezone);
307
308         *timezone = _pvr->timezone;
309
310         return MEDIA_CONTENT_ERROR_NONE;
311 }
312
313 int media_pvr_get_ptc(media_pvr_h pvr, int *ptc)
314 {
315         media_pvr_s *_pvr = (media_pvr_s*)pvr;
316
317         content_retip_if_fail(pvr);
318         content_retip_if_fail(ptc);
319
320         *ptc = _pvr->ptc;
321
322         return MEDIA_CONTENT_ERROR_NONE;
323 }
324
325 int media_pvr_get_major(media_pvr_h pvr, int *major)
326 {
327         media_pvr_s *_pvr = (media_pvr_s*)pvr;
328
329         content_retip_if_fail(pvr);
330         content_retip_if_fail(major);
331
332         *major = _pvr->major;
333
334         return MEDIA_CONTENT_ERROR_NONE;
335 }
336
337 int media_pvr_get_minor(media_pvr_h pvr, int *minor)
338 {
339         media_pvr_s *_pvr = (media_pvr_s*)pvr;
340
341         content_retip_if_fail(pvr);
342         content_retip_if_fail(minor);
343
344         *minor = _pvr->minor;
345
346         return MEDIA_CONTENT_ERROR_NONE;
347 }
348
349 int media_pvr_get_channel_type(media_pvr_h pvr, int *channel_type)
350 {
351         media_pvr_s *_pvr = (media_pvr_s*)pvr;
352
353         content_retip_if_fail(pvr);
354         content_retip_if_fail(channel_type);
355
356         *channel_type = _pvr->channel_type;
357
358         return MEDIA_CONTENT_ERROR_NONE;
359 }
360
361 int media_pvr_get_program_num(media_pvr_h pvr, int *program_num)
362 {
363         media_pvr_s *_pvr = (media_pvr_s*)pvr;
364
365         content_retip_if_fail(pvr);
366         content_retip_if_fail(program_num);
367
368         *program_num = _pvr->program_num;
369
370         return MEDIA_CONTENT_ERROR_NONE;
371 }
372
373 int media_pvr_get_service_profile(media_pvr_h pvr, unsigned int *service_profile)
374 {
375         media_pvr_s *_pvr = (media_pvr_s*)pvr;
376
377         content_retip_if_fail(pvr);
378         content_retip_if_fail(service_profile);
379
380         *service_profile = _pvr->service_profile;
381
382         return MEDIA_CONTENT_ERROR_NONE;
383 }
384
385 int media_pvr_get_duration(media_pvr_h pvr, int *duration)
386 {
387         media_pvr_s *_pvr = (media_pvr_s*)pvr;
388
389         content_retip_if_fail(pvr);
390         content_retip_if_fail(duration);
391
392         *duration = _pvr->duration;
393
394         return MEDIA_CONTENT_ERROR_NONE;
395 }
396
397 int media_pvr_get_embargo_time(media_pvr_h pvr, int *embargo_time)
398 {
399         media_pvr_s *_pvr = (media_pvr_s*)pvr;
400
401         content_retip_if_fail(pvr);
402         content_retip_if_fail(embargo_time);
403
404         *embargo_time = _pvr->embargo_time;
405
406         return MEDIA_CONTENT_ERROR_NONE;
407 }
408
409 int media_pvr_get_expiry_time(media_pvr_h pvr, int *expiry_time)
410 {
411         media_pvr_s *_pvr = (media_pvr_s*)pvr;
412
413         content_retip_if_fail(pvr);
414         content_retip_if_fail(expiry_time);
415
416         *expiry_time = _pvr->expiry_time;
417
418         return MEDIA_CONTENT_ERROR_NONE;
419 }
420
421 int media_pvr_get_parental_rating(media_pvr_h pvr, int *parental_rating)
422 {
423         media_pvr_s *_pvr = (media_pvr_s*)pvr;
424
425         content_retip_if_fail(pvr);
426         content_retip_if_fail(parental_rating);
427
428         *parental_rating = _pvr->parental_rating;
429
430         return MEDIA_CONTENT_ERROR_NONE;
431 }
432
433 int media_pvr_get_start_time(media_pvr_h pvr, int *start_time)
434 {
435         media_pvr_s *_pvr = (media_pvr_s*)pvr;
436
437         content_retip_if_fail(pvr);
438         content_retip_if_fail(start_time);
439
440         *start_time = _pvr->start_time;
441
442         return MEDIA_CONTENT_ERROR_NONE;
443 }
444
445 int media_pvr_get_program_start_time(media_pvr_h pvr, int *program_start_time)
446 {
447         media_pvr_s *_pvr = (media_pvr_s*)pvr;
448
449         content_retip_if_fail(pvr);
450         content_retip_if_fail(program_start_time);
451
452         *program_start_time = _pvr->program_start_time;
453
454         return MEDIA_CONTENT_ERROR_NONE;
455 }
456
457 int media_pvr_get_program_end_time(media_pvr_h pvr, int *end_time)
458 {
459         media_pvr_s *_pvr = (media_pvr_s*)pvr;
460
461         content_retip_if_fail(pvr);
462         content_retip_if_fail(end_time);
463
464         *end_time = _pvr->program_end_time;
465
466         return MEDIA_CONTENT_ERROR_NONE;
467 }
468
469 int media_pvr_get_program_date(media_pvr_h pvr, int *program_date)
470 {
471         media_pvr_s *_pvr = (media_pvr_s*)pvr;
472
473         content_retip_if_fail(pvr);
474         content_retip_if_fail(program_date);
475
476         *program_date = _pvr->program_date;
477
478         return MEDIA_CONTENT_ERROR_NONE;
479 }
480
481 int media_pvr_get_timer_record(media_pvr_h pvr, bool* timer_record)
482 {
483         media_pvr_s *_pvr = (media_pvr_s*)pvr;
484
485         content_retip_if_fail(pvr);
486         content_retip_if_fail(timer_record);
487
488         *timer_record = _pvr->timer_record;
489
490         return MEDIA_CONTENT_ERROR_NONE;
491 }
492
493 int media_pvr_get_series_record(media_pvr_h pvr, bool* series_record)
494 {
495         media_pvr_s *_pvr = (media_pvr_s*)pvr;
496
497         content_retip_if_fail(pvr);
498         content_retip_if_fail(series_record);
499
500         *series_record = _pvr->series_record;
501
502         return MEDIA_CONTENT_ERROR_NONE;
503 }
504
505 int media_pvr_get_hd(media_pvr_h pvr, int* hd)
506 {
507         media_pvr_s *_pvr = (media_pvr_s*)pvr;
508
509         content_retip_if_fail(pvr);
510         content_retip_if_fail(hd);
511
512         *hd = _pvr->hd;
513
514         return MEDIA_CONTENT_ERROR_NONE;
515 }
516
517 int media_pvr_get_subtitle(media_pvr_h pvr, bool* subtitle)
518 {
519         media_pvr_s *_pvr = (media_pvr_s*)pvr;
520
521         content_retip_if_fail(pvr);
522         content_retip_if_fail(subtitle);
523
524         *subtitle = _pvr->subtitle;
525
526         return MEDIA_CONTENT_ERROR_NONE;
527 }
528
529 int media_pvr_get_ttx(media_pvr_h pvr, bool* ttx)
530 {
531         media_pvr_s *_pvr = (media_pvr_s*)pvr;
532
533         content_retip_if_fail(pvr);
534         content_retip_if_fail(ttx);
535
536         *ttx = _pvr->ttx;
537
538         return MEDIA_CONTENT_ERROR_NONE;
539 }
540
541 int media_pvr_get_ad(media_pvr_h pvr, bool* ad)
542 {
543         media_pvr_s *_pvr = (media_pvr_s*)pvr;
544
545         content_retip_if_fail(pvr);
546         content_retip_if_fail(ad);
547
548         *ad = _pvr->ad;
549
550         return MEDIA_CONTENT_ERROR_NONE;
551 }
552
553 int media_pvr_get_hard_of_hearing_radio(media_pvr_h pvr, bool* hard_of_hearing_radio)
554 {
555         media_pvr_s *_pvr = (media_pvr_s*)pvr;
556
557         content_retip_if_fail(pvr);
558         content_retip_if_fail(hard_of_hearing_radio);
559
560         *hard_of_hearing_radio = _pvr->hard_of_hearing_radio;
561
562         return MEDIA_CONTENT_ERROR_NONE;
563 }
564
565 int media_pvr_get_data_service(media_pvr_h pvr, bool* data_service)
566 {
567         media_pvr_s *_pvr = (media_pvr_s*)pvr;
568
569         content_retip_if_fail(pvr);
570         content_retip_if_fail(data_service);
571
572         *data_service = _pvr->data_service;
573
574         return MEDIA_CONTENT_ERROR_NONE;
575 }
576
577 int media_pvr_get_content_lock(media_pvr_h pvr, bool* content_lock)
578 {
579         media_pvr_s *_pvr = (media_pvr_s*)pvr;
580
581         content_retip_if_fail(pvr);
582         content_retip_if_fail(content_lock);
583
584         *content_lock = _pvr->content_lock;
585
586         return MEDIA_CONTENT_ERROR_NONE;
587 }
588
589 int media_pvr_get_content_watch(media_pvr_h pvr, bool* content_watch)
590 {
591         media_pvr_s *_pvr = (media_pvr_s*)pvr;
592
593         content_retip_if_fail(pvr);
594         content_retip_if_fail(content_watch);
595
596         *content_watch = _pvr->content_watch;
597
598         return MEDIA_CONTENT_ERROR_NONE;
599 }
600
601 int media_pvr_get_has_audio_only(media_pvr_h pvr, bool* has_audio_only)
602 {
603         media_pvr_s *_pvr = (media_pvr_s*)pvr;
604
605         content_retip_if_fail(pvr);
606         content_retip_if_fail(has_audio_only);
607
608         *has_audio_only = _pvr->has_audio_only;
609
610         return MEDIA_CONTENT_ERROR_NONE;
611 }
612
613 int media_pvr_get_is_local_record(media_pvr_h pvr, bool* is_local_record)
614 {
615         media_pvr_s *_pvr = (media_pvr_s*)pvr;
616
617         content_retip_if_fail(pvr);
618         content_retip_if_fail(is_local_record);
619
620         *is_local_record = _pvr->is_local_record;
621
622         return MEDIA_CONTENT_ERROR_NONE;
623 }
624
625 int media_pvr_get_resolution(media_pvr_h pvr, media_pvr_resolution_e* resolution)
626 {
627         media_pvr_s *_pvr = (media_pvr_s*)pvr;
628
629         content_retip_if_fail(pvr);
630         content_retip_if_fail(resolution);
631
632         *resolution = _pvr->resolution;
633
634         return MEDIA_CONTENT_ERROR_NONE;
635 }
636
637 int media_pvr_get_aspectratio(media_pvr_h pvr, media_pvr_aspectratio_e* aspectratio)
638 {
639         media_pvr_s *_pvr = (media_pvr_s*)pvr;
640
641         content_retip_if_fail(pvr);
642         content_retip_if_fail(aspectratio);
643
644         *aspectratio = _pvr->aspectratio;
645
646         return MEDIA_CONTENT_ERROR_NONE;
647 }
648
649 int media_pvr_get_modified_month(media_pvr_h pvr, char **modified_month)
650 {
651         media_pvr_s *_pvr = (media_pvr_s*)pvr;
652
653         content_retip_if_fail(pvr);
654         content_retip_if_fail(modified_month);
655
656         *modified_month = g_strdup(_pvr->modified_month);
657
658         return MEDIA_CONTENT_ERROR_NONE;
659 }
660
661 int media_pvr_get_sports_type(media_pvr_h pvr, int* sports_type)
662 {
663         media_pvr_s *_pvr = (media_pvr_s*)pvr;
664
665         content_retip_if_fail(pvr);
666         content_retip_if_fail(sports_type);
667
668         *sports_type = _pvr->sports_type;
669
670         return MEDIA_CONTENT_ERROR_NONE;
671 }
672
673 int media_pvr_get_guidance_length(media_pvr_h pvr, int* guidance_length)
674 {
675         media_pvr_s *_pvr = (media_pvr_s*)pvr;
676
677         content_retip_if_fail(pvr);
678         content_retip_if_fail(guidance_length);
679
680         *guidance_length = _pvr->guidance_length;
681
682         return MEDIA_CONTENT_ERROR_NONE;
683 }
684
685 int media_pvr_get_tvmode(media_pvr_h pvr, int* tvmode)
686 {
687         media_pvr_s *_pvr = (media_pvr_s*)pvr;
688
689         content_retip_if_fail(pvr);
690         content_retip_if_fail(tvmode);
691
692         *tvmode = _pvr->tvmode;
693
694         return MEDIA_CONTENT_ERROR_NONE;
695 }
696
697 int media_pvr_get_play_count(media_pvr_h pvr, int* play_count)
698 {
699         media_pvr_s *_pvr = (media_pvr_s*)pvr;
700
701         content_retip_if_fail(pvr);
702         content_retip_if_fail(play_count);
703
704         *play_count = _pvr->play_count;
705
706         return MEDIA_CONTENT_ERROR_NONE;
707 }
708
709 int media_pvr_get_private_data(media_pvr_h pvr, char **private_data)
710 {
711         int ret = MEDIA_CONTENT_ERROR_NONE;
712         media_pvr_s *_pvr = (media_pvr_s*)pvr;
713
714         content_retip_if_fail(pvr);
715         content_retip_if_fail(private_data);
716
717         *private_data = g_strdup(_pvr->private_data);
718
719         return MEDIA_CONTENT_ERROR_NONE;
720 }
721
722 int media_pvr_get_highlight(media_pvr_h pvr, bool *highlight)
723 {
724         media_pvr_s *_pvr = (media_pvr_s*)pvr;
725
726         content_retip_if_fail(pvr);
727         content_retip_if_fail(highlight);
728
729         *highlight = _pvr->highlight;
730
731         return MEDIA_CONTENT_ERROR_NONE;
732 }
733
734 int media_pvr_set_play_count(media_pvr_h pvr, int play_count)
735 {
736         media_pvr_s *_pvr = (media_pvr_s*)pvr;
737
738         content_retip_if_fail(pvr);
739
740         _pvr->play_count = play_count;
741
742         return MEDIA_CONTENT_ERROR_NONE;
743 }
744
745 int media_pvr_set_program_title(media_pvr_h pvr, const char *program_title)
746 {
747         media_pvr_s *_pvr = (media_pvr_s*)pvr;
748
749         content_retip_if_fail(pvr);
750         content_retip_if_fail(STRING_VALID(program_title));
751
752         g_free(_pvr->program_title);
753         _pvr->program_title = g_strdup(program_title);
754
755         return MEDIA_CONTENT_ERROR_NONE;
756 }
757
758 int media_pvr_set_content_lock(media_pvr_h pvr, bool content_lock)
759 {
760         media_pvr_s *_pvr = (media_pvr_s*)pvr;
761
762         content_retip_if_fail(pvr);
763
764         _pvr->content_lock = content_lock;
765
766         return MEDIA_CONTENT_ERROR_NONE;
767 }
768
769 int media_pvr_set_content_watch(media_pvr_h pvr, bool content_watch)
770 {
771         media_pvr_s *_pvr = (media_pvr_s*)pvr;
772
773         content_retip_if_fail(pvr);
774
775         _pvr->content_watch = content_watch;
776
777         return MEDIA_CONTENT_ERROR_NONE;
778 }
779
780 int media_pvr_set_highlight(media_pvr_h pvr, bool highlight)
781 {
782         media_pvr_s *_pvr = (media_pvr_s*)pvr;
783
784         content_retip_if_fail(pvr);
785
786         _pvr->highlight = highlight;
787
788         return MEDIA_CONTENT_ERROR_NONE;
789 }
790
791 int media_pvr_update_to_db(media_pvr_h pvr)
792 {
793         int ret = MEDIA_CONTENT_ERROR_NONE;
794         media_pvr_s *_pvr = (media_pvr_s*)pvr;
795         char *update_query = NULL;
796
797         content_retip_if_fail(pvr);
798         content_retip_if_fail(STRING_VALID(_pvr->media_id));
799         content_retip_if_fail(STRING_VALID(_pvr->path));
800
801         update_query = sqlite3_mprintf(UPDATE_PVR_META_FROM_PVR, _pvr->program_title, _pvr->content_lock, _pvr->content_watch, _pvr->play_count, _pvr->highlight, _pvr->media_id);
802
803         ret = _content_query_sql(update_query);
804         sqlite3_free(update_query);
805
806         if (ret == MEDIA_CONTENT_ERROR_NONE)
807                 media_svc_update_pvr_info(_content_get_db_handle(), _pvr->path, _pvr->program_title, _pvr->content_lock);
808
809
810         return ret;
811 }
812
813 int media_pvr_group_foreach_media_from_db(const char *group_name, media_group_e group, filter_h filter, media_pvr_cb callback, void *user_data)
814 {
815         content_retip_if_fail(callback);
816         content_retvm_if((group < MEDIA_PVR_GROUP_DURATION) || (group >= MEDIA_GROUP_MAX), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid group");
817
818         return _media_db_get_pvr_group_item(group_name, filter, group, callback, user_data);
819 }
820
821 int media_pvr_set_is_local_record(const char *pvr_path, bool is_local_record)
822 {
823         int ret = MEDIA_CONTENT_ERROR_NONE;
824         char *update_query = NULL;
825         char storage_id[MEDIA_CONTENT_UUID_SIZE+1] = {0,};
826
827         content_retip_if_fail(pvr_path);
828
829         /*get the storage uuid*/
830         ret = media_svc_get_storage_id(_content_get_db_handle(), pvr_path, storage_id, tzplatform_getuid(TZ_USER_NAME));
831         content_retvm_if(ret != MS_MEDIA_ERR_NONE, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid pvr path[%s] error[%d]", pvr_path, ret);
832
833         content_error("storage uuid [%s]", storage_id);
834         update_query = sqlite3_mprintf(UPDATE_PVR_LOCAL_RECORD_PVR, is_local_record, pvr_path, storage_id);
835
836         ret = _content_query_sql(update_query);
837         sqlite3_free(update_query);
838
839         return ret;
840 }
841 #endif