diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -94,7 +94,26 @@ add_subdirectory(kirigami-plasmadesktop-integration) endif(KF5IconThemes_FOUND AND KF5WidgetsAddons_FOUND) -install(DIRECTORY org.kde.desktop DESTINATION ${KDE_INSTALL_QMLDIR}/QtQuick/Controls.2) +#FIXME: this assumes there will always be a QQC2 release for each Qt release, needs +#something to discover what's the latest qqc2 version available +math(EXPR QQC2_VERSION "${Qt5QuickControls2_VERSION_MINOR} - 7") +set(QQC2_VERSION "2.${QQC2_VERSION}") + +# Find all the source qml files +FILE(GLOB_RECURSE inFiles RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}/org.kde.desktop/*") + + #for each file, replace @QQC2_VERSION@ with the version we found +FOREACH(infileName ${inFiles}) + configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/${infileName}" + "${CMAKE_CURRENT_BINARY_DIR}/${infileName}" + INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} + PATH_VARS QQC2_VERSION + ) +ENDFOREACH(infileName) + +install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/org.kde.desktop DESTINATION ${KDE_INSTALL_QMLDIR}/QtQuick/Controls.2) feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/org.kde.desktop/Button.qml b/org.kde.desktop/Button.qml --- a/org.kde.desktop/Button.qml +++ b/org.kde.desktop/Button.qml @@ -20,7 +20,7 @@ */ import QtQuick 2.6 -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate import org.kde.kirigami 2.2 as Kirigami diff --git a/org.kde.desktop/CheckBox.qml b/org.kde.desktop/CheckBox.qml --- a/org.kde.desktop/CheckBox.qml +++ b/org.kde.desktop/CheckBox.qml @@ -21,8 +21,8 @@ import QtQuick 2.6 -import QtQuick.Templates 2.0 as T -import QtQuick.Controls 2.0 +import QtQuick.Templates @QQC2_VERSION@ as T +import QtQuick.Controls @QQC2_VERSION@ import org.kde.kirigami 2.2 as Kirigami T.CheckBox { diff --git a/org.kde.desktop/CheckDelegate.qml b/org.kde.desktop/CheckDelegate.qml --- a/org.kde.desktop/CheckDelegate.qml +++ b/org.kde.desktop/CheckDelegate.qml @@ -21,7 +21,7 @@ import QtQuick 2.5 -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami import "private" diff --git a/org.kde.desktop/ComboBox.qml b/org.kde.desktop/ComboBox.qml --- a/org.kde.desktop/ComboBox.qml +++ b/org.kde.desktop/ComboBox.qml @@ -22,15 +22,16 @@ import QtQuick 2.6 import QtQuick.Window 2.2 -import QtQuick.Templates 2.0 as T -import QtQuick.Controls 2.0 as Controls +import QtQuick.Templates @QQC2_VERSION@ as T +import QtQuick.Controls @QQC2_VERSION@ as Controls import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate import QtGraphicalEffects 1.0 import org.kde.kirigami 2.2 as Kirigami T.ComboBox { id: controlRoot - Kirigami.Theme.colorSet: Kirigami.Theme.Button + //NOTE: typeof necessary to not have warnings on Qt 5.7 + Kirigami.Theme.colorSet: typeof(editable) != "undefined" && editable ? Kirigami.Theme.View : Kirigami.Theme.Button Kirigami.Theme.inherit: false implicitWidth: background.implicitWidth + leftPadding + rightPadding @@ -62,6 +63,30 @@ controlRoot.currentIndex = (controlRoot.currentIndex - 1 + delegateModel.count) % delegateModel.count } } + T.TextField { + anchors { + fill: parent + leftMargin: controlRoot.mirrored ? 12 : 1 + rightMargin: !controlRoot.mirrored ? 12 : 1 + } + + text: controlRoot.editText + + visible: typeof(controlRoot.editable) != "undefined" && controlRoot.editable + readOnly: controlRoot.popup.visible + inputMethodHints: controlRoot.inputMethodHints + validator: controlRoot.validator + renderType: Window.devicePixelRatio % 1 !== 0 ? Text.QtRendering : Text.NativeRendering + color: controlRoot.enabled ? Kirigami.Theme.textColor : Kirigami.Theme.disabledTextColor + selectionColor: Kirigami.Theme.highlightColor + selectedTextColor: Kirigami.Theme.highlightedTextColor + selectByMouse: true + + font: controlRoot.font + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + opacity: controlRoot.enabled ? 1 : 0.3 + } } background: StylePrivate.StyleItem { @@ -77,6 +102,9 @@ // contentHeight as in QComboBox magic numbers taken from QQC1 style contentHeight: Math.max(Math.ceil(textHeight("")), 14) + 2 text: controlRoot.displayText + properties: { + "editable" : control.editable + } } popup: T.Popup { diff --git a/org.kde.desktop/Container.qml b/org.kde.desktop/Container.qml --- a/org.kde.desktop/Container.qml +++ b/org.kde.desktop/Container.qml @@ -21,7 +21,7 @@ import QtQuick 2.6 -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T T.Container { id: control diff --git a/org.kde.desktop/Control.qml b/org.kde.desktop/Control.qml --- a/org.kde.desktop/Control.qml +++ b/org.kde.desktop/Control.qml @@ -21,7 +21,7 @@ import QtQuick 2.6 -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T T.Control { id: control diff --git a/org.kde.desktop/Dial.qml b/org.kde.desktop/Dial.qml --- a/org.kde.desktop/Dial.qml +++ b/org.kde.desktop/Dial.qml @@ -21,8 +21,8 @@ import QtQuick 2.6 -import QtQuick.Controls 2.0 -import QtQuick.Templates 2.0 as T +import QtQuick.Controls @QQC2_VERSION@ +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate diff --git a/org.kde.desktop/Dialog.qml b/org.kde.desktop/Dialog.qml --- a/org.kde.desktop/Dialog.qml +++ b/org.kde.desktop/Dialog.qml @@ -22,7 +22,7 @@ import QtQuick 2.6 import QtGraphicalEffects 1.0 -import QtQuick.Templates 2.1 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami T.Dialog { diff --git a/org.kde.desktop/DialogButtonBox.qml b/org.kde.desktop/DialogButtonBox.qml --- a/org.kde.desktop/DialogButtonBox.qml +++ b/org.kde.desktop/DialogButtonBox.qml @@ -21,7 +21,7 @@ import QtQuick 2.6 -import QtQuick.Templates 2.1 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami T.DialogButtonBox { diff --git a/org.kde.desktop/Drawer.qml b/org.kde.desktop/Drawer.qml --- a/org.kde.desktop/Drawer.qml +++ b/org.kde.desktop/Drawer.qml @@ -21,8 +21,8 @@ import QtQuick 2.6 -import QtQuick.Controls 2.0 -import QtQuick.Templates 2.0 as T +import QtQuick.Controls @QQC2_VERSION@ +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami T.Drawer { diff --git a/org.kde.desktop/Frame.qml b/org.kde.desktop/Frame.qml --- a/org.kde.desktop/Frame.qml +++ b/org.kde.desktop/Frame.qml @@ -21,8 +21,8 @@ import QtQuick 2.6 -import QtQuick.Controls 2.0 -import QtQuick.Templates 2.0 as T +import QtQuick.Controls @QQC2_VERSION@ +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami T.Frame { diff --git a/org.kde.desktop/GroupBox.qml b/org.kde.desktop/GroupBox.qml --- a/org.kde.desktop/GroupBox.qml +++ b/org.kde.desktop/GroupBox.qml @@ -21,8 +21,8 @@ import QtQuick 2.6 -import QtQuick.Controls 2.0 -import QtQuick.Templates 2.0 as T +import QtQuick.Controls @QQC2_VERSION@ +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami T.GroupBox { diff --git a/org.kde.desktop/ItemDelegate.qml b/org.kde.desktop/ItemDelegate.qml --- a/org.kde.desktop/ItemDelegate.qml +++ b/org.kde.desktop/ItemDelegate.qml @@ -21,7 +21,7 @@ import QtQuick 2.5 -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami import "private" diff --git a/org.kde.desktop/Label.qml b/org.kde.desktop/Label.qml --- a/org.kde.desktop/Label.qml +++ b/org.kde.desktop/Label.qml @@ -22,7 +22,7 @@ import QtQuick 2.1 import QtQuick.Window 2.2 -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate import org.kde.kirigami 2.2 as Kirigami diff --git a/org.kde.desktop/Menu.qml b/org.kde.desktop/Menu.qml --- a/org.kde.desktop/Menu.qml +++ b/org.kde.desktop/Menu.qml @@ -23,8 +23,8 @@ import QtQuick 2.6 import QtQuick.Layouts 1.2 import QtGraphicalEffects 1.0 -import QtQuick.Controls 2.0 -import QtQuick.Templates 2.0 as T +import QtQuick.Controls @QQC2_VERSION@ +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami T.Menu { diff --git a/org.kde.desktop/MenuItem.qml b/org.kde.desktop/MenuItem.qml --- a/org.kde.desktop/MenuItem.qml +++ b/org.kde.desktop/MenuItem.qml @@ -22,7 +22,7 @@ import QtQuick 2.6 import QtQuick.Layouts 1.2 -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami T.MenuItem { diff --git a/org.kde.desktop/Popup.qml b/org.kde.desktop/Popup.qml --- a/org.kde.desktop/Popup.qml +++ b/org.kde.desktop/Popup.qml @@ -22,7 +22,7 @@ import QtQuick 2.6 import QtGraphicalEffects 1.0 -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami T.Popup { diff --git a/org.kde.desktop/ProgressBar.qml b/org.kde.desktop/ProgressBar.qml --- a/org.kde.desktop/ProgressBar.qml +++ b/org.kde.desktop/ProgressBar.qml @@ -22,7 +22,7 @@ import QtQuick 2.6 import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T T.ProgressBar { id: controlRoot diff --git a/org.kde.desktop/RadioButton.qml b/org.kde.desktop/RadioButton.qml --- a/org.kde.desktop/RadioButton.qml +++ b/org.kde.desktop/RadioButton.qml @@ -21,8 +21,8 @@ import QtQuick 2.6 -import QtQuick.Templates 2.0 as T -import QtQuick.Controls 2.0 +import QtQuick.Templates @QQC2_VERSION@ as T +import QtQuick.Controls @QQC2_VERSION@ import org.kde.kirigami 2.2 as Kirigami T.RadioButton { diff --git a/org.kde.desktop/RadioDelegate.qml b/org.kde.desktop/RadioDelegate.qml --- a/org.kde.desktop/RadioDelegate.qml +++ b/org.kde.desktop/RadioDelegate.qml @@ -21,7 +21,7 @@ import QtQuick 2.5 -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami import "private" diff --git a/org.kde.desktop/RangeSlider.qml b/org.kde.desktop/RangeSlider.qml --- a/org.kde.desktop/RangeSlider.qml +++ b/org.kde.desktop/RangeSlider.qml @@ -21,8 +21,8 @@ import QtQuick 2.6 -import QtQuick.Controls 2.0 -import QtQuick.Templates 2.0 as T +import QtQuick.Controls @QQC2_VERSION@ +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami T.RangeSlider { diff --git a/org.kde.desktop/ScrollBar.qml b/org.kde.desktop/ScrollBar.qml --- a/org.kde.desktop/ScrollBar.qml +++ b/org.kde.desktop/ScrollBar.qml @@ -22,7 +22,7 @@ import QtQuick 2.6 import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T T.ScrollBar { id: controlRoot diff --git a/org.kde.desktop/ScrollView.qml b/org.kde.desktop/ScrollView.qml --- a/org.kde.desktop/ScrollView.qml +++ b/org.kde.desktop/ScrollView.qml @@ -21,8 +21,8 @@ import QtQuick 2.9 -import QtQuick.Controls 2.2 -import QtQuick.Templates 2.2 as T +import QtQuick.Controls @QQC2_VERSION@ +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate diff --git a/org.kde.desktop/Slider.qml b/org.kde.desktop/Slider.qml --- a/org.kde.desktop/Slider.qml +++ b/org.kde.desktop/Slider.qml @@ -22,7 +22,7 @@ import QtQuick 2.6 import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami T.Slider { diff --git a/org.kde.desktop/SpinBox.qml b/org.kde.desktop/SpinBox.qml --- a/org.kde.desktop/SpinBox.qml +++ b/org.kde.desktop/SpinBox.qml @@ -21,7 +21,7 @@ import QtQuick 2.6 -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate diff --git a/org.kde.desktop/Switch.qml b/org.kde.desktop/Switch.qml --- a/org.kde.desktop/Switch.qml +++ b/org.kde.desktop/Switch.qml @@ -21,7 +21,7 @@ import QtQuick 2.6 -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami T.CheckBox { diff --git a/org.kde.desktop/SwitchDelegate.qml b/org.kde.desktop/SwitchDelegate.qml --- a/org.kde.desktop/SwitchDelegate.qml +++ b/org.kde.desktop/SwitchDelegate.qml @@ -22,7 +22,7 @@ import QtQuick 2.5 import org.kde.kirigami 2.2 as Kirigami -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T import "private" T.SwitchDelegate { diff --git a/org.kde.desktop/TabBar.qml b/org.kde.desktop/TabBar.qml --- a/org.kde.desktop/TabBar.qml +++ b/org.kde.desktop/TabBar.qml @@ -23,7 +23,7 @@ import QtQuick 2.6 import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate import org.kde.kirigami 2.2 as Kirigami -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T T.TabBar { id: controlRoot diff --git a/org.kde.desktop/TabButton.qml b/org.kde.desktop/TabButton.qml --- a/org.kde.desktop/TabButton.qml +++ b/org.kde.desktop/TabButton.qml @@ -23,9 +23,9 @@ import QtQuick 2.6 import QtQml.Models 2.1 //for TabBar.* -import QtQuick.Controls 2.0 +import QtQuick.Controls @QQC2_VERSION@ import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T T.TabButton { id: controlRoot diff --git a/org.kde.desktop/TextArea.qml b/org.kde.desktop/TextArea.qml --- a/org.kde.desktop/TextArea.qml +++ b/org.kde.desktop/TextArea.qml @@ -22,7 +22,7 @@ import QtQuick 2.6 import QtQuick.Window 2.1 -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate diff --git a/org.kde.desktop/TextField.qml b/org.kde.desktop/TextField.qml --- a/org.kde.desktop/TextField.qml +++ b/org.kde.desktop/TextField.qml @@ -22,8 +22,8 @@ import QtQuick 2.6 import QtQuick.Window 2.1 -import QtQuick.Controls 2.0 as Controls -import QtQuick.Templates 2.0 as T +import QtQuick.Controls @QQC2_VERSION@ as Controls +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate diff --git a/org.kde.desktop/ToolBar.qml b/org.kde.desktop/ToolBar.qml --- a/org.kde.desktop/ToolBar.qml +++ b/org.kde.desktop/ToolBar.qml @@ -21,7 +21,7 @@ import QtQuick 2.6 -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami T.ToolBar { diff --git a/org.kde.desktop/ToolButton.qml b/org.kde.desktop/ToolButton.qml --- a/org.kde.desktop/ToolButton.qml +++ b/org.kde.desktop/ToolButton.qml @@ -21,7 +21,7 @@ import QtQuick 2.6 -import QtQuick.Templates 2.0 as T +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate diff --git a/org.kde.desktop/ToolTip.qml b/org.kde.desktop/ToolTip.qml --- a/org.kde.desktop/ToolTip.qml +++ b/org.kde.desktop/ToolTip.qml @@ -22,8 +22,8 @@ import QtQuick 2.6 import QtGraphicalEffects 1.0 -import QtQuick.Controls 2.0 as Controls -import QtQuick.Templates 2.0 as T +import QtQuick.Controls @QQC2_VERSION@ as Controls +import QtQuick.Templates @QQC2_VERSION@ as T import org.kde.kirigami 2.2 as Kirigami T.ToolTip {