diff options
author | elijah <elijah@riseup.net> | 2017-04-19 19:51:50 -0700 |
---|---|---|
committer | Kali Kaneko (leap communications) <kali@leap.se> | 2017-04-20 18:08:32 +0200 |
commit | 3810cfb433308dd9ced9c2185ecbb5f206e07f4c (patch) | |
tree | 73aceadb032cdfa9ba5c81944c05bc8e42cdc385 /ui/app/components/main_panel/app_buttons.js | |
parent | 73836440b099f10174bc0b79ad4b8c85fcb9caf1 (diff) |
[feat] added app buttons (quit & about bitmask)
- Closes #8803
Diffstat (limited to 'ui/app/components/main_panel/app_buttons.js')
-rw-r--r-- | ui/app/components/main_panel/app_buttons.js | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/ui/app/components/main_panel/app_buttons.js b/ui/app/components/main_panel/app_buttons.js new file mode 100644 index 00000000..cda97b1c --- /dev/null +++ b/ui/app/components/main_panel/app_buttons.js @@ -0,0 +1,123 @@ +import React from 'react' +import {Modal, Button, ButtonGroup, ButtonToolbar, Glyphicon} from 'react-bootstrap' + +import App from 'app' +import Splash from 'components/splash' +import bitmask from 'lib/bitmask' + +export default class AppButtons extends React.Component { + + static get defaultProps() {return{ + }} + + constructor(props) { + super(props) + + this.state = { + showAbout: false, + version: null + } + + // prebind: + this.showAbout = this.showAbout.bind(this) + this.hideAbout = this.hideAbout.bind(this) + this.quit = this.quit.bind(this) + this.openBugReport = this.openBugReport.bind(this) + this.openDonate = this.openDonate.bind(this) + this.openCode = this.openCode.bind(this) + } + + showAbout() { + bitmask.core.version().then(result => { + this.setState({version: result.version_core}) + }) + this.setState({showAbout: true}) + } + + hideAbout() { + this.setState({showAbout: false}) + } + + quit() { + App.show('bye_splash') + } + + openURL(url) { + if (typeof(bitmaskApp) == 'undefined') { + window.open(url) + } else { + bitmaskApp.openSystemBrowser(url) + } + } + + openBugReport() { this.openURL('https://0xacab.org/leap/bitmask-dev') } + openDonate() { this.openURL('https://leap.se/donate') } + openCode() { this.openURL('https://leap.se/source') } + + render() { + let style = {} + let quitButton = null + let aboutButton = null + let aboutModal = null + + quitButton = ( + <Button onClick={this.quit} className="btn-inverse"> + <Glyphicon glyph="off" /> + </Button> + ) + + aboutButton = ( + <Button onClick={this.showAbout} className="btn-inverse"> + <Glyphicon glyph="info-sign" /> + </Button> + ) + + if (this.state.showAbout) { + aboutModal = ( + <Modal show={true} onHide={this.hideAbout}> + <Splash speed="fast" mask={true} fullscreen={false} /> + <Modal.Body> + <h2><b>Bitmask</b></h2> + <p> + Bitmask Desktop Client, Version {this.state.version} + </p> + <p> + Bitmask is Free Software, released under the GNU General Public License, version 3.<br/> + Copyright 2017 LEAP Encryption Access Project. + </p> + <p> + The Bitmask application is lovingly hand-crafted by developers + all over the world. Development is principally sponsored by the + LEAP Encryption Access Project, an organization dedicated to + defending democracy by protecting the right to whisper. + </p> + <ButtonToolbar> + <Button onClick={this.hideAbout}> + <Glyphicon glyph="remove" /> Close + </Button> + <Button onClick={this.openBugReport}> + <Glyphicon glyph="alert" /> Report Bug + </Button> + <Button onClick={this.openDonate}> + <Glyphicon glyph="heart" /> Donate + </Button> + <Button onClick={this.openCode}> + <Glyphicon glyph="circle-arrow-down" /> Clone Source + </Button> + </ButtonToolbar> + </Modal.Body> + </Modal> + ) + } + + return ( + <ButtonToolbar className="app-buttons"> + {quitButton} + {aboutButton} + {aboutModal} + </ButtonToolbar> + ) + } + + +} |