a lot of changes
int -> qreal; set width & height property only under change; code refactor; v8 isolate npe try fix
This commit is contained in:
parent
65e5f8af19
commit
6452b469a2
@ -22,7 +22,7 @@ QQuickItem *DoricHLayoutNode::build() {
|
|||||||
void DoricHLayoutNode::blend(QQuickItem *view, QString name, QJsonValue prop) {
|
void DoricHLayoutNode::blend(QQuickItem *view, QString name, QJsonValue prop) {
|
||||||
QQuickItem *container = view;
|
QQuickItem *container = view;
|
||||||
if (name == "space") {
|
if (name == "space") {
|
||||||
getLayouts()->setSpacing(prop.toInt());
|
getLayouts()->setSpacing(prop.toDouble());
|
||||||
} else if (name == "gravity") {
|
} else if (name == "gravity") {
|
||||||
getLayouts()->setGravity(prop.toInt());
|
getLayouts()->setGravity(prop.toInt());
|
||||||
} else {
|
} else {
|
||||||
|
@ -22,7 +22,7 @@ QQuickItem *DoricVLayoutNode::build() {
|
|||||||
void DoricVLayoutNode::blend(QQuickItem *view, QString name, QJsonValue prop) {
|
void DoricVLayoutNode::blend(QQuickItem *view, QString name, QJsonValue prop) {
|
||||||
QQuickItem *container = view;
|
QQuickItem *container = view;
|
||||||
if (name == "space") {
|
if (name == "space") {
|
||||||
getLayouts()->setSpacing(prop.toInt());
|
getLayouts()->setSpacing(prop.toDouble());
|
||||||
} else if (name == "gravity") {
|
} else if (name == "gravity") {
|
||||||
getLayouts()->setGravity(prop.toInt());
|
getLayouts()->setGravity(prop.toInt());
|
||||||
} else {
|
} else {
|
||||||
|
@ -15,16 +15,16 @@ void DoricViewNode::blendLayoutConfig(QJsonValue jsValue) {
|
|||||||
QJsonObject margin = jsObject["margin"].toObject();
|
QJsonObject margin = jsObject["margin"].toObject();
|
||||||
|
|
||||||
if (margin.contains("left"))
|
if (margin.contains("left"))
|
||||||
getLayouts()->setMarginLeft(margin["left"].toInt());
|
getLayouts()->setMarginLeft(margin["left"].toDouble());
|
||||||
|
|
||||||
if (margin.contains("top"))
|
if (margin.contains("top"))
|
||||||
getLayouts()->setMarginTop(margin["top"].toInt());
|
getLayouts()->setMarginTop(margin["top"].toDouble());
|
||||||
|
|
||||||
if (margin.contains("right"))
|
if (margin.contains("right"))
|
||||||
getLayouts()->setMarginRight(margin["right"].toInt());
|
getLayouts()->setMarginRight(margin["right"].toDouble());
|
||||||
|
|
||||||
if (margin.contains("bottom"))
|
if (margin.contains("bottom"))
|
||||||
getLayouts()->setMarginBottom(margin["bottom"].toInt());
|
getLayouts()->setMarginBottom(margin["bottom"].toDouble());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (jsObject.contains("alignment"))
|
if (jsObject.contains("alignment"))
|
||||||
@ -34,16 +34,16 @@ void DoricViewNode::blendLayoutConfig(QJsonValue jsValue) {
|
|||||||
getLayouts()->setWeight(jsObject["weight"].toInt());
|
getLayouts()->setWeight(jsObject["weight"].toInt());
|
||||||
|
|
||||||
if (jsObject.contains("maxWidth"))
|
if (jsObject.contains("maxWidth"))
|
||||||
getLayouts()->setMaxWidth(jsObject["maxWidth"].toInt());
|
getLayouts()->setMaxWidth(jsObject["maxWidth"].toDouble());
|
||||||
|
|
||||||
if (jsObject.contains("maxHeight"))
|
if (jsObject.contains("maxHeight"))
|
||||||
getLayouts()->setMaxHeight(jsObject["maxHeight"].toInt());
|
getLayouts()->setMaxHeight(jsObject["maxHeight"].toDouble());
|
||||||
|
|
||||||
if (jsObject.contains("minWidth"))
|
if (jsObject.contains("minWidth"))
|
||||||
getLayouts()->setMinWidth(jsObject["minWidth"].toInt());
|
getLayouts()->setMinWidth(jsObject["minWidth"].toDouble());
|
||||||
|
|
||||||
if (jsObject.contains("minHeight"))
|
if (jsObject.contains("minHeight"))
|
||||||
getLayouts()->setMinHeight(jsObject["minHeight"].toInt());
|
getLayouts()->setMinHeight(jsObject["minHeight"].toDouble());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoricViewNode::createLayouts(QQuickItem *view) {
|
void DoricViewNode::createLayouts(QQuickItem *view) {
|
||||||
@ -101,26 +101,26 @@ void DoricViewNode::blend(QJsonValue jsValue) {
|
|||||||
|
|
||||||
void DoricViewNode::blend(QQuickItem *view, QString name, QJsonValue prop) {
|
void DoricViewNode::blend(QQuickItem *view, QString name, QJsonValue prop) {
|
||||||
if (name == "width") {
|
if (name == "width") {
|
||||||
getLayouts()->setWidth(prop.toInt());
|
getLayouts()->setWidth(prop.toDouble());
|
||||||
} else if (name == "height") {
|
} else if (name == "height") {
|
||||||
getLayouts()->setHeight(prop.toInt());
|
getLayouts()->setHeight(prop.toDouble());
|
||||||
} else if (name == "backgroundColor") {
|
} else if (name == "backgroundColor") {
|
||||||
QString color = DoricUtils::doricColor(prop.toInt()).name();
|
QString color = DoricUtils::doricColor(prop.toInt()).name();
|
||||||
view->setProperty("backgroundColor", color);
|
view->setProperty("backgroundColor", color);
|
||||||
} else if (name == "x") {
|
} else if (name == "x") {
|
||||||
getLayouts()->setMarginLeft(prop.toInt());
|
getLayouts()->setMarginLeft(prop.toDouble());
|
||||||
} else if (name == "y") {
|
} else if (name == "y") {
|
||||||
getLayouts()->setMarginTop(prop.toInt());
|
getLayouts()->setMarginTop(prop.toDouble());
|
||||||
} else if (name == "corners") {
|
} else if (name == "corners") {
|
||||||
view->setProperty("radius", prop.toInt());
|
view->setProperty("radius", prop.toInt());
|
||||||
} else if (name == "onClick") {
|
} else if (name == "onClick") {
|
||||||
if (prop.isString())
|
if (prop.isString())
|
||||||
clickFunction = prop.toString();
|
clickFunction = prop.toString();
|
||||||
} else if (name == "padding") {
|
} else if (name == "padding") {
|
||||||
getLayouts()->setPaddingLeft(prop["left"].toInt());
|
getLayouts()->setPaddingLeft(prop["left"].toDouble());
|
||||||
getLayouts()->setPaddingRight(prop["right"].toInt());
|
getLayouts()->setPaddingRight(prop["right"].toDouble());
|
||||||
getLayouts()->setPaddingTop(prop["top"].toInt());
|
getLayouts()->setPaddingTop(prop["top"].toDouble());
|
||||||
getLayouts()->setPaddingBottom(prop["bottom"].toInt());
|
getLayouts()->setPaddingBottom(prop["bottom"].toDouble());
|
||||||
} else if (name == "hidden") {
|
} else if (name == "hidden") {
|
||||||
getLayouts()->setDisabled(prop.toBool());
|
getLayouts()->setDisabled(prop.toBool());
|
||||||
} else if (name != "layoutConfig") {
|
} else if (name != "layoutConfig") {
|
||||||
|
@ -54,32 +54,34 @@ void DoricLayouts::setAlignment(int alignment) { this->alignment = alignment; }
|
|||||||
|
|
||||||
void DoricLayouts::setGravity(int gravity) { this->gravity = gravity; }
|
void DoricLayouts::setGravity(int gravity) { this->gravity = gravity; }
|
||||||
|
|
||||||
void DoricLayouts::setWidth(int width) { this->width = width; }
|
void DoricLayouts::setWidth(qreal width) { this->width = width; }
|
||||||
void DoricLayouts::setHeight(int height) { this->height = height; }
|
void DoricLayouts::setHeight(qreal height) { this->height = height; }
|
||||||
|
|
||||||
void DoricLayouts::setSpacing(int spacing) { this->spacing = spacing; }
|
void DoricLayouts::setSpacing(qreal spacing) { this->spacing = spacing; }
|
||||||
|
|
||||||
void DoricLayouts::setMarginLeft(int marginLeft) {
|
void DoricLayouts::setMarginLeft(qreal marginLeft) {
|
||||||
this->marginLeft = marginLeft;
|
this->marginLeft = marginLeft;
|
||||||
}
|
}
|
||||||
void DoricLayouts::setMarginTop(int marginTop) { this->marginTop = marginTop; }
|
void DoricLayouts::setMarginTop(qreal marginTop) {
|
||||||
void DoricLayouts::setMarginRight(int marginRight) {
|
this->marginTop = marginTop;
|
||||||
|
}
|
||||||
|
void DoricLayouts::setMarginRight(qreal marginRight) {
|
||||||
this->marginRight = marginRight;
|
this->marginRight = marginRight;
|
||||||
}
|
}
|
||||||
void DoricLayouts::setMarginBottom(int marginBottom) {
|
void DoricLayouts::setMarginBottom(qreal marginBottom) {
|
||||||
this->marginBottom = marginBottom;
|
this->marginBottom = marginBottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoricLayouts::setPaddingLeft(int paddingLeft) {
|
void DoricLayouts::setPaddingLeft(qreal paddingLeft) {
|
||||||
this->paddingLeft = paddingLeft;
|
this->paddingLeft = paddingLeft;
|
||||||
}
|
}
|
||||||
void DoricLayouts::setPaddingTop(int paddingTop) {
|
void DoricLayouts::setPaddingTop(qreal paddingTop) {
|
||||||
this->paddingTop = paddingTop;
|
this->paddingTop = paddingTop;
|
||||||
}
|
}
|
||||||
void DoricLayouts::setPaddingRight(int paddingRight) {
|
void DoricLayouts::setPaddingRight(qreal paddingRight) {
|
||||||
this->paddingRight = paddingRight;
|
this->paddingRight = paddingRight;
|
||||||
}
|
}
|
||||||
void DoricLayouts::setPaddingBottom(int paddingBottom) {
|
void DoricLayouts::setPaddingBottom(qreal paddingBottom) {
|
||||||
this->paddingBottom = paddingBottom;
|
this->paddingBottom = paddingBottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,12 +99,16 @@ void DoricLayouts::setLayoutType(int layoutType) {
|
|||||||
|
|
||||||
void DoricLayouts::setDisabled(bool disabled) { this->disabled = disabled; }
|
void DoricLayouts::setDisabled(bool disabled) { this->disabled = disabled; }
|
||||||
|
|
||||||
void DoricLayouts::setMaxWidth(int maxWidth) { this->maxWidth = maxWidth; }
|
void DoricLayouts::setMaxWidth(qreal maxWidth) { this->maxWidth = maxWidth; }
|
||||||
void DoricLayouts::setMaxHeight(int maxHeight) { this->maxHeight = maxHeight; }
|
void DoricLayouts::setMaxHeight(qreal maxHeight) {
|
||||||
void DoricLayouts::setMinWidth(int minWidth) { this->minWidth = minWidth; }
|
this->maxHeight = maxHeight;
|
||||||
void DoricLayouts::setMinHeight(int minHeight) { this->minHeight = minHeight; }
|
}
|
||||||
|
void DoricLayouts::setMinWidth(qreal minWidth) { this->minWidth = minWidth; }
|
||||||
|
void DoricLayouts::setMinHeight(qreal minHeight) {
|
||||||
|
this->minHeight = minHeight;
|
||||||
|
}
|
||||||
|
|
||||||
void DoricLayouts::apply(int targetWidth, int targetHeight) {
|
void DoricLayouts::apply(qreal targetWidth, qreal targetHeight) {
|
||||||
this->resolved = false;
|
this->resolved = false;
|
||||||
|
|
||||||
this->measure(targetWidth, targetHeight);
|
this->measure(targetWidth, targetHeight);
|
||||||
@ -115,14 +121,14 @@ void DoricLayouts::apply() {
|
|||||||
this->apply(this->view->width(), this->view->height());
|
this->apply(this->view->width(), this->view->height());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoricLayouts::measure(int targetWidth, int targetHeight) {
|
void DoricLayouts::measure(qreal targetWidth, qreal targetHeight) {
|
||||||
this->measureSelf(targetWidth, targetHeight);
|
this->measureSelf(targetWidth, targetHeight);
|
||||||
this->layout();
|
this->layout();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoricLayouts::measureSelf(int targetWidth, int targetHeight) {
|
void DoricLayouts::measureSelf(qreal targetWidth, qreal targetHeight) {
|
||||||
// measure width
|
// measure width
|
||||||
int width;
|
qreal width;
|
||||||
if (this->widthSpec == DoricLayoutSpec::DoricLayoutMost) {
|
if (this->widthSpec == DoricLayoutSpec::DoricLayoutMost) {
|
||||||
QQuickItem *parent = this->view->parentItem();
|
QQuickItem *parent = this->view->parentItem();
|
||||||
DoricLayouts *parentDoricLayout =
|
DoricLayouts *parentDoricLayout =
|
||||||
@ -143,7 +149,7 @@ void DoricLayouts::measureSelf(int targetWidth, int targetHeight) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// measure height
|
// measure height
|
||||||
int height;
|
qreal height;
|
||||||
if (this->heightSpec == DoricLayoutSpec::DoricLayoutMost) {
|
if (this->heightSpec == DoricLayoutSpec::DoricLayoutMost) {
|
||||||
QQuickItem *parent = this->view->parentItem();
|
QQuickItem *parent = this->view->parentItem();
|
||||||
DoricLayouts *parentDoricLayout =
|
DoricLayouts *parentDoricLayout =
|
||||||
@ -176,7 +182,7 @@ void DoricLayouts::measureSelf(int targetWidth, int targetHeight) {
|
|||||||
this->restrainSize();
|
this->restrainSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoricLayouts::measureContent(int targetWidth, int targetHeight) {
|
void DoricLayouts::measureContent(qreal targetWidth, qreal targetHeight) {
|
||||||
qCritical() << "measureContent: " << tag << this->view->property("uuid");
|
qCritical() << "measureContent: " << tag << this->view->property("uuid");
|
||||||
switch (this->layoutType) {
|
switch (this->layoutType) {
|
||||||
case DoricLayoutType::DoricStack: {
|
case DoricLayoutType::DoricStack: {
|
||||||
@ -214,9 +220,10 @@ void DoricLayouts::measureContent(int targetWidth, int targetHeight) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoricLayouts::measureUndefinedContent(int targetWidth, int targetHeight) {
|
void DoricLayouts::measureUndefinedContent(qreal targetWidth,
|
||||||
int width = this->view->width();
|
qreal targetHeight) {
|
||||||
int height = this->view->height();
|
qreal width = this->view->width();
|
||||||
|
qreal height = this->view->height();
|
||||||
|
|
||||||
if (width > targetWidth) {
|
if (width > targetWidth) {
|
||||||
width = targetWidth;
|
width = targetWidth;
|
||||||
@ -231,8 +238,8 @@ void DoricLayouts::measureUndefinedContent(int targetWidth, int targetHeight) {
|
|||||||
setMeasuredHeight(height + this->paddingTop + this->paddingBottom);
|
setMeasuredHeight(height + this->paddingTop + this->paddingBottom);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void DoricLayouts::measureStackContent(int targetWidth, int targetHeight) {
|
void DoricLayouts::measureStackContent(qreal targetWidth, qreal targetHeight) {
|
||||||
int contentWidth = 0, contentHeight = 0;
|
qreal contentWidth = 0, contentHeight = 0;
|
||||||
foreach (QQuickItem *subview, this->view->childItems()) {
|
foreach (QQuickItem *subview, this->view->childItems()) {
|
||||||
DoricLayouts *layout =
|
DoricLayouts *layout =
|
||||||
(DoricLayouts *)(subview->property("doricLayout").toULongLong());
|
(DoricLayouts *)(subview->property("doricLayout").toULongLong());
|
||||||
@ -260,8 +267,9 @@ void DoricLayouts::measureStackContent(int targetWidth, int targetHeight) {
|
|||||||
this->contentWidth = contentWidth;
|
this->contentWidth = contentWidth;
|
||||||
this->contentHeight = contentHeight;
|
this->contentHeight = contentHeight;
|
||||||
}
|
}
|
||||||
void DoricLayouts::measureVLayoutContent(int targetWidth, int targetHeight) {
|
void DoricLayouts::measureVLayoutContent(qreal targetWidth,
|
||||||
int contentWidth = 0, contentHeight = 0, contentWeight = 0;
|
qreal targetHeight) {
|
||||||
|
qreal contentWidth = 0, contentHeight = 0, contentWeight = 0;
|
||||||
bool had = false;
|
bool had = false;
|
||||||
foreach (QQuickItem *subview, this->view->childItems()) {
|
foreach (QQuickItem *subview, this->view->childItems()) {
|
||||||
DoricLayouts *layout =
|
DoricLayouts *layout =
|
||||||
@ -288,7 +296,7 @@ void DoricLayouts::measureVLayoutContent(int targetWidth, int targetHeight) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (contentWeight > 0) {
|
if (contentWeight > 0) {
|
||||||
int remaining = targetHeight - contentHeight;
|
qreal remaining = targetHeight - contentHeight;
|
||||||
contentWidth = 0;
|
contentWidth = 0;
|
||||||
foreach (QQuickItem *subview, this->view->childItems()) {
|
foreach (QQuickItem *subview, this->view->childItems()) {
|
||||||
DoricLayouts *layout =
|
DoricLayouts *layout =
|
||||||
@ -300,7 +308,7 @@ void DoricLayouts::measureVLayoutContent(int targetWidth, int targetHeight) {
|
|||||||
if (layout->disabled) {
|
if (layout->disabled) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
int measuredHeight =
|
qreal measuredHeight =
|
||||||
layout->measuredHeight + remaining / contentWeight * layout->weight;
|
layout->measuredHeight + remaining / contentWeight * layout->weight;
|
||||||
layout->measuredHeight = measuredHeight;
|
layout->measuredHeight = measuredHeight;
|
||||||
// Need Remeasure
|
// Need Remeasure
|
||||||
@ -324,8 +332,9 @@ void DoricLayouts::measureVLayoutContent(int targetWidth, int targetHeight) {
|
|||||||
this->contentWidth = contentWidth;
|
this->contentWidth = contentWidth;
|
||||||
this->contentHeight = contentHeight;
|
this->contentHeight = contentHeight;
|
||||||
}
|
}
|
||||||
void DoricLayouts::measureHLayoutContent(int targetWidth, int targetHeight) {
|
void DoricLayouts::measureHLayoutContent(qreal targetWidth,
|
||||||
int contentWidth = 0, contentHeight = 0, contentWeight = 0;
|
qreal targetHeight) {
|
||||||
|
qreal contentWidth = 0, contentHeight = 0, contentWeight = 0;
|
||||||
bool had = false;
|
bool had = false;
|
||||||
foreach (QQuickItem *subview, this->view->childItems()) {
|
foreach (QQuickItem *subview, this->view->childItems()) {
|
||||||
DoricLayouts *layout =
|
DoricLayouts *layout =
|
||||||
@ -351,7 +360,7 @@ void DoricLayouts::measureHLayoutContent(int targetWidth, int targetHeight) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (contentWeight > 0) {
|
if (contentWeight > 0) {
|
||||||
int remaining = targetWidth - contentWidth;
|
qreal remaining = targetWidth - contentWidth;
|
||||||
contentHeight = 0;
|
contentHeight = 0;
|
||||||
foreach (QQuickItem *subview, this->view->childItems()) {
|
foreach (QQuickItem *subview, this->view->childItems()) {
|
||||||
DoricLayouts *layout =
|
DoricLayouts *layout =
|
||||||
@ -363,7 +372,7 @@ void DoricLayouts::measureHLayoutContent(int targetWidth, int targetHeight) {
|
|||||||
if (layout->disabled) {
|
if (layout->disabled) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
int measuredWidth =
|
qreal measuredWidth =
|
||||||
layout->measuredWidth + remaining / contentWeight * layout->weight;
|
layout->measuredWidth + remaining / contentWeight * layout->weight;
|
||||||
layout->measuredWidth = measuredWidth;
|
layout->measuredWidth = measuredWidth;
|
||||||
// Need Remeasure
|
// Need Remeasure
|
||||||
@ -388,13 +397,14 @@ void DoricLayouts::measureHLayoutContent(int targetWidth, int targetHeight) {
|
|||||||
this->contentHeight = contentHeight;
|
this->contentHeight = contentHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
int DoricLayouts::takenWidth() {
|
qreal DoricLayouts::takenWidth() {
|
||||||
return this->measuredWidth + this->marginLeft + this->marginRight;
|
return this->measuredWidth + this->marginLeft + this->marginRight;
|
||||||
}
|
}
|
||||||
int DoricLayouts::takenHeight() {
|
qreal DoricLayouts::takenHeight() {
|
||||||
return this->measuredHeight + this->marginTop + this->marginBottom;
|
return this->measuredHeight + this->marginTop + this->marginBottom;
|
||||||
}
|
}
|
||||||
QPair<int, int> DoricLayouts::removeMargin(int targetWidth, int targetHeight) {
|
QPair<qreal, qreal> DoricLayouts::removeMargin(qreal targetWidth,
|
||||||
|
qreal targetHeight) {
|
||||||
QPair<int, int> pair(targetWidth - this->marginLeft - this->marginRight,
|
QPair<int, int> pair(targetWidth - this->marginLeft - this->marginRight,
|
||||||
targetHeight - this->marginTop - this->marginBottom);
|
targetHeight - this->marginTop - this->marginBottom);
|
||||||
return pair;
|
return pair;
|
||||||
@ -457,11 +467,16 @@ void DoricLayouts::setFrame() {
|
|||||||
qCritical() << "DoricLayouts: " << tag << this->view->property("uuid")
|
qCritical() << "DoricLayouts: " << tag << this->view->property("uuid")
|
||||||
<< " measuredWidth: " << this->measuredWidth
|
<< " measuredWidth: " << this->measuredWidth
|
||||||
<< " measuredHeight: " << this->measuredHeight
|
<< " measuredHeight: " << this->measuredHeight
|
||||||
|
<< " width: " << this->view->width()
|
||||||
|
<< " height: " << this->view->height()
|
||||||
<< " measuredX: " << this->measuredX
|
<< " measuredX: " << this->measuredX
|
||||||
<< " measuredY: " << this->measuredY;
|
<< " measuredY: " << this->measuredY;
|
||||||
|
|
||||||
this->view->setProperty("width", this->measuredWidth);
|
if (qFabs(this->measuredWidth - this->view->width() >= 0.00001f))
|
||||||
this->view->setProperty("height", this->measuredHeight);
|
this->view->setProperty("width", this->measuredWidth);
|
||||||
|
if (qFabs(this->measuredHeight - this->view->height() >= 0.00001f))
|
||||||
|
this->view->setProperty("height", this->measuredHeight);
|
||||||
|
|
||||||
this->view->setProperty("x", this->measuredX);
|
this->view->setProperty("x", this->measuredX);
|
||||||
this->view->setProperty("y", this->measuredY);
|
this->view->setProperty("y", this->measuredY);
|
||||||
}
|
}
|
||||||
@ -492,19 +507,19 @@ void DoricLayouts::layoutStack() {
|
|||||||
int gravity = layout->alignment;
|
int gravity = layout->alignment;
|
||||||
if ((gravity & DoricGravity::DoricGravityLeft) ==
|
if ((gravity & DoricGravity::DoricGravityLeft) ==
|
||||||
DoricGravity::DoricGravityLeft) {
|
DoricGravity::DoricGravityLeft) {
|
||||||
layout->measuredX = this->paddingLeft;
|
layout->setMeasuredX(this->paddingLeft);
|
||||||
} else if ((gravity & DoricGravity::DoricGravityRight) ==
|
} else if ((gravity & DoricGravity::DoricGravityRight) ==
|
||||||
DoricGravity::DoricGravityRight) {
|
DoricGravity::DoricGravityRight) {
|
||||||
layout->measuredX =
|
layout->setMeasuredX(this->measuredWidth - this->paddingRight -
|
||||||
this->measuredWidth - this->paddingRight - layout->measuredWidth;
|
layout->measuredWidth);
|
||||||
} else if ((gravity & DoricGravity::DoricGravityCenterX) ==
|
} else if ((gravity & DoricGravity::DoricGravityCenterX) ==
|
||||||
DoricGravity::DoricGravityCenterX) {
|
DoricGravity::DoricGravityCenterX) {
|
||||||
layout->measuredX = this->measuredWidth / 2 - layout->measuredWidth / 2;
|
layout->setMeasuredX(this->measuredWidth / 2 - layout->measuredWidth / 2);
|
||||||
} else {
|
} else {
|
||||||
if (layout->marginLeft || layout->marginRight) {
|
if (layout->marginLeft || layout->marginRight) {
|
||||||
layout->measuredX = this->paddingLeft;
|
layout->setMeasuredX(this->paddingLeft);
|
||||||
} else {
|
} else {
|
||||||
layout->measuredX = 0;
|
layout->setMeasuredX(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -549,7 +564,7 @@ void DoricLayouts::layoutStack() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DoricLayouts::layoutVLayout() {
|
void DoricLayouts::layoutVLayout() {
|
||||||
int yStart = this->paddingTop;
|
qreal yStart = this->paddingTop;
|
||||||
if ((this->gravity & DoricGravity::DoricGravityTop) ==
|
if ((this->gravity & DoricGravity::DoricGravityTop) ==
|
||||||
DoricGravity::DoricGravityTop) {
|
DoricGravity::DoricGravityTop) {
|
||||||
yStart = this->paddingTop;
|
yStart = this->paddingTop;
|
||||||
@ -588,16 +603,16 @@ void DoricLayouts::layoutVLayout() {
|
|||||||
int gravity = layout->alignment | this->gravity;
|
int gravity = layout->alignment | this->gravity;
|
||||||
if ((gravity & DoricGravity::DoricGravityLeft) ==
|
if ((gravity & DoricGravity::DoricGravityLeft) ==
|
||||||
DoricGravity::DoricGravityLeft) {
|
DoricGravity::DoricGravityLeft) {
|
||||||
layout->measuredX = this->paddingLeft;
|
layout->setMeasuredX(this->paddingLeft);
|
||||||
} else if ((gravity & DoricGravity::DoricGravityRight) ==
|
} else if ((gravity & DoricGravity::DoricGravityRight) ==
|
||||||
DoricGravity::DoricGravityRight) {
|
DoricGravity::DoricGravityRight) {
|
||||||
layout->measuredX =
|
layout->setMeasuredX(this->measuredWidth - this->paddingRight -
|
||||||
this->measuredWidth - this->paddingRight - layout->measuredWidth;
|
layout->measuredWidth);
|
||||||
} else if ((gravity & DoricGravity::DoricGravityCenterX) ==
|
} else if ((gravity & DoricGravity::DoricGravityCenterX) ==
|
||||||
DoricGravity::DoricGravityCenterX) {
|
DoricGravity::DoricGravityCenterX) {
|
||||||
layout->measuredX = this->measuredWidth / 2 - layout->measuredWidth / 2;
|
layout->setMeasuredX(this->measuredWidth / 2 - layout->measuredWidth / 2);
|
||||||
} else {
|
} else {
|
||||||
layout->measuredX = this->paddingLeft;
|
layout->setMeasuredX(this->paddingLeft);
|
||||||
}
|
}
|
||||||
if (!gravity) {
|
if (!gravity) {
|
||||||
gravity = DoricGravity::DoricGravityLeft;
|
gravity = DoricGravity::DoricGravityLeft;
|
||||||
@ -616,7 +631,7 @@ void DoricLayouts::layoutVLayout() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DoricLayouts::layoutHLayout() {
|
void DoricLayouts::layoutHLayout() {
|
||||||
int xStart = this->paddingLeft;
|
qreal xStart = this->paddingLeft;
|
||||||
if ((this->gravity & DoricGravity::DoricGravityLeft) ==
|
if ((this->gravity & DoricGravity::DoricGravityLeft) ==
|
||||||
DoricGravity::DoricGravityLeft) {
|
DoricGravity::DoricGravityLeft) {
|
||||||
xStart = this->paddingLeft;
|
xStart = this->paddingLeft;
|
||||||
@ -680,26 +695,32 @@ void DoricLayouts::layoutHLayout() {
|
|||||||
DoricGravity::DoricGravityTop)) {
|
DoricGravity::DoricGravityTop)) {
|
||||||
layout->measuredY -= layout->marginBottom;
|
layout->measuredY -= layout->marginBottom;
|
||||||
}
|
}
|
||||||
layout->measuredX = xStart + layout->marginLeft;
|
layout->setMeasuredX(xStart + layout->marginLeft);
|
||||||
xStart += this->spacing + layout->takenWidth();
|
xStart += this->spacing + layout->takenWidth();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Private Section
|
// Private Section
|
||||||
void DoricLayouts::setMeasuredWidth(int measuredWidth) {
|
void DoricLayouts::setMeasuredWidth(qreal measuredWidth) {
|
||||||
this->measuredWidth = measuredWidth;
|
this->measuredWidth = measuredWidth;
|
||||||
qCritical() << "DoricLayouts: " << tag << this->view->property("uuid")
|
qCritical() << "DoricLayouts: " << tag << this->view->property("uuid")
|
||||||
<< " measuredWidth: " << this->measuredWidth;
|
<< " measuredWidth: " << this->measuredWidth;
|
||||||
if (this->measuredWidth > 1000 || this->measuredWidth < 0) {
|
|
||||||
qDebug() << "";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoricLayouts::setMeasuredHeight(int measuredHeight) {
|
void DoricLayouts::setMeasuredHeight(qreal measuredHeight) {
|
||||||
this->measuredHeight = measuredHeight;
|
this->measuredHeight = measuredHeight;
|
||||||
qCritical() << "DoricLayouts: " << tag << this->view->property("uuid")
|
qCritical() << "DoricLayouts: " << tag << this->view->property("uuid")
|
||||||
<< " measuredHeight: " << this->measuredHeight;
|
<< " measuredHeight: " << this->measuredHeight;
|
||||||
if (this->measuredHeight > 2000 || this->measuredHeight < 0) {
|
}
|
||||||
qDebug() << "";
|
|
||||||
}
|
void DoricLayouts::setMeasuredX(qreal measuredX) {
|
||||||
|
this->measuredX = measuredX;
|
||||||
|
qCritical() << "DoricLayouts: " << tag << this->view->property("uuid")
|
||||||
|
<< " measuredX: " << this->measuredX;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DoricLayouts::setMeasuredY(qreal measuredY) {
|
||||||
|
this->measuredY = measuredY;
|
||||||
|
qCritical() << "DoricLayouts: " << tag << this->view->property("uuid")
|
||||||
|
<< " measuredY: " << this->measuredY;
|
||||||
}
|
}
|
||||||
|
@ -52,20 +52,20 @@ public:
|
|||||||
|
|
||||||
void setGravity(int gravity);
|
void setGravity(int gravity);
|
||||||
|
|
||||||
void setWidth(int width);
|
void setWidth(qreal width);
|
||||||
void setHeight(int height);
|
void setHeight(qreal height);
|
||||||
|
|
||||||
void setSpacing(int spacing);
|
void setSpacing(qreal spacing);
|
||||||
|
|
||||||
void setMarginLeft(int marginLeft);
|
void setMarginLeft(qreal marginLeft);
|
||||||
void setMarginTop(int marginTop);
|
void setMarginTop(qreal marginTop);
|
||||||
void setMarginRight(int marginRight);
|
void setMarginRight(qreal marginRight);
|
||||||
void setMarginBottom(int marginBottom);
|
void setMarginBottom(qreal marginBottom);
|
||||||
|
|
||||||
void setPaddingLeft(int paddingLeft);
|
void setPaddingLeft(qreal paddingLeft);
|
||||||
void setPaddingTop(int paddingTop);
|
void setPaddingTop(qreal paddingTop);
|
||||||
void setPaddingRight(int paddingRight);
|
void setPaddingRight(qreal paddingRight);
|
||||||
void setPaddingBottom(int paddingBottom);
|
void setPaddingBottom(qreal paddingBottom);
|
||||||
|
|
||||||
void setWeight(int weight);
|
void setWeight(int weight);
|
||||||
|
|
||||||
@ -75,40 +75,15 @@ public:
|
|||||||
|
|
||||||
void setDisabled(bool disabled);
|
void setDisabled(bool disabled);
|
||||||
|
|
||||||
void setMaxWidth(int maxWidth);
|
void setMaxWidth(qreal maxWidth);
|
||||||
void setMaxHeight(int maxHeight);
|
void setMaxHeight(qreal maxHeight);
|
||||||
void setMinWidth(int minWidth);
|
void setMinWidth(qreal minWidth);
|
||||||
void setMinHeight(int minHeight);
|
void setMinHeight(qreal minHeight);
|
||||||
|
|
||||||
void apply(int targetWidth, int targetHeight);
|
void apply(qreal targetWidth, qreal targetHeight);
|
||||||
|
|
||||||
void apply();
|
void apply();
|
||||||
|
|
||||||
void measure(int targetWidth, int targetHeight);
|
|
||||||
|
|
||||||
void measureSelf(int targetWidth, int targetHeight);
|
|
||||||
|
|
||||||
void measureContent(int targetWidth, int targetHeight);
|
|
||||||
|
|
||||||
void measureUndefinedContent(int targetWidth, int targetHeight);
|
|
||||||
void measureStackContent(int targetWidth, int targetHeight);
|
|
||||||
void measureVLayoutContent(int targetWidth, int targetHeight);
|
|
||||||
void measureHLayoutContent(int targetWidth, int targetHeight);
|
|
||||||
|
|
||||||
int takenWidth();
|
|
||||||
int takenHeight();
|
|
||||||
QPair<int, int> removeMargin(int targetWidth, int targetHeight);
|
|
||||||
|
|
||||||
bool restrainSize();
|
|
||||||
|
|
||||||
void layout();
|
|
||||||
|
|
||||||
void layoutStack();
|
|
||||||
void layoutVLayout();
|
|
||||||
void layoutHLayout();
|
|
||||||
|
|
||||||
void setFrame();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString tag;
|
QString tag;
|
||||||
|
|
||||||
@ -119,20 +94,20 @@ private:
|
|||||||
|
|
||||||
int gravity;
|
int gravity;
|
||||||
|
|
||||||
int width;
|
qreal width;
|
||||||
int height;
|
qreal height;
|
||||||
|
|
||||||
int spacing;
|
qreal spacing;
|
||||||
|
|
||||||
int marginLeft;
|
qreal marginLeft;
|
||||||
int marginTop;
|
qreal marginTop;
|
||||||
int marginRight;
|
qreal marginRight;
|
||||||
int marginBottom;
|
qreal marginBottom;
|
||||||
|
|
||||||
int paddingLeft;
|
qreal paddingLeft;
|
||||||
int paddingTop;
|
qreal paddingTop;
|
||||||
int paddingRight;
|
qreal paddingRight;
|
||||||
int paddingBottom;
|
qreal paddingBottom;
|
||||||
|
|
||||||
int weight;
|
int weight;
|
||||||
|
|
||||||
@ -142,25 +117,52 @@ private:
|
|||||||
|
|
||||||
bool disabled;
|
bool disabled;
|
||||||
|
|
||||||
int maxWidth;
|
qreal maxWidth;
|
||||||
int maxHeight;
|
qreal maxHeight;
|
||||||
int minWidth;
|
qreal minWidth;
|
||||||
int minHeight;
|
qreal minHeight;
|
||||||
|
|
||||||
bool resolved;
|
bool resolved;
|
||||||
|
|
||||||
int measuredWidth;
|
qreal measuredWidth;
|
||||||
void setMeasuredWidth(int measuredWidth);
|
void setMeasuredWidth(qreal measuredWidth);
|
||||||
int measuredHeight;
|
qreal measuredHeight;
|
||||||
void setMeasuredHeight(int measuredHeight);
|
void setMeasuredHeight(qreal measuredHeight);
|
||||||
int measuredX;
|
qreal measuredX;
|
||||||
int measuredY;
|
void setMeasuredX(qreal measuredX);
|
||||||
|
qreal measuredY;
|
||||||
|
void setMeasuredY(qreal measuredY);
|
||||||
|
|
||||||
bool undefined;
|
bool undefined;
|
||||||
|
|
||||||
//
|
//
|
||||||
int contentWidth;
|
qreal contentWidth;
|
||||||
int contentHeight;
|
qreal contentHeight;
|
||||||
|
|
||||||
|
void measure(qreal targetWidth, qreal targetHeight);
|
||||||
|
|
||||||
|
void measureSelf(qreal targetWidth, qreal targetHeight);
|
||||||
|
|
||||||
|
void measureContent(qreal targetWidth, qreal targetHeight);
|
||||||
|
|
||||||
|
void measureUndefinedContent(qreal targetWidth, qreal targetHeight);
|
||||||
|
void measureStackContent(qreal targetWidth, qreal targetHeight);
|
||||||
|
void measureVLayoutContent(qreal targetWidth, qreal targetHeight);
|
||||||
|
void measureHLayoutContent(qreal targetWidth, qreal targetHeight);
|
||||||
|
|
||||||
|
qreal takenWidth();
|
||||||
|
qreal takenHeight();
|
||||||
|
QPair<qreal, qreal> removeMargin(qreal targetWidth, qreal targetHeight);
|
||||||
|
|
||||||
|
bool restrainSize();
|
||||||
|
|
||||||
|
void layout();
|
||||||
|
|
||||||
|
void layoutStack();
|
||||||
|
void layoutVLayout();
|
||||||
|
void layoutHLayout();
|
||||||
|
|
||||||
|
void setFrame();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DORICLAYOUTS_H
|
#endif // DORICLAYOUTS_H
|
||||||
|
Reference in New Issue
Block a user