From 1d93cf09bcaff510b56313bbb14d8f31b4e14d5a Mon Sep 17 00:00:00 2001 From: graffy76 Date: Wed, 29 May 2013 21:55:19 -0500 Subject: [PATCH] Cell formatting and code optimization changes --- .../view/world/recordstatusdelegate.cpp | 36 +++++++------------ .../view/world/recordstatusdelegate.hpp | 25 ++++++++----- 2 files changed, 29 insertions(+), 32 deletions(-) diff --git a/apps/opencs/view/world/recordstatusdelegate.cpp b/apps/opencs/view/world/recordstatusdelegate.cpp index c9dbff4f5..aa9487b70 100644 --- a/apps/opencs/view/world/recordstatusdelegate.cpp +++ b/apps/opencs/view/world/recordstatusdelegate.cpp @@ -1,11 +1,8 @@ #include "recordstatusdelegate.hpp" #include #include -#include #include -#include - CSVWorld::RecordStatusDelegate::RecordStatusDelegate(QUndoStack &undoStack, QObject *parent) : CommandDelegate (undoStack, parent) { @@ -16,23 +13,23 @@ CSVWorld::RecordStatusDelegate::RecordStatusDelegate(QUndoStack &undoStack, QObj //Offset values are most likely device-dependent. //Need to replace with device-independent references. - mTextTopOffset = -1; mTextLeftOffset = 3; mIconTopOffset = -3; - mIconLeftOffset = 0; - mStatusDisplay = 0; //icons and text by default + mStatusDisplay = 0; //icons and text by default. Remove when implemented as a user preference + + mFont = QApplication::font(); + mFont.setPointSize(10); + + mFontMetrics = new QFontMetrics(mFont); + + mTextAlignment.setAlignment (Qt::AlignLeft | Qt::AlignVCenter ); } void CSVWorld::RecordStatusDelegate::paint (QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { painter->save(); - QFont font = QApplication::font(); - font.setPointSize(10); - - QFontMetrics fm(font); - QString text = ""; QIcon *icon = 0; @@ -73,30 +70,23 @@ void CSVWorld::RecordStatusDelegate::paint (QPainter *painter, const QStyleOptio if (mStatusDisplay == 0 && (icon) ) { - iconRect.setRight (iconRect.left() + mIconSize); - textRect.setLeft (iconRect.right() + (mIconSize/4) * 3); - textRect.setRight (textRect.left() + fm.width(text)); + iconRect.setRight (iconRect.left() + mIconSize*2); + textRect.setLeft (iconRect.right() + mTextLeftOffset *2); } else textRect.setLeft (textRect.left() + mTextLeftOffset ); - textRect.setTop (textRect.top() + ((option.rect.height() - fm.height()) / 2) + mTextTopOffset); - - if (mStatusDisplay == 0 || mStatusDisplay == 1) - { - if (icon) + if ( (mStatusDisplay == 0 || mStatusDisplay == 1) && (icon) ) painter->drawPixmap(iconRect.center(),icon->pixmap(mIconSize, mIconSize)); - } // icon + text or text only, or force text if no icon exists for status if (mStatusDisplay == 0 || mStatusDisplay == 2 || !(icon) ) { - painter->setFont(font); - painter->drawText(textRect,text); + painter->setFont(mFont); + painter->drawText(textRect, text, mTextAlignment); } painter->restore(); - } QSize CSVWorld::RecordStatusDelegate::sizeHint (const QStyleOptionViewItem &option, const QModelIndex &index) const diff --git a/apps/opencs/view/world/recordstatusdelegate.hpp b/apps/opencs/view/world/recordstatusdelegate.hpp index a2ec34822..9ab19d30e 100644 --- a/apps/opencs/view/world/recordstatusdelegate.hpp +++ b/apps/opencs/view/world/recordstatusdelegate.hpp @@ -2,24 +2,31 @@ #define RECORDSTATUSDELEGATE_H #include "util.hpp" +#include +#include class QIcon; +class QFont; +class QFontMetrics; namespace CSVWorld { class RecordStatusDelegate : public CommandDelegate { + QFont mFont; + QFontMetrics *mFontMetrics; - QIcon *mModifiedIcon; - QIcon *mAddedIcon; - QIcon *mDeletedIcon; - int mStatusDisplay; + QTextOption mTextAlignment; - int mIconSize; - int mIconTopOffset; - int mIconLeftOffset; - int mTextTopOffset; - int mTextLeftOffset; + QIcon *mModifiedIcon; + QIcon *mAddedIcon; + QIcon *mDeletedIcon; + + int mStatusDisplay; + + int mIconSize; + int mIconTopOffset; + int mTextLeftOffset; public: explicit RecordStatusDelegate(QUndoStack& undoStack, QObject *parent = 0);