~cairo-dock-team/ubuntu/precise/cairo-dock-plug-ins/984054

« back to all changes in this revision

Viewing changes to Folders/src/applet-load-icons.c

  • Committer: Bazaar Package Importer
  • Author(s): Matthieu Baerts (matttbe)
  • Date: 2010-08-10 00:05:57 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20100810000557-pfxoz5w7hbyclcqh
Tags: 2.2.0~0beta4-0ubuntu1
* New Upstream Version (LP: #614625)
* Fixed a few bugs on LP:
 - LP: #483963: Dustbin applet does not display trashes on all volumes
 - LP: #485159: Some apps have problem with Systray
 - LP: #500677: ~/.xsession-errors is too much used by CD
 - LP: #500979: Shortcuts: the order gets messed up
 - LP: #521531: Mail: crashes on Maildir
 - LP: #519915: GTG: create a new applet to control GTG
 - LP: #526138: GMenu doesn't handle desktop file exec strings properly
 - LP: #531317: CMake: Added an error if the prefix of 'cairo-dock-plugins'
                 is not the same 'cairo-dock-core'
 - LP: #531319: CMake: check the version of 'cairo-dock' when building
                 'cairo-dock-plugins'
 - LP: #537115: Click at the position where icon lavel was, the icon
                 and dock still receive the event
 - LP: #537943: Terminal applet shortkey behaviour
 - LP: #538637: Trash applet doesn't create .trashinfo files on XFCE
 - More details on the 'ChangeLog' file
* debian/rules:
 - Autotools has been replaced by CMake
 - cdbs is now used.
* debian/copyright:
 - Updated with the new applets
* debian/control:
 - Autotools has been replaced by CMake
 - Added libcurl4-gnutls-dev, libindicator-dev, libdbusmenu-glib-dev
   libido-0.1-dev, libical-dev, libdbusmenu-gtk-dev as Build-deps
 - Bump Standard-Version to 3.9.1
 - Wget is required for dnd2share applet
 - Added the exact realease for 'cairo-dock-dev' in order to prevent any
    build error if this package is not already available (thx to didrocks)
* debian/cairo-dock-plug-ins*.install:
 - All sonames are now installed into lib32 or lib64 (lib*)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
* This file is a part of the Cairo-Dock project
 
3
*
 
4
* Copyright : (C) see the 'copyright' file.
 
5
* E-mail    : see the 'copyright' file.
 
6
*
 
7
* This program is free software; you can redistribute it and/or
 
8
* modify it under the terms of the GNU General Public License
 
9
* as published by the Free Software Foundation; either version 3
 
10
* of the License, or (at your option) any later version.
 
11
*
 
12
* This program is distributed in the hope that it will be useful,
 
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
15
* GNU General Public License for more details.
 
16
* You should have received a copy of the GNU General Public License
 
17
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
18
*/
 
19
 
 
20
#include <stdlib.h>
 
21
#include <string.h>
 
22
 
 
23
#include "applet-struct.h"
 
24
#include "applet-notifications.h"
 
25
#include "applet-load-icons.h"
 
26
 
 
27
static void _cd_folders_remove_all_icons (CairoDockModuleInstance *myApplet);
 
28
 
 
29
void cd_shortcuts_set_icon_order (Icon *pNewIcon, GList *pIconsList, GCompareFunc comp)
 
30
{
 
31
        if (comp == NULL)
 
32
                return;
 
33
        g_print ("%s (%s)\n", __func__, pNewIcon->cName);
 
34
        // on cherche la 1ere icone du meme type.
 
35
        GList *ic;
 
36
        Icon *pIcon;
 
37
        for (ic = pIconsList; ic != NULL; ic = ic->next)
 
38
        {
 
39
                pIcon = ic->data;
 
40
                if (pIcon->iType == pNewIcon->iType)
 
41
                        break;
 
42
        }
 
43
        GList *ic0 = ic;
 
44
        if (! ic0)  // si non trouve, on arrete la.
 
45
        {
 
46
                pNewIcon->fOrder = 0;
 
47
                return;
 
48
        }
 
49
        
 
50
        pIcon = ic0->data;
 
51
        if (comp (pNewIcon, pIcon) <= 0)
 
52
        {
 
53
                pNewIcon->fOrder = pIcon->fOrder - 1;
 
54
                g_print ("name : %s <= %s -> %.2f\n", pNewIcon->cName, pIcon->cName, pNewIcon->fOrder);
 
55
                return;
 
56
        }
 
57
        
 
58
        pNewIcon->fOrder = 0;
 
59
        for (ic = ic0; ic != NULL; ic = ic->next)
 
60
        {
 
61
                pIcon = ic->data;
 
62
                g_print ("  compare with %s (%.2f)\n", pIcon->cName, pIcon->fOrder);
 
63
                if (pIcon->iType != pNewIcon->iType)
 
64
                {
 
65
                        g_print ("  type differ, break\n");
 
66
                        break;
 
67
                }
 
68
                if (comp (pNewIcon, pIcon) < 0)
 
69
                {
 
70
                        if (ic->prev == NULL)
 
71
                                pNewIcon->fOrder = pIcon->fOrder - 1;
 
72
                        else
 
73
                        {
 
74
                                Icon *pPrevIcon = ic->prev->data;
 
75
                                pNewIcon->fOrder = (pIcon->fOrder + pPrevIcon->fOrder) / 2;
 
76
                        }
 
77
                        g_print ("  name : %s < %s -> %.2f\n", pNewIcon->cName, pIcon->cName, pNewIcon->fOrder);
 
78
                        break;
 
79
                }
 
80
                pNewIcon->fOrder = pIcon->fOrder + 1;
 
81
                g_print ("  fOrder <- %.2f\n", pNewIcon->fOrder);
 
82
        }
 
83
}
 
84
 
 
85
 
 
86
static void _manage_event_on_file (CairoDockFMEventType iEventType, const gchar *cBaseURI, GList *pIconsList, CairoContainer *pContainer, CairoDockModuleInstance *myApplet)
 
87
{
 
88
        gchar *cURI = (g_strdup (cBaseURI));
 
89
        cairo_dock_remove_html_spaces (cURI);
 
90
        g_print (" * event %d on '%s'\n", iEventType, cURI);
 
91
        
 
92
        switch (iEventType)
 
93
        {
 
94
                case CAIRO_DOCK_FILE_DELETED :  // un fichier a ete supprime (ce peut etre du a un renommage).
 
95
                {
 
96
                        if (strcmp (myConfig.cDirPath, cBaseURI) == 0)
 
97
                        {
 
98
                                g_print ("our folder has been removed\n");
 
99
                                _cd_folders_remove_all_icons (myApplet);
 
100
                                return;
 
101
                        }
 
102
                        
 
103
                        Icon *pConcernedIcon = cairo_dock_get_icon_with_base_uri (pIconsList/**myData.pAllFiles*/, cURI);
 
104
                        if (pConcernedIcon == NULL)  // on cherche par nom.
 
105
                        {
 
106
                                pConcernedIcon = cairo_dock_get_icon_with_name (pIconsList/**myData.pAllFiles*/, cURI);
 
107
                        }
 
108
                        if (pConcernedIcon == NULL)
 
109
                        {
 
110
                                cd_warning ("  an unknown file was removed");
 
111
                                return ;
 
112
                        }       
 
113
                        g_print (" %s will be removed\n", pConcernedIcon->cName);
 
114
                        
 
115
                        // on l'enleve de la liste.
 
116
                        ///myData.pAllFiles = g_list_remove (myData.pAllFiles, pConcernedIcon);
 
117
                        
 
118
                        // on l'enleve du container.
 
119
                        gboolean bInContainer = CD_APPLET_REMOVE_ICON_FROM_MY_ICONS_LIST (pConcernedIcon);  // detruit l'icone.
 
120
                        
 
121
                        // on la remplace par la 1ere sur la liste d'attente.
 
122
                        /**if (bInContainer)
 
123
                        {
 
124
                                Icon *pNextIcon = g_list_nth_data (myData.pAllFiles, myConfig.iNbIcons - 1);
 
125
                                g_print ("  insert next icon : %s\n", pNextIcon?pNextIcon->cBaseURI:"none");
 
126
                                if (pNextIcon)
 
127
                                        CD_APPLET_ADD_ICON_IN_MY_ICONS_LIST (pNextIcon);
 
128
                        }*/
 
129
                }
 
130
                break ;
 
131
                
 
132
                case CAIRO_DOCK_FILE_CREATED :  // un point de montage a ete connecte.
 
133
                {
 
134
                        if (strcmp (myConfig.cDirPath, cBaseURI) == 0)
 
135
                        {
 
136
                                g_print ("our folder has been re-created\n");
 
137
                                cairo_dock_launch_task (myData.pTask);
 
138
                                return;
 
139
                        }
 
140
                        
 
141
                        //\_______________________ on verifie qu'elle n'existe pas deja.
 
142
                        Icon *pSameIcon = cairo_dock_get_icon_with_base_uri (pIconsList/**myData.pAllFiles*/, cURI);
 
143
                        if (pSameIcon != NULL)
 
144
                        {
 
145
                                cd_warning ("this file (%s) already exists", pSameIcon->cName);
 
146
                                return;  // on decide de ne rien faire, c'est surement un signal inutile.
 
147
                        }
 
148
                        
 
149
                        //\_______________________ on cree une icone pour cette nouvelle URI.
 
150
                        Icon *pNewIcon = cairo_dock_fm_create_icon_from_URI (cURI, pContainer, myConfig.iSortType);
 
151
                        if (pNewIcon == NULL)
 
152
                        {
 
153
                                cd_warning ("couldn't create an icon for this file");
 
154
                                return ;
 
155
                        }
 
156
                        pNewIcon->iType = (myConfig.bFoldersFirst && pNewIcon->iVolumeID == -1 ? 6 : 8);
 
157
                        
 
158
                        //\_______________________ on la place au bon endroit suivant son nom.
 
159
                        cd_shortcuts_set_icon_order (pNewIcon, pIconsList/**myData.pAllFiles*/, myData.comp);
 
160
                        g_print (" new file : %s, order = %.2f\n", pNewIcon->cName, pNewIcon->fOrder);
 
161
                        
 
162
                        //\_______________________ on l'insere dans la liste.
 
163
                        ///myData.pAllFiles = g_list_insert_sorted (myData.pAllFiles, pNewIcon, (GCompareFunc)cairo_dock_compare_icons_order);
 
164
                        
 
165
                        //\_______________________ si l'ordre est < la derniere icone du container, on l'insere dans celui-ci.
 
166
                        /**Icon *pLastIcon = cairo_dock_get_last_icon (pIconsList);
 
167
                        if (pLastIcon)  // container non vide.
 
168
                        {
 
169
                                guint iCurrentNbIcons = g_list_length (pIconsList);
 
170
                                if (pNewIcon->fOrder < pLastIcon->fOrder || iCurrentNbIcons+1 <= myConfig.iNbIcons)
 
171
                                {
 
172
                                        g_print (" on l'affiche\n");
 
173
                                        CD_APPLET_ADD_ICON_IN_MY_ICONS_LIST (pNewIcon);
 
174
                                        pIconsList = CD_APPLET_MY_ICONS_LIST;
 
175
                                        
 
176
                                        if (iCurrentNbIcons + 1 > myConfig.iNbIcons)  // trop d'icones, on enleve la derniere.
 
177
                                        {
 
178
                                                g_print ("trop d'icones, on enleve la derniere (%s)\n", pLastIcon->cName);
 
179
                                                CD_APPLET_DETACH_ICON_FROM_MY_ICONS_LIST (pLastIcon);
 
180
                                        }
 
181
                                }
 
182
                                else
 
183
                                        g_print ("ordre >= %.2f => on ne l'affiche pas\n", pLastIcon->fOrder);
 
184
                        }
 
185
                        else*/ // container vide, on l'insere juste.
 
186
                        {
 
187
                                CD_APPLET_ADD_ICON_IN_MY_ICONS_LIST (pNewIcon);
 
188
                        }
 
189
                }
 
190
                break ;
 
191
                
 
192
                case CAIRO_DOCK_FILE_MODIFIED :  // un point de montage a ete (de)monte
 
193
                {
 
194
                        Icon *pConcernedIcon = cairo_dock_get_icon_with_base_uri (pIconsList, cURI);
 
195
                        if (pConcernedIcon == NULL)  // on cherche par nom.
 
196
                        {
 
197
                                pConcernedIcon = cairo_dock_get_icon_with_name (pIconsList, cURI);
 
198
                        }
 
199
                        if (pConcernedIcon == NULL)
 
200
                        {
 
201
                                cd_warning ("  an unknown file was modified");
 
202
                                return ;
 
203
                        }
 
204
                        g_print (" %s is modified\n", pConcernedIcon->cName);
 
205
                        
 
206
                        //\_______________________ on recupere les infos actuelles.
 
207
                        Icon *pNewIcon = cairo_dock_fm_create_icon_from_URI (cURI, pContainer, myConfig.iSortType);
 
208
                        if (pNewIcon == NULL)
 
209
                        {
 
210
                                cd_warning ("couldn't create an icon for this file");
 
211
                                return ;
 
212
                        }
 
213
                        pNewIcon->iType = (myConfig.bFoldersFirst && pNewIcon->iVolumeID == -1 ? 6 : 8);
 
214
                        double fCurrentOrder = pConcernedIcon->fOrder;
 
215
                        if (myConfig.iSortType == 1 || myConfig.iSortType == 2)  // sort by date or size.
 
216
                                pConcernedIcon->fOrder = pNewIcon->fOrder;
 
217
                        
 
218
                        //\_______________________ on gere le changement de nom.
 
219
                        if (cairo_dock_strings_differ (pConcernedIcon->cName, pNewIcon->cName))  // le nom a change.
 
220
                        {
 
221
                                g_print ("  name changed : '%s' -> '%s'\n", pConcernedIcon->cName, pNewIcon->cName);
 
222
                                cairo_dock_set_icon_name (pNewIcon->cName, pConcernedIcon, pContainer);
 
223
                                cd_shortcuts_set_icon_order (pConcernedIcon, pIconsList/**myData.pAllFiles*/, myData.comp);
 
224
                        }
 
225
                        
 
226
                        //\_______________________ on gere le changement d'image.
 
227
                        if (cairo_dock_strings_differ (pConcernedIcon->cFileName, pNewIcon->cFileName))
 
228
                        {
 
229
                                g_print ("  image changed : '%s' -> '%s'\n", pConcernedIcon->cFileName, pNewIcon->cFileName);
 
230
                                g_free (pConcernedIcon->cFileName);
 
231
                                pConcernedIcon->cFileName = g_strdup (pNewIcon->cFileName);
 
232
                                
 
233
                                if (pConcernedIcon->pIconBuffer != NULL)
 
234
                                        cairo_dock_load_icon_image (pConcernedIcon, pContainer);
 
235
                        }
 
236
                        
 
237
                        //\_______________________ on gere le changement d'ordre (du au changement de nom, d'extension, ou de taille, suivant le classement utilise).
 
238
                        if (pConcernedIcon->fOrder != fCurrentOrder)
 
239
                        {
 
240
                                g_print ("  order changed : %.2f -> %.2f\n", fCurrentOrder, pConcernedIcon->fOrder);
 
241
                                
 
242
                                // on la detache.
 
243
                                ///myData.pAllFiles = g_list_remove (myData.pAllFiles, pConcernedIcon);
 
244
                                gboolean bInContainer = CD_APPLET_DETACH_ICON_FROM_MY_ICONS_LIST (pConcernedIcon);
 
245
                                pIconsList = CD_APPLET_MY_ICONS_LIST;
 
246
                                
 
247
                                /**if (bInContainer)
 
248
                                {
 
249
                                        Icon *pNextIcon = g_list_nth_data (myData.pAllFiles, myConfig.iNbIcons);
 
250
                                        if (!pNextIcon || pConcernedIcon->fOrder < pNextIcon->fOrder)
 
251
                                        {
 
252
                                                g_print (" on reinsere l'icone\n");
 
253
                                                CD_APPLET_ADD_ICON_IN_MY_ICONS_LIST (pConcernedIcon);
 
254
                                        }
 
255
                                }
 
256
                                else
 
257
                                {
 
258
                                        Icon *pLastIcon = cairo_dock_get_last_icon (pIconsList);
 
259
                                        if (!pLastIcon || pConcernedIcon->fOrder < pLastIcon->fOrder || g_list_length (pIconsList) < myConfig.iNbIcons)
 
260
                                        {
 
261
                                                g_print (" on reinsere l'icone\n");
 
262
                                                CD_APPLET_ADD_ICON_IN_MY_ICONS_LIST (pConcernedIcon);
 
263
                                        }
 
264
                                }
 
265
                                myData.pAllFiles = g_list_insert_sorted (myData.pAllFiles, pConcernedIcon, (GCompareFunc)cairo_dock_compare_icons_order);*/
 
266
                                CD_APPLET_ADD_ICON_IN_MY_ICONS_LIST (pConcernedIcon);
 
267
                        }
 
268
                        cairo_dock_free_icon (pNewIcon);
 
269
                }
 
270
                break ;
 
271
        }
 
272
        g_free (cURI);
 
273
}
 
274
 
 
275
static void _cd_folders_on_file_event (CairoDockFMEventType iEventType, const gchar *cURI, CairoDockModuleInstance *myApplet)
 
276
{
 
277
        g_return_if_fail (cURI != NULL);
 
278
        CD_APPLET_ENTER;
 
279
        
 
280
        //\________________ On gere l'evenement sur le fichier.
 
281
        GList *pIconsList = CD_APPLET_MY_ICONS_LIST;
 
282
        CairoContainer *pContainer = CD_APPLET_MY_ICONS_LIST_CONTAINER;
 
283
        CD_APPLET_LEAVE_IF_FAIL (pContainer != NULL);
 
284
        
 
285
        _manage_event_on_file (iEventType, cURI, pIconsList, pContainer, myApplet);
 
286
        
 
287
        CD_APPLET_LEAVE();
 
288
}
 
289
 
 
290
 
 
291
void cd_folders_get_data (CairoDockModuleInstance *myApplet)
 
292
{
 
293
        //\_______________________ On recupere les fichiers.
 
294
        gchar *cCommand = NULL;
 
295
        myData.pIconList = cairo_dock_fm_list_directory (myConfig.cDirPath, myConfig.iSortType, 8, myConfig.bShowHiddenFiles, 1e4, &cCommand);
 
296
        g_free (cCommand);
 
297
        
 
298
        //\_______________________ on classe les icones.
 
299
        if (myConfig.bFoldersFirst)
 
300
        {
 
301
                Icon *pIcon;
 
302
                GList *ic;
 
303
                for (ic = myData.pIconList; ic != NULL; ic = ic->next)
 
304
                {
 
305
                        pIcon = ic->data;
 
306
                        if (pIcon->iVolumeID != 0)  // repertoire
 
307
                                pIcon->iType = 6;
 
308
                }
 
309
        }
 
310
        
 
311
        if (myConfig.iSortType == 0)  // sort by name
 
312
        {
 
313
                myData.pIconList = g_list_sort (myData.pIconList, (GCompareFunc) cairo_dock_compare_icons_name);
 
314
        }
 
315
        else if (myConfig.iSortType == 3)  // sort by type
 
316
        {
 
317
                myData.pIconList = g_list_sort (myData.pIconList, (GCompareFunc) cairo_dock_compare_icons_extension);
 
318
        }
 
319
        else  // sort by date or size
 
320
        {
 
321
                myData.pIconList = g_list_sort (myData.pIconList, (GCompareFunc) cairo_dock_compare_icons_order);
 
322
        }
 
323
        
 
324
        //g_print ("=== files to display: ===\n");
 
325
        Icon *pIcon;
 
326
        int iOrder = 0;
 
327
        GList *ic;
 
328
        for (ic = myData.pIconList; ic != NULL; ic = ic->next)
 
329
        {
 
330
                pIcon = ic->data;
 
331
                //g_print ("  %s (%d)\n", pIcon->cName, pIcon->iVolumeID);
 
332
                pIcon->fOrder = iOrder ++;
 
333
        }
 
334
}
 
335
 
 
336
        
 
337
gboolean cd_folders_load_icons_from_data (CairoDockModuleInstance *myApplet)
 
338
{
 
339
        g_return_val_if_fail (myIcon != NULL, FALSE);  // paranoia
 
340
        CD_APPLET_ENTER;
 
341
        
 
342
        //\_______________________ On efface l'ancienne liste.
 
343
        CD_APPLET_DELETE_MY_ICONS_LIST;
 
344
        
 
345
        //\_______________________ On charge la nouvelle liste.
 
346
        /**myData.pAllFiles = myData.pIconList;
 
347
        myData.pIconList = NULL;
 
348
        
 
349
        Icon *pIcon;
 
350
        guint i;
 
351
        GList *ic, *pList = NULL;
 
352
        for (i = 0, ic = myData.pAllFiles; i < myConfig.iNbIcons && ic != NULL; i++, ic = ic->next)
 
353
        {
 
354
                pIcon = ic->data;
 
355
                pList = g_list_prepend (pList, pIcon);
 
356
        }
 
357
        pList = g_list_reverse (pList);*/
 
358
        CD_APPLET_LOAD_MY_ICONS_LIST (myData.pIconList/**pList*/, myConfig.cRenderer, "Viewport", NULL);
 
359
        ///myData.iNbIcons = myConfig.iNbIcons;
 
360
        myData.pIconList = NULL;
 
361
        
 
362
        //\_______________________ On se place en ecoute.
 
363
        cairo_dock_fm_add_monitor_full (myConfig.cDirPath, TRUE, NULL, (CairoDockFMMonitorCallback) _cd_folders_on_file_event, myApplet);
 
364
        
 
365
        CD_APPLET_LEAVE (TRUE);
 
366
}
 
367
 
 
368
 
 
369
static void _cd_folders_remove_all_icons (CairoDockModuleInstance *myApplet)
 
370
{
 
371
        //\_______________________ On stoppe la tache.
 
372
        cairo_dock_stop_task (myData.pTask);
 
373
        
 
374
        if (myData.pIconList != NULL)  // des donnees ont ete recuperees et non utilisees, on les libere.
 
375
        {
 
376
                g_list_foreach (myData.pIconList, (GFunc)g_free, NULL);
 
377
                g_list_free (myData.pIconList);
 
378
                myData.pIconList = NULL;
 
379
        }
 
380
        
 
381
        //\_______________________ On detruit d'abord les icones non chargees dans le container.
 
382
        /**Icon *pIcon;
 
383
        GList *ic = g_list_nth (myData.pAllFiles, myData.iNbIcons);
 
384
        for (;ic != NULL; ic = ic->next)
 
385
        {
 
386
                pIcon = ic->data;
 
387
                g_print (" remove %s\n", pIcon->cName);
 
388
                cairo_dock_free_icon (pIcon);
 
389
        }
 
390
        
 
391
        g_list_free (myData.pAllFiles);
 
392
        myData.pAllFiles = NULL;*/
 
393
        
 
394
        //\_______________________ On detruit ensuite les icones chargees dans le container.
 
395
        CD_APPLET_DELETE_MY_ICONS_LIST;  // si le container a change entre-temps, le ModuleManager se chargera de nettoyer derriere nous.
 
396
        ///myData.iNbIcons = 0;
 
397
}
 
398
void cd_folders_free_all_data (CairoDockModuleInstance *myApplet)
 
399
{
 
400
        //\_______________________ On arrete de surveiller le repertoire.
 
401
        cairo_dock_fm_remove_monitor_full (myConfig.cDirPath, TRUE, NULL);
 
402
        
 
403
        _cd_folders_remove_all_icons (myApplet);
 
404
        
 
405
        cairo_dock_free_task (myData.pTask);
 
406
        myData.pTask = NULL;
 
407
        
 
408
        cd_folders_free_apps_list (myApplet);
 
409
}
 
410
 
 
411
 
 
412
void cd_folders_sort_icons (CairoDockModuleInstance *myApplet, CairoDockFMSortType iSortType)
 
413
{
 
414
        GList *pIconsList = CD_APPLET_MY_ICONS_LIST;
 
415
        
 
416
        switch (iSortType)
 
417
        {
 
418
                case CAIRO_DOCK_FM_SORT_BY_NAME:
 
419
                        
 
420
                break;
 
421
                case CAIRO_DOCK_FM_SORT_BY_DATE:
 
422
                        
 
423
                break;
 
424
                case CAIRO_DOCK_FM_SORT_BY_SIZE:
 
425
                        
 
426
                break;
 
427
                case CAIRO_DOCK_FM_SORT_BY_TYPE:
 
428
                        
 
429
                break;
 
430
                default:
 
431
                break;
 
432
        }
 
433
}