openall_time_applet 0.0.38 → 0.0.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -77,8 +77,16 @@ class Openall_time_applet::Gui::Win_preferences
77
77
  #Do the stuff in thread so GUI wont lock.
78
78
  Knj::Thread.new do
79
79
  begin
80
+ args_oa_conn = {
81
+ :host => @gui["txtHost"].text,
82
+ :port => @gui["txtPort"].text.to_i,
83
+ :ssl => @gui["cbSSL"].active?,
84
+ :username => @gui["txtUsername"].text,
85
+ :password => @gui["txtPassword"].text
86
+ }
87
+
80
88
  #Connect to OpenAll, log in, get a list of tasks to test the information and connection.
81
- @args[:oata].oa_conn do |conn|
89
+ @args[:oata].oa_conn(args_oa_conn) do |conn|
82
90
  ws.percent = 0.3
83
91
  ws.label = _("Getting task-list.")
84
92
  task_list = conn.task_list
@@ -2,7 +2,7 @@
2
2
  require "rubygems"
3
3
 
4
4
  #For secs-to-human-string (MySQL-format), model-framework, database-framework, options-framework, date-framework and more.
5
- gems = ["wref", "datet", "http2", "knjrbfw", "gtk2_treeview_settings"]
5
+ gems = ["wref", "datet", "http2", "knjrbfw", "gtk2_expander_settings", "gtk2_treeview_settings", "gtk2_window_settings"]
6
6
  gems.each do |gem|
7
7
  fpath = "#{File.dirname(__FILE__)}/../../#{gem}/lib/#{gem}.rb"
8
8
  if File.exists?(fpath)
@@ -60,7 +60,7 @@ class Openall_time_applet
60
60
  end
61
61
 
62
62
  #Various readable variables.
63
- attr_reader :db, :debug, :events, :ob, :ti, :timelog_active, :timelog_active_time
63
+ attr_reader :db, :debug, :events, :log, :ob, :ti, :timelog_active, :timelog_active_time
64
64
  attr_accessor :reminder_next
65
65
 
66
66
  #Config controlling paths and more.
@@ -68,17 +68,25 @@ class Openall_time_applet
68
68
  :settings_path => "#{Knj::Os.homedir}/.openall_time_applet",
69
69
  :run_path => "#{Knj::Os.homedir}/.openall_time_applet/run",
70
70
  :db_path => "#{Knj::Os.homedir}/.openall_time_applet/openall_time_applet.sqlite3",
71
- :sock_path => "#{Knj::Os.homedir}/.openall_time_applet/sock"
71
+ :sock_path => "#{Knj::Os.homedir}/.openall_time_applet/sock",
72
+ :log_path => "#{Knj::Os.homedir}/.openall_time_applet/log"
72
73
  }
73
74
 
74
75
  #Initializes config-dir and database.
75
76
  def initialize(args = {})
77
+ #Spawn logging-object.
78
+ require "logger"
79
+ @log = Logger.new(CONFIG[:log_path])
80
+ @log.level = Logger::DEBUG
81
+
82
+
76
83
  Dir.mkdir(CONFIG[:settings_path]) if !File.exists?(CONFIG[:settings_path])
77
84
  self.check_runfile_and_cmds
78
85
  self.require_gtk2
79
86
  @debug = args[:debug]
80
87
 
81
88
  #Database-connection.
89
+ @log.debug("Spawning database-object.")
82
90
  @db = Knj::Db.new(
83
91
  :type => "sqlite3",
84
92
  :path => CONFIG[:db_path],
@@ -87,9 +95,11 @@ class Openall_time_applet
87
95
  )
88
96
 
89
97
  #Update to latest db-revision.
98
+ @log.debug("Updating database.")
90
99
  self.update_db
91
100
 
92
101
  #Models-handeler.
102
+ @log.debug("Spawning model-handler.")
93
103
  @ob = Knj::Objects.new(
94
104
  :datarow => true,
95
105
  :db => @db,
@@ -98,11 +108,14 @@ class Openall_time_applet
98
108
  :module => Openall_time_applet::Models
99
109
  )
