/** * @author oldj * @blog http://oldj.net */ 'use strict' import React from 'react' import R from 'ramda' import { Checkbox, Input, Radio, Select, Tabs } from 'antd' import MyFrame from './MyFrame' import classnames from 'classnames' import Agent from '../Agent' import { version as current_version } from '../../app/version' import formatVersion from '../../app/libs/formatVersion' import CodeMirror from 'react-codemirror' import 'codemirror/mode/shell/shell' import './PreferencesPrompt.less' const RadioGroup = Radio.Group const Option = Select.Option 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) { super(props) this.state = { show: false, user_language: '', after_cmd: '', choice_mode: 'multiple', auto_launch: false, hide_at_launch: false, lang_list: [], send_usage_data: true, update_found: false // 发现新版本 } Agent.pact('getLangList') .then(lang_list => this.setState({lang_list})) } componentDidMount () { Agent.on('show_preferences', () => { Agent.pact('getPref') .then(pref => { this.setState(Object.assign({}, pref, {show: true})) console.log(pref) }) }) Agent.on('update_found', (v) => { console.log(v) this.setState({ update_found: true }) }) } onOK () { this.setState({ show: false }, () => { let prefs = R.pick(pref_keys, this.state) Agent.pact('setPref', prefs) .then(() => { setTimeout(() => { Agent.pact('relaunch') }, 200) }) }) } onCancel () { this.setState({ show: false }) } getLanguageOptions () { return this.state.lang_list.map(({key, name}, idx) => { return ( ) }) } updateLangKey (v) { this.setState({user_language: v}) } updateChoiceMode (v) { this.setState({ choice_mode: v }) } updateAfterCmd (v) { this.setState({ after_cmd: v }) } updateAutoLaunch (v) { this.setState({ auto_launch: v }) // todo set auto launch } updateMinimizeAtLaunch (v) { this.setState({ hide_at_launch: v }) } prefLanguage () { let {lang} = this.props return (
{lang.language}
{lang.should_restart_after_change_language}
) } prefChoiceMode () { let {lang} = this.props return (
{lang.pref_choice_mode}
this.updateChoiceMode(e.target.value)} value={this.state.choice_mode} > {lang.pref_choice_mode_single} {lang.pref_choice_mode_multiple}
) } prefAfterCmd () { let {lang} = this.props let options = { mode: 'shell' } return (
{lang.pref_after_cmd}
{lang.pref_after_cmd_info}
{/* this.updateAfterCmd(e.target.value)}*/} {/*/>*/} this.updateAfterCmd(v)} options={options} />
) } prefAutoLaunch () { let {lang} = this.props return (
this.updateAutoLaunch(e.target.checked)} > {lang.auto_launch}
) } prefMinimizeAtLaunch () { let {lang} = this.props return (
this.updateMinimizeAtLaunch(e.target.checked)} > {lang.hide_at_launch}
) } prefAdvanced () { let {lang} = this.props return (
{lang.pref_tab_usage_data_title}
{lang.pref_tab_usage_data_desc}
this.setState({send_usage_data: e.target.checked})} > {lang.pref_tab_usage_data_label}
) } static openDownloadPage () { Agent.pact('openUrl', require('../../app/configs').url_download) } body () { let {lang} = this.props let height = 240 return (
{/*
{SH_Agent.lang.hosts_title}
*/} {/*
*/} {/*
*/}
{formatVersion(current_version)}
{this.prefLanguage()} {this.prefChoiceMode()} {/*{this.prefAutoLaunch()}*/} {this.prefMinimizeAtLaunch()} {this.prefAfterCmd()} {this.prefAdvanced()}
) } render () { let {lang} = this.props return ( this.onOK()} onCancel={() => this.onCancel()} cancel_title={lang.cancel} okText={lang.set_and_relaunch_app} lang={lang} /> ) } }