Skip to content

Commit 38ef566

Browse files
committed
add some header of libs
1 parent 2af0848 commit 38ef566

26 files changed

+631
-73
lines changed

harmony/smart_refresh_layout.har

2.59 KB
Binary file not shown.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export default class BuildProfile {
2-
static readonly HAR_VERSION = '0.6.7-0.2.9';
2+
static readonly HAR_VERSION = '0.6.7-0.3.0';
33
static readonly BUILD_MODE_NAME = 'debug';
44
static readonly DEBUG = true;
55
}

harmony/smart_refresh_layout/oh-package.json5

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"name": "@react-native-oh-tpl/react-native-smartrefreshlayout",
77
"description": "Please describe the basic information.",
88
"main": "index.ets",
9-
"version": "0.6.7-0.2.9",
9+
"version": "0.6.7-0.3.0",
1010
"dependencies": {
1111
"rnoh": "file:../rnoh"
1212
},
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//
2+
// Created on 2024/4/1.
3+
//
4+
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
5+
// please include "napi/native_api.h".
6+
#pragma once
7+
8+
#include "boost/cstdint.hpp"
9+
namespace rnoh {
10+
class HeaderNodeDelegate {
11+
public:
12+
virtual ~HeaderNodeDelegate() = default;
13+
virtual void onRefreshStatusChange(int32_t status){};
14+
};
15+
}

harmony/smart_refresh_layout/src/main/cpp/Props.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ class JSI_EXPORT RNCDefaultHeaderProps final : public ViewProps {
5454

5555
#pragma mark - Props
5656

57-
std::string primaryColor{};
58-
std::string accentColor{};
57+
SharedColor primaryColor{};
58+
SharedColor accentColor{};
5959
};
6060

6161
class JSI_EXPORT RNCMaterialHeaderProps final : public ViewProps {

harmony/smart_refresh_layout/src/main/cpp/PullToRefreshNode.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ namespace rnoh {
1212
NativeNodeApi::getInstance()->setAttribute(m_nodeHandle, NODE_COLUMN_JUSTIFY_CONTENT, &columnFlexItem);
1313
}
1414

15-
PullToRefreshNode::~PullToRefreshNode() {
16-
}
15+
PullToRefreshNode::~PullToRefreshNode() {}
1716
void PullToRefreshNode::setPullToRefreshNodeDelegate(PullToRefreshNodeDelegate *pullToRefreshNodeDelegate) {
1817
m_pullToRefreshNodeDelegate = pullToRefreshNodeDelegate;
1918
}
@@ -24,6 +23,15 @@ namespace rnoh {
2423
ArkUI_NumberValue alignments[] = {{.u32 = ARKUI_ALIGNMENT_BOTTOM}};
2524
ArkUI_AttributeItem alignment = {alignments, sizeof(alignments) / sizeof(ArkUI_NumberValue)};
2625
NativeNodeApi::getInstance()->setAttribute(m_headerArkUINodeHandle, NODE_STACK_ALIGN_CONTENT, &alignment);
26+
// NativeNodeApi::getInstance()->registerNodeEvent(m_headerArkUINodeHandle, NODE_EVENT_ON_AREA_CHANGE, 1263);
27+
// NativeNodeApi::getInstance()->registerNodeEventReceiver([](ArkUI_NodeEvent *event) {
28+
// LOG(INFO) << "[tyBrave] <registerNodeEventReceiver NODE_EVENT_ON_AREA_CHANGE {}:eventID:"
29+
// << event->eventId;
30+
// if (event->kind == ArkUI_NodeEventType::NODE_EVENT_ON_AREA_CHANGE) {
31+
// LOG(INFO) << "[tyBrave] <registerNodeEventReceiver NODE_EVENT_ON_AREA_CHANGE success"
32+
// << event->eventId;
33+
// }
34+
// });
2735
} else if (index == 1) {
2836
m_listArkUINodeHandle = child.getArkUINodeHandle();
2937
}
@@ -39,6 +47,10 @@ namespace rnoh {
3947
}
4048
}
4149

