mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
146 lines
4.8 KiB
C++
146 lines
4.8 KiB
C++
#include "cafQIconProvider.h"
|
|
|
|
#include "cafAssert.h"
|
|
|
|
#include <QApplication>
|
|
|
|
using namespace caf;
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QIconProvider::QIconProvider()
|
|
: m_active(true)
|
|
{
|
|
}
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QIconProvider::QIconProvider(const QString& iconResourceString)
|
|
: m_active(true)
|
|
, m_iconResourceString(iconResourceString)
|
|
{
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QIconProvider::QIconProvider(const QPixmap& pixmap)
|
|
: m_iconPixmap(new QPixmap(pixmap))
|
|
{
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QIconProvider::QIconProvider(const QIconProvider& rhs)
|
|
: m_icon(rhs.m_icon)
|
|
, m_active(rhs.m_active)
|
|
, m_iconResourceString(rhs.m_iconResourceString)
|
|
{
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QIconProvider& QIconProvider::operator=(const QIconProvider& rhs)
|
|
{
|
|
m_icon = rhs.m_icon;
|
|
m_active = rhs.m_active;
|
|
m_iconResourceString = rhs.m_iconResourceString;
|
|
return *this;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QIcon QIconProvider::icon() const
|
|
{
|
|
if (m_icon.isNull())
|
|
{
|
|
m_icon = generateIcon();
|
|
}
|
|
|
|
if (!m_active && isGuiApplication())
|
|
{
|
|
QPixmap disabledPixmap = m_icon.pixmap(16, 16, QIcon::Disabled);
|
|
return QIcon(disabledPixmap);
|
|
}
|
|
|
|
return m_icon;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
bool QIconProvider::isNull() const
|
|
{
|
|
if (!isGuiApplication()) return true;
|
|
|
|
if (!hasValidPixmap() && m_iconResourceString.isEmpty()) return true;
|
|
|
|
return icon().isNull();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void QIconProvider::setActive(bool active)
|
|
{
|
|
m_active = active;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void QIconProvider::setIconResourceString(const QString& iconResourceString)
|
|
{
|
|
m_iconResourceString = iconResourceString;
|
|
m_icon = QIcon();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void QIconProvider::setPixmap(const QPixmap& pixmap)
|
|
{
|
|
m_iconPixmap.reset(new QPixmap(pixmap));
|
|
m_icon = QIcon();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
/// Generate the actual icon. Will generate a NULL-icon if a QtGuiApplication isn't running.
|
|
/// Override in a sub-class if you want to generate a custom icon procedurally
|
|
//--------------------------------------------------------------------------------------------------
|
|
QIcon QIconProvider::generateIcon() const
|
|
{
|
|
if (isGuiApplication())
|
|
{
|
|
if (hasValidPixmap())
|
|
{
|
|
return QIcon(*m_iconPixmap);
|
|
}
|
|
return QIcon(m_iconResourceString);
|
|
}
|
|
return QIcon();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
bool QIconProvider::isGuiApplication()
|
|
{
|
|
return dynamic_cast<QApplication*>(QCoreApplication::instance()) != nullptr;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
bool QIconProvider::hasValidPixmap() const
|
|
{
|
|
return m_iconPixmap && !m_iconPixmap->isNull();
|
|
}
|