int main(int argc, char *argv[]) { //printf("in...%s\n",__FUNCTION__); QApplication a(argc, argv); buzzer buz; buz.stop_music(); #if 1 QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); //QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); //QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); #endif int nIndex = QFontDatabase::addApplicationFont("/wenquanyi.ttf");//opt/Qtopia4.4.3/lib/fonts if (nIndex != -1){ QStringList strList(QFontDatabase::applicationFontFamilies(nIndex)); if (strList.count() > 0){ QFont fontThis(strList.at(0)); qDebug()<< strList.size() <<strList.at(0); fontThis.setPointSize(9); a.setFont(fontThis); } } nIndex = QFontDatabase::addApplicationFont("/symbol.ttf");//opt/Qtopia4.4.3/lib/fonts if (nIndex != -1){ QStringList strList(QFontDatabase::applicationFontFamilies(nIndex)); if (strList.count() > 0){ QFont fontThis(strList.at(0)); qDebug()<< strList.size() <<strList.at(0); fontThis.setPointSize(9); a.setFont(fontThis); } } printer pri; #if 0 printer::transmit(0x0A,1); printer::transmit((void *)"shanghaikairen",14); printer::transmit(0x0A,1); #endif //把QMessageBox的按钮变成中文的 QTranslator trans; trans.load("/qt_zh_CN"); a.installTranslator(&trans); QCoreApplication::setOrganizationName("shanghaikairen"); QCoreApplication::setApplicationName("analysis"); Widget w; logo l; l.showFullScreen(); QTimer::singleShot(3000,&l,SLOT(close())); w.setFont(QFont("wenquanyi",FONT_SIZE,QFont::Normal)); QTimer::singleShot(2800,&w,SLOT(showFullScreen())); return a.exec(); }
void ZMClient::deleteEventList(vector<Event*> *eventList) { // delete events in 100 event chunks QStringList strList("DELETE_EVENT_LIST"); int count = 0; vector<Event*>::iterator it; for (it = eventList->begin(); it != eventList->end(); ++it) { strList << QString::number((*it)->eventID()); if (++count == 100) { sendReceiveStringList(strList); strList = QStringList("DELETE_EVENT_LIST"); count = 0; } } // make sure the last chunk is deleted sendReceiveStringList(strList); // run zmaudit to clean up the orphaned db entries strList = QStringList("RUN_ZMAUDIT"); sendReceiveStringList(strList); }
int main(int argc, char* argv[]) { // create thread to run "thread manager" once //iCore::MsgThread m(QThread::LowestPriority, true); ESS_ASSERT(argc > 0); Utils::ExeName::Init(argv[0]); Utils::DelayInitHost::Inst().DoInit(); QCoreApplication a(argc, argv); AppExceptionHook hook; std::cout << "IPSIUS Project tests:\n"; Utils::ArgStringList strList(argc, argv); TestFw::StdOutput output; TestFw::TestVerification testVer(CSingleTestTimeout); TestFw::TestLauncher launcher(output); launcher.AddOutputter(testVer); RegisterAllTests(launcher); launcher.Run(strList); // Do final checks FinalChecks(); return 0; }
int ZMClient::getLiveFrame(int monitorID, QString &status, unsigned char* buffer, int bufferSize) { QStringList strList("GET_LIVE_FRAME"); strList << QString::number(monitorID); if (!sendReceiveStringList(strList)) { if (strList.size() < 1) { LOG(VB_GENERAL, LOG_ERR, "ZMClient response too short"); return 0; } // the server sends a "WARNING" message if there is no new // frame available we can safely ignore it if (strList[0].startsWith("WARNING")) { return 0; } else { status = strList[0]; return 0; } } // sanity check if (strList.size() < 4) { LOG(VB_GENERAL, LOG_ERR, "ZMClient response too short"); return 0; } // get status status = strList[2]; // get frame length from data int imageSize = strList[3].toInt(); if (bufferSize < imageSize) { LOG(VB_GENERAL, LOG_ERR, "ZMClient::getLiveFrame(): Live frame buffer is too small!"); return 0; } // read the frame data if (imageSize == 0) return 0; if (!readData(buffer, imageSize)) { LOG(VB_GENERAL, LOG_ERR, "ZMClient::getLiveFrame(): Failed to get image data"); return 0; } return imageSize; }
void ZMClient::setMonitorFunction(const int monitorID, const QString &function, const int enabled) { QStringList strList("SET_MONITOR_FUNCTION"); strList << QString::number(monitorID); strList << function; strList << QString::number(enabled); if (!sendReceiveStringList(strList)) return; }
void initLanguage(QApplication &a) { #if 1 QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); #if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) qDebug() << "test"; QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QSettings::setPath(QSettings::NativeFormat, QSettings::UserScope, "/test/"); #endif #endif int nIndex = QFontDatabase::addApplicationFont("/wenquanyi.ttf");//opt/Qtopia4.4.3/lib/fonts if (nIndex != -1){ QStringList strList(QFontDatabase::applicationFontFamilies(nIndex)); if (strList.count() > 0){ QFont fontThis(strList.at(0)); qDebug()<< strList.size() <<strList.at(0); fontThis.setPointSize(9); a.setFont(fontThis); } } nIndex = QFontDatabase::addApplicationFont("/symbol.ttf");//opt/Qtopia4.4.3/lib/fonts if (nIndex != -1){ QStringList strList(QFontDatabase::applicationFontFamilies(nIndex)); if (strList.count() > 0){ QFont fontThis(strList.at(0)); qDebug()<< strList.size() <<strList.at(0); fontThis.setPointSize(9); a.setFont(fontThis); } } //把QMessageBox的按钮变成中文的 QTranslator trans; trans.load("/qt_zh_CN"); a.installTranslator(&trans); }
void ZMClient::getEventList(const QString &monitorName, bool oldestFirst, const QString &date, bool includeContinuous, vector<Event*> *eventList) { eventList->clear(); QStringList strList("GET_EVENT_LIST"); strList << monitorName << (oldestFirst ? "1" : "0") ; strList << date; strList << (includeContinuous ? "1" : "0") ; if (!sendReceiveStringList(strList)) return; // sanity check if (strList.size() < 2) { LOG(VB_GENERAL, LOG_ERR, "ZMClient response too short"); return; } bool bOK; int eventCount = strList[1].toInt(&bOK); if (!bOK) { LOG(VB_GENERAL, LOG_ERR, "ZMClient received bad int in getEventList()"); return; } // sanity check if ((int)(strList.size() - 2) / 6 != eventCount) { LOG(VB_GENERAL, LOG_ERR, "ZMClient got a mismatch between the number of events and " "the expected number of stringlist items in getEventList()"); return; } QStringList::Iterator it = strList.begin(); it++; it++; for (int x = 0; x < eventCount; x++) { eventList->push_back( new Event( (*it++).toInt(), /* eventID */ *it++, /* eventName */ (*it++).toInt(), /* monitorID */ *it++, /* monitorName */ QDateTime::fromString(*it++, Qt::ISODate), /* startTime */ *it++ /* length */)); } }
void ZMClient::getEventFrame(Event *event, int frameNo, MythImage **image) { if (*image) { (*image)->DecrRef(); *image = NULL; } QStringList strList("GET_EVENT_FRAME"); strList << QString::number(event->monitorID()); strList << QString::number(event->eventID()); strList << QString::number(frameNo); strList << event->startTime(Qt::LocalTime).toString("yy/MM/dd/hh/mm/ss"); if (!sendReceiveStringList(strList)) return; // sanity check if (strList.size() < 2) { LOG(VB_GENERAL, LOG_ERR, "ZMClient response too short"); return; } // get frame length from data int imageSize = strList[1].toInt(); // grab the image data unsigned char *data = new unsigned char[imageSize]; if (!readData(data, imageSize)) { LOG(VB_GENERAL, LOG_ERR, "ZMClient::getEventFrame(): Failed to get image data"); delete [] data; return; } // get a MythImage *image = GetMythMainWindow()->GetCurrentPainter()->GetFormatImage(); // extract the image data and create a MythImage from it if (!(*image)->loadFromData(data, imageSize, "JPEG")) { LOG(VB_GENERAL, LOG_ERR, "ZMClient::getEventFrame(): Failed to load image from data"); } delete [] data; }
void ZMClient::getServerStatus(QString &status, QString &cpuStat, QString &diskStat) { QStringList strList("GET_SERVER_STATUS"); if (!sendReceiveStringList(strList)) return; // sanity check if (strList.size() < 4) { LOG(VB_GENERAL, LOG_ERR, "ZMClient response too short"); return; } status = strList[1]; cpuStat = strList[2]; diskStat = strList[3]; }
bool ZMClient::updateAlarmStates(void) { QStringList strList("GET_ALARM_STATES"); if (!sendReceiveStringList(strList)) return false; // sanity check if (strList.size() < 2) { LOG(VB_GENERAL, LOG_ERR, "ZMClient response too short"); return false; } bool bOK; int monitorCount = strList[1].toInt(&bOK); if (!bOK) { LOG(VB_GENERAL, LOG_ERR, "ZMClient received bad int in getAlarmStates()"); return false; } QMutexLocker locker(&m_listLock); bool changed = false; for (int x = 0; x < monitorCount; x++) { int monID = strList[x * 2 + 2].toInt(); int state = strList[x * 2 + 3].toInt(); if (m_monitorMap.contains(monID)) { Monitor *mon = m_monitorMap.find(monID).value(); if (mon->state != state) { // alarm state has changed for this monitor mon->state = (State)state; changed = true; } } } return changed; }
void ZMClient::getAnalyseFrame(Event *event, int frameNo, QImage &image) { QStringList strList("GET_ANALYSE_FRAME"); strList << QString::number(event->monitorID()); strList << QString::number(event->eventID()); strList << QString::number(frameNo); strList << event->startTime(Qt::LocalTime).toString("yy/MM/dd/hh/mm/ss"); if (!sendReceiveStringList(strList)) { image = QImage(); return; } // sanity check if (strList.size() < 2) { LOG(VB_GENERAL, LOG_ERR, "ZMClient response too short"); return; } // get frame length from data int imageSize = strList[1].toInt(); // grab the image data unsigned char *data = new unsigned char[imageSize]; if (!readData(data, imageSize)) { LOG(VB_GENERAL, LOG_ERR, "ZMClient::getAnalyseFrame(): Failed to get image data"); image = QImage(); } else { // extract the image data and create a QImage from it if (!image.loadFromData(data, imageSize, "JPEG")) { LOG(VB_GENERAL, LOG_ERR, "ZMClient::getAnalyseFrame(): Failed to load image from data"); image = QImage(); } } delete [] data; }
void ZMClient::getEventDates(const QString &monitorName, bool oldestFirst, QStringList &dateList) { dateList.clear(); QStringList strList("GET_EVENT_DATES"); strList << monitorName << (oldestFirst ? "1" : "0") ; if (!sendReceiveStringList(strList)) return; // sanity check if (strList.size() < 2) { LOG(VB_GENERAL, LOG_ERR, "ZMClient response too short"); return; } bool bOK; int dateCount = strList[1].toInt(&bOK); if (!bOK) { LOG(VB_GENERAL, LOG_ERR, "ZMClient received bad int in getEventDates()"); return; } // sanity check if ((int)(strList.size() - 3) != dateCount) { LOG(VB_GENERAL, LOG_ERR, "ZMClient got a mismatch between the number of dates and " "the expected number of stringlist items in getEventDates()"); return; } QStringList::Iterator it = strList.begin(); it++; it++; for (int x = 0; x < dateCount; x++) { dateList.append(*it++); } }
void ZMClient::getFrameList(int eventID, vector<Frame*> *frameList) { frameList->clear(); QStringList strList("GET_FRAME_LIST"); strList << QString::number(eventID); if (!sendReceiveStringList(strList)) return; // sanity check if (strList.size() < 2) { LOG(VB_GENERAL, LOG_ERR, "ZMClient response too short"); return; } bool bOK; int frameCount = strList[1].toInt(&bOK); if (!bOK) { LOG(VB_GENERAL, LOG_ERR, "ZMClient received bad int in getFrameList()"); return; } // sanity check if ((int)(strList.size() - 2) / 2 != frameCount) { LOG(VB_GENERAL, LOG_ERR, "ZMClient got a mismatch between the number of frames and " "the expected number of stringlist items in getFrameList()"); return; } QStringList::Iterator it = strList.begin(); it++; it++; for (int x = 0; x < frameCount; x++) { Frame *item = new Frame; item->type = *it++; item->delta = (*it++).toDouble(); frameList->push_back(item); } }
QPixmap KSimData::readPixmapEntry( const char *pKey, const QPixmap* pDefault ) const { if (hasKey(pKey)) { QStringList strList(readListEntry(pKey)); unsigned int size,i; size = strList[0].toUInt(0,16); QByteArray array(size); for (i = 0; i < size; i++) { array[i] = (char) strList[i+1].toUInt(0,16); } QDataStream stream(array, IO_ReadOnly); QPixmap pixmap; stream >> pixmap; return pixmap; } else if (pDefault)
void ZMClient::updateMonitorStatus(void) { QStringList strList("GET_MONITOR_STATUS"); if (!sendReceiveStringList(strList)) return; // sanity check if (strList.size() < 2) { LOG(VB_GENERAL, LOG_ERR, "ZMClient response too short"); return; } bool bOK; int monitorCount = strList[1].toInt(&bOK); if (!bOK) { LOG(VB_GENERAL, LOG_ERR, "ZMClient received bad int in getMonitorStatus()"); return; } QMutexLocker locker(&m_listLock); for (int x = 0; x < monitorCount; x++) { int monID = strList[x * 7 + 2].toInt(); if (m_monitorMap.contains(monID)) { Monitor *mon = m_monitorMap.find(monID).value(); mon->name = strList[x * 7 + 3]; mon->zmcStatus = strList[x * 7 + 4]; mon->zmaStatus = strList[x * 7 + 5]; mon->events = strList[x * 7 + 6].toInt(); mon->function = strList[x * 7 + 7]; mon->enabled = strList[x * 7 + 8].toInt(); } } }
void ZMClient::getCameraList(QStringList &cameraList) { cameraList.clear(); QStringList strList("GET_CAMERA_LIST"); if (!sendReceiveStringList(strList)) return; // sanity check if (strList.size() < 2) { LOG(VB_GENERAL, LOG_ERR, "ZMClient response too short"); return; } bool bOK; int cameraCount = strList[1].toInt(&bOK); if (!bOK) { LOG(VB_GENERAL, LOG_ERR, "ZMClient received bad int in getCameraList()"); return; } // sanity check if (strList.size() < cameraCount + 2) { LOG(VB_GENERAL, LOG_ERR, QString( "ZMClient got a mismatch between the number of cameras (%1) and " "the expected number of stringlist items (%2) in getCameraList()") .arg(cameraCount).arg(strList.size())); return; } for (int x = 0; x < cameraCount; x++) { cameraList.append(strList[x + 2]); } }
ModelBrowserUI::ModelBrowserUI( QWidget* pParent, ModelBrowserTool* pTool ) : QModelBrowser( pParent, 0, Qt::WStyle_Tool ), mTool(pTool), mRenderWindow(NULL) { QGridLayout* layout = new QGridLayout( mViewerFrame ); mRenderWindow = new QRenderWindow( mViewerFrame, mTool ); layout->addWidget( mRenderWindow, 0, 0 ); // Let the ratio between the height of row 0 (the viewer) and 3 (the tab panel) be 2:3. QModelBrowserLayout->setRowStretch( 0, 2 ); QModelBrowserLayout->setRowStretch( 3, 3 ); mRenderWindow->SetRefreshRate( 60 ); QDir dir("Data/Meshes/"); dir.setNameFilter("*.mdl *.lwo *.md5mesh *.proc"); QStringList strList( dir.entryList(QDir::Files) ); mModelList->clear(); mModelList->insertStringList( strList ); }
bool ZMClient::checkProtoVersion(void) { QStringList strList("HELLO"); if (!sendReceiveStringList(strList)) { LOG(VB_GENERAL, LOG_ERR, QString("Server didn't respond to 'HELLO'!!")); ShowOkPopup(tr("The mythzmserver didn't respond to our request " "to get the protocol version!!")); return false; } // sanity check if (strList.size() < 2) { LOG(VB_GENERAL, LOG_ERR, "ZMClient response too short"); return false; } if (strList[1] != ZM_PROTOCOL_VERSION) { LOG(VB_GENERAL, LOG_ERR, QString("Protocol version mismatch (plugin=%1, mythzmserver=%2)") .arg(ZM_PROTOCOL_VERSION).arg(strList[1])); ShowOkPopup(QString("The mythzmserver uses protocol version %1, " "but this client only understands version %2. " "Make sure you are running compatible versions of " "both the server and plugin.") .arg(strList[1]).arg(ZM_PROTOCOL_VERSION)); return false; } LOG(VB_GENERAL, LOG_INFO, QString("Using protocol version %1").arg(ZM_PROTOCOL_VERSION)); return true; }
void ZMClient::doGetMonitorList(void) { QMutexLocker locker(&m_listLock); for (int x = 0; x < m_monitorList.count(); x++) delete m_monitorList.at(x); m_monitorList.clear(); m_monitorMap.clear(); QStringList strList("GET_MONITOR_LIST"); if (!sendReceiveStringList(strList)) return; // sanity check if (strList.size() < 2) { LOG(VB_GENERAL, LOG_ERR, "ZMClient response too short"); return; } bool bOK; int monitorCount = strList[1].toInt(&bOK); if (!bOK) { LOG(VB_GENERAL, LOG_ERR, "ZMClient received bad int in getMonitorList()"); return; } // sanity check if ((int)(strList.size() - 2) / 5 != monitorCount) { LOG(VB_GENERAL, LOG_ERR, "ZMClient got a mismatch between the number of monitors and " "the expected number of stringlist items in getMonitorList()"); return; } // get list of monitor id's that need monitoring QString s = gCoreContext->GetSetting("ZoneMinderNotificationMonitors"); QStringList notificationMonitors = s.split(","); for (int x = 0; x < monitorCount; x++) { Monitor *item = new Monitor; item->id = strList[x * 5 + 2].toInt(); item->name = strList[x * 5 + 3]; item->width = strList[x * 5 + 4].toInt(); item->height = strList[x * 5 + 5].toInt(); item->bytes_per_pixel = strList[x * 5 + 6].toInt(); item->zmcStatus = ""; item->zmaStatus = ""; item->events = 0; item->status = ""; item->showNotifications = notificationMonitors.contains(QString::number(item->id)); m_monitorList.append(item); m_monitorMap.insert(item->id, item); LOG(VB_GENERAL, LOG_NOTICE, QString("Monitor: %1 (%2) is using %3 bytes per pixel") .arg(item->name).arg(item->id).arg(item->bytes_per_pixel)); } }
void RemoteGetAllExpiringRecordings(vector<ProgramInfo *> &expiringlist) { QStringList strList(QString("QUERY_GETEXPIRING")); RemoteGetRecordingList(expiringlist, strList); }
void RemoteGetAllScheduledRecordings(vector<ProgramInfo *> &scheduledlist) { QStringList strList(QString("QUERY_GETALLSCHEDULED")); RemoteGetRecordingList(scheduledlist, strList); }
void tst_ProFileWriter::adds_data() { QTest::addColumn<int>("flags"); QTest::addColumn<QStringList>("values"); QTest::addColumn<QString>("scope"); QTest::addColumn<QString>("input"); QTest::addColumn<QString>("output"); struct Case { int flags; const char *title; const char * const *values; const char *scope; const char *input; const char *output; }; static const char *f_foo[] = { "foo", 0 }; static const char *f_foo_bar[] = { "foo", "bar", 0 }; static const Case cases[] = { { PW::AppendValues|PW::AppendOperator|PW::MultiLine, "add new append multi", f_foo, 0, "", "SOURCES += \\\n" " foo" }, { PW::AppendValues|PW::AppendOperator|PW::MultiLine, "add new append multi after comment", f_foo, 0, "# test file", "# test file\n" "\n" "SOURCES += \\\n" " foo" }, { PW::AppendValues|PW::AppendOperator|PW::MultiLine, "add new append multi before newlines", f_foo, 0, "\n" "\n" "\n", "SOURCES += \\\n" " foo\n" "\n" "\n" "\n" }, { PW::AppendValues|PW::AppendOperator|PW::MultiLine, "add new append multi after comment before newlines", f_foo, 0, "# test file\n" "\n" "\n" "\n", "# test file\n" "\n" "SOURCES += \\\n" " foo\n" "\n" "\n" "\n" }, { PW::AppendValues|PW::AssignOperator|PW::MultiLine, "add new assign multi", f_foo, 0, "# test file", "# test file\n" "\n" "SOURCES = \\\n" " foo" }, { PW::AppendValues|PW::AppendOperator|PW::OneLine, "add new append oneline", f_foo, 0, "# test file", "# test file\n" "\n" "SOURCES += foo" }, { PW::AppendValues|PW::AssignOperator|PW::OneLine, "add new assign oneline", f_foo, 0, "# test file", "# test file\n" "\n" "SOURCES = foo" }, { PW::AppendValues|PW::AssignOperator|PW::OneLine, "add new assign oneline after existing", f_foo, 0, "# test file\n" "\n" "HEADERS = foo", "# test file\n" "\n" "HEADERS = foo\n" "\n" "SOURCES = foo" }, { PW::AppendValues|PW::AppendOperator|PW::MultiLine, "add new ignoring scoped", f_foo, 0, "unix:SOURCES = some files", "unix:SOURCES = some files\n" "\n" "SOURCES += \\\n" " foo" }, { PW::AppendValues|PW::AppendOperator|PW::MultiLine, "add new after some scope", f_foo, 0, "unix {\n" " SOMEVAR = foo\n" "}", "unix {\n" " SOMEVAR = foo\n" "}\n" "\n" "SOURCES += \\\n" " foo" }, { PW::AppendValues|PW::AppendOperator|PW::MultiLine, "add to existing (wrong operator)", f_foo, 0, "SOURCES = some files", "SOURCES = some files \\\n" " foo" }, { PW::AppendValues|PW::AppendOperator|PW::MultiLine, "add to existing after comment (wrong operator)", f_foo, 0, "SOURCES = some files # comment", "SOURCES = some files \\ # comment\n" " foo" }, { PW::AppendValues|PW::AppendOperator|PW::MultiLine, "add to existing after comment line (wrong operator)", f_foo, 0, "SOURCES = some \\\n" " # comment\n" " files", "SOURCES = some \\\n" " # comment\n" " files \\\n" " foo" }, { PW::AppendValues|PW::AssignOperator|PW::MultiLine, "add to existing", f_foo, 0, "SOURCES = some files", "SOURCES = some files \\\n" " foo" }, { PW::ReplaceValues|PW::AssignOperator|PW::MultiLine, "replace existing multi", f_foo_bar, 0, "SOURCES = some files", "SOURCES = \\\n" " foo \\\n" " bar" }, { PW::ReplaceValues|PW::AssignOperator|PW::OneLine, "replace existing oneline", f_foo_bar, 0, "SOURCES = some files", "SOURCES = foo bar" }, { PW::ReplaceValues|PW::AssignOperator|PW::OneLine, "replace existing complex last", f_foo_bar, 0, "SOURCES = some \\\n" " # comment\n" " files", "SOURCES = foo bar" }, { PW::ReplaceValues|PW::AssignOperator|PW::OneLine, "replace existing complex middle 1", f_foo_bar, 0, "SOURCES = some \\\n" " # comment\n" " files\n" "HEADERS = blubb", "SOURCES = foo bar\n" "HEADERS = blubb" }, { PW::ReplaceValues|PW::AssignOperator|PW::OneLine, "replace existing complex middle 2", f_foo_bar, 0, "SOURCES = some \\\n" " # comment\n" " files\n" "\n" "HEADERS = blubb", "SOURCES = foo bar\n" "\n" "HEADERS = blubb" }, { PW::ReplaceValues|PW::AssignOperator|PW::OneLine, "replace existing complex middle 3", f_foo_bar, 0, "SOURCES = some \\\n" " # comment\n" " files \\\n" "\n" "HEADERS = blubb", "SOURCES = foo bar\n" "\n" "HEADERS = blubb" }, { PW::AppendValues|PW::AppendOperator|PW::OneLine, "scoped new / new scope", f_foo, "dog", "# test file\n" "SOURCES = yo", "# test file\n" "SOURCES = yo\n" "\n" "dog {\n" " SOURCES += foo\n" "}" }, { PW::AppendValues|PW::AppendOperator|PW::OneLine, "scoped new / extend scope", f_foo, "dog", "# test file\n" "dog {\n" " HEADERS += yo\n" "}", "# test file\n" "dog {\n" " HEADERS += yo\n" "\n" " SOURCES += foo\n" "}" }, { PW::AppendValues|PW::AppendOperator|PW::OneLine, "scoped new / extend elongated scope", f_foo, "dog", "# test file\n" "dog {\n" " HEADERS += \\\n" " yo \\\n" " blubb\n" "}", "# test file\n" "dog {\n" " HEADERS += \\\n" " yo \\\n" " blubb\n" "\n" " SOURCES += foo\n" "}" }, { PW::AppendValues|PW::AppendOperator|PW::OneLine, "scoped new / extend empty scope", f_foo, "dog", "# test file\n" "dog {\n" "}", "# test file\n" "dog {\n" " SOURCES += foo\n" "}" }, { PW::AppendValues|PW::AppendOperator|PW::OneLine, "scoped new / extend oneline scope", f_foo, "dog", "# test file\n" "dog:HEADERS += yo", "# test file\n" "dog {\n" " HEADERS += yo\n" "\n" " SOURCES += foo\n" "}" }, { PW::AppendValues|PW::AppendOperator|PW::OneLine, "scoped new / extend oneline scope with multiline body", f_foo, "dog", "# test file\n" "dog:HEADERS += yo \\\n" " you\n" "\n" "blubb()", "# test file\n" "dog {\n" " HEADERS += yo \\\n" " you\n" "\n" " SOURCES += foo\n" "}\n" "\n" "blubb()" }, { PW::AppendValues|PW::AppendOperator|PW::MultiLine, "add new after some scope inside scope", f_foo, "dog", "dog {\n" " unix {\n" " SOMEVAR = foo\n" " }\n" "}", "dog {\n" " unix {\n" " SOMEVAR = foo\n" " }\n" "\n" " SOURCES += \\\n" " foo\n" "}" }, { PW::AppendValues|PW::AppendOperator|PW::OneLine, "scoped new / pseudo-oneline-scope", f_foo, "dog", "# test file\n" "dog: {\n" "}", "# test file\n" "dog: {\n" " SOURCES += foo\n" "}" }, { PW::AppendValues|PW::AppendOperator|PW::MultiLine, "scoped append", f_foo, "dog", "# test file\n" "dog:SOURCES = yo", "# test file\n" "dog:SOURCES = yo \\\n" " foo" }, { PW::AppendValues|PW::AppendOperator|PW::MultiLine, "complex scoped append", f_foo, "dog", "# test file\n" "animal:!dog:SOURCES = yo", "# test file\n" "animal:!dog:SOURCES = yo\n" "\n" "dog {\n" " SOURCES += \\\n" " foo\n" "}" }, }; for (uint i = 0; i < sizeof(cases) / sizeof(cases[0]); i++) { const Case *_case = &cases[i]; QTest::newRow(_case->title) << _case->flags << strList(_case->values) << QString::fromLatin1(_case->scope) << QString::fromLatin1(_case->input) << QString::fromLatin1(_case->output); } }
void tst_ProFileWriter::removes_data() { QTest::addColumn<QStringList>("values"); QTest::addColumn<QString>("input"); QTest::addColumn<QString>("output"); struct Case { const char *title; const char * const *values; const char *input; const char *output; }; static const char *f_foo[] = { "foo", 0 }; static const char *f_foo_bar[] = { "foo", "bar", 0 }; static const Case cases[] = { { "remove fail", f_foo, "SOURCES = bak bar", "SOURCES = bak bar" }, { "remove one-line middle", f_foo, "SOURCES = bak foo bar", "SOURCES = bak bar" }, { "remove one-line trailing", f_foo, "SOURCES = bak bar foo", "SOURCES = bak bar" }, { "remove multi-line single leading", f_foo, "SOURCES = foo \\\n" " bak \\\n" " bar", "SOURCES = \\\n" " bak \\\n" " bar" }, { "remove multi-line single middle", f_foo, "SOURCES = bak \\\n" " foo \\\n" " bar", "SOURCES = bak \\\n" " bar" }, { "remove multi-line single trailing", f_foo, "SOURCES = bak \\\n" " bar \\\n" " foo", "SOURCES = bak \\\n" " bar" }, { "remove multi-line single leading with comment", f_foo, "SOURCES = foo \\ # comment\n" " bak \\\n" " bar", "SOURCES = \\ # foo # comment\n" " bak \\\n" " bar" }, { "remove multi-line single middle with comment", f_foo, "SOURCES = bak \\\n" " foo \\ # comment\n" " bar", "SOURCES = bak \\\n" " \\ # foo # comment\n" " bar" }, { "remove multi-line single trailing with comment", f_foo, "SOURCES = bak \\\n" " bar \\\n" " foo # comment", "SOURCES = bak \\\n" " bar\n" " # foo # comment" }, { "remove multi-line single trailing after empty line", f_foo, "SOURCES = bak \\\n" " bar \\\n" " \\\n" " foo", "SOURCES = bak \\\n" " bar\n" }, { "remove multi-line single trailing after comment line", f_foo, "SOURCES = bak \\\n" " bar \\\n" " # just a comment\n" " foo", "SOURCES = bak \\\n" " bar\n" " # just a comment" }, { "remove multi-line single trailing after empty line with comment", f_foo, "SOURCES = bak \\\n" " bar \\\n" " \\ # just a comment\n" " foo", "SOURCES = bak \\\n" " bar\n" " # just a comment" }, { "remove multiple one-line middle", f_foo_bar, "SOURCES = bak foo bar baz", "SOURCES = bak baz" }, { "remove multiple one-line trailing", f_foo_bar, "SOURCES = bak baz foo bar", "SOURCES = bak baz" }, { "remove multiple one-line interleaved", f_foo_bar, "SOURCES = bak foo baz bar", "SOURCES = bak baz" }, { "remove multiple one-line middle with comment", f_foo_bar, "SOURCES = bak foo bar baz # comment", "SOURCES = bak baz # bar # foo # comment" }, { "remove multi-line multiple trailing with empty line with comment", f_foo_bar, "SOURCES = bak \\\n" " bar \\\n" " \\ # just a comment\n" " foo", "SOURCES = bak\n" " # just a comment" }, }; for (uint i = 0; i < sizeof(cases) / sizeof(cases[0]); i++) { const Case *_case = &cases[i]; QTest::newRow(_case->title) << strList(_case->values) << QString::fromLatin1(_case->input) << QString::fromLatin1(_case->output); } }
void ZMClient::deleteEvent(int eventID) { QStringList strList("DELETE_EVENT"); strList << QString::number(eventID); sendReceiveStringList(strList); }