improvements for Layouts Editor

pull/11/head
Michail Vourlakos 5 years ago
parent 3b85867c56
commit 93a8ae3ff2

@ -303,6 +303,23 @@ void Layouts::toggleSharedForSelected()
}
}
QString Layouts::layoutNameForFreeActivities() const
{
return m_model->layoutNameForFreeActivities();
}
void Layouts::setLayoutNameForFreeActivities(const QString &name, bool updateOriginalData)
{
m_model->setLayoutNameForFreeActivities(name);
if(updateOriginalData) {
QString id = o_layoutsOriginalData.idForCurrentName(name);
o_layoutsOriginalData.setLayoutForFreeActivities(id);
}
emit dataChanged();
}
void Layouts::loadLayouts()
{
@ -393,7 +410,7 @@ void Layouts::loadLayouts()
//! Send original loaded data to model
m_model->setCurrentData(layoutsBuffer);
m_model->setLayoutForFreeActivities(m_corona->universalSettings()->lastNonAssignedLayoutName());
m_model->setLayoutNameForFreeActivities(m_corona->universalSettings()->lastNonAssignedLayoutName());
m_view->selectRow(rowForName(m_corona->layoutsManager()->currentLayoutName()));
@ -696,22 +713,11 @@ void Layouts::save()
}
}
QString layoutForFreeActivities;
if (m_corona->layoutsManager()->memoryUsage() == Types::MultipleLayouts) {
for (const auto &newLayoutName : activeLayoutsToRename.keys()) {
Latte::Layout::GenericLayout *layoutPtr = activeLayoutsToRename[newLayoutName];
qDebug() << " Active Layout of Type: " << layoutPtr->type() << " Is Renamed From : " << activeLayoutsToRename[newLayoutName]->name() << " TO :: " << newLayoutName;
layoutPtr->renameLayout(newLayoutName);
if (layoutPtr->type() == Latte::Layout::Type::Central) {
CentralLayout *central = qobject_cast<CentralLayout *>(layoutPtr);
if (central->activities().isEmpty()) {
//! that means it is an active layout for orphaned Activities
layoutForFreeActivities = newLayoutName;
}
}
}
}
@ -735,24 +741,28 @@ void Layouts::save()
//! reload layouts in layoutsmanager
m_corona->layoutsManager()->synchronizer()->loadLayouts();
//! send to layout manager in which layout to switch
/* Latte::Types::LayoutsMemoryUsage inMemoryOption = static_cast<Latte::Types::LayoutsMemoryUsage>(m_inMemoryButtons->checkedId());
if (!m_model->layoutNameForFreeActivities().isEmpty()) {
//! make sure that there is a layout for free activities
//! send to layout manager in which layout to switch
Latte::Types::LayoutsMemoryUsage inMemoryOption = Latte::Types::SingleLayout;
if (m_corona->layoutsManager()->memoryUsage() != inMemoryOption) {
Types::LayoutsMemoryUsage previousMemoryUsage = m_corona->layoutsManager()->memoryUsage();
m_corona->layoutsManager()->setMemoryUsage(inMemoryOption);
if (inMultipleMode()) {
inMemoryOption = Latte::Types::MultipleLayouts;
}
QVariant value = m_model->data(m_model->index(ui->layoutsView->currentIndex().row(), NAMECOLUMN), Qt::DisplayRole);
QString layoutName = value.toString();
if (m_corona->layoutsManager()->memoryUsage() != inMemoryOption) {
Types::LayoutsMemoryUsage previousMemoryUsage = m_corona->layoutsManager()->memoryUsage();
m_corona->layoutsManager()->setMemoryUsage(inMemoryOption);
m_corona->layoutsManager()->switchToLayout(layoutName, previousMemoryUsage);
} else {
if (!switchToLayout.isEmpty()) {
m_corona->layoutsManager()->switchToLayout(switchToLayout);
} else if (m_corona->layoutsManager()->memoryUsage() == Types::MultipleLayouts) {
m_corona->layoutsManager()->synchronizer()->syncMultipleLayoutsToActivities(orphanedLayout);
m_corona->layoutsManager()->switchToLayout(m_model->layoutNameForFreeActivities(), previousMemoryUsage);
} else {
if (m_corona->layoutsManager()->memoryUsage() == Types::MultipleLayouts) {
m_corona->layoutsManager()->synchronizer()->syncMultipleLayoutsToActivities(m_model->layoutNameForFreeActivities());
} else {
m_corona->layoutsManager()->switchToLayout(m_model->layoutNameForFreeActivities());
}
}
}*/
}
m_model->applyCurrentNames();

@ -70,6 +70,9 @@ public:
void toggleLockedForSelected();
void toggleSharedForSelected();
QString layoutNameForFreeActivities() const;
void setLayoutNameForFreeActivities(const QString &name, bool updateOriginalData = false);
void addLayoutForFile(QString file, QString layoutName = QString(), bool newTempDirectory = true, bool showNotification = true);
void copySelectedLayout();
//! import layouts from Latte versions <= v0.7.x

