Logo Search packages:      
Sourcecode: uget version File versions  Download package

ug_item.c

/*
 *
 *   Copyright (C) 2005-2009 by Raymond Huang
 *   plushuang at users.sourceforge.net
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  ---
 *
 *  In addition, as a special exception, the copyright holders give
 *  permission to link the code of portions of this program with the
 *  OpenSSL library under certain conditions as described in each
 *  individual source file, and distribute linked combinations
 *  including the two.
 *  You must obey the GNU Lesser General Public License in all respects
 *  for all of the code used other than OpenSSL.  If you modify
 *  file(s) with this exception, you may extend this exception to your
 *  version of the file(s), but you are not obligated to do so.  If you
 *  do not wish to do so, delete this exception statement from your
 *  version.  If you delete this exception statement from all source
 *  files in the program, then also delete it here.
 *
 */

#include <ug_item.h>


UgItem*     ug_item_store_realloc_next (GtkListStore* liststore, GtkTreeIter* iter)
{
      UgItem*           item;
      gboolean    valid;

      if (iter->stamp == 0)
            valid = gtk_tree_model_get_iter_first ((GtkTreeModel*) liststore, iter);
      else
            valid = gtk_tree_model_iter_next ((GtkTreeModel*) liststore, iter);

      if (valid == FALSE) {
            item = g_malloc0 (sizeof (UgItem));
            gtk_list_store_append (liststore, iter);
            gtk_list_store_set (liststore, iter, 0, item, -1);
            return item;
      }
      gtk_tree_model_get ((GtkTreeModel*) liststore, iter, 0, &item, -1);
      return item;
}

void  ug_item_store_clear_after (GtkListStore* liststore, GtkTreeIter* iter)
{
      GtkTreeIter iter_temp;
      UgItem*           item;
      gboolean    valid;

      if (iter)
            valid = gtk_tree_model_iter_next ((GtkTreeModel*) liststore, iter);
      else {
            iter = &iter_temp;
            valid = gtk_tree_model_get_iter_first ((GtkTreeModel*) liststore, iter);
      }

      while (valid) {
            gtk_tree_model_get ((GtkTreeModel*) liststore, iter, 0, &item, -1);
            valid = gtk_list_store_remove (liststore, iter);
            g_free (item->name);
            g_free (item->value);
            g_free (item);
      }
}

void  ug_item_store_set_mark_all (GtkListStore* liststore, gboolean marked)
{
      UgItem*                 item;
      GtkTreeModel*     model;
      GtkTreeIter       iter;
      gboolean          valid;

      model = (GtkTreeModel*) liststore;
      valid = gtk_tree_model_get_iter_first (model, &iter);
      while (valid) {
            gtk_tree_model_get (model, &iter, 0, &item, -1);
            item->mark = marked;
            valid = gtk_tree_model_iter_next (model, &iter);
      }
}

GList*      ug_item_store_get_marked (GtkListStore* liststore)
{
      UgItem*                 item;
      GtkTreeModel*     model;
      GtkTreeIter       iter;
      gboolean          valid;
      GList*                  result;

      result = NULL;
      model = (GtkTreeModel*) liststore;
      valid = gtk_tree_model_get_iter_first (model, &iter);
      while (valid) {
            gtk_tree_model_get (model, &iter, 0, &item, -1);
            valid = gtk_tree_model_iter_next (model, &iter);
            if (item->mark)
                  result = g_list_prepend (result, item);
      }
      return result;
}


Generated by  Doxygen 1.6.0   Back to index