refactor:drop LAYOUTSMANAGER apis moved to SYNCHER

pull/5/head
Michail Vourlakos 6 years ago
parent a6b8fbcaff
commit a661fbb032

@ -30,6 +30,7 @@
#include "layout/sharedlayout.h"
#include "layouts/importer.h"
#include "layouts/manager.h"
#include "layouts/synchronizer.h"
#include "layouts/launcherssignals.h"
#include "shortcuts/globalshortcuts.h"
#include "package/lattepackage.h"
@ -148,7 +149,7 @@ Corona::Corona(bool defaultLayoutOnStartup, QString layoutNameOnStartUp, int use
Corona::~Corona()
{
//! BEGIN: Give the time to slide-out views when closing
m_layoutsManager->hideAllViews();
m_layoutsManager->synchronizer()->hideAllViews();
//! Don't delay the destruction under wayland in any case
//! because it creates a crash with kwin effects
@ -208,7 +209,7 @@ void Corona::load()
connect(m_screenPool, &ScreenPool::primaryPoolChanged, this, &Corona::screenCountChanged);
QString assignedLayout = m_layoutsManager->shouldSwitchToLayout(m_activityConsumer->currentActivity());
QString assignedLayout = m_layoutsManager->synchronizer()->shouldSwitchToLayout(m_activityConsumer->currentActivity());
QString loadLayoutName = "";
@ -219,7 +220,7 @@ void Corona::load()
loadLayoutName = m_universalSettings->currentLayoutName();
}
if (!m_layoutsManager->layoutExists(loadLayoutName)) {
if (!m_layoutsManager->synchronizer()->layoutExists(loadLayoutName)) {
loadLayoutName = m_layoutsManager->defaultLayoutName();
m_layoutsManager->importDefaultLayout(false);
}
@ -480,12 +481,12 @@ QRegion Corona::availableScreenRegionWithCriteria(int id, QString forLayout) con
Latte::CentralLayout *currentLayout = m_layoutsManager->currentLayout();
views = currentLayout->latteViews();
} else {
Layout::GenericLayout *generic = m_layoutsManager->centralLayout(forLayout);
Layout::GenericLayout *generic = m_layoutsManager->synchronizer()->centralLayout(forLayout);
if (!generic) {
//! Identify best active layout to be used for metrics calculations.
//! Active layouts are always take into account their shared layouts for their metrics
SharedLayout *sharedLayout = m_layoutsManager->sharedLayout(forLayout);
SharedLayout *sharedLayout = m_layoutsManager->synchronizer()->sharedLayout(forLayout);
if (sharedLayout) {
generic = sharedLayout->currentCentralLayout();
@ -707,7 +708,7 @@ void Corona::screenCountChanged()
//! concerning screen changed (for multi-screen setups mainly)
void Corona::syncLatteViewsToScreens()
{
m_layoutsManager->syncLatteViewsToScreens();
m_layoutsManager->synchronizer()->syncLatteViewsToScreens();
}
int Corona::primaryScreenId() const
@ -721,7 +722,7 @@ void Corona::closeApplication()
//! also from qml (Settings window).
QTimer::singleShot(5, [this]() {
m_layoutsManager->hideLatteSettingsDialog();
m_layoutsManager->hideAllViews();
m_layoutsManager->synchronizer()->hideAllViews();
});
//! give the time for the views to hide themselves
@ -891,7 +892,7 @@ void Corona::addViewForLayout(QString layoutName)
QList<Types::Location> edges{Types::BottomEdge, Types::LeftEdge,
Types::TopEdge, Types::RightEdge};
Layout::GenericLayout *currentLayout = m_layoutsManager->layout(layoutName);
Layout::GenericLayout *currentLayout = m_layoutsManager->synchronizer()->layout(layoutName);
if (currentLayout) {
edges = currentLayout->freeEdges(defaultContainment->screen());
@ -1018,7 +1019,7 @@ QStringList Corona::contextMenuData()
data << QString::number((int)viewType);
for(const auto &layoutName : m_layoutsManager->menuLayouts()) {
if (m_layoutsManager->centralLayout(layoutName)) {
if (m_layoutsManager->synchronizer()->centralLayout(layoutName)) {
data << QString("1," + layoutName);
} else {
data << QString("0," + layoutName);

@ -26,6 +26,7 @@
#include "../screenpool.h"
#include "../layouts/importer.h"
#include "../layouts/manager.h"
#include "../layouts/synchronizer.h"
#include "../settings/universalsettings.h"
#include "../view/view.h"
#include "../../liblatte2/types.h"
@ -98,8 +99,8 @@ void CentralLayout::initToCorona(Latte::Corona *corona)
//! Request the SharedLayout in case there is one and Latte is functioning in MultipleLayouts mode
if (m_corona->layoutsManager()->memoryUsage() == Types::MultipleLayouts && !m_sharedLayoutName.isEmpty()) {
if (m_corona->layoutsManager()->registerAtSharedLayout(this, m_sharedLayoutName)) {
setSharedLayout(m_corona->layoutsManager()->sharedLayout(m_sharedLayoutName));
if (m_corona->layoutsManager()->synchronizer()->registerAtSharedLayout(this, m_sharedLayoutName)) {
setSharedLayout(m_corona->layoutsManager()->synchronizer()->sharedLayout(m_sharedLayoutName));
}
}
}
@ -299,7 +300,7 @@ const QStringList CentralLayout::appliedActivities()
return {"0"};
} else if (m_corona->layoutsManager()->memoryUsage() == Types::MultipleLayouts) {
if (m_activities.isEmpty()) {
return m_corona->layoutsManager()->orphanedActivities();
return m_corona->layoutsManager()->synchronizer()->orphanedActivities();
} else {
return m_activities;
}

@ -26,6 +26,7 @@
#include "../screenpool.h"
#include "../layouts/importer.h"
#include "../layouts/manager.h"
#include "../layouts/synchronizer.h"
#include "../shortcuts/shortcutstracker.h"
#include "../view/view.h"
#include "../view/positioner.h"
@ -144,7 +145,7 @@ bool GenericLayout::isActive() const
return false;
}
GenericLayout *generic = m_corona->layoutsManager()->layout(m_layoutName);
GenericLayout *generic = m_corona->layoutsManager()->synchronizer()->layout(m_layoutName);
if (generic) {
return true;
@ -806,7 +807,7 @@ void GenericLayout::updateLastUsedActivity()
return;
}
if (!m_lastUsedActivity.isEmpty() && !m_corona->layoutsManager()->activities().contains(m_lastUsedActivity)) {
if (!m_lastUsedActivity.isEmpty() && !m_corona->layoutsManager()->synchronizer()->activities().contains(m_lastUsedActivity)) {
clearLastUsedActivity();
}

@ -24,6 +24,7 @@
#include "../lattecorona.h"
#include "../layout/centrallayout.h"
#include "../layouts/manager.h"
#include "../layouts/synchronizer.h"
// Qt
#include <QQuickItem>
@ -49,7 +50,7 @@ QList<Plasma::Applet *> LaunchersSignals::lattePlasmoids(QString layoutName)
{
QList<Plasma::Applet *> applets;
CentralLayout *layout = m_manager->centralLayout(layoutName);
CentralLayout *layout = m_manager->synchronizer()->centralLayout(layoutName);
QList<Plasma::Containment *> containments;
if (layoutName.isEmpty()) {

@ -29,18 +29,13 @@
#include "../screenpool.h"
#include "../layout/abstractlayout.h"
#include "../layout/centrallayout.h"
#include "../layout/genericlayout.h"
#include "../layout/sharedlayout.h"
#include "../settings/settingsdialog.h"
#include "../settings/universalsettings.h"
#include "../view/view.h"
// Qt
#include <QDir>
#include <QFile>
#include <QMessageBox>
#include <QQmlProperty>
#include <QtDBus>
// KDE
#include <KLocalizedString>
@ -178,11 +173,6 @@ QString Manager::defaultLayoutName() const
return presetName;
}
bool Manager::layoutExists(QString layoutName) const
{
return m_synchronizer->layoutExists(layoutName);
}
QStringList Manager::layouts() const
{
return m_synchronizer->layouts();
@ -198,21 +188,6 @@ void Manager::setMenuLayouts(QStringList layouts)
m_synchronizer->setMenuLayouts(layouts);
}
QStringList Manager::activities()
{
return m_synchronizer->activities();
}
QStringList Manager::runningActivities()
{
return m_synchronizer->runningActivities();
}
QStringList Manager::orphanedActivities()
{
return m_synchronizer->orphanedActivities();
}
QStringList Manager::presetsPaths() const
{
return m_presetsPaths;
@ -233,11 +208,6 @@ void Manager::setMemoryUsage(Types::LayoutsMemoryUsage memoryUsage)
m_corona->universalSettings()->setLayoutsMemoryUsage(memoryUsage);
}
bool Manager::latteViewExists(Latte::View *view) const
{
return m_synchronizer->latteViewExists(view);
}
QStringList Manager::centralLayoutsNames()
{
return m_synchronizer->centralLayoutsNames();
@ -253,32 +223,6 @@ QStringList Manager::storedSharedLayouts() const
return m_synchronizer->storedSharedLayouts();
}
Layout::GenericLayout *Manager::layout(QString id) const
{
return m_synchronizer->layout(id);
}
CentralLayout *Manager::centralLayout(QString id) const
{
return m_synchronizer->centralLayout(id);
}
int Manager::centralLayoutPos(QString id) const
{
return m_synchronizer->centralLayoutPos(id);
}
SharedLayout *Manager::sharedLayout(QString id) const
{
return m_synchronizer->sharedLayout(id);
}
bool Manager::registerAtSharedLayout(CentralLayout *central, QString id)
{
return m_synchronizer->registerAtSharedLayout(central, id);
}
CentralLayout *Manager::currentLayout() const
{
return m_synchronizer->currentLayout();
@ -289,11 +233,6 @@ bool Manager::switchToLayout(QString layoutName, int previousMemoryUsage)
return m_synchronizer->switchToLayout(layoutName, previousMemoryUsage);
}
QString Manager::shouldSwitchToLayout(QString activityId)
{
return m_synchronizer->shouldSwitchToLayout(activityId);
}
void Manager::loadLayoutOnStartup(QString layoutName)
{
QStringList layouts = m_importer->checkRepairMultipleLayoutsLinkedFile();
@ -377,21 +316,6 @@ void Manager::showAboutDialog()
m_corona->aboutApplication();
}
void Manager::hideAllViews()
{
m_synchronizer->hideAllViews();
}
void Manager::pauseLayout(QString layoutName)
{
m_synchronizer->pauseLayout(layoutName);
}
void Manager::syncActiveLayoutsToOriginalFiles()
{
m_synchronizer->syncActiveLayoutsToOriginalFiles();
}
void Manager::clearUnloadedContainmentsFromLinkedFile(QStringList containmentsIds, bool bypassChecks)
{
if (!m_corona || (memoryUsage() == Types::SingleLayout && !bypassChecks)) {
@ -409,12 +333,6 @@ void Manager::clearUnloadedContainmentsFromLinkedFile(QStringList containmentsId
containments.sync();
}
void Manager::syncLatteViewsToScreens()
{
m_synchronizer->syncLatteViewsToScreens();
}
QString Manager::newLayout(QString layoutName, QString preset)
{
QDir layoutDir(QDir::homePath() + "/.config/latte");

@ -42,11 +42,6 @@ class Types;
namespace Latte {
class Corona;
class CentralLayout;
class SharedLayout;
class View;
namespace Layout {
class GenericLayout;
}
namespace Layouts {
class Importer;
class LaunchersSignals;
@ -57,8 +52,19 @@ class Synchronizer;
namespace Latte {
namespace Layouts {
//! This class is responsible to manipulate all layouts.
//! add,remove,rename, update configurations etc.
//! Layouts::Manager is a very IMPORTANT class which is responsible to
//! to provide the qml accessible Layouts manipulation API and at the
//! same time to interact with Latte::Corona in order
//! to update correctly the underlying Layouts files by using also
//! its Importer object
//!
//! This class is responsible both for ACTIVE/PASSIVE Layouts.
//!
//! ACTIVE Layout is consider one layout that is loaded and active in memory
//! PASSIVE Layouts is consider one layout that is not loaded/active in memory
//! and its properties are just stored in the filesystem
//!
class Manager : public QObject
{
Q_OBJECT
@ -82,16 +88,6 @@ public:
void showInfoWindow(QString info, int duration, QStringList activities = {"0"});
void unload();
void hideAllViews();
void pauseLayout(QString layoutName);
void syncLatteViewsToScreens();
void syncActiveLayoutsToOriginalFiles();
bool latteViewExists(Latte::View *view) const;
bool layoutExists(QString layoutName) const;
QString shouldSwitchToLayout(QString activityId);
QString currentLayoutName() const;
QString defaultLayoutName() const;
@ -103,29 +99,14 @@ public:
Types::LayoutsMemoryUsage memoryUsage() const;
void setMemoryUsage(Types::LayoutsMemoryUsage memoryUsage);
//! returns an central layout with that #id (name), it returns null if such
//! layout cant be found
CentralLayout *centralLayout(QString id) const;
int centralLayoutPos(QString id) const;
SharedLayout *sharedLayout(QString id) const;
//! return an central or shared layout with #id (name), it returns null if such
//! loaded layout was not found
Layout::GenericLayout *layout(QString id) const;
//! returns the current and central layout based on activities and user preferences
CentralLayout *currentLayout() const;
LaunchersSignals *launchersSignals() const;
Synchronizer *synchronizer() const;
QStringList activities();
QStringList runningActivities();
QStringList orphanedActivities(); //! These are activities that haven't been assigned to specific layout
void importDefaultLayout(bool newInstanceIfPresent = false);
void importPresets(bool includeDefault = false);
bool registerAtSharedLayout(CentralLayout *central, QString id);
public slots:
void showAboutDialog();

@ -49,6 +49,16 @@ namespace Layouts {
//! SHARED LAYOUT NAME -> CENTRAL LAYOUT NAMES acting as SHARES
typedef QHash<const QString, QStringList> SharesMap;
//! Layouts::Synchronizer is a very IMPORTANT class which is responsible
//! for all ACTIVE layouts, meaning layouts that have been loaded
//! in memory.
//!
//! The main task of Synchronizer is to load/unload layouts based
//! on "user preferences"/"activities settings"/"application current
//! phase" (e.g. startup/closing)
//!
class Synchronizer : public QObject {
Q_OBJECT

@ -296,7 +296,7 @@ void SettingsDialog::blockDeleteOnActivityStopped()
QStringList SettingsDialog::activities()
{
return m_corona->layoutsManager()->activities();
return m_corona->layoutsManager()->synchronizer()->activities();
}
QStringList SettingsDialog::availableActivities()
@ -371,7 +371,7 @@ void SettingsDialog::on_copyButton_clicked()
if (m_corona->layoutsManager()->memoryUsage() == Types::MultipleLayouts) {
QString lName = (m_model->data(m_model->index(row, NAMECOLUMN), Qt::DisplayRole)).toString();
Layout::GenericLayout *generic = m_corona->layoutsManager()->layout(lName);
Layout::GenericLayout *generic = m_corona->layoutsManager()->synchronizer()->layout(lName);
if (generic) {
generic->syncToLayoutFile();
}
@ -446,7 +446,7 @@ void SettingsDialog::on_removeButton_clicked()
QString layoutName = m_model->data(m_model->index(row, NAMECOLUMN), Qt::DisplayRole).toString();
if (m_corona->layoutsManager()->centralLayout(layoutName)) {
if (m_corona->layoutsManager()->synchronizer()->centralLayout(layoutName)) {
return;
}
@ -497,7 +497,7 @@ void SettingsDialog::on_sharedButton_clicked()
for (const auto &id : availableShares) {
QString name = nameForId(id);
if (m_corona->layoutsManager()->layout(name)) {
if (m_corona->layoutsManager()->synchronizer()->layout(name)) {
assignedList << id;
m_model->setData(m_model->index(row, SHAREDCOLUMN), assignedList, Qt::UserRole);
assigned = true;
@ -657,7 +657,7 @@ void SettingsDialog::on_exportButton_clicked()
//! this is needed because the export method can export also the full configuration
qDebug() << Q_FUNC_INFO;
m_corona->layoutsManager()->syncActiveLayoutsToOriginalFiles();
m_corona->layoutsManager()->synchronizer()->syncActiveLayoutsToOriginalFiles();
QFileDialog *fileDialog = new QFileDialog(this, i18nc("export layout/configuration", "Export Layout/Configuration")
, QDir::homePath(), QStringLiteral("layout.latte"));
@ -912,7 +912,7 @@ void SettingsDialog::loadSettings()
QStringList brokenLayouts;
if (m_corona->layoutsManager()->memoryUsage() == Types::MultipleLayouts) {
m_corona->layoutsManager()->syncActiveLayoutsToOriginalFiles();
m_corona->layoutsManager()->synchronizer()->syncActiveLayoutsToOriginalFiles();
}
for (const auto layout : m_corona->layoutsManager()->layouts()) {
@ -949,7 +949,7 @@ void SettingsDialog::loadSettings()
ui->layoutsView->selectRow(i - 1);
}
Layout::GenericLayout *generic = m_corona->layoutsManager()->layout(central->name());
Layout::GenericLayout *generic = m_corona->layoutsManager()->synchronizer()->layout(central->name());
if ((generic && generic->layoutIsBroken()) || (!generic && central->layoutIsBroken())) {
brokenLayouts.append(central->name());
@ -1161,7 +1161,7 @@ void SettingsDialog::insertLayoutInfoAtRow(int row, QString path, QString color,
QFont font;
if (m_corona->layoutsManager()->layout(name)) {
if (m_corona->layoutsManager()->synchronizer()->layout(name)) {
font.setBold(true);
} else {
font.setBold(false);
@ -1222,7 +1222,7 @@ void SettingsDialog::on_pauseButton_clicked()
CentralLayout *layout = m_layouts[id];
if (layout) {
m_corona->layoutsManager()->pauseLayout(layout->name());
m_corona->layoutsManager()->synchronizer()->pauseLayout(layout->name());
}
}
@ -1240,7 +1240,7 @@ void SettingsDialog::layoutsChanged()
font.setBold(true);
// ui->layoutsView->selectRow(i);
} else {
Layout::GenericLayout *layout = m_corona->layoutsManager()->layout(name);
Layout::GenericLayout *layout = m_corona->layoutsManager()->synchronizer()->layout(name);
if (layout && (m_corona->layoutsManager()->memoryUsage() == Types::MultipleLayouts)) {
font.setBold(true);
@ -1268,7 +1268,7 @@ void SettingsDialog::itemChanged(QStandardItem *item)
QString name = m_model->data(m_model->index(currentRow, NAMECOLUMN), Qt::DisplayRole).toString();
QFont font = qvariant_cast<QFont>(m_model->data(m_model->index(currentRow, NAMECOLUMN), Qt::FontRole));
if (m_corona->layoutsManager()->layout(m_layouts[id]->name())) {
if (m_corona->layoutsManager()->synchronizer()->layout(m_layouts[id]->name())) {
font.setBold(true);
} else {
font.setBold(false);
@ -1375,7 +1375,7 @@ void SettingsDialog::updatePerLayoutButtonsState()
Latte::CentralLayout *layout = m_layouts[id];
if (!lActivities.isEmpty() && layout && m_corona->layoutsManager()->centralLayout(layout->name())) {
if (!lActivities.isEmpty() && layout && m_corona->layoutsManager()->synchronizer()->centralLayout(layout->name())) {
ui->pauseButton->setEnabled(true);
} else {
ui->pauseButton->setEnabled(false);
@ -1385,7 +1385,7 @@ void SettingsDialog::updatePerLayoutButtonsState()
//! Remove Layout Button
if (originalName != nameInModel
|| (originalName == m_corona->layoutsManager()->currentLayoutName())
|| (m_corona->layoutsManager()->centralLayout(originalName))
|| (m_corona->layoutsManager()->synchronizer()->centralLayout(originalName))
|| lockedInModel) {
ui->removeButton->setEnabled(false);
} else {
@ -1460,7 +1460,7 @@ void SettingsDialog::updateSharedLayoutsUiElements()
void SettingsDialog::recalculateAvailableActivities()
{
QStringList tempActivities = m_corona->layoutsManager()->activities();
QStringList tempActivities = m_corona->layoutsManager()->synchronizer()->activities();
for (int i = 0; i < m_model->rowCount(); ++i) {
QStringList assigned = m_model->data(m_model->index(i, ACTIVITYCOLUMN), Qt::UserRole).toStringList();
@ -1583,7 +1583,7 @@ bool SettingsDialog::saveAllChanges()
//qDebug() << i << ". " << id << " - " << color << " - " << name << " - " << menu << " - " << lActivities;
//! update the generic parts of the layouts
Layout::GenericLayout *genericActive= m_corona->layoutsManager()->layout(m_layouts[id]->name());
Layout::GenericLayout *genericActive= m_corona->layoutsManager()->synchronizer()->layout(m_layouts[id]->name());
Layout::GenericLayout *generic = genericActive ? genericActive : m_layouts[id];
//! unlock read-only layout
@ -1609,7 +1609,7 @@ bool SettingsDialog::saveAllChanges()
}
//! update only the Central-specific layout parts
CentralLayout *centralActive= m_corona->layoutsManager()->centralLayout(m_layouts[id]->name());
CentralLayout *centralActive= m_corona->layoutsManager()->synchronizer()->centralLayout(m_layouts[id]->name());
CentralLayout *central = centralActive ? centralActive : m_layouts[id];
if (central->showInMenu() != menu) {
@ -1708,7 +1708,7 @@ bool SettingsDialog::saveAllChanges()
QString name = m_model->data(m_model->index(i, NAMECOLUMN), Qt::DisplayRole).toString();
bool locked = m_model->data(m_model->index(i, NAMECOLUMN), Qt::UserRole).toBool();
Layout::GenericLayout *generic = m_corona->layoutsManager()->layout(m_layouts[id]->name());
Layout::GenericLayout *generic = m_corona->layoutsManager()->synchronizer()->layout(m_layouts[id]->name());
Layout::GenericLayout *layout = generic ? generic : m_layouts[id];
if (layout && locked && layout->isWritable()) {
@ -1851,7 +1851,7 @@ bool SettingsDialog::inMultipleLayoutsLook() const
bool SettingsDialog::isActive(QString layoutName) const
{
return (m_corona->layoutsManager()->layout(layoutName) != nullptr);
return (m_corona->layoutsManager()->synchronizer()->layout(layoutName) != nullptr);
}
bool SettingsDialog::isMenuCell(int column) const

@ -26,6 +26,7 @@
#include "../lattecorona.h"
#include "../layout/centrallayout.h"
#include "../layouts/manager.h"
#include "../layouts/synchronizer.h"
#include "../settings/universalsettings.h"
#include "../view/view.h"
@ -710,7 +711,7 @@ void GlobalShortcuts::showViews()
bool GlobalShortcuts::viewsToHideAreValid()
{
for(const auto view : m_hideViews) {
if (!m_corona->layoutsManager()->latteViewExists(view)) {
if (!m_corona->layoutsManager()->synchronizer()->latteViewExists(view)) {
return false;
}

@ -901,7 +901,7 @@ void View::moveToLayout(QString layoutName)
Latte::Corona *latteCorona = qobject_cast<Latte::Corona *>(this->corona());
if (latteCorona && containments.size() > 0) {
Layout::GenericLayout *newLayout = latteCorona->layoutsManager()->layout(layoutName);
Layout::GenericLayout *newLayout = latteCorona->layoutsManager()->synchronizer()->layout(layoutName);
if (newLayout) {
newLayout->assignToLayout(this, containments);

Loading…
Cancel
Save