From 460f4a323bfb22e1776e752ccf3022e425067948 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Sun, 25 Dec 2016 22:31:58 -0500 Subject: [PATCH] Cfg: Convert 'toggle_mgr' --- .../src/gplx/xowa/apps/apis/Xoapi_root.java | 3 +- .../gplx/xowa/apps/apis/xowa/Xoapi_html.java | 5 +- .../xowa/apps/apis/xowa/html/Xoapi_page.java | 1 + .../apps/apis/xowa/html/Xoapi_toggle_itm.java | 13 ++- .../apps/apis/xowa/html/Xoapi_toggle_mgr.java | 81 +++++++++++++++---- .../xowa/guis/views/Xog_startup_win_.java | 3 - 6 files changed, 74 insertions(+), 32 deletions(-) diff --git a/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java b/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java index 6576c1d17..a8312f4d4 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java +++ b/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java @@ -35,8 +35,7 @@ public class Xoapi_root implements Gfo_invk { xtns_api.Init_by_kit(app); } public void Init_by_app(Xoae_app app) { - Io_url img_dir = app.Fsys_mgr().Bin_xowa_file_dir().GenSubDir_nest("app.general"); - html_api.Page().Toggle_mgr().Img_dir_(img_dir); + html_api.Init_by_app(app); usr_api.Init_by_app(app); } public Xoapi_addon Addon() {return addon_api;} private final Xoapi_addon addon_api = new Xoapi_addon(); diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.java index 180e47e0f..6217be6bf 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.java @@ -21,9 +21,8 @@ public class Xoapi_html implements Gfo_invk { public void Ctor_by_app(Xoae_app app) { page.Ctor_by_app(app); } - public void Init_by_kit(Xoae_app app) { - modules.Init_by_kit(app); - } + public void Init_by_app(Xoae_app app) {page.Init_by_app(app);} + public void Init_by_kit(Xoae_app app) {modules.Init_by_kit(app);} public Xoapi_modules Modules() {return modules;} private final Xoapi_modules modules = new Xoapi_modules(); public Xoapi_page Page() {return page;} private final Xoapi_page page = new Xoapi_page(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java index 297dd5713..b7c3f343d 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java @@ -20,6 +20,7 @@ public class Xoapi_page implements Gfo_invk { public void Ctor_by_app(Xoae_app app) { toggle_mgr.Ctor_by_app(app); } + public void Init_by_app(Xoae_app app) {toggle_mgr.Init_by_app(app);} public Xoapi_toggle_mgr Toggle_mgr() {return toggle_mgr;} private final Xoapi_toggle_mgr toggle_mgr = new Xoapi_toggle_mgr(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_toggles)) return toggle_mgr; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_itm.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_itm.java index 7dee1f804..6983a39f4 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_itm.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_itm.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.core.brys.fmtrs.*; -public class Xoapi_toggle_itm implements Gfo_invk { +public class Xoapi_toggle_itm { private final Xoae_app app; // NOTE: needed to get "img_dir" below private byte[] img_title_val_y, img_title_val_n; public Xoapi_toggle_itm(Xoae_app app, byte[] key_bry) { @@ -30,6 +30,10 @@ public class Xoapi_toggle_itm implements Gfo_invk { public byte[] Elem_display() {return elem_display;} private byte[] elem_display = Bry_.Empty; public byte[] Html_toggle_hdr_cls() {return html_toggle_hdr_cls;} public Xoapi_toggle_itm Html_toggle_hdr_cls_(byte[] v) {html_toggle_hdr_cls = v; return this;} private byte[] html_toggle_hdr_cls = Bry_.Empty; public boolean Visible() {return visible;} private boolean visible; + public void Visible_(boolean v) { + this.visible = v; + Html_toggle_gen(); + } public Xoapi_toggle_itm Init(byte[] heading_bry) { this.heading_bry = heading_bry; // NOTE: sets "Wikis" or "In other languages"; Wikidata twisties are empty; this.icon_title = app.Usere().Msg_mgr().Val_by_key_obj(visible ? Img_title_msg_y : Img_title_msg_n); // set title ("show" or "hide") @@ -79,13 +83,6 @@ public class Xoapi_toggle_itm implements Gfo_invk { .Keys_("key", "display", "toggle_hdr_cls").Bld_bry_many(bfr, key_bry, elem_display, html_toggle_hdr_cls) ; } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_visible)) return Yn.To_str(visible); - else if (ctx.Match(k, Invk_visible_)) this.visible = m.ReadYn("v"); - else return Gfo_invk_.Rv_unhandled; - return this; - } - private static final String Invk_visible = "visible", Invk_visible_ = "visible_"; private static byte[] Img_src_y, Img_src_n; // assume these are the same for all itms private static final byte[] Img_title_msg_y = Bry_.new_a7("hide"), Img_title_msg_n = Bry_.new_a7("show") diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_mgr.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_mgr.java index c7fae2c7e..f6ab59e24 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_mgr.java @@ -21,6 +21,33 @@ public class Xoapi_toggle_mgr implements Gfo_invk { private Xoae_app app; private final Ordered_hash hash = Ordered_hash_.New_bry(); public void Ctor_by_app(Xoae_app app) {this.app = app;} + public void Init_by_app(Xoae_app app) { + Io_url img_dir = app.Fsys_mgr().Bin_xowa_file_dir().GenSubDir_nest("app.general"); + int len = hash.Count(); + for (int i = 0; i < len; ++i) { + Xoapi_toggle_itm itm = (Xoapi_toggle_itm)hash.Get_at(i); + itm.Init_fsys(img_dir); + } + + app.Cfg().Bind_many_app(this + , Cfg__toggles__offline_wikis + , Cfg__toggles__wikidata_langs + , Cfg__toggles__claim + , Cfg__toggles__slink_w + , Cfg__toggles__slink_d + , Cfg__toggles__slink_s + , Cfg__toggles__slink_v + , Cfg__toggles__slink_q + , Cfg__toggles__slink_b + , Cfg__toggles__slink_u + , Cfg__toggles__slink_n + , Cfg__toggles__slink_special + , Cfg__toggles__label + , Cfg__toggles__descr + , Cfg__toggles__alias + , Cfg__toggles__json + ); + } public Xoapi_toggle_itm Get_or_new(String key_str) { byte[] key_bry = Bry_.new_u8(key_str); Xoapi_toggle_itm rv = (Xoapi_toggle_itm)hash.Get_by(key_bry); @@ -30,23 +57,45 @@ public class Xoapi_toggle_mgr implements Gfo_invk { } return rv; } - public void Img_dir_(Io_url v) { - int len = hash.Count(); - for (int i = 0; i < len; ++i) { - Xoapi_toggle_itm itm = (Xoapi_toggle_itm)hash.Get_at(i); - itm.Init_fsys(v); - } - } - public void Save(Xoa_cfg_mgr cfg_mgr) { - int len = hash.Count(); - for (int i = 0; i < len; ++i) { - Xoapi_toggle_itm itm = (Xoapi_toggle_itm)hash.Get_at(i); - cfg_mgr.Set_by_app("xowa.api.html.page.toggles.get('" + String_.new_u8(itm.Key_bry()) + "').visible", Yn.To_str(itm.Visible())); - } - } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_get)) return this.Get_or_new(m.ReadStr("key")); + if (ctx.MatchIn(k + , Cfg__toggles__offline_wikis + , Cfg__toggles__wikidata_langs + , Cfg__toggles__claim + , Cfg__toggles__slink_w + , Cfg__toggles__slink_d + , Cfg__toggles__slink_s + , Cfg__toggles__slink_v + , Cfg__toggles__slink_q + , Cfg__toggles__slink_b + , Cfg__toggles__slink_u + , Cfg__toggles__slink_n + , Cfg__toggles__slink_special + , Cfg__toggles__label + , Cfg__toggles__descr + , Cfg__toggles__alias + , Cfg__toggles__json)) { + this.Get_or_new(String_.Replace(k, "xowa.app.recent.toggles.", "")).Visible_(m.ReadYn("v")); + } else return Gfo_invk_.Rv_unhandled; + return this; } - private static final String Invk_get = "get"; + private static final String + Cfg__toggles__offline_wikis = "xowa.app.recent.toggles.offline-wikis" + , Cfg__toggles__wikidata_langs = "xowa.app.recent.toggles.wikidata-langs" + , Cfg__toggles__claim = "xowa.app.recent.toggles.wikidatawiki-claim" + , Cfg__toggles__slink_w = "xowa.app.recent.toggles.wikidatawiki-slink-wikipedia" + , Cfg__toggles__slink_d = "xowa.app.recent.toggles.wikidatawiki-slink-wiktionary" + , Cfg__toggles__slink_s = "xowa.app.recent.toggles.wikidatawiki-slink-wikisource" + , Cfg__toggles__slink_v = "xowa.app.recent.toggles.wikidatawiki-slink-wikivoyage" + , Cfg__toggles__slink_q = "xowa.app.recent.toggles.wikidatawiki-slink-wikiquote" + , Cfg__toggles__slink_b = "xowa.app.recent.toggles.wikidatawiki-slink-wikibooks" + , Cfg__toggles__slink_u = "xowa.app.recent.toggles.wikidatawiki-slink-wikiversity" + , Cfg__toggles__slink_n = "xowa.app.recent.toggles.wikidatawiki-slink-wikinews" + , Cfg__toggles__slink_special = "xowa.app.recent.toggles.wikidatawiki-slink-special" + , Cfg__toggles__label = "xowa.app.recent.toggles.wikidatawiki-label" + , Cfg__toggles__descr = "xowa.app.recent.toggles.wikidatawiki-descr" + , Cfg__toggles__alias = "xowa.app.recent.toggles.wikidatawiki-alias" + , Cfg__toggles__json = "xowa.app.recent.toggles.wikidatawiki-json" + ; } diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_startup_win_.java b/400_xowa/src/gplx/xowa/guis/views/Xog_startup_win_.java index cccbf5219..fa08c5c08 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_startup_win_.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_startup_win_.java @@ -82,9 +82,6 @@ public class Xog_startup_win_ { Xog_startup_tabs_.Shutdown(app); cfg_mgr.Set_str_app(gplx.xowa.guis.views.Xog_startup_tabs_.Cfg__prev_version, Xoa_app_.Version); - gplx.xowa.apps.cfgs.Xoa_cfg_mgr cfg_mgr2 = app.Cfg_mgr(); - app.Api_root().Html().Page().Toggle_mgr().Save(cfg_mgr2); - cfg_mgr2.Db_save_txt(); } public static SizeAdp Screen_maximized_calc() { Op_sys os = Op_sys.Cur();