mcu_hi3321_watch/tjd/ui/app/album/TjdUiAppAlbumAdapter.h
2025-05-26 20:15:20 +08:00

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