aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/conversation_content_view/date_separator_populator.vala
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/ui/conversation_content_view/date_separator_populator.vala')
-rw-r--r--main/src/ui/conversation_content_view/date_separator_populator.vala80
1 files changed, 1 insertions, 79 deletions
diff --git a/main/src/ui/conversation_content_view/date_separator_populator.vala b/main/src/ui/conversation_content_view/date_separator_populator.vala
index 25ef7a51..ef8befe5 100644
--- a/main/src/ui/conversation_content_view/date_separator_populator.vala
+++ b/main/src/ui/conversation_content_view/date_separator_populator.vala
@@ -15,7 +15,6 @@ class DateSeparatorPopulator : Plugins.ConversationItemPopulator, Plugins.Conver
private Plugins.ConversationItemCollection? item_collection;
private Gee.TreeSet<DateTime> insert_times;
-
public DateSeparatorPopulator(StreamInteractor stream_interactor) {
this.stream_interactor = stream_interactor;
}
@@ -54,92 +53,15 @@ class DateSeparatorPopulator : Plugins.ConversationItemPopulator, Plugins.Conver
public class MetaDateItem : Plugins.MetaConversationItem {
public override DateTime time { get; set; }
- private DateTime date;
-
public MetaDateItem(DateTime date) {
- this.date = date;
this.time = date;
}
public override Object? get_widget(Plugins.ConversationItemWidgetInterface outer, Plugins.WidgetType widget_type) {
- return new DateSeparatorWidget(date);
+ return new DateSeparator() { model = new ViewModel.CompatDateSeparatorModel(time) };
}
public override Gee.List<Plugins.MessageAction>? get_item_actions(Plugins.WidgetType type) { return null; }
-
-
-}
-
-public class DateSeparatorWidget : Box {
-
- private DateTime date;
- private Label label;
- private uint time_update_timeout = 0;
-
- public DateSeparatorWidget(DateTime date) {
- Object(orientation:Orientation.HORIZONTAL, spacing:10);
- width_request = 300;
- halign = Align.CENTER;
- visible = true;
- this.date = date;
-
- label = new Label("") { use_markup=true, halign=Align.CENTER, hexpand=false };
- label.add_css_class("dim-label");
-
- this.append(new Separator(Orientation.HORIZONTAL) { valign=Align.CENTER, hexpand=true });
- this.append(label);
- this.append(new Separator(Orientation.HORIZONTAL) { valign=Align.CENTER, hexpand=true });
-
- update_time();
- }
-
- private void update_time() {
- label.label = @"<span size='small'>$(get_relative_time(date))</span>";
- time_update_timeout = Timeout.add_seconds((int) get_next_time_change(), () => {
- if (this.parent == null) return false;
- update_time();
- return false;
- });
- }
-
- private static string get_relative_time(DateTime time) {
- DateTime time_local = time.to_local();
- DateTime now_local = new DateTime.now_local();
- if (time_local.get_year() == now_local.get_year() &&
- time_local.get_month() == now_local.get_month() &&
- time_local.get_day_of_month() == now_local.get_day_of_month()) {
- return _("Today");
- }
- DateTime now_local_minus = now_local.add_days(-1);
- if (time_local.get_year() == now_local_minus.get_year() &&
- time_local.get_month() == now_local_minus.get_month() &&
- time_local.get_day_of_month() == now_local_minus.get_day_of_month()) {
- return _("Yesterday");
- }
- if (time_local.get_year() != now_local.get_year()) {
- return time_local.format("%x");
- }
- TimeSpan timespan = now_local.difference(time_local);
- if (timespan < 7 * TimeSpan.DAY) {
- return time_local.format(_("%a, %b %d"));
- } else {
- return time_local.format(_("%b %d"));
- }
- }
-
- private int get_next_time_change() {
- DateTime now = new DateTime.now_local();
- return (23 - now.get_hour()) * 3600 + (59 - now.get_minute()) * 60 + (59 - now.get_second()) + 1;
- }
-
- public override void dispose() {
- base.dispose();
-
- if (time_update_timeout != 0) {
- Source.remove(time_update_timeout);
- time_update_timeout = 0;
- }
- }
}
}