@ -285,6 +285,20 @@ void LayoutsTable::remove(const int &row)
}
}
void LayoutsTable::setLayoutForFreeActivities(const QString &id)
{
int row = indexOf(id);
if (row>=0) {
for(int i=0; i<rowCount(); ++i) {
if (i == row) {
m_layouts[row].activities = QStringList(Data::Layout::FREEACTIVITIESID);
} else if (m_layouts[i].activities.contains(Data::Layout::FREEACTIVITIESID)) {
m_layouts[i].activities.removeAll(Data::Layout::FREEACTIVITIESID);
}
}
}
}
}
}

@ -70,7 +70,7 @@ public:
void clear();
void remove(const int &row);
void removeLayout(const QString &id);
void setLayoutForFreeActivities(const QString &id);
protected:
//! #id, layout_record

@ -51,6 +51,9 @@ Layouts::Layouts(QObject *parent, Latte::Corona *corona)
emit dataChanged(index(0, MENUCOLUMN), index(rowCount(), SHAREDCOLUMN), roles);
});
connect(m_corona->layoutsManager(), &Latte::Layouts::Manager::currentLayoutNameChanged, this, &Layouts::updateActiveStates);
connect(m_corona->layoutsManager(), &Latte::Layouts::Manager::centralLayoutsChanged, this, &Layouts::updateActiveStates);
}
bool Layouts::containsCurrentName(const QString &name) const
@ -161,18 +164,28 @@ bool Layouts::removeRows(int row, int count, const QModelIndex &parent)
return false;
}
void Layouts::setLayoutForFreeActivities(const QString &name)
QString Layouts::layoutNameForFreeActivities() const
{
for(int i=0; i<rowCount(); ++i) {
if (m_layoutsTable[i].activities.contains(Data::Layout::FREEACTIVITIESID)) {
return m_layoutsTable[i].currentName();
}
}
return QString();
}
void Layouts::setLayoutNameForFreeActivities(const QString &name)
{
QString id = m_layoutsTable.idForCurrentName(name);
int row = m_layoutsTable.indexOf(id);
if (row>=0 && m_layoutsTable[row].activities.isEmpty()) {
m_layoutsTable[row].activities << Data::Layout::FREEACTIVITIESID;
if (!id.isEmpty()) {
m_layoutsTable.setLayoutForFreeActivities(id);
QVector<int> roles;
roles << Qt::DisplayRole;
roles << Qt::UserRole;
emit dataChanged(index(row, ACTIVITYCOLUMN), index(row, ACTIVITYCOLUMN), roles);
emit dataChanged(index(0, ACTIVITYCOLUMN), index(rowCount()-1, ACTIVITYCOLUMN), roles);
}
}
@ -530,6 +543,28 @@ bool Layouts::setData(const QModelIndex &index, const QVariant &value, int role)
return false;
}
void Layouts::updateActiveStates()
{
QVector<int> roles;
roles << Qt::DisplayRole;
roles << Qt::UserRole;
roles << LAYOUTISACTIVEROLE;
for(int i=0; i<rowCount(); ++i) {
bool iActive{false};
if (m_corona->layoutsManager()->synchronizer()->layout(m_layoutsTable[i].currentName())) {
iActive = true;
}
if (m_layoutsTable[i].isActive != iActive) {
m_layoutsTable[i].isActive = iActive;
emit dataChanged(index(i, BACKGROUNDCOLUMN), index(i,SHAREDCOLUMN), roles);
}
}
}
const Data::Layout &Layouts::at(const int &row)
{
return m_layoutsTable[row];

@ -90,8 +90,11 @@ public:
void clear();
void applyCurrentNames();
void appendLayout(const Settings::Data::Layout &layout);
void removeLayout(const QString &id);
void setLayoutForFreeActivities(const QString &name);
void removeLayout(const QString &id);
QString layoutNameForFreeActivities() const;
void setLayoutNameForFreeActivities(const QString &name);
const Data::LayoutsTable &currentData();
void setCurrentData(Data::LayoutsTable &data);
@ -99,6 +102,9 @@ public:
signals:
void inMultipleModeChanged();
private slots:
void updateActiveStates();
private:
void setActivities(const int &row, const QStringList &activities);
void setId(const int &row, const QString &newId);

@ -79,9 +79,6 @@ SettingsDialog::SettingsDialog(QWidget *parent, Latte::Corona *corona)
m_layoutsController = new Settings::Controller::Layouts(this, m_corona, ui->layoutsView);
m_model = m_layoutsController->model();
//connect(m_corona->layoutsManager(), &Layouts::Manager::currentLayoutNameChanged, this, &SettingsDialog::layoutsChanged);
//connect(m_corona->layoutsManager(), &Layouts::Manager::centralLayoutsChanged, this, &SettingsDialog::layoutsChanged);
m_inMemoryButtons = new QButtonGroup(this);
m_inMemoryButtons->addButton(ui->singleToolBtn, Latte::Types::SingleLayout);
m_inMemoryButtons->addButton(ui->multipleToolBtn, Latte::Types::MultipleLayouts);
@ -662,7 +659,8 @@ void SettingsDialog::on_switchButton_clicked()
}
} else {
if (!m_layoutsController->selectedLayoutIsCurrentActive()) {
m_corona->layoutsManager()->switchToLayout(selectedLayout.originalName());
m_layoutsController->setLayoutNameForFreeActivities(selectedLayout.currentName(), true);
m_corona->layoutsManager()->switchToLayout(selectedLayout.originalName());
}
}

Loading…
Cancel
Save