add remove startup app btn

This commit is contained in:
Oguzhan Inan
2017-03-22 20:55:15 +03:00
parent 18e4873823
commit ef55e26b49
3 changed files with 107 additions and 40 deletions

View File

@@ -16,6 +16,10 @@ body {
-webkit-user-select: none;
}
button {
cursor: pointer;
}
[v-cloak] {
display: none;
}
@@ -177,6 +181,20 @@ body {
width: 500px;
}
.add-startup-app {
background-color: transparent;
border: 1px solid #293945;
padding: 8px 15px;
color: #eee;
float: right;
margin: 10px 0px 0px 0px;
border-radius: 4px;
}
.add-startup-app:hover {
background-color: #293945;
}
#uninstaller-table ul,
#system-service-table ul,
#startup-apps-table ul{
@@ -190,7 +208,9 @@ body {
#startup-apps-table ul li{
font-size:15px;
color:#aeb5bf;
margin: 10px 3px;
margin: 6px 3px;
float: left;
width: calc(100% - 68px);
background-color: #293945;
cursor: pointer;
border-radius: 4px;
@@ -238,12 +258,37 @@ body {
background-image: url(../img/app-uninstall.png);
}
.tdl-content li span {
display: block;
float: left;
width: 320px;
overflow: hidden;
text-overflow: ellipsis;
}
.remove-startup-app {
width: 24px;
height: 24px;
margin: -2px 10px 0px 0px;
background: transparent url(../img/app-uninstall.png) no-repeat;
display: none;
float: right;
border: 0;
}
.tdl-content li:hover .remove-startup-app {
display: block;
}
#uninstaller-table .tdl-content,
#system-service-table .tdl-content,
#startup-apps-table .tdl-content{
#system-service-table .tdl-content{
height:490px;
}
#startup-apps-table .tdl-content{
height:460px;
}
#installed-packages-title,
#system-service-title,
#startup-apps-title{
@@ -340,12 +385,17 @@ a.loader {
float: right;
margin: 10px 10px 0 0;
border-radius: 5px;
padding: 10px 25px;
color: #aeb5bf;
padding: 8px 20px;
color: #eee;
cursor: pointer;
position: relative;
background-color: #293945;
border: 0;
background-color: transparent;
border: 1px solid #293945;
}
#clean-btn:hover,
#system-scan-btn:hover {
background-color: #293945;
}
#system-scan-btn {
@@ -906,7 +956,7 @@ a.loader {
/*prompt style*/
.promptDialog {
position: fixed;
background-color: rgba(0,0,0,.3);
background-color: rgba(0,0,0,.4);
left: 0;
right: 0;
top: 0;
@@ -943,12 +993,12 @@ a.loader {
.dialog select {
color: #ddd;
border-radius: 4px;
padding: 8px 15px;
padding: 9px 15px;
width: 280px;
font-size: 15px;
border:0;
background-color: #293945;
margin: 10px 0px;
margin: 8px 0px;
}
.dialog button {

View File

@@ -23,22 +23,20 @@ var _propertiesReader2 = _interopRequireDefault(_propertiesReader);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = {
template: '<div id="startup-apps-table">\n\t\t\t\t\t<div id="startup-apps-title">\n\t\t\t\t\t\t<span style="padding:0;">System Startup Applications</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="tdl-content scroll">\n\t\t\t\t\t\t<span class="fl w100 empty-list" v-show="! apps.length" >\n\t\t\t\t\t\t\tNo startup apps found.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<ul v-show="apps.length">\n\t\t\t\t\t\t\t<li v-for="app in apps">\n\t\t\t\t\t\t\t\t{{ app.name }}\n\t\t\t\t\t\t\t\t<input type="checkbox" class="switch" :id="app.file" :checked="app.isStart" @change="statusChange" />\n\t\t\t\t\t\t\t\t<label :for="app.file"></label>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button @click="this.showPrompt = true" class="add-startup-app">Add Startup App</button>\n\t\t\t\t\t\n\t\t\t\t\t<div class="promptDialog" v-show="showPrompt">\n\t\t\t\t\t\t<div class="dialog">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<span>Application</span>\n\t\t\t\t\t\t\t\t<input type="text" v-model="appName" placeholder="App Name" />\n\t\t\t\t\t\t\t\t<input type="text" v-model="appComment" placeholder="App Comment" />\n\t\t\t\t\t\t\t\t<select v-model="execApp">\n\t\t\t\t\t\t\t\t\t<option selected>Choose App</option>\n\t\t\t\t\t\t\t\t\t<option v-for="app in executableApps">{{ app }}</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t\t<button @click="saveApp">Add</button>\n\t\t\t\t\t\t\t\t<button @click="cancelPrompt">Cancel</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>',
template: '<div id="startup-apps-table">\n\t\t\t\t\t<div id="startup-apps-title">\n\t\t\t\t\t\t<span style="padding:0;">System Startup Applications ({{apps.length}})</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="tdl-content scroll">\n\t\t\t\t\t\t<span class="fl w100 empty-list" v-show="! apps.length">\n\t\t\t\t\t\t\tNo startup apps found.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<ul v-show="apps.length">\n\t\t\t\t\t\t\t<li v-for="app in apps">\n\t\t\t\t\t\t\t\t<span>{{ app.name }}</span>\n\t\t\t\t\t\t\t\t<input type="checkbox" class="switch" :id="app.file" :checked="app.isStart" @change="statusChange" />\n\t\t\t\t\t\t\t\t<label :for="app.file"></label>\n\t\t\t\t\t\t\t\t<button :name="app.file" @click="removeApp" class="remove-startup-app"></button>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button @click="showPrompt = true" class="add-startup-app">Add Startup App</button>\n\t\t\t\t\t\n\t\t\t\t\t<div class="promptDialog" v-show="showPrompt">\n\t\t\t\t\t\t<div class="dialog">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<span>Application</span>\n\t\t\t\t\t\t\t\t<input type="text" v-model="appName" placeholder="App Name" />\n\t\t\t\t\t\t\t\t<input type="text" v-model="appComment" placeholder="App Comment" />\n\t\t\t\t\t\t\t\t<input type="text" v-model="appExec" placeholder="Command" />\n\t\t\t\t\t\t\t\t<button @click="saveApp">Add</button>\n\t\t\t\t\t\t\t\t<button @click="cancelPrompt">Cancel</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>',
data: function data() {
return {
apps: [],
executableApps: [],
showPrompt: false,
appName: '',
appComment: '',
execApp: 'Choose App'
appExec: ''
};
},
created: function created() {
var _this = this;
this.getApps();
this.executableApps = _fs2.default.readdirSync('/usr/bin');
_chokidar2.default.watch(_config.commands.autostartApps, { persistent: true, ignoreInitial: true }).on('add', function (path) {
return _this.getApps();
@@ -48,13 +46,25 @@ exports.default = {
},
methods: {
removeApp: function removeApp(e) {
_fs2.default.unlinkSync(_config.commands.autostartApps + e.target.name);
},
saveApp: function saveApp() {
var desktopFile = '[Desktop Entry]\n\t\t\t\t\t\t\t\tName=asdasd\n\t\t\t\t\t\t\t\tExec=Buka\n\t\t\t\t\t\t\t\tX-GNOME-Autostart-enabled=true\n\t\t\t\t\t\t\t\tType=Application\n\t\t\t\t\t\t\t\tTerminal=false\n\t\t\t\t\t\t\t\tComment=yorum';
if (this.appName && this.appComment && this.appExec) {
var desktopFile = '[Desktop Entry]\n\t\t\t\t\t\t\t\t\t\rName=' + this.appName + '\n\t\t\t\t\t\t\t\t\t\rExec=' + this.appExec + '\n\t\t\t\t\t\t\t\t\t\rComment=' + this.appComment + '\n\t\t\t\t\t\t\t\t\t\rType=ApplicationR\n\t\t\t\t\t\t\t\t\t\rTerminal=false\n\t\t\t\t\t\t\t\t\t\rX-GNOME-Autostart-enabled=true';
try {
_fs2.default.writeFileSync(_config.commands.autostartApps + this.appName + '.desktop', desktopFile);
} catch (err) {} finally {
this.cancelPrompt();
}
} else {
(0, _helpers.showMessage)('Do not leave required fields blank.', 'error');
}
},
cancelPrompt: function cancelPrompt() {
this.showPrompt = false;
this.appName = this.appComment = '';
this.execApp = 'Choose App';
this.appName = this.appComment = this.appExec = '';
},
getApps: function getApps() {
var _this2 = this;
@@ -104,8 +114,6 @@ exports.default = {
}
_fs2.default.writeFileSync(_config.commands.autostartApps + '/' + fileName, data);
(0, _helpers.showMessage)('Operation successfully.', 'success');
} catch (err) {
console.log(err);
(0, _helpers.showMessage)('Operation failed.', 'error');

View File

@@ -7,17 +7,18 @@ import properties from 'properties-reader'
export default {
template: `<div id="startup-apps-table">
<div id="startup-apps-title">
<span style="padding:0;">System Startup Applications</span>
<span style="padding:0;">System Startup Applications ({{apps.length}})</span>
</div>
<div class="tdl-content scroll">
<span class="fl w100 empty-list" v-show="! apps.length" >
<span class="fl w100 empty-list" v-show="! apps.length">
No startup apps found.
</span>
<ul v-show="apps.length">
<li v-for="app in apps">
{{ app.name }}
<span>{{ app.name }}</span>
<input type="checkbox" class="switch" :id="app.file" :checked="app.isStart" @change="statusChange" />
<label :for="app.file"></label>
<button :name="app.file" @click="removeApp" class="remove-startup-app"></button>
</li>
</ul>
</div>
@@ -29,10 +30,7 @@ export default {
<span>Application</span>
<input type="text" v-model="appName" placeholder="App Name" />
<input type="text" v-model="appComment" placeholder="App Comment" />
<select v-model="execApp">
<option selected>Choose App</option>
<option v-for="app in executableApps">{{ app }}</option>
</select>
<input type="text" v-model="appExec" placeholder="Command" />
<button @click="saveApp">Add</button>
<button @click="cancelPrompt">Cancel</button>
</div>
@@ -42,35 +40,48 @@ export default {
data() {
return ({
apps: [],
executableApps: [],
showPrompt: false,
appName: '',
appComment: '',
execApp: 'Choose App'
appExec: ''
})
},
created() {
this.getApps()
this.executableApps = fs.readdirSync('/usr/bin')
chokidar.watch(commands.autostartApps, { persistent: true, ignoreInitial: true })
.on('add', path => this.getApps() )
.on('unlink', path => this.getApps() )
},
methods: {
removeApp( e ) {
fs.unlinkSync(commands.autostartApps + e.target.name)
},
saveApp() {
let desktopFile = `[Desktop Entry]
Name=asdasd
Exec=Buka
X-GNOME-Autostart-enabled=true
Type=Application
Terminal=false
Comment=yorum`
if ( this.appName && this.appComment && this.appExec ) {
let desktopFile = `[Desktop Entry]
\rName=${this.appName}
\rExec=${this.appExec}
\rComment=${this.appComment}
\rType=ApplicationR
\rTerminal=false
\rX-GNOME-Autostart-enabled=true`
try {
fs.writeFileSync(commands.autostartApps + this.appName + '.desktop', desktopFile)
} catch(err) {
} finally {
this.cancelPrompt()
}
}
else {
showMessage('Do not leave required fields blank.', 'error')
}
},
cancelPrompt() {
this.showPrompt = false
this.appName = this.appComment = ''
this.execApp = 'Choose App'
this.appName = this.appComment = this.appExec = ''
},
getApps() {
try {
@@ -119,8 +130,6 @@ export default {
}
fs.writeFileSync(commands.autostartApps + '/' + fileName, data)
showMessage('Operation successfully.', 'success')
}
catch( err ) {
console.log(err)