Skip to content

Commit

Permalink
Add initial bits for Qt6 support
Browse files Browse the repository at this point in the history
  • Loading branch information
[email protected] authored and [email protected] committed Aug 3, 2024
1 parent c37d53a commit 5b1b757
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 7 deletions.
7 changes: 7 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,10 @@ ifeq ($(HAVE_QT5),true)
3RD_LIBS += $(MODULEDIR)/theme.qt5.a
endif

ifeq ($(HAVE_QT6),true)
3RD_LIBS += $(MODULEDIR)/theme.qt6.a
endif

ifeq ($(HAVE_YSFX),true)
3RD_LIBS += $(MODULEDIR)/ysfx.a
endif
Expand Down Expand Up @@ -121,6 +125,9 @@ $(MODULEDIR)/theme.qt4.a: .FORCE
$(MODULEDIR)/theme.qt5.a: .FORCE
@$(MAKE) -C source/theme qt5

$(MODULEDIR)/theme.qt6.a: .FORCE
@$(MAKE) -C source/theme qt6

$(MODULEDIR)/%.arm32.a: .FORCE
ifneq ($(WINDOWS),true)
@$(MAKE) -C source/modules/$* arm32
Expand Down
12 changes: 12 additions & 0 deletions source/Makefile.deps.mk
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@ HAVE_QT5 = $(shell $(PKG_CONFIG) --exists Qt5Core Qt5Gui Qt5Widgets && \
$(PKG_CONFIG) --variable=qt_config Qt5Core | grep -q -v "static" && echo true)
HAVE_QT5PKG = $(shell $(PKG_CONFIG) --silence-errors --variable=prefix Qt5OpenGLExtensions 1>/dev/null && echo true)
HAVE_QT5BREW = $(shell test -e /usr/local/opt/qt5/bin/uic && echo true)
HAVE_QT6 = $(shell $(PKG_CONFIG) --exists Qt6Core Qt6Gui Qt6Widgets && echo true)
HAVE_SNDFILE = $(shell $(PKG_CONFIG) --exists sndfile && echo true)

ifeq ($(HAVE_FLUIDSYNTH),true)
Expand Down Expand Up @@ -295,10 +296,20 @@ ifeq (,$(wildcard $(UIC_QT5)))
HAVE_QT5 = false
endif

ifeq ($(HAVE_QT6),true)
QT6_HOSTBINS = $(shell $(PKG_CONFIG) --variable=libexecdir Qt6Core)
endif

MOC_QT6 ?= $(QT6_HOSTBINS)/moc
RCC_QT6 ?= $(QT6_HOSTBINS)/rcc
UIC_QT6 ?= $(QT6_HOSTBINS)/uic

