#define __IMAGEINFO_H__
class CImageInfo : public CMediaInfo {
+public:
+ enum {
+ IMAGE_WIDTH,
+ IMAGE_HEIGHT,
+ IMAGE_ORIENTATION
+ };
+
private:
struct SImageInfo *m;
int Height(void);
int Orientation(void);
+ int GetInfo(int type);
+
bool Duplicate(CNameInfo *obj);
};
CMediaInfo() : m(0) {};
virtual ~CMediaInfo() {};
- bool Create(void);
+ virtual bool Create(void);
virtual void Destroy(void);
- bool Update(void);
+ virtual bool Update(void);
char *LocationTag(void);
time_t CreatedTime(void);
bool GetImageHandle(image_meta_h *image_h);
bool GetVideoHandle(video_meta_h *video_h);
+ virtual int GetInfo(int info) = 0;
+
bool SetMediaInfo(media_info_h media_h);
- bool Duplicate(CNameInfo *obj);
+ virtual bool Duplicate(CNameInfo *obj);
bool UpdateDb(void);
};
#define __VIDEOINFO_H__
class CVideoInfo : public CMediaInfo {
+public:
+ enum {
+ VIDEO_DURATION,
+ VIDEO_PLAYED_POSITION
+ };
+
private:
struct SVideoInfo *m;
int Duration(void);
int PlayedPosition(void);
+ int GetInfo(int type);
+
bool Duplicate(CNameInfo *obj);
};
EINA_LIST_FREE(m->medialist, obj) {
minfo = (CMediaInfo *)obj;
- if (minfo->Type() == E_MEDIA_IMAGE)
- ((CImageInfo *)minfo)->Destroy();
- else if (minfo->Type() == E_MEDIA_VIDEO)
- ((CVideoInfo *)minfo)->Destroy();
-
+ minfo->Destroy();
delete minfo;
}
nminfo = NULL;
- if (minfo->Type() == E_MEDIA_IMAGE) {
+ if (minfo->Type() == E_MEDIA_IMAGE)
nminfo = new CImageInfo;
- ((CImageInfo *)nminfo)->Create();
- ((CImageInfo *)nminfo)->Duplicate(minfo);
- } else if (minfo->Type() == E_MEDIA_VIDEO) {
+ else if (minfo->Type() == E_MEDIA_VIDEO)
nminfo = new CVideoInfo;
- ((CVideoInfo *)nminfo)->Create();
- ((CVideoInfo *)nminfo)->Duplicate(minfo);
- }
+
+ nminfo->Create();
+ nminfo->Duplicate(minfo);
m->medialist = eina_list_append(m->medialist, nminfo);
EINA_LIST_FREE(m->medialist, obj) {
minfo = (CMediaInfo *)obj;
- if (minfo->Type() == E_MEDIA_IMAGE)
- ((CImageInfo *)minfo)->Destroy();
- else if (minfo->Type() == E_MEDIA_VIDEO)
- ((CVideoInfo *)minfo)->Destroy();
-
+ minfo->Destroy();
delete minfo;
}
EINA_LIST_FOREACH(medialist, l, obj) {
minfo = (CMediaInfo *)obj;
- if (minfo->Type() == E_MEDIA_IMAGE) {
+ if (minfo->Type() == E_MEDIA_IMAGE)
nminfo = new CImageInfo;
- ((CImageInfo *)nminfo)->Create();
- ((CImageInfo *)nminfo)->Duplicate(minfo);
- } else if (minfo->Type() == E_MEDIA_VIDEO) {
+ else if (minfo->Type() == E_MEDIA_VIDEO)
nminfo = new CVideoInfo;
- ((CVideoInfo *)nminfo)->Create();
- ((CVideoInfo *)nminfo)->Duplicate(minfo);
- }
+
+ nminfo->Create();
+ nminfo->Duplicate(minfo);
m->medialist = eina_list_append(m->medialist, nminfo);
}
return m->orientation;
}
+int CImageInfo::GetInfo(int type)
+{
+ int info;
+
+ switch (type) {
+ case IMAGE_WIDTH:
+ info = Width();
+ break;
+ case IMAGE_HEIGHT:
+ info = Height();
+ break;
+ case IMAGE_ORIENTATION:
+ info = Orientation();
+ break;
+ default:
+ info = -1;
+ break;
+ }
+
+ return info;
+}
+
bool CImageInfo::m_SetWidth(int width)
{
if (!m)
EINA_LIST_FREE(medialist, obj) {
minfo = (CMediaInfo *)obj;
- if (minfo->Type() == E_MEDIA_IMAGE)
- ((CImageInfo *)minfo)->Destroy();
- else if (minfo->Type() == E_MEDIA_VIDEO)
- ((CVideoInfo *)minfo)->Destroy();
-
+ minfo->Destroy();
delete minfo;
}
EINA_LIST_FOREACH(m->folder_medialist, l, obj) {
minfo = (CMediaInfo *)obj;
- if (minfo->Type() == E_MEDIA_IMAGE) {
+ if (minfo->Type() == E_MEDIA_IMAGE)
nminfo = new CImageInfo;
- ((CImageInfo *)nminfo)->Create();
- ((CImageInfo *)nminfo)->Duplicate(minfo);
- } else if (minfo->Type() == E_MEDIA_VIDEO) {
+ else if (minfo->Type() == E_MEDIA_VIDEO)
nminfo = new CVideoInfo;
- ((CVideoInfo *)nminfo)->Create();
- ((CVideoInfo *)nminfo)->Duplicate(minfo);
- }
+
+ nminfo->Create();
+ nminfo->Duplicate(minfo);
m->medialist = eina_list_append(m->medialist, nminfo);
}
if (!minfo)
return false;
- if (!((CImageInfo *)minfo)->Update()) {
+ if (!minfo->Update()) {
_ERR("Get media info failed");
return false;
}
return false;
}
- if (type == MEDIA_CONTENT_TYPE_IMAGE) {
+ if (type == MEDIA_CONTENT_TYPE_IMAGE)
minfo = new CImageInfo;
- if (!minfo) {
- _ERR("MediaInfo Create Failed");
- return false;
- }
- ((CImageInfo *)minfo)->Create();
-
- minfo->SetMediaInfo(media_h);
-
- if (!((CImageInfo *)minfo)->Update())
- goto error;
- } else if (type == MEDIA_CONTENT_TYPE_VIDEO) {
+ else if (type == MEDIA_CONTENT_TYPE_VIDEO)
minfo = new CVideoInfo;
- if (!minfo) {
- _ERR("MediaInfo Create Failed");
- return false;
- }
- ((CVideoInfo *)minfo)->Create();
-
- minfo->SetMediaInfo(media_h);
- if (!((CVideoInfo *)minfo)->Update())
- goto error;
+ if (!minfo) {
+ _ERR("MediaInfo create failed");
+ return false;
}
- minfo->SetType(type);
-
- m->folder_medialist = eina_list_append(m->folder_medialist, minfo);
+ minfo->Create();
- return true;
+ minfo->SetMediaInfo(media_h);
+ minfo->SetType(type);
-error:
- _ERR("Erroring in reading mediadata");
+ if (!minfo->Update()) {
+ _ERR("MediaInfo update failed");
+ minfo->Destroy();
+ delete minfo;
- if (type == MEDIA_CONTENT_TYPE_IMAGE)
- ((CImageInfo *)minfo)->Destroy();
- else if (type == MEDIA_CONTENT_TYPE_VIDEO)
- ((CVideoInfo *)minfo)->Destroy();
+ return false;
+ }
- delete minfo;
+ m->folder_medialist = eina_list_append(m->folder_medialist, minfo);
- return false;
+ return true;
}
bool CMediadata::sm_CbEachFolderInfo(media_folder_h folder, void *dt)
int CVideoInfo::Duration(void)
{
if (!m)
- return false;
+ return -1;
return m->duration;
}
int CVideoInfo::PlayedPosition(void)
{
if (!m)
- return false;
+ return -1;
return m->played_position;
}
+int CVideoInfo::GetInfo(int type)
+{
+ int info;
+
+ switch (type) {
+ case VIDEO_DURATION:
+ info = Duration();
+ break;
+ case VIDEO_PLAYED_POSITION:
+ info = PlayedPosition();
+ break;
+ default:
+ info = -1;
+ break;
+ }
+
+ return info;
+}
+
bool CVideoInfo::m_SetDuration(int duration)
{
if (!m)
return strdup(display_name);
} else if (!strcmp(part, "elm.text.playtime")) {
- duration = ((CVideoInfo *)minfo)->Duration();
+ duration = minfo->GetInfo(CVideoInfo::VIDEO_DURATION);
return util_get_time_string(duration);
}
return strdup(display_name);
} else if (!strcmp(part, "elm.text.playtime")) {
- duration = ((CVideoInfo *)minfo)->Duration();
+ duration = minfo->GetInfo(CVideoInfo::VIDEO_DURATION);
return util_get_time_string(duration);
}