Add resolution_fit option in theme plugin.

This commit is contained in:
longpanda
2022-12-22 18:26:01 +08:00
parent f2016ab899
commit 23f8bc8aeb
10 changed files with 167 additions and 32 deletions

View File

@@ -819,13 +819,18 @@ int ventoy_data_save_theme(data_theme *data, const char *title, char *buf, int b
{
VTOY_JSON_FMT_ITEM_PATH_LN(L3, node->path);
}
VTOY_JSON_FMT_ARY_ENDEX_LN(L2);
if (def->default_file != data->default_file)
{
VTOY_JSON_FMT_SINT_LN(L2, "default_file", data->default_file);
}
if (def->resolution_fit != data->resolution_fit)
{
VTOY_JSON_FMT_SINT_LN(L2, "resolution_fit", data->resolution_fit);
}
}
else
{
@@ -888,6 +893,7 @@ int ventoy_data_json_theme(data_theme *data, char *buf, int buflen)
VTOY_JSON_FMT_OBJ_BEGIN();
VTOY_JSON_FMT_SINT("default_file", data->default_file);
VTOY_JSON_FMT_SINT("resolution_fit", data->resolution_fit);
VTOY_JSON_FMT_SINT("display_mode", data->display_mode);
VTOY_JSON_FMT_STRN("gfxmode", data->gfxmode);
@@ -939,6 +945,7 @@ static int ventoy_api_save_theme(struct mg_connection *conn, VTOY_JSON *json)
data = g_data_theme + index;
VTOY_JSON_INT("default_file", data->default_file);
VTOY_JSON_INT("resolution_fit", data->resolution_fit);
VTOY_JSON_INT("display_mode", data->display_mode);
VTOY_JSON_STR("gfxmode", data->gfxmode);
VTOY_JSON_STR("ventoy_left", data->ventoy_left);
@@ -4252,6 +4259,7 @@ static int ventoy_parse_theme(VTOY_JSON *json, void *p)
vtoy_json_get_string(child, "ventoy_color", sizeof(data->ventoy_color), data->ventoy_color);
vtoy_json_get_int(child, "default_file", &(data->default_file));
vtoy_json_get_int(child, "resolution_fit", &(data->resolution_fit));
vtoy_json_get_string(child, "gfxmode", sizeof(data->gfxmode), data->gfxmode);
vtoy_json_get_string(child, "serial_param", sizeof(data->serial_param), data->serial_param);
@@ -4279,6 +4287,7 @@ static int ventoy_parse_theme(VTOY_JSON *json, void *p)
if (node)
{
data->default_file = 0;
data->resolution_fit = 0;
pnode = zalloc(sizeof(path_node));
if (pnode)

View File

@@ -100,6 +100,7 @@ typedef struct path_node
typedef struct data_theme
{
int default_file;
int resolution_fit;
path_node *filelist;
int display_mode;
char gfxmode[32];

View File

@@ -1 +1 @@
20221221 12:11:59
20221204 15:15:33

View File

@@ -757,7 +757,7 @@
<footer class="main-footer">
<div class="pull-right hidden-xs">
<b id="plugson_build_date">20221221 12:11:59</b>
<b id="plugson_build_date">20221204 15:15:33</b>
</div>
<strong><a href="https://www.ventoy.net" target="_blank">https://www.ventoy.net</a></strong>
</footer>
@@ -777,10 +777,10 @@
<script src="/static/js/jQuery-2.1.4.min.js"></script>
<!-- jquery validate -->
<script src="/static/js/jquery.validate.min.js"></script>
<script src="/static/js/jquery.validate.vtoymethods.js?v=103"></script>
<script src="/static/js/jquery.validate.vtoymethods.js?v=106"></script>
<script src="/static/js/jquery.vtoy.alert.js?v=103"></script>
<script src="/static/js/vtoy.js?v=103"></script>
<script src="/static/js/jquery.vtoy.alert.js?v=106"></script>
<script src="/static/js/vtoy.js?v=106"></script>
<script src="/static/js/md5.min.js"></script>
<!-- Bootstrap 3.3.5 -->

View File

@@ -71,6 +71,50 @@
</div><!-- /.box-body -->
</div><!-- /.box -->
<div class="box box-primary box-solid" id='resolution_fit_div'>
<div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">resolution_fit
<span id="id_span_desc_cn"> —— 按照分辨率过滤</span></h3>
<div class="box-tools pull-right">
<button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div><!-- /.box-tools -->
</div><!-- /.box-header -->
<div class="box-body no-padding">
<table class="table table-bordered no-padding">
<tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td>
<label class="radio-inline">
<input type="radio" id="id_ctrl_radio_res_fit0" name="id_ctrl_radio_res_fit" data-type="0" value="0"> <span style="font-weight:bold;">0</span>
</label>&nbsp;&nbsp;&nbsp;&nbsp;
<label class="radio-inline">
<input type="radio" id="id_ctrl_radio_res_fit1" name="id_ctrl_radio_res_fit" data-type="1" value="1"> <span style="font-weight:bold;">1</span>
</label>
</td>
</tr>
<tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td>当设置多个主题时,在随机选择时是否按照当前分辨率过滤。&nbsp;&nbsp;
<code style="font-weight: bold;">0</code> 不过滤 &nbsp;&nbsp;
<code style="font-weight: bold;">1</code> 过滤 <br/>
注意,这个选项必须在上面设置了多个主题配置文件,同时 "默认" 设置为 “随机选择” 时才有效,其他情况下均无效。<br/>
关于这个选项的详细解释,请参考 <a href="https://www.ventoy.net/cn/plugin_theme.html#vtoy_theme_res_fit">resolution_fit 选项说明</a>
</td>
</tr>
<tr id="tr_title_desc_en">
<td class="td_ctrl_col">Option Description</td>
<td>
Filter by current resolution when you set more than one themes. &nbsp;&nbsp;
<code style="font-weight: bold;">0</code> No filter &nbsp;&nbsp
<code style="font-weight: bold;">1</code> Filter <br/>
You can refer <a href="https://www.ventoy.net/en/plugin_theme.html#vtoy_theme_res_fit">About resolution_fit</a> for details about this option.
</td>
</tr>
</table>
</div><!-- /.box-body -->
</div><!-- /.box -->
<div class="box box-primary box-solid">
<div class="box-header with-border">
@@ -239,6 +283,8 @@
} else {
data.display_mode = 0;
}
data.resolution_fit = parseInt($('input:radio[name=id_ctrl_radio_res_fit]:checked').val());
}
function VtoySaveCurrentPage() {
@@ -249,6 +295,7 @@
method : 'save_theme',
index: current_tab_index,
display_mode: data.display_mode,
resolution_fit: data.resolution_fit,
gfxmode: data.gfxmode,
default_file: data.default_file
}, function(e) {
@@ -269,6 +316,12 @@
var $tbl = $("#id_theme_tbl_file tbody");
$tbl.empty();
if (list.length > 1) {
$('#resolution_fit_div').show();
} else {
$('#resolution_fit_div').hide();
}
for (var i = 0; i < list.length; i++) {
var $tr;
td1 = '<td>' + (i + 1) + '</td>';
@@ -365,6 +418,8 @@
$('select[id=id_theme_sel_dismode').val('GUI');
}
$('input:radio[name=id_ctrl_radio_res_fit]')[data.resolution_fit].checked = true;
FillThemeFileTable(data.filelist, data.default_file);
FillThemeFontTable(data.fontslist);
}
@@ -515,6 +570,8 @@
$('select[id=id_theme_sel_gfxmode]').change(VtoySaveCurrentPage);
$('select[id=id_theme_sel_dismode]').change(VtoySaveCurrentPage);
$('#id_ctrl_radio_res_fit0').change(VtoySaveCurrentPage);
$('#id_ctrl_radio_res_fit1').change(VtoySaveCurrentPage);
$('#id_tab_theme a[href="#tab_0"]').click(OnClickMultiModeTab);
$('#id_tab_theme a[href="#tab_1"]').click(OnClickMultiModeTab);