summaryrefslogtreecommitdiffstats
path: root/pictureviewer2.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2014-06-19 11:23:57 +0200
committerArno <am@disconnect.de>2014-06-19 11:23:57 +0200
commitb5bd9cf0b981ee0c87ead9e20c36247932de7818 (patch)
tree4eea2c01ed4b1ced3a387cb4fad13c774137e758 /pictureviewer2.cpp
parent7ba8c197150a86c2406a029e4a7f02d1285c47c0 (diff)
downloadSheMov-b5bd9cf0b981ee0c87ead9e20c36247932de7818.tar.gz
SheMov-b5bd9cf0b981ee0c87ead9e20c36247932de7818.tar.bz2
SheMov-b5bd9cf0b981ee0c87ead9e20c36247932de7818.zip
Fix Display of mappings
MappingTreeModel::treeFromPath() never worked as intended, so replace it by displaying mappings in a QTextTable.
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r--pictureviewer2.cpp83
1 files changed, 65 insertions, 18 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp
index 6a547f3..2c36dc9 100644
--- a/pictureviewer2.cpp
+++ b/pictureviewer2.cpp
@@ -20,6 +20,9 @@
#include <QSettings>
#include <QTextDocument>
#include <QTextCursor>
+#include <QTextTableCell>
+#include <QTextTableFormat>
+#include <QTextTableCellFormat>
#include <QFileInfo>
#include <QDir>
#include <QFileInfo>
@@ -482,27 +485,71 @@ 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;
- foreach(MappingData d, mapData){
- mappings << d.path;
- }
- QStringList mappingPaths;
- foreach(QStringList l, mappings){
- mappingPaths << l.join("/");
+ 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.first();
+ 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;
+ }
}
- SmTreeItem *mappingTree = mMappingTreeModel->treeFromPaths(mappingPaths);
- if(mappingTree){
- if(mMappingItem){
- mMappingPos = mMappingItem->scenePos();
- mScene->removeItem(mMappingItem);
- delete mMappingItem;
- }
- QTextDocument *mapString = treeToString(mappingTree);
- mMappingItem = new PictureViewer2Item(mapString);
- mMappingItem->setPos(getPos(mMappingItem, mConfigMapPos, mMappingPos));
- mScene->addItem(mMappingItem);
+ if(mMappingItem){
+ mMappingPos = mMappingItem->scenePos();
+ mScene->removeItem(mMappingItem);
+ delete mMappingItem;
}
- delete mappingTree;
+ mMappingItem = new PictureViewer2Item(doc);
+ mMappingItem->setPos(getPos(mMappingItem, mConfigMapPos, mMappingPos));
+ mScene->addItem(mMappingItem);
}
void PictureViewer2::setGradient(const QPixmap &pic){