~bcurtiswx/ubuntu/precise/empathy/3.4.2.1-0ubuntu1

« back to all changes in this revision

Viewing changes to src/empathy-roster-window.c

  • Committer: Package Import Robot
  • Author(s): Ken VanDine
  • Date: 2012-03-05 15:14:36 UTC
  • mfrom: (1.1.87)
  • Revision ID: package-import@ubuntu.com-20120305151436-utnrdabb2ppp3kw1
Tags: 3.3.90.2-0ubuntu1
* New upstream release
* debian/control
  - added yelp-tools and libfarstream-0.1-dev build depends
  - bump build depends on libtelepathy-farstream-dev, and 
    libtelepathy-glib-dev
  - bumpded depends for telepathy-mission-control-5
  - removed telepathy-butterfly recommends, mission-control-5 ensures 
    telepathy-haze handles MSN now.
* debian/rules
  - enable empathy-av 

Show diffs side-by-side

added added

removed removed

Lines of Context:
114
114
  EmpathyEventManager *event_manager;
115
115
  EmpathySoundManager *sound_mgr;
116
116
  EmpathyCallObserver *call_observer;
 
117
  EmpathyIndividualManager *individual_manager;
117
118
  guint flash_timeout_id;
118
119
  gboolean flash_on;
119
120
  gboolean empty;
133
134
  GtkWidget *notebook;
134
135
  GtkWidget *no_entry_label;
135
136
  GtkWidget *button_account_settings;
 
137
  GtkWidget *spinner_loading;
136
138
 
137
139
  GtkToggleAction *show_protocols;
138
140
  GtkRadioAction *sort_by_name;
622
624
static void
623
625
display_page_message (EmpathyRosterWindow *self,
624
626
    const gchar *msg,
625
 
    gboolean display_accounts_button)
 
627
    gboolean display_accounts_button,
 
628
    gboolean display_spinner)
626
629
{
627
 
  gchar *tmp;
628
 
 
629
 
  tmp = g_strdup_printf ("<b><span size='xx-large'>%s</span></b>", msg);
630
 
 
631
 
  gtk_label_set_markup (GTK_LABEL (self->priv->no_entry_label), tmp);
632
 
  g_free (tmp);
633
 
 
634
 
  gtk_label_set_line_wrap (GTK_LABEL (self->priv->no_entry_label), TRUE);
 
630
  if (msg != NULL)
 
631
    {
 
632
      gchar *tmp;
 
633
 
 
634
      tmp = g_strdup_printf ("<b><span size='xx-large'>%s</span></b>", msg);
 
635
 
 
636
      gtk_label_set_markup (GTK_LABEL (self->priv->no_entry_label), tmp);
 
637
      g_free (tmp);
 
638
 
 
639
      gtk_label_set_line_wrap (GTK_LABEL (self->priv->no_entry_label), TRUE);
 
640
      gtk_widget_show (self->priv->no_entry_label);
 
641
    }
 
642
  else
 
643
    {
 
644
      gtk_widget_hide (self->priv->no_entry_label);
 
645
    }
635
646
 
636
647
  gtk_widget_set_visible (self->priv->button_account_settings,
637
648
      display_accounts_button);
 
649
  gtk_widget_set_visible (self->priv->spinner_loading,
 
650
      display_spinner);
638
651
 
639
652
  gtk_notebook_set_current_page (GTK_NOTEBOOK (self->priv->notebook),
640
653
      PAGE_MESSAGE);
644
657
display_page_no_account (EmpathyRosterWindow *self)
645
658
{
646
659
  display_page_message (self,
647
 
      _("You need to setup an account to see contacts here."), TRUE);
 
660
      _("You need to setup an account to see contacts here."), TRUE, FALSE);
648
661
}
649
662
 
650
663
static void
660
673
 
661
674
      if (empathy_individual_view_is_searching (self->priv->individual_view))
662
675
        {
663
 
          display_page_message (self, _("No match found"), FALSE);
 
676
          display_page_message (self, _("No match found"), FALSE, FALSE);
664
677
        }
665
678
    }
666
679
}
668
681
static void
669
682
display_page_contact_list (EmpathyRosterWindow *self)
670
683
{
 
684
  if (!empathy_individual_manager_get_contacts_loaded (
 
685
        self->priv->individual_manager))
 
686
    /* We'll display the contact list once we're done loading */
 
687
    return;
 
688
 
671
689
  gtk_notebook_set_current_page (GTK_NOTEBOOK (self->priv->notebook),
672
690
      PAGE_CONTACT_LIST);
673
691
}
1411
1429
 
1412
1430
  g_object_unref (self->priv->gsettings_ui);
1413
1431
  g_object_unref (self->priv->gsettings_contacts);
 
1432
  g_object_unref (self->priv->individual_manager);
1414
1433
 
