source: trunk/Cocoa/AntiRSI/AntiRSI.h @ 333

Last change on this file since 333 was 333, checked in by Nicholas Riley, 13 years ago

AntiRSI.[hm]: Replaced unnecessary use of KVO on reset_session_timer_time with setReset_session_timer_time; now reset_session_timer_time is a NSCalendarDate that doesn't need converting every time it's used. Invalidate badge_session_minutes so the badge changes when the work color is adjusted in preferences.

File size: 3.7 KB
Line 
1/*
2 author: Onne Gorter
3 
4 This file is part of AntiRSI.
5 
6 AntiRSI is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10 
11 AntiRSI is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15 
16 You should have received a copy of the GNU General Public License
17 along with AntiRSI; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 */
20
21#import <Cocoa/Cocoa.h>
22#import "AntiRSIView.h"
23#import "CTBadge.h"
24
25#define sLatestVersionURL @"http://web.sabi.net/nriley/software/AntiRSI-version.txt"
26#define sURL @"http://web.sabi.net/nriley/software/#antirsi"
27#define sVersion @"1.4njr2"
28
29typedef enum _AntiRSIState {
30        s_normal = 0,
31        s_taking_micro_pause,
32        s_taking_work_break,
33} AntiRSIState;
34
35@interface AntiRSI : NSObject
36{
37        // views to display current status in
38        IBOutlet AntiRSIView *view;
39        IBOutlet NSLevelIndicator *progress;
40        IBOutlet NSButton *postpone;
41        IBOutlet NSTextField *time;
42        IBOutlet NSTextField *next_break;
43    IBOutlet NSTextField *session_time;
44    IBOutlet NSTextField *status;
45        IBOutlet NSTextField *version; // XXX unused?
46    IBOutlet NSDatePicker *reset_session_time;
47   
48    // dock menu
49    IBOutlet NSMenu *dock_menu;
50    IBOutlet NSMenuItem *session_time_item;
51   
52        // dock icon image
53        NSImage* dock_image;
54        NSImage* original_dock_image;
55    CTBadge* dock_badge;
56       
57        // window to display the views in
58        NSWindow *main_window;
59       
60        // timer that ticks every second to update
61        NSTimer *mtimer;
62       
63        // various timers
64        double micro_pause_t;
65        double work_break_t;
66        double micro_pause_taking_t;
67        double work_break_taking_t;
68        double work_break_taking_cached_t;
69        double work_break_taking_cached_date;
70    double session_t;
71        double date;
72    double reset_session_date;
73               
74        // various timing lengths
75        int micro_pause_period;
76        int micro_pause_duration;
77        int work_break_period;
78        int work_break_duration;
79       
80        double sample_interval;
81       
82        // verious other options
83        bool lock_focus;
84        bool draw_dock_image;
85        bool draw_dock_badge;
86        bool draw_dock_image_q;
87    bool reset_session_timer_daily;
88    bool reset_session_timer_after;
89    NSCalendarDate *reset_session_timer_time;
90    int reset_session_timer_after_hours;
91       
92        // various colors
93        NSColor* taking;
94        NSColor* elapsed;
95        NSColor* background;
96        NSColor* darkbackground;
97       
98        // state we are in
99        AntiRSIState state;
100       
101        // history filter
102        double h0;
103        double h1;
104        double h2;
105}
106
107//bindings
108- (void)setMicro_pause_duration:(float)f;
109- (void)setMicro_pause_period:(float)f;
110- (void)setWork_break_period:(float)f;
111- (void)setWork_break_period:(float)f;
112- (void)setSample_interval:(NSString *)s;
113- (void)setDraw_dock_image:(BOOL)b;
114- (void)setBackground:(NSColor *)c;
115
116// goto website button
117- (IBAction)gotoWebsite:(id)sender;
118
119// check updates
120- (IBAction)checkForUpdate:(id)sender;
121
122// postpone button
123- (IBAction)postpone:(id)sender;
124
125// workbreak now menu item
126- (IBAction)breakNow:(id)sender;
127
128// reset session time menu item
129- (IBAction)resetSession:(id)sender;
130
131// returns string of the form "Session: 12:34:56"
132- (NSString *)sessionTimeString;
133
134// one second ticks away ...
135- (void)tick:(NSTimer *)timer;
136
137// reset all timers
138- (void)resetTimers;
139
140// draw the dock icon
141- (void)drawDockImage;
142
143// run the micro pause window
144- (void)doMicroPause;
145
146// run the work break window
147- (void)doWorkBreak;
148
149// stop micro pause or work break
150- (void)endBreak;
151
152// update window
153- (void)updateBreakWindowDuration:(double)duration progress:(double)progress_t nextBreak:(double)nextBreak;
154
155@end
156
157
158
Note: See TracBrowser for help on using the repository browser.