Beispiel #1
0
void NewsFeed::getUpdates() {
	QMap<QString, QUrl>::iterator it = m_urls.begin();
	while (it != m_urls.end()) {
		QString title = it.key();
		logDebug("Getting updates for feed " + title);
		QUrl url = it.value();
		if (m_links[title]) {
			m_links[title]->deleteLater();
		}
		m_links[title] = new QHttp(url.host(), url.port(80), this);
		m_reqs[m_links[title]->get(url.path())] = title;
		connect(
			m_links[title], SIGNAL(requestStarted(int)), 
			SLOT(requestStarted(int))
		);
		connect(
			m_links[title], SIGNAL(requestFinished(int, bool)), 
			SLOT(requestFinished(int, bool))
		);
		++it;
	}
	QSettings conf(confDir() + "gui.ini", QSettings::IniFormat);
	conf.setValue(
		objectName() + "Updated", 
		QDateTime::currentDateTime().toString(Qt::ISODate)
	);

	if (!m_timer->isActive()) {
		logDebug("Next feeds update in one hour.");
		m_timer->start(1000 * 60 * 60);
	}
}
Beispiel #2
0
void NewsFeed::addFeed(QString title, QUrl url, int limit) {
	m_urls[title] = url;
	m_limits[title] = limit;
	m_feeds[title] = QString();
	if (m_currentActive.isEmpty()) {
		setActive(title);
	}

	QFile f(confDir() + "/feeds/" + title + ".xml");
	f.open(QIODevice::ReadOnly);
	if (f.isOpen()) {
		QString feed(f.readAll());
		m_feeds[title] = parseFeed(feed, limit);
		setHtml(m_feeds[title]);
	}
}
Beispiel #3
0
void NewsFeed::init() {
	QSettings conf(confDir() + "gui.ini", QSettings::IniFormat);
	QDateTime lastUpdate = QDateTime::fromString(
		conf.value(objectName() + "Updated", "").toString(), 
		Qt::ISODate
	);
	logDebug("Last update was on " + lastUpdate.toString());
	QDateTime current = QDateTime::currentDateTime();
	int timeDiff = lastUpdate.secsTo(current);
	logDebug(QString("Time diff since last update is %1").arg(timeDiff));
	if (timeDiff >= 60 * 60) {
		timeDiff = 60 * 60;
	}
	m_timer->setSingleShot(true);
	timeDiff = 60 * 60 - timeDiff;
	m_timer->start(timeDiff * 1000);
	logDebug(QString("Next feeds update in %1 seconds").arg(timeDiff));
}
Beispiel #4
0
void NewsFeed::requestFinished(int code, bool error) {
	if (!m_links[m_reqs[code]]) {
		return;
	}

	if (error) {
		m_feeds[m_reqs[code]] = m_links[m_reqs[code]]->errorString();
		return;
	}

	QString feed = m_links[m_reqs[code]]->readAll();
	feed.replace("&", "&#38;");
	feed.replace("“", "\"");
	feed.replace("”", "\"");

	m_feeds[m_reqs[code]] = parseFeed(feed, m_limits[m_reqs[code]]);
	if (!m_feeds[m_reqs[code]].size()) {
		m_feeds[m_reqs[code]] = feed;
	}

	if (currentActive() == m_reqs[code]) {
		setActive(m_reqs[code]);
	}

	// save cache
	QDir d(confDir());
	if (!d.exists("feeds")) {
		d.mkdir("feeds");
	}
	QFile f(d.absolutePath() + "/feeds/" + m_reqs[code] + ".xml");
	f.open(QIODevice::WriteOnly);
	if (f.isOpen()) {
		f.write(feed.toAscii());
	}

	// cleanup
	m_links[m_reqs[code]]->deleteLater();
	m_links.remove(m_reqs[code]);
	m_reqs.remove(code);
}
Beispiel #5
0
QString Config::getConfigDir()
{
    QString configDir;
#ifdef Q_WS_X11
    #ifdef SG_XDG_CONFIG_SUPPORT
        // old style config path    
        QString oldConfigDir = QDir::homePath()+ QDir::separator()+".screengrab"+ QDir::separator();
        configDir = qgetenv("XDG_CONFIG_HOME");
        
        // Ubuntu hack -- if XDG_CONFIG_HOME is missing
        if (configDir.isEmpty() == true)
        {
            configDir = QDir::homePath();
            configDir += QDir::separator();
            configDir += ".config";
        }
        
        configDir.append(QDir::separator());
        configDir.append("screengrab");
        configDir.append(QDir::separator());
    #else
        configDir = QDir::homePath()+ QDir::separator()+".screengrab"+ QDir::separator();
    #endif
#endif
    
    // if win32
#ifdef Q_WS_WIN
    configDir.append(QDesktopServices::storageLocation(QDesktopServices::DataLocation) + "ScreenGrab" + QDir::toNativeSeparators(QDir::separator()));
#endif
	
	if (QFile::exists(configDir) == false)
	{
		QDir confDir(configDir);
		confDir.mkpath(confDir.path());
	}
    return configDir;
}