本文整理汇总了C++中KHTMLPart::hasSelection方法的典型用法代码示例。如果您正苦于以下问题:C++ KHTMLPart::hasSelection方法的具体用法?C++ KHTMLPart::hasSelection怎么用?C++ KHTMLPart::hasSelection使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KHTMLPart
的用法示例。
在下文中一共展示了KHTMLPart::hasSelection方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: slotReadOut
void KHTMLPluginKTTSD::slotReadOut()
{
// The parent is assumed to be a KHTMLPart
if(!parent()->inherits("KHTMLPart"))
QMessageBox::warning(0, i18n("Cannot Read source"), i18n("You cannot read anything except web pages with\n"
"this plugin, sorry."));
else
{
// If KTTSD not running, start it.
DCOPClient *client = kapp->dcopClient();
if(!client->isApplicationRegistered("kttsd"))
{
QString error;
if(kapp->startServiceByDesktopName("kttsd", QStringList(), &error))
QMessageBox::warning(0, i18n("Starting KTTSD Failed"), error);
}
// Find out if KTTSD supports xhtml (rich speak).
QByteArray data;
QBuffer dataBuf(data);
QDataStream arg;
dataBuf.open(IO_WriteOnly);
arg.setDevice(&dataBuf);
arg << "" << KSpeech::mtHtml;
QCString replyType;
QByteArray replyData;
bool supportsXhtml = false;
if(!client->call("kttsd", "KSpeech", "supportsMarkup(QString,uint)", data, replyType, replyData, true))
QMessageBox::warning(0, i18n("DCOP Call Failed"), i18n("The DCOP call supportsMarkup failed."));
else
{
QDataStream reply(replyData, IO_ReadOnly);
reply >> supportsXhtml;
}
KHTMLPart *part = (KHTMLPart *)parent();
QString query;
if(supportsXhtml)
{
kdDebug() << "KTTS claims to support rich speak (XHTML to SSML)." << endl;
if(part->hasSelection())
query = part->selectedTextAsHTML();
else
{
// TODO: Fooling around with the selection probably has unwanted
// side effects, but until a method is supplied to get valid xhtml
// from entire document..
// query = part->document().toString().string();
part->selectAll();
query = part->selectedTextAsHTML();
// Restore no selection.
part->setSelection(part->document().createRange());
}
}
else
{
if(part->hasSelection())
query = part->selectedText();
else
query = part->htmlDocument().body().innerText().string();
}
// kdDebug() << "KHTMLPluginKTTSD::slotReadOut: query = " << query << endl;
dataBuf.at(0); // reset data
arg << query << "";
if(!client->call("kttsd", "KSpeech", "setText(QString,QString)", data, replyType, replyData, true))
QMessageBox::warning(0, i18n("DCOP Call Failed"), i18n("The DCOP call setText failed."));
dataBuf.at(0);
arg << 0;
if(!client->call("kttsd", "KSpeech", "startText(uint)", data, replyType, replyData, true))
QMessageBox::warning(0, i18n("DCOP Call Failed"), i18n("The DCOP call startText failed."));
}
}