/* Copyright (C) 2009 Jason A. Donenfeld . All Rights Reserved. */ Importer.loadQtBinding("qt.core"); function modifyAllInfos(addition) { var accounts = getAccounts(); for(var i = 0; i < accounts.length; i++) { setInfo(accounts[i], modifyInfo(getInfo(accounts[i]), addition)); } } function modifyInfo(info, addition) { var line = "

Currently Playing: "; var index = info.indexOf(line); if(index != -1) { info = info.substring(0, index); } return info.replace("\n", "") + line + addition; } function getInfo(account) { return executeCommand("purple-remote", ["PurpleAccountGetUserInfo(" + account + ")"]); } function setInfo(account, info) { info = "string:" + info; executeCommand("purple-send", ["PurpleAccountSetUserInfo", "int32:" + account, info]); executeCommand("purple-send", ["ServSetInfo", "int32:" + executeCommand("purple-remote", ["PurpleAccountGetConnection(" + account + ")"]), info]); } function getAccounts() { var commandOutput = executeCommand("purple-remote", ["PurpleAccountsGetAllActive()"]); var pattern = /Int32\((\d+)\)/g; var match; var accounts = new Array(); while((match = pattern.exec(commandOutput)) != null) { accounts.push(match[1]); } return accounts; } function executeCommand(command, args) { var process = new QProcess(); process.start(command, args); if(process.waitForFinished()) { return new QTextStream(process).readAll(); } return false; } function onTrackPlayPause(paused) { if(paused) { onTrackFinished(); } else { onTrackChange(); } } function onTrackChange() { var currentTrack = Amarok.Engine.currentTrack(); modifyAllInfos(currentTrack.artist + " - " + currentTrack.title); } function onTrackFinished() { modifyAllInfos("(none)"); } Amarok.Engine.trackPlayPause.connect(onTrackPlayPause); Amarok.Engine.trackChanged.connect(onTrackChange); Amarok.Engine.trackFinished.connect(onTrackFinished);