fix switch button for single layout mode

pull/20/head
Michail Vourlakos 5 years ago
parent 9428027aff
commit 5101a1314e

@ -158,6 +158,21 @@ bool Layouts::dataAreChanged() const
return m_model->dataAreChanged(); return m_model->dataAreChanged();
} }
bool Layouts::layoutsAreChanged() const
{
return m_model->layoutsAreChanged();
}
bool Layouts::modeIsChanged() const
{
return m_model-modeIsChanged();
}
void Layouts::setOriginalInMultipleMode(const bool &inmultiple)
{
m_model->setOriginalInMultipleMode(inmultiple);
}
bool Layouts::hasSelectedLayout() const bool Layouts::hasSelectedLayout() const
{ {
int selectedRow = m_view->currentIndex().row(); int selectedRow = m_view->currentIndex().row();
@ -382,7 +397,8 @@ void Layouts::initLayouts()
} }
//! Send original loaded data to model //! Send original loaded data to model
m_model->setOriginalData(layouts, inMultiple); m_model->setOriginalInMultipleMode(inMultiple);
m_model->setOriginalData(layouts);
QStringList currentLayoutNames = m_handler->corona()->layoutsManager()->currentLayoutsNames(); QStringList currentLayoutNames = m_handler->corona()->layoutsManager()->currentLayoutsNames();
if (currentLayoutNames.count() > 0) { if (currentLayoutNames.count() > 0) {

@ -65,6 +65,8 @@ public:
QTableView *view() const; QTableView *view() const;
bool dataAreChanged() const; bool dataAreChanged() const;
bool layoutsAreChanged() const;
bool modeIsChanged() const;
bool inMultipleMode() const; bool inMultipleMode() const;
void setInMultipleMode(bool inMultiple); void setInMultipleMode(bool inMultiple);
@ -89,6 +91,8 @@ public:
QString layoutNameForFreeActivities() const; QString layoutNameForFreeActivities() const;
void setOriginalLayoutForFreeActivities(const QString &id); void setOriginalLayoutForFreeActivities(const QString &id);
void setOriginalInMultipleMode(const bool &inmultiple);
void copySelectedLayout(); void copySelectedLayout();
const Latte::Data::Layout addLayoutForFile(QString file, QString layoutName = QString(), bool newTempDirectory = true); const Latte::Data::Layout addLayoutForFile(QString file, QString layoutName = QString(), bool newTempDirectory = true);
const Latte::Data::Layout addLayoutByText(QString rawLayoutText); const Latte::Data::Layout addLayoutByText(QString rawLayoutText);

@ -309,16 +309,20 @@ void TabLayouts::switchLayout()
Latte::Data::Layout selectedLayoutOriginal = m_layoutsController->selectedLayoutOriginalData(); Latte::Data::Layout selectedLayoutOriginal = m_layoutsController->selectedLayoutOriginalData();
selectedLayoutOriginal = selectedLayoutOriginal.isEmpty() ? selectedLayoutCurrent : selectedLayoutOriginal; selectedLayoutOriginal = selectedLayoutOriginal.isEmpty() ? selectedLayoutCurrent : selectedLayoutOriginal;
if (m_layoutsController->dataAreChanged()) { if (m_layoutsController->layoutsAreChanged()) {
showInlineMessage(i18nc("settings:not permitted switching layout","You need to <b>apply</b> your changes first to switch layout..."), showInlineMessage(i18nc("settings:not permitted switching layout","You need to <b>apply</b> your changes first to switch layout..."),
KMessageWidget::Warning); KMessageWidget::Warning);
return; return;
} }
if (!m_layoutsController->inMultipleMode()) { if (!m_layoutsController->inMultipleMode()) {
m_corona->layoutsManager()->switchToLayout(selectedLayoutOriginal.name); m_corona->layoutsManager()->switchToLayout(selectedLayoutOriginal.name, MemoryUsage::SingleLayout);
m_layoutsController->setOriginalInMultipleMode(false);
} else { } else {
CentralLayout singleLayout(this, selectedLayoutCurrent.id); m_corona->layoutsManager()->switchToLayout(selectedLayoutOriginal.name, MemoryUsage::MultipleLayouts);
m_layoutsController->setOriginalInMultipleMode(true);
/*CentralLayout singleLayout(this, selectedLayoutCurrent.id);
QString switchToActivity; QString switchToActivity;
@ -354,7 +358,7 @@ void TabLayouts::switchLayout()
} }
m_corona->layoutsManager()->synchronizer()->activitiesController()->setCurrentActivity(switchToActivity); m_corona->layoutsManager()->synchronizer()->activitiesController()->setCurrentActivity(switchToActivity);
} }*/
} }
updatePerLayoutButtonsState(); updatePerLayoutButtonsState();

@ -73,7 +73,17 @@ bool Layouts::containsCurrentName(const QString &name) const
bool Layouts::dataAreChanged() const bool Layouts::dataAreChanged() const
{ {
return ((o_inMultipleMode != m_inMultipleMode) || (o_layoutsTable != m_layoutsTable)); return modeIsChanged() || layoutsAreChanged();
}
bool Layouts::modeIsChanged() const
{
return o_inMultipleMode != m_inMultipleMode;
}
bool Layouts::layoutsAreChanged() const
{
return o_layoutsTable != m_layoutsTable;
} }
bool Layouts::inMultipleMode() const bool Layouts::inMultipleMode() const
@ -151,7 +161,8 @@ void Layouts::applyData()
void Layouts::resetData() void Layouts::resetData()
{ {
clear(); clear();
setOriginalData(o_layoutsTable, o_inMultipleMode); setOriginalInMultipleMode(o_inMultipleMode);
setOriginalData(o_layoutsTable);
} }
void Layouts::removeLayout(const QString &id) void Layouts::removeLayout(const QString &id)
@ -779,23 +790,27 @@ const Latte::Data::LayoutsTable &Layouts::currentLayoutsData()
return m_layoutsTable; return m_layoutsTable;
} }
void Layouts::setOriginalData(Latte::Data::LayoutsTable &data, const bool &inmultiple) void Layouts::setOriginalInMultipleMode(const bool &inmultiple)
{
setInMultipleMode(inmultiple);
if (o_inMultipleMode == inmultiple) {
return;
}
o_inMultipleMode = inmultiple;
emit inMultipleModeChanged();
}
void Layouts::setOriginalData(Latte::Data::LayoutsTable &data)
{ {
clear(); clear();
beginInsertRows(QModelIndex(), 0, data.rowCount() - 1); beginInsertRows(QModelIndex(), 0, data.rowCount() - 1);
o_inMultipleMode = inmultiple;
o_layoutsTable = data; o_layoutsTable = data;
m_layoutsTable = data; m_layoutsTable = data;
for(int i=0; i<m_layoutsTable.rowCount(); ++i) {
m_layoutsTable[i].isActive = m_corona->layoutsManager()->synchronizer()->layout(originalData(m_layoutsTable[i].id).name);
}
endInsertRows(); endInsertRows();
setInMultipleMode(inmultiple);
emit rowsInserted(); emit rowsInserted();
} }

@ -87,6 +87,8 @@ public:
bool containsCurrentName(const QString &name) const; bool containsCurrentName(const QString &name) const;
bool dataAreChanged() const; bool dataAreChanged() const;
bool layoutsAreChanged() const;
bool modeIsChanged() const;
bool inMultipleMode() const; bool inMultipleMode() const;
void setInMultipleMode(bool inMultiple); void setInMultipleMode(bool inMultiple);
@ -129,7 +131,9 @@ public:
const Latte::Data::LayoutsTable &currentLayoutsData(); const Latte::Data::LayoutsTable &currentLayoutsData();
const Latte::Data::LayoutsTable &originalLayoutsData(); const Latte::Data::LayoutsTable &originalLayoutsData();
void setOriginalData(Latte::Data::LayoutsTable &data, const bool &inmultiple);
void setOriginalInMultipleMode(const bool &inmultiple);
void setOriginalData(Latte::Data::LayoutsTable &data);
signals: signals:
void inMultipleModeChanged(); void inMultipleModeChanged();

Loading…
Cancel
Save