/
NoteOfTheDayApplicationAddin.cs
64 lines (53 loc) · 1.25 KB
/
NoteOfTheDayApplicationAddin.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Runtime.InteropServices;
using Gtk;
using Tomboy;
namespace Tomboy.NoteOfTheDay
{
public class NoteOfTheDayApplicationAddin : ApplicationAddin
{
bool initialized = false;
bool timeout_owner;
static InterruptableTimeout timeout;
NoteManager manager;
// Called only by instance with timeout_owner set.
void CheckNewDay (object sender, EventArgs args)
{
Note notd = NoteOfTheDay.GetNoteByDate (manager, DateTime.Today);
if (notd == null && !manager.ReadOnly) {
NoteOfTheDay.CleanupOld (manager);
// Create a new NotD if the day has changed
NoteOfTheDay.Create (manager, DateTime.Now);
}
// Re-run every minute
timeout.Reset (1000 * 60);
}
public override void Initialize ()
{
if (timeout == null) {
timeout = new InterruptableTimeout ();
timeout.Timeout += CheckNewDay;
timeout.Reset (0);
timeout_owner = true;
}
manager = Tomboy.DefaultNoteManager;
initialized = true;
}
public override void Shutdown ()
{
if (timeout_owner) {
NoteOfTheDay.CleanupOld (manager);
timeout.Timeout -= CheckNewDay;
timeout.Cancel();
timeout = null;
}
initialized = false;
}
public override bool Initialized
{
get {
return initialized;
}
}
}
}