File indexing completed on 2024-12-01 08:07:19

0001 /*
0002     SPDX-FileCopyrightText: 2021 Michail Vourlakos <mvourlakos@gmail.com>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "viewstable.h"
0007 
0008 #include <QDebug>
0009 
0010 namespace Latte {
0011 namespace Data {
0012 
0013 const char *TEMPIDPREFIX = "temp:";
0014 
0015 ViewsTable::ViewsTable()
0016     : GenericTable<View>()
0017 {
0018 }
0019 
0020 ViewsTable::ViewsTable(ViewsTable &&o)
0021     : GenericTable<View>(o),
0022       isInitialized(o.isInitialized)
0023 {
0024 
0025 }
0026 
0027 ViewsTable::ViewsTable(const ViewsTable &o)
0028     : GenericTable<View>(o),
0029       isInitialized(o.isInitialized)
0030 {
0031 }
0032 
0033 //! Operators
0034 ViewsTable &ViewsTable::operator=(const ViewsTable &rhs)
0035 {
0036     m_list = rhs.m_list;
0037     isInitialized = rhs.isInitialized;
0038     return (*this);
0039 }
0040 
0041 ViewsTable &ViewsTable::operator=(ViewsTable &&rhs)
0042 {
0043     m_list = rhs.m_list;
0044     isInitialized = rhs.isInitialized;
0045     return (*this);
0046 }
0047 
0048 bool ViewsTable::operator==(const ViewsTable &rhs) const
0049 {
0050     GenericTable<View> tempView = (*this);
0051 
0052     return (isInitialized == rhs.isInitialized)
0053             && (((GenericTable<View>)*this) == ((GenericTable<View>)rhs));
0054 }
0055 
0056 bool ViewsTable::operator!=(const ViewsTable &rhs) const
0057 {
0058     return !(*this == rhs);
0059 }
0060 
0061 bool ViewsTable::hasContainmentId(const QString &cid) const
0062 {
0063     if (containsId(cid)) {
0064         return true;
0065     }
0066 
0067     for(int i=0; i<rowCount(); ++i) {
0068         if (m_list[i].subcontainments.containsId(cid)) {
0069             return true;
0070         }
0071     }
0072 
0073     return false;
0074 }
0075 
0076 ViewsTable ViewsTable::subtracted(const ViewsTable &rhs) const
0077 {
0078     ViewsTable subtract;
0079 
0080     if ((*this) == rhs) {
0081         return subtract;
0082     }
0083 
0084     for(int i=0; i<m_list.count(); ++i) {
0085         if (!rhs.containsId(m_list[i].id)) {
0086             subtract << m_list[i];
0087         }
0088     }
0089 
0090     return subtract;
0091 }
0092 
0093 ViewsTable ViewsTable::onlyOriginals() const
0094 {
0095     ViewsTable originals;
0096 
0097     for(int i=0; i<m_list.count(); ++i) {
0098         if (m_list[i].isOriginal()) {
0099             originals << m_list[i];
0100         }
0101     }
0102 
0103     return originals;
0104 }
0105 
0106 void ViewsTable::appendTemporaryView(const Data::View &view)
0107 {
0108     int maxTempId = 0;
0109 
0110     for(int i=0; i<rowCount(); ++i) {
0111         if ((*this)[i].id.startsWith(TEMPIDPREFIX)) {
0112             QString tid = (*this)[i].id;
0113             tid.remove(0, QString(TEMPIDPREFIX).count());
0114             if (tid.toInt() > maxTempId) {
0115                 maxTempId = tid.toInt();
0116             }
0117         }
0118     }
0119 
0120     Data::View newview = view;
0121     newview.id =  QString(TEMPIDPREFIX + QString::number(maxTempId+1));
0122     m_list << newview;
0123 }
0124 
0125 void ViewsTable::print()
0126 {
0127     qDebug().noquote() << "Views initialized : " + (isInitialized ? QString("true") : QString("false"));
0128     qDebug().noquote() << "aa | id | active | primary | screen | edge | alignment | maxlength | subcontainments";
0129 
0130     for(int i=0; i<rowCount(); ++i) {
0131         qDebug().noquote() << QString::number(i+1) << " | " << m_list[i];
0132     }
0133 }
0134 
0135 }
0136 }