summaryrefslogtreecommitdiffstats
path: root/pictureviewer2.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2014-07-09 13:32:26 +0200
committerArno <am@disconnect.de>2014-07-09 13:32:26 +0200
commit7a2c2c37d4324935ea55221b57d1c878fff4860e (patch)
tree9f1a15a156d2862e2b99c8f22917ef593aab8ca0 /pictureviewer2.cpp
parent6fb379069d1ec4fab504b56c9f0e80baee1d8d7d (diff)
downloadSheMov-7a2c2c37d4324935ea55221b57d1c878fff4860e.tar.gz
SheMov-7a2c2c37d4324935ea55221b57d1c878fff4860e.tar.bz2
SheMov-7a2c2c37d4324935ea55221b57d1c878fff4860e.zip
Bring back the nice MappingItem!
Resurrect the indented MappingItem. There's some recursion involved, but actually it ain't so hard if you have a template :) This adventure uncovered a bug in NewPicsDialog: Right now we also record the nodes (not just the leaves) for the Mappings. This bug was introduced by commit dc7cc269a4fffe43bdac2ae2dc6548fbd1e3bb5e and will be fixed in one of the next commits.
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){