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);
}
Example #2
0
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);
}