#include "lc_global.h" #include "lc_qutils.h" #include "lc_application.h" #include "lc_library.h" #include "pieceinf.h" QString lcFormatValue(float Value, int Precision) { QString String = QString::number(Value, 'f', Precision); const int Dot = String.indexOf('.'); if (Dot != -1) { while (String.endsWith('0')) String.chop(1); if (String.endsWith('.')) String.chop(1); } return String; } QString lcFormatValueLocalized(float Value) { QLocale Locale = QLocale::system(); Locale.setNumberOptions(QLocale::OmitGroupSeparator); QString DecimalPoint = Locale.decimalPoint(); QString String = Locale.toString(Value, 'f', 4); if (String.indexOf(DecimalPoint) != -1) { while (String.endsWith('0')) String.chop(1); if (String.endsWith(DecimalPoint)) String.chop(1); } return String; } float lcParseValueLocalized(const QString& Value) { return QLocale::system().toFloat(Value); } // Resize all columns to content except for one stretching column. (taken from QT creator) lcQTreeWidgetColumnStretcher::lcQTreeWidgetColumnStretcher(QTreeWidget *treeWidget, int columnToStretch) : QObject(treeWidget->header()), m_columnToStretch(columnToStretch), m_interactiveResize(false), m_stretchWidth(0) { parent()->installEventFilter(this); connect(treeWidget->header(), SIGNAL(sectionResized(int, int, int)), SLOT(sectionResized(int, int, int))); QHideEvent fake; lcQTreeWidgetColumnStretcher::eventFilter(parent(), &fake); } void lcQTreeWidgetColumnStretcher::sectionResized(int LogicalIndex, int OldSize, int NewSize) { Q_UNUSED(OldSize) if (LogicalIndex == m_columnToStretch) { QHeaderView* HeaderView = qobject_cast(parent()); if (HeaderView->isVisible()) m_interactiveResize = true; m_stretchWidth = NewSize; } } bool lcQTreeWidgetColumnStretcher::eventFilter(QObject* Object, QEvent* Event) { if (Object == parent()) { QHeaderView* HeaderView = qobject_cast(Object); if (Event->type() == QEvent::Show) { for (int i = 0; i < HeaderView->count(); ++i) HeaderView->setSectionResizeMode(i, QHeaderView::Interactive); m_stretchWidth = HeaderView->sectionSize(m_columnToStretch); } else if (Event->type() == QEvent::Hide) { if (!m_interactiveResize) for (int i = 0; i < HeaderView->count(); ++i) HeaderView->setSectionResizeMode(i, i == m_columnToStretch ? QHeaderView::Stretch : QHeaderView::ResizeToContents); } else if (Event->type() == QEvent::Resize) { if (HeaderView->sectionResizeMode(m_columnToStretch) == QHeaderView::Interactive) { const int StretchWidth = HeaderView->isVisible() ? m_stretchWidth : 32; HeaderView->resizeSection(m_columnToStretch, StretchWidth); } } } return false; }