openall_time_applet 0.0.38 → 0.0.40

Sign up to get free protection for your applications and to get access to all the features.
@@ -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