• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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