Google Reader - Expanded per Feed

By kossib Last update Dec 11, 2008 — Installed 675 times.

There are 1 previous version of this script.

// ==UserScript==
// @name           Google Reader - Expanded per Feed
// @namespace      http://kossib.foxnet.pl
// @description    Remembers expanded or list view on per feed basis.
// @include        http*://www.google.tld/reader/view/*
// ==/UserScript==

/*

 Change log :
--------------

v0.0.1: Increased the time event waits to fire. (this partially solves the duplicate items bug)
v0.0.0: First release.

*/

var kfp_grepf_current_feed = '';

function kfp_grepf_init() 
{
	// loaded ?
	kfp_grepf_body = document.getElementsByTagName('body')[0];
	if(/\bloaded\b/.test(kfp_grepf_body.className)) 
	{
		kfp_grepf_id_expanded_view = 'view-cards';
		kfp_grepf_id_list_view = 'view-list';
		kfp_grepf_id_chrome_title = 'chrome-title';

		document.getElementById(kfp_grepf_id_expanded_view).addEventListener('click', kfp_grepf_save, false);
		document.getElementById(kfp_grepf_id_list_view).addEventListener('click', kfp_grepf_save, false);

		document.getElementById(kfp_grepf_id_chrome_title).addEventListener('DOMNodeInserted', kfp_grepf_nodeinserted, false);

		kfp_grepf_load();
	}
   	else
	{
		// not loaded try later
		setTimeout(kfp_grepf_init,100);
	}
}
function kfp_grepf_nodeinserted() 
{
	if (kfp_grepf_current_feed == document.location.href)
		return;
	kfp_grepf_current_feed = document.location.href;
	//must be done using timer, GM_getValue is not working inside this event
	setTimeout(kfp_grepf_load, 500);
}

function kfp_grepf_load() 
{
	kfp_grepf_saved = GM_getValue(document.location, '');
	if (kfp_grepf_saved != ''
		&& kfp_grepf_saved != kpf_grepf_selected()) 
	{
		kfp_grepf_exp = document.getElementById(kfp_grepf_saved);
		kfp_grepf_evt = document.createEvent('MouseEvents');
		kfp_grepf_evt.initEvent( 'click', true, true );
		kfp_grepf_exp.dispatchEvent(kfp_grepf_evt);
	}
	else 
	{
		kfp_grepf_save();
	}
}

function kfp_grepf_save() 
{
   GM_setValue(document.location, kpf_grepf_selected());
}

function kpf_grepf_selected()
{
	kfp_grepf_exp = document.getElementById(kfp_grepf_id_expanded_view);
	return (/\blink-selected\b/.test(kfp_grepf_exp.className)) 
				? kfp_grepf_id_expanded_view 
				: kfp_grepf_id_list_view;
}

kfp_grepf_init();