Skip to content

Commit

Permalink
Add options for reaching the last file and last folder
Browse files Browse the repository at this point in the history
  • Loading branch information
hbl917070 committed Oct 13, 2024
1 parent 4340fae commit 3b83d88
Show file tree
Hide file tree
Showing 5 changed files with 309 additions and 11 deletions.
26 changes: 26 additions & 0 deletions Www/ejs/SettingWindow/SettingWindow.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,32 @@
</select>
</div>

<div class="text-title" i18n="sw.other.reachLastFile">
到達最後一個檔案時
</div>
<div class="text-content">
<select class="text-input" id="select-reachLastFile">
<option value="none" i18n="sw.other.doNothing"> 不做任何事情 </option>
<option value="firstFile" i18n="sw.other.firstFile"> 回到第一個檔案 </option>
<option value="nextDir" i18n="sw.other.nextDir"> 前往下一個資料夾 </option>
<option value="noneWithPrompt" i18n="sw.other.noneWithPrompt"> 不做任何事情,並顯示提示 </option>
<option value="firstFileWithPrompt" i18n="sw.other.firstFileWithPrompt"> 回到第一個檔案,並顯示提示 </option>
<option value="nextDirWithPrompt" i18n="sw.other.nextDirWithPrompt"> 前往下一個資料夾,並顯示提示 </option>
</select>
</div>

<div class="text-title" i18n="sw.other.reachLastDir">
到達最後一個資料夾時
</div>
<div class="text-content">
<select class="text-input" id="select-reachLastDir">
<option value="none" i18n="sw.other.doNothing"> 不做任何事情 </option>
<option value="firstDir" i18n="sw.other.firstDir"> 回到第一個資料夾 </option>
<option value="noneWithPrompt" i18n="sw.other.noneWithPrompt"> 不做任何事情,並顯示提示 </option>
<option value="firstDirWithPrompt" i18n="sw.other.firstDirWithPrompt"> 回到第一個資料夾,並顯示提示 </option>
</select>
</div>

<div class="text-title">
<span i18n="sw.other.enableTouchpadGestures"> 啟用觸控板手勢 </span>
<div class="img-help" data-i18n="sw.other.enableTouchpadGesturesTooltip">
Expand Down
104 changes: 104 additions & 0 deletions Www/lang/langData.js
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,57 @@ var langData = {
"ja": "最後に挿入",
},

reachLastFile: {
"zh-TW": "到達最後一個檔案時",
"en": "When reaching the last file",
"ja": "最後のファイルに到達したとき",
},
doNothing: {
"zh-TW": "不做任何事情",
"en": "Do nothing",
"ja": "何もしない",
},
firstFile: {
"zh-TW": "回到第一個檔案",
"en": "Back to the first file",
"ja": "最初のファイルに戻る",
},
nextDir: {
"zh-TW": "前往下一個資料夾",
"en": "Go to the next folder",
"ja": "次のフォルダに移動",
},
noneWithPrompt: {
"zh-TW": "不做任何事情,並顯示提示",
"en": "Do nothing and show prompt",
"ja": "何もせず、プロンプトを表示する",
},
firstFileWithPrompt: {
"zh-TW": "回到第一個檔案,並顯示提示",
"en": "Back to the first file and show prompt",
"ja": "最初のファイルに戻り、プロンプトを表示する",
},
nextDirWithPrompt: {
"zh-TW": "前往下一個資料夾,並顯示提示",
"en": "Go to the next folder and show prompt",
"ja": "次のフォルダに移動し、プロンプトを表示する",
},

reachLastDir: {
"zh-TW": "到達最後一個資料夾時",
"en": "When reaching the last folder",
"ja": "最後のフォルダに到達したとき",
},
firstDir: {
"zh-TW": "回到第一個資料夾",
"en": "Back to the first folder",
"ja": "最初のフォルダに戻る",
},
firstDirWithPrompt: {
"zh-TW": "回到第一個資料夾,並顯示提示",
"en": "Back to the first folder and show prompt",
"ja": "最初のフォルダに戻り、プロンプトを表示する",
},

