summaryrefslogtreecommitdiffstats
path: root/pictureviewer2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r--pictureviewer2.cpp87
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){