diff options
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r-- | pictureviewer2.cpp | 87 |
1 files changed, 28 insertions, 59 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index 4532030..dbb1763 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -20,9 +20,6 @@ #include <QSettings> #include <QTextDocument> #include <QTextCursor> -#include <QTextTableCell> -#include <QTextTableFormat> -#include <QTextTableCellFormat> #include <QFileInfo> #include <QDir> #include <QFileInfo> @@ -483,65 +480,12 @@ void PictureViewer2::constructInfoItem(const PicData &data, QSize picSize){ } void PictureViewer2::constructMappingItem(const PicData &file){ - QList<MappingData> mapData = mPicFilesModel->mappingDataFromFile(file.at(PicFilesModel::Id).toInt()); - QList<QStringList> mappings; + SmTreeItem *mapData = mPicFilesModel->mappingTreeFromFile(file.at(PicFilesModel::Id).toInt()); QTextDocument *doc = new QTextDocument; doc->setIndentWidth(2); doc->setDocumentMargin(8); - QTextCursor *cursor = new QTextCursor(doc); - if(mapData.isEmpty()){ - QString itemString = QString("%1 (none)").arg(QChar(0x2640)); - cursor->insertText(itemString); - }else{ - QMap<QString, QStringList> sortedPaths; - int maxRows = 0; - foreach(MappingData d, mapData){ - QStringList pItems = d.path; - if(pItems.size() > maxRows){ - maxRows = pItems.size(); - } - QString mapKey = pItems.join("/"); - sortedPaths.insert(mapKey, pItems); - } - QTextTable *table = cursor->insertTable(sortedPaths.size(), 1); - QTextTableFormat fmt; - fmt.setBorder(0); - table->setFormat(fmt); - QMap<QString, QStringList>::const_iterator it = sortedPaths.constBegin(); - int row = 0; - while(it != sortedPaths.constEnd()){ - QChar bullet(0x2640); - if(row % 2){ - bullet = QChar(0x2642); - } - QStringList pItems = it.value(); - int column = 0; - QTextTableCell curCell = table->cellAt(row, column); - curCell.firstCursorPosition().insertText(bullet); - for(int i = 0; i < pItems.size(); ++i){ - if(table->columns() - 1 < column + 1){ - table->appendColumns(1); - } - ++column; - curCell = table->cellAt(row, column); - curCell.firstCursorPosition().insertText(pItems.at(i)); - if(i + 1 < pItems.size()){ - if(table->columns() - 1 < column + 1){ - table->appendColumns(1); - } - ++column; - curCell = table->cellAt(row, column); - QTextTableCellFormat cfmt; - cfmt.setRightPadding(5); - curCell.setFormat(cfmt); - curCell.firstCursorPosition().insertText(QChar(0x2192)); - } - } - ++it; - ++row; - } - } - + QTextCursor *cur = new QTextCursor(doc); + docFromTree(mapData, cur, 0); if(mMappingItem){ mMappingPos = mMappingItem->scenePos(); mScene->removeItem(mMappingItem); @@ -550,6 +494,31 @@ void PictureViewer2::constructMappingItem(const PicData &file){ mMappingItem = new PictureViewer2Item(doc); mMappingItem->setPos(getPos(mMappingItem, mConfigMapPos, mMappingPos)); mScene->addItem(mMappingItem); + delete mapData; +} + +void PictureViewer2::docFromTree(SmTreeItem *start, QTextCursor *cur, int indent){ + if(!start){ + return; + } + QChar bullet(0x2640); + if(indent % 2){ + bullet = QChar(0x2642); + } + for(int i = 0; i < start->childCount(); ++i){ + SmTreeItem *child = start->child(i); + if(!cur->atStart()){ + cur->insertBlock(); + } + QTextBlockFormat fmt; + fmt.setIndent(4 * indent); + cur->setBlockFormat(fmt); + QString text = QString("%1 %2").arg(bullet).arg(child->data(0).toString()); + cur->insertText(text); + if(child->childCount()){ + docFromTree(child, cur, indent + 1); + } + } } void PictureViewer2::setGradient(const QPixmap &pic){ |