|
|
@@ -6,7 +6,8 @@
|
|
|
'use strict'
|
|
|
|
|
|
import React from 'react'
|
|
|
-import { Checkbox, Input, Radio, Select } from 'antd'
|
|
|
+import R from 'ramda'
|
|
|
+import { Checkbox, Input, Radio, Select, Tabs } from 'antd'
|
|
|
import MyFrame from './frame'
|
|
|
import classnames from 'classnames'
|
|
|
import Agent from '../Agent'
|
|
|
@@ -16,7 +17,8 @@ import './preferences.less'
|
|
|
|
|
|
const RadioGroup = Radio.Group
|
|
|
const Option = Select.Option
|
|
|
-const pref_keys = ['after_cmd', 'auto_launch', 'choice_mode', 'hide_at_launch', 'is_dock_icon_hidden', 'user_language']
|
|
|
+const TabPane = Tabs.TabPane
|
|
|
+const pref_keys = ['after_cmd', 'auto_launch', 'choice_mode', 'hide_at_launch', 'is_dock_icon_hidden', 'user_language', 'send_usage_data']
|
|
|
|
|
|
export default class PreferencesPrompt extends React.Component {
|
|
|
constructor (props) {
|
|
|
@@ -30,6 +32,7 @@ export default class PreferencesPrompt extends React.Component {
|
|
|
auto_launch: false,
|
|
|
hide_at_launch: false,
|
|
|
lang_list: [],
|
|
|
+ send_usage_data: true,
|
|
|
update_found: false // 发现新版本
|
|
|
}
|
|
|
|
|
|
@@ -58,13 +61,7 @@ export default class PreferencesPrompt extends React.Component {
|
|
|
this.setState({
|
|
|
show: false
|
|
|
}, () => {
|
|
|
- let prefs = {}
|
|
|
- let d = this.state
|
|
|
- pref_keys.map(k => {
|
|
|
- if (d.hasOwnProperty(k)) {
|
|
|
- prefs[k] = d[k]
|
|
|
- }
|
|
|
- })
|
|
|
+ let prefs = R.pick(pref_keys, this.state)
|
|
|
|
|
|
Agent.pact('setPref', prefs)
|
|
|
.then(() => {
|
|
|
@@ -124,16 +121,15 @@ export default class PreferencesPrompt extends React.Component {
|
|
|
|
|
|
return (
|
|
|
<div className="ln">
|
|
|
- <div className="title">{lang.language}</div>
|
|
|
- <div className="cnt">
|
|
|
+ <div>{lang.language}</div>
|
|
|
+ <div className="inform">{lang.should_restart_after_change_language}</div>
|
|
|
+ <div>
|
|
|
<Select
|
|
|
value={this.state.user_language || ''}
|
|
|
onChange={v => this.updateLangKey(v)}
|
|
|
>
|
|
|
{this.getLanguageOptions()}
|
|
|
</Select>
|
|
|
-
|
|
|
- <div className="inform">{lang.should_restart_after_change_language}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
)
|
|
|
@@ -144,8 +140,8 @@ export default class PreferencesPrompt extends React.Component {
|
|
|
|
|
|
return (
|
|
|
<div className="ln">
|
|
|
- <div className="title">{lang.pref_choice_mode}</div>
|
|
|
- <div className="cnt">
|
|
|
+ <div>{lang.pref_choice_mode}</div>
|
|
|
+ <div>
|
|
|
<RadioGroup
|
|
|
onChange={e => this.updateChoiceMode(e.target.value)}
|
|
|
value={this.state.choice_mode}
|
|
|
@@ -163,12 +159,12 @@ export default class PreferencesPrompt extends React.Component {
|
|
|
|
|
|
return (
|
|
|
<div className="ln">
|
|
|
- <div className="title">{lang.pref_after_cmd}</div>
|
|
|
- <div className="cnt">
|
|
|
+ <div>{lang.pref_after_cmd}</div>
|
|
|
+ <div>
|
|
|
<div className="inform">{lang.pref_after_cmd_info}</div>
|
|
|
<Input
|
|
|
type="textarea"
|
|
|
- rows={4}
|
|
|
+ rows={8}
|
|
|
defaultValue={this.state.after_cmd}
|
|
|
placeholder={lang.pref_after_cmd_placeholder}
|
|
|
onChange={(e) => this.updateAfterCmd(e.target.value)}
|
|
|
@@ -183,13 +179,12 @@ export default class PreferencesPrompt extends React.Component {
|
|
|
|
|
|
return (
|
|
|
<div className="ln">
|
|
|
- <div className="title">{lang.auto_launch}</div>
|
|
|
- <div className="cnt">
|
|
|
- <Checkbox
|
|
|
- value={this.state.auto_launch}
|
|
|
- onChange={(e) => this.updateAutoLaunch(e.target.checked)}
|
|
|
- />
|
|
|
- </div>
|
|
|
+ <Checkbox
|
|
|
+ value={this.state.auto_launch}
|
|
|
+ onChange={(e) => this.updateAutoLaunch(e.target.checked)}
|
|
|
+ >
|
|
|
+ {lang.auto_launch}
|
|
|
+ </Checkbox>
|
|
|
</div>
|
|
|
)
|
|
|
}
|
|
|
@@ -199,12 +194,30 @@ export default class PreferencesPrompt extends React.Component {
|
|
|
|
|
|
return (
|
|
|
<div className="ln">
|
|
|
- <div className="title">{lang.hide_at_launch}</div>
|
|
|
- <div className="cnt">
|
|
|
+ <Checkbox
|
|
|
+ checked={this.state.hide_at_launch}
|
|
|
+ onChange={(e) => this.updateMinimizeAtLaunch(e.target.checked)}
|
|
|
+ >
|
|
|
+ {lang.hide_at_launch}
|
|
|
+ </Checkbox>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ prefAdvanced () {
|
|
|
+ let {lang} = this.props
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div className="ln">
|
|
|
+ <div>{lang.pref_tab_usage_data_title}</div>
|
|
|
+ <div className="inform">{lang.pref_tab_usage_data_desc}</div>
|
|
|
+ <div>
|
|
|
<Checkbox
|
|
|
- checked={this.state.hide_at_launch}
|
|
|
- onChange={(e) => this.updateMinimizeAtLaunch(e.target.checked)}
|
|
|
- />
|
|
|
+ checked={this.state.send_usage_data}
|
|
|
+ onChange={(e) => this.setState({send_usage_data: e.target.checked})}
|
|
|
+ >
|
|
|
+ {lang.pref_tab_usage_data_label}
|
|
|
+ </Checkbox>
|
|
|
</div>
|
|
|
</div>
|
|
|
)
|
|
|
@@ -215,21 +228,39 @@ export default class PreferencesPrompt extends React.Component {
|
|
|
}
|
|
|
|
|
|
body () {
|
|
|
+ let {lang} = this.props
|
|
|
+
|
|
|
return (
|
|
|
<div ref="body">
|
|
|
{/*<div className="title">{SH_Agent.lang.hosts_title}</div>*/}
|
|
|
{/*<div className="cnt">*/}
|
|
|
{/*</div>*/}
|
|
|
<div
|
|
|
- className={classnames('current-version', {'update-found': this.state.update_found})}>
|
|
|
- <a href="#"
|
|
|
- onClick={PreferencesPrompt.openDownloadPage}>{formatVersion(current_version)}</a>
|
|
|
+ className={classnames('current-version', {'update-found': this.state.update_found})}
|
|
|
+ >
|
|
|
+ <a
|
|
|
+ href="#"
|
|
|
+ onClick={PreferencesPrompt.openDownloadPage}
|
|
|
+ >{formatVersion(current_version)}</a>
|
|
|
</div>
|
|
|
- {this.prefLanguage()}
|
|
|
- {this.prefChoiceMode()}
|
|
|
- {this.prefAfterCmd()}
|
|
|
- {/*{this.prefAutoLaunch()}*/}
|
|
|
- {this.prefMinimizeAtLaunch()}
|
|
|
+ <Tabs
|
|
|
+ defaultActiveKey="1"
|
|
|
+ tabPosition="left"
|
|
|
+ style={{minHeight: 240}}
|
|
|
+ >
|
|
|
+ <TabPane tab={lang.pref_tab_general} key="1">
|
|
|
+ {this.prefLanguage()}
|
|
|
+ {this.prefChoiceMode()}
|
|
|
+ {/*{this.prefAutoLaunch()}*/}
|
|
|
+ {this.prefMinimizeAtLaunch()}
|
|
|
+ </TabPane>
|
|
|
+ <TabPane tab={lang.pref_tab_custom_cmd} key="2">
|
|
|
+ {this.prefAfterCmd()}
|
|
|
+ </TabPane>
|
|
|
+ <TabPane tab={lang.pref_tab_advanced} key="3">
|
|
|
+ {this.prefAdvanced()}
|
|
|
+ </TabPane>
|
|
|
+ </Tabs>
|
|
|
</div>
|
|
|
)
|
|
|
}
|