Skip to content

Commit

Permalink
feat: add transfer speed setting
Browse files Browse the repository at this point in the history
  • Loading branch information
jjandxa committed May 26, 2019
1 parent 03cfb01 commit 55a9ba6
Show file tree
Hide file tree
Showing 3 changed files with 145 additions and 0 deletions.
138 changes: 138 additions & 0 deletions src/renderer/components/Preference/Basic.vue
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,38 @@
{{ $t('preferences.mas-default-dir-tips') }}
</div>
</el-form-item>
<el-form-item :label="`${$t('preferences.transfer-setting')}: `" :label-width="formLabelWidth">
<el-col class="form-item-sub" :span="24">
{{ $t('preferences.transfer-speed-upload') }}
<el-radio-group class="el-radio-group-margin-left" v-model="maxOverallUploadLimitRadio">
<el-radio :label="true">{{ $t('preferences.transfer-speed-no-set') }}</el-radio>
<el-radio :label="false">
{{ $t('preferences.transfer-speed-set') }}
<el-input class="download-speed-input" type="number" v-model="maxOverallUploadLimitValue">
<el-select v-model="maxOverallUploadLimitUnit" slot="append">
<el-option label="K" value="K"></el-option>
<el-option label="M" value="M"></el-option>
</el-select>
</el-input>
</el-radio>
</el-radio-group>
</el-col>
<el-col class="form-item-sub" :span="24">
{{ $t('preferences.transfer-speed-download') }}
<el-radio-group class="el-radio-group-margin-left" v-model="maxOverallDownloadLimitRadio">
<el-radio :label="true">{{ $t('preferences.transfer-speed-no-set') }}</el-radio>
<el-radio :label="false">
{{ $t('preferences.transfer-speed-set') }}
<el-input class="download-speed-input" type="number" v-model="maxOverallDownloadLimitValue">
<el-select v-model="maxOverallDownloadLimitUnit" slot="append">
<el-option label="K" value="K"></el-option>
<el-option label="M" value="M"></el-option>
</el-select>
</el-input>
</el-radio>
</el-radio-group>
</el-col>
</el-form-item>
<el-form-item :label="`${$t('preferences.task-manage')}: `" :label-width="formLabelWidth">
<el-col class="form-item-sub" :span="24">
{{ $t('preferences.max-concurrent-downloads') }}
Expand Down Expand Up @@ -98,6 +130,17 @@
</el-main>
</el-container>
</template>
<style>
.el-input-group.download-speed-input {
width: 50%;
}
.el-input-group .el-select .el-input {
width: 60px;
}
.download-speed-input input::-webkit-outer-spin-button, .download-speed-input input::-webkit-inner-spin-button {
-webkit-appearance: none;
}
</style>

<script>
import is from 'electron-is'
Expand All @@ -113,6 +156,8 @@
lastCheckUpdateTime,
maxConcurrentDownloads,
maxConnectionPerServer,
maxOverallUploadLimit,
maxOverallDownloadLimit,
newTaskShowDownloading,
openAtLogin,
resumeAllWhenAppLaunched,
Expand All @@ -127,6 +172,8 @@
lastCheckUpdateTime,
maxConcurrentDownloads,
maxConnectionPerServer,
maxOverallUploadLimit,
maxOverallDownloadLimit,
newTaskShowDownloading,
openAtLogin,
resumeAllWhenAppLaunched,
Expand Down Expand Up @@ -155,6 +202,88 @@
downloadDir: function () {
return prettifyDir(this.form.dir)
},
maxOverallUploadLimitValue: {
get: function () {
let value = this.form.maxOverallUploadLimit
if (typeof value === 'string') {
return value.substring(0, value.length - 1)
}
return this.form.maxOverallUploadLimit
},
set: function (value) {
value = this.fixSpeedInputValue(value)
this.form.maxOverallUploadLimit = value + this.maxOverallUploadLimitUnit
}
},
maxOverallUploadLimitUnit: {
get: function () {
let value = this.form.maxOverallUploadLimit
if (typeof value === 'string') {
return value.substring(value.length - 1, value.length)
}
return 'K'
},
set: function (value) {
this.form.maxOverallUploadLimit = this.maxOverallUploadLimitValue + value
}
},
maxOverallUploadLimitRadio: {
get: function () {
let value = this.form.maxOverallUploadLimit
if (typeof value === 'string') {
return value.startsWith('0')
}
return value === 0
},
set: function (value) {
if (value) {
this.form.maxOverallUploadLimit = 0
} else {
this.form.maxOverallUploadLimit = 128
}
}
},
maxOverallDownloadLimitValue: {
get: function () {
let value = this.form.maxOverallDownloadLimit
if (typeof value === 'string') {
return value.substring(0, value.length - 1)
}
return this.form.maxOverallDownloadLimit
},
set: function (value) {
value = this.fixSpeedInputValue(value)
this.form.maxOverallDownloadLimit = value + this.maxOverallDownloadLimitUnit
}
},
maxOverallDownloadLimitUnit: {
get: function () {
let value = this.form.maxOverallDownloadLimit
if (typeof value === 'string') {
return value.substring(value.length - 1, value.length)
}
return 'K'
},
set: function (value) {
this.form.maxOverallDownloadLimit = this.maxOverallDownloadLimitValue + value
}
},
maxOverallDownloadLimitRadio: {
get: function () {
let value = this.form.maxOverallDownloadLimit
if (typeof value === 'string') {
return value.startsWith('0')
}
return value === 0
},
set: function (value) {
if (value) {
this.form.maxOverallDownloadLimit = 0
} else {
this.form.maxOverallDownloadLimit = 128
}
}
},
...mapState('preference', {
config: state => state.config
})
Expand Down Expand Up @@ -187,6 +316,15 @@
},
resetForm (formName) {
this.form = initialForm(this.$store.state.preference.config)
},
fixSpeedInputValue (value) {
if (!value) {
return 0
}
if (typeof value === 'string' && value.startsWith('0')) {
return this.fixSpeedInputValue(value.substring(1, value.length))
}
return value
}
}
}
Expand Down
2 changes: 2 additions & 0 deletions src/shared/configKeys.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ const systemKeys = [
'max-resume-failure-tries',
'max-tries',
'max-upload-limit',
'max-overall-download-limit',
'max-overall-upload-limit',
'metalink-base-uri',
'metalink-enable-unique-protocol',
'metalink-language',
Expand Down
5 changes: 5 additions & 0 deletions src/shared/locales/zh-CN/preferences.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ export default {
'keep-window-state': '恢复上次退出时窗口的大小和位置',
'auto-resume-all': '自动开始未完成的任务',
'default-dir': '默认下载路径',
'transfer-setting': '传输设置',
'transfer-speed-set': '限速为',
'transfer-speed-upload': '上传',
'transfer-speed-download': '下载',
'transfer-speed-no-set': '不限速',
'mas-default-dir-tips': '因 App Store 的沙箱权限限制,默认下载路径建议设置为您的「下载」目录',
'task-manage': '任务管理',
'max-concurrent-downloads': '同时下载的最大任务数',
Expand Down

0 comments on commit 55a9ba6

Please sign in to comment.