ifeq ($(HAVE_QT4),true)
HAVE_QT = true
else ifeq ($(HAVE_QT5),true)
HAVE_QT = true
else ifeq ($(HAVE_QT6),true)
HAVE_QT = true
# FIXME
else ifeq ($(WINDOWS),true)
HAVE_QT = true
Expand Down Expand Up @@ -354,6 +365,7 @@ HAVE_QT4 = false
HAVE_QT5 = false
HAVE_QT5PKG = false
HAVE_QT5BREW = false
HAVE_QT6 = false
HAVE_SDL = false
HAVE_SDL1 = false
HAVE_SDL2 = false
Expand Down
42 changes: 36 additions & 6 deletions source/theme/CarlaStyle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -885,7 +885,11 @@ void CarlaStyle::drawPrimitive(PrimitiveElement elem,
painter->restore();
}
break;
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
case PE_IndicatorItemViewItemCheck:
#else
case PE_IndicatorViewItemCheck:
#endif
{
QStyleOptionButton button;
button.QStyleOption::operator=(*option);
Expand Down Expand Up @@ -1406,7 +1410,13 @@ void CarlaStyle::drawControl(ControlElement element, const QStyleOption *option,
QColor dimHighlight(qMin(highlight.red()/2 + 110, 255),
qMin(highlight.green()/2 + 110, 255),
qMin(highlight.blue()/2 + 110, 255));
dimHighlight.setAlpha(widget && widget->isTopLevel() ? 255 : 80);
dimHighlight.setAlpha(widget &&
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
widget->isWindow()
#else
widget->isTopLevel()
#endif
? 255 : 80);
QLinearGradient gradient(rect.topLeft(), QPoint(rect.bottomLeft().x(), rect.bottomLeft().y()));
gradient.setColorAt(0, dimHighlight.lighter(120));
gradient.setColorAt(1, dimHighlight);
Expand Down Expand Up @@ -1689,7 +1699,11 @@ void CarlaStyle::drawControl(ControlElement element, const QStyleOption *option,
bool complete = bar->progress == bar->maximum;

// Get extra style options if version 2
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
vertical = bar->state != QStyle::State_Horizontal;
#else
vertical = (bar->orientation == Qt::Vertical);
#endif
inverted = bar->invertedAppearance;

// If the orientation is vertical, we use a transform to rotate
Expand Down Expand Up @@ -1771,12 +1785,12 @@ void CarlaStyle::drawControl(ControlElement element, const QStyleOption *option,
highlightedGradientStartColor.setAlpha(120);
painter->setPen(QPen(highlightedGradientStartColor, 9.0));
painter->setClipRect(progressBar.adjusted(1, 1, -1, -1));
#ifndef QT_NO_ANIMATION
#ifndef QT_NO_ANIMATION
if (CarlaProgressStyleAnimation *animation = qobject_cast<CarlaProgressStyleAnimation*>(d->animation(widget)))
step = animation->animationStep() % 22;
else
d->startAnimation(new CarlaProgressStyleAnimation(d->animationFps(), const_cast<QWidget*>(widget)));
#endif
#endif
for (int x = progressBar.left() - rect.height(); x < rect.right() ; x += 22)
painter->drawLine(x + step, progressBar.bottom() + 1,
x + rect.height() + step, progressBar.top() - 2);
Expand All @@ -1794,7 +1808,11 @@ void CarlaStyle::drawControl(ControlElement element, const QStyleOption *option,

painter->save();
bool vertical = false, inverted = false;
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
vertical = bar->state != QStyle::State_Horizontal;
#else
vertical = (bar->orientation == Qt::Vertical);
#endif
inverted = bar->invertedAppearance;
if (vertical)
rect = QRect(rect.left(), rect.top(), rect.height(), rect.width()); // flip width and height
Expand Down Expand Up @@ -1962,13 +1980,13 @@ void CarlaStyle::drawControl(ControlElement element, const QStyleOption *option,
else
pixmap = menuItem->icon.pixmap(iconSize, mode);

#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
const int pixw = pixmap.width() / pixmap.devicePixelRatioF();
const int pixh = pixmap.height() / pixmap.devicePixelRatioF();
#else
#else
const int pixw = pixmap.width();
const int pixh = pixmap.height();
#endif
#endif

QRect pmr(0, 0, pixw, pixh);
pmr.moveCenter(vCheckRect.center());
Expand All @@ -1993,7 +2011,11 @@ void CarlaStyle::drawControl(ControlElement element, const QStyleOption *option,
}
int x, y, w, h;
menuitem->rect.getRect(&x, &y, &w, &h);
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
int tab = menuitem->reservedShortcutWidth;
#else
int tab = menuitem->tabWidth;
#endif
QColor discol;
if (dis) {
discol = menuitem->palette.text().color();
Expand Down Expand Up @@ -2056,7 +2078,11 @@ void CarlaStyle::drawControl(ControlElement element, const QStyleOption *option,
newMI.rect = vSubMenuRect;
newMI.state = !enabled ? State_None : State_Enabled;
if (selected)
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
newMI.palette.setColor(QPalette::WindowText,
#else
newMI.palette.setColor(QPalette::Foreground,
#endif
newMI.palette.highlightedText().color());
proxy()->drawPrimitive(arrow, &newMI, painter, widget);
}
Expand Down Expand Up @@ -3950,7 +3976,11 @@ int CarlaStyle::styleHint(StyleHint hint, const QStyleOption* option, const QWid
case SH_FontDialog_SelectAssociatedText:
case SH_MenuBar_AltKeyNavigation:
case SH_ComboBox_ListMouseTracking:
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
case SH_Slider_StopMouseOverSlider:
#else
case SH_ScrollBar_StopMouseOverSlider:
#endif
case SH_ScrollBar_MiddleClickAbsolutePosition:
case SH_TitleBar_AutoRaise:
case SH_TitleBar_NoBorder:
Expand Down
58 changes: 57 additions & 1 deletion source/theme/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@ QT5_LINK_FLAGS = $(NON_STATIC_LINK_FLAGS) -F $(QT5_PREFIX)/lib -framework QtCore
QT5_STYLES_DIR = $(QT5_PREFIX)/plugins/styles
endif

ifeq ($(HAVE_QT6),true)
QT6_CXX_FLAGS = $(BUILD_CXX_FLAGS) $(shell pkg-config --cflags Qt6Core Qt6Gui Qt6Widgets) -std=gnu++17
QT6_LINK_FLAGS = $(NON_STATIC_LINK_FLAGS) $(shell pkg-config --libs Qt6Core Qt6Gui Qt6Widgets)
QT6_STYLES_DIR = $(shell pkg-config --variable=libdir Qt6Core)/qt6/plugins/styles
endif

# ---------------------------------------------------------------------------------------------------------------------

ifeq ($(HAVE_QT4),true)
Expand All @@ -64,6 +70,15 @@ FILES_qt5 = \
$(OBJDIR)/resources.qt5.cpp
endif

ifeq ($(HAVE_QT6),true)
FILES_qt6 = \
$(OBJDIR)/moc_CarlaStyle.qt6.cpp \
$(OBJDIR)/moc_CarlaStyleAnimations.qt6.cpp \
$(OBJDIR)/moc_CarlaStylePlugin.qt6.cpp \
$(OBJDIR)/moc_CarlaStylePrivate.qt6.cpp \
$(OBJDIR)/resources.qt6.cpp
endif

# ---------------------------------------------------------------------------------------------------------------------

ifeq ($(HAVE_QT4),true)
Expand Down Expand Up @@ -92,6 +107,19 @@ OBJS_qt5_shared = $(OBJS_qt5) \
$(OBJDIR)/moc_CarlaStylePlugin.qt5.cpp.o
endif

ifeq ($(HAVE_QT6),true)
OBJS_qt6 = \
$(OBJDIR)/CarlaStyle.cpp.qt6.o \
$(OBJDIR)/moc_CarlaStyle.qt6.cpp.o \
$(OBJDIR)/moc_CarlaStyleAnimations.qt6.cpp.o \
$(OBJDIR)/moc_CarlaStylePrivate.qt6.cpp.o \
$(OBJDIR)/resources.qt6.cpp.o

OBJS_qt6_shared = $(OBJS_qt6) \
$(OBJDIR)/CarlaStylePlugin.cpp.qt6.o \
$(OBJDIR)/moc_CarlaStylePlugin.qt6.cpp.o
endif

# ---------------------------------------------------------------------------------------------------------------------

ifeq ($(HAVE_QT5),true)
Expand All @@ -102,11 +130,13 @@ endif

qt4: $(MODULEDIR)/$(MODULENAME).qt4.a
qt5: $(MODULEDIR)/$(MODULENAME).qt5.a
qt6: $(MODULEDIR)/$(MODULENAME).qt6.a

# ---------------------------------------------------------------------------------------------------------------------

clean:
rm -f $(OBJDIR)/*.o $(MODULEDIR)/$(MODULENAME)*.a $(BINDIR)/styles/carlastyle$(LIB_EXT) $(FILES_qt4) $(FILES_qt5)
rm -f $(OBJDIR)/*.o $(MODULEDIR)/$(MODULENAME)*.a
rm -f $(BINDIR)/styles/carlastyle$(LIB_EXT) $(FILES_qt4) $(FILES_qt5) $(FILES_qt6)

debug:
$(MAKE) DEBUG=true
Expand All @@ -129,6 +159,12 @@ $(MODULEDIR)/$(MODULENAME).qt5.a: $(FILES_qt5) $(OBJS_qt5)
$(SILENT)rm -f $@
$(SILENT)$(AR) crs $@ $(OBJS_qt5)

$(MODULEDIR)/$(MODULENAME).qt6.a: $(FILES_qt6) $(OBJS_qt6)
-@mkdir -p $(MODULEDIR)
@echo "Creating $(MODULENAME).qt6.a"
$(SILENT)rm -f $@
$(SILENT)$(AR) crs $@ $(OBJS_qt6)

# ---------------------------------------------------------------------------------------------------------------------

$(BINDIR)/styles/carlastyle.dll: $(FILES_qt5) $(OBJS_qt5_shared)
Expand Down Expand Up @@ -162,6 +198,11 @@ $(OBJDIR)/moc_%.qt5.cpp: %.hpp
@echo "Generating moc_$*.qt5.cpp"
$(SILENT)$(MOC_QT5) -Istyles $< -o $@

$(OBJDIR)/moc_%.qt6.cpp: %.hpp
-@mkdir -p $(OBJDIR)
@echo "Generating moc_$*.qt6.cpp"
$(SILENT)$(MOC_QT6) -Istyles $< -o $@

$(OBJDIR)/resources.qt4.cpp: $(CWD)/../resources/resources-theme.qrc
-@mkdir -p $(OBJDIR)
@echo "Generating resources.qt4.cpp"
Expand All @@ -172,6 +213,11 @@ $(OBJDIR)/resources.qt5.cpp: $(CWD)/../resources/resources-theme.qrc
@echo "Generating resources.qt5.cpp"
$(SILENT)$(RCC_QT5) $< -o $@

$(OBJDIR)/resources.qt6.cpp: $(CWD)/../resources/resources-theme.qrc
-@mkdir -p $(OBJDIR)
@echo "Generating resources.qt6.cpp"
$(SILENT)$(RCC_QT6) $< -o $@

# ---------------------------------------------------------------------------------------------------------------------

$(OBJDIR)/%.qt4.cpp.o: $(OBJDIR)/%.qt4.cpp $(OBJDIR)/moc_CarlaStyle.qt4.cpp
Expand All @@ -184,6 +230,11 @@ $(OBJDIR)/%.qt5.cpp.o: $(OBJDIR)/%.qt5.cpp $(OBJDIR)/moc_CarlaStyle.qt5.cpp
@echo "Compiling $*.cpp (Qt5)"
$(SILENT)$(CXX) $< $(QT5_CXX_FLAGS) -c -o $@

$(OBJDIR)/%.qt6.cpp.o: $(OBJDIR)/%.qt6.cpp $(OBJDIR)/moc_CarlaStyle.qt6.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling $*.cpp (Qt6)"
$(SILENT)$(CXX) $< $(QT6_CXX_FLAGS) -c -o $@

$(OBJDIR)/%.cpp.qt4.o: %.cpp $(OBJDIR)/moc_CarlaStyle.qt4.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling $< (Qt4)"
Expand All @@ -194,6 +245,11 @@ $(OBJDIR)/%.cpp.qt5.o: %.cpp $(OBJDIR)/moc_CarlaStyle.qt5.cpp
@echo "Compiling $< (Qt5)"
$(SILENT)$(CXX) $< $(QT5_CXX_FLAGS) -c -o $@

$(OBJDIR)/%.cpp.qt6.o: %.cpp $(OBJDIR)/moc_CarlaStyle.qt6.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling $< (Qt6)"
$(SILENT)$(CXX) $< $(QT6_CXX_FLAGS) -c -o $@

# ---------------------------------------------------------------------------------------------------------------------

-include $(OBJS_qt4_shared:%.o=%.d)
Expand Down

0 comments on commit 5b1b757

Please sign in to comment.