QModelIndex gtk_combo_box_get_index(GtkComboBox *box) { GtkTreeIter filter_iter; GtkTreeIter child_iter; GtkTreeModel *filter_model = gtk_combo_box_get_model(box); GtkTreeModel *model = filter_model; GtkTreeIter *iter = NULL; if (GTK_IS_TREE_MODEL_FILTER(filter_model)) model = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(filter_model)); if (gtk_combo_box_get_active_iter(box, &filter_iter)) { if (GTK_IS_TREE_MODEL_FILTER(filter_model)) { gtk_tree_model_filter_convert_iter_to_child_iter( GTK_TREE_MODEL_FILTER(filter_model), &child_iter, &filter_iter); iter = &child_iter; } else { iter = &filter_iter; } if (GTK_IS_Q_TREE_MODEL(model)) return gtk_q_tree_model_get_source_idx(GTK_Q_TREE_MODEL(model), iter); } return QModelIndex(); }
static gboolean select_autocompletion(G_GNUC_UNUSED GtkEntryCompletion *widget, GtkTreeModel *model, GtkTreeIter *iter, RingMainWindow *win) { RingMainWindowPrivate *priv = RING_MAIN_WINDOW_GET_PRIVATE(win); QModelIndex idx = gtk_q_tree_model_get_source_idx(GTK_Q_TREE_MODEL(model), iter); if (idx.isValid()) { priv->q_completion_model->selectionModel()->setCurrentIndex(idx, QItemSelectionModel::ClearAndSelect); Call *call = priv->q_completion_model->call(); priv->q_completion_model->callSelectedNumber(); /* make this the currently selected call */ QModelIndex idx = CallModel::instance().getIndex(call); CallModel::instance().selectionModel()->setCurrentIndex(idx, QItemSelectionModel::ClearAndSelect); /* move focus away from entry so that DTMF tones can be entered via the keyboard */ gtk_widget_child_focus(GTK_WIDGET(win), GTK_DIR_TAB_FORWARD); /* clear the entry */ gtk_entry_set_text(GTK_ENTRY(priv->search_entry), ""); } else { g_warning("autocompletion selection is not a valid index!"); } return TRUE; }
static gboolean filter_disabled_items(GtkTreeModel *model, GtkTreeIter *iter, G_GNUC_UNUSED gpointer data) { QModelIndex idx; if (GTK_IS_Q_TREE_MODEL(model)) idx = gtk_q_tree_model_get_source_idx(GTK_Q_TREE_MODEL(model), iter); if (idx.isValid()) { return idx.flags() & Qt::ItemIsEnabled ? TRUE : FALSE; } return FALSE; }
QModelIndex get_index_from_selection(GtkTreeSelection *selection) { GtkTreeIter iter; GtkTreeModel *model = NULL; if (gtk_tree_selection_get_selected(selection, &model, &iter)) { if (GTK_IS_Q_TREE_MODEL(model)) return gtk_q_tree_model_get_source_idx(GTK_Q_TREE_MODEL(model), &iter); } return QModelIndex(); }
static QModelIndex get_qidx_from_filter_model(GtkTreeModelFilter *filter_model, GtkTreeIter *filter_iter) { GtkTreeModel *child_model = gtk_tree_model_filter_get_model(filter_model); GtkTreeIter child_iter; gtk_tree_model_filter_convert_iter_to_child_iter( GTK_TREE_MODEL_FILTER(filter_model), &child_iter, filter_iter); return gtk_q_tree_model_get_source_idx(GTK_Q_TREE_MODEL(child_model), &child_iter); }
static void cipher_enable_toggled(GtkCellRendererToggle *renderer, gchar *path, AccountSecurityTab *self) { g_return_if_fail(IS_ACCOUNT_SECURITY_TAB(self)); AccountSecurityTabPrivate *priv = ACCOUNT_SECURITY_TAB_GET_PRIVATE(self); /* we want to set it to the opposite of the current value */ gboolean toggle = !gtk_cell_renderer_toggle_get_active(renderer); /* get iter which was clicked */ GtkTreePath *tree_path = gtk_tree_path_new_from_string(path); GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(priv->treeview_cipher_list)); GtkTreeIter iter; gtk_tree_model_get_iter(model, &iter, tree_path); /* get qmodelindex from iter and set the model data */ QModelIndex idx = gtk_q_tree_model_get_source_idx(GTK_Q_TREE_MODEL(model), &iter); if (idx.isValid()) priv->account->cipherModel()->setData(idx, toggle ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole); }
static void render_check_state(G_GNUC_UNUSED GtkCellLayout *cell_layout, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, G_GNUC_UNUSED gpointer data) { QModelIndex idx; if (GTK_IS_Q_TREE_MODEL(model)) idx = gtk_q_tree_model_get_source_idx(GTK_Q_TREE_MODEL(model), iter); else if (GTK_IS_Q_SORT_FILTER_TREE_MODEL(model)) idx = gtk_q_sort_filter_tree_model_get_source_idx(GTK_Q_SORT_FILTER_TREE_MODEL(model), iter); gboolean checked = FALSE; if (idx.isValid()) { checked = idx.data(Qt::CheckStateRole).value<int>() == Qt::Checked ? TRUE : FALSE; } g_object_set(G_OBJECT(cell), "active", checked, NULL); }