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