void Action::actionFinished() { if ( !m_outputFormat.isEmpty() ) { if ( !m_outputData.isNull() ) { if (m_index.isValid()) emit newItem(m_outputData, m_outputFormat, m_index); else emit newItem(m_outputData, m_outputFormat, m_tab); m_outputData = QByteArray(); } } else if ( !m_lastOutput.isNull() ) { actionOutput(); if ( !m_lastOutput.isNull() ) { QStringList items; items.append(m_lastOutput); if (m_index.isValid()) emit newItems(items, m_index); else emit newItems(items, m_tab); m_lastOutput = QString(); } } emit actionFinished(this); }
void ActionHandler::action(Action *action) { action->setParent(this); m_lastAction = action; connect( action, SIGNAL(newItems(QStringList, QString)), this, SLOT(addItems(QStringList, QString)) ); connect( action, SIGNAL(newItems(QStringList, QModelIndex)), this, SLOT(addItems(QStringList, QModelIndex)) ); connect( action, SIGNAL(newItem(QByteArray, QString, QString)), this, SLOT(addItem(QByteArray, QString, QString)) ); connect( action, SIGNAL(newItem(QByteArray, QString, QModelIndex)), this, SLOT(addItem(QByteArray, QString, QModelIndex)) ); connect( action, SIGNAL(actionStarted(Action*)), this, SLOT(actionStarted(Action*)) ); connect( action, SIGNAL(actionFinished(Action*)), this, SLOT(closeAction(Action*)) ); connect( action, SIGNAL(actionError(Action*)), this, SLOT(closeAction(Action*)) ); ++m_actionCounter; if ( !action->outputFormat().isEmpty() && action->outputTab().isEmpty() ) action->setOutputTab(m_currentTabName); m_activeActionDialog->actionAboutToStart(action); COPYQ_LOG( QString("Executing: %1").arg(action->command()) ); action->start(); }
void ActionHandler::action(Action *action, const QVariantMap &data) { action->setParent(this); m_lastAction = action; connect( action, SIGNAL(newItems(QStringList, QString)), this, SLOT(addItems(QStringList, QString)) ); connect( action, SIGNAL(newItems(QStringList, QModelIndex)), this, SLOT(addItems(QStringList, QModelIndex)) ); connect( action, SIGNAL(newItem(QByteArray, QString, QString)), this, SLOT(addItem(QByteArray, QString, QString)) ); connect( action, SIGNAL(newItem(QByteArray, QString, QModelIndex)), this, SLOT(addItem(QByteArray, QString, QModelIndex)) ); connect( action, SIGNAL(actionStarted(Action*)), this, SLOT(actionStarted(Action*)) ); connect( action, SIGNAL(actionFinished(Action*)), this, SLOT(closeAction(Action*)) ); connect( action, SIGNAL(actionError(Action*)), this, SLOT(closeAction(Action*)) ); // Set data for action (can be accessed using 'data' command). const QByteArray actionId = QByteArray::number(++m_lastActionId); qputenv("COPYQ_ACTION_ID", actionId); m_actionData.insert(actionId, data); action->setProperty("COPYQ_ACTION_ID", actionId); m_activeActionDialog->actionAboutToStart(action); log( tr("Executing: %1").arg(action->command()) ); action->start(); }
void KDirModelV2Private::setUrl(const KUrl& url) { m_url = url; m_lister = new KDirLister(); connect(m_lister, SIGNAL(newItems(KFileItemList)), this, SLOT(newItemsFromLister(KFileItemList))); connect(m_lister, SIGNAL(completed()), this, SLOT(listerCompleted())); m_lister->openUrl(m_url); }
void Action::actionOutput() { if (!m_outputFormat.isEmpty()) { m_outputData.append( readAll() ); return; } m_lastOutput.append( QString::fromLocal8Bit(readAll()) ); if ( m_lastOutput.isEmpty() || m_sep.isEmpty() ) return; // Split to items. QStringList items; items = m_lastOutput.split(m_sep); m_lastOutput = items.takeLast(); if (m_index.isValid()) emit newItems(items, m_index); else emit newItems(items, m_tab); }
void ArchLinuxNewsReader::parseXml() { QMap<QString, QVariant> oldEntries; bool newStuff = false; qDebug() << "XML Parsing Started"; QSettings *settings = new QSettings(); oldEntries = settings->value("newsreader/oldnewsitem").toMap(); while (!xml.atEnd()) { xml.readNext(); if (xml.isStartElement()) { if (xml.name() == "item") linkString = xml.attributes().value("rss:about").toString(); currentTag = xml.name().toString(); } else if (xml.isEndElement()) { if (xml.name() == "item") { QString realTitle = QString(titleString); if (realTitle.startsWith("Recent News Updates")) realTitle.remove(0, 19); realTitle = realTitle.trimmed(); if (!oldEntries.contains(realTitle)) { ArchLinuxNews::ArchNews tmp; tmp.link = QString(linkString); tmp.title = QString(realTitle); tmp.nNew = true; tmp.nRead = false; oldEntries[tmp.title] = false; settings->setValue("newsreader/oldnewsitem", oldEntries); entries.append(tmp); newStuff = true; } else { ArchLinuxNews::ArchNews tmp; tmp.link = QString(linkString); tmp.title = QString(realTitle); tmp.nNew = false; tmp.nRead = oldEntries[realTitle].toBool(); entries.append(tmp); } titleString.clear(); linkString.clear(); } } else if (xml.isCharacters() && !xml.isWhitespace()) { if (currentTag == "title") titleString += xml.text().toString(); else if (currentTag == "link") linkString += xml.text().toString(); } } if (xml.error() && xml.error() != QXmlStreamReader::PrematureEndOfDocumentError) { qWarning() << "XML ERROR:" << xml.lineNumber() << ": " << xml.errorString(); http->abort(); } settings->deleteLater(); if (newStuff) emit newItems(); }