Merge remote-tracking branch 'smalishevskiy/test' into master-windows-changes-test
This commit is contained in:
commit
f1aed531e2
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
|
@ -9,7 +9,7 @@ jobs:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- run: sudo apt-get update
|
- run: sudo apt-get update
|
||||||
- run: sudo apt-get remove libunwind-14-dev
|
- run: sudo apt-get remove libunwind-14-dev
|
||||||
- run: sudo apt-get install -y build-essential gettext cmake valac libgee-0.8-dev libsqlite3-dev libgtk-4-dev libnotify-dev libgpgme-dev libsoup2.4-dev libgcrypt20-dev libqrencode-dev libnice-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libsrtp2-dev libwebrtc-audio-processing-dev libadwaita-1-dev libsignal-protocol-c-dev
|
- run: sudo apt-get install -y build-essential gettext cmake valac libgee-0.8-dev libsqlite3-dev libgtk-4-dev libnotify-dev libgpgme-dev libsoup2.4-dev libgcrypt20-dev libqrencode-dev libnice-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libsrtp2-dev libwebrtc-audio-processing-dev libadwaita-1-dev libsignal-protocol-c-dev libcanberra-dev
|
||||||
- run: ./configure --with-tests --with-libsignal-in-tree
|
- run: ./configure --with-tests --with-libsignal-in-tree
|
||||||
- run: make
|
- run: make
|
||||||
- run: build/xmpp-vala-test
|
- run: build/xmpp-vala-test
|
||||||
|
|
|
@ -13,8 +13,11 @@ endif ()
|
||||||
# Prepare Plugins
|
# Prepare Plugins
|
||||||
set(DEFAULT_PLUGINS omemo;openpgp;http-files;ice;rtp)
|
set(DEFAULT_PLUGINS omemo;openpgp;http-files;ice;rtp)
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
set(DEFAULT_PLUGINS ${DEFAULT_PLUGINS};win32-fonts;windows-notification)
|
list(APPEND DEFAULT_PLUGINS win32-fonts windows-notification)
|
||||||
endif (WIN32)
|
else()
|
||||||
|
list(APPEND DEFAULT_PLUGINS phone-ringer)
|
||||||
|
endif()
|
||||||
|
|
||||||
foreach (plugin ${DEFAULT_PLUGINS})
|
foreach (plugin ${DEFAULT_PLUGINS})
|
||||||
if ("$CACHE{DINO_PLUGIN_ENABLED_${plugin}}" STREQUAL "")
|
if ("$CACHE{DINO_PLUGIN_ENABLED_${plugin}}" STREQUAL "")
|
||||||
if (NOT DEFINED DINO_PLUGIN_ENABLED_${plugin}})
|
if (NOT DEFINED DINO_PLUGIN_ENABLED_${plugin}})
|
||||||
|
|
|
@ -120,6 +120,31 @@ public class Dino.HistorySync {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async void fetch_history(Account account, Jid target, Cancellable? cancellable = null) {
|
||||||
|
debug("Fetch history for %s", target.to_string());
|
||||||
|
|
||||||
|
RowOption latest_row_opt = db.mam_catchup.select()
|
||||||
|
.with(db.mam_catchup.account_id, "=", account.id)
|
||||||
|
.with(db.mam_catchup.server_jid, "=", target.to_string())
|
||||||
|
.with(db.mam_catchup.to_time, ">=", (long) new DateTime.from_unix_utc(0).to_unix())
|
||||||
|
.order_by(db.mam_catchup.to_time, "DESC")
|
||||||
|
.single().row();
|
||||||
|
Row? latest_row = latest_row_opt.is_present() ? latest_row_opt.inner : null;
|
||||||
|
|
||||||
|
if (latest_row == null) {
|
||||||
|
warning("Failed to fetch history for %s, no mam catchup data", target.to_string());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DateTime latest_time = new DateTime.now();
|
||||||
|
string latest_id = latest_row[db.mam_catchup.from_id];
|
||||||
|
|
||||||
|
Xmpp.MessageArchiveManagement.V2.MamQueryParams query_params;
|
||||||
|
query_params = new Xmpp.MessageArchiveManagement.V2.MamQueryParams.query_before(target, latest_time, latest_id);
|
||||||
|
|
||||||
|
yield fetch_query(account, query_params, latest_row[db.mam_catchup.id], cancellable);
|
||||||
|
}
|
||||||
|
|
||||||
public async void fetch_everything(Account account, Jid mam_server, Cancellable? cancellable = null, DateTime until_earliest_time = new DateTime.from_unix_utc(0)) {
|
public async void fetch_everything(Account account, Jid mam_server, Cancellable? cancellable = null, DateTime until_earliest_time = new DateTime.from_unix_utc(0)) {
|
||||||
debug("Fetch everything for %s %s", mam_server.to_string(), until_earliest_time != null ? @"(until $until_earliest_time)" : "");
|
debug("Fetch everything for %s %s", mam_server.to_string(), until_earliest_time != null ? @"(until $until_earliest_time)" : "");
|
||||||
RowOption latest_row_opt = db.mam_catchup.select()
|
RowOption latest_row_opt = db.mam_catchup.select()
|
||||||
|
|
|
@ -12,9 +12,7 @@ public class NotificationEvents : StreamInteractionModule, Object {
|
||||||
public signal void notify_content_item(ContentItem content_item, Conversation conversation);
|
public signal void notify_content_item(ContentItem content_item, Conversation conversation);
|
||||||
|
|
||||||
private StreamInteractor stream_interactor;
|
private StreamInteractor stream_interactor;
|
||||||
private Future<NotificationProvider> notifier;
|
private Gee.List<Promise<NotificationProvider>> promises = new ArrayList<Promise<NotificationProvider>>();
|
||||||
private Promise<NotificationProvider> notifier_promise;
|
|
||||||
private bool notifier_outstanding = true;
|
|
||||||
|
|
||||||
public static void start(StreamInteractor stream_interactor) {
|
public static void start(StreamInteractor stream_interactor) {
|
||||||
NotificationEvents m = new NotificationEvents(stream_interactor);
|
NotificationEvents m = new NotificationEvents(stream_interactor);
|
||||||
|
@ -31,18 +29,16 @@ public class NotificationEvents : StreamInteractionModule, Object {
|
||||||
stream_interactor.get_module(MucManager.IDENTITY).voice_request_received.connect((account, room_jid, from_jid, nick) => on_voice_request_received.begin(account, room_jid, from_jid, nick));
|
stream_interactor.get_module(MucManager.IDENTITY).voice_request_received.connect((account, room_jid, from_jid, nick) => on_voice_request_received.begin(account, room_jid, from_jid, nick));
|
||||||
|
|
||||||
stream_interactor.get_module(Calls.IDENTITY).call_incoming.connect((call, state, conversation, video, multiparty) => on_call_incoming.begin(call, state, conversation, video, multiparty));
|
stream_interactor.get_module(Calls.IDENTITY).call_incoming.connect((call, state, conversation, video, multiparty) => on_call_incoming.begin(call, state, conversation, video, multiparty));
|
||||||
|
stream_interactor.get_module(Calls.IDENTITY).call_outgoing.connect((call, state, conversation) => on_call_outgoing.begin(call));
|
||||||
|
|
||||||
stream_interactor.connection_manager.connection_error.connect((account, error) => on_connection_error.begin(account, error));
|
stream_interactor.connection_manager.connection_error.connect((account, error) => on_connection_error.begin(account, error));
|
||||||
stream_interactor.get_module(ChatInteraction.IDENTITY).focused_in.connect((conversation) => on_focused_in.begin(conversation));
|
stream_interactor.get_module(ChatInteraction.IDENTITY).focused_in.connect((conversation) => on_focused_in.begin(conversation));
|
||||||
|
|
||||||
notifier_promise = new Promise<NotificationProvider>();
|
|
||||||
notifier = notifier_promise.future;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void register_notification_provider(NotificationProvider notification_provider) {
|
public async void register_notification_provider(NotificationProvider notification_provider) {
|
||||||
if (notifier_outstanding || (yield notifier.wait_async()).get_priority() < notification_provider.get_priority()) {
|
var promise = new Promise<NotificationProvider>();
|
||||||
notifier_outstanding = false;
|
promise.set_value(notification_provider);
|
||||||
notifier_promise.set_value(notification_provider);
|
promises.add(promise);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void on_content_item_received(ContentItem item, Conversation conversation) {
|
private async void on_content_item_received(ContentItem item, Conversation conversation) {
|
||||||
|
@ -77,9 +73,11 @@ public class NotificationEvents : StreamInteractionModule, Object {
|
||||||
|
|
||||||
notify_content_item(item, conversation);
|
notify_content_item(item, conversation);
|
||||||
if (notify != Conversation.NotifySetting.OFF) {
|
if (notify != Conversation.NotifySetting.OFF) {
|
||||||
NotificationProvider notifier = yield notifier.wait_async();
|
foreach(var promise in promises) {
|
||||||
|
NotificationProvider notifier = yield promise.future.wait_async();
|
||||||
yield notifier.notify_message(message, conversation, conversation_display_name, participant_display_name);
|
yield notifier.notify_message(message, conversation, conversation_display_name, participant_display_name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case FileItem.TYPE:
|
case FileItem.TYPE:
|
||||||
FileTransfer file_transfer = ((FileItem) item).file_transfer;
|
FileTransfer file_transfer = ((FileItem) item).file_transfer;
|
||||||
|
@ -91,9 +89,11 @@ public class NotificationEvents : StreamInteractionModule, Object {
|
||||||
|
|
||||||
notify_content_item(item, conversation);
|
notify_content_item(item, conversation);
|
||||||
if (notify != Conversation.NotifySetting.OFF) {
|
if (notify != Conversation.NotifySetting.OFF) {
|
||||||
NotificationProvider notifier = yield notifier.wait_async();
|
foreach(var promise in promises) {
|
||||||
|
NotificationProvider notifier = yield promise.future.wait_async();
|
||||||
yield notifier.notify_file(file_transfer, conversation, is_image, conversation_display_name, participant_display_name);
|
yield notifier.notify_file(file_transfer, conversation, is_image, conversation_display_name, participant_display_name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case CallItem.TYPE:
|
case CallItem.TYPE:
|
||||||
// handled in `on_call_incoming`
|
// handled in `on_call_incoming`
|
||||||
|
@ -105,23 +105,28 @@ public class NotificationEvents : StreamInteractionModule, Object {
|
||||||
Conversation? conversation = stream_interactor.get_module(ConversationManager.IDENTITY).get_conversation(room_jid, account, Conversation.Type.GROUPCHAT);
|
Conversation? conversation = stream_interactor.get_module(ConversationManager.IDENTITY).get_conversation(room_jid, account, Conversation.Type.GROUPCHAT);
|
||||||
if (conversation == null) return;
|
if (conversation == null) return;
|
||||||
|
|
||||||
NotificationProvider notifier = yield notifier.wait_async();
|
foreach(var promise in promises) {
|
||||||
|
NotificationProvider notifier = yield promise.future.wait_async();
|
||||||
yield notifier.notify_voice_request(conversation, from_jid);
|
yield notifier.notify_voice_request(conversation, from_jid);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async void on_received_subscription_request(Jid jid, Account account) {
|
private async void on_received_subscription_request(Jid jid, Account account) {
|
||||||
Conversation conversation = stream_interactor.get_module(ConversationManager.IDENTITY).create_conversation(jid, account, Conversation.Type.CHAT);
|
Conversation conversation = stream_interactor.get_module(ConversationManager.IDENTITY).create_conversation(jid, account, Conversation.Type.CHAT);
|
||||||
if (stream_interactor.get_module(ChatInteraction.IDENTITY).is_active_focus(conversation)) return;
|
if (stream_interactor.get_module(ChatInteraction.IDENTITY).is_active_focus(conversation)) return;
|
||||||
|
|
||||||
NotificationProvider notifier = yield notifier.wait_async();
|
foreach(var promise in promises) {
|
||||||
|
NotificationProvider notifier = yield promise.future.wait_async();
|
||||||
yield notifier.notify_subscription_request(conversation);
|
yield notifier.notify_subscription_request(conversation);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async void on_call_incoming(Call call, CallState call_state, Conversation conversation, bool video, bool multiparty) {
|
private async void on_call_incoming(Call call, CallState call_state, Conversation conversation, bool video, bool multiparty) {
|
||||||
if (!stream_interactor.get_module(Calls.IDENTITY).can_we_do_calls(call.account)) return;
|
if (!stream_interactor.get_module(Calls.IDENTITY).can_we_do_calls(call.account)) return;
|
||||||
string conversation_display_name = get_conversation_display_name(stream_interactor, conversation, null);
|
string conversation_display_name = get_conversation_display_name(stream_interactor, conversation, null);
|
||||||
|
|
||||||
NotificationProvider notifier = yield notifier.wait_async();
|
foreach(var promise in promises) {
|
||||||
|
NotificationProvider notifier = yield promise.future.wait_async();
|
||||||
yield notifier.notify_call(call, conversation, video, multiparty, conversation_display_name);
|
yield notifier.notify_call(call, conversation, video, multiparty, conversation_display_name);
|
||||||
call.notify["state"].connect(() => {
|
call.notify["state"].connect(() => {
|
||||||
if (call.state != Call.State.RINGING) {
|
if (call.state != Call.State.RINGING) {
|
||||||
|
@ -129,6 +134,19 @@ public class NotificationEvents : StreamInteractionModule, Object {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void on_call_outgoing(Call call) {
|
||||||
|
foreach(var promise in promises) {
|
||||||
|
NotificationProvider notifier = yield promise.future.wait_async();
|
||||||
|
yield notifier.notify_dialing();
|
||||||
|
call.notify["state"].connect(() => {
|
||||||
|
if (call.state != Call.State.ESTABLISHING) {
|
||||||
|
notifier.retract_dialing.begin();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async void on_invite_received(Account account, Jid room_jid, Jid from_jid, string? password, string? reason) {
|
private async void on_invite_received(Account account, Jid room_jid, Jid from_jid, string? password, string? reason) {
|
||||||
string inviter_display_name;
|
string inviter_display_name;
|
||||||
|
@ -139,20 +157,27 @@ public class NotificationEvents : StreamInteractionModule, Object {
|
||||||
Conversation direct_conversation = new Conversation(from_jid, account, Conversation.Type.CHAT);
|
Conversation direct_conversation = new Conversation(from_jid, account, Conversation.Type.CHAT);
|
||||||
inviter_display_name = get_participant_display_name(stream_interactor, direct_conversation, from_jid);
|
inviter_display_name = get_participant_display_name(stream_interactor, direct_conversation, from_jid);
|
||||||
}
|
}
|
||||||
NotificationProvider notifier = yield notifier.wait_async();
|
|
||||||
|
foreach(var promise in promises) {
|
||||||
|
NotificationProvider notifier = yield promise.future.wait_async();
|
||||||
yield notifier.notify_muc_invite(account, room_jid, from_jid, inviter_display_name);
|
yield notifier.notify_muc_invite(account, room_jid, from_jid, inviter_display_name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async void on_connection_error(Account account, ConnectionManager.ConnectionError error) {
|
private async void on_connection_error(Account account, ConnectionManager.ConnectionError error) {
|
||||||
NotificationProvider notifier = yield notifier.wait_async();
|
foreach(var promise in promises) {
|
||||||
|
NotificationProvider notifier = yield promise.future.wait_async();
|
||||||
yield notifier.notify_connection_error(account, error);
|
yield notifier.notify_connection_error(account, error);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async void on_focused_in(Conversation conversation) {
|
private async void on_focused_in(Conversation conversation) {
|
||||||
NotificationProvider notifier = yield notifier.wait_async();
|
foreach(var promise in promises) {
|
||||||
|
NotificationProvider notifier = yield promise.future.wait_async();
|
||||||
yield notifier.retract_content_item_notifications();
|
yield notifier.retract_content_item_notifications();
|
||||||
yield notifier.retract_conversation_notifications(conversation);
|
yield notifier.retract_conversation_notifications(conversation);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface NotificationProvider : Object {
|
public interface NotificationProvider : Object {
|
||||||
|
@ -162,6 +187,8 @@ public interface NotificationProvider : Object {
|
||||||
public abstract async void notify_file(FileTransfer file_transfer, Conversation conversation, bool is_image, string conversation_display_name, string? participant_display_name);
|
public abstract async void notify_file(FileTransfer file_transfer, Conversation conversation, bool is_image, string conversation_display_name, string? participant_display_name);
|
||||||
public abstract async void notify_call(Call call, Conversation conversation, bool video, bool multiparty, string conversation_display_name);
|
public abstract async void notify_call(Call call, Conversation conversation, bool video, bool multiparty, string conversation_display_name);
|
||||||
public abstract async void retract_call_notification(Call call, Conversation conversation);
|
public abstract async void retract_call_notification(Call call, Conversation conversation);
|
||||||
|
public abstract async void notify_dialing();
|
||||||
|
public abstract async void retract_dialing();
|
||||||
public abstract async void notify_subscription_request(Conversation conversation);
|
public abstract async void notify_subscription_request(Conversation conversation);
|
||||||
public abstract async void notify_connection_error(Account account, ConnectionManager.ConnectionError error);
|
public abstract async void notify_connection_error(Account account, ConnectionManager.ConnectionError error);
|
||||||
public abstract async void notify_muc_invite(Account account, Jid room_jid, Jid from_jid, string inviter_display_name);
|
public abstract async void notify_muc_invite(Account account, Jid room_jid, Jid from_jid, string inviter_display_name);
|
||||||
|
|
|
@ -71,6 +71,12 @@ public class Register : StreamInteractionModule, Object{
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async string? change_password(Account account, string new_pw){
|
||||||
|
XmppStream stream = stream_interactor.get_stream(account);
|
||||||
|
if (stream == null) return "Connection unavailable";
|
||||||
|
return yield stream.get_module(Xep.InBandRegistration.Module.IDENTITY).change_password(stream, account.full_jid, new_pw);
|
||||||
|
}
|
||||||
|
|
||||||
public class ServerAvailabilityReturn {
|
public class ServerAvailabilityReturn {
|
||||||
public bool available { get; set; }
|
public bool available { get; set; }
|
||||||
public TlsCertificateFlags? error_flags { get; set; }
|
public TlsCertificateFlags? error_flags { get; set; }
|
||||||
|
@ -229,3 +235,4 @@ public class Register : StreamInteractionModule, Object{
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,7 @@ set(RESOURCE_LIST
|
||||||
conversation_content_view/view.ui
|
conversation_content_view/view.ui
|
||||||
manage_accounts/account_row.ui
|
manage_accounts/account_row.ui
|
||||||
manage_accounts/add_account_dialog.ui
|
manage_accounts/add_account_dialog.ui
|
||||||
|
manage_accounts/change_password_dialog.ui
|
||||||
manage_accounts/dialog.ui
|
manage_accounts/dialog.ui
|
||||||
menu_add.ui
|
menu_add.ui
|
||||||
menu_app.ui
|
menu_app.ui
|
||||||
|
@ -203,6 +204,7 @@ SOURCES
|
||||||
|
|
||||||
src/ui/contact_details/settings_provider.vala
|
src/ui/contact_details/settings_provider.vala
|
||||||
src/ui/contact_details/permissions_provider.vala
|
src/ui/contact_details/permissions_provider.vala
|
||||||
|
src/ui/contact_details/history_provider.vala
|
||||||
|
|
||||||
src/ui/conversation_details.vala
|
src/ui/conversation_details.vala
|
||||||
|
|
||||||
|
@ -217,6 +219,7 @@ SOURCES
|
||||||
|
|
||||||
src/ui/manage_accounts/account_row.vala
|
src/ui/manage_accounts/account_row.vala
|
||||||
src/ui/manage_accounts/add_account_dialog.vala
|
src/ui/manage_accounts/add_account_dialog.vala
|
||||||
|
src/ui/manage_accounts/change_password_dialog.vala
|
||||||
src/ui/manage_accounts/dialog.vala
|
src/ui/manage_accounts/dialog.vala
|
||||||
|
|
||||||
src/ui/occupant_menu/list.vala
|
src/ui/occupant_menu/list.vala
|
||||||
|
|
|
@ -58,6 +58,7 @@
|
||||||
<file>manage_accounts/account_row.ui</file>
|
<file>manage_accounts/account_row.ui</file>
|
||||||
<file>manage_accounts/add_account_dialog.ui</file>
|
<file>manage_accounts/add_account_dialog.ui</file>
|
||||||
<file>manage_accounts/dialog.ui</file>
|
<file>manage_accounts/dialog.ui</file>
|
||||||
|
<file>manage_accounts/change_password_dialog.ui</file>
|
||||||
<file>menu_add.ui</file>
|
<file>menu_add.ui</file>
|
||||||
<file>menu_app.ui</file>
|
<file>menu_app.ui</file>
|
||||||
<file>menu_conversation.ui</file>
|
<file>menu_conversation.ui</file>
|
||||||
|
|
158
main/data/manage_accounts/change_password_dialog.ui
Normal file
158
main/data/manage_accounts/change_password_dialog.ui
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<requires lib="gtk" version="4.0"/>
|
||||||
|
<template class="DinoUiChangePasswordDialog">
|
||||||
|
<property name="title" translatable="1">Change password</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="modal">True</property>
|
||||||
|
<child internal-child="content_area">
|
||||||
|
<object class="GtkBox">
|
||||||
|
<child>
|
||||||
|
<object class="GtkGrid" id="info_grid">
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="margin-start">20</property>
|
||||||
|
<property name="margin-end">20</property>
|
||||||
|
<property name="margin-top">20</property>
|
||||||
|
<property name="margin-bottom">20</property>
|
||||||
|
<property name="row-spacing">7</property>
|
||||||
|
<property name="column-spacing">10</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="label" translatable="1">Current password</property>
|
||||||
|
<property name="xalign">1</property>
|
||||||
|
<layout>
|
||||||
|
<property name="column">0</property>
|
||||||
|
<property name="row">0</property>
|
||||||
|
</layout>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEntry" id="current_passwd_entry">
|
||||||
|
<property name="activates_default">1</property>
|
||||||
|
<property name="hexpand">1</property>
|
||||||
|
<property name="width_request">200</property>
|
||||||
|
<property name="visibility">False</property>
|
||||||
|
<layout>
|
||||||
|
<property name="column">1</property>
|
||||||
|
<property name="row">0</property>
|
||||||
|
</layout>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="label" translatable="1">New password</property>
|
||||||
|
<property name="xalign">1</property>
|
||||||
|
<layout>
|
||||||
|
<property name="column">0</property>
|
||||||
|
<property name="row">1</property>
|
||||||
|
</layout>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEntry" id="new_passwd_entry">
|
||||||
|
<property name="activates_default">1</property>
|
||||||
|
<property name="hexpand">1</property>
|
||||||
|
<property name="width_request">200</property>
|
||||||
|
<property name="visibility">False</property>
|
||||||
|
<layout>
|
||||||
|
<property name="column">1</property>
|
||||||
|
<property name="row">1</property>
|
||||||
|
</layout>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="label" translatable="1">Confirm new password</property>
|
||||||
|
<property name="xalign">1</property>
|
||||||
|
<layout>
|
||||||
|
<property name="column">0</property>
|
||||||
|
<property name="row">2</property>
|
||||||
|
</layout>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEntry" id="confirm_new_passwd_entry">
|
||||||
|
<property name="activates_default">1</property>
|
||||||
|
<property name="hexpand">1</property>
|
||||||
|
<property name="width_request">200</property>
|
||||||
|
<property name="visibility">False</property>
|
||||||
|
<layout>
|
||||||
|
<property name="column">1</property>
|
||||||
|
<property name="row">2</property>
|
||||||
|
</layout>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="change_password_error_label">
|
||||||
|
<!-- property name="xalign">0</property -->
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="margin-top">7</property>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="scale" value="0.9"></attribute>
|
||||||
|
</attributes>
|
||||||
|
<layout>
|
||||||
|
<property name="column">0</property>
|
||||||
|
<property name="row">3</property>
|
||||||
|
<property name="column-span">2</property>
|
||||||
|
</layout>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="cancel_button">
|
||||||
|
<property name="label" translatable="1">Cancel</property>
|
||||||
|
<layout>
|
||||||
|
<property name="column">0</property>
|
||||||
|
<property name="row">4</property>
|
||||||
|
</layout>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="change_password_button">
|
||||||
|
<property name="halign">end</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="sensitive">0</property>
|
||||||
|
<layout>
|
||||||
|
<property name="column">1</property>
|
||||||
|
<property name="row">4</property>
|
||||||
|
</layout>
|
||||||
|
<style>
|
||||||
|
<class name="text-button"/>
|
||||||
|
<class name="suggested-action"/>
|
||||||
|
</style>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStack" id="change_password_stack">
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackPage">
|
||||||
|
<property name="name">label</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkLabel" >
|
||||||
|
<property name="label" translatable="1">Change password</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackPage">
|
||||||
|
<property name="name">spinner</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkSpinner">
|
||||||
|
<property name="spinning">True</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<action-widgets>
|
||||||
|
<action-widget response="cancel">cancel_button</action-widget>
|
||||||
|
<action-widget response="ok" default="true">change_password_button</action-widget>
|
||||||
|
</action-widgets>
|
||||||
|
</template>
|
||||||
|
</interface>
|
|
@ -165,7 +165,17 @@
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">1</property>
|
<property name="column">1</property>
|
||||||
<property name="row">2</property>
|
<property name="row">2</property>
|
||||||
<property name="column-span">2</property>
|
<property name="column-span">1</property>
|
||||||
|
</layout>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="password_change_btn">
|
||||||
|
<property name="label">⚙️</property>
|
||||||
|
<layout>
|
||||||
|
<property name="column">2</property>
|
||||||
|
<property name="row">2</property>
|
||||||
|
<property name="column-span">1</property>
|
||||||
</layout>
|
</layout>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
|
|
@ -39,6 +39,7 @@ sources = files(
|
||||||
'src/ui/chat_input/view.vala',
|
'src/ui/chat_input/view.vala',
|
||||||
'src/ui/contact_details/permissions_provider.vala',
|
'src/ui/contact_details/permissions_provider.vala',
|
||||||
'src/ui/contact_details/settings_provider.vala',
|
'src/ui/contact_details/settings_provider.vala',
|
||||||
|
'src/ui/contact_details/history_provider.vala',
|
||||||
'src/ui/conversation_content_view/call_widget.vala',
|
'src/ui/conversation_content_view/call_widget.vala',
|
||||||
'src/ui/conversation_content_view/chat_state_populator.vala',
|
'src/ui/conversation_content_view/chat_state_populator.vala',
|
||||||
'src/ui/conversation_content_view/content_populator.vala',
|
'src/ui/conversation_content_view/content_populator.vala',
|
||||||
|
@ -71,6 +72,7 @@ sources = files(
|
||||||
'src/ui/main_window_controller.vala',
|
'src/ui/main_window_controller.vala',
|
||||||
'src/ui/manage_accounts/account_row.vala',
|
'src/ui/manage_accounts/account_row.vala',
|
||||||
'src/ui/manage_accounts/add_account_dialog.vala',
|
'src/ui/manage_accounts/add_account_dialog.vala',
|
||||||
|
'src/ui/manage_accounts/change_password_dialog.vala',
|
||||||
'src/ui/manage_accounts/dialog.vala',
|
'src/ui/manage_accounts/dialog.vala',
|
||||||
'src/ui/notifier_freedesktop.vala',
|
'src/ui/notifier_freedesktop.vala',
|
||||||
'src/ui/notifier_gnotifications.vala',
|
'src/ui/notifier_gnotifications.vala',
|
||||||
|
|
|
@ -1176,6 +1176,24 @@ msgstr "لقد أعددت كل شيء!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "أنهي"
|
msgstr "أنهي"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "اضغط هنا لبداية المحادثة أو للإنضمام إلى قناة."
|
#~ msgstr "اضغط هنا لبداية المحادثة أو للإنضمام إلى قناة."
|
||||||
|
|
||||||
|
|
|
@ -1163,6 +1163,24 @@ msgstr "Tot llest!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Finalitza"
|
msgstr "Finalitza"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Feu clic aquí per a començar una conversa o unir-vos a un canal."
|
#~ msgstr "Feu clic aquí per a començar una conversa o unir-vos a un canal."
|
||||||
|
|
||||||
|
|
|
@ -1166,5 +1166,22 @@ msgstr "Vše připraveno!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Dokončit"
|
msgstr "Dokončit"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Kliknutím sem zahájíte konverzaci nebo se připojíte ke kanálu."
|
#~ msgstr "Kliknutím sem zahájíte konverzaci nebo se připojíte ke kanálu."
|
||||||
|
|
|
@ -1153,3 +1153,20 @@ msgstr ""
|
||||||
#: main/data/manage_accounts/add_account_dialog.ui:506
|
#: main/data/manage_accounts/add_account_dialog.ui:506
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
|
@ -1161,6 +1161,23 @@ msgstr "Fertig!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Fertig"
|
msgstr "Fertig"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Klicke hier, um eine Unterhaltung zu starten oder einem Kanal beizutreten."
|
#~ "Klicke hier, um eine Unterhaltung zu starten oder einem Kanal beizutreten."
|
||||||
|
|
|
@ -1154,3 +1154,20 @@ msgstr ""
|
||||||
#: main/data/manage_accounts/add_account_dialog.ui:506
|
#: main/data/manage_accounts/add_account_dialog.ui:506
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
|
@ -1169,6 +1169,23 @@ msgstr "Όλα έτοιμα!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Ολοκλήρωση"
|
msgstr "Ολοκλήρωση"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Κάντε κλικ εδώ για να ξεκινήσετε μια συνομιλία ή να εισέλθετε σε ένα "
|
#~ "Κάντε κλικ εδώ για να ξεκινήσετε μια συνομιλία ή να εισέλθετε σε ένα "
|
||||||
|
|
|
@ -1144,3 +1144,20 @@ msgstr ""
|
||||||
#: main/data/manage_accounts/add_account_dialog.ui:506
|
#: main/data/manage_accounts/add_account_dialog.ui:506
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
|
@ -1162,6 +1162,24 @@ msgstr "Ĉio pretas!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Fini"
|
msgstr "Fini"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Alklaku ĉi tie por komenci konversacion aŭ aliĝi al kanalo."
|
#~ msgstr "Alklaku ĉi tie por komenci konversacion aŭ aliĝi al kanalo."
|
||||||
|
|
||||||
|
|
|
@ -1166,6 +1166,23 @@ msgstr "¡Todo listo!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Finalizado"
|
msgstr "Finalizado"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Pulsar aquí para iniciar una conversación o unirse a un conversación en "
|
#~ "Pulsar aquí para iniciar una conversación o unirse a un conversación en "
|
||||||
|
|
|
@ -1165,6 +1165,23 @@ msgstr "Guztia ezarri da!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Amaitu"
|
msgstr "Amaitu"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Klikatu hemen elkarrizketa berri bat hasi edo kanal batean sartzeko."
|
#~ "Klikatu hemen elkarrizketa berri bat hasi edo kanal batean sartzeko."
|
||||||
|
|
|
@ -1161,6 +1161,23 @@ msgstr "همه تنظیم شده!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "اتمام"
|
msgstr "اتمام"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "برای شروع گفتگو یا پیوستن به کانال اینجا کلیک کنید."
|
#~ msgstr "برای شروع گفتگو یا پیوستن به کانال اینجا کلیک کنید."
|
||||||
|
|
||||||
|
|
|
@ -1164,6 +1164,23 @@ msgstr ""
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "No active conversations"
|
#~ msgid "No active conversations"
|
||||||
#~ msgstr "Ei aktiivisia keskusteluja"
|
#~ msgstr "Ei aktiivisia keskusteluja"
|
||||||
|
|
||||||
|
|
|
@ -1166,6 +1166,23 @@ msgstr "Tout est prêt !"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Terminer"
|
msgstr "Terminer"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Cliquez ici pour commencer une discussion ou rejoindre un salon."
|
#~ msgstr "Cliquez ici pour commencer une discussion ou rejoindre un salon."
|
||||||
|
|
||||||
|
|
|
@ -1166,6 +1166,23 @@ msgstr "Todo feito!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Rematar"
|
msgstr "Rematar"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Preme aquí para iniciar unha conversa ou unirte a unha canle."
|
#~ msgstr "Preme aquí para iniciar unha conversa ou unirte a unha canle."
|
||||||
|
|
||||||
|
|
|
@ -1169,6 +1169,23 @@ msgstr "Minden készen áll!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Befejezés"
|
msgstr "Befejezés"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Kattintson ide egy beszélgetés indításához vagy egy csatornához való "
|
#~ "Kattintson ide egy beszélgetés indításához vagy egy csatornához való "
|
||||||
|
|
|
@ -1157,5 +1157,22 @@ msgstr "Selesai!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Selesai"
|
msgstr "Selesai"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Klik untuk memulai percakapan atau bergabung dengan channel."
|
#~ msgstr "Klik untuk memulai percakapan atau bergabung dengan channel."
|
||||||
|
|
|
@ -1161,6 +1161,23 @@ msgstr "Omni es pret!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Finir"
|
msgstr "Finir"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Fa un clic ti-ci por iniciar un conversation o adherer a un channel."
|
#~ "Fa un clic ti-ci por iniciar un conversation o adherer a un channel."
|
||||||
|
|
|
@ -1161,5 +1161,22 @@ msgstr "Allt klárt!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Loka"
|
msgstr "Loka"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Smelltu hér til að hefja samtal eða taka þátt í rás."
|
#~ msgstr "Smelltu hér til að hefja samtal eða taka þátt í rás."
|
||||||
|
|
|
@ -1165,6 +1165,23 @@ msgstr "Tutto pronto!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Fine"
|
msgstr "Fine"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Fai clic qui per iniziare una conversazione o per entrare in un canale."
|
#~ "Fai clic qui per iniziare una conversazione o per entrare in un canale."
|
||||||
|
|
|
@ -1158,6 +1158,23 @@ msgstr "すべてのセットアップが完了しました!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "完了"
|
msgstr "完了"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "トークを始めたりトークルームに参加したりするには、ここをクリックしてくださ"
|
#~ "トークを始めたりトークルームに参加したりするには、ここをクリックしてくださ"
|
||||||
|
|
|
@ -1153,3 +1153,20 @@ msgstr ""
|
||||||
#: main/data/manage_accounts/add_account_dialog.ui:506
|
#: main/data/manage_accounts/add_account_dialog.ui:506
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
|
@ -1166,5 +1166,22 @@ msgstr "모든 설정이 끝났습니다!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "완료"
|
msgstr "완료"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "대화를 시작하거나 채널에 들어가려면 여기를 누르세요."
|
#~ msgstr "대화를 시작하거나 채널에 들어가려면 여기를 누르세요."
|
||||||
|
|
|
@ -1157,6 +1157,23 @@ msgstr "Alles ageriicht!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Ofschléissen"
|
msgstr "Ofschléissen"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Klick hei fir eng Konversatioun ze starten oder engem Channel "
|
#~ "Klick hei fir eng Konversatioun ze starten oder engem Channel "
|
||||||
|
|
|
@ -1169,6 +1169,23 @@ msgstr "Viskas nustatyta!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Užbaigti"
|
msgstr "Užbaigti"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Spustelėkite čia norėdami pradėti pokalbį ar prisijungti prie kanalo."
|
#~ "Spustelėkite čia norėdami pradėti pokalbį ar prisijungti prie kanalo."
|
||||||
|
|
|
@ -1154,3 +1154,20 @@ msgstr ""
|
||||||
#: main/data/manage_accounts/add_account_dialog.ui:506
|
#: main/data/manage_accounts/add_account_dialog.ui:506
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
|
@ -1167,6 +1167,23 @@ msgstr "Ferdig oppsatt."
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Fullfør"
|
msgstr "Fullfør"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Klikk her for å starte en samtale, eller ta del i en kanal."
|
#~ msgstr "Klikk her for å starte en samtale, eller ta del i en kanal."
|
||||||
|
|
||||||
|
|
|
@ -1163,6 +1163,23 @@ msgstr "Klaar!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Voltooien"
|
msgstr "Voltooien"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Klik hier om een gesprek te starten of deel te nemen aan een kanaal."
|
#~ "Klik hier om een gesprek te starten of deel te nemen aan een kanaal."
|
||||||
|
|
|
@ -1165,6 +1165,23 @@ msgstr "Tot es prèst !"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Terminar"
|
msgstr "Terminar"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Clicatz aquí per començar una conversacion o jónher una sala."
|
#~ msgstr "Clicatz aquí per començar una conversacion o jónher una sala."
|
||||||
|
|
||||||
|
|
|
@ -1169,6 +1169,23 @@ msgstr "Wszystko gotowe!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Zakończ"
|
msgstr "Zakończ"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Kliknij tutaj, aby rozpocząć rozmowę albo dołączyć do kanału."
|
#~ msgstr "Kliknij tutaj, aby rozpocząć rozmowę albo dołączyć do kanału."
|
||||||
|
|
||||||
|
|
|
@ -1163,5 +1163,22 @@ msgstr "Tudo configurado!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Finalizado"
|
msgstr "Finalizado"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Clique aqui para iniciar uma conversa or entrar num canal."
|
#~ msgstr "Clique aqui para iniciar uma conversa or entrar num canal."
|
||||||
|
|
|
@ -1164,6 +1164,23 @@ msgstr "Tudo configurado!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Finalizado"
|
msgstr "Finalizado"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Clique aqui para inicial uma conversa ou entrar em um canal."
|
#~ msgstr "Clique aqui para inicial uma conversa ou entrar em um canal."
|
||||||
|
|
||||||
|
|
|
@ -1170,6 +1170,23 @@ msgstr "Gata!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Finalizare"
|
msgstr "Finalizare"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Apăsați aici pentru a porni o conversație sau a vă alătura unui canal."
|
#~ "Apăsați aici pentru a porni o conversație sau a vă alătura unui canal."
|
||||||
|
|
|
@ -1167,6 +1167,23 @@ msgstr "Всё готово!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Закончить"
|
msgstr "Закончить"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr "Изменить пароль"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr "Текущий пароль"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr "Новый пароль"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr "Подтверждение пароля"
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Нажмите здесь, чтобы начать беседу или присоединиться к каналу."
|
#~ msgstr "Нажмите здесь, чтобы начать беседу или присоединиться к каналу."
|
||||||
|
|
||||||
|
|
|
@ -1163,5 +1163,22 @@ msgstr "Gjithçka e ujdisur!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Përfundoje"
|
msgstr "Përfundoje"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Klikoni këtu që të nisni një bisedë ose të hyni në një kanal."
|
#~ msgstr "Klikoni këtu që të nisni një bisedë ose të hyni në një kanal."
|
||||||
|
|
|
@ -1163,6 +1163,23 @@ msgstr "Färdigt!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Slutför"
|
msgstr "Slutför"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Klicka här för att starta en konversation eller gå med i en kanal."
|
#~ msgstr "Klicka här för att starta en konversation eller gå med i en kanal."
|
||||||
|
|
||||||
|
|
|
@ -1153,3 +1153,20 @@ msgstr ""
|
||||||
#: main/data/manage_accounts/add_account_dialog.ui:506
|
#: main/data/manage_accounts/add_account_dialog.ui:506
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
|
@ -1162,6 +1162,23 @@ msgstr "Hepsi tamam!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Bitir"
|
msgstr "Bitir"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "Bir sohbet başlatmak ya da kanala katılmak için buraya tıkla."
|
#~ msgstr "Bir sohbet başlatmak ya da kanala katılmak için buraya tıkla."
|
||||||
|
|
||||||
|
|
|
@ -1158,3 +1158,20 @@ msgstr ""
|
||||||
#: main/data/manage_accounts/add_account_dialog.ui:506
|
#: main/data/manage_accounts/add_account_dialog.ui:506
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
|
@ -1155,6 +1155,23 @@ msgstr "都准备好了!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "完成"
|
msgstr "完成"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "点击此处以开始对话或加入频道。"
|
#~ msgstr "点击此处以开始对话或加入频道。"
|
||||||
|
|
||||||
|
|
|
@ -1154,6 +1154,23 @@ msgstr "全部設定好了!"
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "完成"
|
msgstr "完成"
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :5
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :103
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :21
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :43
|
||||||
|
msgid "New password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: main/src/ui/manage_accounts/change_password_dialog.vala :65
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Click here to start a conversation or join a channel."
|
#~ msgid "Click here to start a conversation or join a channel."
|
||||||
#~ msgstr "點擊此處開始對話或加入聊天室。"
|
#~ msgstr "點擊此處開始對話或加入聊天室。"
|
||||||
|
|
||||||
|
|
52
main/src/ui/contact_details/history_provider.vala
Normal file
52
main/src/ui/contact_details/history_provider.vala
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
using Gee;
|
||||||
|
using Gtk;
|
||||||
|
|
||||||
|
using Dino.Entities;
|
||||||
|
|
||||||
|
using Xmpp;
|
||||||
|
|
||||||
|
namespace Dino.Ui.ContactDetails {
|
||||||
|
|
||||||
|
public class HistoryProvider : Plugins.ContactDetailsProvider, Object {
|
||||||
|
public string id { get { return "history_settings"; } }
|
||||||
|
|
||||||
|
private StreamInteractor stream_interactor;
|
||||||
|
|
||||||
|
private HashMap<Account, HashMap<Jid, Cancellable>> sync_cancellables = new HashMap<Account, HashMap<Jid, Cancellable>>(Account.hash_func, Account.equals_func);
|
||||||
|
|
||||||
|
public HistoryProvider(StreamInteractor stream_interactor) {
|
||||||
|
this.stream_interactor = stream_interactor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void populate(Conversation conversation, Plugins.ContactDetails contact_details, Plugins.WidgetType type) {
|
||||||
|
if (type != Plugins.WidgetType.GTK4) return;
|
||||||
|
|
||||||
|
EntityInfo entity_info = stream_interactor.get_module(EntityInfo.IDENTITY);
|
||||||
|
|
||||||
|
string RESYNC_LABEL = _("Resync");
|
||||||
|
string RESYNC_DESC_LABEL = _("Fetch a complete MAM history for this chat");
|
||||||
|
entity_info.has_feature.begin(conversation.account, conversation.counterpart, Xmpp.MessageArchiveManagement.NS_URI, (_, res) => {
|
||||||
|
bool can_do_mam = entity_info.has_feature.end(res);
|
||||||
|
if (can_do_mam) {
|
||||||
|
Button resync_button = new Button.with_label(RESYNC_LABEL);
|
||||||
|
contact_details.add("Permissions", RESYNC_DESC_LABEL, "", resync_button);
|
||||||
|
resync_button.clicked.connect(() => {
|
||||||
|
if (!sync_cancellables.has_key(conversation.account)) {
|
||||||
|
sync_cancellables[conversation.account] = new HashMap<Jid, Cancellable>();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!sync_cancellables[conversation.account].has_key(conversation.counterpart.bare_jid)) {
|
||||||
|
sync_cancellables[conversation.account][conversation.counterpart.bare_jid] = new Cancellable();
|
||||||
|
var history_sync = stream_interactor.get_module(MessageProcessor.IDENTITY).history_sync;
|
||||||
|
history_sync.fetch_history.begin(conversation.account, conversation.counterpart.bare_jid, sync_cancellables[conversation.account][conversation.counterpart.bare_jid], (_, res) => {
|
||||||
|
history_sync.fetch_everything.end(res);
|
||||||
|
sync_cancellables[conversation.account].unset(conversation.counterpart.bare_jid);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -152,6 +152,7 @@ namespace Dino.Ui.ConversationDetails {
|
||||||
Application app = GLib.Application.get_default() as Application;
|
Application app = GLib.Application.get_default() as Application;
|
||||||
app.plugin_registry.register_contact_details_entry(new ContactDetails.SettingsProvider(stream_interactor));
|
app.plugin_registry.register_contact_details_entry(new ContactDetails.SettingsProvider(stream_interactor));
|
||||||
app.plugin_registry.register_contact_details_entry(new ContactDetails.PermissionsProvider(stream_interactor));
|
app.plugin_registry.register_contact_details_entry(new ContactDetails.PermissionsProvider(stream_interactor));
|
||||||
|
app.plugin_registry.register_contact_details_entry(new ContactDetails.HistoryProvider(stream_interactor));
|
||||||
|
|
||||||
foreach (Plugins.ContactDetailsProvider provider in app.plugin_registry.contact_details_entries) {
|
foreach (Plugins.ContactDetailsProvider provider in app.plugin_registry.contact_details_entries) {
|
||||||
provider.populate(conversation, contact_details, Plugins.WidgetType.GTK4);
|
provider.populate(conversation, contact_details, Plugins.WidgetType.GTK4);
|
||||||
|
|
100
main/src/ui/manage_accounts/change_password_dialog.vala
Normal file
100
main/src/ui/manage_accounts/change_password_dialog.vala
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
using Gee;
|
||||||
|
using Gtk;
|
||||||
|
//using Pango;
|
||||||
|
|
||||||
|
using Dino.Entities;
|
||||||
|
using Xmpp;
|
||||||
|
|
||||||
|
namespace Dino.Ui{
|
||||||
|
|
||||||
|
[GtkTemplate (ui = "/im/dino/Dino/manage_accounts/change_password_dialog.ui")]
|
||||||
|
public class ChangePasswordDialog : Gtk.Dialog {
|
||||||
|
|
||||||
|
[GtkChild] private unowned Button change_password_button;
|
||||||
|
[GtkChild] private unowned Stack change_password_stack;
|
||||||
|
[GtkChild] private unowned Button cancel_button;
|
||||||
|
[GtkChild] private unowned Entry current_passwd_entry;
|
||||||
|
[GtkChild] private unowned Entry new_passwd_entry;
|
||||||
|
[GtkChild] private unowned Entry confirm_new_passwd_entry;
|
||||||
|
[GtkChild] private unowned Label change_password_error_label;
|
||||||
|
|
||||||
|
private bool are_forms_empty;
|
||||||
|
private Account account;
|
||||||
|
private StreamInteractor stream_interactor;
|
||||||
|
|
||||||
|
public ChangePasswordDialog(Account a, StreamInteractor s){
|
||||||
|
Object(use_header_bar : 1);
|
||||||
|
this.stream_interactor = s;
|
||||||
|
this.account = a;
|
||||||
|
Util.force_error_color(change_password_error_label);
|
||||||
|
cancel_button.clicked.connect(() => { close(); });
|
||||||
|
current_passwd_entry.changed.connect(on_current_passwd_entry_changed);
|
||||||
|
new_passwd_entry.changed.connect(on_new_passwd_entry_changed);
|
||||||
|
confirm_new_passwd_entry.changed.connect(on_confirm_new_passwd_entry_changed);
|
||||||
|
change_password_button.clicked.connect(on_change_password_button_clicked);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void are_psswd_nonempty(){
|
||||||
|
EntryBuffer newpsswd = new_passwd_entry.get_buffer();
|
||||||
|
EntryBuffer confirm_newpsswd = confirm_new_passwd_entry.get_buffer();
|
||||||
|
|
||||||
|
if (current_passwd_entry.get_text_length() > 0
|
||||||
|
&& new_passwd_entry.get_text_length() > 0
|
||||||
|
&& confirm_new_passwd_entry.get_text_length() > 0
|
||||||
|
&& newpsswd.get_text() == confirm_newpsswd.get_text()){
|
||||||
|
are_forms_empty = false;
|
||||||
|
change_password_button.sensitive = true;
|
||||||
|
} else {
|
||||||
|
are_forms_empty = true;
|
||||||
|
change_password_button.sensitive = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void check_new_passwd(){
|
||||||
|
EntryBuffer newpsswd = new_passwd_entry.get_buffer();
|
||||||
|
EntryBuffer confirm_newpsswd = confirm_new_passwd_entry.get_buffer();
|
||||||
|
|
||||||
|
if (newpsswd.get_text() != confirm_newpsswd.get_text()){
|
||||||
|
new_passwd_entry.add_css_class("error");
|
||||||
|
confirm_new_passwd_entry.add_css_class("error");
|
||||||
|
} else {
|
||||||
|
new_passwd_entry.remove_css_class("error");
|
||||||
|
confirm_new_passwd_entry.remove_css_class("error");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void on_current_passwd_entry_changed(){
|
||||||
|
are_psswd_nonempty();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void on_new_passwd_entry_changed(){
|
||||||
|
are_psswd_nonempty();
|
||||||
|
check_new_passwd();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void on_confirm_new_passwd_entry_changed(){
|
||||||
|
are_psswd_nonempty();
|
||||||
|
check_new_passwd();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void on_change_password_button_clicked(){
|
||||||
|
string? pw_input = current_passwd_entry.get_buffer().get_text();
|
||||||
|
string? new_pw_input = new_passwd_entry.get_buffer().get_text();
|
||||||
|
|
||||||
|
if (pw_input != null && account.password == pw_input){
|
||||||
|
change_password_button.sensitive = false;
|
||||||
|
change_password_stack.visible_child_name = "spinner";
|
||||||
|
string ret = yield stream_interactor.get_module(Register.IDENTITY).change_password(account, new_pw_input);
|
||||||
|
change_password_button.sensitive = true;
|
||||||
|
change_password_stack.visible_child_name = "label";
|
||||||
|
if (ret == null)
|
||||||
|
close();
|
||||||
|
|
||||||
|
change_password_error_label.label = ret;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
change_password_error_label.label = _("Wrong password");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -25,6 +25,7 @@ public class Dialog : Gtk.Dialog {
|
||||||
[GtkChild] public unowned Label state_label;
|
[GtkChild] public unowned Label state_label;
|
||||||
[GtkChild] public unowned Switch active_switch;
|
[GtkChild] public unowned Switch active_switch;
|
||||||
[GtkChild] public unowned Util.EntryLabelHybrid password_hybrid;
|
[GtkChild] public unowned Util.EntryLabelHybrid password_hybrid;
|
||||||
|
[GtkChild] public unowned Button password_change_btn;
|
||||||
[GtkChild] public unowned Util.EntryLabelHybrid alias_hybrid;
|
[GtkChild] public unowned Util.EntryLabelHybrid alias_hybrid;
|
||||||
[GtkChild] public unowned Grid settings_list;
|
[GtkChild] public unowned Grid settings_list;
|
||||||
|
|
||||||
|
@ -44,10 +45,12 @@ public class Dialog : Gtk.Dialog {
|
||||||
image_button.clicked.connect(show_select_avatar);
|
image_button.clicked.connect(show_select_avatar);
|
||||||
alias_hybrid.entry.changed.connect(() => { selected_account.alias = alias_hybrid.text; });
|
alias_hybrid.entry.changed.connect(() => { selected_account.alias = alias_hybrid.text; });
|
||||||
password_hybrid.entry.changed.connect(() => { selected_account.password = password_hybrid.text; });
|
password_hybrid.entry.changed.connect(() => { selected_account.password = password_hybrid.text; });
|
||||||
|
password_change_btn.clicked.connect(show_change_psswd_dialog);
|
||||||
|
|
||||||
Util.LabelHybridGroup label_hybrid_group = new Util.LabelHybridGroup();
|
Util.LabelHybridGroup label_hybrid_group = new Util.LabelHybridGroup();
|
||||||
label_hybrid_group.add(alias_hybrid);
|
label_hybrid_group.add(alias_hybrid);
|
||||||
label_hybrid_group.add(password_hybrid);
|
label_hybrid_group.add(password_hybrid);
|
||||||
|
password_change_btn.sensitive = false;
|
||||||
|
|
||||||
main_stack.set_visible_child_name("no_accounts");
|
main_stack.set_visible_child_name("no_accounts");
|
||||||
|
|
||||||
|
@ -109,6 +112,12 @@ public class Dialog : Gtk.Dialog {
|
||||||
add_account_dialog.present();
|
add_account_dialog.present();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void show_change_psswd_dialog() {
|
||||||
|
ChangePasswordDialog change_psswd_dialog = new ChangePasswordDialog(selected_account, stream_interactor);
|
||||||
|
change_psswd_dialog.set_transient_for(this);
|
||||||
|
change_psswd_dialog.present();
|
||||||
|
}
|
||||||
|
//
|
||||||
private void remove_account(AccountRow account_item) {
|
private void remove_account(AccountRow account_item) {
|
||||||
Gtk.MessageDialog msg = new Gtk.MessageDialog (
|
Gtk.MessageDialog msg = new Gtk.MessageDialog (
|
||||||
this, Gtk.DialogFlags.DESTROY_WITH_PARENT | Gtk.DialogFlags.MODAL,
|
this, Gtk.DialogFlags.DESTROY_WITH_PARENT | Gtk.DialogFlags.MODAL,
|
||||||
|
@ -215,8 +224,10 @@ public class Dialog : Gtk.Dialog {
|
||||||
case ConnectionManager.ConnectionState.CONNECTING:
|
case ConnectionManager.ConnectionState.CONNECTING:
|
||||||
state_label.label = _("Connecting…"); break;
|
state_label.label = _("Connecting…"); break;
|
||||||
case ConnectionManager.ConnectionState.CONNECTED:
|
case ConnectionManager.ConnectionState.CONNECTED:
|
||||||
|
password_change_btn.sensitive = true;
|
||||||
state_label.label = _("Connected"); break;
|
state_label.label = _("Connected"); break;
|
||||||
case ConnectionManager.ConnectionState.DISCONNECTED:
|
case ConnectionManager.ConnectionState.DISCONNECTED:
|
||||||
|
password_change_btn.sensitive = false;
|
||||||
state_label.label = _("Disconnected"); break;
|
state_label.label = _("Disconnected"); break;
|
||||||
}
|
}
|
||||||
state_label.remove_css_class("is_error");
|
state_label.remove_css_class("is_error");
|
||||||
|
@ -224,6 +235,7 @@ public class Dialog : Gtk.Dialog {
|
||||||
}
|
}
|
||||||
|
|
||||||
private string get_connection_error_description(ConnectionManager.ConnectionError error) {
|
private string get_connection_error_description(ConnectionManager.ConnectionError error) {
|
||||||
|
password_change_btn.sensitive = false;
|
||||||
switch (error.source) {
|
switch (error.source) {
|
||||||
case ConnectionManager.ConnectionError.Source.SASL:
|
case ConnectionManager.ConnectionError.Source.SASL:
|
||||||
return _("Wrong password");
|
return _("Wrong password");
|
||||||
|
|
|
@ -118,7 +118,6 @@ public class Dino.Ui.FreeDesktopNotifier : NotificationProvider, Object {
|
||||||
|
|
||||||
HashTable<string, Variant> hash_table = new HashTable<string, Variant>(null, null);
|
HashTable<string, Variant> hash_table = new HashTable<string, Variant>(null, null);
|
||||||
hash_table["image-path"] = "call-start-symbolic";
|
hash_table["image-path"] = "call-start-symbolic";
|
||||||
hash_table["sound-name"] = new Variant.string("phone-incoming-call");
|
|
||||||
hash_table["urgency"] = new Variant.byte(2);
|
hash_table["urgency"] = new Variant.byte(2);
|
||||||
hash_table["desktop-entry"] = new Variant.string(Dino.Application.get_default().get_application_id());
|
hash_table["desktop-entry"] = new Variant.string(Dino.Application.get_default().get_application_id());
|
||||||
hash_table["category"] = new Variant.string("im");
|
hash_table["category"] = new Variant.string("im");
|
||||||
|
@ -153,6 +152,9 @@ public class Dino.Ui.FreeDesktopNotifier : NotificationProvider, Object {
|
||||||
} catch (Error e) { }
|
} catch (Error e) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async void notify_dialing(){}
|
||||||
|
public async void retract_dialing(){}
|
||||||
|
|
||||||
public async void notify_subscription_request(Conversation conversation) {
|
public async void notify_subscription_request(Conversation conversation) {
|
||||||
string summary = _("Subscription request");
|
string summary = _("Subscription request");
|
||||||
string body = Markup.escape_text(conversation.counterpart.to_string());
|
string body = Markup.escape_text(conversation.counterpart.to_string());
|
||||||
|
|
|
@ -87,6 +87,9 @@ namespace Dino.Ui {
|
||||||
GLib.Application.get_default().withdraw_notification(call.id.to_string());
|
GLib.Application.get_default().withdraw_notification(call.id.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async void notify_dialing(){}
|
||||||
|
public async void retract_dialing(){}
|
||||||
|
|
||||||
public async void notify_subscription_request(Conversation conversation) {
|
public async void notify_subscription_request(Conversation conversation) {
|
||||||
Notification notification = new Notification(_("Subscription request"));
|
Notification notification = new Notification(_("Subscription request"));
|
||||||
notification.set_body(conversation.counterpart.to_string());
|
notification.set_body(conversation.counterpart.to_string());
|
||||||
|
|
28
plugins/phone-ringer/CMakeLists.txt
Normal file
28
plugins/phone-ringer/CMakeLists.txt
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
find_packages(PHONE_RINGER_PACKAGES REQUIRED
|
||||||
|
Canberra
|
||||||
|
Gee
|
||||||
|
GLib
|
||||||
|
GModule
|
||||||
|
GObject
|
||||||
|
GDKPixbuf2
|
||||||
|
)
|
||||||
|
|
||||||
|
vala_precompile(PHONE_RINGER_VALA_C
|
||||||
|
SOURCES
|
||||||
|
src/plugin.vala
|
||||||
|
src/register_plugin.vala
|
||||||
|
CUSTOM_VAPIS
|
||||||
|
${CMAKE_BINARY_DIR}/exports/xmpp-vala.vapi
|
||||||
|
${CMAKE_BINARY_DIR}/exports/dino.vapi
|
||||||
|
${CMAKE_BINARY_DIR}/exports/qlite.vapi
|
||||||
|
PACKAGES
|
||||||
|
${PHONE_RINGER_PACKAGES}
|
||||||
|
)
|
||||||
|
|
||||||
|
add_definitions(${VALA_CFLAGS})
|
||||||
|
add_library(phone-ringer SHARED ${PHONE_RINGER_VALA_C})
|
||||||
|
target_link_libraries(phone-ringer libdino ${PHONE_RINGER_PACKAGES})
|
||||||
|
set_target_properties(phone-ringer PROPERTIES PREFIX "")
|
||||||
|
set_target_properties(phone-ringer PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/plugins/)
|
||||||
|
|
||||||
|
install(TARGETS phone-ringer ${PLUGIN_INSTALL})
|
90
plugins/phone-ringer/src/plugin.vala
Normal file
90
plugins/phone-ringer/src/plugin.vala
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
using Dino.Entities;
|
||||||
|
using Xmpp;
|
||||||
|
|
||||||
|
namespace Dino.Plugins.PhoneRinger {
|
||||||
|
|
||||||
|
public class Plugin : RootInterface, NotificationProvider, Object {
|
||||||
|
|
||||||
|
private const int GAP = 1;
|
||||||
|
private const int RINGER_ID = 0;
|
||||||
|
private const int DIALER_ID = 1;
|
||||||
|
private Canberra.Context sound_context;
|
||||||
|
private Canberra.Proplist ringer_props;
|
||||||
|
private Canberra.Proplist dialer_props;
|
||||||
|
private bool ringing = false;
|
||||||
|
private bool dialing = false;
|
||||||
|
|
||||||
|
private void loop_ringer() {
|
||||||
|
sound_context.play_full(RINGER_ID, ringer_props, (c, id, code) => {
|
||||||
|
if (code == Canberra.Error.CANCELED) return;
|
||||||
|
Timeout.add_seconds(GAP, () => {
|
||||||
|
if (!ringing) return Source.REMOVE;
|
||||||
|
loop_ringer();
|
||||||
|
return Source.REMOVE;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loop_dialer() {
|
||||||
|
sound_context.play_full(DIALER_ID, dialer_props, (c, id, code) => {
|
||||||
|
if (code == Canberra.Error.CANCELED) return;
|
||||||
|
Timeout.add_seconds(GAP, () => {
|
||||||
|
if (!dialing) return Source.REMOVE;
|
||||||
|
loop_dialer();
|
||||||
|
return Source.REMOVE;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registered(Dino.Application app) {
|
||||||
|
|
||||||
|
Canberra.Context.create(out sound_context);
|
||||||
|
Canberra.Proplist.create(out ringer_props);
|
||||||
|
Canberra.Proplist.create(out dialer_props);
|
||||||
|
ringer_props.sets(Canberra.PROP_EVENT_ID, "phone-incoming-call");
|
||||||
|
ringer_props.sets(Canberra.PROP_EVENT_DESCRIPTION, "Incoming call");
|
||||||
|
dialer_props.sets(Canberra.PROP_EVENT_ID, "phone-outgoing-calling");
|
||||||
|
dialer_props.sets(Canberra.PROP_EVENT_DESCRIPTION, "Outgoing call");
|
||||||
|
|
||||||
|
NotificationEvents notification_events = app.stream_interactor.get_module(NotificationEvents.IDENTITY);
|
||||||
|
notification_events.register_notification_provider.begin(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void shutdown() { }
|
||||||
|
|
||||||
|
public async void notify_call(Call call, Conversation conversation, bool video, bool multiparty, string conversation_display_name){
|
||||||
|
ringing = true;
|
||||||
|
loop_ringer();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async void retract_call_notification(Call call, Conversation conversation){
|
||||||
|
ringing = false;
|
||||||
|
sound_context.cancel(RINGER_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async void notify_dialing(){
|
||||||
|
dialing = true;
|
||||||
|
loop_dialer();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async void retract_dialing(){
|
||||||
|
dialing = false;
|
||||||
|
sound_context.cancel(DIALER_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double get_priority(){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async void notify_message(Message message, Conversation conversation, string conversation_display_name, string? participant_display_name){}
|
||||||
|
public async void notify_file(FileTransfer file_transfer, Conversation conversation, bool is_image, string conversation_display_name, string? participant_display_name){}
|
||||||
|
public async void notify_subscription_request(Conversation conversation){}
|
||||||
|
public async void notify_connection_error(Account account, ConnectionManager.ConnectionError error){}
|
||||||
|
public async void notify_muc_invite(Account account, Jid room_jid, Jid from_jid, string inviter_display_name){}
|
||||||
|
public async void notify_voice_request(Conversation conversation, Jid from_jid){}
|
||||||
|
public async void retract_content_item_notifications(){}
|
||||||
|
public async void retract_conversation_notifications(Conversation conversation){}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
3
plugins/phone-ringer/src/register_plugin.vala
Normal file
3
plugins/phone-ringer/src/register_plugin.vala
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
public Type register_plugin(Module module) {
|
||||||
|
return typeof (Dino.Plugins.PhoneRinger.Plugin);
|
||||||
|
}
|
|
@ -278,7 +278,6 @@ public class Dino.Plugins.Rtp.Plugin : RootInterface, VideoCallPlugin, Object {
|
||||||
device_monitor.stop();
|
device_monitor.stop();
|
||||||
}
|
}
|
||||||
destroy_call_pipe();
|
destroy_call_pipe();
|
||||||
Gst.deinit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool supports(string? media) {
|
public bool supports(string? media) {
|
||||||
|
|
|
@ -324,5 +324,8 @@ namespace Dino.Plugins.WindowsNotification {
|
||||||
private void run_on_ui(owned DelegateToUi func) {
|
private void run_on_ui(owned DelegateToUi func) {
|
||||||
Idle.add(() => { func(); return false; }, GLib.Priority.HIGH);
|
Idle.add(() => { func(); return false; }, GLib.Priority.HIGH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async void notify_dialing(){}
|
||||||
|
public async void retract_dialing(){}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -30,6 +30,25 @@ public class Module : XmppStreamNegotiationModule {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async string? change_password(XmppStream stream, Jid jid, string new_pw) {
|
||||||
|
StanzaNode pw_change_node = new StanzaNode.build("query", NS_URI).add_self_xmlns();
|
||||||
|
StanzaNode username_node = new StanzaNode.build("username", NS_URI);
|
||||||
|
StanzaNode pw_node = new StanzaNode.build("password", NS_URI);
|
||||||
|
username_node.put_node(new StanzaNode.text(jid.localpart));
|
||||||
|
pw_node.put_node(new StanzaNode.text(new_pw));
|
||||||
|
pw_change_node.put_node(username_node);
|
||||||
|
pw_change_node.put_node(pw_node);
|
||||||
|
Iq.Stanza set_password_iq = new Iq.Stanza.set(pw_change_node, "change1") { to=jid.bare_jid.domain_jid };
|
||||||
|
|
||||||
|
Iq.Stanza chpw_result = yield stream.get_module(Iq.Module.IDENTITY).send_iq_async(stream, set_password_iq);
|
||||||
|
if (chpw_result.is_error()) {
|
||||||
|
ErrorStanza? error_stanza = chpw_result.get_error();
|
||||||
|
return error_stanza.text ?? "Error";
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public override bool mandatory_outstanding(XmppStream stream) { return false; }
|
public override bool mandatory_outstanding(XmppStream stream) { return false; }
|
||||||
|
|
||||||
public override bool negotiation_active(XmppStream stream) { return false; }
|
public override bool negotiation_active(XmppStream stream) { return false; }
|
||||||
|
|
Loading…
Reference in a new issue