1 /* Notification plugin for Claws Mail
2 * Copyright (C) 2005-2022 Holger Berndt and the Claws Mail team
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 #include "notification_pixbuf.h"
21 #include "common/utils.h"
22 #include "stock_pixmap.h"
24 static GdkPixbuf
* notification_pixbuf
[NOTIFICATION_PIXBUF_LAST
];
26 GdkPixbuf
* notification_pixbuf_get(NotificationPixbuf wanted
)
28 if(!notification_pixbuf
[wanted
]) {
30 case NOTIFICATION_CM_LOGO_64x64
:
31 priv_pixbuf_gdk(PRIV_PIXMAP_CLAWS_MAIL_ICON_64
, &(notification_pixbuf
[wanted
]));
32 g_object_ref(notification_pixbuf
[wanted
]);
34 case NOTIFICATION_TRAYICON_NEWMAIL
:
35 stock_pixbuf_gdk(STOCK_PIXMAP_TRAY_NEWMAIL
, &(notification_pixbuf
[wanted
]));
36 g_object_ref(notification_pixbuf
[wanted
]);
38 case NOTIFICATION_TRAYICON_NEWMAIL_OFFLINE
:
39 stock_pixbuf_gdk(STOCK_PIXMAP_TRAY_NEWMAIL_OFFLINE
, &(notification_pixbuf
[wanted
]));
40 g_object_ref(notification_pixbuf
[wanted
]);
42 case NOTIFICATION_TRAYICON_NEWMARKEDMAIL
:
43 stock_pixbuf_gdk(STOCK_PIXMAP_TRAY_NEWMARKEDMAIL
, &(notification_pixbuf
[wanted
]));
44 g_object_ref(notification_pixbuf
[wanted
]);
46 case NOTIFICATION_TRAYICON_NEWMARKEDMAIL_OFFLINE
:
47 stock_pixbuf_gdk(STOCK_PIXMAP_TRAY_NEWMARKEDMAIL_OFFLINE
, &(notification_pixbuf
[wanted
]));
48 g_object_ref(notification_pixbuf
[wanted
]);
50 case NOTIFICATION_TRAYICON_NOMAIL
:
51 stock_pixbuf_gdk(STOCK_PIXMAP_TRAY_NOMAIL
, &(notification_pixbuf
[wanted
]));
52 g_object_ref(notification_pixbuf
[wanted
]);
54 case NOTIFICATION_TRAYICON_NOMAIL_OFFLINE
:
55 stock_pixbuf_gdk(STOCK_PIXMAP_TRAY_NOMAIL_OFFLINE
, &(notification_pixbuf
[wanted
]));
56 g_object_ref(notification_pixbuf
[wanted
]);
58 case NOTIFICATION_TRAYICON_UNREADMAIL
:
59 stock_pixbuf_gdk(STOCK_PIXMAP_TRAY_UNREADMAIL
, &(notification_pixbuf
[wanted
]));
60 g_object_ref(notification_pixbuf
[wanted
]);
62 case NOTIFICATION_TRAYICON_UNREADMAIL_OFFLINE
:
63 stock_pixbuf_gdk(STOCK_PIXMAP_TRAY_UNREADMAIL_OFFLINE
, &(notification_pixbuf
[wanted
]));
64 g_object_ref(notification_pixbuf
[wanted
]);
66 case NOTIFICATION_TRAYICON_UNREADMARKEDMAIL
:
67 stock_pixbuf_gdk(STOCK_PIXMAP_TRAY_UNREADMARKEDMAIL
, &(notification_pixbuf
[wanted
]));
68 g_object_ref(notification_pixbuf
[wanted
]);
70 case NOTIFICATION_TRAYICON_UNREADMARKEDMAIL_OFFLINE
:
71 stock_pixbuf_gdk(STOCK_PIXMAP_TRAY_UNREADMARKEDMAIL_OFFLINE
, &(notification_pixbuf
[wanted
]));
72 g_object_ref(notification_pixbuf
[wanted
]);
74 case NOTIFICATION_PIXBUF_LAST
:
78 cm_return_val_if_fail(wanted
< NOTIFICATION_PIXBUF_LAST
, NULL
);
79 return notification_pixbuf
[wanted
];
82 void notification_pixbuf_free_all(void)
86 for(ii
= NOTIFICATION_CM_LOGO_64x64
; ii
< NOTIFICATION_PIXBUF_LAST
; ii
++) {
87 if(notification_pixbuf
[ii
]) {
88 g_object_unref(notification_pixbuf
[ii
]);
89 notification_pixbuf
[ii
] = NULL
;