File indexing completed on 2024-04-28 17:05:55
0001 /* 0002 SPDX-FileCopyrightText: 2006 Csaba Karai <krusader@users.sourceforge.net> 0003 SPDX-FileCopyrightText: 2006-2022 Krusader Krew <https://krusader.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "percentalsplitter.h" 0009 0010 // QtCore 0011 #include <QList> 0012 // QtGui 0013 #include <QCursor> 0014 #include <QPainter> 0015 // QtWidgets 0016 #include <QApplication> 0017 #include <QFrame> 0018 #include <QLabel> 0019 #include <QToolTip> 0020 0021 PercentalSplitter::PercentalSplitter(QWidget *parent) 0022 : QSplitter(parent) 0023 , label(nullptr) 0024 , opaqueOldPos(-1) 0025 { 0026 connect(this, &PercentalSplitter::splitterMoved, this, &PercentalSplitter::slotSplitterMoved); 0027 } 0028 0029 PercentalSplitter::~PercentalSplitter() = default; 0030 0031 QString PercentalSplitter::toolTipString(int p) 0032 { 0033 QList<int> values = sizes(); 0034 if (values.count() != 0) { 0035 int sum = 0; 0036 0037 QListIterator<int> it(values); 0038 while (it.hasNext()) 0039 sum += it.next(); 0040 0041 if (sum == 0) 0042 sum++; 0043 0044 auto percent = (int)(((double)p / (double)(sum)) * 10000. + 0.5); 0045 return QString("%1.%2%3").arg(percent / 100).arg((percent / 10) % 10).arg(percent % 10) + '%'; 0046 } 0047 return QString(); 0048 } 0049 0050 void PercentalSplitter::slotSplitterMoved(int p, int index) 0051 { 0052 handle(index)->setToolTip(toolTipString(p)); 0053 0054 QToolTip::showText(QCursor::pos(), toolTipString(p), this); 0055 } 0056 0057 void PercentalSplitter::showEvent(QShowEvent *event) 0058 { 0059 QList<int> values = sizes(); 0060 0061 for (int i = 0; i != count(); i++) { 0062 int p = 0; 0063 for (int j = 0; j < i; j++) 0064 p += values[j]; 0065 0066 handle(i)->setToolTip(toolTipString(p)); 0067 } 0068 0069 QSplitter::showEvent(event); 0070 }