[polari/wip/kunaljain/polari-search-merge-results] resultView: Single View for each channel
- From: Kunal Jain <kunaljain src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [polari/wip/kunaljain/polari-search-merge-results] resultView: Single View for each channel
- Date: Tue, 16 Aug 2016 13:49:02 +0000 (UTC)
commit b836b85589fc966a94ce140ee72a19dec5b517af
Author: Kunaal Jain <kunaalus gmail com>
Date: Tue Aug 16 19:18:42 2016 +0530
resultView: Single View for each channel
src/resultView.js | 72 +++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 53 insertions(+), 19 deletions(-)
---
diff --git a/src/resultView.js b/src/resultView.js
index 4631182..fa339b5 100644
--- a/src/resultView.js
+++ b/src/resultView.js
@@ -231,7 +231,8 @@ const ResultView = new Lang.Class({
// if(!exists)
if(!exists) {
- buffer.insert(iter, '\n', -1);
+ let tags = [this._lookupTag('separator')];
+ this._insertWithTags(iter,'\n',tags);
buffer.create_mark('view-start' + rank, iter, true);
let obj = { top_query: null,
bottom_query: null,
@@ -241,6 +242,9 @@ const ResultView = new Lang.Class({
// print(this._resultsAvailable.splice(startIndex, 0, obj).toString());
this._resultsAvailable.splice(startIndex + 1, 0, obj);
print(this._resultsAvailable.length);
+
+ let rankTag = new Gtk.TextTag({ name: 'result'+rank, invisible: true });
+ this._view.get_buffer().get_tag_table().add(rankTag);
}
// buffer.insert(iter, String(rank), -1);
// buffer.insert(iter, '\n', -1);
@@ -253,11 +257,20 @@ const ResultView = new Lang.Class({
for(let i = 0; i < this._resultsAvailable.length; i++) {
if(this._resultsAvailable[i].rank == rank) {
index = i;
- break;
+ // break;
+ rankTag = this._lookupTag('result'+this._resultsAvailable[i].rank);
+ rankTag.invisible = false;
+ } else {
+ rankTag = this._lookupTag('result'+this._resultsAvailable[i].rank);
+ rankTag.invisible = true;
}
}
this._rank = rank;
if(!exists) this._rowactivated(uid, this._channelName, timestamp, rank);
+ else {
+ this._startQuery = this._resultsAvailable[index].top_query;
+ this._endQuery = this._resultsAvailable[index].bottom_query;
+ }
},
_rowactivated: function(uid, channel, timestamp, rank) {
@@ -315,16 +328,24 @@ const ResultView = new Lang.Class({
// let buffer = this._view.get_buffer();
// let iter = buffer.get_end_iter();
// buffer.set_text("",-1);
- this._endQuery = new LogManager.GenericQuery(this._logManager._connection, 2);
- // this._endQuery.run(sparql,this._cancellable,Lang.bind(this, this._onLogEventsReady1, index));
+ this._endQuery = new LogManager.GenericQuery(this._logManager._connection, 20);
+ this._endQuery.run(sparql,this._cancellable,Lang.bind(this, this._onLogEventsReady1, rank));
// log("!");
- this._startQuery = new LogManager.GenericQuery(this._logManager._connection, 2);
+ this._startQuery = new LogManager.GenericQuery(this._logManager._connection, 20);
// Mainloop.timeout_add(500, Lang.bind(this,
// function() {
// query.run(sparql1,this._cancellable,Lang.bind(this, this._onLogEventsReady1));
// return GLib.SOURCE_REMOVE;
// }));
this._startQuery.run(sparql1,this._cancellable,Lang.bind(this, this._onLogEventsReady, rank));
+ for(let i = 0; i < this._resultsAvailable.length; i++) {
+ if(this._resultsAvailable[i].rank == rank) {
+ index = i;
+ break;
+ }
+ }
+ this._resultsAvailable[index].top_query = this._startQuery;
+ this._resultsAvailable[index].top_query = this._endQuery;
//print(this._endQuery.isClosed());
// Mainloop.timeout_add(5000, Lang.bind(this,
@@ -365,7 +386,9 @@ const ResultView = new Lang.Class({
{ name: 'indicator-line',
pixels_above_lines: 24 },
{ name: 'loading',
- justification: Gtk.Justification.CENTER }
+ justification: Gtk.Justification.CENTER },
+ { name: 'separator',
+ invisible: true }
];
tags.forEach(function(tagProps) {
tagTable.add(new Gtk.TextTag(tagProps));
@@ -447,13 +470,13 @@ const ResultView = new Lang.Class({
this._fetchingBacklog = false;
},
- _onLogEventsReady1: function(events, parent, index) {
+ _onLogEventsReady1: function(events, rank) {
// print(events);
//events = events.reverse();
this._hideLoadingIndicator1();
this._pendingLogs = events.concat(this._pendingLogs);
- this._insertPendingLogs1(index);
+ this._insertPendingLogs1(rank);
let buffer = this._view.get_buffer();
let mark = buffer.get_mark('centre');
this._view.scroll_to_mark(mark, 0.0, true, 0, 0.5);
@@ -496,14 +519,17 @@ const ResultView = new Lang.Class({
timestamp: pending[i].timestamp,
messageType: pending[i].messageType,
shouldHighlight: false,
- id: pending[i].id};
+ id: pending[i].id,
+ rank: rank};
this._insertMessage(iter, message, state);
this._setNickStatus(message.nick, Tp.ConnectionPresenceType.OFFLINE);
- if (!iter.is_end() || i < pending.length - 1)
- this._view.buffer.insert(iter, '\n', -1);
+ if (!iter.is_end() || i < pending.length - 1) {
+ let tags = [this._lookupTag('result'+rank)];
+ this._insertWithTags(iter,'\n',tags);
+ }
}
- buffer.move_mark_by_name('view-end'+rank, iter);
+ // buffer.move_mark_by_name('view-end'+rank, iter);
if (!this._channel)
return;
@@ -521,7 +547,7 @@ const ResultView = new Lang.Class({
}
},
- _insertPendingLogs1: function() {
+ _insertPendingLogs1: function(rank) {
if (this._pendingLogs.length == 0)
return;
@@ -547,19 +573,23 @@ const ResultView = new Lang.Class({
// print(this._pendingLogs);
// print(pending);
let state = { lastNick: null, lastTimestamp: 0 };
- let iter = this._view.buffer.get_end_iter();
+ let buffer = this._view.buffer;
+ let endMark = buffer.get_mark('view-end' + rank);
+ let iter = buffer.get_iter_at_mark(endMark);
for (let i = 0; i < pending.length; i++) {
let message = { nick: pending[i].sender,
text: pending[i].message,
timestamp: pending[i].timestamp,
messageType: pending[i].messageType,
shouldHighlight: false,
- id: pending[i].id};
+ id: pending[i].id,
+ rank: rank};
this._insertMessage(iter, message, state);
this._setNickStatus(message.nick, Tp.ConnectionPresenceType.OFFLINE);
//if (!iter.is_end() || i < pending.length - 1)
- this._view.buffer.insert(iter, '\n', -1);
+ let tags = [this._lookupTag('result'+rank)];
+ this._insertWithTags(iter,'\n',tags);
}
if (!this._channel)
@@ -689,12 +719,12 @@ const ResultView = new Lang.Class({
this._startQuery.next(10,this._cancellable,Lang.bind(this, this._onLogEventsReady,
this._rank));
}));
} else {
- this._fetchingBacklog = false;
- return Gdk.EVENT_STOP;
+ // this._fetchingBacklog = false;
+ // return Gdk.EVENT_STOP;
this._showLoadingIndicator1();
Mainloop.timeout_add(500, Lang.bind(this,
function() {
- this._endQuery.next(10,this._cancellable,Lang.bind(this, this._onLogEventsReady1));
+ this._endQuery.next(10,this._cancellable,Lang.bind(this, this._onLogEventsReady1,
this._rank));
}));
}
return Gdk.EVENT_STOP;
@@ -856,9 +886,11 @@ const ResultView = new Lang.Class({
let isAction = message.messageType == Tp.ChannelTextMessageType.ACTION;
let needsGap = message.nick != state.lastNick || isAction;
let isCentre = message.id == this._uid;
+ let rank = message.rank;
if (message.timestamp - TIMESTAMP_INTERVAL > state.lastTimestamp) {
let tags = [this._lookupTag('timestamp')];
+ tags.push(this._lookupTag('result'+rank));
if (needsGap)
tags.push(this._lookupTag('gap'));
needsGap = false;
@@ -871,6 +903,7 @@ const ResultView = new Lang.Class({
// this._updateMaxNickChars(message.nick.length);
let tags = [];
+ tags.push(this._lookupTag('result'+rank));
if (isAction) {
message.text = "%s %s".format(message.nick, message.text);
state.lastNick = null;
@@ -880,6 +913,7 @@ const ResultView = new Lang.Class({
} else {
if (state.lastNick != message.nick) {
let tags = [this._lookupTag('nick')];
+ tags.push(this._lookupTag('result'+rank));
let nickTagName = this._getNickTagName(message.nick);
let nickTag = this._lookupTag(nickTagName);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]