Remove commented out code.
[geeqie.git] / src / pan-timeline.c
1 /*
2  * Geeqie
3  * (C) 2006 John Ellis
4  * Copyright (C) 2008 - 2012 The Geeqie Team
5  *
6  * Author: John Ellis
7  *
8  * This software is released under the GNU General Public License (GNU GPL).
9  * Please read the included file COPYING for more information.
10  * This software comes with no warranty of any kind, use at your own risk!
11  */
12
13
14 #include "main.h"
15 #include "pan-types.h"
16
17
18 void pan_timeline_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *height)
19 {
20         GList *list;
21         GList *work;
22         gint x, y;
23         time_t tc;
24         gint total;
25         gint count;
26         PanItem *pi_month = NULL;
27         PanItem *pi_day = NULL;
28         gint month_start;
29         gint day_start;
30         gint x_width;
31         gint y_height;
32
33         list = pan_list_tree(dir_fd, SORT_NONE, TRUE, pw->ignore_symlinks);
34
35         if (pw->cache_list && pw->exif_date_enable)
36                 {
37                 pw->cache_list = pan_cache_sort(pw->cache_list, SORT_NAME, TRUE);
38                 list = filelist_sort(list, SORT_NAME, TRUE);
39                 pan_cache_sync_date(pw, list);
40                 }
41
42         pw->cache_list = pan_cache_sort(pw->cache_list, SORT_TIME, TRUE);
43         list = filelist_sort(list, SORT_TIME, TRUE);
44
45         *width = PAN_BOX_BORDER * 2;
46         *height = PAN_BOX_BORDER * 2;
47
48         x = 0;
49         y = 0;
50         month_start = y;
51         day_start = month_start;
52         x_width = 0;
53         y_height = 0;
54         tc = 0;
55         total = 0;
56         count = 0;
57         work = list;
58         while (work)
59                 {
60                 FileData *fd;
61                 PanItem *pi;
62
63                 fd = work->data;
64                 work = work->next;
65
66                 if (!pan_date_compare(fd->date, tc, PAN_DATE_LENGTH_DAY))
67                         {
68                         GList *needle;
69                         gchar *buf;
70
71                         if (!pan_date_compare(fd->date, tc, PAN_DATE_LENGTH_MONTH))
72                                 {
73                                 pi_day = NULL;
74
75                                 if (pi_month)
76                                         {
77                                         x = pi_month->x + pi_month->width + PAN_BOX_BORDER;
78                                         }
79                                 else
80                                         {
81                                         x = PAN_BOX_BORDER;
82                                         }
83
84                                 y = PAN_BOX_BORDER;
85
86                                 buf = pan_date_value_string(fd->date, PAN_DATE_LENGTH_MONTH);
87                                 pi = pan_item_text_new(pw, x, y, buf,
88                                                        PAN_TEXT_ATTR_BOLD | PAN_TEXT_ATTR_HEADING,
89                                                        PAN_TEXT_BORDER_SIZE,
90                                                        PAN_TEXT_COLOR, 255);
91                                 g_free(buf);
92                                 y += pi->height;
93
94                                 pi_month = pan_item_box_new(pw, file_data_ref(fd),
95                                                             x, y, 0, 0,
96                                                             PAN_BOX_OUTLINE_THICKNESS,
97                                                             PAN_BOX_COLOR, PAN_BOX_ALPHA,
98                                                             PAN_BOX_OUTLINE_COLOR, PAN_BOX_OUTLINE_ALPHA);
99
100                                 x += PAN_BOX_BORDER;
101                                 y += PAN_BOX_BORDER;
102                                 month_start = y;
103                                 }
104
105                         if (pi_day) x = pi_day->x + pi_day->width + PAN_BOX_BORDER;
106
107                         tc = fd->date;
108                         total = 1;
109                         count = 0;
110
111                         needle = work;
112                         while (needle)
113                                 {
114                                 FileData *nfd;
115
116                                 nfd = needle->data;
117                                 if (pan_date_compare(nfd->date, tc, PAN_DATE_LENGTH_DAY))
118                                         {
119                                         needle = needle->next;
120                                         total++;
121                                         }
122                                 else
123                                         {
124                                         needle = NULL;
125                                         }
126                                 }
127
128                         buf = pan_date_value_string(fd->date, PAN_DATE_LENGTH_WEEK);
129                         pi = pan_item_text_new(pw, x, y, buf, PAN_TEXT_ATTR_NONE,
130                                                PAN_TEXT_BORDER_SIZE,
131                                                PAN_TEXT_COLOR, 255);
132                         g_free(buf);
133
134                         y += pi->height;
135
136                         pi_day = pan_item_box_new(pw, file_data_ref(fd), x, y, 0, 0,
137                                                   PAN_BOX_OUTLINE_THICKNESS,
138                                                   PAN_BOX_COLOR, PAN_BOX_ALPHA,
139                                                   PAN_BOX_OUTLINE_COLOR, PAN_BOX_OUTLINE_ALPHA);
140
141                         x += PAN_BOX_BORDER;
142                         y += PAN_BOX_BORDER;
143                         day_start = y;
144                         }
145
146                 if (pw->size > PAN_IMAGE_SIZE_THUMB_LARGE)
147                         {
148                         pi = pan_item_image_new(pw, fd, x, y, 10, 10);
149                         if (pi->width > x_width) x_width = pi->width;
150                         y_height = pi->height;
151                         }
152                 else
153                         {
154                         pi = pan_item_thumb_new(pw, fd, x, y);
155                         x_width = PAN_THUMB_SIZE;
156                         y_height = PAN_THUMB_SIZE;
157                         }
158
159                 pan_item_size_by_item(pi_day, pi, PAN_BOX_BORDER);
160                 pan_item_size_by_item(pi_month, pi_day, PAN_BOX_BORDER);
161
162                 total--;
163                 count++;
164
165                 if (total > 0 && count < PAN_GROUP_MAX)
166                         {
167                         y += y_height + PAN_THUMB_GAP;
168                         }
169                 else
170                         {
171                         x += x_width + PAN_THUMB_GAP;
172                         x_width = 0;
173                         count = 0;
174
175                         if (total > 0)
176                                 y = day_start;
177                         else
178                                 y = month_start;
179                         }
180
181                 pan_item_size_coordinates(pi_month, PAN_BOX_BORDER, width, height);
182                 }
183
184         g_list_free(list);
185 }
186 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */