#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 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 &GetList(void) { return listData_; } private: std::list listData_; }; } // namespace TJD #endif