100
110
  @ob.events.connect(:no_name, &self.method(:objects_no_name))
111
+ @ob.connect("object" => :Timelog, "signals" => ["delete_before"], &self.method(:on_timelog_delete))
101
112
 
113
+ @log.debug("Spawning event-handler.")
102
114
  @events = Knj::Event_handler.new
103
115
  @events.add_event(:name => :timelog_active_changed)
104
116
 
105
117
  #Options used to save various information (Openall-username and such).
118
+ @log.debug("Spawning options-object.")
106
119
  Knj::Opts.init("knjdb" => @db, "table" => "Option")
107
120
 
108
121
  #Set crash-operation to save tracked time instead of loosing it.
@@ -112,16 +125,37 @@ class Openall_time_applet
112
125
  Knj::Opts.set("tray_text_color", "green_casalogic") if Knj::Opts.get("tray_text_color").to_s.strip.empty?
113
126
 
114
127
  #Spawn tray-icon.
128
+ @log.debug("Spawning tray-icon.")
115
129
  self.spawn_trayicon
116
130
 
117
131
  #Start reminder.
132
+ @log.debug("Starting reminder.")
118
133
  self.reminding
119
134
 
120
135
  #Start unix-socket that listens for remote control.
136
+ @log.debug("Spawning UNIX-socket.")
121
137
  @unix_socket = Openall_time_applet::Unix_socket.new(:oata => self)
122
138
 
123
139
  #Start autosync-timeout.
140
+ @log.debug("Starting auto-sync.")
124
141
  self.restart_autosync
142
+
143
+ @log.debug("OpenAll Time Applet started.")
144
+
145
+ #Used to test when new tasks are created.
146
+ #@ob.list(:Task, "title" => "New task") do |task|
147
+ # puts "Deleting test task."
148
+ # @ob.delete(task)
149
+ #end
150
+ end
151
+
152
+ #Called when a timelog is deleted.
153
+ def on_timelog_delete(timelog)
154
+ #Stop tracking if the active timelog is being deleted.
155
+ if @timelog_active and @timelog_active.id.to_i == timelog.id.to_i
156
+ @log.debug("Tracked timelog is being deleted - stopping tracking before deletion.")
157
+ self.timelog_stop_tracking
158
+ end
125
159
  end
126
160
 
127
161
  #Called when something doesnt have a name to get a replacement-name in the objects-framework.
@@ -132,26 +166,33 @@ class Openall_time_applet
132
166
  #Creates a runfile or sending a command to the running OpenAll-Time-Applet through the Unix-socket.
133
167
  def check_runfile_and_cmds
134
168
  #If run-file exists and the PID within is still running, then send command (if given) and exit.
135
- if File.exists?(CONFIG[:run_path]) and Knj::Unix_proc.pid_running?(File.read(CONFIG[:run_path]).to_i)
136
- cmd = nil
137
- ARGV.each do |val|
138
- if match = val.match(/^--cmd=(.+)$/)
139
- cmd = match[1]
140
- break
141
- end
142
- end
169
+ if File.exists?(CONFIG[:run_path]) and Knj::Unix_proc.pid_running?(File.read(CONFIG[:run_path]).to_i) and File.exists?(CONFIG[:sock_path])
170
+ running = true
143
171
 
144
- if cmd
145
- puts "Executing command through sock: #{cmd}"
146
-
172
+ begin
147
173
  require "socket"
148
174
  UNIXSocket.open(CONFIG[:sock_path]) do |sock|
149
- sock.puts(cmd)
175
+ cmd = nil
176
+ ARGV.each do |val|
177
+ if match = val.match(/^--cmd=(.+)$/)
178
+ cmd = match[1]
179
+ break
180
+ end
181
+ end
182
+
183
+ if cmd
184
+ puts "Executing command through sock: #{cmd}"
185
+ sock.puts(cmd)
186
+ end
150
187
  end
