summaryrefslogblamecommitdiffstats
path: root/src/JavaScriptInterface.cpp
blob: dcae24b56738f7a4ccfac3899d0611bb77e8adca (plain) (tree)














































































































































                                                                        
/*
 * JavaScriptInterface.cpp
 *
 *  Created on: Oct 26, 2011
 *      Author: ssc
 */

#include "JavaScriptInterface.h"
#include <QDebug>
#include <QString>
#include <QFile>

#include <VSession.h>
#include <VSessionHandler.h>
#include <XSession.h>
#include <XSessionHandler.h>



JavaScriptInterface::JavaScriptInterface(QWebView* parent) {
	// TODO Auto-generated constructor stub

	index = 1;
	m_dom = parent->page()->mainFrame();
}

JavaScriptInterface::~JavaScriptInterface() {
	// TODO Auto-generated destructor stub
}

void JavaScriptInterface::addItems(const QList<Session *> entries) {
	int i;
    for(i=0; i<entries.size(); i++) {
    	m_data.insert(index + i, entries.at(i));
    }
    index = index + i;
}


void JavaScriptInterface::attachToDOM() {
	m_dom->addToJavaScriptWindowObject(QString("emuchooser"), this);
}

QVariantList JavaScriptInterface::getList() {
	QVariantMap elem;
	QVariantList list;
//	qDebug() << "getList was called";

	QHashIterator<int, Session *> i(m_data);
	while (i.hasNext()) {
		i.next();
		elem.insert("title", i.value()->shortDescription());
		elem.insert("icon", i.value()->icon());
		elem.insert("id", i.key());
		list << elem;
		elem.clear();
	 }

	return list;
}

QString JavaScriptInterface::getDetails(int id) {
//	qDebug() << "getDetails was called";

	QString tpl, ret;
    QFile file(":/html/detail");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
        return QString();

    while (!file.atEnd()) {
        QByteArray line = file.readLine();
        tpl.append(line);
    }


    ret = tpl.arg(m_data.value(id)->title())
    		 .arg(m_data.value(id)->screenshot())
    		 .arg(m_data.value(id)->author())
    		 .arg(m_data.value(id)->creationDate())
    		 .arg(m_data.value(id)->changeDate())
    		 .arg(m_data.value(id)->os())
    		 .arg(m_data.value(id)->emulator())
    		 .arg(m_data.value(id)->description());

	return ret;
}



QString JavaScriptInterface::getFoo() {
//	qDebug() << "getFoo was called";
	return QString("foobar");
}

QString JavaScriptInterface::getAbout() {
//	qDebug() << "getAbout was called";
	QString ret;
    QFile file(":/html/about");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
        return QString();

    while (!file.atEnd()) {
        QByteArray line = file.readLine();
        ret.append(line);
    }
    return ret;
}

QString JavaScriptInterface::getHelp() {
//	qDebug() << "getHelp was called";
	QString ret;
    QFile file(":/html/help");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
        return QString();

    while (!file.atEnd()) {
        QByteArray line = file.readLine();
        ret.append(line);
    }
    return ret;
}

QString JavaScriptInterface::getWelcome() {
//	qDebug() << "getWelcome was called";
	QString ret;
    QFile file(":/html/welcome");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
        return QString();

    while (!file.atEnd()) {
        QByteArray line = file.readLine();
        ret.append(line);
    }
    return ret;
}

void JavaScriptInterface::run(int id) {
	qDebug() << "start system: " << m_data.value(id)->title();
	emit hideMainWindow();
	m_data.value(id)->run();
}