| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- import linysText from '../../components/texts/linysText';
- import linysTextTitle from '../../components/texts/linysTextTitle';
- import { animation_default, click_effect_default } from '../../hosts/bunch_of_defaults';
- import { webview } from '@kit.ArkWeb';
- import { match_domain } from '../../utils/url_tools';
- import woofControlFrame from '../woofControlFrame';
- import linysTimeoutButtonWithText from '../../components/buttons/linysTimeoutButtonWithText';
- @CustomDialog
- struct woofCookies {
- controller: CustomDialogController;
- // Environment
- @StorageProp('tablet_mode') tablet_mode: boolean = false;
- @StorageProp('current_url') current_url: string = "= ̄ω ̄=";
- @State domain_url: string = this.get_domain_url(this.current_url);
- // Interfaces
- @State cookies_site: string[] = this.get_cookies_site();
- // alignRules
- alignRules_head_non_tablet: AlignRuleOption = {
- top: { anchor: "__container__", align: VerticalAlign.Top },
- left: { anchor: "__container__", align: HorizontalAlign.Start },
- };
- alignRules_head_tablet: AlignRuleOption = {
- top: { anchor: "__container__", align: VerticalAlign.Top },
- bottom: { anchor: "controls_cookies", align: VerticalAlign.Top },
- left: { anchor: "__container__", align: HorizontalAlign.Start },
- };
- alignRules_foot: AlignRuleOption = {
- bottom: { anchor: "__container__", align: VerticalAlign.Bottom },
- left: { anchor: "__container__", align: HorizontalAlign.Start }
- };
- alignRules_body_tablet: AlignRuleOption = {
- top: { anchor: "__container__", align: VerticalAlign.Top },
- right: { anchor: "__container__", align: HorizontalAlign.End }
- };
- alignRules_body_non_tablet: AlignRuleOption = {
- top: { anchor: "title_cookies_manager", align: VerticalAlign.Bottom },
- bottom: { anchor: "controls_cookies", align: VerticalAlign.Top },
- right: { anchor: "__container__", align: HorizontalAlign.End }
- };
- // Colors
- @StorageProp('color_current_primary') color_current_primary: ResourceColor = $r('app.color.start_window_background');
- @StorageProp('color_current_secondary') color_current_secondary: ResourceColor = $r('app.color.block_color');
- @StorageProp('color_current_font') color_current_font: ResourceColor = $r('app.color.font_color_title');
- build() {
- woofControlFrame({
- title: $r('app.string.Settings_manage_cookies'),
- controller: this.controller
- }) {
- RelativeContainer() {
- Scroll() {
- Column({ space: 10 }) {
- linysText({
- text: $r('app.string.Settings_manage_cookies_desc_1'),
- max_lines: 10
- })
- .width("100%")
- linysText({
- text: $r('app.string.Settings_manage_cookies_desc_2'),
- max_lines: 10
- })
- .width("100%")
- linysText({
- text: $r('app.string.Settings_manage_cookies_desc_3'),
- max_lines: 10
- })
- .width("100%")
- }
- .width("100%")
- } // Title
- .align(Alignment.TopStart)
- .edgeEffect(EdgeEffect.Spring)
- .padding({ bottom: 10, right: 10 })
- .width(this.tablet_mode ? "40%" : "100%")
- .alignRules(this.tablet_mode ? this.alignRules_head_tablet : this.alignRules_head_non_tablet)
- .animation(animation_default())
- .constraintSize(this.tablet_mode ? {} : { maxHeight: '35%' })
- .id("title_cookies_manager")
- Column() {
- linysText({ text: $r('app.string.Settings_manage_cookies_this_site'), max_lines: 3 })// Cookies on
- .width("100%")
- .padding({ top: this.tablet_mode ? 0 : 10, bottom: 5 })
- linysText({ text: this.domain_url })// domain
- .width("100%")
- .padding({ bottom: 10 })
- Scroll() {
- Column() {
- ForEach(this.cookies_site, (item: string, index: number) => {
- Cookie({
- text: item,
- index: index,
- })
- .width("100%")
- })
- if (this.cookies_site.length == 0) {
- linysTextTitle({
- text: "当前数量为空"
- })
- .margin(30)
- .opacity(0.7)
- .animation(animation_default())
- }
- }
- .width("100%")
- } // cookies display list
- .scrollable(ScrollDirection.Vertical)
- .edgeEffect(EdgeEffect.Spring)
- .align(Alignment.Top)
- .borderRadius(10)
- .backgroundColor(this.color_current_secondary)
- .width("100%")
- .layoutWeight(1)
- } // Cookies
- .width(this.tablet_mode ? "60%" : "100%")
- .height(this.tablet_mode ? "100%" : undefined)
- .alignRules(this.tablet_mode ? this.alignRules_body_tablet : this.alignRules_body_non_tablet)
- .animation(animation_default())
- Column({ space: 10 }) {
- linysText({ text: $r('app.string.Settings_manage_cookies_clear_all'), max_lines: 5 })
- .width('100%')
- linysTimeoutButtonWithText({
- desc_text: '谨慎操作',
- button_text: ' ',
- onExecution: () => {
- this.clear_all_cookies();
- }
- }) // Delete
- } // Controls
- .margin({ top: 15 })
- .padding(this.tablet_mode ? { right: 10 } : undefined)
- .alignItems(HorizontalAlign.End)
- .alignRules(this.alignRules_foot)
- .animation(animation_default())
- .width(this.tablet_mode ? "40%" : "100%")
- .id("controls_cookies")
- }.layoutWeight(1)
- }
- }
- clear_all_cookies() {
- webview.WebCookieManager.clearAllCookiesSync();
- webview.WebCookieManager.saveCookieAsync();
- this.refresh_site_cookies_list();
- }
- refresh_site_cookies_list() {
- this.cookies_site = this.get_cookies_site();
- }
- get_cookies_site() {
- let list = webview.WebCookieManager.fetchCookieSync(this.domain_url).split('; ');
- if (list[list.length-1] == '') {
- list = list.slice(0, list.length - 1);
- }
- return list;
- }
- get_domain_url(url: string) {
- let match_domain_result = match_domain(url);
- return match_domain_result[0] + '://' + match_domain_result[1];
- }
- }
- export default woofCookies;
- @Component
- struct Cookie {
- @State text: string = "qwq";
- @Prop index: number;
- // Color
- @StorageProp('color_current_secondary') color_current_secondary: ResourceColor = $r('app.color.block_color');
- @StorageProp('color_current_font') color_current_font: ResourceColor = $r('app.color.font_color_title');
- build() {
- Column() {
- linysText({
- text: this.text,
- max_lines: 25
- })
- }
- .padding({
- left: 10,
- right: 10,
- top: 5,
- bottom: 5
- })
- .alignItems(HorizontalAlign.Start)
- .backgroundColor(this.color_current_secondary)
- .animation(animation_default())
- .clickEffect(click_effect_default())
- .width("100%")
- }
- }
|