188
+ rescue Errno::ECONNREFUSED
189
+ running = false
151
190
  end
152
191
 
153
- puts "Already running"
154
- exit
192
+ if running
193
+ puts "Already running"
194
+ exit
195
+ end
155
196
  end
156
197
 
157
198
  File.open(CONFIG[:run_path], "w") do |fp|
@@ -212,6 +253,7 @@ class Openall_time_applet
212
253
  #This executes the notification that notifies if a timelog is being tracked.
213
254
  def reminding_exec
214
255
  return nil unless @timelog_active
256
+ @log.debug("Sending reminder through notify.")
215
257
  Knj::Notify.send("time" => 5, "msg" => sprintf(_("Tracking task: %s"), @timelog_active[:descr]))
216
258
  end
217
259
 
@@ -220,16 +262,19 @@ class Openall_time_applet
220
262
  # oata.oa_conn do |conn|
221
263
  # task_list = conn.task_list
222
264
  # end
223
- def oa_conn
265
+ def oa_conn(args = nil)
224
266
  begin
225
- conn = Openall_time_applet::Connection.new(
267
+ args_conn = {
226
268
  :oata => self,
227
269
  :host => Knj::Opts.get("openall_host"),
228
270
  :port => Knj::Opts.get("openall_port"),
229
271
  :username => Knj::Opts.get("openall_username"),
230
272
  :password => Base64.strict_decode64(Knj::Opts.get("openall_password")),
231
273
  :ssl => Knj::Strings.yn_str(Knj::Opts.get("openall_ssl"), true, false)
232
- )
274
+ }
275
+ args_conn.merge!(args) if args
276
+
277
+ conn = Openall_time_applet::Connection.new(args_conn)
233
278
  yield(conn)
234
279
  ensure
235
280
  conn.destroy if conn
@@ -243,6 +288,7 @@ class Openall_time_applet
243
288
  end
244
289
 
245
290
  def show_main
291
+ @log.debug("Show main window.")
246
292
  Knj::Gtk2::Window.unique!("main") do
247
293
  Openall_time_applet::Gui::Win_main.new(:oata => self)
248
294
  end
@@ -250,18 +296,21 @@ class Openall_time_applet
250
296
 
251
297
  #Spawns the preference-window.
252
298
  def show_preferences
299
+ @log.debug("Show preferences.")
253
300
  Knj::Gtk2::Window.unique!("preferences") do
254
301
  Openall_time_applet::Gui::Win_preferences.new(:oata => self)
255
302
  end
256
303
  end
257
304
 
258
305
  def show_overview
306
+ @log.debug("Show overview.")
259
307
  Knj::Gtk2::Window.unique!("overview") do
260
308
  Openall_time_applet::Gui::Win_overview.new(:oata => self)
261
309
  end
262
310
  end
263
311
 
264
312
  def show_worktime_overview
313
+ @log.debug("Show worktime-overview.")
265
314
  Knj::Gtk2::Window.unique!("worktime_overview") do
266
315
  Openall_time_applet::Gui::Win_worktime_overview.new(:oata => self)
267
316
  end
@@ -269,20 +318,24 @@ class Openall_time_applet
269
318
 
270
319
  #Updates the task-cache.
271
320
  def update_task_cache
321
+ @log.debug("Updating task-cache.")
272
322
  @ob.static(:Task, :update_cache, {:oata => self})
273
323
  end
274
324
 
275
325
  #Updates the worktime-cache.
276
326
  def update_worktime_cache
327
+ @log.debug("Updating worktime-cache.")
277
328
  @ob.static(:Worktime, :update_cache, {:oata => self})
278
329
  end
279
330
 
280
331
  def update_organisation_cache
332
+ @log.debug("Updating organisation-cache.")
281
333
  @ob.static(:Organisation, :update_cache, {:oata => self})
282
334
  end
283
335
 
284
336
  #Pushes time-updates to OpenAll.
285
337
  def push_time_updates
