Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linphone-desktop
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
linphone-desktop
Commits
3839f917
Commit
3839f917
authored
Dec 16, 2016
by
Ronan Abhamon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(ui/views/App/MainWindow/ContactEdit): display contact addresses
parent
534c5f0a
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
343 additions
and
151 deletions
+343
-151
en.ts
tests/assets/languages/en.ts
+37
-5
fr.ts
tests/assets/languages/fr.ts
+36
-8
resources.qrc
tests/resources.qrc
+1
-0
ActionSwitch.qml
tests/ui/modules/Common/Form/ActionSwitch.qml
+2
-2
ExclusiveButtons.qml
tests/ui/modules/Common/Form/ExclusiveButtons.qml
+1
-1
StaticListForm.qml
tests/ui/modules/Common/Form/StaticListForm.qml
+54
-0
TransparentTextInput.qml
tests/ui/modules/Common/Form/TransparentTextInput.qml
+24
-3
TransparentTextInputStyle.qml
.../modules/Common/Styles/Form/TransparentTextInputStyle.qml
+12
-3
qmldir
tests/ui/modules/Common/qmldir
+1
-0
ContactEdit.qml
tests/ui/views/App/MainWindow/ContactEdit.qml
+175
-129
No files found.
tests/assets/languages/en.ts
View file @
3839f917
...
@@ -112,11 +112,11 @@
...
@@ -112,11 +112,11 @@
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
sipAccountsInput
<
/source
>
<
source
>
sipAccountsInput
<
/source
>
<
translation
type
=
"
unfinished
"
>
SIP
Address
<
/translation
>
<
translation
type
=
"
obsolete
"
>
SIP
Address
<
/translation
>
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
address
<
/source
>
<
source
>
address
<
/source
>
<
translation
type
=
"
obsolete
"
>
ADDRESS
<
/translation
>
<
translation
type
=
"
unfinished
"
>
ADDRESS
<
/translation
>
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
addressInput
<
/source
>
<
source
>
addressInput
<
/source
>
...
@@ -128,7 +128,7 @@
...
@@ -128,7 +128,7 @@
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
emailsInput
<
/source
>
<
source
>
emailsInput
<
/source
>
<
translation
type
=
"
unfinished
"
>
E
-
mail
address
<
/translation
>
<
translation
type
=
"
obsolete
"
>
E
-
mail
address
<
/translation
>
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
webSites
<
/source
>
<
source
>
webSites
<
/source
>
...
@@ -136,7 +136,7 @@
...
@@ -136,7 +136,7 @@
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
webSitesInput
<
/source
>
<
source
>
webSitesInput
<
/source
>
<
translation
type
=
"
unfinished
"
>
URL
<
/translation
>
<
translation
type
=
"
obsolete
"
>
URL
<
/translation
>
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
avatarChooserTitle
<
/source
>
<
source
>
avatarChooserTitle
<
/source
>
...
@@ -144,7 +144,7 @@
...
@@ -144,7 +144,7 @@
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
companiesInput
<
/source
>
<
source
>
companiesInput
<
/source
>
<
translation
>
Company
<
/translation
>
<
translation
type
=
"
vanished
"
>
Company
<
/translation
>
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
companies
<
/source
>
<
source
>
companies
<
/source
>
...
@@ -158,6 +158,38 @@
...
@@ -158,6 +158,38 @@
<
source
>
cancel
<
/source
>
<
source
>
cancel
<
/source
>
<
translation
>
CANCEL
<
/translation
>
<
translation
>
CANCEL
<
/translation
>
<
/message
>
<
/message
>
<
message
>
<
source
>
sipAccountsPlaceholder
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
source
>
companiesPlaceholder
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
source
>
emailsPlaceholder
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
source
>
webSitesPlaceholder
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
source
>
street
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
source
>
postalCode
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
source
>
country
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
source
>
locality
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
/context
>
<
/context
>
<
context
>
<
context
>
<
name
>
Contacts
<
/name
>
<
name
>
Contacts
<
/name
>
...
...
tests/assets/languages/fr.ts
View file @
3839f917
...
@@ -104,11 +104,11 @@
...
@@ -104,11 +104,11 @@
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
sipAccountsInput
<
/source
>
<
source
>
sipAccountsInput
<
/source
>
<
translation
type
=
"
unfinished
"
>
Adresse
SIP
<
/translation
>
<
translation
type
=
"
obsolete
"
>
Adresse
SIP
<
/translation
>
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
address
<
/source
>
<
source
>
address
<
/source
>
<
translation
type
=
"
obsolete
"
>
ADRESSE
(
S
)
<
/translation
>
<
translation
type
=
"
unfinished
"
>
ADRESSE
(
S
)
<
/translation
>
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
addressInput
<
/source
>
<
source
>
addressInput
<
/source
>
...
@@ -120,7 +120,7 @@
...
@@ -120,7 +120,7 @@
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
emailsInput
<
/source
>
<
source
>
emailsInput
<
/source
>
<
translation
type
=
"
unfinished
"
>
Adresse
e
-
mail
<
/translation
>
<
translation
type
=
"
obsolete
"
>
Adresse
e
-
mail
<
/translation
>
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
webSites
<
/source
>
<
source
>
webSites
<
/source
>
...
@@ -128,16 +128,12 @@
...
@@ -128,16 +128,12 @@
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
webSitesInput
<
/source
>
<
source
>
webSitesInput
<
/source
>
<
translation
type
=
"
unfinished
"
>
URL
<
/translation
>
<
translation
type
=
"
obsolete
"
>
URL
<
/translation
>
<
/message
>
<
/message
>
<
message
>
<
message
>
<
source
>
avatarChooserTitle
<
/source
>
<
source
>
avatarChooserTitle
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
/message
>
<
message
>
<
source
>
companiesInput
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
message
>
<
source
>
companies
<
/source
>
<
source
>
companies
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
translation
type
=
"
unfinished
"
><
/translation
>
...
@@ -150,6 +146,38 @@
...
@@ -150,6 +146,38 @@
<
source
>
cancel
<
/source
>
<
source
>
cancel
<
/source
>
<
translation
type
=
"
unfinished
"
>
ANNULER
<
/translation
>
<
translation
type
=
"
unfinished
"
>
ANNULER
<
/translation
>
<
/message
>
<
/message
>
<
message
>
<
source
>
sipAccountsPlaceholder
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
source
>
companiesPlaceholder
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
source
>
emailsPlaceholder
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
source
>
webSitesPlaceholder
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
source
>
street
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
source
>
postalCode
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
source
>
country
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
message
>
<
source
>
locality
<
/source
>
<
translation
type
=
"
unfinished
"
><
/translation
>
<
/message
>
<
/context
>
<
/context
>
<
context
>
<
context
>
<
name
>
Contacts
<
/name
>
<
name
>
Contacts
<
/name
>
...
...
tests/resources.qrc
View file @
3839f917
...
@@ -143,6 +143,7 @@
...
@@ -143,6 +143,7 @@
<file>
ui/modules/Common/Form/ExclusiveButtons.qml
</file>
<file>
ui/modules/Common/Form/ExclusiveButtons.qml
</file>
<file>
ui/modules/Common/Form/ListForm.qml
</file>
<file>
ui/modules/Common/Form/ListForm.qml
</file>
<file>
ui/modules/Common/Form/SmallButton.qml
</file>
<file>
ui/modules/Common/Form/SmallButton.qml
</file>
<file>
ui/modules/Common/Form/StaticListForm.qml
</file>
<file>
ui/modules/Common/Form/TextButtonA.qml
</file>
<file>
ui/modules/Common/Form/TextButtonA.qml
</file>
<file>
ui/modules/Common/Form/TextButtonB.qml
</file>
<file>
ui/modules/Common/Form/TextButtonB.qml
</file>
<file>
ui/modules/Common/Form/TextField.qml
</file>
<file>
ui/modules/Common/Form/TextField.qml
</file>
...
...
tests/ui/modules/Common/Form/ActionSwitch.qml
View file @
3839f917
import
QtQuick
2.7
import
QtQuick
2.7
// ===================================================================
// ===================================================================
==========
Item
{
Item
{
property
alias
useStates
:
actionButton
.
useStates
property
alias
useStates
:
actionButton
.
useStates
...
@@ -10,7 +10,7 @@ Item {
...
@@ -10,7 +10,7 @@ Item {
signal
clicked
signal
clicked
// -----------------------------------------------------------------
// -----------------------------------------------------------------
----------
height
:
iconSize
||
parent
.
iconSize
||
parent
.
height
height
:
iconSize
||
parent
.
iconSize
||
parent
.
height
width
:
iconSize
||
parent
.
iconSize
||
parent
.
height
width
:
iconSize
||
parent
.
iconSize
||
parent
.
height
...
...
tests/ui/modules/Common/Form/ExclusiveButtons.qml
View file @
3839f917
...
@@ -2,7 +2,7 @@ import QtQuick 2.7
...
@@ -2,7 +2,7 @@ import QtQuick 2.7
import
Common
.
Styles
1.0
import
Common
.
Styles
1.0
// ===================================================================
// ===================================================================
==========
Row
{
Row
{
id
:
item
id
:
item
...
...
tests/ui/modules/Common/Form/StaticListForm.qml
0 → 100644
View file @
3839f917
import
QtQuick
2.7
import
QtQuick
.
Layouts
1.3
import
Common
.
Styles
1.0
// =============================================================================
RowLayout
{
id
:
form
property
alias
title
:
text
.
text
property
bool
readOnly
:
false
property
var
fields
// ---------------------------------------------------------------------------
spacing
:
0
Text
{
id
:
text
Layout.leftMargin
:
ListFormStyle
.
titleArea
.
iconSize
+
ListFormStyle
.
titleArea
.
spacing
Layout.preferredHeight
:
ListFormStyle
.
lineHeight
Layout.preferredWidth
:
ListFormStyle
.
titleArea
.
text
.
width
Layout.alignment
:
Qt
.
AlignTop
color
:
ListFormStyle
.
titleArea
.
text
.
color
elide
:
Text
.
ElideRight
font
{
bold
:
true
pointSize
:
ListFormStyle
.
titleArea
.
text
.
fontSize
}
verticalAlignment
:
Text
.
AlignVCenter
}
ColumnLayout
{
Layout.fillWidth
:
true
spacing
:
0
Repeater
{
model
:
form
.
fields
TransparentTextInput
{
Layout.fillWidth
:
true
Layout.preferredHeight
:
ListFormStyle
.
lineHeight
placeholder
:
modelData
.
placeholder
||
''
readOnly
:
form
.
readOnly
text
:
modelData
.
text
||
''
}
}
}
}
tests/ui/modules/Common/Form/TransparentTextInput.qml
View file @
3839f917
...
@@ -11,6 +11,7 @@ Item {
...
@@ -11,6 +11,7 @@ Item {
property
alias
color
:
textInput
.
color
property
alias
color
:
textInput
.
color
property
alias
font
:
textInput
.
font
property
alias
font
:
textInput
.
font
property
alias
inputMethodHints
:
textInput
.
inputMethodHints
property
alias
inputMethodHints
:
textInput
.
inputMethodHints
property
alias
placeholder
:
placeholder
.
text
property
alias
readOnly
:
textInput
.
readOnly
property
alias
readOnly
:
textInput
.
readOnly
property
alias
text
:
textInput
.
text
property
alias
text
:
textInput
.
text
property
bool
forceFocus
:
false
property
bool
forceFocus
:
false
...
@@ -59,17 +60,37 @@ Item {
...
@@ -59,17 +60,37 @@ Item {
visible
:
parent
.
isInvalid
visible
:
parent
.
isInvalid
}
}
Text
{
id
:
placeholder
anchors.centerIn
:
parent
color
:
TransparentTextInputStyle
.
placeholder
.
color
elide
:
Text
.
ElideRight
font
{
italic
:
true
pointSize
:
TransparentTextInputStyle
.
placeholder
.
fontSize
}
height
:
textInput
.
height
width
:
textInput
.
width
verticalAlignment
:
Text
.
AlignVCenter
visible
:
textInput
.
text
.
length
===
0
&&
!
textInput
.
activeFocus
&&
!
textInput
.
readOnly
}
TextInput
{
TextInput
{
id
:
textInput
id
:
textInput
anchors.centerIn
:
parent
anchors.centerIn
:
parent
height
:
parent
.
height
-
parent
.
padding
*
2
height
:
parent
.
height
width
:
parent
.
width
-
parent
.
padding
*
2
width
:
parent
.
width
-
parent
.
padding
*
2
clip
:
true
clip
:
true
color
:
activeFocus
&&
!
readOnly
color
:
activeFocus
&&
!
readOnly
?
TransparentTextInputStyle
.
textColor
.
focused
?
TransparentTextInputStyle
.
text
.
color
.
focused
:
TransparentTextInputStyle
.
textColor
.
normal
:
TransparentTextInputStyle
.
text
.
color
.
normal
font.pointSize
:
TransparentTextInputStyle
.
text
.
fontSize
selectByMouse
:
true
selectByMouse
:
true
verticalAlignment
:
TextInput
.
AlignVCenter
verticalAlignment
:
TextInput
.
AlignVCenter
...
...
tests/ui/modules/Common/Styles/Form/TransparentTextInputStyle.qml
View file @
3839f917
...
@@ -10,8 +10,17 @@ QtObject {
...
@@ -10,8 +10,17 @@ QtObject {
property
int
iconSize
:
12
property
int
iconSize
:
12
property
int
padding
:
10
property
int
padding
:
10
property
QtObject
textColor
:
QtObject
{
property
QtObject
placeholder
:
QtObject
{
property
color
focused
:
Colors
.
l
property
color
color
:
Colors
.
w
property
color
normal
:
Colors
.
r
property
int
fontSize
:
10
}
property
QtObject
text
:
QtObject
{
property
int
fontSize
:
10
property
QtObject
color
:
QtObject
{
property
color
focused
:
Colors
.
l
property
color
normal
:
Colors
.
r
}
}
}
}
}
tests/ui/modules/Common/qmldir
View file @
3839f917
...
@@ -38,6 +38,7 @@ CheckBoxText 1.0 Form/CheckBoxText.qml
...
@@ -38,6 +38,7 @@ CheckBoxText 1.0 Form/CheckBoxText.qml
ExclusiveButtons 1.0 Form/ExclusiveButtons.qml
ExclusiveButtons 1.0 Form/ExclusiveButtons.qml
LightButton 1.0 Form/LightButton.qml
LightButton 1.0 Form/LightButton.qml
ListForm 1.0 Form/ListForm.qml
ListForm 1.0 Form/ListForm.qml
StaticListForm 1.0 Form/StaticListForm.qml
TextButtonA 1.0 Form/TextButtonA.qml
TextButtonA 1.0 Form/TextButtonA.qml
TextButtonB 1.0 Form/TextButtonB.qml
TextButtonB 1.0 Form/TextButtonB.qml
TextField 1.0 Form/TextField.qml
TextField 1.0 Form/TextField.qml
...
...
tests/ui/views/App/MainWindow/ContactEdit.qml
View file @
3839f917
...
@@ -70,35 +70,6 @@ ColumnLayout {
...
@@ -70,35 +70,6 @@ ColumnLayout {
usernameInput
.
text
=
_vcard
.
username
usernameInput
.
text
=
_vcard
.
username
}
}
function
_handleSipAddressChanged
(
index
,
defaultValue
,
newValue
)
{
if
(
!
Utils
.
startsWith
(
newValue
,
'
sip:
'
))
{
newValue
=
'
sip:
'
+
newValue
if
(
newValue
===
defaultValue
)
{
return
}
}
var
so_far_so_good
=
(
defaultValue
.
length
===
0
)
?
_vcard
.
addSipAddress
(
newValue
)
:
_vcard
.
updateSipAddress
(
defaultValue
,
newValue
)
addresses
.
setInvalid
(
index
,
!
so_far_so_good
)
}
function
_handleUrlChanged
(
index
,
defaultValue
,
newValue
)
{
var
url
=
Utils
.
extractFirstUri
(
newValue
)
if
(
url
===
defaultValue
)
{
return
}
var
so_far_so_good
=
(
defaultValue
.
length
===
0
)
?
url
&&
_vcard
.
addUrl
(
newValue
)
:
url
&&
_vcard
.
updateUrl
(
defaultValue
,
newValue
)
urls
.
setInvalid
(
index
,
!
so_far_so_good
)
}
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
spacing
:
0
spacing
:
0
...
@@ -218,140 +189,215 @@ ColumnLayout {
...
@@ -218,140 +189,215 @@ ColumnLayout {
// Info list.
// Info list.
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
Flickable
{
Loader
{
id
:
flick
Layout.fillHeight
:
true
Layout.fillHeight
:
true
Layout.fillWidth
:
true
Layout.fillWidth
:
true
ScrollBar.vertical
:
ForceScrollBar
{}
boundsBehavior
:
Flickable
.
StopAtBounds
active
:
_vcard
!=
null
clip
:
true
sourceComponent
:
Flickable
{
contentHeight
:
infoList
.
height
id
:
flick
contentWidth
:
width
-
ScrollBar
.
vertical
.
width
flickableDirection
:
Flickable
.
VerticalFlick
ColumnLayout
{
// -----------------------------------------------------------------------
id
:
infoList
width
:
flick
.
contentWidth
ListForm
{
function
_handleSipAddressChanged
(
index
,
defaultValue
,
newValue
)
{
id
:
addresses
if
(
!
Utils
.
startsWith
(
newValue
,
'
sip:
'
))
{
newValue
=
'
sip:
'
+
newValue
Layout.leftMargin
:
ContactEditStyle
.
values
.
leftMargin
if
(
newValue
===
defaultValue
)
{
Layout.rightMargin
:
ContactEditStyle
.
values
.
rightMargin
return
Layout.topMargin
:
ContactEditStyle
.
values
.
topMargin
}
}
defaultData
:
_vcard
.
sipAddresses
var
so_far_so_good
=
(
defaultValue
.
length
===
0
)
minValues
:
_contact
?
1
:
0
?
_vcard
.
addSipAddress
(
newValue
)
placeholder
:
qsTr
(
'
sipAccountsInput
'
)
:
_vcard
.
updateSipAddress
(
defaultValue
,
newValue
)
readOnly
:
!
_edition
title
:
qsTr
(
'
sipAccounts
'
)
onChanged
:
_handleSipAddressChanged
(
index
,
defaultValue
,
newValue
)
addresses
.
setInvalid
(
index
,
!
so_far_so_good
)
onRemoved
:
_vcard
.
removeSipAddress
(
value
)
}
}
Rectangle
{
function
_handleCompanyChanged
(
index
,
defaultValue
,
newValue
)
{
Layout.fillWidth
:
true
var
so_far_so_good
=
(
defaultValue
.
length
===
0
)
Layout.preferredHeight
:
ContactEditStyle
.
values
.
separator
.
height
?
_vcard
.
addCompany
(
newValue
)
color
:
ContactEditStyle
.
values
.
separator
.
color
:
_vcard
.
updateCompany
(
defaultValue
,
newValue
)
companies
.
setInvalid
(
index
,
!
so_far_so_good
)
}
}
ListForm
{
function
_handleEmailChanged
(
index
,
defaultValue
,
newValue
)
{
id
:
companies
var
so_far_so_good
=
(
defaultValue
.
length
===
0
)
?
_vcard
.
addEmail
(
newValue
)
:
_vcard
.
updateEmail
(
defaultValue
,
newValue
)
Layout.leftMargin
:
ContactEditStyle
.
values
.
leftMargin
emails
.
setInvalid
(
index
,
!
so_far_so_good
)
Layout.rightMargin
:
ContactEditStyle
.
values
.
rightMargin
}
defaultData
:
_vcard
.
companies
function
_handleUrlChanged
(
index
,
defaultValue
,
newValue
)
{
placeholder
:
qsTr
(
'
companiesInput
'
)
var
url
=
Utils
.
extractFirstUri
(
newValue
)
readOnly
:
!
_edition
if
(
url
===
defaultValue
)
{
title
:
qsTr
(
'
companies
'
)
return
}
onChanged
:
defaultValue
.
length
===
0
var
so_far_so_good
=
(
defaultValue
.
length
===
0
)
?
_vcard
.
addCompany
(
newValue
)
?
url
&&
_vcard
.
addUrl
(
newValue
)
:
_vcard
.
updateCompany
(
defaultValue
,
newValue
)
:
url
&&
_vcard
.
updateUrl
(
defaultValue
,
newValue
)
onRemoved
:
_vcard
.
removeCompany
(
value
)
}
Rectangle
{
urls
.
setInvalid
(
index
,
!
so_far_so_good
)
Layout.fillWidth
:
true
Layout.preferredHeight
:
ContactEditStyle
.
values
.
separator
.
height
color
:
ContactEditStyle
.
values
.
separator
.
color
}
}
ListForm
{
// -----------------------------------------------------------------------
id
:
emails
Layout.leftMargin
:
ContactEditStyle
.
values
.
leftMargin
ScrollBar.vertical
:
ForceScrollBar
{}
Layout.rightMargin
:
ContactEditStyle
.
values
.
rightMargin
defaultData
:
_vcard
.
email
s
boundsBehavior
:
Flickable
.
StopAtBound
s
inputMethodHints
:
Qt
.
ImhEmailCharactersOnly
clip
:
true
placeholder
:
qsTr
(
'
emailsInput
'
)
contentHeight
:
infoList
.
height
readOnly
:
!
_edition
contentWidth
:
width
-
ScrollBar
.
vertical
.
width
title
:
qsTr
(
'
emails
'
)
flickableDirection
:
Flickable
.
VerticalFlick
onChanged
:
defaultValue
.
length
===
0
ColumnLayout
{
?
_vcard
.
addEmail
(
newValue
)
id
:
infoList
:
_vcard
.
updateEmail
(
defaultValue
,
newValue
)
onRemoved
:
_vcard
.
removeEmail
(
value
)
}
Rectangle
{
width
:
flick
.
contentWidth
Layout.fillWidth
:
true
Layout.preferredHeight
:
ContactEditStyle
.
values
.
separator
.
height
color
:
ContactEditStyle
.
values
.
separator
.
color
}
ListForm
{
ListForm
{
id
:
url
s
id
:
addresse
s
Layout.leftMargin
:
ContactEditStyle
.
values
.
leftMargin
Layout.leftMargin
:
ContactEditStyle
.
values
.
leftMargin
Layout.rightMargin
:
ContactEditStyle
.
values
.
rightMargin
Layout.rightMargin
:
ContactEditStyle
.
values
.
rightMargin
Layout.topMargin
:
ContactEditStyle
.
values
.
topMargin
defaultData
:
_vcard
.
url
s
defaultData
:
_vcard
.
sipAddresse
s
inputMethodHints
:
Qt
.
ImhUrlCharactersOnly
minValues
:
_contact
?
1
:
0
placeholder
:
qsTr
(
'
webSitesInput
'
)
placeholder
:
qsTr
(
'
sipAccountsPlaceholder
'
)
readOnly
:
!
_edition
readOnly
:
!
_edition
title
:
qsTr
(
'
webSite
s
'
)
title
:
qsTr
(
'
sipAccount
s
'
)
onChanged
:
_handleUrl
Changed
(
index
,
defaultValue
,
newValue
)
onChanged
:
_handleSipAddress
Changed
(
index
,
defaultValue
,
newValue
)
onRemoved
:
_vcard
.
removeUrl
(
value
)
onRemoved
:
_vcard
.
removeSipAddress
(
value
)
}
}
Rectangle
{
Rectangle
{
Layout.fillWidth
:
true
Layout.fillWidth
:
true
Layout.preferredHeight
:
ContactEditStyle
.
values
.
separator
.
height
Layout.preferredHeight
:
ContactEditStyle
.
values
.
separator
.
height
color
:
ContactEditStyle
.
values
.
separator
.
color
color
:
ContactEditStyle
.
values
.
separator
.
color
}
}
// -----------------------------------------------------------------------
ListForm
{
// Edition buttons.
id
:
companies
// -----------------------------------------------------------------------
Layout.leftMargin
:
ContactEditStyle
.
values
.
leftMargin
Layout.rightMargin
:
ContactEditStyle
.
values
.
rightMargin
Row
{
defaultData
:
_vcard
.
companies
Layout.alignment
:
Qt
.
AlignHCenter
placeholder
:
qsTr
(
'
companiesPlaceholder
'
)
Layout.topMargin
:
ContactEditStyle
.
buttons
.
topMargin
readOnly
:
!
_edition
spacing
:
ContactEditStyle
.
buttons
.
spacing
title
:
qsTr
(
'
companies
'
)
visible
:
_edition
TextButtonB
{
onChanged
:
_handleCompanyChanged
(
index
,
defaultValue
,
newValue
)
enabled
:
usernameInput
.
text
.
length
>
0
&&
_vcard
.
sipAddresses
.
length
>
0
onRemoved
:
_vcard
.
removeCompany
(
value
)
text
:
qsTr
(
'
save
'
)
onClicked
:
_save
()
}
}
TextButtonA
{
Rectangle
{
text
:
qsTr
(
'
cancel
'
)
Layout.fillWidth
:
true
onClicked
:
_cancel
()
Layout.preferredHeight
:
ContactEditStyle
.
values
.
separator
.
height
color
:
ContactEditStyle
.
values
.
separator
.
color
}
}
}
Item
{
ListForm
{
Layout.bottomMargin
:
ContactEditStyle
.
values
.
bottomMargin
id
:
emails
Layout.leftMargin
:
ContactEditStyle
.
values
.
leftMargin
Layout.rightMargin
:
ContactEditStyle
.
values
.
rightMargin
defaultData
:
_vcard
.
emails
inputMethodHints
:
Qt
.
ImhEmailCharactersOnly
placeholder
:
qsTr
(
'
emailsPlaceholder
'
)
readOnly
:
!
_edition
title
:
qsTr
(
'
emails
'
)
onChanged
:
_handleEmailChanged
(
index
,
defaultValue
,
newValue
)
onRemoved
:
_vcard
.
removeEmail
(
value
)
}
Rectangle
{
Layout.fillWidth
:
true
Layout.preferredHeight
:
ContactEditStyle
.
values
.
separator
.
height
color
:
ContactEditStyle
.
values
.
separator
.
color
}
ListForm
{
id
:
urls
Layout.leftMargin
:
ContactEditStyle
.
values
.
leftMargin
Layout.rightMargin
:
ContactEditStyle
.
values
.
rightMargin
defaultData
:
_vcard
.
urls
inputMethodHints
:
Qt
.
ImhUrlCharactersOnly
placeholder
:
qsTr
(
'
webSitesPlaceholder
'
)
readOnly
:
!
_edition
title
:
qsTr
(
'
webSites
'
)
onChanged
:
_handleUrlChanged
(
index
,
defaultValue
,
newValue
)
onRemoved
:
_vcard
.
removeUrl
(
value
)
}
Rectangle
{
Layout.fillWidth
:
true
Layout.preferredHeight
:
ContactEditStyle
.
values
.
separator
.
height
color
:
ContactEditStyle
.
values
.
separator
.
color
}
StaticListForm
{
Layout.leftMargin
:
ContactEditStyle
.
values
.
leftMargin
Layout.rightMargin
:
ContactEditStyle
.
values
.
rightMargin
fields
:
{
var
address
=
_vcard
.
address
return
[{
placeholder
:
qsTr
(
'
street
'
),
text
:
address
.
street
},
{
placeholder
:
qsTr
(
'
locality
'
),
text
:
address
.
locality
},
{
placeholder
:
qsTr
(
'
postalCode
'
),
text
:
address
.
postalCode
},
{
placeholder
:
qsTr
(
'
country
'
),
text
:
address
.
country
}]
}
readOnly
:
!
_edition
title
:
qsTr
(
'
address
'
)
}
// ---------------------------------------------------------------------
// Edition buttons.
// ---------------------------------------------------------------------
Row
{
Layout.alignment
:
Qt
.
AlignHCenter
Layout.topMargin
:
ContactEditStyle
.
buttons
.
topMargin
spacing
:
ContactEditStyle
.
buttons
.
spacing
visible
:
_edition
TextButtonA
{
text
:
qsTr
(
'
cancel
'
)
onClicked
:
_cancel
()
}
TextButtonB
{
enabled
:
usernameInput
.
text
.
length
>
0
&&
_vcard
.
sipAddresses
.
length
>
0
text
:
qsTr
(
'
save
'
)
onClicked
:
_save
()
}
}
Item
{
Layout.bottomMargin
:
ContactEditStyle
.
values
.
bottomMargin
}
}
}
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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