mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
Cfg: Convert 'App - Startup' (finished)
This commit is contained in:
@@ -34,13 +34,14 @@ class Xog_launcher_tabs {
|
||||
app.Usr_dlg().Log_wkr().Log_to_session_direct(log_bfr.Xto_str());
|
||||
}
|
||||
private boolean Restore_tabs(Xoae_app app, Xowe_wiki home_wiki, Xog_win_itm win, Io_fil_marker fil_marker) {
|
||||
String[] launch_urls = app.Api_root().App().Startup().Tabs().Calc_startup_strs(app);
|
||||
String[] launch_urls = Xog_startup_tabs_.Calc_startup_strs(app);
|
||||
try {
|
||||
int launch_urls_len = launch_urls.length;
|
||||
for (int i = 0; i < launch_urls_len; ++i) {
|
||||
String launch_url = launch_urls[i];
|
||||
Launch_tab(win, home_wiki, launch_url);
|
||||
}
|
||||
Xog_startup_tabs_.Select_startup_tab(app);
|
||||
fil_marker.End();
|
||||
return true;
|
||||
}
|
||||
|
||||
95
400_xowa/src/gplx/xowa/guis/views/Xog_startup_tabs_.java
Normal file
95
400_xowa/src/gplx/xowa/guis/views/Xog_startup_tabs_.java
Normal file
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012 gnosygnu@gmail.com
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
|
||||
import gplx.xowa.addons.apps.cfgs.*;
|
||||
public class Xog_startup_tabs_ {
|
||||
public static String Manual = null; // note should only be set once, at startup;
|
||||
public static void Shutdown(Xoae_app app) {
|
||||
if (String_.Eq(app.Cfg().Get_str_app_or(Cfg__tabs_type, Opt__tabs_type__previous), Opt__tabs_type__previous)) {
|
||||
app.Cfg().Set_str_app(Cfg__prev_list , Calc_previous_tabs(app.Gui_mgr().Browser_win().Tab_mgr()));
|
||||
app.Cfg().Set_int_app(Cfg__prev_selected, app.Gui_mgr().Browser_win().Tab_mgr().Active_tab().Tab_idx());
|
||||
}
|
||||
}
|
||||
private static String Calc_previous_tabs(gplx.xowa.guis.views.Xog_tab_mgr tab_mgr) {
|
||||
Bry_bfr bfr = Bry_bfr_.New();
|
||||
int len = tab_mgr.Tabs_len();
|
||||
for (int i = 0; i < len; ++i) {
|
||||
if (i != 0) bfr.Add_byte_nl();
|
||||
gplx.xowa.guis.views.Xog_tab_itm tab = tab_mgr.Tabs_get_at(i);
|
||||
bfr.Add_str_u8(tab.Page().Url().To_str());
|
||||
}
|
||||
return bfr.To_str_and_clear();
|
||||
}
|
||||
public static void Select_startup_tab(Xoae_app app) {
|
||||
if (String_.Eq(app.Cfg().Get_str_app_or(Cfg__tabs_type, Opt__tabs_type__previous), Opt__tabs_type__previous)) {
|
||||
int selected_tab = app.Cfg().Get_int_app_or(Cfg__prev_selected, -1);
|
||||
if (selected_tab != -1) {
|
||||
app.Gui_mgr().Browser_win().Tab_mgr().Tabs_select_by_idx(selected_tab);
|
||||
}
|
||||
}
|
||||
}
|
||||
public static String[] Calc_startup_strs(Xoae_app app) {
|
||||
List_adp rv = List_adp_.New();
|
||||
Xocfg_mgr cfg = app.Cfg();
|
||||
String xowa_home = gplx.xowa.users.Xouc_pages_mgr.Page_xowa;
|
||||
String type = cfg.Get_str_app_or(Cfg__tabs_type, Opt__tabs_type__previous);
|
||||
if (Manual == null) {
|
||||
if (String_.Eq(type, "blank")) {rv.Add(gplx.xowa.specials.Xow_special_meta_.Itm__default_tab.Ttl_str());}
|
||||
else if (String_.Eq(type, "xowa")) {rv.Add(xowa_home);}
|
||||
else if (String_.Eq(type, "custom")) {Add_pages_to_list(rv, cfg.Get_str_app_or(Cfg__tabs_custom, ""));}
|
||||
else if (String_.Eq(type, Opt__tabs_type__previous)) {Add_pages_to_list(rv, cfg.Get_str_app_or(Cfg__prev_list, ""));}
|
||||
else {throw Err_.new_unhandled(type);}
|
||||
}
|
||||
else
|
||||
rv.Add(Manual);
|
||||
Add_xowa_home_if_new_version(rv, app, xowa_home);
|
||||
return rv.To_str_ary();
|
||||
}
|
||||
private static void Add_pages_to_list(List_adp list, String s) {
|
||||
if (String_.Len_eq_0(s)) return;
|
||||
String[] ary = String_.SplitLines_nl(String_.Trim(s));
|
||||
int len = ary.length;
|
||||
for (int i = 0; i < len; ++i) {
|
||||
String itm = ary[i];
|
||||
if (String_.Len_eq_0(itm)) continue;
|
||||
list.Add(itm);
|
||||
}
|
||||
}
|
||||
private static void Add_xowa_home_if_new_version(List_adp rv, Xoae_app app, String xowa_home) {
|
||||
if (gplx.xowa.apps.versions.Xoa_version_.Compare(app.Api_root().App().Env().Version_previous(), Xoa_app_.Version) == CompareAble_.Less) {
|
||||
boolean xowa_home_exists = false;
|
||||
int len = rv.Count();
|
||||
for (int i = 0; i < len; ++i) {
|
||||
String itm = (String)rv.Get_at(i);
|
||||
if (String_.Eq(itm, xowa_home)) {
|
||||
xowa_home_exists = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!xowa_home_exists)
|
||||
rv.Add(xowa_home);
|
||||
}
|
||||
}
|
||||
private static final String
|
||||
Cfg__tabs_type = "xowa.app.startup.tabs.type"
|
||||
, Cfg__tabs_custom = "xowa.app.startup.tabs.custom"
|
||||
, Cfg__prev_list = "xowa.app.startup.tabs.previous_list"
|
||||
, Cfg__prev_selected = "xowa.app.startup.tabs.previous_selected"
|
||||
, Opt__tabs_type__previous = "previous"
|
||||
;
|
||||
}
|
||||
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
|
||||
import gplx.core.envs.*;
|
||||
import gplx.gfui.*; import gplx.gfui.envs.*; import gplx.gfui.controls.windows.*;
|
||||
public class Xog_win_itm_startup_ {
|
||||
public class Xog_startup_win_ {
|
||||
public static void Startup(Xoa_app app, GfuiWin win) {
|
||||
gplx.xowa.addons.apps.cfgs.Xocfg_mgr cfg_mgr = app.Cfg();
|
||||
String window_mode = cfg_mgr.Get_str_app_or(Cfg__window_mode, "previous");
|
||||
@@ -79,25 +79,13 @@ public class Xog_win_itm_startup_ {
|
||||
cfg_mgr.Set_str_app(Cfg__prev_rect , win.Rect().Xto_str());
|
||||
cfg_mgr.Set_str_app(Cfg__prev_maximized , Yn.To_str(win.Maximized()));
|
||||
}
|
||||
Xog_startup_tabs_.Shutdown(app);
|
||||
|
||||
gplx.xowa.apps.cfgs.Xoa_cfg_mgr cfg_mgr2 = app.Cfg_mgr();
|
||||
gplx.xowa.apps.apis.xowa.startups.tabs.Xoapi_startup_tabs startup_tabs = app.Api_root().App().Startup().Tabs();
|
||||
if (startup_tabs.Type() == gplx.xowa.apps.apis.xowa.startups.tabs.Xoapi_startup_tabs_tid_.Tid_previous) {
|
||||
cfg_mgr2.Set_by_app("xowa.api.app.startup.tabs.previous" , Calc_previous_tabs(app.Gui_mgr().Browser_win().Tab_mgr()));
|
||||
}
|
||||
cfg_mgr2.Set_by_app("xowa.api.app.env.version_previous" , Xoa_app_.Version);
|
||||
app.Api_root().Html().Page().Toggle_mgr().Save(cfg_mgr2);
|
||||
cfg_mgr2.Db_save_txt();
|
||||
}
|
||||
private static String Calc_previous_tabs(gplx.xowa.guis.views.Xog_tab_mgr tab_mgr) {
|
||||
Bry_bfr bfr = Bry_bfr_.New();
|
||||
int len = tab_mgr.Tabs_len();
|
||||
for (int i = 0; i < len; ++i) {
|
||||
if (i != 0) bfr.Add_byte_nl();
|
||||
gplx.xowa.guis.views.Xog_tab_itm tab = tab_mgr.Tabs_get_at(i);
|
||||
bfr.Add_str_u8(tab.Page().Url().To_str());
|
||||
}
|
||||
return bfr.To_str_and_clear();
|
||||
}
|
||||
public static SizeAdp Screen_maximized_calc() {
|
||||
Op_sys os = Op_sys.Cur();
|
||||
SizeAdp screen = ScreenAdp_.screen_(0).Size();
|
||||
@@ -27,7 +27,7 @@ public class Xog_win_itm_ {
|
||||
win_box.BackColor_(ColorAdp_.White);
|
||||
win.Tab_mgr().Tab_mgr().BackColor_(ColorAdp_.White);
|
||||
|
||||
Xog_win_itm_startup_.Startup(app, win_box);
|
||||
Xog_startup_win_.Startup(app, win_box);
|
||||
win.Resizer().Exec_win_resize(app, win_box.Width(), win_box.Height());
|
||||
|
||||
win_box.Icon_(IconAdp.file_or_blank(app.Fsys_mgr().Bin_xowa_dir().GenSubFil_nest("file", "app.window", "app_icon.png")));
|
||||
|
||||
Reference in New Issue
Block a user