338
+ @log.debug("Pushing timelogs.")
286
339
  @ob.static(:Timelog, :push_time_updates, {:oata => self})
287
340
  end
288
341
 
@@ -351,6 +404,7 @@ class Openall_time_applet
351
404
  #Stops tracking a timelog. Saves time tracked and sets sync-flag.
352
405
  def timelog_stop_tracking
353
406
  if @timelog_active
407
+ @log.debug("Stopping tracking of timelog.")
354
408
  secs_passed = Time.now.to_i - @timelog_active_time.to_i
355
409
 
356
410
  @timelog_active.update(
@@ -373,6 +427,7 @@ class Openall_time_applet
373
427
  "descr" => timelog[:descr],
374
428
  "timestamp_day" => Time.now
375
429
  })
430
+
376
431
  if !timelog_use
377
432
  timelog_use = @ob.add(:Timelog, {
378
433
  :task_id => timelog[:task_id],
@@ -385,6 +440,8 @@ class Openall_time_applet
385
440
  })
386
441
  end
387
442
 
443
+ @log.debug("Starting tracking of timelog.")
444
+
388
445
  begin
389
446
  self.timelog_stop_tracking
390
447
  @timelog_logged_time = @ob.add(:Timelog_logged_time, :timelog_id => timelog_use.id)
@@ -393,6 +450,7 @@ class Openall_time_applet
393
450
 
394
451
  @events.call(:timelog_active_changed)
395
452
  rescue => e
453
+ @log.error("Error while trying to start tracking timelog: '#{e.message}'.\n#{e.backtrace.join("\n")}")
396
454
  Knj::Gtk2.msgbox("msg" => Knj::Errors.error_str(e), "type" => "warning", "title" => _("Error"), "run" => false)
397
455
  end
398
456
 
@@ -461,6 +519,7 @@ class Openall_time_applet
461
519
 
462
520
  #Prints status to the command line and the statusbar in the main window (if the main window is open).
463
521
  def status=(newstatus)
522
+ @log.debug("New status: '#{newstatus}'.")
464
523
  puts "Status: '#{newstatus}'."
465
524
  win_main = Knj::Gtk2::Window.get("main")
466
525
 
Binary file
@@ -1,8 +1,8 @@
1
1
  msgid ""
2
2
  msgstr ""
3
3
  "Project-Id-Version: Openall_time_applet\n"
4
- "POT-Creation-Date: 2012-08-09 10:02+0100\n"
5
- "PO-Revision-Date: 2012-08-09 10:04+0100\n"
4
+ "POT-Creation-Date: 2012-08-31 11:29+0100\n"
5
+ "PO-Revision-Date: 2012-08-31 11:30+0100\n"
6
6
  "Last-Translator: Kasper Johansen <k@spernj.org>\n"
7
7
  "Language-Team: Kasper Johansen <k@spernj.org>\n"
8
8
  "Language: \n"
@@ -92,26 +92,26 @@ msgstr "Tray-indstillinger blev gemt."
92
92
  msgid "Connecting and logging in..."
93
93
  msgstr "Forbinder og logger ind..."
94
94
 
95
- #: gui/win_preferences.rb:83
95
+ #: gui/win_preferences.rb:91
96
96
  msgid "Getting task-list."
97
97
  msgstr "Henter opgave-liste."
98
98
 
99
- #: gui/win_preferences.rb:86
99
+ #: gui/win_preferences.rb:94
100
100
  msgid "Got %s tasks."
101
101
  msgstr "Hentet %s opgaver."
102
102
 
103
- #: gui/win_preferences.rb:94
104
- #: lib/openall_time_applet.rb:316
105
- #: lib/openall_time_applet.rb:346
106
- #: lib/openall_time_applet.rb:398
103
+ #: gui/win_preferences.rb:102
104
+ #: lib/openall_time_applet.rb:317
105
+ #: lib/openall_time_applet.rb:347
106
+ #: lib/openall_time_applet.rb:399
107
107
  msgid "Error"
108
108
  msgstr "Fejl"