1415
1434
  G_OBJECT_CLASS (empathy_roster_window_parent_class)->finalize (window);
1416
1435
}
2132
2151
    {
2133
2152
      display_page_message (self,
2134
2153
          _("You need to enable one of your accounts to see contacts here."),
2135
 
          TRUE);
 
2154
          TRUE, FALSE);
2136
2155
    }
2137
2156
  else
2138
2157
    {
2142
2161
      tmp = g_strdup_printf (_("You need to enable %s to see contacts here."),
2143
2162
          tp_account_get_display_name (account));
2144
2163
 
2145
 
      display_page_message (self, tmp, TRUE);
 
2164
      display_page_message (self, tmp, TRUE, FALSE);
2146
2165
      g_free (tmp);
2147
2166
    }
2148
2167
}
2397
2416
}
2398
2417
 
2399
2418
static void
 
2419
show_contacts_loading (EmpathyRosterWindow *self)
 
2420
{
 
2421
  display_page_message (self, NULL, FALSE, TRUE);
 
2422
 
 
2423
  gtk_spinner_start (GTK_SPINNER (self->priv->spinner_loading));
 
2424
}
 
2425
 
 
2426
static void
 
2427
hide_contacts_loading (EmpathyRosterWindow *self)
 
2428
{
 
2429
  gtk_spinner_stop (GTK_SPINNER (self->priv->spinner_loading));
 
2430
 
 
2431
  display_page_contact_list (self);
 
2432
}
 
2433
 
 
2434
static void
 
2435
contacts_loaded_cb (EmpathyIndividualManager *manager,
 
2436
    EmpathyRosterWindow *self)
 
2437
{
 
2438
  hide_contacts_loading (self);
 
2439
}
 
2440
 
 
2441
static void
2400
2442
empathy_roster_window_init (EmpathyRosterWindow *self)
2401
2443
{
2402
 
  EmpathyIndividualManager *individual_manager;
2403
2444
  GtkBuilder *gui, *gui_mgr;
2404
2445
  GtkWidget *sw;
2405
2446
  GtkToggleAction *show_offline_widget;
2440
2481
      "no_entry_label", &self->priv->no_entry_label,
2441
2482
      "roster_scrolledwindow", &sw,
2442
2483
      "button_account_settings", &self->priv->button_account_settings,
 
2484
      "spinner_loading", &self->priv->spinner_loading,
2443
2485
      NULL);
2444
2486
  g_free (filename);
2445
2487
 
2568
2610
   * so it's got a race condition between its signal handlers and its
2569
2611
   * finalization. The class is planned to be removed, so we won't fix
2570
2612
   * this before then. */
2571
 
  individual_manager = empathy_individual_manager_dup_singleton ();
 
2613
  self->priv->individual_manager = empathy_individual_manager_dup_singleton ();
 
2614
 
 
2615
  if (!empathy_individual_manager_get_contacts_loaded (
 
2616
        self->priv->individual_manager))
 
2617
    {
 
2618
      show_contacts_loading (self);
 
2619
 
 
2620
      tp_g_signal_connect_object (self->priv->individual_manager,
 
2621
          "contacts-loaded", G_CALLBACK (contacts_loaded_cb), self, 0);
 
2622
    }
 
2623
 
2572
2624
  self->priv->individual_store = EMPATHY_INDIVIDUAL_STORE (
2573
 
      empathy_individual_store_manager_new (individual_manager));
2574
 
  g_object_unref (individual_manager);
 
2625
      empathy_individual_store_manager_new (self->priv->individual_manager));
2575
2626
 
2576
2627
  /* For the moment, we disallow Persona drops onto the roster contact list
2577
2628
   * (e.g. from things such as the EmpathyPersonaView in the linking dialogue).
2595
2646
      EMPATHY_INDIVIDUAL_FEATURE_CALL |
2596
2647
      EMPATHY_INDIVIDUAL_FEATURE_EDIT |
2597
2648
      EMPATHY_INDIVIDUAL_FEATURE_INFO |
2598
 
      EMPATHY_INDIVIDUAL_FEATURE_LINK |
2599
2649
      EMPATHY_INDIVIDUAL_FEATURE_SMS |
2600
2650
      EMPATHY_INDIVIDUAL_FEATURE_CALL_PHONE);
2601
2651
 
2638
2688
      self->priv->balance_vbox, "visible",
2639
2689
      G_BINDING_SYNC_CREATE);
2640
2690
 
 
2691
  g_settings_bind (self->priv->gsettings_ui, "show-groups",
 
2692
      self->priv->individual_store, "show-groups", G_SETTINGS_BIND_DEFAULT);
 
2693
 
2641
2694
  /* Enable event handling */
2642
2695
  self->priv->call_observer = empathy_call_observer_dup_singleton ();
2643
2696
  self->priv->event_manager = empathy_event_manager_dup_singleton ();