~ubuntu-branches/ubuntu/quantal/cairo-dock-plug-ins/quantal-201208191523

« back to all changes in this revision

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

  • Committer: Bazaar Package Importer
  • Author(s): Matthieu Baerts (matttbe)
  • Date: 2011-04-20 20:46:51 UTC
  • mfrom: (1.1.9 upstream)
  • Revision ID: james.westby@ubuntu.com-20110420204651-ftnpzesj6uc7qeul
Tags: 2.3.0~1-0ubuntu1
* New Upstream Version (LP: #723995)
* Upstream short ChangeLog (since 2.3.0~0rc1):
 - Updated translations
 - Updated the integration of the new versions of kwin and compiz
    (Switcher, ShowDesktop, etc.)
 - Removed a lot of useless g_print
 - Updated a few plug-ins to fit with the new version of the API (gldit)
 - Fixed a few bugs
 - Updated MeMenu, MessagingMenu and Status-Notifier to works
    with the latest version of dbusmenu, etc.
* Switch to dpkg-source 3.0 (quilt) format
* debian/cairo-dock-plug-ins.install:
 - Added new files (interfaces for python, ruby, vala and mono)
* debian/control:
 - Added new dependences for new applets (sensors and zeitgeist)
    and new interfaces (python, valac, ruby and mono)
 - Updated the version of cairo-dock build-dependences
* debian/rules:
 - Added a new CMake flag to install python interface in debian/tmp
* Updated debian/watch

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
        for (ic = pIconsList; ic != NULL; ic = ic->next)
37
37
        {
38
38
                pIcon = ic->data;
39
 
                if (pIcon->iType == pNewIcon->iType)
 
39
                if (pIcon->iGroup == pNewIcon->iGroup)
40
40
                        break;
41
41
        }
42
42
        GList *ic0 = ic;
58
58
        for (ic = ic0; ic != NULL; ic = ic->next)
59
59
        {
60
60
                pIcon = ic->data;
61
 
                if (pIcon->iType != pNewIcon->iType)
 
61
                if (pIcon->iGroup != pNewIcon->iGroup)
62
62
                        break;
63
63
                if (cairo_dock_compare_icons_name (pNewIcon, pIcon) < 0)
64
64
                {
123
123
                                cd_warning ("couldn't create an icon for this network");
124
124
                                return ;
125
125
                        }
126
 
                        pNewIcon->iType = CD_NETWORK_GROUP;
 
126
                        pNewIcon->iGroup = CD_NETWORK_GROUP;
127
127
                        
128
128
                        //\_______________________ on la place au bon endroit suivant son nom.
129
129
                        cd_shortcuts_set_icon_order_by_name (pNewIcon, pIconsList);
163
163
                                cd_warning ("couldn't create an icon for this network");
164
164
                                return ;
165
165
                        }
166
 
                        pNewIcon->iType = CD_NETWORK_GROUP;
 
166
                        pNewIcon->iGroup = CD_NETWORK_GROUP;
167
167
                        
168
168
                        //\_______________________ on remplace l'icone si des choses ont change.
169
169
                        if (cairo_dock_strings_differ (pConcernedIcon->cName, pNewIcon->cName) || cairo_dock_strings_differ (pConcernedIcon->cFileName, pNewIcon->cFileName))
185
185
}
186
186
 
187
187
 
188
 
static GList * _load_icons (CairoDockModuleInstance *myApplet)
 
188
static inline GList * _load_icons (CDSharedMemory *pSharedMemory)
189
189
{
190
190
        GList *pIconList = NULL;
191
 
        gchar *cFullURI = NULL;
192
191
        
193
 
        if (myConfig.bListDrives)
 
192
        if (pSharedMemory->bListDrives)
194
193
        {
195
 
                pIconList = cd_shortcuts_list_drives (myApplet);
 
194
                pIconList = cd_shortcuts_list_drives (pSharedMemory);
196
195
        }
197
196
        
198
 
        if (myConfig.bListNetwork)
 
197
        if (pSharedMemory->bListNetwork)
199
198
        {
 
199
                gchar *cFullURI = NULL;
200
200
                GList *pIconList2 = cairo_dock_fm_list_directory (CAIRO_DOCK_FM_NETWORK, CAIRO_DOCK_FM_SORT_BY_NAME, CD_NETWORK_GROUP, FALSE, 100, &cFullURI);
201
201
                cd_message ("  cFullURI : %s", cFullURI);
202
202
                
203
 
                /**if (myConfig.bUseSeparator && myDock && pIconList2 != NULL && pIconList != NULL)
204
 
                {
205
 
                        Icon *pSeparatorIcon = cairo_dock_create_separator_icon (7, NULL);  // NULL => ne charge pas l'icone, car on est dans un thread.
206
 
                        pIconList = g_list_append (pIconList, pSeparatorIcon);
207
 
                }*/
208
 
                
209
203
                pIconList = g_list_concat (pIconList, pIconList2);
210
204
                
211
 
                if (! cairo_dock_fm_add_monitor_full (cFullURI, TRUE, NULL, (CairoDockFMMonitorCallback) _cd_shortcuts_on_network_event, myApplet))
212
 
                        cd_warning ("Shortcuts : can't monitor network");
213
 
                myData.cNetworkURI = cFullURI;
 
205
                pSharedMemory->cNetworkURI = cFullURI;
214
206
        }
215
207
                
216
 
        if (myConfig.bListBookmarks)
 
208
        if (pSharedMemory->bListBookmarks)
217
209
        {
218
210
                gchar *cBookmarkFilePath = g_strdup_printf ("%s/.gtk-bookmarks", g_getenv ("HOME"));
219
211
                if (! g_file_test (cBookmarkFilePath, G_FILE_TEST_EXISTS))  // on le cree pour pouvoir ajouter des signets.
224
216
                
225
217
                GList *pIconList2 = cd_shortcuts_list_bookmarks (cBookmarkFilePath);
226
218
                
227
 
                /**if (myConfig.bUseSeparator && myDock && pIconList2 != NULL && pIconList != NULL)
228
 
                {
229
 
                        Icon *pSeparatorIcon = cairo_dock_create_separator_icon (9, NULL);  // NULL => ne charge pas l'icone, car on est dans un thread.
230
 
                        pIconList = g_list_append (pIconList, pSeparatorIcon);
231
 
                }*/
232
 
                
233
219
                pIconList = g_list_concat (pIconList, pIconList2);
234
220
                
235
 
                if (! cairo_dock_fm_add_monitor_full (cBookmarkFilePath, FALSE, NULL, (CairoDockFMMonitorCallback) cd_shortcuts_on_bookmarks_event, myApplet))
236
 
                        cd_warning ("Shortcuts : can't monitor bookmarks");
237
 
                
238
 
                myData.cBookmarksURI = cBookmarkFilePath;
 
221
                pSharedMemory->cBookmarksURI = cBookmarkFilePath;
239
222
        }
240
223
        
241
224
        return pIconList;
242
225
}
243
 
 
244
 
 
245
 
void cd_shortcuts_get_shortcuts_data (CairoDockModuleInstance *myApplet)
 
226
static void cd_shortcuts_get_shortcuts_data (CDSharedMemory *pSharedMemory)
246
227
{
247
 
        myData.pIconList = _load_icons (myApplet);
 
228
        pSharedMemory->pIconList = _load_icons (pSharedMemory);
248
229
}
249
230
 
250
 
 
251
 
gboolean cd_shortcuts_build_shortcuts_from_data (CairoDockModuleInstance *myApplet)
 
