Compare commits

..

No commits in common. "705a65725c2f7aab6cdf51abfe0a52db1d77611d" and "2e6d85352ace52cbb54da6c65def5fbb29068288" have entirely different histories.

5 changed files with 40 additions and 46 deletions

View File

@ -1,23 +1,17 @@
import QtQuick import QtQuick
import QtQuick.Controls
import QtQuick.Layouts import QtQuick.Layouts
import RibbonUI
Item { Item {
property string title property string title
default property alias content: container.data default property alias content: container.data
clip: true clip: true
ScrollView{ RowLayout{
id: view id: container
anchors.fill: parent spacing: 0
ScrollBar.horizontal: RibbonScrollBar{ anchors{
anchors.bottom: view.bottom top:parent.top
width: view.width bottom:parent.bottom
} left: parent.left
RowLayout{
id: container
spacing: 0
height: parent.height
} }
} }
} }

View File

@ -6,7 +6,7 @@ import RibbonUI
Item { Item {
id: control id: control
height: 30 height: 30
property int minimumWidth: title_text.implicitWidth + Math.max(left_container.width, right_container.width) * 2 + (Qt.platform.os === "osx" ? 65 : 0) + 20 property int minimumWidth: title_text.implicitWidth + left_container.width + right_container.width + (Qt.platform.os === "osx" ? 65 : 0) + 40
property string title: Window.window.title property string title: Window.window.title
property bool show_style_switch: true property bool show_style_switch: true
property bool show_darkmode_btn: true property bool show_darkmode_btn: true

View File

@ -4,13 +4,11 @@ import org.wangwenx190.FramelessHelper
Window { Window {
id:window id:window
minimumWidth: title_bar.minimumWidth
default property alias content: container.data default property alias content: container.data
property alias window_items: window_items property alias window_items: window_items
property alias title_bar: titleBar property alias title_bar: titleBar
property alias popup: pop property alias popup: pop
property bool comfirmed_quit: false property bool comfirmed_quit: false
property var sub_windows: ({})
visible: false visible: false
color: { color: {
if (FramelessHelper.blurBehindWindowEnabled) { if (FramelessHelper.blurBehindWindowEnabled) {
@ -77,8 +75,8 @@ Window {
anchors.fill: parent anchors.fill: parent
color: 'transparent' color: 'transparent'
border.color: RibbonTheme.dark_mode ? "#7A7A7A" : "#2C59B7" border.color: RibbonTheme.dark_mode ? "#7A7A7A" : "#2C59B7"
border.width: RibbonTheme.modern_style ? Qt.platform.os === 'windows' ? 2 : 1 : 0 border.width: RibbonTheme.modern_style ? 1 : 0
radius: Qt.platform.os === 'windows' ? 8 : 10 radius: 10
visible: RibbonTheme.modern_style visible: RibbonTheme.modern_style
} }
RibbonPopup{ RibbonPopup{
@ -113,35 +111,38 @@ Window {
close_dialog.open() close_dialog.open()
} }
function show_window(window_url, args){ Loader{
if (sub_windows.hasOwnProperty(window_url)) id: window_loader
{ property var args
if (args && Object.keys(args).length) onLoaded: {
{ item.onClosing.connect(function(){
for (let arg in args){ window_loader.source = ""
sub_windows[window_url][arg] = args[arg] })
if (!window_loader.args)
return
else if(Object.keys(window_loader.args).length){
for (let arg in window_loader.args){
item[arg] = window_loader.args[arg]
} }
} }
if (!sub_windows[window_url].visible) else{
{ console.error("RibbonWindow: Arguments error, please check.")
sub_windows[window_url].show()
} }
sub_windows[window_url].raise() item.show()
sub_windows[window_url].requestActivate()
return
} }
var component = Qt.createComponent(window_url, Component.PreferSynchronous, undefined); }
if (component.status === Component.Ready) {
var window = component.createObject(undefined, args); function show_window(window_url, args){
sub_windows[window_url] = window if (window_url === window_loader.source && window_loader.status === Loader.Ready)
window.onClosing.connect(function() { window_loader.item.raise()
window.destroy() else
delete sub_windows[window_url] window_loader.source = window_url
}); if (args !== window_loader.args && Object.keys(window_loader.args).length && window_loader.status === Loader.Ready)
window.raise() {
window.requestActivate() window_loader.args = args
} else if (component.status === Component.Error) { for (let arg in window_loader.args){
console.error("RibbonWindow: Error loading Window:", component.errorString()) window_loader.item[arg] = window_loader.args[arg]
}
} }
} }

View File

@ -1,6 +1,5 @@
#include "ribbonui.h" #include "ribbonui.h"
#include <QMutex> #include <QMutex>
#include <QOperatingSystemVersion>
#define STR(x) #x #define STR(x) #x
#define JOIN(a,b,c) STR(a.b.c) #define JOIN(a,b,c) STR(a.b.c)
#define VER_JOIN(x) JOIN x #define VER_JOIN(x) JOIN x
@ -10,7 +9,6 @@ RibbonUI::RibbonUI(QQuickItem *parent)
{ {
_version = VER_JOIN((RIBBONUI_VERSION)); _version = VER_JOIN((RIBBONUI_VERSION));
_qt_version = QString(qVersion()).replace('.',"").toInt(); _qt_version = QString(qVersion()).replace('.',"").toInt();
_is_win11 = QOperatingSystemVersion::current() >= QOperatingSystemVersion(QOperatingSystemVersion::Windows, 10, 0, 22000);
} }
RibbonUI* RibbonUI::instance(){ RibbonUI* RibbonUI::instance(){
@ -28,7 +26,9 @@ void RibbonUI::init()
{ {
qputenv("QT_QUICK_CONTROLS_STYLE","Basic"); qputenv("QT_QUICK_CONTROLS_STYLE","Basic");
FramelessHelper::Quick::initialize(); FramelessHelper::Quick::initialize();
#ifdef Q_OS_WIN
FramelessConfig::instance()->set(Global::Option::ForceHideWindowFrameBorder); FramelessConfig::instance()->set(Global::Option::ForceHideWindowFrameBorder);
#endif
FramelessConfig::instance()->set(Global::Option::DisableLazyInitializationForMicaMaterial); FramelessConfig::instance()->set(Global::Option::DisableLazyInitializationForMicaMaterial);
FramelessConfig::instance()->set(Global::Option::CenterWindowBeforeShow); FramelessConfig::instance()->set(Global::Option::CenterWindowBeforeShow);
FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow); FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow);

View File

@ -15,7 +15,6 @@ class RibbonUI : public QQuickItem
QML_NAMED_ELEMENT(RibbonUI) QML_NAMED_ELEMENT(RibbonUI)
Q_PROPERTY_R(QString, version) Q_PROPERTY_R(QString, version)
Q_PROPERTY_R(int, qt_version) Q_PROPERTY_R(int, qt_version)
Q_PROPERTY_R(int, is_win11)
public: public:
static RibbonUI* instance(); static RibbonUI* instance();
static RibbonUI* create(QQmlEngine *qmlEngine, QJSEngine *jsEngine){return instance();} static RibbonUI* create(QQmlEngine *qmlEngine, QJSEngine *jsEngine){return instance();}