void ChainLink::setupConnections(const KoFilter *sender, const KoFilter *receiver) const { const QMetaObject * const parent = sender->metaObject(); const QMetaObject * const child = receiver->metaObject(); if (!parent || !child) return; int senderMethodCount = parent->methodCount(); for (int i = 0; i < senderMethodCount; ++i) { QMetaMethod signal = parent->method(i); if (signal.methodType() != QMetaMethod::Signal) continue; // ### untested (QMetaMethod::signature()) if (strncmp(signal.signature(), SIGNAL_PREFIX, SIGNAL_PREFIX_LEN) == 0) { int receiverMethodCount = child->methodCount(); for (int j = 0; j < receiverMethodCount; ++j) { QMetaMethod slot = child->method(j); if (slot.methodType() != QMetaMethod::Slot) continue; if (strncmp(slot.signature(), SLOT_PREFIX, SLOT_PREFIX_LEN) == 0) { if (strcmp(signal.signature() + SIGNAL_PREFIX_LEN, slot.signature() + SLOT_PREFIX_LEN) == 0) { QByteArray signalString; signalString.setNum(QSIGNAL_CODE); signalString += signal.signature(); QByteArray slotString; slotString.setNum(QSLOT_CODE); slotString += slot.signature(); QObject::connect(sender, signalString, receiver, slotString); } } } } } }
void PingPong::update() { QByteArray size; // Server is only updating the coordinates //! [Updating coordinates] if (m_role == 1) { checkBoundaries(); m_ballPreviousX = m_ballX; m_ballPreviousY = m_ballY; m_ballY = m_direction*(m_ballX+interval) - m_direction*m_ballX + m_ballY; m_ballX = m_ballX + interval; size.setNum(m_ballX); size.append(' '); QByteArray size1; size1.setNum(m_ballY); size.append(size1); size.append(' '); size1.setNum(m_leftBlockY); size.append(size1); size.append(" \n"); socket->write(size.constData()); Q_EMIT ballChanged(); } else if (m_role == 2) { size.setNum(m_rightBlockY); size.append(" \n"); socket->write(size.constData()); } //! [Updating coordinates] }
/// Provides a hash function for the point objects uint qHash(const PatternTable::Point &p) { QByteArray x; QByteArray y; x.setNum(p.x); y.setNum(p.y); x.append(y); return qHash(x); }
void Histogram_gui::build_stats() { _stats.clear(); QByteArray val; val.setNum( histogram_->data_count() ); _stats.push_back(Pair("Data count: ",val.constData())); val.setNum( histogram_->mean() ); _stats.push_back(Pair("Mean: ",val.constData())); val.setNum( histogram_->var() ); _stats.push_back(Pair("Variance: ",val.constData())); val.setNum( histogram_->max() ); _stats.push_back(Pair("Maximum: ",val.constData())); val.setNum( histogram_->percentile(0.75) ); _stats.push_back(Pair("Upper quartile: ",val.constData())); val.setNum( histogram_->percentile(0.5) ); _stats.push_back(Pair("Median: ",val.constData())); val.setNum( histogram_->percentile(0.25) ); _stats.push_back(Pair("lower quartile: ",val.constData())); val.setNum( histogram_->min() ); _stats.push_back(Pair("Minimum: ",val.constData())); }
void KoXmlWriter::addAttributePt(const char* attrName, double value) { QByteArray str; str.setNum(value, 'f', 11); str += "pt"; addAttribute(attrName, str.data()); }
void KoXmlWriter::addAttributePt(const char* attrName, float value) { QByteArray str; str.setNum(value, 'f', FLT_DIG); str += "pt"; addAttribute(attrName, str.data()); }
void PingPong::clientConnected() { //! [Initiating server socket] if (!m_serverInfo->hasPendingConnections()) { setMessage("FAIL: expected pending server connection"); return; } socket = m_serverInfo->nextPendingConnection(); if (!socket) return; socket->setParent(this); connect(socket, SIGNAL(readyRead()), this, SLOT(readSocket())); connect(socket, SIGNAL(disconnected()), this, SLOT(clientDisconnected())); connect(socket, SIGNAL(error(QBluetoothSocket::SocketError)), this, SLOT(socketError(QBluetoothSocket::SocketError))); //! [Initiating server socket] setMessage(QStringLiteral("Client connected.")); QByteArray size; size.setNum(m_boardWidth); size.append(' '); QByteArray size1; size1.setNum(m_boardHeight); size.append(size1); size.append(" \n"); socket->write(size.constData()); }
/* * Used for starting drags of tabs */ void PsiTabBar::mouseMoveEvent(QMouseEvent *event) { if (!dragsEnabled_) { return; } if (!(event->buttons() & Qt::LeftButton)) { return; } if ((event->pos() - dragStartPosition_).manhattanLength() < QApplication::startDragDistance()) { return; } if (dragTab_ != -1) { QDrag *drag = new QDrag(this); QMimeData *mimeData = new QMimeData; QByteArray data; QPixmap icon; data.setNum(dragTab_); mimeData->setData("psiTabDrag", data); drag->setMimeData(mimeData); drag->setPixmap(icon); Qt::DropAction dropAction = drag->start(Qt::MoveAction); Q_UNUSED(dropAction); } event->accept(); }
void KoGenStyle::addAttributePercent(const QString &attrName, int value) { QByteArray str; str.setNum(value); str += '%'; addAttribute(attrName, str.data()); }
void Cluster::mouseMoveEvent(QMouseEvent *event) { if (!(event->buttons() & Qt::LeftButton)) { QWidget::mouseMoveEvent(event); return; } if ((event->pos() - _drag_start_pos).manhattanLength() < QApplication::startDragDistance()) { QWidget::mouseMoveEvent(event); return; } QMimeData *data = new QMimeData; QByteArray mimedata; // the index of cluster within the cluster box ClusterBox *cbox = dynamic_cast<ClusterBox*>(this->parentWidget()); int idx = cbox->clusterIndex(this); mimedata.setNum(idx); data->setData("Cluster", mimedata); QDrag *drag = new QDrag(this); drag->setMimeData(data); switch (drag->exec()) { case Qt::MoveAction: break; default: break; } }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- int QFilterParametersWriter::writeValue(const QString name, double value) { int err = 0; QByteArray buf; buf = buf.setNum(value, 'g', 8); m_Prefs->setValue(name, QString(buf)); return err; }
void NesisSplash::SetProgress(unsigned int uiProgress) { QByteArray str; str.setNum(uiProgress); str.prepend("show "); // qDebug() << "proc " << str; m_fileSplash->write(str); m_fileSplash->flush(); }
void Gpio::setValue(int value) { if (isOpen()) { QByteArray ba; ba.setNum(value); m_gpio->write(ba); } }
void UmlClass::html() { QByteArray s; UmlCom::message(name()); if (stereotype() == "stereotype") start_file("stereotype" + s.setNum((unsigned) getIdentifier()), "Stereotype " + name(), TRUE); else if (stereotype() == "metaclass") start_file("metaclass" + s.setNum((unsigned) getIdentifier()), "Metaclass " + name(), TRUE); else start_file("class" + s.setNum((unsigned) getIdentifier()), "Class " + name(), TRUE); define(); gen_html("", 0, 0); end_file(); unload(FALSE, FALSE); }
void PingPong::serverConnected() { setMessage("Server Connected"); QByteArray size; size.setNum(m_boardWidth); size.append(' '); QByteArray size1; size1.setNum(m_boardHeight); size.append(size1); size.append(" \n"); socket->write(size.constData()); }
JavaScriptArrayType checkArray(KJS::ExecState *exec, KJS::JSValue *val) { KJS::JSObject *obj = val->toObject(exec); if (toQString(obj->className()) == "Array") { if (!obj->hasProperty(exec, KJS::Identifier("length"))) { return Map; } KJS::JSValue *jslen = obj->get(exec, KJS::Identifier("length")); const int len = jslen->toNumber(exec); if (len > 0) { QByteArray buff; buff.setNum(len - 1); if (!obj->hasProperty(exec, KJS::Identifier(buff.data()))) { return Map; } } return List; } else { return None; } }
void wrapInFunction() { //! [0] QByteArray ba("Hello"); //! [0] //! [1] QByteArray ba; ba.resize(5); ba[0] = 0x3c; ba[1] = 0xb8; ba[2] = 0x64; ba[3] = 0x18; ba[4] = 0xca; //! [1] //! [2] for (int i = 0; i < ba.size(); ++i) { if (ba.at(i) >= 'a' && ba.at(i) <= 'f') cout << "Found character in range [a-f]" << endl; } //! [2] //! [3] QByteArray x("and"); x.prepend("rock "); // x == "rock and" x.append(" roll"); // x == "rock and roll" x.replace(5, 3, "&"); // x == "rock & roll" //! [3] //! [4] QByteArray ba("We must be <b>bold</b>, very <b>bold</b>"); int j = 0; while ((j = ba.indexOf("<b>", j)) != -1) { cout << "Found <b> tag at index position " << j << endl; ++j; } //! [4] //! [5] QByteArray().isNull(); // returns true QByteArray().isEmpty(); // returns true QByteArray("").isNull(); // returns false QByteArray("").isEmpty(); // returns true QByteArray("abc").isNull(); // returns false QByteArray("abc").isEmpty(); // returns false //! [5] //! [6] QByteArray ba("Hello"); int n = ba.size(); // n == 5 ba.data()[0]; // returns 'H' ba.data()[4]; // returns 'o' ba.data()[5]; // returns '\0' //! [6] //! [7] QByteArray().isEmpty(); // returns true QByteArray("").isEmpty(); // returns true QByteArray("abc").isEmpty(); // returns false //! [7] //! [8] QByteArray ba("Hello world"); char *data = ba.data(); while (*data) { cout << "[" << *data << "]" << endl; ++data; } //! [8] //! [9] QByteArray ba; for (int i = 0; i < 10; ++i) ba[i] = 'A' + i; // ba == "ABCDEFGHIJ" //! [9] //! [10] QByteArray ba("Stockholm"); ba.truncate(5); // ba == "Stock" //! [10] //! [11] QByteArray ba("STARTTLS\r\n"); ba.chop(2); // ba == "STARTTLS" //! [11] //! [12] QByteArray x("free"); QByteArray y("dom"); x += y; // x == "freedom" //! [12] //! [13] QByteArray().isNull(); // returns true QByteArray("").isNull(); // returns false QByteArray("abc").isNull(); // returns false //! [13] //! [14] QByteArray ba("Istambul"); ba.fill('o'); // ba == "oooooooo" ba.fill('X', 2); // ba == "XX" //! [14] //! [15] QByteArray x("ship"); QByteArray y("air"); x.prepend(y); // x == "airship" //! [15] //! [16] QByteArray x("free"); QByteArray y("dom"); x.append(y); // x == "freedom" //! [16] //! [17] QByteArray ba("Meal"); ba.insert(1, QByteArray("ontr")); // ba == "Montreal" //! [17] //! [18] QByteArray ba("Montreal"); ba.remove(1, 4); // ba == "Meal" //! [18] //! [19] QByteArray x("Say yes!"); QByteArray y("no"); x.replace(4, 3, y); // x == "Say no!" //! [19] //! [20] QByteArray ba("colour behaviour flavour neighbour"); ba.replace(QByteArray("ou"), QByteArray("o")); // ba == "color behavior flavor neighbor" //! [20] //! [21] QByteArray x("sticky question"); QByteArray y("sti"); x.indexOf(y); // returns 0 x.indexOf(y, 1); // returns 10 x.indexOf(y, 10); // returns 10 x.indexOf(y, 11); // returns -1 //! [21] //! [22] QByteArray ba("ABCBA"); ba.indexOf("B"); // returns 1 ba.indexOf("B", 1); // returns 1 ba.indexOf("B", 2); // returns 3 ba.indexOf("X"); // returns -1 //! [22] //! [23] QByteArray x("crazy azimuths"); QByteArray y("az"); x.lastIndexOf(y); // returns 6 x.lastIndexOf(y, 6); // returns 6 x.lastIndexOf(y, 5); // returns 2 x.lastIndexOf(y, 1); // returns -1 //! [23] //! [24] QByteArray ba("ABCBA"); ba.lastIndexOf("B"); // returns 3 ba.lastIndexOf("B", 3); // returns 3 ba.lastIndexOf("B", 2); // returns 1 ba.lastIndexOf("X"); // returns -1 //! [24] //! [25] QByteArray url("ftp://ftp.qt-project.org/"); if (url.startsWith("ftp:")) ... //! [25] //! [26] QByteArray url("http://qt-project.org/doc/qt-5.0/qtdoc/index.html"); if (url.endsWith(".html")) ... //! [26] //! [27] QByteArray x("Pineapple"); QByteArray y = x.left(4); // y == "Pine" //! [27] //! [28] QByteArray x("Pineapple"); QByteArray y = x.right(5); // y == "apple" //! [28] //! [29] QByteArray x("Five pineapples"); QByteArray y = x.mid(5, 4); // y == "pine" QByteArray z = x.mid(5); // z == "pineapples" //! [29] //! [30] QByteArray x("Qt by DIGIA"); QByteArray y = x.toLower(); // y == "qt by digia" //! [30] //! [31] QByteArray x("Qt by DIGIA"); QByteArray y = x.toUpper(); // y == "QT BY DIGIA" //! [31] //! [32] QByteArray ba(" lots\t of\nwhitespace\r\n "); ba = ba.simplified(); // ba == "lots of whitespace"; //! [32] //! [33] QByteArray ba(" lots\t of\nwhitespace\r\n "); ba = ba.trimmed(); // ba == "lots\t of\nwhitespace"; //! [33] //! [34] QByteArray x("apple"); QByteArray y = x.leftJustified(8, '.'); // y == "apple..." //! [34] //! [35] QByteArray x("apple"); QByteArray y = x.rightJustified(8, '.'); // y == "...apple" //! [35] //! [36] QByteArray str("FF"); bool ok; int hex = str.toInt(&ok, 16); // hex == 255, ok == true int dec = str.toInt(&ok, 10); // dec == 0, ok == false //! [36] //! [37] QByteArray str("FF"); bool ok; long hex = str.toLong(&ok, 16); // hex == 255, ok == true long dec = str.toLong(&ok, 10); // dec == 0, ok == false //! [37] //! [38] QByteArray string("1234.56"); double a = string.toDouble(); // a == 1234.56 //! [38] //! [39] QByteArray text("Qt is great!"); text.toBase64(); // returns "UXQgaXMgZ3JlYXQh" //! [39] //! [39bis] QByteArray text("<p>Hello?</p>"); text.toBase64(QByteArray::Base64 | QByteArray::OmitTrailingEquals); // returns "PHA+SGVsbG8/PC9wPg" text.toBase64(QByteArray::Base64); // returns "PHA+SGVsbG8/PC9wPg==" text.toBase64(QByteArray::Base64Url); // returns "PHA-SGVsbG8_PC9wPg==" text.toBase64(QByteArray::Base64Url | QByteArray::OmitTrailingEquals); // returns "PHA-SGVsbG8_PC9wPg" //! [39bis] //! [40] QByteArray ba; int n = 63; ba.setNum(n); // ba == "63" ba.setNum(n, 16); // ba == "3f" //! [40] //! [41] int n = 63; QByteArray::number(n); // returns "63" QByteArray::number(n, 16); // returns "3f" QByteArray::number(n, 16).toUpper(); // returns "3F" //! [41] //! [42] QByteArray ba = QByteArray::number(12.3456, 'E', 3); // ba == 1.235E+01 //! [42] //! [43] static const char mydata[] = { 0x00, 0x00, 0x03, 0x84, 0x78, 0x9c, 0x3b, 0x76, 0xec, 0x18, 0xc3, 0x31, 0x0a, 0xf1, 0xcc, 0x99, ... 0x6d, 0x5b }; QByteArray data = QByteArray::fromRawData(mydata, sizeof(mydata)); QDataStream in(&data, QIODevice::ReadOnly); ... //! [43] //! [44] QByteArray text = QByteArray::fromBase64("UXQgaXMgZ3JlYXQh"); text.data(); // returns "Qt is great!" //! [44] //! [44bis] QByteArray::fromBase64("PHA+SGVsbG8/PC9wPg==", QByteArray::Base64Encoding); // returns "<p>Hello?</p>" QByteArray::fromBase64("PHA-SGVsbG8_PC9wPg==", QByteArray::Base64UrlEncoding); // returns "<p>Hello?</p>" //! [44bis] //! [45] QByteArray text = QByteArray::fromHex("517420697320677265617421"); text.data(); // returns "Qt is great!" //! [45] //! [46] QString tmp = "test"; QByteArray text = tmp.toLocal8Bit(); char *data = new char[text.size()]; strcpy(data, text.data()); delete [] data; //! [46] //! [47] QString tmp = "test"; QByteArray text = tmp.toLocal8Bit(); char *data = new char[text.size() + 1]; strcpy(data, text.data()); delete [] data; //! [47] //! [48] QByteArray ba1("ca\0r\0t"); ba1.size(); // Returns 2. ba1.constData(); // Returns "ca" with terminating \0. QByteArray ba2("ca\0r\0t", 3); ba2.size(); // Returns 3. ba2.constData(); // Returns "ca\0" with terminating \0. QByteArray ba3("ca\0r\0t", 4); ba3.size(); // Returns 4. ba3.constData(); // Returns "ca\0r" with terminating \0. const char cart[] = {'c', 'a', '\0', 'r', '\0', 't'}; QByteArray ba4(QByteArray::fromRawData(cart, 6)); ba4.size(); // Returns 6. ba4.constData(); // Returns "ca\0r\0t" without terminating \0. //! [48] }
bool ScPrintEngine_PS::print(ScribusDoc& doc, PrintOptions& options) { bool retw = false; ColorList usedColors; QMap<QString, QMap<uint, FPointArray> > usedFonts; QString filename(options.filename); doc.getUsedFonts(usedFonts); doc.getUsedColors(usedColors); PrefsManager *prefsManager = PrefsManager::instance(); PSLib *dd = new PSLib(options, true, prefsManager->appPrefs.AvailFonts, usedFonts, usedColors, options.includePDFMarks, options.useSpotColors); if (dd != NULL) { if (!options.toFile) filename = prefsManager->preferencesLocation()+"/tmp.ps"; bool PSfile = dd->PS_set_file(filename); filename = QDir::toNativeSeparators(filename); if (PSfile) { // Write the PS to a file int psCreationRetVal=dd->CreatePS(&doc, options); if (psCreationRetVal!=0) { QFile::remove(filename); if (psCreationRetVal==2) return true; else { m_errorMessage = dd->errorMessage(); return false; } } if (options.prnEngine != PostScript3 && ScCore->haveGS()) { // use gs to convert our PS to a lower version QString tmp; QStringList opts; opts.append( QString("-dDEVICEWIDTHPOINTS=%1").arg(tmp.setNum(doc.pageWidth)) ); opts.append( QString("-dDEVICEHEIGHTPOINTS=%1").arg(tmp.setNum(doc.pageHeight)) ); convertPS2PS(filename, filename + ".tmp", opts, options.prnEngine); moveFile( filename + ".tmp", filename ); } if (!options.toFile) { // print and delete the PS file QByteArray cmd; if (options.useAltPrintCommand) { cmd += options.printerCommand; cmd += " "; cmd += filename; system(cmd.data()); } else { QByteArray cc; cmd += "lpr -P '"; cmd += options.printer; cmd += "'"; if (options.copies > 1) cmd += " -#" + cc.setNum(options.copies); cmd += options.printerOptions; cmd += " "+filename; system(cmd.data()); } // Disabled that for now, as kprinter won't work otherwise // leaving that file around doesn't harm, as it will be overwritten the next time. // unlink(filename); } retw = true; } else retw = false; delete dd; } return retw; }
void MythSocket::ReadStringListReal( QStringList *list, uint timeoutMS, bool *ret) { list->clear(); *ret = false; MythTimer timer; timer.start(); int elapsed = 0; while (m_tcpSocket->bytesAvailable() < 8) { elapsed = timer.elapsed(); if (elapsed >= (int)timeoutMS) { LOG(VB_GENERAL, LOG_ERR, LOC + "ReadStringList: " + QString("Error, timed out after %1 ms.").arg(timeoutMS)); m_tcpSocket->close(); m_dataAvailable.fetchAndStoreOrdered(0); return; } if (m_tcpSocket->state() != QAbstractSocket::ConnectedState) { LOG(VB_GENERAL, LOG_ERR, LOC + "ReadStringList: Connection died."); m_dataAvailable.fetchAndStoreOrdered(0); return; } m_tcpSocket->waitForReadyRead(50); } QByteArray sizestr(8 + 1, '\0'); if (m_tcpSocket->read(sizestr.data(), 8) < 0) { LOG(VB_GENERAL, LOG_ERR, LOC + QString("ReadStringList: Error, read return error (%1)") .arg(m_tcpSocket->errorString())); m_tcpSocket->close(); m_dataAvailable.fetchAndStoreOrdered(0); return; } QString sizes = sizestr; qint64 btr = sizes.trimmed().toInt(); if (btr < 1) { int pending = m_tcpSocket->bytesAvailable(); LOG(VB_GENERAL, LOG_ERR, LOC + QString("Protocol error: '%1' is not a valid size " "prefix. %2 bytes pending.") .arg(sizestr.data()).arg(pending)); ResetReal(); return; } QByteArray utf8(btr + 1, 0); qint64 readoffset = 0; int errmsgtime = 0; timer.start(); while (btr > 0) { if (m_tcpSocket->bytesAvailable() < 1) { if (m_tcpSocket->state() == QAbstractSocket::ConnectedState) { m_tcpSocket->waitForReadyRead(50); } else { LOG(VB_GENERAL, LOG_ERR, LOC + "ReadStringList: Connection died."); m_dataAvailable.fetchAndStoreOrdered(0); return; } } qint64 sret = m_tcpSocket->read(utf8.data() + readoffset, btr); if (sret > 0) { readoffset += sret; btr -= sret; if (btr > 0) { timer.start(); } } else if (sret < 0) { LOG(VB_GENERAL, LOG_ERR, LOC + "ReadStringList: Error, read"); m_tcpSocket->close(); m_dataAvailable.fetchAndStoreOrdered(0); return; } else if (!m_tcpSocket->isValid()) { LOG(VB_GENERAL, LOG_ERR, LOC + "ReadStringList: Error, socket went unconnected"); m_tcpSocket->close(); m_dataAvailable.fetchAndStoreOrdered(0); return; } else { elapsed = timer.elapsed(); if (elapsed > 10000) { if ((elapsed - errmsgtime) > 10000) { errmsgtime = elapsed; LOG(VB_GENERAL, LOG_ERR, LOC + QString("ReadStringList: Waiting for data: %1 %2") .arg(readoffset).arg(btr)); } } if (elapsed > 100000) { LOG(VB_GENERAL, LOG_ERR, LOC + "Error, ReadStringList timeout (readBlock)"); m_dataAvailable.fetchAndStoreOrdered(0); return; } } } QString str = QString::fromUtf8(utf8.data()); QByteArray payload; payload = payload.setNum(str.length()); payload += " "; payload.truncate(8); payload += str; if (VERBOSE_LEVEL_CHECK(VB_NETWORK, LOG_INFO)) { QString msg = QString("read <- %1 %2") .arg(m_tcpSocket->socketDescriptor(), 2) .arg(payload.data()); if (logLevel < LOG_DEBUG && msg.length() > 88) { msg.truncate(85); msg += "..."; } LOG(VB_NETWORK, LOG_INFO, LOC + msg); } *list = str.split("[]:[]"); m_dataAvailable.fetchAndStoreOrdered( (m_tcpSocket->bytesAvailable() > 0) ? 1 : 0); *ret = true; }
void MythSocket::WriteStringListReal(const QStringList *list, bool *ret) { if (list->empty()) { LOG(VB_GENERAL, LOG_ERR, LOC + "WriteStringList: Error, invalid string list."); *ret = false; return; } if (m_tcpSocket->state() != QAbstractSocket::ConnectedState) { LOG(VB_GENERAL, LOG_ERR, LOC + "WriteStringList: Error, called with unconnected socket."); *ret = false; return; } QString str = list->join("[]:[]"); if (str.isEmpty()) { LOG(VB_GENERAL, LOG_ERR, LOC + "WriteStringList: Error, joined null string."); *ret = false; return; } QByteArray utf8 = str.toUtf8(); int size = utf8.length(); int written = 0; int written_since_timer_restart = 0; QByteArray payload; payload = payload.setNum(size); payload += " "; payload.truncate(8); payload += utf8; size = payload.length(); if (VERBOSE_LEVEL_CHECK(VB_NETWORK, LOG_INFO)) { QString msg = QString("write -> %1 %2") .arg(m_tcpSocket->socketDescriptor(), 2).arg(payload.data()); if (logLevel < LOG_DEBUG && msg.length() > 88) { msg.truncate(85); msg += "..."; } LOG(VB_NETWORK, LOG_INFO, LOC + msg); } MythTimer timer; timer.start(); unsigned int errorcount = 0; while (size > 0) { if (m_tcpSocket->state() != QAbstractSocket::ConnectedState) { LOG(VB_GENERAL, LOG_ERR, LOC + "WriteStringList: Error, socket went unconnected." + QString("\n\t\t\tWe wrote %1 of %2 bytes with %3 errors") .arg(written).arg(written+size).arg(errorcount) + QString("\n\t\t\tstarts with: %1").arg(to_sample(payload))); *ret = false; return; } int temp = m_tcpSocket->write(payload.data() + written, size); if (temp > 0) { written += temp; written_since_timer_restart += temp; size -= temp; if ((timer.elapsed() > 500) && written_since_timer_restart != 0) { timer.restart(); written_since_timer_restart = 0; } } else if (temp <= 0) { errorcount++; if (timer.elapsed() > 1000) { LOG(VB_GENERAL, LOG_ERR, LOC + "WriteStringList: Error, " + QString("No data written on write (%1 errors)") .arg(errorcount) + QString("\n\t\t\tstarts with: %1") .arg(to_sample(payload))); *ret = false; return; } usleep(1000); } } m_tcpSocket->flush(); *ret = true; return; }
void KSystemTray2::displayCloseMessage(QString fileMenu) { /* IDEAS OF IMPROVEMENTS: * - Use queuedMessageBox() but it need a dontAskAgainName parameter * and image in QMimeSourceFactory shouldn't be removed. * - Sometimes the systray icon is covered (a passive popup...) * Use XComposite extension, if available, to get the kicker pixmap. * - Perhapse desaturate the area around the proper SysTray icon, * helping bring it into sharper focus. Or draw the cicle with XOR * brush. * - Perhapse add the icon in the text (eg. "... in the * system tray ([icon])."). Add some clutter to the dialog. */ #if KDE_IS_VERSION( 3, 1, 90 ) // Don't do all the computations if they are unneeded: if ( ! KMessageBox::shouldBeShownContinue("hideOnCloseInfo") ) return; #endif // "Default parameter". Here, to avoid a i18n() call and dependancy in the .h if (fileMenu.isEmpty()) fileMenu = i18n("File"); // Some values we need: QPoint g = mapToGlobal(pos()); int desktopWidth = kapp->desktop()->width(); int desktopHeight = kapp->desktop()->height(); int tw = width(); int th = height(); // We are triying to make a live screenshot of the systray icon to circle it // and show it to the user. If no systray is used or if the icon is not visible, // we should not show that screenshot but only a text! // 1. Determine if the user use a system tray area or not: QByteArray screenstr; screenstr.setNum(qt_xscreen()); QByteArrray trayatom = "_NET_SYSTEM_TRAY_S" + screenstr; bool useSystray = (KSelectionWatcher(trayatom).owner() != 0L); // 2. And then if the icon is visible too (eg. this->show() has been called): useSystray = useSystray && isVisible(); // 3. Kicker (or another systray manager) can be visible but masked out of // the screen (ie. on right or on left of it). We check if the icon isn't // out of screen. if (useSystray) { QRect deskRect(0, 0, desktopWidth, desktopHeight); if ( !deskRect.contains(g.x(), g.y()) || !deskRect.contains(g.x() + tw, g.y() + th) ) useSystray = false; } // 4. We raise the window containing the systray icon (typically the kicker) to // have the most chances it is visible during the capture: /* if (useSystray) { // We are testing if one of the corners is hidden, and if yes, we would enter // a time consuming process (raise kicker and wait some time): // if (kapp->widgetAt(g) != this || // kapp->widgetAt(g + QPoint(tw-1, 0)) != this || // kapp->widgetAt(g + QPoint(0, th-1)) != this || // kapp->widgetAt(g + QPoint(tw-1, th-1)) != this) { int systrayManagerWinId = topLevelWidget()->winId(); KWindowSystem::forceActiveWindow(systrayManagerWinId); kapp->processEvents(); // Because without it the systrayManager is raised only after the messageBox is displayed // KWindowSystem::activateWindow(systrayManagerWinId); // kapp->processEvents(); // Because without it the systrayManager is raised only after the messageBox is displayed // KWindowSystem::raiseWindow(systrayManagerWinId); // kapp->processEvents(); // Because without it the systrayManager is raised only after the messageBox is displayed sleep(1); // TODO: Re-verify that at least one corner is now visible // } }*/ // KMessageBox::information(this, QString::number(g.x()) + ":" + QString::number(g.y()) + ":" + // QString::number((int)(kapp->widgetAt(g+QPoint(1,1))))); QString message = i18n( "<p>Closing the main window will keep %1 running in the system tray. " "Use <b>Quit</b> from the <b>Basket</b> menu to quit the application.</p>" ,KGlobal::instance()->aboutData()->programName()); // We are sure the systray icon is visible: ouf! if (useSystray) { // Compute size and position of the pixmap to be grabbed: int w = desktopWidth / 4; int h = desktopHeight / 9; int x = g.x() + tw/2 - w/2; // Center the rectange in the systray icon int y = g.y() + th/2 - h/2; if (x < 0) x = 0; // Move the rectangle to stay in the desktop limits if (y < 0) y = 0; if (x + w > desktopWidth) x = desktopWidth - w; if (y + h > desktopHeight) y = desktopHeight - h; // Grab the desktop and draw a circle arround the icon: QPixmap shot = QPixmap::grabWindow(QX11Info::appRootWindow(), x, y, w, h); QPainter painter(&shot); const int CIRCLE_MARGINS = 6; const int CIRCLE_WIDTH = 3; const int SHADOW_OFFSET = 1; const int IMAGE_BORDER = 1; int ax = g.x() - x - CIRCLE_MARGINS - 1; int ay = g.y() - y - CIRCLE_MARGINS - 1; painter.setPen( QPen(KApplication::palette().active().dark(), CIRCLE_WIDTH) ); painter.drawArc(ax + SHADOW_OFFSET, ay + SHADOW_OFFSET, tw + 2*CIRCLE_MARGINS, th + 2*CIRCLE_MARGINS, 0, 16*360); painter.setPen( QPen(Qt::red/*KApplication::palette().active().highlight()*/, CIRCLE_WIDTH) ); painter.drawArc(ax, ay, tw + 2*CIRCLE_MARGINS, th + 2*CIRCLE_MARGINS, 0, 16*360); #if 1 // Draw the pixmap over the screenshot in case a window hide the icon: painter.drawPixmap(g.x() - x, g.y() - y + 1, *pixmap()); #endif painter.end(); // Then, we add a border arround the image to make it more visible: QPixmap finalShot(w + 2*IMAGE_BORDER, h + 2*IMAGE_BORDER); finalShot.fill(KApplication::palette().active().foreground()); painter.begin(&finalShot); painter.drawPixmap(IMAGE_BORDER, IMAGE_BORDER, shot); painter.end(); // Associate source to image and show the dialog: QResource::registerResource(finalShot, "systray_shot"); KMessageBox::information(kapp->activeWindow(), message + "<p><center><img source=\":/systray_shot\"></center></p>", i18n("Docking in System Tray"), "hideOnCloseInfo"); QResource::unregisterResource(finalShot, "systray_shot"); } else { KMessageBox::information(kapp->activeWindow(), message, i18n("Docking in System Tray"), "hideOnCloseInfo"); } }
void PingPong::checkBoundaries() { float ballWidth = m_boardWidth/54; float blockSize = m_boardWidth/27; float blockHeight = m_boardHeight/5; //! [Checking the boundaries] if (((m_ballX + ballWidth) > (m_boardWidth - blockSize)) && ((m_ballY + ballWidth) < (m_rightBlockY + blockHeight)) && (m_ballY > m_rightBlockY)) { m_targetY = 2 * m_ballY - m_ballPreviousY; m_targetX = m_ballPreviousX; interval = -5; updateDirection(); } else if ((m_ballX < blockSize) && ((m_ballY + ballWidth) < (m_leftBlockY + blockHeight)) && (m_ballY > m_leftBlockY)) { m_targetY = 2 * m_ballY - m_ballPreviousY; m_targetX = m_ballPreviousX; interval = 5; updateDirection(); } else if (m_ballY < 0 || (m_ballY + ballWidth > m_boardHeight)) { m_targetY = m_ballPreviousY; m_targetX = m_ballX + interval; updateDirection(); } //! [Checking the boundaries] else if ((m_ballX + ballWidth) > m_boardWidth) { m_resultLeft++; m_targetX = m_boardWidth; m_targetY = m_boardHeight/2; m_ballPreviousX = m_ballX = m_boardWidth/2; m_ballPreviousY = m_ballY = m_boardHeight - m_boardWidth/54; updateDirection(); checkResult(); QByteArray result; result.append("result "); QByteArray res; res.setNum(m_resultLeft); result.append(res); result.append(' '); res.setNum(m_resultRight); result.append(res); result.append(" \n"); socket->write(result); qDebug() << result; Q_EMIT resultChanged(); } else if (m_ballX < 0) { m_resultRight++; m_targetX = 0; m_targetY = m_boardHeight/2; m_ballPreviousX = m_ballX = m_boardWidth/2; m_ballPreviousY = m_ballY = m_boardHeight - m_boardWidth/54; updateDirection(); checkResult(); QByteArray result; result.append("result "); QByteArray res; res.setNum(m_resultLeft); result.append(res); result.append(' '); res.setNum(m_resultRight); result.append(res); result.append(" \n"); socket->write(result); Q_EMIT resultChanged(); } }
bool MythSocket::writeStringList(QStringList &list) { if (list.size() <= 0) { VERBOSE(VB_IMPORTANT, LOC + "writeStringList: Error, invalid string list."); return false; } if (state() != Connected) { VERBOSE(VB_IMPORTANT, LOC + "writeStringList: Error, called with unconnected socket."); return false; } QString str = list.join("[]:[]"); if (str.isEmpty()) { VERBOSE(VB_IMPORTANT, LOC + "writeStringList: Error, joined null string."); return false; } QByteArray utf8 = str.toUtf8(); int size = utf8.length(); int written = 0; int written_since_timer_restart = 0; QByteArray payload; payload = payload.setNum(size); payload += " "; payload.truncate(8); payload += utf8; size = payload.length(); if (VERBOSE_LEVEL_CHECK(VB_NETWORK)) { QString msg = QString("write -> %1 %2") .arg(socket(), 2).arg(payload.data()); if (!VERBOSE_LEVEL_CHECK(VB_EXTRA) && msg.length() > 88) { msg.truncate(85); msg += "..."; } VERBOSE(VB_NETWORK, LOC + msg); } MythTimer timer; timer.start(); unsigned int errorcount = 0; while (size > 0) { if (state() != Connected) { VERBOSE(VB_IMPORTANT, LOC + "writeStringList: Error, socket went unconnected." + QString("\n\t\t\tWe wrote %1 of %2 bytes with %3 errors") .arg(written).arg(written+size).arg(errorcount) + QString("\n\t\t\tstarts with: %1").arg(toSample(payload))); return false; } int temp = writeBlock(payload.data() + written, size); if (temp > 0) { written += temp; written_since_timer_restart += temp; size -= temp; if ((timer.elapsed() > 500) && written_since_timer_restart != 0) { timer.restart(); written_since_timer_restart = 0; } } else if (temp < 0 && error() != MSocketDevice::NoError) { VERBOSE(VB_IMPORTANT, LOC + QString("writeStringList: Error, writeBlock failed. (%1)") .arg(errorToString())); return false; } else if (temp <= 0) { errorcount++; if (timer.elapsed() > 1000) { VERBOSE(VB_GENERAL, LOC + "writeStringList: Error, " + QString("No data written on writeBlock (%1 errors)") .arg(errorcount) + QString("\n\t\t\tstarts with: %1") .arg(toSample(payload))); return false; } usleep(1000); } } flush(); return true; }
bool MythSocket::readStringList(QStringList &list, uint timeoutMS) { list.clear(); if (state() != Connected) { VERBOSE(VB_IMPORTANT, LOC + "readStringList: Error, called with unconnected socket."); return false; } MythTimer timer; timer.start(); int elapsed = 0; while (waitForMore(5) < 8) { elapsed = timer.elapsed(); if (elapsed >= (int)timeoutMS) { VERBOSE(VB_IMPORTANT, LOC + "readStringList: " + QString("Error, timed out after %1 ms.").arg(timeoutMS)); close(); return false; } if (state() != Connected) { VERBOSE(VB_IMPORTANT, LOC + "readStringList: Connection died."); return false; } { struct timeval tv; int maxfd; fd_set rfds; FD_ZERO(&rfds); FD_SET(socket(), &rfds); maxfd = socket(); tv.tv_sec = 0; tv.tv_usec = 0; int rval = select(maxfd + 1, &rfds, NULL, NULL, &tv); if (rval) { if (bytesAvailable() == 0) { VERBOSE(VB_IMPORTANT, LOC + "readStringList: Connection died (select)."); return false; } } } } QByteArray sizestr(8 + 1, '\0'); if (readBlock(sizestr.data(), 8) < 0) { VERBOSE(VB_GENERAL, LOC + QString("readStringList: Error, readBlock return error (%1)") .arg(errorToString())); close(); return false; } QString sizes = sizestr; qint64 btr = sizes.trimmed().toInt(); if (btr < 1) { int pending = bytesAvailable(); QByteArray dump(pending + 1, 0); readBlock(dump.data(), pending); VERBOSE(VB_IMPORTANT, LOC + QString("Protocol error: '%1' is not a valid size " "prefix. %2 bytes pending.") .arg(sizestr.data()).arg(pending)); return false; } QByteArray utf8(btr + 1, 0); qint64 read = 0; int errmsgtime = 0; timer.start(); while (btr > 0) { qint64 sret = readBlock(utf8.data() + read, btr); if (sret > 0) { read += sret; btr -= sret; if (btr > 0) { timer.start(); } } else if (sret < 0 && error() != MSocketDevice::NoError) { VERBOSE(VB_GENERAL, LOC + QString("readStringList: Error, readBlock %1") .arg(errorToString())); close(); return false; } else if (!isValid()) { VERBOSE(VB_IMPORTANT, LOC + "readStringList: Error, socket went unconnected"); close(); return false; } else { elapsed = timer.elapsed(); if (elapsed > 10000) { if ((elapsed - errmsgtime) > 10000) { errmsgtime = elapsed; VERBOSE(VB_GENERAL, LOC + QString("readStringList: Waiting for data: %1 %2") .arg(read).arg(btr)); } } if (elapsed > 100000) { VERBOSE(VB_GENERAL, LOC + "Error, readStringList timeout (readBlock)"); return false; } usleep(500); } } QString str = QString::fromUtf8(utf8.data()); QByteArray payload; payload = payload.setNum(str.length()); payload += " "; payload.truncate(8); payload += str; if (VERBOSE_LEVEL_CHECK(VB_NETWORK)) { QString msg = QString("read <- %1 %2").arg(socket(), 2) .arg(payload.data()); if (!VERBOSE_LEVEL_CHECK(VB_EXTRA) && msg.length() > 88) { msg.truncate(85); msg += "..."; } VERBOSE(VB_NETWORK, LOC + msg); } list = str.split("[]:[]"); m_notifyread = false; s_readyread_thread->WakeReadyReadThread(); return true; }
void WatchItem::parseHelper(const GdbMi &input) { setChildrenUnneeded(); GdbMi mi = input["type"]; if (mi.isValid()) setType(mi.data()); editvalue = input["editvalue"].data(); editformat = DebuggerDisplay(input["editformat"].toInt()); editencoding = DebuggerEncoding(input["editencoding"].data()); mi = input["valueelided"]; if (mi.isValid()) elided = mi.toInt(); mi = input["bitpos"]; if (mi.isValid()) bitpos = mi.toInt(); mi = input["bitsize"]; if (mi.isValid()) bitsize = mi.toInt(); mi = input["origaddr"]; if (mi.isValid()) origaddr = mi.toAddress(); mi = input["address"]; if (mi.isValid()) { address = mi.toAddress(); if (exp.isEmpty()) { if (iname.startsWith("local.") && iname.count('.') == 1) // Solve one common case of adding 'class' in // *(class X*)0xdeadbeef for gdb. exp = name.toLatin1(); else exp = "*(" + gdbQuoteTypes(type) + "*)" + hexAddress(); } } mi = input["value"]; QByteArray enc = input["valueencoded"].data(); if (mi.isValid() || !enc.isEmpty()) { setValue(decodeData(mi.data(), enc)); } else { setValueNeeded(); } mi = input["size"]; if (mi.isValid()) size = mi.toInt(); mi = input["exp"]; if (mi.isValid()) exp = mi.data(); mi = input["valueenabled"]; if (mi.data() == "true") valueEnabled = true; else if (mi.data() == "false") valueEnabled = false; mi = input["valueeditable"]; if (mi.data() == "true") valueEditable = true; else if (mi.data() == "false") valueEditable = false; mi = input["numchild"]; // GDB/MI if (mi.isValid()) setHasChildren(mi.toInt() > 0); mi = input["haschild"]; // native-mixed if (mi.isValid()) setHasChildren(mi.toInt() > 0); mi = input["arraydata"]; if (mi.isValid()) { DebuggerEncoding encoding(input["arrayencoding"].data()); QByteArray childType = input["childtype"].data(); decodeArrayData(this, mi.data(), encoding, childType); } else { const GdbMi children = input["children"]; if (children.isValid()) { bool ok = false; // Try not to repeat data too often. const GdbMi childType = input["childtype"]; const GdbMi childNumChild = input["childnumchild"]; qulonglong addressBase = input["addrbase"].data().toULongLong(&ok, 0); qulonglong addressStep = input["addrstep"].data().toULongLong(&ok, 0); for (int i = 0, n = int(children.children().size()); i != n; ++i) { const GdbMi &subinput = children.children().at(i); WatchItem *child = new WatchItem; if (childType.isValid()) child->setType(childType.data()); if (childNumChild.isValid()) child->setHasChildren(childNumChild.toInt() > 0); GdbMi name = subinput["name"]; QByteArray nn; if (name.isValid()) { nn = name.data(); child->name = QString::fromLatin1(nn); } else { nn.setNum(i); child->name = QString::fromLatin1("[%1]").arg(i); } GdbMi iname = subinput["iname"]; if (iname.isValid()) child->iname = iname.data(); else child->iname = this->iname + '.' + nn; if (addressStep) { child->address = addressBase + i * addressStep; child->exp = "*(" + gdbQuoteTypes(child->type) + "*)" + child->hexAddress(); } QByteArray key = subinput["key"].data(); if (!key.isEmpty()) child->name = decodeData(key, subinput["keyencoded"].data()); child->parseHelper(subinput); appendChild(child); } } } }
QByteArray OptionWidget::mimeDataArray() { QByteArray data; data.setNum(reinterpret_cast<qulonglong>(this), 16); return data; };