year-view: Added visual clue for days with events
Year view didn't have hints for days with events and this feature was requested to be added to gnome-calendar. This is an old request but in the past gnome-design team though it would be better to keep the layout simple without hints for days with events. Now with the changes in gnome-shell calendar and in order to keep them in sync, this feature was added to gnome-calendar. In order to implement this code we had to add a few css styles and a code to add a small circle below everyday with events. Although gnome-shell calendar uses an svg image with a 3x3 dot, we chose to use a pango function to draw the dot. https://bugzilla.gnome.org/show_bug.cgi?id=743317
This commit is contained in:
committed by
Georges Basile Stavracas Neto
parent
5cfee45f7a
commit
e8c75cea32
@@ -120,6 +120,19 @@ calendar-view.second-view-header {
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.year-navigator.with-events {
|
||||||
|
background-color: @theme_fg_color;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.year-navigator.with-events-selected {
|
||||||
|
background-color: @theme_selected_bg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.year-navigator.with-events-sunday {
|
||||||
|
background-color: alpha(@theme_fg_color, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
.sidebar-header {
|
.sidebar-header {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
#define NAVIGATOR_CELL_WIDTH (210 + 15)
|
#define NAVIGATOR_CELL_WIDTH (210 + 15)
|
||||||
#define NAVIGATOR_CELL_HEIGHT 210
|
#define NAVIGATOR_CELL_HEIGHT 210
|
||||||
#define SIDEBAR_PREFERRED_WIDTH 200
|
#define SIDEBAR_PREFERRED_WIDTH 200
|
||||||
|
#define VISUAL_CLUES_SIDE 3.0
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
@@ -526,6 +527,8 @@ draw_month_grid (GcalYearView *year_view,
|
|||||||
gint days_delay, days, shown_rows, sunday_idx;
|
gint days_delay, days, shown_rows, sunday_idx;
|
||||||
gchar *str, *nr_day, *nr_week;
|
gchar *str, *nr_day, *nr_week;
|
||||||
gboolean selected_day;
|
gboolean selected_day;
|
||||||
|
GList *events;
|
||||||
|
icaltimetype start_date, end_date;
|
||||||
|
|
||||||
cairo_save (cr);
|
cairo_save (cr);
|
||||||
context = gtk_widget_get_style_context (widget);
|
context = gtk_widget_get_style_context (widget);
|
||||||
@@ -590,6 +593,19 @@ draw_month_grid (GcalYearView *year_view,
|
|||||||
shown_rows = ceil (days / 7.0);
|
shown_rows = ceil (days / 7.0);
|
||||||
sunday_idx = year_view->k * 6 + sw * ((7 - year_view->first_weekday) % 7);
|
sunday_idx = year_view->k * 6 + sw * ((7 - year_view->first_weekday) % 7);
|
||||||
|
|
||||||
|
start_date.day = 1;
|
||||||
|
start_date.month = month_nr + 1;
|
||||||
|
start_date.year = year_view->date->year;
|
||||||
|
start_date.hour = 0;
|
||||||
|
start_date.minute = 0;
|
||||||
|
start_date.second = 0;
|
||||||
|
end_date.day = 1;
|
||||||
|
end_date.month = month_nr + 1;
|
||||||
|
end_date.year = year_view->date->year;
|
||||||
|
end_date.hour = 23;
|
||||||
|
end_date.minute = 59;
|
||||||
|
end_date.second = 59;
|
||||||
|
|
||||||
for (i = 0; i < 7 * shown_rows; i++)
|
for (i = 0; i < 7 * shown_rows; i++)
|
||||||
{
|
{
|
||||||
column = i % 7;
|
column = i % 7;
|
||||||
@@ -695,6 +711,25 @@ draw_month_grid (GcalYearView *year_view,
|
|||||||
layout);
|
layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
start_date.day = end_date.day = j;
|
||||||
|
events = gcal_manager_get_events (year_view->manager, &start_date, &end_date);
|
||||||
|
if (events != NULL)
|
||||||
|
{
|
||||||
|
gtk_style_context_save (context);
|
||||||
|
gtk_style_context_add_class (context, "with-events");
|
||||||
|
if (selected_day)
|
||||||
|
gtk_style_context_add_class (context, "with-events-selected");
|
||||||
|
else if (column == sunday_idx)
|
||||||
|
gtk_style_context_add_class (context, "with-events-sunday");
|
||||||
|
box_padding_start = (box_side - VISUAL_CLUES_SIDE) / 2 > 0 ? (box_side - VISUAL_CLUES_SIDE) / 2 : 0;
|
||||||
|
gtk_render_background (context, cr,
|
||||||
|
box_side * (column + 0.5 + year_view->k) + x + sw * box_padding_start - year_view->k * VISUAL_CLUES_SIDE,
|
||||||
|
box_side * (row + 1) + y + box_padding_top + layout_height + 2.0,
|
||||||
|
VISUAL_CLUES_SIDE, VISUAL_CLUES_SIDE);
|
||||||
|
gtk_style_context_restore (context);
|
||||||
|
g_list_free_full (events, g_free);
|
||||||
|
}
|
||||||
|
|
||||||
g_free (nr_day);
|
g_free (nr_day);
|
||||||
}
|
}
|
||||||
pango_font_description_free (font_desc);
|
pango_font_description_free (font_desc);
|
||||||
|
|||||||
Reference in New Issue
Block a user