File indexing completed on 2024-06-16 08:17:11

0001 /*
0002     SPDX-FileCopyrightText: 2020 Michail Vourlakos <mvourlakos@gmail.com>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "layoutdata.h"
0007 
0008 // Qt
0009 #include <QDir>
0010 
0011 namespace Latte {
0012 namespace Data {
0013 
0014 Layout::Layout()
0015     : Generic()
0016 {
0017 }
0018 
0019 Layout::Layout(Layout &&o)
0020     : Generic(o),
0021       icon(o.icon),
0022       color(o.color),
0023       background(o.background),
0024       textColor(o.textColor),
0025       lastUsedActivity(o.lastUsedActivity),
0026       isActive(o.isActive),
0027       isConsideredActive(o.isConsideredActive),
0028       isLocked(o.isLocked),
0029       isShownInMenu(o.isShownInMenu),
0030       isTemplate(o.isTemplate),
0031       hasDisabledBorders(o.hasDisabledBorders),
0032       popUpMargin(o.popUpMargin),
0033       schemeFile(o.schemeFile),
0034       activities(o.activities),
0035       backgroundStyle(o.backgroundStyle),
0036       errors(o.errors),
0037       warnings(o.warnings),
0038       views(o.views)
0039 {
0040 }
0041 
0042 Layout::Layout(const Layout &o)
0043     : Generic(o),
0044       icon(o.icon),
0045       color(o.color),
0046       background(o.background),
0047       textColor(o.textColor),
0048       lastUsedActivity(o.lastUsedActivity),
0049       isActive(o.isActive),
0050       isConsideredActive(o.isConsideredActive),
0051       isLocked(o.isLocked),
0052       isShownInMenu(o.isShownInMenu),
0053       isTemplate(o.isTemplate),
0054       hasDisabledBorders(o.hasDisabledBorders),
0055       popUpMargin(o.popUpMargin),
0056       schemeFile(o.schemeFile),
0057       activities(o.activities),
0058       backgroundStyle(o.backgroundStyle),
0059       errors(o.errors),
0060       warnings(o.warnings),
0061       views(o.views)
0062 {
0063 }
0064 
0065 Layout &Layout::operator=(Layout &&rhs)
0066 {
0067     id = rhs.id;
0068     name = rhs.name;
0069     icon = rhs.icon;
0070     color = rhs.color;
0071     background = rhs.background;
0072     textColor = rhs.textColor;
0073     lastUsedActivity = rhs.lastUsedActivity;
0074     isActive = rhs.isActive;
0075     isConsideredActive = rhs.isConsideredActive;
0076     isLocked = rhs.isLocked;
0077     isShownInMenu = rhs.isShownInMenu;
0078     isTemplate = rhs.isTemplate;
0079     hasDisabledBorders = rhs.hasDisabledBorders;
0080     popUpMargin = rhs.popUpMargin;
0081     schemeFile = rhs.schemeFile;
0082     activities = rhs.activities;
0083     backgroundStyle = rhs.backgroundStyle;
0084     errors = rhs.errors;
0085     warnings = rhs.warnings;
0086     views = rhs.views;
0087 
0088     return (*this);
0089 }
0090 
0091 Layout &Layout::operator=(const Layout &rhs)
0092 {
0093     id = rhs.id;
0094     name = rhs.name;
0095     icon = rhs.icon;
0096     color = rhs.color;
0097     background = rhs.background;
0098     textColor = rhs.textColor;
0099     lastUsedActivity = rhs.lastUsedActivity;
0100     isActive = rhs.isActive;
0101     isConsideredActive = rhs.isConsideredActive;
0102     isLocked = rhs.isLocked;
0103     isShownInMenu = rhs.isShownInMenu;
0104     isTemplate = rhs.isTemplate;
0105     hasDisabledBorders = rhs.hasDisabledBorders;
0106     popUpMargin = rhs.popUpMargin;
0107     schemeFile = rhs.schemeFile;
0108     activities = rhs.activities;
0109     backgroundStyle = rhs.backgroundStyle;
0110     errors = rhs.errors;
0111     warnings = rhs.warnings;
0112     views = rhs.views;
0113 
0114     return (*this);
0115 }
0116 
0117 bool Layout::operator==(const Layout &rhs) const
0118 {
0119     return (id == rhs.id)
0120             && (name == rhs.name)
0121             && (icon == rhs.icon)
0122             && (color == rhs.color)
0123             && (background == rhs.background)
0124             && (textColor == rhs.textColor)
0125             //&& (lastUsedActivity == rhs.lastUsedActivity) /*Disabled because this is not needed in order to track layout changes for saving*/
0126             //&& (isActive == rhs.isActive) /*Disabled because this is not needed in order to track layout changes for saving*/
0127             //&& (isConsideredActive == rhs.isConsideredActive) /*Disabled because this is not needed in order to track layout changes for saving*/
0128             && (isLocked == rhs.isLocked)
0129             && (isShownInMenu == rhs.isShownInMenu)
0130             && (isTemplate == rhs.isTemplate)
0131             && (hasDisabledBorders == rhs.hasDisabledBorders)
0132             && (popUpMargin == rhs.popUpMargin)
0133             && (schemeFile == rhs.schemeFile)
0134             && (activities == rhs.activities)
0135             && (backgroundStyle == rhs.backgroundStyle)
0136             //&& (errors == rhs.errors) /*Disabled because this is not needed in order to track layout changes for saving*/
0137             //&& (warnings == rhs.warnings) /*Disabled because this is not needed in order to track layout changes for saving*/
0138             && (views == rhs.views);
0139 }
0140 
0141 bool Layout::operator!=(const Layout &rhs) const
0142 {
0143     return !(*this == rhs);
0144 }
0145 
0146 bool Layout::isOnAllActivities() const
0147 {
0148     return ((activities.count() == 1) && (activities[0] == ALLACTIVITIESID));
0149 }
0150 
0151 bool Layout::isForFreeActivities() const
0152 {
0153     return ((activities.count() == 1) && (activities[0] == FREEACTIVITIESID));
0154 }
0155 
0156 bool Layout::isTemporary() const
0157 {
0158     return id.startsWith("/tmp");
0159 }
0160 
0161 bool Layout::isEmpty() const
0162 {
0163     return isNull();
0164 }
0165 
0166 bool Layout::isNull() const
0167 {
0168     return (id.isEmpty() && name.isEmpty());
0169 }
0170 
0171 bool Layout::isSystemTemplate() const
0172 {
0173     return isTemplate && !id.startsWith(QDir::tempPath()) && !id.startsWith(QDir::homePath());
0174 }
0175 
0176 bool Layout::hasErrors() const
0177 {
0178     return errors > 0;
0179 }
0180 
0181 bool Layout::hasWarnings() const
0182 {
0183     return warnings > 0;
0184 }
0185 
0186 }
0187 }
0188