103 lines
3.0 KiB
C++
103 lines
3.0 KiB
C++
#ifndef TJDUIAPP_ALBUM_ADAPTER
|
|
#define TJDUIAPP_ALBUM_ADAPTER
|
|
|
|
#include "TjdUiAppAlbumModel.h"
|
|
#include "components/abstract_adapter.h"
|
|
#include "components/ui_image_view.h"
|
|
#include "components/ui_label_button.h"
|
|
#include "components/ui_label.h"
|
|
#include "components/ui_scroll_view.h"
|
|
#include "components/ui_view_group.h"
|
|
#include "components/ui_canvas_ext.h"
|
|
#include <list>
|
|
|
|
namespace TJD {
|
|
|
|
class AlbumItemScrollView : public OHOS::UIScrollView
|
|
{
|
|
public:
|
|
AlbumItemScrollView(OHOS::UILabelButton *icon, OHOS::UIImageView *photo) : icon_(icon), photo_(photo){}
|
|
~AlbumItemScrollView() { icon_ = nullptr; photo_ = nullptr; }
|
|
bool OnDragStartEvent(const OHOS::DragEvent &event) override;
|
|
bool OnDragEvent(const OHOS::DragEvent &event) override;
|
|
bool OnDragEndEvent(const OHOS::DragEvent& event) override;
|
|
|
|
private:
|
|
OHOS::UILabelButton *icon_{nullptr};
|
|
OHOS::UIImageView *photo_{nullptr};
|
|
|
|
bool scrollEnable{true};
|
|
};
|
|
|
|
class TjdUiAppAlbumPresenter;
|
|
class TjdUiAppAlbumView;
|
|
class TjdAlbumItemView;
|
|
class ItemListener : public OHOS::UIView::OnDragListener, public OHOS::UIView::OnClickListener
|
|
{
|
|
public:
|
|
ItemListener(void);
|
|
~ItemListener(void);
|
|
|
|
bool OnDragStart(OHOS::UIView &view, const OHOS::DragEvent &event) override;
|
|
bool OnDrag(OHOS::UIView &view, const OHOS::DragEvent &event) override;
|
|
bool OnDragEnd(OHOS::UIView &view, const OHOS::DragEvent &event) override;
|
|
bool OnClick(OHOS::UIView &view, const OHOS::ClickEvent &event) override;
|
|
|
|
void SetElement(OHOS::UIViewType type, OHOS::UIView *view);
|
|
void DeleteListItem(void);
|
|
|
|
private:
|
|
TjdUiAppAlbumView *view_{nullptr};
|
|
TjdUiAppAlbumPresenter *present_{nullptr};
|
|
|
|
TjdAlbumItemView *itemView_{nullptr};
|
|
OHOS::UIImageView *image_{nullptr};
|
|
OHOS::UILabelButton *button_{nullptr};
|
|
|
|
int16_t dragStartX_ = 0;
|
|
};
|
|
|
|
class TjdAlbumItemView : public OHOS::UIViewGroup
|
|
{
|
|
public:
|
|
explicit TjdAlbumItemView();
|
|
~TjdAlbumItemView();
|
|
void SetItemInfo(const AlbumItem &itemInfo);
|
|
void SelectedChange();
|
|
void Reset();
|
|
AlbumItem GetItemInfo(void) { return itemInfo_; }
|
|
AlbumItemScrollView GetScrollView(void) { return scrollContainer_; };
|
|
|
|
private:
|
|
OHOS::PaintExt paint_;
|
|
OHOS::UIView fillView_;
|
|
OHOS::UIImageView icon_;
|
|
OHOS::UIImageView photo_;
|
|
OHOS::UICanvasExt canvas_;
|
|
OHOS::UILabelButton deleteIcon_;
|
|
AlbumItemScrollView scrollContainer_;
|
|
ItemListener itemListener_;
|
|
AlbumItem itemInfo_ = {0, ALBUM_PHOTO, "\0"};
|
|
};
|
|
|
|
class TjdAlbumAdapter : public OHOS::AbstractAdapter
|
|
{
|
|
public:
|
|
explicit TjdAlbumAdapter();
|
|
~TjdAlbumAdapter();
|
|
|
|
uint16_t GetCount(void) override;
|
|
|
|
OHOS::UIView *GetView(OHOS::UIView *inView, int16_t index) override;
|
|
void DeleteListItem(uint8_t index);
|
|
void ClearItem(void);
|
|
AlbumItem *GetListItem(uint8_t index);
|
|
std::list<AlbumItem> &GetList(void) { return listData_; }
|
|
|
|
private:
|
|
std::list<AlbumItem> listData_;
|
|
};
|
|
|
|
} // namespace TJD
|
|
|
|
#endif |