nav-bar: implemented today button
Implements today button between previous and forward buttons. Fix bug #703316.
This commit is contained in:
committed by
Erick Pérez Castellanos
parent
21356d926d
commit
7dc4ae6a84
+23
-1
@@ -37,6 +37,28 @@
|
|||||||
<property name="position">0</property>
|
<property name="position">0</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="today_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="focus_on_click">False</property>
|
||||||
|
<style>
|
||||||
|
<class name="nav-button"/>
|
||||||
|
</style>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="today_label">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Today</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="forward_button">
|
<object class="GtkButton" id="forward_button">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
@@ -56,7 +78,7 @@
|
|||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
<property name="position">1</property>
|
<property name="position">2</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
GtkWidget *back_button;
|
GtkWidget *back_button;
|
||||||
|
GtkWidget *today_button;
|
||||||
GtkWidget *forward_button;
|
GtkWidget *forward_button;
|
||||||
|
|
||||||
GtkWidget *left_label;
|
GtkWidget *left_label;
|
||||||
@@ -88,6 +89,7 @@ gcal_nav_bar_class_init (GcalNavBarClass *klass)
|
|||||||
|
|
||||||
/* Bind internals widgets */
|
/* Bind internals widgets */
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalNavBar, back_button);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalNavBar, back_button);
|
||||||
|
gtk_widget_class_bind_template_child_private (widget_class, GcalNavBar, today_button);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalNavBar, forward_button);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalNavBar, forward_button);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalNavBar, left_label);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalNavBar, left_label);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalNavBar, right_label);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalNavBar, right_label);
|
||||||
@@ -174,6 +176,15 @@ gcal_nav_bar_get_prev_button (GcalNavBar *nav_bar)
|
|||||||
return priv->back_button;
|
return priv->back_button;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GtkWidget*
|
||||||
|
gcal_nav_bar_get_today_button (GcalNavBar *nav_bar)
|
||||||
|
{
|
||||||
|
GcalNavBarPrivate *priv;
|
||||||
|
|
||||||
|
priv = gcal_nav_bar_get_instance_private (nav_bar);
|
||||||
|
return priv->today_button;
|
||||||
|
}
|
||||||
|
|
||||||
GtkWidget*
|
GtkWidget*
|
||||||
gcal_nav_bar_get_next_button (GcalNavBar *nav_bar)
|
gcal_nav_bar_get_next_button (GcalNavBar *nav_bar)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -50,6 +50,8 @@ GtkWidget* gcal_nav_bar_new (void);
|
|||||||
|
|
||||||
GtkWidget* gcal_nav_bar_get_prev_button (GcalNavBar *nav_bar);
|
GtkWidget* gcal_nav_bar_get_prev_button (GcalNavBar *nav_bar);
|
||||||
|
|
||||||
|
GtkWidget* gcal_nav_bar_get_today_button (GcalNavBar *nav_bar);
|
||||||
|
|
||||||
GtkWidget* gcal_nav_bar_get_next_button (GcalNavBar *nav_bar);
|
GtkWidget* gcal_nav_bar_get_next_button (GcalNavBar *nav_bar);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|||||||
+29
-16
@@ -257,28 +257,39 @@ date_updated (GtkButton *button,
|
|||||||
{
|
{
|
||||||
GcalWindowPrivate *priv;
|
GcalWindowPrivate *priv;
|
||||||
|
|
||||||
gboolean move_back;
|
gboolean move_back, move_today;
|
||||||
|
|
||||||
priv = gcal_window_get_instance_private (GCAL_WINDOW (user_data));
|
priv = gcal_window_get_instance_private (GCAL_WINDOW (user_data));
|
||||||
|
|
||||||
|
move_today = gcal_nav_bar_get_today_button (GCAL_NAV_BAR (priv->nav_bar)) == (GtkWidget*) button;
|
||||||
move_back = gcal_nav_bar_get_prev_button (GCAL_NAV_BAR (priv->nav_bar)) == (GtkWidget*) button;
|
move_back = gcal_nav_bar_get_prev_button (GCAL_NAV_BAR (priv->nav_bar)) == (GtkWidget*) button;
|
||||||
|
|
||||||
switch (priv->active_view)
|
if (move_today)
|
||||||
{
|
{
|
||||||
case GCAL_WINDOW_VIEW_DAY:
|
GcalManager *manager;
|
||||||
priv->active_date->day += 1 * (move_back ? -1 : 1);
|
|
||||||
break;
|
manager = get_manager (GCAL_WINDOW (user_data));
|
||||||
case GCAL_WINDOW_VIEW_WEEK:
|
*(priv->active_date) = icaltime_current_time_with_zone (gcal_manager_get_system_timezone (manager));
|
||||||
priv->active_date->day += 7 * (move_back ? -1 : 1);
|
}
|
||||||
break;
|
else
|
||||||
case GCAL_WINDOW_VIEW_MONTH:
|
{
|
||||||
priv->active_date->month += 1 * (move_back ? -1 : 1);
|
switch (priv->active_view)
|
||||||
break;
|
{
|
||||||
case GCAL_WINDOW_VIEW_YEAR:
|
case GCAL_WINDOW_VIEW_DAY:
|
||||||
priv->active_date->year += 1 * (move_back ? -1 : 1);
|
priv->active_date->day += 1 * (move_back ? -1 : 1);
|
||||||
break;
|
break;
|
||||||
case GCAL_WINDOW_VIEW_LIST:
|
case GCAL_WINDOW_VIEW_WEEK:
|
||||||
break;
|
priv->active_date->day += 7 * (move_back ? -1 : 1);
|
||||||
|
break;
|
||||||
|
case GCAL_WINDOW_VIEW_MONTH:
|
||||||
|
priv->active_date->month += 1 * (move_back ? -1 : 1);
|
||||||
|
break;
|
||||||
|
case GCAL_WINDOW_VIEW_YEAR:
|
||||||
|
priv->active_date->year += 1 * (move_back ? -1 : 1);
|
||||||
|
break;
|
||||||
|
case GCAL_WINDOW_VIEW_LIST:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
*(priv->active_date) = icaltime_normalize (*(priv->active_date));
|
*(priv->active_date) = icaltime_normalize (*(priv->active_date));
|
||||||
g_object_notify (user_data, "active-date");
|
g_object_notify (user_data, "active-date");
|
||||||
@@ -1054,6 +1065,8 @@ gcal_window_constructed (GObject *object)
|
|||||||
G_CALLBACK (view_changed), object);
|
G_CALLBACK (view_changed), object);
|
||||||
g_signal_connect (gcal_nav_bar_get_prev_button (GCAL_NAV_BAR (priv->nav_bar)),
|
g_signal_connect (gcal_nav_bar_get_prev_button (GCAL_NAV_BAR (priv->nav_bar)),
|
||||||
"clicked", G_CALLBACK (date_updated), object);
|
"clicked", G_CALLBACK (date_updated), object);
|
||||||
|
g_signal_connect (gcal_nav_bar_get_today_button (GCAL_NAV_BAR (priv->nav_bar)),
|
||||||
|
"clicked", G_CALLBACK (date_updated), object);
|
||||||
g_signal_connect (gcal_nav_bar_get_next_button (GCAL_NAV_BAR (priv->nav_bar)),
|
g_signal_connect (gcal_nav_bar_get_next_button (GCAL_NAV_BAR (priv->nav_bar)),
|
||||||
"clicked", G_CALLBACK (date_updated), object);
|
"clicked", G_CALLBACK (date_updated), object);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user