enableTouchpadGestures: {
"zh-TW": "啟用觸控板手勢",
Expand Down Expand Up @@ -2035,6 +2086,59 @@ var langData = {
"ja": "Tiefsee のすべての設定をデフォルト値に戻してもよろしいですか?<br>(プラグインやファイルソートには影響しません)",
},
//#endregion

//#region 到達最後一個檔案時
reachLastFile: {
"zh-TW": "已經是最後一個檔案",
"en": "This is the last file",
"ja": "これが最後のファイルです",
},
reachFirstFile: {
"zh-TW": "已經是第一個檔案",
"en": "This is the first file",
"ja": "これが最初のファイルです",
},
firstFile: {
"zh-TW": "載入第一個檔案",
"en": "Load the first file",
"ja": "最初のファイルを読み込む",
},
lastFile: {
"zh-TW": "載入最後一個檔案",
"en": "Load the last file",
"ja": "最後のファイルを読み込む",
},
nextDir: {
"zh-TW": "載入下一個資料夾",
"en": "Load the next folder",
"ja": "次のフォルダを読み込む",
},
prevDir: {
"zh-TW": "載入上一個資料夾",
"en": "Load the previous folder",
"ja": "前のフォルダを読み込む",
},
reachLastDir: {
"zh-TW": "已經是最後一個資料夾",
"en": "This is the last folder",
"ja": "これが最後のフォルダです",
},
reachFirstDir: {
"zh-TW": "已經是第一個資料夾",
"en": "This is the first folder",
"ja": "これが最初のフォルダです",
},
firstDir: {
"zh-TW": "載入第一個資料夾",
"en": "Load the first folder",
"ja": "最初のフォルダを読み込む",
},
lastDir: {
"zh-TW": "載入最後一個資料夾",
"en": "Load the last folder",
"ja": "最後のフォルダを読み込む",
},
//#endregion
},

