⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abooklistview.c

📁 linux手机下的电话本源码(是contact的上层)
💻 C
📖 第 1 页 / 共 2 页
字号:
        if (!gtk_tree_path_compare (path, p))        {          path = gtk_tree_path_new_first ();        }        gtk_tree_path_free (p);      }      else      {        path = gtk_tree_path_new_first ();      }      gtk_tree_view_set_cursor (GTK_TREE_VIEW (tree), path, NULL, FALSE);      return TRUE;    }  }  else if (event->keyval == GDK_Left || event->keyval == GDK_Right)  {    GdkEvent *new_event;    new_event = gdk_event_copy ((GdkEvent *) event);    ((GdkEventKey *) new_event)->window = GTK_WIDGET (view)->window;    gtk_widget_event (GTK_WIDGET (view), new_event);    return TRUE;  }  else if (event->keyval != GDK_Return)  {    if (!GTK_WIDGET_HAS_FOCUS (view->search_entry))    {      GdkEvent *new_event;      gtk_widget_grab_focus (view->search_entry);      new_event = gdk_event_copy ((GdkEvent *) event);      ((GdkEventKey *) new_event)->window = view->search_entry->window;      gtk_widget_event (view->search_entry, new_event);      return TRUE;    }  }#if 0  if (!event->state && event->string &&      (isalpha (event->string[0]) || isalnum (event->string[0])))  {    if (!GTK_WIDGET_HAS_FOCUS (view->search_entry))    {      GdkEvent *new_event;      gtk_widget_grab_focus (view->search_entry);      new_event = gdk_event_copy ((GdkEvent *) event);      ((GdkEventKey *) new_event)->window = view->search_entry->window;      gtk_widget_event (view->search_entry, new_event);      return TRUE;    }  }#endif  return FALSE;}static gbooleanabook_listview_focus_in_event_cb (GtkWidget *widget,                                  GdkEventFocus *event, gpointer user_data){  ABookListView *view = (ABookListView *) widget;  gtk_widget_grab_focus (view->treeview);//      abook_listview_update(view);  return FALSE;}static gintabook_listview_sort_func (GtkTreeModel *model,                          GtkTreeIter *a, GtkTreeIter *b, gpointer user_data){  gint ret = 0;  gchar *name1 = NULL;  gchar *name2 = NULL;  gint type1;  gint type2;  gint storage;  gtk_tree_model_get (model, a, COL_NAME, &name1, -1);  gtk_tree_model_get (model, b, COL_NAME, &name2, -1);  gtk_tree_model_get (model, a, COL_STORAGE, &storage, -1);  if (storage == STORAGE_NET)  {    gtk_tree_model_get (model, a, COL_TYPE, &type1, -1);    gtk_tree_model_get (model, b, COL_TYPE, &type2, -1);    //refer to g_utf8_collate    if (type1 > type2)    {      return -1;    }    else if (type1 < type2)    {      return 1;    }  }  if (name1 == NULL && name2 == NULL)  {    ret = 0;  }  else if (name1 == NULL || name2 == NULL)  {    ret = (name1 == NULL) ? -1 : 1;  }  else  {    ret = g_utf8_collate (name1, name2);  }  g_free (name1);  g_free (name2);  return ret;}static voidabook_listview_init (ABookListView *view){  GtkTreeViewColumn *col;  GtkCellRenderer *renderer;  GtkWidget *vbox = NULL;  view->scroll_window = gtk_auto_scrolled_window_new ();  gtk_widget_show (view->scroll_window);  view->search_entry = gtk_entry_new ();  g_signal_connect_after (G_OBJECT (view->search_entry),                          "key_press_event",                          G_CALLBACK (abook_listview_entry_key_press_event_cb),                          view);  g_signal_connect (G_OBJECT (view->search_entry),                    "changed",                    G_CALLBACK (abook_listview_entry_changed_cb),                    (gpointer) view);  gtk_widget_show (view->search_entry);  view->liststore = gtk_list_store_new (NUM_COLS,                                        G_TYPE_STRING,                                        G_TYPE_STRING,                                        G_TYPE_STRING,                                        GDK_TYPE_PIXBUF,                                        G_TYPE_INT, G_TYPE_INT);  view->treeview = gtk_tree_view_new ();  gtk_widget_show (view->treeview);//      gtk_widget_set_size_request(view->treeview, 240, 320);#if 0  /* column status */  col = gtk_tree_view_column_new ();  gtk_tree_view_column_set_title (col, "Status");  gtk_tree_view_append_column (GTK_TREE_VIEW (view->treeview), col);  renderer = gtk_cell_renderer_text_new ();  gtk_cell_renderer_set_fixed_size (renderer, 30, -1);  g_object_set (G_OBJECT (renderer), "ypad", 5, NULL);  gtk_tree_view_column_pack_start (col, renderer, TRUE);  gtk_tree_view_column_add_attribute (col, renderer, "text", COL_STATUS);#endif  /* column name */  col = gtk_tree_view_column_new ();  gtk_tree_view_column_set_title (col, "Name");  gtk_tree_view_append_column (GTK_TREE_VIEW (view->treeview), col);  renderer = gtk_cell_renderer_text_new ();  gtk_cell_renderer_set_fixed_size (renderer, 130, -1);  g_object_set (G_OBJECT (renderer), "ypad", 5, NULL);  gtk_tree_view_column_pack_start (col, renderer, TRUE);  gtk_tree_view_column_add_attribute (col, renderer, "text", COL_NAME);  /* column pic */  col = gtk_tree_view_column_new ();  gtk_tree_view_column_set_title (col, "Picutre");  gtk_tree_view_append_column (GTK_TREE_VIEW (view->treeview), col);  renderer = gtk_cell_renderer_pixbuf_new ();  gtk_cell_renderer_set_fixed_size (renderer, 32, 32);//      g_object_set(G_OBJECT(renderer), "ypad", 5, NULL);  gtk_tree_view_column_pack_start (col, renderer, TRUE);  gtk_tree_view_column_add_attribute (col, renderer, "pixbuf", COL_PIC);  gtk_tree_view_set_model (GTK_TREE_VIEW (view->treeview),                           GTK_TREE_MODEL (view->liststore));  g_object_unref (view->liststore);  gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view->treeview), FALSE);  g_signal_connect (G_OBJECT (view->treeview),                    "key-press-event",                    G_CALLBACK (abook_listview_treeview_key_press_event_cb),                    (gpointer) view);  if (TRUE)  {    GtkTreeSortable *sortable = NULL;    sortable = GTK_TREE_SORTABLE (view->liststore);    gtk_tree_sortable_set_sort_func (sortable,                                     LV_SORTID_NAME,                                     abook_listview_sort_func, NULL, NULL);    gtk_tree_sortable_set_sort_column_id (sortable,                                          LV_SORTID_NAME, GTK_SORT_ASCENDING);  }//      GTK_WIDGET_UNSET_FLAGS(view->treeview, GTK_CAN_FOCUS);  g_signal_connect (G_OBJECT (view->treeview), "row-activated",                    G_CALLBACK (abook_listview_row_activated), (gpointer) view);  gtk_auto_scrolled_window_add (GTK_AUTO_SCROLLED_WINDOW (view->scroll_window),                                view->treeview);  vbox = gtk_vbox_new (FALSE, 0);  gtk_box_pack_start (GTK_BOX (vbox), view->scroll_window, TRUE, TRUE, 0);  if (TRUE)  {    GtkWidget *hbox = NULL;    GtkWidget *search_icon = NULL;    hbox = gtk_hbox_new (FALSE, 0);    if (TRUE)    {      gchar *picpath = NULL;      picpath = g_build_filename (abook_env_get_picpath (), "search.png", NULL);      search_icon = gtk_image_new_from_file (picpath);    }    gtk_box_pack_start (GTK_BOX (hbox), search_icon, FALSE, FALSE, 5);    gtk_box_pack_start (GTK_BOX (hbox), view->search_entry, TRUE, TRUE, 0);    gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);  }  if (TRUE)  {    GtkWidget *eventbox = NULL;    eventbox = gtk_event_box_new ();    GTK_WIDGET_SET_FLAGS (eventbox, GTK_CAN_FOCUS);    gtk_widget_set_events (eventbox, GDK_ALL_EVENTS_MASK);    gtk_event_box_set_above_child (GTK_EVENT_BOX (eventbox), FALSE);    gtk_event_box_set_visible_window (GTK_EVENT_BOX (eventbox), FALSE);    gtk_container_add (GTK_CONTAINER (eventbox), vbox);    gtk_container_add (GTK_CONTAINER (view), eventbox);  }  GTK_WIDGET_SET_FLAGS (view, GTK_CAN_FOCUS);  g_signal_connect (G_OBJECT (view),                    "focus-in-event",                    G_CALLBACK (abook_listview_focus_in_event_cb), NULL);  view->row_activated_cb = NULL;  return;}GtkWidget *abook_listview_new (void){  return g_object_new (ABOOK_TYPE_LISTVIEW, NULL);}GtkListStore *abook_listview_get_model (ABookListView *view){  if (view->liststore)  {    g_object_ref (view->liststore);  }  return view->liststore;}GtkWidget *abook_listview_get_view (ABookListView *view){  if (view->liststore)  {    g_object_ref (view->treeview);  }  return view->treeview;}voidabook_listview_set_row_function (ABookListView *view,                                 ABookListViewRowCallback cb_func){  view->row_activated_cb = cb_func;  return;}voidabook_listview_update (ABookListView *view){  GtkTreePath *path = NULL;//  g_print("%s() entering\n", __FUNCTION__);  path = gtk_tree_path_new_first ();  gtk_tree_view_set_cursor (GTK_TREE_VIEW (view->treeview), path, NULL, TRUE);  gtk_tree_path_free (path);//  g_print("%s() leaving\n", __FUNCTION__);  return;}/* vi:ts=2:nowrap:ai:expandtab*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -