Skip to content

Commit

Permalink
Merge remote-tracking branch naxuroqa#345 (VENOM-344) into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
naxuroqa committed Apr 20, 2018
2 parents 94ff72b + 342c8e4 commit f46fcb1
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/ui/message_widget.ui
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label">message</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
<property name="wrap_mode">word-char</property>
<property name="selectable">True</property>
Expand Down
4 changes: 3 additions & 1 deletion src/view/MessageWidget.vala
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,17 @@ namespace Venom {

private ILogger logger;
private MessageViewModel view_model;
private UriTransform uri_transform;

public MessageWidget(ILogger logger, IMessage message_content) {
this.logger = logger;
this.view_model = new MessageViewModel(logger, message_content);
this.uri_transform = new UriTransform(logger);

view_model.bind_property("additional-info-visible", additional_info, "reveal-child", GLib.BindingFlags.SYNC_CREATE);
view_model.bind_property("timestamp", timestamp, "label", GLib.BindingFlags.SYNC_CREATE);
view_model.bind_property("timestamp-tooltip", timestamp, "tooltip-text", GLib.BindingFlags.SYNC_CREATE);
view_model.bind_property("message", message, "label", GLib.BindingFlags.SYNC_CREATE);
view_model.bind_property("message", message, "label", GLib.BindingFlags.SYNC_CREATE, uri_transform.transform);
view_model.bind_property("sender-image", sender_image, "pixbuf", GLib.BindingFlags.SYNC_CREATE);
view_model.bind_property("sender", sender, "label", GLib.BindingFlags.SYNC_CREATE);
view_model.bind_property("sender-sensitive", sender, "sensitive", GLib.BindingFlags.SYNC_CREATE);
Expand Down
26 changes: 26 additions & 0 deletions src/viewmodel/MessageViewModel.vala
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,30 @@ namespace Venom {
logger.d("MessageViewModel destroyed.");
}
}

public class UriTransform {
private ILogger logger;
public UriTransform(ILogger logger) {
this.logger = logger;
}

public bool transform(GLib.Binding binding, GLib.Value source, ref GLib.Value dest) {
var source_string = source.get_string();
try {
dest.set_string(uri_regex().replace(Markup.escape_text(source_string), -1, 0, "<a href=\"\\g<u>\">\\g<u></a>"));
} catch (RegexError e) {
logger.e("Error transforming text: " + e.message);
return false;
}
return true;
}

private static GLib.Regex _uri_regex;
private static GLib.Regex uri_regex() throws RegexError {
if (_uri_regex == null) {
_uri_regex = new GLib.Regex("(?<u>[a-z]+://\\S*)");
}
return _uri_regex;
}
}
}

0 comments on commit f46fcb1

Please sign in to comment.