Merge pull request 'add peer / group pane' (#361) from dan/ui:addPeer into master
the build was successful Details

Reviewed-on: #361
This commit is contained in:
erinn 2020-11-12 15:46:54 -08:00
commit 0be9447a07
18 changed files with 871 additions and 267 deletions

2
go.mod
View File

@ -3,7 +3,7 @@ module cwtch.im/ui
go 1.12
require (
cwtch.im/cwtch v0.4.7
cwtch.im/cwtch v0.4.8
git.openprivacy.ca/openprivacy/connectivity v1.3.1
git.openprivacy.ca/openprivacy/log v1.0.1
github.com/c-bata/go-prompt v0.2.3 // indirect

2
go.sum
View File

@ -11,6 +11,8 @@ cwtch.im/cwtch v0.4.5 h1:BK4IMqCMf9xNmeLzaVDUbl2bnXdw5fOWXvEGBMTOjXM=
cwtch.im/cwtch v0.4.5/go.mod h1:Mh7vQQ3z55+prpX6EuUkg4QNQkBACMoDcgCNBeAH2EY=
cwtch.im/cwtch v0.4.7 h1:y8Roq1L1PAs0FkBDdk+7EUVLCHwyzl+dOEfVu4VX0Ic=
cwtch.im/cwtch v0.4.7/go.mod h1:Mh7vQQ3z55+prpX6EuUkg4QNQkBACMoDcgCNBeAH2EY=
cwtch.im/cwtch v0.4.8 h1:f/FIek3PkJMskLT+f7SpIjpjlp5hMspAnGguXC3SA8s=
cwtch.im/cwtch v0.4.8/go.mod h1:Mh7vQQ3z55+prpX6EuUkg4QNQkBACMoDcgCNBeAH2EY=
cwtch.im/tapir v0.2.0 h1:7MkoR5+uEuPW34/O0GZRidnIjq/01Cfm8nl5IRuqpGc=
cwtch.im/tapir v0.2.0/go.mod h1:xzzZ28adyUXNkYL1YodcHsAiTt3IJ8Loc29YVn9mIEQ=
cwtch.im/tapir v0.2.1 h1:t1YJB9q5sV1A9xwiiwL6WVfw3dwQWLoecunuzT1PQtw=

View File

@ -25,7 +25,7 @@ type GrandCentralDispatcher struct {
QMLEngine *qml.QQmlApplicationEngine
Translator, OpaqueTranslator *core.QTranslator
uIManagers map[string]Manager // profile-onion : Manager
uIManagers map[string]Manager // profile-onion : Manager
TimelineInterface *MessageModel
GlobalSettings *GlobalSettings
@ -36,16 +36,16 @@ type GrandCentralDispatcher struct {
m_selectedProfile string
m_selectedConversation string
_ string `property:"os"`
_ float32 `property:"themeScale,auto,changed"`
_ string `property:"theme,auto,changed"`
_ string `property:"locale,auto,changed"`
_ string `property:"version"`
_ string `property:"buildDate"`
_ string `property:"assetPath"`
_ string `property:"selectedProfile,auto"`
_ string `property:"selectedConversation,auto"`
_ bool `property:experimentsEnabled,auto,changed`
_ string `property:"os"`
_ float32 `property:"themeScale,auto,changed"`
_ string `property:"theme,auto,changed"`
_ string `property:"locale,auto,changed"`
_ string `property:"version"`
_ string `property:"buildDate"`
_ string `property:"assetPath"`
_ string `property:"selectedProfile,auto"`
_ string `property:"selectedConversation,auto"`
_ bool `property:experimentsEnabled,auto,changed`
_ map[string]bool `property:experiments,auto,changed`
// profile management stuff
@ -58,12 +58,12 @@ type GrandCentralDispatcher struct {
// server management
_ func(handle, displayname, image string, status int, autostart bool, bundle string, messages int, key_types []string, keys []string) `signal:"AddServer"`
_ func() `signal:"requestServers,auto"`
_ func() `signal:"newServer,auto"`
_ func(server string) `signal:"startServer,auto"`
_ func(server string) `signal:"stopServer,auto"`
_ func(server string) `signal:"checkServer,auto"`
_ func(server string, enabled bool) `signal:"autostartServer",auto`
_ func() `signal:"requestServers,auto"`
_ func() `signal:"newServer,auto"`
_ func(server string) `signal:"startServer,auto"`
_ func(server string) `signal:"stopServer,auto"`
_ func(server string) `signal:"checkServer,auto"`
_ func(server string, enabled bool) `signal:"autostartServer",auto`
// contact list stuff
_ func(handle, displayName, image string, badge, status int, authorization string, loading bool, lastMsgTime int) `signal:"AddContact"`
@ -75,12 +75,12 @@ type GrandCentralDispatcher struct {
_ func(handle, key, value string) `signal:"UpdateContactAttribute"`
// messages pane stuff
_ func() `signal:"ClearMessages"`
_ func() `signal:"ResetMessagePane"`
_ func(mID string) `signal:"Acknowledged"`
_ func(title string) `signal:"SetToolbarTitle"`
_ func(signature string, err string) `signal:"GroupSendError"`
_ func(loading bool) `signal:"SetLoadingState"`
_ func() `signal:"ClearMessages"`
_ func() `signal:"ResetMessagePane"`
_ func(mID string) `signal:"Acknowledged"`
_ func(title string) `signal:"SetToolbarTitle"`
_ func(signature string, err string) `signal:"GroupSendError"`
_ func(loading bool) `signal:"SetLoadingState"`
// profile-area stuff
_ func(name, onion, image, tag, showBlocked string) `signal:"UpdateMyProfile"`
@ -111,6 +111,7 @@ type GrandCentralDispatcher struct {
_ func(onion string) `signal:"loadMessagesPane,auto"`
_ func(signal string) `signal:"broadcast,auto"` // convenience relay signal
_ func(str string) `signal:"importString,auto"`
_ func(name, address string) `signal:"addPeer,auto"`
_ func(str string) `signal:"createContact,auto"`
_ func(str string) `signal:"popup,auto"`
_ func(server, groupName string) `signal:"createGroup,auto"`
@ -128,7 +129,7 @@ type GrandCentralDispatcher struct {
_ func(onion string) `signal:"storeHistoryForPeer,auto"`
_ func(onion string) `signal:"deleteHistoryForPeer,auto"`
// chat
_ func(mID string) `slot:"peerAckAlert,auto"`
_ func(mID string) `slot:"peerAckAlert,auto"`
_ func(handle string) `signal:"requestServerSettings,auto"`
@ -251,7 +252,7 @@ func (this *GrandCentralDispatcher) sendMessage(message string) {
}
if isGroup(this.SelectedConversation()) {
if gf,err := groups.ExperimentGate(this.GlobalSettings.Experiments); err == nil {
if gf, err := groups.ExperimentGate(this.GlobalSettings.Experiments); err == nil {
groupHandle := this.SelectedConversation()
this.TimelineInterface.AddMessage(this.TimelineInterface.num())
err := gf.SendMessage(groupHandle, message)
@ -351,7 +352,8 @@ func (this *GrandCentralDispatcher) requestPeerSettings(handle string) {
func (this *GrandCentralDispatcher) savePeerSettings(onion, nick string) {
the.Peer.SetContactAttribute(onion, attr.GetLocalScope(constants.Name), nick)
this.UpdateContactDisplayName(onion, nick)
newNick := GetNick(onion)
this.UpdateContactDisplayName(onion, newNick)
}
func (this *GrandCentralDispatcher) storeHistoryForPeer(onion string) {
@ -388,15 +390,11 @@ func (this *GrandCentralDispatcher) requestServerSettings(groupID string) {
}
func (this *GrandCentralDispatcher) requestServers() {
the.AppBus.Publish(event.NewEvent(constants.ListServers, map[event.Field]string{
}))
the.AppBus.Publish(event.NewEvent(constants.ListServers, map[event.Field]string{}))
}
func (this *GrandCentralDispatcher) newServer() {
the.AppBus.Publish(event.NewEvent(constants.NewServer, map[event.Field]string{
}))
the.AppBus.Publish(event.NewEvent(constants.NewServer, map[event.Field]string{}))
}
func (this *GrandCentralDispatcher) startServer(onion string) {
@ -427,7 +425,7 @@ func (this *GrandCentralDispatcher) autostartServer(onion string, enabled bool)
value = event.True
}
the.AppBus.Publish(event.NewEvent(constants.AutoStart, map[event.Field]string{
event.Onion: onion,
event.Onion: onion,
constants.AutoStartEnabled: value,
}))
}
@ -478,13 +476,49 @@ func (this *GrandCentralDispatcher) createContact(onion string) {
the.Peer.PeerWithOnion(onion)
}
func (this *GrandCentralDispatcher) addPeer(name, address string) {
log.Debugf("importing peer: %s\n", address)
name = strings.TrimSpace(name)
address = strings.TrimSpace(address)
if len(address) != 56 {
this.InvokePopup("invalid peer onion format")
return
}
name = strings.TrimSpace(name)
_, err := base32.StdEncoding.DecodeString(strings.ToUpper(address[:56]))
if err != nil {
log.Debugln(err)
this.InvokePopup("bad format. missing handlers?")
return
}
checkc := the.Peer.GetContact(address)
if checkc != nil {
this.InvokePopup("already have this contact")
return //TODO: bring them to the duplicate
} else {
the.Peer.AddContact(name, address, model.AuthApproved)
if name != "" {
the.Peer.SetContactAttribute(address, attr.GetLocalScope(constants.Name), name)
}
the.Peer.PeerWithOnion(address)
}
this.GetUiManager(this.selectedProfile()).AddContact(address)
}
// Deprecated TODO: delete when gcd.addGroup is implemented from this
func (this *GrandCentralDispatcher) importString(str string) {
if len(str) < 5 {
log.Debugf("ignoring short string")
return
}
if gf,err := groups.ExperimentGate(this.GlobalSettings.Experiments); err == nil {
if gf, err := groups.ExperimentGate(this.GlobalSettings.Experiments); err == nil {
if gf.ValidPrefix(str) {
err = gf.HandleImportString(str)
if err == nil {
@ -492,7 +526,7 @@ func (this *GrandCentralDispatcher) importString(str string) {
this.InvokePopup("successfully imported")
return
}
this.InvokePopup("failed import: " + err.Error())
this.InvokePopup("failed import: " + err.Error())
return
}
// drop through to peer import strings
@ -503,8 +537,6 @@ func (this *GrandCentralDispatcher) importString(str string) {
name := onion
str = strings.TrimSpace(str)
if strings.Contains(str, " ") { // usually people prepend spaces and we don't want it going into the name (use ~ for that)
parts := strings.Split(strings.TrimSpace(str), " ")
str = parts[len(parts)-1]
@ -732,9 +764,8 @@ func (this *GrandCentralDispatcher) loadProfile(onion string) {
}
}
// Groups Gating
if _,err := groups.ExperimentGate(this.GlobalSettings.Experiments); err == nil {
if _, err := groups.ExperimentGate(this.GlobalSettings.Experiments); err == nil {
the.Peer.StartServerConnections()
groups := the.Peer.GetGroups()
for i := range groups {
@ -795,4 +826,4 @@ func (this *GrandCentralDispatcher) deleteProfile(onion string) {
func (this *GrandCentralDispatcher) peerAckAlert(mID string) {
idx, _ := strconv.Atoi(mID)
this.TimelineInterface.EditMessage(idx)
}
}

Binary file not shown.

View File

@ -8,28 +8,117 @@
<translation type="vanished">Gruppe Anlegen</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="31"/>
<source>server-label</source>
<extracomment>Server label</extracomment>
<translation>Server</translation>
<translation type="vanished">Server</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="42"/>
<source>group-name-label</source>
<extracomment>Group name label</extracomment>
<translation>Gruppenname</translation>
<translation type="vanished">Gruppenname</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="49"/>
<source>default-group-name</source>
<extracomment>default suggested group name</extracomment>
<translation>Tolle Gruppe</translation>
<translation type="vanished">Tolle Gruppe</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="54"/>
<source>create-group-btn</source>
<extracomment>create group button</extracomment>
<translation>Anlegen</translation>
<translation type="vanished">Anlegen</translation>
</message>
</context>
<context>
<name>AddPeerGroupPane</name>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="45"/>
<source>profile-oniblon-label</source>
<extracomment>Send this address to peers you want to connect with</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="55"/>
<source>copy-btn</source>
<translation type="unfinished">Kopieren</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="59"/>
<source>copied-to-clipboard-notification</source>
<extracomment>notification: copied to clipboard</extracomment>
<translation type="unfinished">in die Zwischenablage kopiert</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="86"/>
<source>add-peer-tab</source>
<extracomment>Add a peer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="103"/>
<source>create-group-tab</source>
<extracomment>Create a group</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="120"/>
<source>join-group-tab</source>
<extracomment>Join a group</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="157"/>
<source>peer-address</source>
<extracomment>Address</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="169"/>
<source>peer-name</source>
<extracomment>Name</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="190"/>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="246"/>
<source>group-name</source>
<extracomment>Group Name
----------
Name</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="202"/>
<source>server</source>
<extracomment>Server</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="211"/>
<source>invitation</source>
<extracomment>Invitation</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="233"/>
<source>group-addr</source>
<extracomment>Address</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="265"/>
<source>add-peer</source>
<extracomment>Add Peer | Create Group | Join Group</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="265"/>
<source>create-group</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="265"/>
<source>join-group</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -270,17 +359,17 @@
<translation type="vanished">Ablehnen</translation>
</message>
<message>
<location filename="../qml/panes/OverlayPane.qml" line="66"/>
<location filename="../qml/panes/OverlayPane.qml" line="35"/>
<source>chat-btn</source>
<translation>Chat</translation>
</message>
<message>
<location filename="../qml/panes/OverlayPane.qml" line="80"/>
<location filename="../qml/panes/OverlayPane.qml" line="49"/>
<source>lists-btn</source>
<translation>Listen</translation>
</message>
<message>
<location filename="../qml/panes/OverlayPane.qml" line="94"/>
<location filename="../qml/panes/OverlayPane.qml" line="63"/>
<source>bulletins-btn</source>
<translation>Meldungen</translation>
</message>
@ -347,11 +436,6 @@
</context>
<context>
<name>ProfileAddEditPane</name>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="35"/>
<source>default-profile-name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="179"/>
<source>copy-btn</source>
@ -364,13 +448,13 @@
<translation type="unfinished">in die Zwischenablage kopiert</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="276"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="275"/>
<source>radio-use-password</source>
<extracomment>Password</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="286"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="285"/>
<source>radio-no-password</source>
<extracomment>Unencrypted (No password)</extracomment>
<translation type="unfinished"></translation>
@ -399,73 +483,73 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="260"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="259"/>
<source>your-display-name</source>
<extracomment>Your Display Name</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="304"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="303"/>
<source>current-password-label</source>
<extracomment>Current Password</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="322"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="321"/>
<source>password1-label</source>
<extracomment>Password</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="340"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="339"/>
<source>password2-label</source>
<extracomment>Reenter password</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="375"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="374"/>
<source>create-profile-btn</source>
<extracomment>Create || Save</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="375"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="374"/>
<source>save-profile-btn</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="352"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="351"/>
<source>password-error-match</source>
<extracomment>Passwords do not match</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="363"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="362"/>
<source>password-change-error</source>
<extracomment>Error changing password: Supplied password rejected</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="420"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="419"/>
<source>delete-profile-btn</source>
<extracomment>Delete Profile</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="439"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="452"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="438"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="451"/>
<source>delete-confirm-label</source>
<extracomment>Type DELETE to confirm</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="463"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="462"/>
<source>delete-profile-confirm-btn</source>
<extracomment>Really Delete Profile</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="468"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="467"/>
<source>delete-confirm-text</source>
<extracomment>DELETE</extracomment>
<translation type="unfinished"></translation>
@ -638,4 +722,13 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../qml/main.qml" line="251"/>
<source>new-connection-pane-title</source>
<extracomment>New Connection</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

Binary file not shown.

View File

@ -8,28 +8,117 @@
<translation type="vanished">Create Group</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="31"/>
<source>server-label</source>
<extracomment>Server label</extracomment>
<translation>Server</translation>
<translation type="vanished">Server</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="42"/>
<source>group-name-label</source>
<extracomment>Group name label</extracomment>
<translation type="vanished">Group name</translation>
</message>
<message>
<source>default-group-name</source>
<extracomment>default suggested group name</extracomment>
<translation type="vanished">Awesome Group</translation>
</message>
<message>
<source>create-group-btn</source>
<extracomment>create group button</extracomment>
<translation type="vanished">Create</translation>
</message>
</context>
<context>
<name>AddPeerGroupPane</name>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="45"/>
<source>profile-oniblon-label</source>
<extracomment>Send this address to peers you want to connect with</extracomment>
<translation>Send this address to peers you want to connect with</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="55"/>
<source>copy-btn</source>
<translation>Copy</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="59"/>
<source>copied-to-clipboard-notification</source>
<extracomment>notification: copied to clipboard</extracomment>
<translation>Copied to Clipboard</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="86"/>
<source>add-peer-tab</source>
<extracomment>Add a peer</extracomment>
<translation>Add a peer</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="103"/>
<source>create-group-tab</source>
<extracomment>Create a group</extracomment>
<translation>Create a group</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="120"/>
<source>join-group-tab</source>
<extracomment>Join a group</extracomment>
<translation>Join a group</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="157"/>
<source>peer-address</source>
<extracomment>Address</extracomment>
<translation>Address</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="169"/>
<source>peer-name</source>
<extracomment>Name</extracomment>
<translation>Name</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="190"/>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="246"/>
<source>group-name</source>
<extracomment>Group Name
----------
Name</extracomment>
<translation>Group name</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="49"/>
<source>default-group-name</source>
<extracomment>default suggested group name</extracomment>
<translation>Awesome Group</translation>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="202"/>
<source>server</source>
<extracomment>Server</extracomment>
<translation>Server</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="54"/>
<source>create-group-btn</source>
<extracomment>create group button</extracomment>
<translation>Create</translation>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="211"/>
<source>invitation</source>
<extracomment>Invitation</extracomment>
<translation>Invitation</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="233"/>
<source>group-addr</source>
<extracomment>Address</extracomment>
<translation>Address</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="265"/>
<source>add-peer</source>
<extracomment>Add Peer | Create Group | Join Group</extracomment>
<translation>Add Peer</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="265"/>
<source>create-group</source>
<translation>Create group</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="265"/>
<source>join-group</source>
<translation>Join group</translation>
</message>
</context>
<context>
@ -350,17 +439,17 @@ Right-click to reset.</translation>
<translation type="vanished">Reject</translation>
</message>
<message>
<location filename="../qml/panes/OverlayPane.qml" line="66"/>
<location filename="../qml/panes/OverlayPane.qml" line="35"/>
<source>chat-btn</source>
<translation>Chat</translation>
</message>
<message>
<location filename="../qml/panes/OverlayPane.qml" line="80"/>
<location filename="../qml/panes/OverlayPane.qml" line="49"/>
<source>lists-btn</source>
<translation>Lists</translation>
</message>
<message>
<location filename="../qml/panes/OverlayPane.qml" line="94"/>
<location filename="../qml/panes/OverlayPane.qml" line="63"/>
<source>bulletins-btn</source>
<translation>Bulletins</translation>
</message>
@ -445,9 +534,8 @@ Right-click to reset.</translation>
<translation type="vanished">Display name</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="35"/>
<source>default-profile-name</source>
<translation>Alice</translation>
<translation type="vanished">Alice</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="111"/>
@ -477,13 +565,13 @@ Right-click to reset.</translation>
<translation>Copied to Clipboard</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="276"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="275"/>
<source>radio-use-password</source>
<extracomment>Password</extracomment>
<translation>Password</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="286"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="285"/>
<source>radio-no-password</source>
<extracomment>Unencrypted (No password)</extracomment>
<translation>Unencrypted (No password)</translation>
@ -501,73 +589,73 @@ Right-click to reset.</translation>
<translation>Send this address to peers you want to connect with</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="260"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="259"/>
<source>your-display-name</source>
<extracomment>Your Display Name</extracomment>
<translation>Your Display Name</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="304"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="303"/>
<source>current-password-label</source>
<extracomment>Current Password</extracomment>
<translation>Current Password</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="322"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="321"/>
<source>password1-label</source>
<extracomment>Password</extracomment>
<translation>Password</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="340"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="339"/>
<source>password2-label</source>
<extracomment>Reenter password</extracomment>
<translation>Reenter password</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="375"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="374"/>
<source>create-profile-btn</source>
<extracomment>Create || Save</extracomment>
<translation>Create Profile</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="375"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="374"/>
<source>save-profile-btn</source>
<translation>Save Profile</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="352"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="351"/>
<source>password-error-match</source>
<extracomment>Passwords do not match</extracomment>
<translation>Passwords do not match</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="363"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="362"/>
<source>password-change-error</source>
<extracomment>Error changing password: Supplied password rejected</extracomment>
<translation>Error changing password: Supplied password rejected</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="420"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="419"/>
<source>delete-profile-btn</source>
<extracomment>Delete Profile</extracomment>
<translation>Delete Profile</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="439"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="452"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="438"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="451"/>
<source>delete-confirm-label</source>
<extracomment>Type DELETE to confirm</extracomment>
<translation>Type DELETE to confirm</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="463"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="462"/>
<source>delete-profile-confirm-btn</source>
<extracomment>Really Delete Profile</extracomment>
<translation>Really Delete Profile</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="468"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="467"/>
<source>delete-confirm-text</source>
<extracomment>DELETE</extracomment>
<translation>DELETE</translation>
@ -697,7 +785,7 @@ Right-click to reset.</translation>
<location filename="../qml/panes/SettingsPane.qml" line="127"/>
<source>experiments-enabled</source>
<extracomment>Theme</extracomment>
<translation type="unfinished"></translation>
<translation>Experiments enabled</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="188"/>
@ -757,4 +845,13 @@ Right-click to reset.</translation>
<translation>Online</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../qml/main.qml" line="251"/>
<source>new-connection-pane-title</source>
<extracomment>New Connection</extracomment>
<translation>New Connection</translation>
</message>
</context>
</TS>

Binary file not shown.

View File

@ -8,28 +8,117 @@
<translation type="vanished">Créer un groupe</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="31"/>
<source>server-label</source>
<extracomment>Server label</extracomment>
<translation>Serveur</translation>
<translation type="vanished">Serveur</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="42"/>
<source>group-name-label</source>
<extracomment>Group name label</extracomment>
<translation>Groupe</translation>
<translation type="vanished">Groupe</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="49"/>
<source>default-group-name</source>
<extracomment>default suggested group name</extracomment>
<translation>Un super groupe</translation>
<translation type="vanished">Un super groupe</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="54"/>
<source>create-group-btn</source>
<extracomment>create group button</extracomment>
<translation>Créer</translation>
<translation type="vanished">Créer</translation>
</message>
</context>
<context>
<name>AddPeerGroupPane</name>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="45"/>
<source>profile-oniblon-label</source>
<extracomment>Send this address to peers you want to connect with</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="55"/>
<source>copy-btn</source>
<translation type="unfinished">Copier</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="59"/>
<source>copied-to-clipboard-notification</source>
<extracomment>notification: copied to clipboard</extracomment>
<translation type="unfinished">Copié dans le presse-papier</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="86"/>
<source>add-peer-tab</source>
<extracomment>Add a peer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="103"/>
<source>create-group-tab</source>
<extracomment>Create a group</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="120"/>
<source>join-group-tab</source>
<extracomment>Join a group</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="157"/>
<source>peer-address</source>
<extracomment>Address</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="169"/>
<source>peer-name</source>
<extracomment>Name</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="190"/>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="246"/>
<source>group-name</source>
<extracomment>Group Name
----------
Name</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="202"/>
<source>server</source>
<extracomment>Server</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="211"/>
<source>invitation</source>
<extracomment>Invitation</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="233"/>
<source>group-addr</source>
<extracomment>Address</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="265"/>
<source>add-peer</source>
<extracomment>Add Peer | Create Group | Join Group</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="265"/>
<source>create-group</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="265"/>
<source>join-group</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -270,17 +359,17 @@
<translation type="vanished">Refuser</translation>
</message>
<message>
<location filename="../qml/panes/OverlayPane.qml" line="66"/>
<location filename="../qml/panes/OverlayPane.qml" line="35"/>
<source>chat-btn</source>
<translation>Discuter</translation>
</message>
<message>
<location filename="../qml/panes/OverlayPane.qml" line="80"/>
<location filename="../qml/panes/OverlayPane.qml" line="49"/>
<source>lists-btn</source>
<translation>Listes</translation>
</message>
<message>
<location filename="../qml/panes/OverlayPane.qml" line="94"/>
<location filename="../qml/panes/OverlayPane.qml" line="63"/>
<source>bulletins-btn</source>
<translation>Bulletins</translation>
</message>
@ -347,11 +436,6 @@
</context>
<context>
<name>ProfileAddEditPane</name>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="35"/>
<source>default-profile-name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="179"/>
<source>copy-btn</source>
@ -364,13 +448,13 @@
<translation type="unfinished">Copié dans le presse-papier</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="276"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="275"/>
<source>radio-use-password</source>
<extracomment>Password</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="286"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="285"/>
<source>radio-no-password</source>
<extracomment>Unencrypted (No password)</extracomment>
<translation type="unfinished"></translation>
@ -399,73 +483,73 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="260"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="259"/>
<source>your-display-name</source>
<extracomment>Your Display Name</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="304"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="303"/>
<source>current-password-label</source>
<extracomment>Current Password</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="322"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="321"/>
<source>password1-label</source>
<extracomment>Password</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="340"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="339"/>
<source>password2-label</source>
<extracomment>Reenter password</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="375"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="374"/>
<source>create-profile-btn</source>
<extracomment>Create || Save</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="375"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="374"/>
<source>save-profile-btn</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="352"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="351"/>
<source>password-error-match</source>
<extracomment>Passwords do not match</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="363"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="362"/>
<source>password-change-error</source>
<extracomment>Error changing password: Supplied password rejected</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="420"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="419"/>
<source>delete-profile-btn</source>
<extracomment>Delete Profile</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="439"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="452"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="438"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="451"/>
<source>delete-confirm-label</source>
<extracomment>Type DELETE to confirm</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="463"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="462"/>
<source>delete-profile-confirm-btn</source>
<extracomment>Really Delete Profile</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="468"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="467"/>
<source>delete-confirm-text</source>
<extracomment>DELETE</extracomment>
<translation type="unfinished"></translation>
@ -638,4 +722,13 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../qml/main.qml" line="251"/>
<source>new-connection-pane-title</source>
<extracomment>New Connection</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

Binary file not shown.

View File

@ -8,28 +8,117 @@
<translation type="vanished">Criar Grupo</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="31"/>
<source>server-label</source>
<extracomment>Server label</extracomment>
<translation>Servidor</translation>
<translation type="vanished">Servidor</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="42"/>
<source>group-name-label</source>
<extracomment>Group name label</extracomment>
<translation>Nome do grupo</translation>
<translation type="vanished">Nome do grupo</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="49"/>
<source>default-group-name</source>
<extracomment>default suggested group name</extracomment>
<translation>Grupo incrível</translation>
<translation type="vanished">Grupo incrível</translation>
</message>
<message>
<location filename="../qml/panes/AddGroupPane.qml" line="54"/>
<source>create-group-btn</source>
<extracomment>create group button</extracomment>
<translation>Criar</translation>
<translation type="vanished">Criar</translation>
</message>
</context>
<context>
<name>AddPeerGroupPane</name>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="45"/>
<source>profile-oniblon-label</source>
<extracomment>Send this address to peers you want to connect with</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="55"/>
<source>copy-btn</source>
<translation type="unfinished">Copiar</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="59"/>
<source>copied-to-clipboard-notification</source>
<extracomment>notification: copied to clipboard</extracomment>
<translation type="unfinished">Copiado</translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="86"/>
<source>add-peer-tab</source>
<extracomment>Add a peer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="103"/>
<source>create-group-tab</source>
<extracomment>Create a group</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="120"/>
<source>join-group-tab</source>
<extracomment>Join a group</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="157"/>
<source>peer-address</source>
<extracomment>Address</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="169"/>
<source>peer-name</source>
<extracomment>Name</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="190"/>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="246"/>
<source>group-name</source>
<extracomment>Group Name
----------
Name</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="202"/>
<source>server</source>
<extracomment>Server</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="211"/>
<source>invitation</source>
<extracomment>Invitation</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="233"/>
<source>group-addr</source>
<extracomment>Address</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="265"/>
<source>add-peer</source>
<extracomment>Add Peer | Create Group | Join Group</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="265"/>
<source>create-group</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/AddPeerGroupPane.qml" line="265"/>
<source>join-group</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -270,17 +359,17 @@
<translation type="vanished">Recusar</translation>
</message>
<message>
<location filename="../qml/panes/OverlayPane.qml" line="66"/>
<location filename="../qml/panes/OverlayPane.qml" line="35"/>
<source>chat-btn</source>
<translation>Chat</translation>
</message>
<message>
<location filename="../qml/panes/OverlayPane.qml" line="80"/>
<location filename="../qml/panes/OverlayPane.qml" line="49"/>
<source>lists-btn</source>
<translation>Listas</translation>
</message>
<message>
<location filename="../qml/panes/OverlayPane.qml" line="94"/>
<location filename="../qml/panes/OverlayPane.qml" line="63"/>
<source>bulletins-btn</source>
<translation>Boletins</translation>
</message>
@ -347,11 +436,6 @@
</context>
<context>
<name>ProfileAddEditPane</name>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="35"/>
<source>default-profile-name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="179"/>
<source>copy-btn</source>
@ -364,13 +448,13 @@
<translation type="unfinished">Copiado</translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="276"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="275"/>
<source>radio-use-password</source>
<extracomment>Password</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="286"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="285"/>
<source>radio-no-password</source>
<extracomment>Unencrypted (No password)</extracomment>
<translation type="unfinished"></translation>
@ -399,73 +483,73 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="260"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="259"/>
<source>your-display-name</source>
<extracomment>Your Display Name</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="304"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="303"/>
<source>current-password-label</source>
<extracomment>Current Password</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="322"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="321"/>
<source>password1-label</source>
<extracomment>Password</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="340"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="339"/>
<source>password2-label</source>
<extracomment>Reenter password</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="375"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="374"/>
<source>create-profile-btn</source>
<extracomment>Create || Save</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="375"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="374"/>
<source>save-profile-btn</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="352"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="351"/>
<source>password-error-match</source>
<extracomment>Passwords do not match</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="363"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="362"/>
<source>password-change-error</source>
<extracomment>Error changing password: Supplied password rejected</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="420"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="419"/>
<source>delete-profile-btn</source>
<extracomment>Delete Profile</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="439"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="452"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="438"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="451"/>
<source>delete-confirm-label</source>
<extracomment>Type DELETE to confirm</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="463"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="462"/>
<source>delete-profile-confirm-btn</source>
<extracomment>Really Delete Profile</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="468"/>
<location filename="../qml/panes/ProfileAddEditPane.qml" line="467"/>
<source>delete-confirm-text</source>
<extracomment>DELETE</extracomment>
<translation type="unfinished"></translation>
@ -638,4 +722,13 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../qml/main.qml" line="251"/>
<source>new-connection-pane-title</source>
<extracomment>New Connection</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -5,7 +5,7 @@
<file>qml/overlays/ListOverlay.qml</file>
<file>qml/overlays/MembershipOverlay.qml</file>
<file>qml/main.qml</file>
<file>qml/panes/AddGroupPane.qml</file>
<file>qml/panes/AddPeerGroupPane.qml</file>
<file>qml/panes/GroupSettingsPane.qml</file>
<file>qml/panes/OverlayPane.qml</file>
<file>qml/panes/PeerSettingsPane.qml</file>

View File

@ -214,7 +214,7 @@ ApplicationWindow {
readonly property int messagePane: 1
readonly property int userProfilePane: 2
readonly property int groupProfilePane: 3
readonly property int addGroupPane: 4
readonly property int addPeerGroupPane: 4
readonly property int serverInfoPane: 5
Item { anchors.fill: parent } // empty
@ -234,7 +234,10 @@ ApplicationWindow {
GroupSettingsPane{ anchors.fill: parent }
AddGroupPane { anchors.fill: parent }
AddPeerGroupPane {
id: addPeerGroupPaneInstance
anchors.fill: parent
}
ServerInfoPane { anchors.fill: parent }
@ -243,6 +246,11 @@ ApplicationWindow {
if (currentIndex == emptyPane) {
toolbar.hideTitle()
toolbar.rightMenuVisible = false
} else if (currentIndex == addPeerGroupPane) {
//: New Connection
toolbar.setTitle(qsTr('new-connection-pane-title'))
toolbar.rightMenuVisible = false
addPeerGroupPaneInstance.reset()
}
}
@ -275,8 +283,6 @@ ApplicationWindow {
function updateToolbar() {
if (currentIndex == splashPane) {
toolbar.hideTitle()
toolbar.rightMenuVisible = false

@ -1 +1 @@
Subproject commit 15e3f5ab84473070d16238f36fa04584d46f0bcb
Subproject commit 80eaf1a0d22efb3b6835599368bc288a9e0aa592

View File

@ -1,63 +0,0 @@
import QtGraphicalEffects 1.0
import QtQuick 2.7
import QtQuick.Controls 2.4
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
import QtQuick.Window 2.11
import QtQuick.Controls 1.4
import "../opaque" as Opaque
import "../opaque/styles"
ColumnLayout { // settingsPane
id: root
anchors.fill: parent
Flickable {
anchors.fill: parent
boundsBehavior: Flickable.StopAtBounds
clip:true
contentWidth: tehcol.width
contentHeight: tehcol.height
Column {
id: tehcol
leftPadding: 10
spacing: 5
width: root.width
Opaque.ScalingLabel {
//: Server label
text: qsTr("server-label") + ":"
}
TextField {
id: txtServer
style: CwtchTextFieldStyle{ width: tehcol.width * 0.8 }
text: "2c3kmoobnyghj2zw6pwv7d57yzld753auo3ugauezzpvfak3ahc4bdyd"
}
Opaque.ScalingLabel{
//: Group name label
text: qsTr("group-name-label") + ":"
}
TextField {
id: txtGroupName
style: CwtchTextFieldStyle{ width: tehcol.width * 0.8 }
//: default suggested group name
text: qsTr("default-group-name")
}
Opaque.Button {
//: create group button
text: qsTr("create-group-btn")
onClicked: {
gcd.createGroup(txtServer.text, txtGroupName.text)
}
}
}//end of column with padding
}//end of flickable
}

View File

@ -0,0 +1,283 @@
import QtGraphicalEffects 1.0
import QtQuick 2.7
import QtQuick.Controls 2.4
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
import QtQuick.Window 2.11
import QtQuick.Controls 1.4
import "../opaque" as Opaque
import "../opaque/styles"
import "../utils.js" as Utils
import "../opaque/theme"
import "../const"
Rectangle {
id: root
color: Theme.backgroundPaneColor
function reset() {
addStack.currentIndex = addStack.addPeer
peerAddr.text = ""
peerName.text = ""
groupNameCreate.text = ""
groupAddr.text = ""
groupNameJoin.text = ""
onionLabel.text = gcd.selectedProfile
}
Column {
anchors.fill: parent
spacing: 25 * gcd.themeScale
leftPadding: 20 * gcd.themeScale
rightPadding: 20 * gcd.themeScale
Opaque.ScalingLabel {
id: shareLabel
anchors {
left: parent.left
right: parent.right
}
horizontalAlignment:Text.AlignHCenter
size: Theme.secondaryTextSize
wrapMode: Text.Wrap
//: Send this address to peers you want to connect with
text: qsTr("profile-oniblon-label")
}
Opaque.ButtonTextField {
id: onionLabel
anchors.horizontalCenter: parent.horizontalCenter
readOnly: true
width: parent.width - (40*gcd.themeScale)
button_text: qsTr("copy-btn")
dropShadowColor: Theme.dropShadowPaneColor
onClicked: {
//: notification: copied to clipboard
gcd.popup(qsTr("copied-to-clipboard-notification"))
onionLabel.selectAll()
onionLabel.copy()
}
}
Rectangle { // Spacer
width: 1
height: 25 * gcd.themeScale
color: root.color
}
RowLayout {
id: switcher
visible: gcd.experimentsEnabled && Utils.checkMap(gcd.experiments, "tapir-groups-experiment")
height: addPeerTab.height
implicitHeight: height
anchors.left: parent.left
anchors.right: parent.right
Opaque.Tab {
id: addPeerTab
Layout.fillWidth: true
active: addStack.currentIndex == addStack.addPeer
//: Add a peer
text: qsTr("add-peer-tab")
size: Theme.chatMetaTextSize
onClicked: { addStack.currentIndex = addStack.addPeer; }
}
Rectangle {
width: 2
height: parent.height
color: Theme.dividerColor
}
Opaque.Tab {
Layout.fillWidth: true
active: addStack.currentIndex == addStack.createGroup
//: Create a group
text: qsTr("create-group-tab")
size: Theme.chatMetaTextSize
onClicked: { addStack.currentIndex = addStack.createGroup }
}
Rectangle {
width: 2
height: parent.height
color: Theme.dividerColor
}
Opaque.Tab {
Layout.fillWidth: true
active: addStack.currentIndex == addStack.joinGroup
//: Join a group
text: qsTr("join-group-tab")
size: Theme.chatMetaTextSize
onClicked: { addStack.currentIndex = addStack.joinGroup}
}
}
StackLayout {
id: addStack
anchors.left: parent.left
anchors.right: parent.right
implicitHeight: height
currentIndex: addPeer
readonly property int addPeer: 0
readonly property int createGroup: 1
readonly property int joinGroup: 2
Column { // Add a peer
Layout.fillWidth: true
leftPadding: 20 * gcd.themeScale
rightPadding: 20 * gcd.themeScale
spacing: 25 * gcd.themeScale
Opaque.UnderlineTextField {
id: peerAddr
backgroundColor: Theme.backgroundPaneColor
width: parent.width - (40*gcd.themeScale)
anchors.horizontalCenter: parent.horizontalCenter
//: Address
placeholderText: qsTr("peer-address")
}
Opaque.UnderlineTextField {
id: peerName
backgroundColor: Theme.backgroundPaneColor
width: parent.width - (40*gcd.themeScale)
anchors.horizontalCenter: parent.horizontalCenter
//: Name
placeholderText: qsTr("peer-name")
}
}
Column {
Layout.fillWidth: true
leftPadding: 20 * gcd.themeScale
rightPadding: 20 * gcd.themeScale
spacing: 25 * gcd.themeScale
Opaque.UnderlineTextField {
visible: gcd.experimentsEnabled && Utils.checkMap(gcd.experiments, "tapir-groups-experiment")
id: groupNameCreate
backgroundColor: Theme.backgroundPaneColor
width: parent.width - (40*gcd.themeScale)
anchors.horizontalCenter: parent.horizontalCenter
//: Group Name
placeholderText: qsTr("group-name")
}
Row {
width: parent.width - (40*gcd.themeScale)
Column {
visible: gcd.experimentsEnabled && Utils.checkMap(gcd.experiments, "tapir-groups-experiment")
width: parent.width / 2
Opaque.ScalingLabel {
//: Server
text: qsTr("server")
}
}
Column {
visible: gcd.experimentsEnabled && Utils.checkMap(gcd.experiments, "tapir-groups-experiment")
width: parent.width / 2
Opaque.ScalingLabel {
//: Invitation
text: qsTr("invitation")
}
}
}
}
Column {
Layout.fillWidth: true
leftPadding: 20 * gcd.themeScale
rightPadding: 20 * gcd.themeScale
spacing: 25 * gcd.themeScale
Opaque.UnderlineTextField {
visible: gcd.experimentsEnabled && Utils.checkMap(gcd.experiments, "tapir-groups-experiment")
id: groupAddr
backgroundColor: Theme.backgroundPaneColor
width: parent.width - (40*gcd.themeScale)
anchors.horizontalCenter: parent.horizontalCenter
//: Address
placeholderText: qsTr("group-addr")
}
Opaque.UnderlineTextField {
visible: gcd.experimentsEnabled && Utils.checkMap(gcd.experiments, "tapir-groups-experiment")
id: groupNameJoin
backgroundColor: Theme.backgroundPaneColor
width: parent.width - (40*gcd.themeScale)
anchors.horizontalCenter: parent.horizontalCenter
//: Name
placeholderText: qsTr("group-name")
}
}
}
Rectangle { // Spacer
width: 1
height: 25 * gcd.themeScale
color: root.color
}
Opaque.Button {
anchors.horizontalCenter: parent.horizontalCenter
height: 40 * gcd.themeScale
//: Add Peer | Create Group | Join Group
text: addStack.currentIndex == addStack.addPeer ? qsTr("add-peer") : addStack.currentIndex == addStack.createGroup ? qsTr("create-group") : qsTr("join-group")
onClicked: {
if (addStack.currentIndex == addStack.addPeer) {
gcd.addPeer(peerName.text, peerAddr.text)
theStack.currentIndex = theStack.emptyPane
} // Else Group stuff
}
}
}
}

View File

@ -19,37 +19,6 @@ ColumnLayout {
property bool accepted
property bool inGroup
// TODO: this isn't needed now right? the peer approval flow can be addapted for groups too?
/* RowLayout {
visible:!overlay.accepted && (gcd.selectedConversation.length == 32)
Text {
//: Do you want to accept the invitation to $GROUP
text: qsTr("accept-group-invite-label") + " " + overlay.name + "?"
}
Opaque.Button {
//: Accept group invite button
text: qsTr("accept-group-btn")
icon: "regular/heart"
onClicked: {
gcd.acceptGroup(gcd.selectedConversation)
gcd.requestGroupSettings(gcd.selectedConversation)
}
}
Opaque.Button {
//: Reject Group invite button
text: qsTr("reject-group-btn")
icon: "regular/trash-alt"
onClicked: {
gcd.leaveGroup(gcd.selectedConversation)
theStack.pane = theStack.emptyPane
}
}
}*/
RowLayout {
id: switcher

View File

@ -130,7 +130,7 @@ Item {
width: height
radius: width * 0.3
onClicked: {
theStack.currentIndex = theStack.addPeerGroupPane
}
}
}