231
static gboolean cd_shortcuts_build_shortcuts_from_data (CDSharedMemory *pSharedMemory)
252
232
{
 
233
        CairoDockModuleInstance *myApplet = pSharedMemory->pApplet;
253
234
        g_return_val_if_fail (myIcon != NULL, FALSE);  // paranoia
254
235
        CD_APPLET_ENTER;
255
236
        
 
237
        //\_______________________ get the result of the thread.
 
238
        GList *pIconList = pSharedMemory->pIconList;
 
239
        pSharedMemory->pIconList = NULL;
 
240
        myData.cDisksURI = pSharedMemory->cDisksURI;
 
241
        pSharedMemory->cDisksURI = NULL;
 
242
        myData.cNetworkURI = pSharedMemory->cNetworkURI;
 
243
        pSharedMemory->cNetworkURI = NULL;
 
244
        myData.cBookmarksURI = pSharedMemory->cBookmarksURI;
 
245
        pSharedMemory->cBookmarksURI = NULL;
 
246
        
 
247
        //\_______________________ monitor the sets.
 
248
        if (myData.cDisksURI)
 
249
        {
 
250
                if (! cairo_dock_fm_add_monitor_full (myData.cDisksURI, TRUE, NULL, (CairoDockFMMonitorCallback) cd_shortcuts_on_drive_event, myApplet))
 
251
                        cd_warning ("Shortcuts : can't monitor drives");
 
252
        }
 
253
        if (myData.cNetworkURI)
 
254
        {
 
255
                if (! cairo_dock_fm_add_monitor_full (myData.cNetworkURI, TRUE, NULL, (CairoDockFMMonitorCallback) _cd_shortcuts_on_network_event, myApplet))
 
256
                        cd_warning ("Shortcuts : can't monitor network");
 
257
        }
 
258
        if (myData.cBookmarksURI)
 
259
        {
 
260
                if (! cairo_dock_fm_add_monitor_full (myData.cBookmarksURI, FALSE, NULL, (CairoDockFMMonitorCallback) cd_shortcuts_on_bookmarks_event, myApplet))
 
261
                        cd_warning ("Shortcuts : can't monitor bookmarks");
 
262
        }
 
263
        
256
264
        //\_______________________ On efface l'ancienne liste.
257
265
        CD_APPLET_DELETE_MY_ICONS_LIST;
258
266
        
269
277
                        cDeskletRendererName = "Tree";
270
278
                break ;
271
279
        }
272
 
        CD_APPLET_LOAD_MY_ICONS_LIST (myData.pIconList, myConfig.cRenderer, cDeskletRendererName, NULL);
273
 
        myData.pIconList = NULL;
 
280
        CD_APPLET_LOAD_MY_ICONS_LIST (pIconList, myConfig.cRenderer, cDeskletRendererName, NULL);
274
281
        
275
282
        //\_______________________ On lance la tache de mesure des disques.
276
283
        cd_shortcuts_launch_disk_periodic_task (myApplet);
277
284
        
 
285
        cairo_dock_discard_task (myData.pTask);
 
286
        myData.pTask = NULL;
 
287
        
278
288
        CD_APPLET_LEAVE (TRUE);
279
289
}
 
290
 
 
291
static void _free_shared_memory (CDSharedMemory *pSharedMemory)
 
292
{
 
293
        g_free (pSharedMemory->cDisksURI);
 
294
        g_free (pSharedMemory->cNetworkURI);
 
295
        g_free (pSharedMemory->cBookmarksURI);
 
296
        g_list_foreach (pSharedMemory->pIconList, (GFunc)g_free, NULL);
 
297
        g_list_free (pSharedMemory->pIconList);
 
298
        g_free (pSharedMemory);
 
299
}
 
300
void cd_shortcuts_start (CairoDockModuleInstance *myApplet)
 
301
{
 
302
        if (myData.pTask != NULL)
 
303
        {
 
304
                cairo_dock_discard_task (myData.pTask);
 
305
                myData.pTask = NULL;
 
306
        }
 
307
        
 
308
        CDSharedMemory *pSharedMemory = g_new0 (CDSharedMemory, 1);
 
309
        pSharedMemory->bListDrives = myConfig.bListDrives;
 
310
        pSharedMemory->bListNetwork = myConfig.bListNetwork;
 
311
        pSharedMemory->bListBookmarks = myConfig.bListBookmarks;
 
312
        pSharedMemory->pApplet = myApplet;
 
313
        
 
314
        myData.pTask = cairo_dock_new_task_full (0,
 
315
                (CairoDockGetDataAsyncFunc) cd_shortcuts_get_shortcuts_data,
 
316
                (CairoDockUpdateSyncFunc) cd_shortcuts_build_shortcuts_from_data,
 
317
                (GFreeFunc) _free_shared_memory,
 
318
                pSharedMemory);
 
319
        cairo_dock_launch_task (myData.pTask);
 
320
}
 
321