Skip to content

Commit

Permalink
fix: The item of OEM is readonly by permission field
Browse files Browse the repository at this point in the history
It should be decided if the item of OEM is readonly by the flags [nooverride]

Log: fix the item of OEM is readonly by permission field
  • Loading branch information
wangfei authored and FeiWang1119 committed Jan 23, 2024
1 parent 9bb99c6 commit 8b1f297
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 2 deletions.
2 changes: 2 additions & 0 deletions dconfig-center/common/helper.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ constexpr int SubpathRole = Qt::UserRole + 13;
constexpr int KeyRole = Qt::UserRole + 14;
constexpr int ValueRole = Qt::UserRole + 15;
constexpr int DescriptionRole = Qt::UserRole + 16;
constexpr int FlagsRole = Qt::UserRole + 17;

static const QString NoAppId;
static const QString VirtualAppName("virtual-generic-applicaiton");

Expand Down
10 changes: 10 additions & 0 deletions dconfig-center/common/valuehandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,11 @@ class DBusHandler : public ConfigGetter {
return manager->version();
}

int flags(const QString &key) const override
{
return manager->flags(key);
}

void release() override
{
manager->release();
Expand Down Expand Up @@ -208,6 +213,11 @@ class FileHandler : public ConfigGetter {
return QString("%1.%2").arg(ver.major).arg(ver.minor);
}

int flags(const QString &key) const override
{
return manager->meta()->flags(key);
}

void release() override
{
manager.reset();
Expand Down
1 change: 1 addition & 0 deletions dconfig-center/common/valuehandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class ConfigGetter {
virtual QString displayName(const QString &key, const QString &locale) = 0;
virtual QString description(const QString &key, const QString &locale) = 0;
virtual QString version() const = 0;
virtual int flags(const QString &key) const = 0;

virtual void release() = 0;
virtual bool isDefaultValue(const QString &key) = 0;
Expand Down
8 changes: 6 additions & 2 deletions dconfig-center/dde-dconfig-editor/oemdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ void OEMDialog::loadData(const QString &language)

QVariant value = manager.get()->value(key);
QVariant description = manager.get()->description(key, language);
QVariant flags = manager.get()->flags(key);
auto valueItem = new DStandardItem();
valueItem->setSizeHint(QSize(200, 45));
valueItem->setData(app, AppidRole);
Expand All @@ -94,6 +95,7 @@ void OEMDialog::loadData(const QString &language)
valueItem->setData(key, KeyRole);
valueItem->setData(value, ValueRole);
valueItem->setData(description, DescriptionRole);
valueItem->setData(flags, FlagsRole);
resourceItem->appendRow(QList<QStandardItem*>() << keyItem << valueItem);
m_exportView->setIndexWidget(valueItem->index(), getItemWidget(manager.get(), valueItem));
}
Expand All @@ -120,12 +122,14 @@ void OEMDialog::loadData(const QString &language)
QVariant value = manager.get()->value(key);
QVariant description = manager.get()->description(key, language);
auto valueItem = new DStandardItem(value.toString());
QVariant flags = manager.get()->flags(key);
valueItem->setData(app, AppidRole);
valueItem->setData(resource, ResourceRole);
valueItem->setData(subpath, SubpathRole);
valueItem->setData(key, KeyRole);
valueItem->setData(value, ValueRole);
valueItem->setData(description, DescriptionRole);
valueItem->setData(flags, FlagsRole);

subpathItem->appendRow(QList<QStandardItem*>() << keyItem << valueItem);
m_exportView->setIndexWidget(valueItem->index(), getItemWidget(manager.get(), valueItem));
Expand Down Expand Up @@ -339,8 +343,8 @@ void OEMDialog::createJsonFile(const QString &fileName, const QList<DStandardIte

QWidget *OEMDialog::getItemWidget(ConfigGetter *getter, DStandardItem *item)
{
const QString &permissions = getter->permissions(item->data(KeyRole).toString());
bool canWrite = permissions == "readwrite" ? true : false;
const int flags = getter->flags(item->data(KeyRole).toString());
bool canWrite = !(flags & Dtk::Core::DConfigFile::Flag::NoOverride);
QVariant v = item->data(ValueRole);
QWidget *valueWidget = nullptr;
if (v.type() == QVariant::Bool) {
Expand Down
10 changes: 10 additions & 0 deletions dconfig-center/example/configs/example.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,16 @@
"permissions": "readwrite",
"visibility": "private"
},
"readOnlyKey": {
"value": true,
"serial": 0,
"flags": ["global"],
"name": "I am name",
"name[zh_CN]": "我是名字",
"description": "I am description",
"permissions": "readonly",
"visibility": "private"
},
"key2": {
"value": "125",
"serial": 0,
Expand Down

0 comments on commit 8b1f297

Please sign in to comment.