109
109
 
110
- #: gui/win_preferences.rb:111
111
- msgid "The interval was not numeric."
112
- msgstr "Intervallet var ikke et tal."
110
+ #: gui/win_preferences.rb:119
111
+ msgid "The interval was not numeric or above zero."
112
+ msgstr "Intervallet var ikke et nummer eller over nul."
113
113
 
114
- #: gui/win_preferences.rb:120
114
+ #: gui/win_preferences.rb:128
115
115
  msgid "The auto. sync. preferences was saved."
116
116
  msgstr "Auto synk. indstillingerne blev gemt."
117
117
 
@@ -123,180 +123,190 @@ msgstr "Uge %s"
123
123
  msgid "No worktimes was found that week."
124
124
  msgstr "Der blev ikke fundet nogle arbejdstimer i denne uge."
125
125
 
126
- #: gui/win_main.rb:16
127
- #: gui/win_main.rb:223
126
+ #: gui/win_main.rb:18
127
+ #: gui/win_main.rb:255
128
128
  msgid "None"
129
129
  msgstr "Ingen"
130
130
 
131
- #: gui/win_main.rb:19
132
- #: gui/win_main.rb:226
133
- #: gui/win_main.rb:641
134
- #: gui/win_main.rb:660
135
- #: gui/win_main.rb:670
131
+ #: gui/win_main.rb:21
132
+ #: gui/win_main.rb:258
133
+ #: gui/win_main.rb:776
134
+ #: gui/win_main.rb:795
135
+ #: gui/win_main.rb:805
136
136
  msgid "Choose:"
137
137
  msgstr "Vælg:"
138
138
 
139
- #: gui/win_main.rb:42
140
- #: gui/win_main.rb:236
139
+ #: gui/win_main.rb:46
140
+ #: gui/win_main.rb:268
141
141
  msgid "ID"
142
142
  msgstr "ID"
143
143
 
144
- #: gui/win_main.rb:44
144
+ #: gui/win_main.rb:48
145
+ #: gui/win_main.rb:274
145
146
  msgid "Stamp"
146
147
  msgstr "Stamp"
147
148
 
148
- #: gui/win_main.rb:50
149
- #: gui/win_main.rb:243
149
+ #: gui/win_main.rb:54
150
+ #: gui/win_main.rb:275
150
151
  msgid "Time"
151
152
  msgstr "Tid"
152
153
 
153
- #: gui/win_main.rb:56
154
- #: gui/win_main.rb:238
154
+ #: gui/win_main.rb:60
155
+ #: gui/win_main.rb:270
155
156
  msgid "Description"
156
157
  msgstr "Beskrivelse"
157
158
 
158
- #: gui/win_main.rb:63
159
- #: gui/win_main.rb:244
159
+ #: gui/win_main.rb:67
160
+ #: gui/win_main.rb:276
160
161
  msgid "T-time"
161
162
  msgstr "T-tid"
162
163
 
163
- #: gui/win_main.rb:69
164
- #: gui/win_main.rb:245
164
+ #: gui/win_main.rb:73
165
+ #: gui/win_main.rb:277
165
166
  msgid "T-km"
166
167
  msgstr "T-km"
167
168
 
168
- #: gui/win_main.rb:74
169
- #: gui/win_main.rb:247
169
+ #: gui/win_main.rb:78
170
+ #: gui/win_main.rb:279
170
171
  msgid "T-Descr."
171
172
  msgstr "T-Beskr."
172
173
 
173
- #: gui/win_main.rb:81
174
- #: gui/win_main.rb:251
174
+ #: gui/win_main.rb:85
175
+ #: gui/win_main.rb:283
175
176
  msgid "Cost"
176
177
  msgstr "Omk."
177
178
 
178
- #: gui/win_main.rb:86
179
- #: gui/win_main.rb:253
179
+ #: gui/win_main.rb:90
180
+ #: gui/win_main.rb:285
180
181
  msgid "Fixed"
181
182
  msgstr "Fikset"
