Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
dfad3fa7
Commit
dfad3fa7
authored
Apr 19, 2010
by
Tobias Hunger
Browse files
Update EnvironmentModel::setData
Reviewed-by: dt
parent
b5d08242
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/plugins/projectexplorer/environmenteditmodel.cpp
View file @
dfad3fa7
...
...
@@ -190,56 +190,57 @@ int EnvironmentModel::findInResultInsertPosition(const QString &name) const
bool
EnvironmentModel
::
setData
(
const
QModelIndex
&
index
,
const
QVariant
&
value
,
int
role
)
{
if
(
!
index
.
isValid
())
if
(
!
index
.
isValid
()
||
role
!=
Qt
::
EditRole
)
return
false
;
if
(
role
==
Qt
::
EditRole
&&
index
.
isValid
())
{
// ignore changes to already set values:
if
(
data
(
index
,
role
)
==
value
)
return
true
;
// ignore changes to already set values:
if
(
data
(
index
,
role
)
==
value
)
return
true
;
if
(
index
.
column
()
==
0
)
{
//fail if a variable with the same name already exists
#ifdef Q_OS_WIN
const
QString
&
newName
=
value
.
toString
().
toUpper
();
const
QString
oldName
=
data
(
this
->
index
(
index
.
row
(),
0
,
QModelIndex
())).
toString
();
const
QString
oldValue
=
data
(
this
->
index
(
index
.
row
(),
1
,
QModelIndex
())).
toString
();
int
changesPos
=
findInChanges
(
oldName
);
if
(
index
.
column
()
==
0
)
{
//fail if a variable with the same name already exists
#if defined(Q_OS_WIN)
const
QString
&
newName
=
value
.
toString
().
toUpper
();
#else
const
QString
&
newName
=
value
.
toString
();
const
QString
&
newName
=
value
.
toString
();
#endif
if
(
findInChanges
(
newName
)
!=
-
1
)
return
false
;
EnvironmentItem
old
(
""
,
""
);
int
pos
=
findInChanges
(
indexToVariable
(
index
));
if
(
pos
!=
-
1
)
{
old
=
m_items
.
at
(
pos
);
// Does the new name exist already?
if
(
m_resultEnvironment
.
hasKey
(
newName
))
return
false
;
EnvironmentItem
newVariable
(
newName
,
oldValue
);
if
(
changesPos
!=
-
1
)
resetVariable
(
oldName
);
// restore the original base variable again
QModelIndex
newIndex
=
addVariable
(
newVariable
);
// add the new variable
emit
focusIndex
(
newIndex
.
sibling
(
newIndex
.
row
(),
1
));
// hint to focus on the value
return
true
;
}
else
if
(
index
.
column
()
==
1
)
{
// We are changing an existing value:
const
QString
stringValue
=
value
.
toString
();
if
(
changesPos
!=
-
1
)
{
// We have already changed this value
if
(
stringValue
==
m_baseEnvironment
.
value
(
oldName
))
{
// ... and now went back to the base value
m_items
.
removeAt
(
changesPos
);
}
else
{
old
.
name
=
m_resultEnvironment
.
key
(
m_resultEnvironment
.
constBegin
()
+
index
.
row
());
old
.
value
=
m_resultEnvironment
.
value
(
m_resultEnvironment
.
constBegin
()
+
index
.
row
())
;
old
.
unset
=
false
;
// ... and changed it again
m_items
[
changesPos
].
value
=
stringValue
;
m_items
[
changesPos
]
.
unset
=
false
;
}
if
(
changes
(
old
.
name
))
resetVariable
(
old
.
name
);
old
.
name
=
newName
;
addVariable
(
old
);
emit
renamedVariable
(
newName
);
return
true
;
}
else
if
(
index
.
column
()
==
1
)
{
const
QString
&
name
=
indexToVariable
(
index
);
int
pos
=
findInChanges
(
name
);
if
(
pos
!=
-
1
)
{
m_items
[
pos
].
value
=
value
.
toString
();
m_items
[
pos
].
unset
=
false
;
updateResultEnvironment
();
emit
dataChanged
(
index
,
index
);
emit
userChangesChanged
();
return
true
;
}
// not found in m_items, so add it as a new variable
addVariable
(
EnvironmentItem
(
name
,
value
.
toString
()));
return
true
;
}
else
{
// Add a new change item:
m_items
.
append
(
EnvironmentItem
(
oldName
,
stringValue
));
}
updateResultEnvironment
();
emit
dataChanged
(
index
,
index
);
emit
userChangesChanged
();
return
true
;
}
return
false
;
}
...
...
@@ -446,8 +447,8 @@ EnvironmentWidget::~EnvironmentWidget()
void
EnvironmentWidget
::
renamedVariable
(
const
QString
&
name
)
{
QModelIndex
i
d
x
=
m_model
->
variableToIndex
(
name
);
m_environmentTreeView
->
setCurrentIndex
(
i
d
x
);
QModelIndex
i
nde
x
=
m_model
->
variableToIndex
(
name
);
m_environmentTreeView
->
setCurrentIndex
(
i
nde
x
);
m_environmentTreeView
->
setFocus
();
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment