9
UserPermissionModel::UserPermissionModel(KSambaShareData &shareData, QObject *parent)
10
: QAbstractTableModel(parent)
11
, userList(getUsersList())
12
, shareData(shareData)
18
void UserPermissionModel::setupData()
20
QStringList acl = shareData.acl().split(",", QString::SkipEmptyParts);
22
QList<QString>::const_iterator itr;
23
for (itr = acl.constBegin(); itr != acl.constEnd(); ++itr) {
24
QStringList userInfo = (*itr).trimmed().split(":");
25
usersAcl.insert(userInfo.at(0), QVariant(userInfo.at(1)));
29
QStringList UserPermissionModel::getUsersList() const
31
unsigned int defminuid;
32
unsigned int defmaxuid;
36
if (!stat("/etc/debian_version", &st)) { /* debian */
39
} else if (!stat("/usr/portage", &st)) { /* gentoo */
42
} else if (!stat("/etc/mandrake-release", &st)) { /* mandrake - check before redhat! */
45
} else if (!stat("/etc/redhat-release", &st)) { /* redhat */
48
} else /* if (!stat("/etc/SuSE-release", &st)) */ { /* suse */
58
userList.append("Everyone");
59
foreach (const QString &username, KUser::allUserNames()) {
60
if (username == "nobody") {
64
if (user.uid() >= defminuid) {
72
int UserPermissionModel::rowCount(const QModelIndex &parent) const
74
return userList.count();
77
int UserPermissionModel::columnCount(const QModelIndex &parent) const
82
QVariant UserPermissionModel::data(const QModelIndex &index, int role) const
84
if ((role == Qt::DisplayRole) && (index.column() == 0)) {
85
return QVariant(userList.at(index.row()));
88
if ((role == Qt::EditRole) && (index.column() == 1)) {
89
QMap<QString, QVariant>::ConstIterator itr;
90
for (itr = usersAcl.constBegin(); itr != usersAcl.constEnd(); ++itr) {
91
if (itr.key().endsWith(userList.at(index.row()))) {
100
Qt::ItemFlags UserPermissionModel::flags(const QModelIndex &index) const
102
if (index.column() == 0) {
103
return Qt::ItemIsSelectable;
106
if (index.column() == 1) {
107
return (Qt::ItemIsEnabled | Qt::ItemIsEditable);
110
return Qt::NoItemFlags;
113
bool UserPermissionModel::setData(const QModelIndex &index, const QVariant &value, int role)
115
if ((role != Qt::EditRole) || (index.column() != 1)) {
120
QMap<QString, QVariant>::ConstIterator itr;
121
for (itr = usersAcl.constBegin(); itr != usersAcl.constEnd(); ++itr) {
122
if (itr.key().endsWith(userList.at(index.row()))) {
129
key = userList.at(index.row());
132
if (value.isNull()) {
135
usersAcl.insert(key, value);
138
emit dataChanged(index, index);
142
QString UserPermissionModel::getAcl() const
146
QMap<QString, QVariant>::ConstIterator itr;
147
for (itr = usersAcl.constBegin(); itr != usersAcl.constEnd(); ++itr) {
148
if (!itr.value().toString().isEmpty()) {
149
result.append(itr.key() + ":" + itr.value().toString().toLower());
150
if (itr != (usersAcl.constEnd() - 1)) {