182
183
 
183
- #: gui/win_main.rb:91
184
+ #: gui/win_main.rb:95
185
+ #: gui/win_main.rb:289
184
186
  msgid "Work"
185
187
  msgstr "Arb."
186
188
 
187
- #: gui/win_main.rb:96
188
- #: gui/win_main.rb:265
189
+ #: gui/win_main.rb:100
190
+ #: gui/win_main.rb:297
189
191
  msgid "Task"
190
192
  msgstr "Opgave"
191
193
 
192
- #: gui/win_main.rb:131
194
+ #: gui/win_main.rb:109
195
+ msgid "Track"
196
+ msgstr "Track"
197
+
198
+ #: gui/win_main.rb:141
193
199
  msgid "You cannot edit the time for the active timelog."
194
200
  msgstr "Du kan ikke redigere tid for den aktive tidslog."
195
201
 
196
- #: gui/win_main.rb:218
202
+ #: gui/win_main.rb:193
203
+ msgid "You cannot track a date. Please track a timelog instead."
204
+ msgstr "Du kan ikke tracke en dato. Brug venligst en tidslog i stedet."
205
+
206
+ #: gui/win_main.rb:250
197
207
  msgid "Transfer"
198
208
  msgstr "Overfør"
199
209
 
200
- #: gui/win_main.rb:242
201
- msgid "Timestamp"
202
- msgstr "Tidsstempel"
203
-
204
- #: gui/win_main.rb:257
205
- msgid "Internal"
206
- msgstr "Internt"
207
-
208
- #: gui/win_main.rb:261
210
+ #: gui/win_main.rb:293
209
211
  msgid "Skip"
210
212
  msgstr "Skip"
211
213
 
212
- #: gui/win_main.rb:271
214
+ #: gui/win_main.rb:303
213
215
  msgid "Sync time"
214
216
  msgstr "Synk tid"
215
217
 
216
- #: gui/win_main.rb:456
218
+ #: gui/win_main.rb:476
217
219
  msgid "There is nothing to sync at this time."
218
220
  msgstr "Der er intet at synce på nuværende tidspunkt."
219
221
 
220
- #: gui/win_main.rb:493
222
+ #: gui/win_main.rb:513
221
223
  msgid "You cannot edit this on the active timelog."
222
224
  msgstr "Du kan ikke redigere den aktive tidslog."
223
225
 
224
- #: gui/win_main.rb:562
226
+ #: gui/win_main.rb:613
227
+ msgid "Could not find timelog in treeview: '%s'."
228
+ msgstr "Kunne ikke finde tidslog i treeviewet: '%s'."
229
+
230
+ #: gui/win_main.rb:650
231
+ msgid "Could not find iter from that date: '%s'."
232
+ msgstr "Kunne ikke finde iter fra den dato: '%s'."
233
+
234
+ #: gui/win_main.rb:696
225
235
  msgid "The timelog '%s' has not been synced. Are you sure you want to quit?"
226
236
  msgstr "Tidsloggen '%s' er ikke blevet synkroniseret. Er du sikker på, at du vil afslutte?"
227
237
 
228
- #: gui/win_main.rb:667
238
+ #: gui/win_main.rb:802
229
239
  msgid "Start"
230
240
  msgstr "Start"
231
241
 
232
- #: gui/win_main.rb:723
242
+ #: gui/win_main.rb:861
233
243
  msgid "Please choose a timelog to delete."
234
244
  msgstr "Vælg venligst en tidslog at slette."
235
245
 
236
- #: gui/win_main.rb:727
246
+ #: gui/win_main.rb:865
237
247
  #: spec/openall_time_applet_spec.rb:54
238
248
  #: spec/openall_time_applet_spec.rb:83
239
249
  msgid "Do you want to remove this timelog?"
240
250
  msgstr "Vil du fjerne denne tidslogning?"
241
251
 
242
- #: gui/win_main.rb:731
252
+ #: gui/win_main.rb:869
243
253
  msgid "Could not delete the timelog: %s"
