2
* This file is a part of the Cairo-Dock project
4
* Copyright : (C) see the 'copyright' file.
5
* E-mail : see the 'copyright' file.
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.
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/>.
21
#include <glib/gi18n.h>
25
#include "tomboy-dbus.h"
26
#include "tomboy-draw.h"
27
#include "tomboy-struct.h"
28
#include "tomboy-notifications.h"
31
CD_APPLET_ON_CLICK_BEGIN
32
if (pClickedIcon != NULL && pClickedIcon != myIcon)
34
cd_message("tomboy : %s",pClickedIcon->acCommand);
35
showNote(pClickedIcon->acCommand);
37
else if (pClickedIcon == myIcon && ! myData.opening) // possible si on l'a quitte apres le demarrage de l'applet.
45
cd_tomboy_load_notes();
49
return CAIRO_DOCK_LET_PASS_NOTIFICATION;
50
CD_APPLET_ON_CLICK_END
53
static void _cd_tomboy_create_new_note (Icon *pIcon)
58
if (myConfig.bAutoNaming)
60
g_print ("on nomme automatiquement cette note\n");
61
note_title = g_new0 (gchar, 50+1);
62
time_t epoch = (time_t) time (NULL);
63
struct tm currentTime;
64
localtime_r (&epoch, ¤tTime);
65
strftime (note_title, 50, "%a-%d-%b_%r", ¤tTime);
69
g_print ("on demande le nom de la nouvelle note ...\n");
70
note_title = cairo_dock_show_demand_and_wait (D_("Note name : "),
72
(pIcon != myIcon && myDock ? CAIRO_CONTAINER (myIcon->pSubDock) : myContainer),
74
g_print ("on a recu '%s'\n", note_title);
76
cd_message ("%s (%s)", __func__, note_title);
77
gchar *note_name = addNote(note_title);
78
cd_debug (" note_name <- %s", note_name);
83
static void _cd_tomboy_add_note (GtkMenuItem *menu_item, Icon *pIcon)
85
_cd_tomboy_create_new_note (pIcon);
87
static void _cd_tomboy_delete_note (GtkMenuItem *menu_item, Icon *pIcon)
91
if (myConfig.bAskBeforeDelete)
93
gchar *cQuestion = g_strdup_printf ("%s (%s)", D_("Delete this note ?"), pIcon->acName);
94
int iAnswer = cairo_dock_ask_question_and_wait (cQuestion, pIcon, myDock ? CAIRO_CONTAINER (myIcon->pSubDock) : myContainer);
96
if (iAnswer != GTK_RESPONSE_YES)
99
deleteNote (pIcon->acCommand);
101
static void _cd_tomboy_reload_notes (GtkMenuItem *menu_item, Icon *pIcon)
105
cd_tomboy_load_notes();
107
static void _cd_tomboy_search_for_content (GtkMenuItem *menu_item, Icon *pIcon)
109
gchar *cContent = cairo_dock_show_demand_and_wait (D_("Search for :"),
110
(pIcon != NULL ? pIcon : myIcon),
111
(pIcon != NULL && myDock ? CAIRO_CONTAINER (myIcon->pSubDock) : myContainer),
113
if (cContent != NULL)
115
cd_tomboy_reset_icon_marks (FALSE);
116
gchar *cContents[2] = {cContent, NULL};
117
GList *pList = cd_tomboy_find_notes_with_contents (cContents);
121
cd_tomboy_mark_icons (pList, TRUE);
124
cairo_dock_show_dock_at_mouse (myIcon->pSubDock);
128
static void _cd_tomboy_search_for_tag (GtkMenuItem *menu_item, Icon *pIcon)
130
gchar *cTag = cairo_dock_show_demand_and_wait (D_("Search for tag :"),
131
(pIcon != NULL ? pIcon : myIcon),
132
(pIcon != NULL && myDock ? CAIRO_CONTAINER (myIcon->pSubDock) : myContainer),
136
cd_tomboy_reset_icon_marks (FALSE);
137
GList *pList = cd_tomboy_find_notes_with_tag (cTag);
141
cd_tomboy_mark_icons (pList, TRUE);
144
cairo_dock_show_dock_at_mouse (myIcon->pSubDock);
148
static void _cd_tomboy_search_for_today (GtkMenuItem *menu_item, Icon *pIcon)
150
GList *pList = cd_tomboy_find_note_for_today ();
153
cd_tomboy_mark_icons (pList, TRUE);
156
cairo_dock_show_dock_at_mouse (myIcon->pSubDock);
159
static void _cd_tomboy_search_for_this_week (GtkMenuItem *menu_item, Icon *pIcon)
161
GList *pList = cd_tomboy_find_note_for_this_week ();
164
cd_tomboy_mark_icons (pList, TRUE);
167
cairo_dock_show_dock_at_mouse (myIcon->pSubDock);
170
static void _cd_tomboy_search_for_next_week (GtkMenuItem *menu_item, Icon *pIcon)
172
GList *pList = cd_tomboy_find_note_for_next_week ();
175
cd_tomboy_mark_icons (pList, TRUE);
178
cairo_dock_show_dock_at_mouse (myIcon->pSubDock);
181
static void _cd_tomboy_reset_marks (GtkMenuItem *menu_item, Icon *pIcon)
183
cd_tomboy_reset_icon_marks (TRUE);
185
CD_APPLET_ON_BUILD_MENU_BEGIN
186
CD_APPLET_ADD_IN_MENU(D_("Reload notes"), _cd_tomboy_reload_notes, CD_APPLET_MY_MENU);
187
if (myDock && (myIcon->pSubDock != NULL && pClickedContainer == CAIRO_CONTAINER (myIcon->pSubDock)) || (myIcon->pSubDock == NULL && pClickedContainer == myContainer))
189
CD_APPLET_ADD_IN_MENU(D_("Add a note"), _cd_tomboy_add_note, CD_APPLET_MY_MENU);
191
if (pClickedIcon != NULL && pClickedIcon != myIcon)
193
CD_APPLET_ADD_IN_MENU_WITH_DATA (D_("Delete this note"), _cd_tomboy_delete_note, CD_APPLET_MY_MENU, pClickedIcon);
196
CD_APPLET_ADD_IN_MENU(D_("Search"), _cd_tomboy_search_for_content, CD_APPLET_MY_MENU);
197
CD_APPLET_ADD_IN_MENU(D_("Searh for tag"), _cd_tomboy_search_for_tag, CD_APPLET_MY_MENU);
199
CD_APPLET_ADD_IN_MENU(D_("Search for today's note"), _cd_tomboy_search_for_today, CD_APPLET_MY_MENU);
200
CD_APPLET_ADD_IN_MENU(D_("Search for this week's note"), _cd_tomboy_search_for_this_week, CD_APPLET_MY_MENU);
201
CD_APPLET_ADD_IN_MENU(D_("Search for next week's note"), _cd_tomboy_search_for_next_week, CD_APPLET_MY_MENU);
203
GList *pList = (myDock ? (myIcon->pSubDock ? myIcon->pSubDock->icons : NULL) : myDesklet->icons);
206
for (ic = pList; ic != NULL; ic = ic->next)
209
if (icon->bHasIndicator)
211
CD_APPLET_ADD_IN_MENU(D_("Reset marks"), _cd_tomboy_reset_marks, CD_APPLET_MY_MENU);
216
CD_APPLET_ADD_ABOUT_IN_MENU (CD_APPLET_MY_MENU);
217
CD_APPLET_ON_BUILD_MENU_END
220
CD_APPLET_ON_MIDDLE_CLICK_BEGIN
221
if (pClickedIcon == myIcon && ! myData.opening) // possible si on l'a quitte apres le demarrage de l'applet.
223
dbus_detect_tomboy();
226
cd_tomboy_load_notes();
229
_cd_tomboy_create_new_note (pClickedIcon);
230
CD_APPLET_ON_MIDDLE_CLICK_END