chiark / gitweb /
Eliminate choosedata structure, using extra treestore columns instead.
[disorder] / disobedience / choose.h
index 812d88ab5de0126de8a24a64fe57c4094ac9982d..16414a8c02299efba2b9c3dcc76fa9d293b2361c 100644 (file)
 #ifndef CHOOSE_H
 #define CHOOSE_H
 
-/** @brief Extra data at each node */
-struct choosedata {
-  /** @brief Node type */
-  int type;
-
-  /** @brief Full track or directory name */
-  gchar *track;
-
-  /** @brief Sort key */
-  gchar *sort;
-};
-
 /** @brief Column numbers */
 enum {
-  STATE_COLUMN,
-  NAME_COLUMN,
-  LENGTH_COLUMN,
-  ISFILE_COLUMN,
-  CHOOSEDATA_COLUMN
-};
-
-/** @brief @ref choosedata node is a file */
-#define CHOOSE_FILE 0
+  /* Visible columns */
+  STATE_COLUMN,                 /* Track state */
+  NAME_COLUMN,                  /* Track name (display context) */
+  LENGTH_COLUMN,                /* Track length */
+  /* Hidden columns */
+  ISFILE_COLUMN,                /* TRUE for a track, FALSE for a directory */
+  TRACK_COLUMN,                 /* Full track name, "" for placeholder */
+  SORT_COLUMN,                  /* Sort key */
 
-/** @brief @ref choosedata node is a directory */
-#define CHOOSE_DIRECTORY 1
+  CHOOSE_COLUMNS                /* column count */
+};
 
 extern GtkTreeStore *choose_store;
 extern GtkWidget *choose_view;
@@ -59,6 +46,11 @@ gboolean choose_button_event(GtkWidget *widget,
                              gpointer user_data);
 void choose_play_completed(void attribute((unused)) *v,
                            const char *error);
+char *choose_get_track(GtkTreeIter *iter);
+char *choose_get_sort(GtkTreeIter *iter);
+int choose_is_file(GtkTreeIter *iter);
+int choose_is_dir(GtkTreeIter *iter);
+int choose_is_placeholder(GtkTreeIter *iter);
 
 #endif /* CHOOSE_H */