[polari] chatroomManager: Save channel list on shutdown
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [polari] chatroomManager: Save channel list on shutdown
- Date: Thu, 8 Aug 2013 13:12:03 +0000 (UTC)
commit 658325cc8832fae2ed188ae91de072a07d66a97c
Author: Florian Müllner <fmuellner gnome org>
Date: Sat Jul 27 01:18:45 2013 +0200
chatroomManager: Save channel list on shutdown
.gitignore | 2 ++
data/Makefile.am | 8 ++++++++
data/org.gnome.polari.gschema.xml.in | 10 ++++++++++
src/chatroomManager.js | 17 +++++++++++++++++
4 files changed, 37 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index aa74323..b828709 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,6 +16,8 @@ config.*
configure
data/*.desktop
data/*.gresource
+data/*.gschema.valid
+data/*.gschema.xml
depcomp
install-sh
libtool
diff --git a/data/Makefile.am b/data/Makefile.am
index ca455fc..bd51b09 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -14,13 +14,21 @@ polari.gresource: polari.gresource.xml $(resource_files)
resourcedir=$(pkgdatadir)
resource_DATA=polari.gresource
+gsettings_in_files = org.gnome.polari.gschema.xml.in
+gsettings_SCHEMAS = $(gsettings_in_files:.xml.in=.xml)
+
+ INTLTOOL_XML_NOMERGE_RULE@
+ GSETTINGS_RULES@
+
EXTRA_DIST = \
$(desktop_in_files) \
polari.gresource.xml \
$(resource_files) \
+ $(gsettings_in_files) \
$(NULL)
CLEANFILES = \
$(desktop_DATA) \
$(resource_DATA) \
+k$(gsettings_SCHEMAS) \
$(NULL)
diff --git a/data/org.gnome.polari.gschema.xml.in b/data/org.gnome.polari.gschema.xml.in
new file mode 100644
index 0000000..0cecb5d
--- /dev/null
+++ b/data/org.gnome.polari.gschema.xml.in
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schemalist gettext-domain="polari">
+ <schema path="/org/gnome/polari/" id="org.gnome.polari">
+ <key type="aa{sv}" name="saved-channel-list">
+ <default>[]</default>
+ <summary>Saved channel list</summary>
+ <description>List of channels to restore on startup</description>
+ </key>
+ </schema>
+</schemalist>
diff --git a/src/chatroomManager.js b/src/chatroomManager.js
index 610ac48..fb54f54 100644
--- a/src/chatroomManager.js
+++ b/src/chatroomManager.js
@@ -1,4 +1,5 @@
const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
const Polari = imports.gi.Polari;
const Tp = imports.gi.TelepathyGLib;
@@ -34,12 +35,22 @@ const _ChatroomManager = new Lang.Class({
},
_onPrepareShutdown: function() {
+ this._app.hold();
+ let savedChannels = [];
+
for (let id in this._rooms) {
let room = this._rooms[id];
if (room.channel.get_invalidated())
continue;
+ let account = room.channel.connection.get_account();
+ let serializedChannel = {
+ account: GLib.Variant.new('s', account.get_object_path()),
+ channel: GLib.Variant.new('s', room.channel.identifier)
+ };
+ savedChannels.push(serializedChannel);
+
this._app.hold();
room.channel.connect('invalidated', Lang.bind(this,
function() {
@@ -47,6 +58,12 @@ const _ChatroomManager = new Lang.Class({
}));
room.channel.leave_async(Tp.ChannelGroupChangeReason.NONE, '', null);
}
+
+ let settings = new Gio.Settings({ schema: 'org.gnome.polari' });
+ settings.set_value('saved-channel-list',
+ GLib.Variant.new('aa{sv}', savedChannels));
+
+ this._app.release();
},
_onPrepared: function(am, res) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]