mirror of
https://github.com/Hopiu/RandomWallpaperGnome3.git
synced 2026-03-16 22:20:24 +00:00
160 lines
No EOL
3.8 KiB
JavaScript
160 lines
No EOL
3.8 KiB
JavaScript
const Lang = imports.lang;
|
|
|
|
//self
|
|
const Self = imports.misc.extensionUtils.getCurrentExtension();
|
|
const WallpaperController = Self.imports.wallpaperController;
|
|
|
|
// UI Imports
|
|
const Main = imports.ui.main;
|
|
const St = imports.gi.St;
|
|
const PanelMenu = imports.ui.panelMenu;
|
|
const PopupMenu = imports.ui.popupMenu;
|
|
const CustomElements = Self.imports.Elements;
|
|
const Tweener = imports.ui.tweener;
|
|
|
|
// Filesystem
|
|
const Gio = imports.gi.Gio;
|
|
|
|
let wallpaperController;
|
|
let extensionMeta;
|
|
|
|
function init(metaData) {
|
|
extensionMeta = metaData;
|
|
wallpaperController = new WallpaperController.WallpaperController(metaData);
|
|
global.log("INIT");
|
|
}
|
|
|
|
let panelEntry;
|
|
|
|
let RandomWallpaperEntry = new Lang.Class({
|
|
Extends: PanelMenu.Button,
|
|
Name: "RandomWallpaperEntry",
|
|
|
|
_init: function(menuAlignment, nameText) {
|
|
this.parent(menuAlignment, nameText);
|
|
|
|
// Panelmenu Icon
|
|
this.statusIcon = new CustomElements.StatusElement();
|
|
this.actor.add_child(this.statusIcon);
|
|
|
|
// new wallpaper button
|
|
this.newWallpaperItem = new PopupMenu.PopupMenuItem('New Wallpaper', {
|
|
style_class: 'rwg-new-lable'
|
|
});
|
|
|
|
this.menu.addMenuItem(this.newWallpaperItem);
|
|
|
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
|
|
|
// history section
|
|
this.historySection = new PopupMenu.PopupMenuSection();
|
|
this.menu.addMenuItem(this.historySection);
|
|
|
|
this.setHistoryList();
|
|
|
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
|
|
|
// clear history button
|
|
this.clearHistoryItem = new PopupMenu.PopupMenuItem('Clear History');
|
|
this.menu.addMenuItem(this.clearHistoryItem);
|
|
|
|
//this.menu.addMenuItem(new CustomElements.DelaySlider(60));
|
|
|
|
/*
|
|
add eventlistener
|
|
*/
|
|
let _this = this;
|
|
// new wallpaper event
|
|
this.newWallpaperItem.connect('activate', function() {
|
|
_this.statusIcon.startLoading();
|
|
wallpaperController.fetchNewWallpaper(function() {
|
|
_this.setHistoryList();
|
|
_this.statusIcon.stopLoading();
|
|
});
|
|
});
|
|
|
|
// clear history event
|
|
this.clearHistoryItem.connect('activate', function() {
|
|
wallpaperController.deleteHistory();
|
|
});
|
|
|
|
// when the popupmenu disapears, check if the wallpaper is the original and
|
|
// reset it if needed
|
|
this.menu.actor.connect('hide', function() {
|
|
wallpaperController.setWallpaper(_this.history[0], true);
|
|
_this.setHistoryList();
|
|
});
|
|
|
|
this.menu.actor.connect('leave-event', function() {
|
|
wallpaperController.previewWallpaper(_this.history[0], 400, true);
|
|
});
|
|
|
|
},
|
|
|
|
setHistoryList: function() {
|
|
this.historySection.removeAll();
|
|
|
|
let history = this.history = wallpaperController.getHistory();
|
|
|
|
if (history.length <= 1) {
|
|
this.clearHistoryList();
|
|
return;
|
|
};
|
|
|
|
function onLeave(actor) {
|
|
wallpaperController.previewWallpaper(history[0], 400, true);
|
|
}
|
|
|
|
for (var i = 1; i < history.length; i++) {
|
|
let historyid = history[i];
|
|
let tmp = new CustomElements.HistoryElement(historyid, i);
|
|
|
|
function onEnter(actor) {
|
|
wallpaperController.previewWallpaper(historyid);
|
|
}
|
|
|
|
function onSelect(actor) {
|
|
wallpaperController.setWallpaper(historyid);
|
|
}
|
|
|
|
|
|
tmp.actor.connect('key-focus-in', onEnter);
|
|
tmp.actor.connect('key-focus-out', onLeave);
|
|
tmp.actor.connect('enter-event', onEnter);
|
|
|
|
tmp.connect('activate', onSelect);
|
|
|
|
this.historySection.addMenuItem(tmp);
|
|
};
|
|
|
|
},
|
|
|
|
clearHistoryList: function() {
|
|
this.historySection.removeAll();
|
|
|
|
let empty = new PopupMenu.PopupMenuItem('No recent wallpaper ...', {
|
|
reactive: false,
|
|
activate: false,
|
|
hover: false,
|
|
style_class: 'rwg-recent-lable',
|
|
can_focus: false
|
|
});
|
|
this.historySection.addMenuItem(empty);
|
|
},
|
|
|
|
});
|
|
|
|
function enable() {
|
|
global.log("ENABLE");
|
|
|
|
// UI
|
|
panelEntry = new RandomWallpaperEntry(0, "Random wallpaper");
|
|
|
|
// add to panel
|
|
Main.panel.addToStatusArea("random-wallpaper-menu", panelEntry);
|
|
}
|
|
|
|
function disable() {
|
|
global.log("DISABLE");
|
|
panelEntry.destroy();
|
|
} |