1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-10-27 20:34:16 +00:00

Cfg: Convert 'toggle_mgr'

This commit is contained in:
gnosygnu 2016-12-25 22:31:58 -05:00
parent 3a4ef523dc
commit 460f4a323b
6 changed files with 74 additions and 32 deletions

View File

@ -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();

View File

@ -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) {

View File

@ -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;

View File

@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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")

View File

@ -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"
;
}

View File

@ -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();