1 /*
2 * Copyright (c) 2020 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "main_ability_slice.h"
17 #include "ability_loader.h"
18 #include "ability_slice.h"
19 #include "ability_info.h"
20 #include "ability_manager.h"
21 #include "event_listener.h"
22 #include "bundle_manager.h"
23 #include "module_info.h"
24 #include "element_name.h"
25 #include "wpa_work.h"
26 #include "gfx_utils/style.h"
27 #include <cstdint>
28 #include <ctime>
29
30 namespace OHOS {
REGISTER_AS(MainAbilitySlice)31 REGISTER_AS(MainAbilitySlice)
32
33 MainAbilitySlice::~MainAbilitySlice()
34 {
35 if (scrollView_) {
36 DeleteChildren(scrollView_);
37 scrollView_ = nullptr;
38 }
39
40 if (headView_) {
41 DeleteChildren(headView_);
42 headView_ = nullptr;
43 }
44 if (buttonBackListener_) {
45 delete buttonBackListener_;
46 buttonBackListener_ = nullptr;
47 }
48
49 if (buttonWifiListener_) {
50 delete buttonWifiListener_;
51 buttonWifiListener_ = nullptr;
52 }
53
54 if (buttonDisplayListener_) {
55 delete buttonDisplayListener_;
56 buttonDisplayListener_ = nullptr;
57 }
58
59 if (buttonAppListener_) {
60 delete buttonAppListener_;
61 buttonAppListener_ = nullptr;
62 }
63
64 if (buttonAboutListener_) {
65 delete buttonAboutListener_;
66 buttonAboutListener_ = nullptr;
67 }
68 }
69
SetButtonListenerWifi(void)70 void MainAbilitySlice::SetButtonListenerWifi(void)
71 {
72 auto onClick1 = [this](UIView& view, const Event& event) -> bool {
73 Want want1 = { nullptr };
74 AbilitySlice* nextSlice = AbilityLoader::GetInstance().GetAbilitySliceByName("SettingWifiAbilitySlice");
75 if (nextSlice == nullptr) {
76 printf("[warning]undefined SettingWifiAbilitySlice\n");
77 } else {
78 Present(*nextSlice, want1);
79 }
80 return true;
81 };
82 buttonWifiListener_ = new EventListener(onClick1, nullptr);
83 }
84
SetButtonListenerApp(void)85 void MainAbilitySlice::SetButtonListenerApp(void)
86 {
87 auto onClick2 = [this](UIView& view, const Event& event) -> bool {
88 Want want1 = { nullptr };
89 AbilitySlice* nextSlice = AbilityLoader::GetInstance().GetAbilitySliceByName("AppAbilitySlice");
90 if (nextSlice == nullptr) {
91 printf("[warning]undefined AppInfoAbilitySlice\n");
92 } else {
93 Present(*nextSlice, want1);
94 }
95 return true;
96 };
97 buttonAppListener_ = new EventListener(onClick2, nullptr);
98 }
99
SetButtonListenerDisplay(void)100 void MainAbilitySlice::SetButtonListenerDisplay(void)
101 {
102 auto onClick3 = [this](UIView& view, const Event& event) -> bool {
103 Want want1 = { nullptr };
104 AbilitySlice* nextSlice = AbilityLoader::GetInstance().GetAbilitySliceByName("SettingDisplayAbilitySlice");
105 if (nextSlice == nullptr) {
106 printf("[warning]undefined SettingDisplayAbilitySlice\n");
107 } else {
108 Present(*nextSlice, want1);
109 }
110 return true;
111 };
112 buttonDisplayListener_ = new EventListener(onClick3, nullptr);
113 }
114
115
SetButtonListenerAbout(void)116 void MainAbilitySlice::SetButtonListenerAbout(void)
117 {
118 auto onClick4 = [this](UIView& view, const Event& event) -> bool {
119 Want want1 = { nullptr };
120 AbilitySlice* nextSlice = AbilityLoader::GetInstance().GetAbilitySliceByName("SettingAboutAbilitySlice");
121 if (nextSlice == nullptr) {
122 printf("[warning]undefined SettingAboutAbilitySlice\n");
123 } else {
124 Present(*nextSlice, want1);
125 }
126 return true;
127 };
128 buttonAboutListener_ = new EventListener(onClick4, nullptr);
129 }
130
SetHead(void)131 void MainAbilitySlice::SetHead(void)
132 {
133 auto toLaunher = [this] (UIView &view, const Event &event) -> bool {
134 TerminateAbility();
135 return true;
136 };
137 buttonBackListener_ = new EventListener(toLaunher, nullptr);
138
139 headView_ = new UIViewGroup();
140 rootView_->Add(headView_);
141 headView_->SetPosition(DE_HEAD_X, DE_HEAD_Y, DE_HEAD_WIDTH, DE_HEAD_HEIGHT);
142 headView_->SetStyle(STYLE_BACKGROUND_OPA, 0);
143 headView_->SetTouchable(true);
144 headView_->SetOnClickListener(buttonBackListener_);
145
146 UIImageView* imageView = new UIImageView();
147 headView_->Add(imageView);
148 imageView->SetPosition(DE_HEAD_IMAGE_X, DE_HEAD_IMAGE_Y, DE_HEAD_IMAGE_WIDTH, DE_HEAD_IMAGE_HEIGHT);
149 imageView->SetSrc(DE_IMAGE_BACK);
150
151 UILabel* lablelFont = new UILabel();
152 lablelFont->SetPosition(DE_HEAD_TEXT_X, DE_HEAD_TEXT_Y, DE_HEAD_TEXT_WIDTH, DE_HEAD_TEXT_HEIGHT);
153 lablelFont->SetText("设置");
154 lablelFont->SetFont(DE_FONT_OTF, DE_HEAD_TEXT_SIZE);
155 lablelFont->SetStyle(STYLE_TEXT_COLOR, DE_HEAD_TEXT_COLOR);
156 headView_->Add(lablelFont);
157 }
158
SetWifiButtonView(void)159 void MainAbilitySlice::SetWifiButtonView(void)
160 {
161 UIViewGroup* buttonView = new UIViewGroup();
162 buttonView->SetPosition(WIFI_BUTTON_X, WIFI_BUTTON_Y, DE_BUTTON_WIDTH, DE_BUTTON_HEIGHT);
163 buttonView->SetStyle(STYLE_BORDER_RADIUS, DE_BUTTON_RADIUS);
164 buttonView->SetStyle(STYLE_BACKGROUND_COLOR, DE_BUTTON_BACKGROUND_COLOR);
165 buttonView->SetTouchable(true);
166 buttonView->SetOnClickListener(buttonWifiListener_);
167 scrollView_->Add(buttonView);
168
169 UILabel* lablelFontWifi = new UILabel();
170 lablelFontWifi->SetPosition(DE_TITLE_TEXT_X, WIFI_BUTTON_TEXT_WIFI_Y, DE_TITLE_TEXT_WIDTH, DE_TITLE_TEXT_HEIGHT);
171 lablelFontWifi->SetText("WiFi");
172 lablelFontWifi->SetFont(DE_FONT_OTF, DE_TITLE_TEXT_SIZE);
173 lablelFontWifi->SetStyle(STYLE_TEXT_COLOR, DE_TITLE_TEXT_COLOR);
174 buttonView->Add(lablelFontWifi);
175
176 char buff[64] = {0}; // 64 is the longest in this sample
177 int myX = WIFI_BUTTON_TEXT_SSID_X;
178 int myY = WIFI_BUTTON_TEXT_SSID_Y;
179 int ret = GetCurrentConnInfo(buff, sizeof(buff));
180 lablelFontSsid_ = new UILabel();
181 lablelFontSsid_->SetPosition(myX, myY, DE_SUBTITLE_TEXT_WIDTH, DE_SUBTITLE_TEXT_HEIGHT);
182 if (ret == 0) {
183 lablelFontSsid_->SetText(buff);
184 } else {
185 lablelFontSsid_->SetText("未连接");
186 }
187
188 lablelFontSsid_->SetFont(DE_FONT_OTF, DE_SUBTITLE_TEXT_SIZE);
189 lablelFontSsid_->SetStyle(STYLE_TEXT_COLOR, DE_SUBTITLE_TEXT_COLOR);
190 buttonView->Add(lablelFontSsid_);
191
192 UIImageView* imageView = new UIImageView();
193 imageView->SetPosition(DE_FORWARD_IMG_X, DE_FORWARD_IMG_Y, DE_FORWARD_IMG_WIDTH, DE_FORWARD_IMG_HEIGHT);
194 imageView->SetSrc(DE_IMAGE_FORWORD);
195 buttonView->Add(imageView);
196 }
197
SetAppButtonView(void)198 void MainAbilitySlice::SetAppButtonView(void)
199 {
200 UIViewGroup* buttonView = new UIViewGroup();
201 buttonView->SetPosition(APP_BUTTON_X, APP_BUTTON_Y, DE_BUTTON_WIDTH, DE_BUTTON_HEIGHT);
202 buttonView->SetStyle(STYLE_BORDER_RADIUS, DE_BUTTON_RADIUS);
203 buttonView->SetStyle(STYLE_BACKGROUND_COLOR, DE_BUTTON_BACKGROUND_COLOR);
204 buttonView->SetTouchable(true);
205 buttonView->SetOnClickListener(buttonAppListener_);
206 scrollView_->Add(buttonView);
207
208 UILabel* lablelFont = new UILabel();
209 lablelFont->SetPosition(DE_TITLE_TEXT_X, DE_TITLE_TEXT_Y, DE_TITLE_TEXT_WIDTH, DE_TITLE_TEXT_HEIGHT);
210 lablelFont->SetText("应用");
211 lablelFont->SetFont(DE_FONT_OTF, DE_TITLE_TEXT_SIZE);
212
213 lablelFont->SetStyle(STYLE_TEXT_COLOR, DE_TITLE_TEXT_COLOR);
214 buttonView->Add(lablelFont);
215
216 UIImageView* imageView = new UIImageView();
217 imageView->SetPosition(DE_FORWARD_IMG_X, DE_FORWARD_IMG_Y, DE_FORWARD_IMG_WIDTH, DE_FORWARD_IMG_HEIGHT);
218 imageView->SetSrc(DE_IMAGE_FORWORD);
219 buttonView->Add(imageView);
220 }
221
SetDisplayButtonView(void)222 void MainAbilitySlice::SetDisplayButtonView(void)
223 {
224 UIViewGroup* buttonView = new UIViewGroup();
225 buttonView->SetPosition(DISPALY_BUTTON_X, DISPALY_BUTTON_Y, DE_BUTTON_WIDTH, DE_BUTTON_HEIGHT);
226 buttonView->SetStyle(STYLE_BORDER_RADIUS, DE_BUTTON_RADIUS);
227 buttonView->SetStyle(STYLE_BACKGROUND_COLOR, DE_BUTTON_BACKGROUND_COLOR);
228 buttonView->SetTouchable(true);
229 buttonView->SetOnClickListener(buttonDisplayListener_);
230
231 UILabel* lablelFont = new UILabel();
232 lablelFont->SetPosition(DE_TITLE_TEXT_X, DE_TITLE_TEXT_Y, DE_TITLE_TEXT_WIDTH, DE_TITLE_TEXT_HEIGHT);
233 lablelFont->SetText("显示");
234 lablelFont->SetFont(DE_FONT_OTF, DE_TITLE_TEXT_SIZE);
235
236 lablelFont->SetStyle(STYLE_TEXT_COLOR, DE_TITLE_TEXT_COLOR);
237 buttonView->Add(lablelFont);
238
239 UIImageView* imageView = new UIImageView();
240 imageView->SetPosition(DE_FORWARD_IMG_X, DE_FORWARD_IMG_Y, DE_FORWARD_IMG_WIDTH, DE_FORWARD_IMG_HEIGHT);
241 imageView->SetSrc(DE_IMAGE_FORWORD);
242 buttonView->Add(imageView);
243 }
244
setAboutTest(UIViewGroup * buttonView,int positionX,int positionY,const char * setText)245 static void setAboutTest(UIViewGroup *buttonView, int positionX, int positionY, const char *setText)
246 {
247 UILabel* lablelFontSystem = new UILabel();
248 lablelFontSystem->SetPosition(positionX, positionY, DE_SUBTITLE_TEXT_WIDTH, DE_SUBTITLE_TEXT_HEIGHT);
249 lablelFontSystem->SetText(setText);
250 lablelFontSystem->SetFont(DE_FONT_OTF, DE_SUBTITLE_TEXT_SIZE);
251 lablelFontSystem->SetStyle(STYLE_TEXT_COLOR, DE_SUBTITLE_TEXT_COLOR);
252 buttonView->Add(lablelFontSystem);
253 }
254
SetAboutButtonView(void)255 void MainAbilitySlice::SetAboutButtonView(void)
256 {
257 UIViewGroup* buttonView = new UIViewGroup();
258 buttonView->SetPosition(ABOUT_BUTTON_X, ABOUT_BUTTON_Y, DE_BUTTON_WIDTH, ABOUT_BUTTON_HEIGHT);
259 buttonView->SetStyle(STYLE_BORDER_RADIUS, DE_BUTTON_RADIUS);
260 buttonView->SetStyle(STYLE_BACKGROUND_COLOR, DE_BUTTON_BACKGROUND_COLOR);
261 buttonView->SetTouchable(true);
262 buttonView->SetOnClickListener(buttonAboutListener_);
263 scrollView_->Add(buttonView);
264
265 UILabel* lablelFontAbout = new UILabel();
266 lablelFontAbout->SetPosition(DE_TITLE_TEXT_X, ABOUT_BUTTON_TEXT_ABOUT_Y, DE_TITLE_TEXT_WIDTH, DE_TITLE_TEXT_HEIGHT);
267 lablelFontAbout->SetText("关于");
268 lablelFontAbout->SetFont(DE_FONT_OTF, DE_TITLE_TEXT_SIZE);
269 lablelFontAbout->SetStyle(STYLE_TEXT_COLOR, DE_TITLE_TEXT_COLOR);
270 buttonView->Add(lablelFontAbout);
271
272 char buff[62]; // 62 is the longest in this sample
273 const char* gDV = GetDisplayVersion();
274 int err = sprintf_s(buff, sizeof(buff), "系统版本: %s", gDV);
275 if (err < 0) {
276 printf("[ERROR]sprintf_s failed, err = %d\n", err);
277 gDV = nullptr;
278 return;
279 }
280 setAboutTest(buttonView, ABOUT_BUTTON_TEXT_SYSTEM_X, ABOUT_BUTTON_TEXT_SYSTEM_Y, buff);
281
282 err = memset_s(buff, sizeof(buff), 0, sizeof(buff));
283 if (err < EOK) {
284 printf("[ERROR]memset_s failed, err = %d\n", err);
285 return;
286 }
287 const char* gPT = GetDeviceType();
288 err = sprintf_s(buff, sizeof(buff), "设备名称: %s", gPT);
289 if (err < 0) {
290 printf("[ERROR]sprintf_s failed, err = %d\n", err);
291 gPT = nullptr;
292 return;
293 }
294 setAboutTest(buttonView, ABOUT_BUTTON_TEXT_DEVICE_X, ABOUT_BUTTON_TEXT_DEVICE_Y, buff);
295
296 UIImageView* imageView = new UIImageView();
297 imageView->SetPosition(DE_FORWARD_IMG_X, ABOUT_BUTTON_IMAGE_Y, DE_FORWARD_IMG_WIDTH, DE_FORWARD_IMG_HEIGHT);
298 imageView->SetSrc(DE_IMAGE_FORWORD);
299 buttonView->Add(imageView);
300 }
301
SetScrollView()302 void MainAbilitySlice::SetScrollView()
303 {
304 scrollView_ = new UIScrollView();
305 scrollView_->SetStyle(STYLE_BACKGROUND_COLOR, DE_SCROLL_COLOR);
306 scrollView_->SetPosition(DE_SCROLL_X, DE_SCROLL_Y, DE_SCROLL_WIDTH, DE_SCROLL_HEIGHT);
307 scrollView_->SetXScrollBarVisible(false);
308 scrollView_->SetYScrollBarVisible(false);
309 rootView_->Add(scrollView_);
310 SetWifiButtonView();
311 SetAppButtonView();
312 SetDisplayButtonView();
313 SetAboutButtonView();
314 }
315
OnStart(const Want & want)316 void MainAbilitySlice::OnStart(const Want& want)
317 {
318 AbilitySlice::OnStart(want);
319 SetButtonListenerWifi();
320 SetButtonListenerApp();
321 SetButtonListenerDisplay();
322 SetButtonListenerAbout();
323 rootView_ = RootView::GetWindowRootView();
324 rootView_->SetPosition(DE_ROOT_X, DE_ROOT_Y, DE_ROOT_WIDTH, DE_ROOT_HEIGHT);
325 rootView_->SetStyle(STYLE_BACKGROUND_COLOR, DE_ROOT_BACKGROUND_COLOR);
326
327 SetHead();
328 SetScrollView();
329 SetUIContent(rootView_);
330 }
331
OnInactive()332 void MainAbilitySlice::OnInactive()
333 {
334 AbilitySlice::OnInactive();
335 }
336
OnActive(const Want & want)337 void MainAbilitySlice::OnActive(const Want& want)
338 {
339 char buff[64] = {0};
340 int ret = GetCurrentConnInfo(buff, sizeof(buff));
341 if (ret == 0) {
342 printf("##### SetText -> %s \n", buff);
343 lablelFontSsid_->SetText(buff);
344 } else {
345 lablelFontSsid_->SetText("未连接");
346 }
347 AbilitySlice::OnActive(want);
348 }
349
OnBackground()350 void MainAbilitySlice::OnBackground()
351 {
352 AbilitySlice::OnBackground();
353 }
354
OnStop()355 void MainAbilitySlice::OnStop()
356 {
357 AbilitySlice::OnStop();
358 }
359 } // namespace OHOS