exif: {
Expand Down
4 changes: 4 additions & 0 deletions Www/ts/Config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,10 @@ class Config {
whenInsertingFile: "auto",
/** 啟用觸控板手勢 */
enableTouchpadGestures: false,
/** 到達最後一個檔案時 */
reachLastFile : "firstFile",
/** 到達最後一個資料夾時 */
reachLastDir : "firstDir",
/** 語言 */
lang: "",
},
Expand Down
169 changes: 159 additions & 10 deletions Www/ts/MainWindow/FileLoad.ts
Original file line number Diff line number Diff line change
Expand Up @@ -281,19 +281,77 @@ class FileLoad {
/**
* 載入下一個資料夾
*/
async function nextDir() {
async function nextDir(type?: string) {

_flagDir += 1;
if (_flagDir >= _arDirKey.length) { _flagDir = 0; }
showDir();

if (_flagDir >= _arDirKey.length) {

if (type === undefined) {
type = M.config.settings.other.reachLastDir;
}

// 不做任何事情
if (type === "none") {
_flagDir = _arDirKey.length - 1;
}
// 回到第一個資料夾
else if (type === "firstDir") {
_flagDir = 0;
showDir();
}
// 不做任何事情,並顯示提示
else if (type === "noneWithPrompt") {
Toast.show(M.i18n.t("msg.reachLastDir"), 1000 * 3); // 已經是最後一個資料夾
_flagDir = _arDirKey.length - 1;
}
// 回到第一個資料夾,並顯示提示
else if (type === "firstDirWithPrompt") {
Toast.show(M.i18n.t("msg.firstDir"), 1000 * 3); // 載入第一個資料夾
_flagDir = 0;
showDir();
}
} else {
showDir();
}
}

/**
* 載入上一個資料夾
*/
async function prevDir() {
async function prevDir(type?: string) {

_flagDir -= 1;
if (_flagDir < 0) { _flagDir = _arDirKey.length - 1; }
showDir();

if (_flagDir < 0) {

if (type === undefined) {
type = M.config.settings.other.reachLastDir;
}

// 不做任何事情
if (type === "none") {
_flagDir = 0;
}
// 前往最後一個資料夾
else if (type === "firstDir") {
_flagDir = _arDirKey.length - 1;
showDir();
}
// 不做任何事情,並顯示提示
else if (type === "noneWithPrompt") {
Toast.show(M.i18n.t("msg.reachFirstDir"), 1000 * 3); // 已經是第一個資料夾
_flagDir = 0;
}
// 前往最後一個資料夾,並顯示提示
else if (type === "firstDirWithPrompt") {
Toast.show(M.i18n.t("msg.lastDir"), 1000 * 3); // 載入最後一個資料夾
_flagDir = _arDirKey.length - 1;
showDir();
}
} else {
showDir();
}
}

/**
Expand Down Expand Up @@ -663,9 +721,53 @@ class FileLoad {
if (_groupType === GroupType.none || _groupType === GroupType.welcome) {
return;
}

_flagFile += 1;
if (_flagFile >= _arFile.length) { _flagFile = 0; }
showFile();

if (_flagFile >= _arFile.length) {
const reachLastFile = M.config.settings.other.reachLastFile;
// 不做任何事情
if (reachLastFile === "none") {
_flagFile = _arFile.length - 1;
}
// 回到第一個檔案
else if (reachLastFile === "firstFile") {
_flagFile = 0;
showFile();
}
// 前往下一個資料夾
else if (reachLastFile === "nextDir") {
if (_flagDir >= _arDirKey.length - 1) {
Toast.show(M.i18n.t("msg.reachLastDir"), 1000 * 3); // 已經是最後一個資料夾
_flagFile = _arFile.length - 1;
} else {
nextDir("none");
}
}
// 不做任何事情,並顯示提示
else if (reachLastFile === "noneWithPrompt") {
Toast.show(M.i18n.t("msg.reachLastFile"), 1000 * 3); // 已經是最後一個檔案
_flagFile = _arFile.length - 1;
}
// 回到第一個檔案,並顯示提示
else if (reachLastFile === "firstFileWithPrompt") {
Toast.show(M.i18n.t("msg.firstFile"), 1000 * 3); // 載入第一個檔案
_flagFile = 0;
showFile();
}
// 前往下一個資料夾,並顯示提示
else if (reachLastFile === "nextDirWithPrompt") {
if (_flagDir >= _arDirKey.length - 1) {
Toast.show(M.i18n.t("msg.reachLastDir"), 1000 * 3); // 已經是最後一個資料夾
_flagFile = _arFile.length - 1;
} else {
Toast.show(M.i18n.t("msg.nextDir"), 1000 * 3); // 載入下一個資料夾
nextDir("none");
}
}
} else {
showFile();
}
}

/**
Expand All @@ -679,9 +781,56 @@ class FileLoad {
if (_groupType === GroupType.none || _groupType === GroupType.welcome) {
return;
}

_flagFile -= 1;
if (_flagFile < 0) { _flagFile = _arFile.length - 1; }
showFile();

if (_flagFile < 0) {
const reachLastFile = M.config.settings.other.reachLastFile;
// 不做任何事情
if (reachLastFile === "none") {
_flagFile = 0;
}
// 回到最後一個檔案
else if (reachLastFile === "firstFile") {
_flagFile = _arFile.length - 1;
showFile();
}
// 前往上一個資料夾的最後一個檔案
else if (reachLastFile === "nextDir") {
if (_flagDir === 0) {
// 已經是第一個資料夾
Toast.show(M.i18n.t("msg.reachFirstDir"), 1000 * 3);
_flagFile = 0;
} else {
prevDir("none");
// TODO 需要處理成最後一個檔案
}
}
// 不做任何事情,並顯示提示
else if (reachLastFile === "noneWithPrompt") {
Toast.show(M.i18n.t("msg.reachFirstFile"), 1000 * 3); // 已經是第一個檔案
_flagFile = 0;
}
// 回到最後一個檔案,並顯示提示
else if (reachLastFile === "firstFileWithPrompt") {
Toast.show(M.i18n.t("msg.lastFile"), 1000 * 3); // 載入最後一個檔案
_flagFile = _arFile.length - 1;
showFile();
}
// 前往上一個資料夾的最後一個檔案,並顯示提示
else if (reachLastFile === "nextDirWithPrompt") {
if (_flagDir === 0) {
Toast.show(M.i18n.t("msg.reachFirstDir"), 1000 * 3); // 已經是第一個資料夾
_flagFile = 0;
} else {
Toast.show(M.i18n.t("msg.prevDir"), 1000 * 3); // 載入上一個資料夾
prevDir("none");
// TODO 需要處理成最後一個檔案
}
}
} else {
showFile();
}
}

/**
Expand Down
17 changes: 16 additions & 1 deletion Www/ts/SettingWindow/SettingWindow.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1574,13 +1574,28 @@ class SettingWindow {
// 偵測到檔案新增時,插入於
const select_whenInsertingFile = getDom("#select-whenInsertingFile") as HTMLSelectElement;
select_whenInsertingFile.value = _config.settings["other"]["whenInsertingFile"];

select_whenInsertingFile.addEventListener("change", () => {
let val = select_whenInsertingFile.value;
_config.settings["other"]["whenInsertingFile"] = val;
appleSettingOfMain();
});

// 到達最後一個檔案時
const select_reachLastFile = getDom("#select-reachLastFile") as HTMLSelectElement;
select_reachLastFile.value = _config.settings.other.reachLastFile;
select_reachLastFile.addEventListener("change", () => {
_config.settings.other.reachLastFile = select_reachLastFile.value;
appleSettingOfMain();
});

// 到達最後一個資料夾時
const select_reachLastDir = getDom("#select-reachLastDir") as HTMLSelectElement;
select_reachLastDir.value = _config.settings.other.reachLastDir;
select_reachLastDir.addEventListener("change", () => {
_config.settings.other.reachLastDir = select_reachLastDir.value;
appleSettingOfMain();
});

// 啟用觸控板手勢
const switch_touchpadGesture = getDom("#switch-enableTouchpadGestures") as HTMLInputElement;
switch_touchpadGesture.checked = _config.settings.other.enableTouchpadGestures;
Expand Down

0 comments on commit 3b83d88

Please sign in to comment.