WIP: Create a new TopArea element using widgets/toparea svg
Summary: This creates a new component that uses the widgets/toparea svg. First time I try to add something to PlasmaComponents, so I probably got stuff wrong and I probably have to still do thing like adding documentation. I'm creating the diff to get feedback on how to move forward with this. Depends on D27444 Reviewers: mart, ngraham Reviewed By: mart, ngraham Subscribers: ngraham, davidedmundson, ahiemstra, kde-frameworks-devel Tags: #frameworks Maniphest Tasks: T10470 Differential Revision: https://phabricator.kde.org/D27695
This commit is contained in:
parent
f55f104447
commit
7d80f01c31
@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Copyright 2020 Niccolò Venerandi <niccolo@venerandi.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Library General Public License as
|
||||
* published by the Free Software Foundation; either version 2, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Library General Public License for more details
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this program; if not, write to the
|
||||
* Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Layouts 1.12
|
||||
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
import QtQuick.Templates 2.12 as T
|
||||
|
||||
/**
|
||||
* Item to be used as a header or footer in plasmoids
|
||||
*
|
||||
* @inherit QtQuick.Templates.Frame
|
||||
*/
|
||||
T.Frame {
|
||||
|
||||
/**
|
||||
* Possible positions of the heading element
|
||||
*/
|
||||
enum Location {
|
||||
/**
|
||||
* Indicates that it's used as a header of the plasmoid, touching the top border
|
||||
*/
|
||||
Header,
|
||||
/**
|
||||
* Indicates that it's used as a footer of the plasmoid, touching the bottom border
|
||||
*/
|
||||
Footer
|
||||
}
|
||||
|
||||
/**
|
||||
* location: int
|
||||
*
|
||||
* Indicates the position of the heading. The default is PlasmoidHeading.Location.Header.
|
||||
*/
|
||||
property int location: PlasmoidHeading.Location.Header
|
||||
|
||||
Layout.fillWidth: true
|
||||
bottomPadding: location == PlasmoidHeading.Location.Footer ? 0 : headingSvg.margins.top
|
||||
topPadding: location == PlasmoidHeading.Location.Footer ? headingSvg.margins.bottom : 0
|
||||
|
||||
implicitHeight: contentHeight + topPadding + bottomPadding
|
||||
contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
|
||||
|
||||
leftInset: -headingSvg.fixedMargins.left
|
||||
rightInset: -headingSvg.fixedMargins.right
|
||||
topInset: location == PlasmoidHeading.Location.Footer ? 0 : -headingSvg.margins.top
|
||||
bottomInset: location == PlasmoidHeading.Location.Footer ? -headingSvg.fixedMargins.bottom : 0
|
||||
|
||||
background: PlasmaCore.FrameSvgItem {
|
||||
id: headingSvg
|
||||
imagePath: "widgets/plasmoidheading"
|
||||
prefix: location == PlasmoidHeading.Location.Header? 'header' : 'footer'
|
||||
enabledBorders: {
|
||||
var borders = new Array()
|
||||
borders |= PlasmaCore.FrameSvg.LeftBorder
|
||||
borders |= PlasmaCore.FrameSvg.RightBorder
|
||||
if (plasmoid.location !== PlasmaCore.Types.TopEdge || location != PlasmoidHeading.Location.Header) {
|
||||
borders |= PlasmaCore.FrameSvg.TopBorder
|
||||
}
|
||||
if (plasmoid.location !== PlasmaCore.Types.BottomEdge || location != PlasmoidHeading.Location.Footer) {
|
||||
borders |= PlasmaCore.FrameSvg.BottomBorder
|
||||
}
|
||||
return borders
|
||||
}
|
||||
}
|
||||
}
|
@ -9,6 +9,7 @@ PageRow 2.0 PageRow.qml
|
||||
ScrollArea 2.0 ScrollArea.qml
|
||||
Title 2.0 Title.qml
|
||||
DescriptiveLabel 2.0 DescriptiveLabel.qml
|
||||
PlasmoidHeading 2.0 PlasmoidHeading.qml
|
||||
|
||||
ActivateAnimation 2.0 animations/ActivateAnimation.qml
|
||||
AppearAnimation 2.0 animations/AppearAnimation.qml
|
||||
|
Loading…
Reference in New Issue
Block a user