70 for (
int c = 0; c < item->columnCount(); c++) {
71 const QVariant v = item->data(c, Qt::DecorationPropertyRole);
72 if (v.canConvert<PropertySheetIconValue>())
97 void reloadIconResources(DesignerIconCache *iconCache, QObject *object)
99 if (QListWidget *listWidget = qobject_cast<QListWidget *>(object)) {
100 for (
int i = 0; i < listWidget->count(); i++)
101 reloadListItem(iconCache, listWidget->item(i));
102 }
else if (QComboBox *comboBox = qobject_cast<QComboBox *>(object)) {
103 for (
int i = 0; i < comboBox->count(); i++) {
104 const QVariant v = comboBox->itemData(i, Qt::DecorationPropertyRole);
105 if (v.canConvert<PropertySheetIconValue>()) {
106 QIcon icon = iconCache->icon(qvariant_cast<PropertySheetIconValue>(v));
107 comboBox->setItemIcon(i, icon);
108 comboBox->setItemData(i, icon);
111 }
else if (QTreeWidget *treeWidget = qobject_cast<QTreeWidget *>(object)) {
112 reloadTreeItem(iconCache, treeWidget->headerItem());
113 QQueue<QTreeWidgetItem *> itemsQueue;
114 for (
int i = 0; i < treeWidget->topLevelItemCount(); i++)
115 itemsQueue.enqueue(treeWidget->topLevelItem(i));
116 while (!itemsQueue.isEmpty()) {
117 QTreeWidgetItem *item = itemsQueue.dequeue();
118 for (
int i = 0; i < item->childCount(); i++)
119 itemsQueue.enqueue(item->child(i));
120 reloadTreeItem(iconCache, item);
122 }
else if (QTableWidget *tableWidget = qobject_cast<QTableWidget *>(object)) {
123 const int columnCount = tableWidget->columnCount();
124 const int rowCount = tableWidget->rowCount();
125 for (
int c = 0; c < columnCount; c++)
126 reloadTableItem(iconCache, tableWidget->horizontalHeaderItem(c));
127 for (
int r = 0; r < rowCount; r++)
128 reloadTableItem(iconCache, tableWidget->verticalHeaderItem(r));
129 for (
int c = 0; c < columnCount; c++)
130 for (
int r = 0; r < rowCount; r++)
131 reloadTableItem(iconCache, tableWidget->item(r, c));
330 const PropertySheetIconValue &rhs)
noexcept
332 const auto *lhsd = lhs.m_data.constData();
333 const auto *rhsd = rhs.m_data.constData();
335 || (lhsd->m_themeEnum == rhsd->m_themeEnum
336 && lhsd->m_theme == rhsd->m_theme && lhsd->m_paths == rhsd->m_paths);
542 case QIcon::Disabled:
543 return state == QIcon::On ? DisabledOnIconMask : DisabledOffIconMask;
545 return state == QIcon::On ? ActiveOnIconMask : ActiveOffIconMask;
546 case QIcon::Selected:
547 return state == QIcon::On ? SelectedOnIconMask : SelectedOffIconMask;
551 return state == QIcon::On ? NormalOnIconMask : NormalOffIconMask;
557 case NormalOnIconMask:
558 return {QIcon::Normal, QIcon::On};
559 case DisabledOffIconMask:
560 return {QIcon::Disabled, QIcon::Off};
561 case DisabledOnIconMask:
562 return {QIcon::Disabled, QIcon::On};
563 case ActiveOffIconMask:
564 return {QIcon::Active, QIcon::Off};
565 case ActiveOnIconMask:
566 return {QIcon::Active, QIcon::On};
567 case SelectedOffIconMask:
568 return {QIcon::Selected, QIcon::Off};
569 case SelectedOnIconMask:
570 return {QIcon::Selected, QIcon::On};
575 return {QIcon::Normal, QIcon::Off};
702 QByteArray& ba, QString &errorMessage)
705 QStringList arguments;
706 static constexpr auto uicBinary =
707 QOperatingSystemVersion::currentType() != QOperatingSystemVersion::Windows
708 ?
"/uic"_L1 :
"/uic.exe"_L1;
709 QString binary = [] {
710 const QStringList paths = QLibraryInfo::paths(QLibraryInfo::LibraryExecutablesPath);
711 for (
const QString &path : paths) {
712 const QString candidate = path + uicBinary;
713 if (QFile::exists(candidate))
720 if (binary.isEmpty())
721 binary = QCoreApplication::applicationDirPath() + uicBinary;
722 if (!QFileInfo::exists(binary)) {
723 errorMessage = QApplication::translate(
"Designer",
"%1 does not exist.").
724 arg(QDir::toNativeSeparators(binary));
731 case UicLanguage::Python:
732 arguments << u"-g"_s << u"python"_s;
735 arguments << fileName;
737 uic.start(binary, arguments);
739 if (!uic.waitForStarted()) {
740 errorMessage = QApplication::translate(
"Designer",
"Unable to launch %1: %2").
741 arg(QDir::toNativeSeparators(binary), uic.errorString());
744 if (!uic.waitForFinished()) {
745 errorMessage = QApplication::translate(
"Designer",
"%1 timed out.").arg(binary);
748 if (uic.exitCode()) {
749 errorMessage = QString::fromLatin1(uic.readAllStandardError());
752 ba = uic.readAllStandardOutput();
792quint64 paletteResolveMask(QPalette::ColorGroup colorGroup,
793 QPalette::ColorRole colorRole)
795 if (colorRole == QPalette::Accent)
796 colorRole = QPalette::NoRole;
797 const auto offset = quint64(QPalette::NColorRoles - 1) * quint64(colorGroup);
798 const auto bitPos = quint64(colorRole) + offset;
799 return 1ull << bitPos;
802quint64 paletteResolveMask(QPalette::ColorRole colorRole)
804 return paletteResolveMask(QPalette::Active, colorRole)
805 | paletteResolveMask(QPalette::Inactive, colorRole)
806 | paletteResolveMask(QPalette::Disabled, colorRole);