50+
// void PullToRefreshNode::onNodeEvent(ArkUI_NodeEvent *event) {
51+
// LOG(INFO) << "[tyBrave] <RNCDefaultHeaderComponentInstance NODE_EVENT_ON_AREA_CHANGE {}:eventID:"<<event->eventId;
52+
// }
53+
4254
void PullToRefreshNode::setHeaderHeight(float h) {
4355
ArkUI_NumberValue heightNumberValue[] = {h};
4456
ArkUI_AttributeItem heightItem = {heightNumberValue, 1};

harmony/smart_refresh_layout/src/main/cpp/PullToRefreshNode.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,24 @@ namespace rnoh {
2525
ArkUI_NodeHandle m_listArkUINodeHandle;
2626
PullToRefreshNodeDelegate *m_pullToRefreshNodeDelegate;
2727
PullToRefreshConfigurator refreshConfigurator{PullToRefreshConfigurator()};
28-
28+
2929
public:
3030
PullToRefreshNode();
3131
~PullToRefreshNode() override;
32-
32+
3333
void insertChild(ArkUINode &child, std::size_t index);
3434

3535
void removeChild(ArkUINode &child);
36-
36+
3737
void setPullToRefreshNodeDelegate(PullToRefreshNodeDelegate *pullToRefreshNodeDelegate);
38-
38+
3939
void setHeaderHeight(float h);
4040
void setEnableRefresh(bool enable);
4141
void setMaxTranslate(float maxHeight);
4242
void setHeaderBackgroundColor(facebook::react::SharedColor const &color);
4343
PullToRefreshConfigurator getPullToRefreshConfigurator() { return refreshConfigurator; }
44+
45+
// void onNodeEvent(ArkUI_NodeEvent *event) override;
4446
};
4547

4648
} // namespace rnoh
Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
//
2+
// Created on 2024/3/30.
3+
//
4+
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
5+
// please include "napi/native_api.h".
6+
7+
#include "RNCClassicsHeaderComponentInstance.h"
8+
#include "RNOH/arkui/NativeNodeApi.h"
9+
#include "react/renderer/imagemanager/primitives.h"
10+
#include "SmartRefreshState.h"
11+
12+
namespace rnoh {
13+
14+
RNCClassicsHeaderComponentInstance::RNCClassicsHeaderComponentInstance(Context context)
15+
: CppComponentInstance(std::move(context)) {
16+
LOG(INFO) << "[tyBrave] <RNCClassicsHeaderComponentInstance {}";
17+
18+
mColumnHandle = NativeNodeApi::getInstance()->createNode(ARKUI_NODE_ROW);
19+
20+
facebook::react::ImageSources imageSources;
21+
imageSources.push_back({.uri = "resource://BASE/media/icon_up.png"});
22+
imageNode.setSources(imageSources);
23+
imageNode.setSize({30, 20});
24+
imageNode.setResizeMode(facebook::react::ImageResizeMode::Contain);
25+
26+
facebook::react::ImageSources imageUpdateSources;
27+
imageUpdateSources.push_back({.uri = "resource://BASE/media/icon_load.png"});
28+
updateImageNode.setSources(imageUpdateSources);
29+
updateImageNode.setSize({25, 25});
30+
updateImageNode.setResizeMode(facebook::react::ImageResizeMode::Contain);
31+
32+
33+
auto textColumn = NativeNodeApi::getInstance()->createNode(ARKUI_NODE_COLUMN);
34+
35+
ArkUI_NumberValue margin_self[] = {{.f32 = 0}, {.f32 = 0}, {.f32 = 0}, {.f32 = 12}};
36+
ArkUI_AttributeItem margin[] = {margin_self, 4};
37+
NativeNodeApi::getInstance()->setAttribute(textColumn, NODE_MARGIN, margin);
38+
39+
textNode.setTextContent("下拉刷新");
40+
textNode.setFontSize(15);
41+
textNode.setFontColor(0xff666666);
42+
43+
timeTextNode.setTextContent("更新于 早上10:10");
44+
timeTextNode.setFontSize(12);
45+
timeTextNode.setFontColor(0xff7c7c7c);
46+
47+
48+
NativeNodeApi::getInstance()->insertChildAt(textColumn, textNode.getArkUINodeHandle(), 0);
49+
NativeNodeApi::getInstance()->insertChildAt(textColumn, timeTextNode.getArkUINodeHandle(), 1);
50+
51+
std::time_t now_seconds = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
52+
std::tm *now_tm = std::localtime(&now_seconds);
53+
54+
LOG(INFO) << "[tyBrave] <RNCClassicsHeaderComponentInstance {}"
55+
<< "当前时间: " << (now_tm->tm_year + 1900) << '-' << (now_tm->tm_mon + 1) << '-' << now_tm->tm_mday
56+
<< ' ' << now_tm->tm_hour << ':' << now_tm->tm_min << ':' << now_tm->tm_sec;
57+
58+
59+
mColumnHandle = NativeNodeApi::getInstance()->createNode(ARKUI_NODE_ROW);
60+
61+
ArkUI_NumberValue heightNumberValue[] = {50};
62+
ArkUI_AttributeItem heightItem = {heightNumberValue, 1};
63+
NativeNodeApi::getInstance()->setAttribute(mColumnHandle, NODE_HEIGHT, &heightItem);
64+
65+
NativeNodeApi::getInstance()->insertChildAt(mColumnHandle, imageNode.getArkUINodeHandle(), 0);
66+
NativeNodeApi::getInstance()->insertChildAt(mColumnHandle, updateImageNode.getArkUINodeHandle(), 1);
67+
NativeNodeApi::getInstance()->insertChildAt(mColumnHandle, textColumn, 2);
68+
NativeNodeApi::getInstance()->insertChildAt(m_stackNode.getArkUINodeHandle(), mColumnHandle, 0);
69+
70+
// ArkUI_NumberValue positionArray[] = {{.f32 = -50}, {.f32 = 20}};
71+
// ArkUI_AttributeItem positionValue[] = {positionArray, 2};
72+
// NativeNodeApi::getInstance()->setAttribute(timeTextNode.getArkUINodeHandle(), NODE_POSITION,
73+
// positionValue);
74+
}
75+
void RNCClassicsHeaderComponentInstance::onChildInserted(ComponentInstance::Shared const &childComponentInstance,
76+
std::size_t index) {
77+
CppComponentInstance::onChildInserted(childComponentInstance, index);
78+
m_stackNode.insertChild(childComponentInstance->getLocalRootArkUINode(), index);
79+
}
80+
81+
void RNCClassicsHeaderComponentInstance::onChildRemoved(ComponentInstance::Shared const &childComponentInstance) {
82+
CppComponentInstance::onChildRemoved(childComponentInstance);
83+
m_stackNode.removeChild(childComponentInstance->getLocalRootArkUINode());
84+
};
85+
86+
StackNode &RNCClassicsHeaderComponentInstance::getLocalRootArkUINode() { return m_stackNode; }
87+
88+
void RNCClassicsHeaderComponentInstance::onPropsChanged(SharedConcreteProps const &props) {
89+
if (props != nullptr) {
90+
// facebook::react::SharedColor headerColor = props->primaryColor;
91+
// LOG(INFO) << "[tyBrave] <SmartRefreshLayoutComponentInstance ---------------" <<
92+
// props->accentColor
93+
// << ";sss:" << props->primaryColor;
94+
// if (props->accentColor) {
95+
// textNode.setFontColor(props->accentColor);
96+
// imageNode.setTintColor(props->accentColor);
97+
// }
98+
}
99+
}
100+
101+
void RNCClassicsHeaderComponentInstance::finalizeUpdates() {
102+
ArkUI_NumberValue heightNumberValue[] = {60};
103+
ArkUI_AttributeItem heightItem = {heightNumberValue, 1};
104+
NativeNodeApi::getInstance()->setAttribute(m_stackNode.getArkUINodeHandle(), NODE_HEIGHT, &heightItem);
105+
m_stackNode.setAlignment(ARKUI_ALIGNMENT_BOTTOM);
106+
}
107+
108+
void RNCClassicsHeaderComponentInstance::setImageRotate(float angle) {
109+
ArkUI_NumberValue opacityValue[] = {{.f32 = 0}, {.f32 = 0}, {.f32 = 1}, {.f32 = angle}, {.f32 = 0}};
110+
ArkUI_AttributeItem opacityItem = {opacityValue, sizeof(opacityValue) / sizeof(ArkUI_NumberValue)};
111+
NativeNodeApi::getInstance()->setAttribute(imageNode.getArkUINodeHandle(), NODE_ROTATE, &opacityItem);
112+
}
113+
114+
void RNCClassicsHeaderComponentInstance::onRefreshStatusChange(int32_t status) {
115+
116+
ArkUI_NumberValue imageNodeVisiblyAbleValue[] = {{.u32 = ARKUI_VISIBILITY_VISIBLE}};
117+
ArkUI_AttributeItem imageNodeVisiblyAbleItem = {imageNodeVisiblyAbleValue, 1};
118+
NativeNodeApi::getInstance()->setAttribute(imageNode.getArkUINodeHandle(), NODE_VISIBILITY,
119+
&imageNodeVisiblyAbleItem);
120+
switch (status) {
121+
case IS_FREE:
122+
case IS_PULL_DOWN_1: {
123+
textNode.setTextContent("下拉刷新");
124+
setImageRotate(180.0);
125+
ArkUI_NumberValue visiblyAbleValue[] = {{.u32 = ARKUI_VISIBILITY_NONE}};
126+
ArkUI_AttributeItem visiblyAbleItem = {visiblyAbleValue, 1};
127+
NativeNodeApi::getInstance()->setAttribute(updateImageNode.getArkUINodeHandle(), NODE_VISIBILITY,
128+
&visiblyAbleItem);
129+
} break;
130+
case IS_REFRESHING: {
131+
textNode.setTextContent("正在更新");
132+
ArkUI_NumberValue imageNodeVisiblyAbleValue[] = {{.u32 = ARKUI_VISIBILITY_NONE}};
133+
ArkUI_AttributeItem imageNodeVisiblyAbleItem = {imageNodeVisiblyAbleValue, 1};
134+
NativeNodeApi::getInstance()->setAttribute(imageNode.getArkUINodeHandle(), NODE_VISIBILITY,
135+
&imageNodeVisiblyAbleItem);
136+
137+
ArkUI_NumberValue visiblyAbleValue[] = {{.u32 = ARKUI_VISIBILITY_VISIBLE}};
138+
ArkUI_AttributeItem visiblyAbleItem = {visiblyAbleValue, 1};
139+
NativeNodeApi::getInstance()->setAttribute(updateImageNode.getArkUINodeHandle(), NODE_VISIBILITY,
140+
&visiblyAbleItem);
141+
}
142+
143+
break;
144+
case IS_PULL_DOWN_2: {
145+
textNode.setTextContent("释放刷新");
146+
setImageRotate(0.0);
147+
ArkUI_NumberValue visiblyAbleValue[] = {{.u32 = ARKUI_VISIBILITY_NONE}};
148+
ArkUI_AttributeItem visiblyAbleItem = {visiblyAbleValue, 1};
149+
NativeNodeApi::getInstance()->setAttribute(updateImageNode.getArkUINodeHandle(), NODE_VISIBILITY,
150+
&visiblyAbleItem);
151+
} break;
152+
case IS_REFRESHED: {
153+
textNode.setTextContent("刷新完毕");
154+
ArkUI_NumberValue visiblyAbleValue[] = {{.u32 = ARKUI_VISIBILITY_NONE}};
155+
ArkUI_AttributeItem visiblyAbleItem = {visiblyAbleValue, 1};
156+
NativeNodeApi::getInstance()->setAttribute(updateImageNode.getArkUINodeHandle(), NODE_VISIBILITY,
157+
&visiblyAbleItem);
158+
} break;
159+
}
160+
}
161+
} // namespace rnoh
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
//
2+
// Created on 2024/3/30.
3+
//
4+
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
5+
// please include "napi/native_api.h".
6+
7+
#pragma once
8+
#include "HeaderNodeDelegate.h"
9+
#include "RNOH/CppComponentInstance.h"
10+
#include "RNOH/arkui/StackNode.h"
11+
#include "RNOH/arkui/TextNode.h"
12+
#include "RNOH/arkui/ImageNode.h"
13+
#include "ShadowNodes.h"
14+
15+
namespace rnoh {
16+
class RNCClassicsHeaderComponentInstance
17+
: public CppComponentInstance<facebook::react::RNCClassicsHeaderShadowNode>,
18+
public HeaderNodeDelegate {
19+
20+
private:
21+
StackNode m_stackNode;
22+
ImageNode imageNode;
23+
ImageNode updateImageNode;
24+
TextNode textNode;
25+
TextNode timeTextNode;
26+
ArkUI_NodeHandle mColumnHandle;
27+
std::string primaryColor{""};
28+
29+
public:
30+
RNCClassicsHeaderComponentInstance(Context context);
31+
void onChildInserted(ComponentInstance::Shared const &childComponentInstance, std::size_t index) override;
32+
void onChildRemoved(ComponentInstance::Shared const &childComponentInstance) override;
33+
void onPropsChanged(SharedConcreteProps const &props) override;
34+
35+
void finalizeUpdates() override;
36+
StackNode &getLocalRootArkUINode() override;
37+
void onRefreshStatusChange(int32_t status) override;
38+
std::string getDefaultHeaderBackGroundColor() { return primaryColor; }
39+
void setImageRotate(float angle);
40+
};
41+
} // namespace rnoh
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
//
2+
// Created on 2024/3/30.
3+
//
4+
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
5+
// please include "napi/native_api.h".
6+
7+
#include "RNOH/UIManagerModule.h"
8+
#include "RNOH/BaseComponentJSIBinder.h"
9+
#include "RNOHCorePackage/ComponentBinders/ViewComponentJSIBinder.h"
10+
11+
namespace rnoh {
12+
class RNCClassicsHeaderJSIBinder : public ViewComponentJSIBinder {
13+
protected:
14+
facebook::jsi::Object createBubblingEventTypes(facebook::jsi::Runtime &rt) override {
15+
auto events = ViewComponentJSIBinder::createBubblingEventTypes(rt);
16+
return events;
17+
}
18+
19+
facebook::jsi::Object createNativeProps(facebook::jsi::Runtime &rt) override {
20+
auto nativeProps = ViewComponentJSIBinder::createNativeProps(rt);
21+
nativeProps.setProperty(rt, "primaryColor", "number");
22+
nativeProps.setProperty(rt, "accentColor", "number");
23+
return nativeProps;
24+
}
25+
};
26+
27+
} // namespace rnoh
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//
2+
// Created on 2024/3/30.
3+
//
4+
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
5+
// please include "napi/native_api.h".
6+
7+
#include "RNOH/BaseComponentNapiBinder.h"
8+
#include "Props.h"
9+
#include "RNOHCorePackage/ComponentBinders/ViewComponentNapiBinder.h"
10+
11+
namespace rnoh {
12+
13+
class RNCClassicsHeaderNapiBinder : public ViewComponentNapiBinder {
14+
public:
15+
napi_value createProps(napi_env env, facebook::react::ShadowView const shadowView) override {
16+
napi_value napiBaseProps = ViewComponentNapiBinder::createProps(env, shadowView);
17+
if (auto props =
18+
std::dynamic_pointer_cast<const facebook::react::RNCClassicsHeaderProps>(shadowView.props)) {
19+
return ArkJS(env)
20+
.getObjectBuilder(napiBaseProps)
21+
.addProperty("primaryColor", props->primaryColor)
22+
.addProperty("accentColor", props->accentColor)
23+
.build();
24+
}
25+
return napiBaseProps;
26+
};
27+
};
28+
29+
} // namespace rnoh

0 commit comments

Comments
 (0)