EditBookmarksDialog::EditBookmarksDialog(FmBookmarks* bookmarks, QWidget* parent, Qt::WindowFlags f): QDialog(parent, f), ui(new Ui::EditBookmarksDialog()), bookmarks_(FM_BOOKMARKS(g_object_ref(bookmarks))) { ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); // auto delete on close // load bookmarks GList* allBookmarks = fm_bookmarks_get_all(bookmarks_); for(GList* l = allBookmarks; l; l = l->next) { FmBookmarkItem* bookmark = reinterpret_cast<FmBookmarkItem*>(l->data); QTreeWidgetItem* item = new QTreeWidgetItem(); char* path_str = fm_path_display_name(bookmark->path, false); item->setData(0, Qt::DisplayRole, QString::fromUtf8(bookmark->name)); item->setData(1, Qt::DisplayRole, QString::fromUtf8(path_str)); item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEditable|Qt::ItemIsDragEnabled|Qt::ItemIsEnabled); g_free(path_str); ui->treeWidget->addTopLevelItem(item); } g_list_free_full(allBookmarks, (GDestroyNotify)fm_bookmark_item_unref); connect(ui->addItem, &QPushButton::clicked, this, &EditBookmarksDialog::onAddItem); connect(ui->removeItem, &QPushButton::clicked, this, &EditBookmarksDialog::onRemoveItem); }
static void fm_bookmarks_finalize(GObject *object) { FmBookmarks *self; g_return_if_fail(object != NULL); g_return_if_fail(IS_FM_BOOKMARKS(object)); self = FM_BOOKMARKS(object); if(idle_handler) { g_source_remove(idle_handler); idle_handler = 0; } g_list_foreach(self->items, (GFunc)free_item, NULL); g_list_free(self->items); g_object_unref(self->mon); G_OBJECT_CLASS(fm_bookmarks_parent_class)->finalize(object); }