viewsdialog:add view name when from view template

work/spdx
Michail Vourlakos 4 years ago
parent 81c31edaa4
commit 749cbca3e8

@ -124,9 +124,12 @@ bool Views::hasSelectedView() const
return (selectedRow >= 0);
}
void Views::appendViewFromViewTemplate(const Data::View &view)
const Latte::Data::View Views::appendViewFromViewTemplate(const Data::View &view)
{
m_model->appendTemporaryView(view);
Data::View newview = view;
newview.name = uniqueViewName(view.name);
m_model->appendTemporaryView(newview);
return newview;
}
void Views::selectRow(const QString &id)
@ -140,6 +143,31 @@ void Views::onCurrentLayoutChanged()
m_model->setOriginalData(layout.views);
}
QString Views::uniqueViewName(QString name)
{
if (name.isEmpty()) {
return name;
}
int pos_ = name.lastIndexOf(QRegExp(QString(" - [0-9]+")));
if (m_model->containsCurrentName(name) && pos_ > 0) {
name = name.left(pos_);
}
int i = 2;
QString namePart = name;
while (m_model->containsCurrentName(name)) {
name = namePart + " - " + QString::number(i);
i++;
}
return name;
}
void Views::applyColumnWidths()
{
m_view->horizontalHeader()->setSectionResizeMode(Model::Views::NAMECOLUMN, QHeaderView::Stretch);

@ -70,7 +70,7 @@ public:
// const Latte::Data::Layout selectedViewCurrentData() const;
// const Latte::Data::Layout selectedViewOriginalData() const;
void appendViewFromViewTemplate(const Data::View &view);
const Latte::Data::View appendViewFromViewTemplate(const Data::View &view);
void selectRow(const QString &id);
@ -85,6 +85,8 @@ signals:
private:
void init();
QString uniqueViewName(QString name);
private slots:
void loadConfig();
void saveConfig();

@ -133,10 +133,11 @@ void ViewsHandler::initViewTemplatesSubMenu()
QAction *newview = m_viewTemplatesSubMenu->addAction(templates[i].name);
newview->setIcon(QIcon::fromTheme("document-new"));
QString templateid = templates[i].id;
connect(newview, &QAction::triggered, this, [&, templateid]() {
newView(templateid);
Data::Generic templateData = templates[i];
connect(newview, &QAction::triggered, this, [&, templateData]() {
newView(templateData);
});
}
@ -213,16 +214,18 @@ void ViewsHandler::save()
}
void ViewsHandler::newView(const QString &templateId)
void ViewsHandler::newView(const Data::Generic &templateData)
{
qDebug() << "new view from template :: " << templateId;
Data::ViewsTable views = Latte::Layouts::Storage::self()->views(templateId);
Data::ViewsTable views = Latte::Layouts::Storage::self()->views(templateData.id);
if (views.rowCount() > 0) {
Data::View viewfromtemplate = views[0];
viewfromtemplate.setState(Data::View::OriginFromViewTemplate, templateId);
m_viewsController->appendViewFromViewTemplate(views[0]);
viewfromtemplate.setState(Data::View::OriginFromViewTemplate, templateData.id);
viewfromtemplate.name = templateData.name;
Data::View newview = m_viewsController->appendViewFromViewTemplate(viewfromtemplate);
showInlineMessage(i18nc("settings:dock/panel added successfully","<b>%0</b> added successfully...").arg(newview.name),
KMessageWidget::Information);
}
}

@ -86,7 +86,7 @@ private slots:
void onCurrentLayoutIndexChanged(int row);
void newView(const QString &templateId);
void newView(const Data::Generic &templateData);
private:
void init();

@ -125,6 +125,11 @@ void Views::initAlignments()
s_verticalAlignments.setValue<Latte::Data::GenericBasicTable>(verticals);
}
bool Views::containsCurrentName(const QString &name) const
{
return m_viewsTable.containsName(name);
}
void Views::resetData()
{
clear();
@ -418,7 +423,7 @@ QVariant Views::data(const QModelIndex &index, int role) const
}
break;
case NAMECOLUMN:
if (role == Qt::DisplayRole || role == Qt::UserRole){
if (role == Qt::DisplayRole || role == Qt::UserRole || role == Qt::EditRole){
return m_viewsTable[row].name;
}
break;

@ -73,6 +73,7 @@ public:
~Views();
bool hasChangedData() const;
bool containsCurrentName(const QString &name) const;
//! all original data will become also current
void resetData();

Loading…
Cancel
Save