Merge branch 'master' into chore/statusradiobutton

This commit is contained in:
Boris Melnik 2021-05-20 11:55:36 +03:00 committed by GitHub
commit afc16b4216
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 107 additions and 15 deletions

View File

@ -89,4 +89,7 @@ GridLayout {
StatusRadioButton {
text: "i'm radio!"
}
StatusSwitch {
}
}

View File

@ -2,10 +2,12 @@ import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick.Controls 2.14
import Sandbox 0.1
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
Window {
StatusWindow {
id: rootWindow
width: 1024
height: 840

View File

@ -12,7 +12,7 @@ SOURCES += \
sandboxapp.cpp
OBJECTIVE_SOURCES += \
sandboxapp_mac.mm
statuswindow_mac.mm
RESOURCES += qml.qrc
@ -28,10 +28,12 @@ OTHER_FILES += $$files($$PWD/../src/*, true)
HEADERS += \
handler.h \
sandboxapp.h
sandboxapp.h \
statuswindow.h
DISTFILES += \
../src/StatusQ/Controls/StatusBaseButton.qml \
../src/StatusQ/Controls/StatusButton.qml \
../src/StatusQ/Controls/StatusFlatRoundButton.qml \
../src/StatusQ/Controls/StatusRadioButton.qml
../src/StatusQ/Controls/StatusRadioButton.qml \
../src/StatusQ/Controls/StatusSwitch.qml

View File

@ -4,6 +4,8 @@
#include <QWindow>
#include <QDebug>
#include "statuswindow.h"
SandboxApp::SandboxApp(int &argc, char **argv)
: QGuiApplication(argc, argv),
m_handler(new Handler(this))
@ -13,6 +15,8 @@ SandboxApp::SandboxApp(int &argc, char **argv)
void SandboxApp::startEngine()
{
qmlRegisterType<StatusWindow>("Sandbox", 0, 1, "StatusWindow");
const QUrl url(applicationDirPath() + "/../main.qml");
m_engine.rootContext()->setContextProperty("app", m_handler);
@ -25,13 +29,6 @@ void SandboxApp::startEngine()
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
m_engine.load(url);
QWindow *rootWindow = qobject_cast<QWindow*>(m_engine.rootObjects().at(0));
if (rootWindow) {
removeTitleBar(rootWindow->winId());
} else {
qDebug() << "Window doesn't exist";
}
}
void SandboxApp::restartEngine()

View File

@ -13,8 +13,6 @@ public:
void startEngine();
void removeTitleBar(WId wid);
public slots:
void restartEngine();

21
sandbox/statuswindow.h Normal file
View File

@ -0,0 +1,21 @@
#ifndef STATUSWINDOW_H
#define STATUSWINDOW_H
#include <QQuickWindow>
class StatusWindow: public QQuickWindow
{
Q_OBJECT
public:
explicit StatusWindow(QWindow *parent = nullptr)
: QQuickWindow(parent)
{
removeTitleBar(winId());
}
private:
void removeTitleBar(WId wid);
};
#endif // STATUSWINDOW_H

View File

@ -1,4 +1,4 @@
#include "sandboxapp.h"
#include "statuswindow.h"
#include <QColor>
@ -7,7 +7,7 @@
#include <AppKit/NSWindow.h>
#include <AppKit/NSColor.h>
void SandboxApp::removeTitleBar(WId wid)
void StatusWindow::removeTitleBar(WId wid)
{
NSView *nsView = reinterpret_cast<NSView*>(wid);
NSWindow *window = [nsView window];

View File

@ -0,0 +1,66 @@
import QtQuick 2.12
import QtQuick.Controls 2.14
import QtGraphicalEffects 1.14
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Components 0.1
Switch {
id: statusSwitch
indicator: Rectangle {
id: oval
implicitWidth: 52
implicitHeight: 28
x: statusSwitch.leftPadding
y: parent.height / 2 - height / 2
radius: 14
color: statusSwitch.checked ? Theme.palette.primaryColor1
: Theme.palette.directColor8
Rectangle {
id: circle
y: 4
width: 20
height: 20
radius: 10
color: Theme.palette.white
layer.enabled: true
layer.effect: DropShadow {
width: parent.width
height: parent.height
visible: true
verticalOffset: 1
fast: true
cached: true
color: Theme.palette.dropShadow
}
states: [
State {
name: "on"
when: statusSwitch.checked
PropertyChanges { target: circle; x: oval.width - circle.width - 4 }
},
State {
name: "off"
when: !statusSwitch.checked
PropertyChanges { target: circle; x: 4 }
}
]
transitions: Transition {
reversible: true
NumberAnimation { properties: "x"; easing.type: Easing.Linear; duration: 120; }
}
}
}
contentItem: StatusBaseText {
text: statusSwitch.text
opacity: enabled ? 1.0 : 0.3
verticalAlignment: Text.AlignVCenter
leftPadding: !!statusSwitch.text ? statusSwitch.indicator.width + statusSwitch.spacing : statusSwitch.indicator.width
}
}

View File

@ -9,3 +9,4 @@ StatusFlatButton 0.1 StatusFlatButton.qml
StatusRoundButton 0.1 StatusRoundButton.qml
StatusFlatRoundButton 0.1 StatusFlatRoundButton.qml
StatusRadioButton 0.1 StatusRadioButton.qml
StatusSwitch 0.1 StatusSwitch.qml

View File

@ -25,6 +25,8 @@ QtObject {
property color black: getColor('black')
property color white: getColor('white')
property color dropShadow: getColor('black', 0.12)
property color baseColor1
property color baseColor2
property color baseColor3