Set up default encryption settings GUI
This commit is contained in:
parent
cc6d8d5930
commit
366a49a820
|
@ -6,7 +6,28 @@ public enum Encryption {
|
|||
OMEMO,
|
||||
DTLS_SRTP,
|
||||
SRTP,
|
||||
UNKNOWN,
|
||||
UNKNOWN;
|
||||
|
||||
public static Encryption parse(string str) {
|
||||
switch (str) {
|
||||
case "DINO_ENTITIES_ENCRYPTION_NONE":
|
||||
return NONE;
|
||||
case "DINO_ENTITIES_ENCRYPTION_PGP":
|
||||
return PGP;
|
||||
case "DINO_ENTITIES_ENCRYPTION_OMEMO":
|
||||
return OMEMO;
|
||||
case "DINO_ENTITIES_ENCRYPTION_DTLS_SRTP":
|
||||
return DTLS_SRTP;
|
||||
case "DINO_ENTITIES_ENCRYPTION_SRTP":
|
||||
return SRTP;
|
||||
case "DINO_ENTITIES_ENCRYPTION_UNKNOWN":
|
||||
// Fall through.
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -12,6 +12,7 @@ public class Settings : Object {
|
|||
notifications_ = col_to_bool_or_default("notifications", true);
|
||||
convert_utf8_smileys_ = col_to_bool_or_default("convert_utf8_smileys", true);
|
||||
check_spelling = col_to_bool_or_default("check_spelling", true);
|
||||
default_encryption = col_to_encryption_or_default("default_encryption", Encryption.OMEMO);
|
||||
}
|
||||
|
||||
private bool col_to_bool_or_default(string key, bool def) {
|
||||
|
@ -19,6 +20,12 @@ public class Settings : Object {
|
|||
return val != null ? bool.parse(val) : def;
|
||||
}
|
||||
|
||||
private Encryption col_to_encryption_or_default(string key, Encryption def) {
|
||||
var sval = db.settings.value;
|
||||
string? val = db.settings.select({sval}).with(db.settings.key, "=", key)[sval];
|
||||
return val != null ? Encryption.parse(val) : def;
|
||||
}
|
||||
|
||||
private bool send_typing_;
|
||||
public bool send_typing {
|
||||
get { return send_typing_; }
|
||||
|
@ -78,6 +85,19 @@ public class Settings : Object {
|
|||
check_spelling_ = value;
|
||||
}
|
||||
}
|
||||
|
||||
private Encryption default_encryption_;
|
||||
public Encryption default_encryption {
|
||||
get { return default_encryption_; }
|
||||
set {
|
||||
string valstr = value.to_string();
|
||||
db.settings.upsert()
|
||||
.value(db.settings.key, "default_encryption", true)
|
||||
.value(db.settings.value, valstr)
|
||||
.perform();
|
||||
default_encryption_ = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -77,6 +77,77 @@
|
|||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id ="default_encryption_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Default encryption</property>
|
||||
<property name="visible">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="encryption_radio_undecided">
|
||||
<property name="label" translatable="yes">Ask</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="group">encryption_radio_undecided</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="encryption_radio_omemo">
|
||||
<property name="label" translatable="yes">OMEMO</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="group">encryption_radio_undecided</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="encryption_radio_openpgp">
|
||||
<property name="label" translatable="yes">OpenPGP</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="group">encryption_radio_undecided</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using Gtk;
|
||||
using Dino.Entities;
|
||||
|
||||
namespace Dino.Ui {
|
||||
|
||||
|
@ -10,6 +11,9 @@ class SettingsDialog : Dialog {
|
|||
[GtkChild] private unowned CheckButton notification_checkbutton;
|
||||
[GtkChild] private unowned CheckButton emoji_checkbutton;
|
||||
[GtkChild] private unowned CheckButton check_spelling_checkbutton;
|
||||
[GtkChild] private unowned RadioButton encryption_radio_undecided;
|
||||
[GtkChild] private unowned RadioButton encryption_radio_omemo;
|
||||
[GtkChild] private unowned RadioButton encryption_radio_openpgp;
|
||||
|
||||
Dino.Entities.Settings settings = Dino.Application.get_default().settings;
|
||||
|
||||
|
@ -21,12 +25,33 @@ class SettingsDialog : Dialog {
|
|||
notification_checkbutton.active = settings.notifications;
|
||||
emoji_checkbutton.active = settings.convert_utf8_smileys;
|
||||
check_spelling_checkbutton.active = settings.check_spelling;
|
||||
encryption_radio_undecided.active = settings.default_encryption == Encryption.UNKNOWN;
|
||||
encryption_radio_omemo.active = settings.default_encryption == Encryption.OMEMO;
|
||||
encryption_radio_openpgp.active = settings.default_encryption == Encryption.PGP;
|
||||
|
||||
typing_checkbutton.toggled.connect(() => { settings.send_typing = typing_checkbutton.active; } );
|
||||
marker_checkbutton.toggled.connect(() => { settings.send_marker = marker_checkbutton.active; } );
|
||||
notification_checkbutton.toggled.connect(() => { settings.notifications = notification_checkbutton.active; } );
|
||||
emoji_checkbutton.toggled.connect(() => { settings.convert_utf8_smileys = emoji_checkbutton.active; });
|
||||
check_spelling_checkbutton.toggled.connect(() => { settings.check_spelling = check_spelling_checkbutton.active; });
|
||||
|
||||
encryption_radio_undecided.toggled.connect(() => {
|
||||
if (encryption_radio_undecided.active) {
|
||||
settings.default_encryption = Encryption.UNKNOWN;
|
||||
}
|
||||
});
|
||||
|
||||
encryption_radio_omemo.toggled.connect(() => {
|
||||
if (encryption_radio_omemo.active) {
|
||||
settings.default_encryption = Encryption.OMEMO;
|
||||
}
|
||||
});
|
||||
|
||||
encryption_radio_openpgp.toggled.connect(() => {
|
||||
if (encryption_radio_openpgp.active) {
|
||||
settings.default_encryption = Encryption.PGP;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue