void OutputItemContentWidget::showText() { if (!_isTextModeSupported) return; if (!_isTextModeInitialized) { _textView = configureLogText(); if (!_text.isEmpty()) { _textView->sciScintilla()->setText(_text); } else { if (_documents.size() > 0) { _textView->sciScintilla()->setText("Loading..."); _thread = new JsonPrepareThread(_documents, AppRegistry::instance().settingsManager()->uuidEncoding(), AppRegistry::instance().settingsManager()->timeZone()); VERIFY(connect(_thread, SIGNAL(partReady(QString)), this, SLOT(jsonPartReady(QString)))); VERIFY(connect(_thread, SIGNAL(finished()), _thread, SLOT(deleteLater()))); _thread->start(); } } _stack->addWidget(_textView); _isTextModeInitialized = true; } _stack->setCurrentWidget(_textView); }
void JsonPrepareThread::run() { int position = 1; // 1-based numbering to match tree & table views for(std::vector<MongoDocumentPtr>::const_iterator it = _bsonObjects.begin();it!=_bsonObjects.end();++it) { MongoDocumentPtr doc = *it; mongo::StringBuilder sb; if (position == 1) sb << "/* 1 */\n"; else sb << "\n\n/* " << position << " */\n"; mongo::BSONObj obj = doc->bsonObj(); std::string stdJson = BsonUtils::jsonString(obj, mongo::TenGen, 1, _uuidEncoding, _timeZone); if (_stop) break; sb << stdJson; QString json = QtUtils::toQString(sb.str()); if (_stop) break; emit partReady(json); position++; } emit done(); }