--- /dev/null
+/*
+ * Copyright 2017 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __GALLERY_MODEL_GALLERY_H__
+#define __GALLERY_MODEL_GALLERY_H__
+
+#include "IMediaAlbum.h"
+
+namespace gallery {
+
+ class Gallery final : public ucl::NonCopyable {
+ public:
+ Gallery();
+ ~Gallery();
+
+ IMediaAlbum &getAlbum();
+ };
+}
+
+#endif // __GALLERY_MODEL_GALLERY_H__
--- /dev/null
+/*
+ * Copyright 2017 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __GALLERY_MODEL_I_MEDIA_ALBUM_H__
+#define __GALLERY_MODEL_I_MEDIA_ALBUM_H__
+
+#include "types.h"
+
+namespace gallery {
+
+ class IMediaAlbum : public ucl::Polymorphic {
+ public:
+ using EachCb = ucl::Delegate<void(MediaItemUPtr item)>;
+
+ public:
+ virtual ucl::Result forEachMedia(EachCb cb) const = 0;
+ };
+}
+
+#endif // __GALLERY_MODEL_I_MEDIA_ALBUM_H__
--- /dev/null
+/*
+ * Copyright 2017 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __GALLERY_MODEL_MEDIA_ITEM_H__
+#define __GALLERY_MODEL_MEDIA_ITEM_H__
+
+#include "types.h"
+
+namespace gallery {
+
+ class MediaItem : public ucl::Polymorphic {
+ public:
+ using ThumbnailPathGetCb =
+ std::function<void(ucl::Result, const std::string &path)>;
+
+ public:
+ MediaItem(media_info_h info);
+ virtual ~MediaItem();
+
+ bool isValid() const;
+ MediaType getType() const;
+
+ const std::string &getFilePath() const;
+
+ ucl::Result getThumbnailPath(ThumbnailPathGetCb cb) const;
+ void cancelThumbnailPathGet() const;
+
+ ucl::Result removeFile();
+
+ private:
+ const MediaType m_type;
+ media_info_h m_info;
+ mutable ThumbnailPathGetCb m_thumbGetCb;
+ mutable std::string m_filePath;
+ mutable std::string m_thumbPath;
+ };
+}
+
+#endif // __GALLERY_MODEL_MEDIA_ITEM_H__
--- /dev/null
+/*
+ * Copyright 2017 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __GALLERY_MODEL_TYPES_H__
+#define __GALLERY_MODEL_TYPES_H__
+
+#include <media_content.h>
+
+#include "../types.h"
+
+namespace gallery {
+
+ enum class MediaType {
+ IMAGE,
+ VIDEO,
+ SOUND,
+ MUSIC,
+ OTHER
+ };
+
+ class MediaItem;
+ using MediaItemUPtr = std::unique_ptr<MediaItem>;
+}
+
+#endif // __GALLERY_MODEL_TYPES_H__
--- /dev/null
+/*
+ * Copyright 2017 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "model/Gallery.h"
+
+#include "../common.h"
+
+namespace gallery {
+
+ using namespace ucl;
+
+ Gallery::Gallery()
+ {
+ UCL_ASSERT(0, "!!! NOT IMPLEMENTED !!!");
+ }
+
+ Gallery::~Gallery()
+ {
+ UCL_ASSERT(0, "!!! NOT IMPLEMENTED !!!");
+ }
+
+ IMediaAlbum &Gallery::getAlbum()
+ {
+ UCL_ASSERT(0, "!!! NOT IMPLEMENTED !!!");
+ }
+}
--- /dev/null
+/*
+ * Copyright 2017 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "model/MediaItem.h"
+
+#include "../common.h"
+
+namespace gallery {
+
+ using namespace ucl;
+
+ MediaItem::MediaItem(media_info_h info) :
+ m_type(MediaType::OTHER)
+ {
+ UCL_ASSERT(0, "!!! NOT IMPLEMENTED !!!");
+ }
+
+ MediaItem::~MediaItem()
+ {
+ UCL_ASSERT(0, "!!! NOT IMPLEMENTED !!!");
+ }
+
+ bool MediaItem::isValid() const
+ {
+ UCL_ASSERT(0, "!!! NOT IMPLEMENTED !!!");
+ }
+
+ MediaType MediaItem::getType() const
+ {
+ UCL_ASSERT(0, "!!! NOT IMPLEMENTED !!!");
+ }
+
+ const std::string &MediaItem::getFilePath() const
+ {
+ UCL_ASSERT(0, "!!! NOT IMPLEMENTED !!!");
+ }
+
+ Result MediaItem::getThumbnailPath(ThumbnailPathGetCb cb) const
+ {
+ UCL_ASSERT(0, "!!! NOT IMPLEMENTED !!!");
+ }
+
+ void MediaItem::cancelThumbnailPathGet() const
+ {
+ UCL_ASSERT(0, "!!! NOT IMPLEMENTED !!!");
+ }
+
+ Result MediaItem::removeFile()
+ {
+ UCL_ASSERT(0, "!!! NOT IMPLEMENTED !!!");
+ }
+}