1 /*
2  * Copyright (c) 2024 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 #ifndef FRAMEWORKS_BRIDGE_DECLARATIVE_FRONTEND_THEME_JS_QRCODE_THEME_H
17 #define FRAMEWORKS_BRIDGE_DECLARATIVE_FRONTEND_THEME_JS_QRCODE_THEME_H
18 
19 #include "bridge/declarative_frontend/ark_theme/theme_apply/js_theme_utils.h"
20 #include "bridge/declarative_frontend/view_stack_processor.h"
21 #include "core/components_ng/base/view_abstract_model.h"
22 #include "core/components_ng/base/view_stack_model.h"
23 #include "core/components_ng/pattern/qrcode/qrcode_model.h"
24 
25 namespace OHOS::Ace::Framework {
26 class JSQRCodeTheme {
27 public:
ApplyTheme()28     static void ApplyTheme()
29     {
30         auto themeColors = JSThemeUtils::GetThemeColors();
31         if (!themeColors) {
32             return;
33         }
34 
35         // normal
36         ViewStackModel::GetInstance()->SetVisualState(VisualState::NORMAL);
37         QRCodeModel::GetInstance()->SetQRCodeColor(themeColors->CompForegroundPrimary());
38         QRCodeModel::GetInstance()->SetQRBackgroundColor(themeColors->BackgroundPrimary());
39 
40         // focused
41         ViewStackModel::GetInstance()->SetVisualState(VisualState::FOCUSED);
42         ViewAbstractModel::GetInstance()->SetOuterBorderColor(themeColors->InteractiveFocus());
43 
44         // clear state
45         ViewStackModel::GetInstance()->ClearVisualState();
46     }
47 
ObtainQRCodeColor(Color & qrcodeColor)48     static bool ObtainQRCodeColor(Color &qrcodeColor)
49     {
50         auto themeColors = JSThemeUtils::GetThemeColors();
51         if (!themeColors) {
52             return false;
53         }
54         qrcodeColor = themeColors->CompForegroundPrimary();
55         return true;
56     }
57 
ObtainBackgroundColor(Color & bgColor)58     static bool ObtainBackgroundColor(Color &bgColor)
59     {
60         auto themeColors = JSThemeUtils::GetThemeColors();
61         if (!themeColors) {
62             return false;
63         }
64         bgColor = themeColors->BackgroundPrimary();
65         return true;
66     }
67 };
68 } // namespace OHOS::Ace::Framework
69 #endif // FRAMEWORKS_BRIDGE_DECLARATIVE_FRONTEND_THEME_JS_QRCODE_THEME_H