244
254
  msgstr "Kunne ikke slette tidslog: %s"
245
255
 
246
- #: lib/openall_time_applet.rb:131
256
+ #: lib/openall_time_applet.rb:129
247
257
  msgid "not set"
248
258
  msgstr "ikke sat"
249
259
 
250
- #: lib/openall_time_applet.rb:217
260
+ #: lib/openall_time_applet.rb:215
251
261
  msgid "Tracking task: %s"
252
262
  msgstr "Følger opgave: %s"
253
263
 
254
- #: lib/openall_time_applet.rb:297
264
+ #: lib/openall_time_applet.rb:298
255
265
  msgid "Updating organisation-cache."
256
266
  msgstr "Opdaterer organisations-cache."
257
267
 
258
- #: lib/openall_time_applet.rb:301
268
+ #: lib/openall_time_applet.rb:302
259
269
  msgid "Updating task-cache."
260
270
  msgstr "Opdaterer opgave-cache."
261
271
 
262
- #: lib/openall_time_applet.rb:305
263
- #: lib/openall_time_applet.rb:338
272
+ #: lib/openall_time_applet.rb:306
273
+ #: lib/openall_time_applet.rb:339
264
274
  msgid "Updating worktime-cache."
265
275
  msgstr "Opdaterer arbejdstids-cache."
266
276
 
267
- #: lib/openall_time_applet.rb:330
277
+ #: lib/openall_time_applet.rb:331
268
278
  msgid "Pushing time-updates."
269
279
  msgstr "Sender tids-opdateringer."
270
280
 
271
- #: lib/openall_time_applet.rb:334
281
+ #: lib/openall_time_applet.rb:335
272
282
  msgid "Update task-cache."
273
283
  msgstr "Opdaterer opgave-cache."
274
284
 
275
- #: lib/openall_time_applet.rb:342
285
+ #: lib/openall_time_applet.rb:343
276
286
  msgid "Done"
277
287
  msgstr "Færdig"
278
288
 
279
- #: lib/openall_time_applet.rb:431
289
+ #: lib/openall_time_applet.rb:432
280
290
  msgid "Disabled automatic synchronization."
281
291
  msgstr "Slået automatisk synkronation fra."
282
292
 
283
- #: lib/openall_time_applet.rb:435
293
+ #: lib/openall_time_applet.rb:436
284
294
  msgid "Restarted automatic sync. to run every %s minutes."
285
295
  msgstr "Genstartet automatisk synk. til at køre hvert %s minut."
286
296
 
287
- #: lib/openall_time_applet.rb:449
297
+ #: lib/openall_time_applet.rb:450
288
298
  msgid "Synchronizing organisations."
289
299
  msgstr "Synkroniserer organisationer."
290
300
 
291
- #: lib/openall_time_applet.rb:452
301
+ #: lib/openall_time_applet.rb:453
292
302
  msgid "Synchronizing worktime."
293
303
  msgstr "Synkroniserer arbejdstid."
294
304
 
295
- #: lib/openall_time_applet.rb:455
305
+ #: lib/openall_time_applet.rb:456
296
306
  msgid "Automatic synchronization done."
297
307
  msgstr "Automatisk synkronation færdig."
298
308
 
299
- #: lib/openall_time_applet.rb:457
309
+ #: lib/openall_time_applet.rb:458
300
310
  msgid "Error while auto-syncing: %s"
301
311
  msgstr "Fejl ved auto-synk: %s"
302
312
 
@@ -437,6 +447,12 @@ msgstr "Tidslog liste"
437
447
  msgid "<b>Timelogs</b>"
438
448
  msgstr "<b>Tidslogs</b>"
439
449
 
450
+ #~ msgid "Timestamp"
451
+ #~ msgstr "Tidsstempel"
452
+
453
+ #~ msgid "Internal"
454
+ #~ msgstr "Internt"
455
+
440
456
  #~ msgid "New"
441
457
  #~ msgstr "Ny"
442
458