File indexing completed on 2024-04-28 09:49:39
0001 /* 0002 SPDX-FileCopyrightText: 2006 Bram Schoenmakers <bramschoenmakers@kde.nl> 0003 SPDX-FileCopyrightText: 2006 Tom Albers <toma@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "rsistatitem.h" 0009 0010 #include <QLabel> 0011 0012 const int totalarraysize = 60 * 60 * 24; 0013 0014 RSIStatItem::RSIStatItem(const QString &description, const QVariant &init) 0015 { 0016 m_description = new QLabel(description, nullptr); 0017 m_value = init; 0018 m_init = init; 0019 } 0020 0021 RSIStatItem::~RSIStatItem() 0022 { 0023 } 0024 0025 void RSIStatItem::addDerivedItem(RSIStat stat) 0026 { 0027 m_derived += stat; 0028 } 0029 0030 void RSIStatItem::reset() 0031 { 0032 m_value = m_init; 0033 } 0034 0035 RSIStatBitArrayItem::RSIStatBitArrayItem(const QString &description, const QVariant &init, int size) 0036 : RSIStatItem(description, init) 0037 , m_size(size) 0038 , m_counter(0) 0039 { 0040 Q_ASSERT(size <= totalarraysize); 0041 0042 m_end = 0; 0043 m_begin = totalarraysize - size; 0044 } 0045 0046 RSIStatBitArrayItem::~RSIStatBitArrayItem() 0047 { 0048 } 0049 0050 void RSIStatBitArrayItem::reset() 0051 { 0052 RSIStatItem::reset(); 0053 RSIGlobals::instance()->resetUsage(); 0054 0055 m_end = 0; 0056 m_begin = totalarraysize - m_size; 0057 m_counter = 0; 0058 } 0059 0060 void RSIStatBitArrayItem::setActivity() 0061 { 0062 QBitArray *array = RSIGlobals::instance()->usageArray(); 0063 0064 if (!array->testBit(m_begin)) 0065 ++m_counter; 0066 0067 array->setBit(m_end); 0068 0069 Q_ASSERT(m_counter <= m_size); 0070 0071 m_value = QVariant(100.0 * (double)(m_counter) / (double)(m_size)); 0072 m_begin = (m_begin + 1) % totalarraysize; 0073 m_end = (m_end + 1) % totalarraysize; 0074 } 0075 0076 void RSIStatBitArrayItem::setIdle() 0077 { 0078 QBitArray *array = RSIGlobals::instance()->usageArray(); 0079 0080 if (array->testBit(m_begin)) 0081 m_counter > 0 ? --m_counter : m_counter; 0082 0083 array->clearBit(m_end); 0084 0085 Q_ASSERT(m_counter <= m_size); 0086 0087 m_value = QVariant(100.0 * (double)(m_counter) / (double)(m_size)); 0088 m_begin = (m_begin + 1) % totalarraysize; 0089 m_end = (m_end + 1) % totalarraysize; 0090 }