private void eventInterface_WindowActivate(Word.Document Doc, Word.Window Wn) { // Ensure pause checkbox in ribbon is accurate, start by getting timer DocumentTimer documentTimer = documentEditTimes[this.Application.ActiveDocument.Name]; // Set checkbox Globals.Ribbons.TimerRibbon.SetPauseStatus(!documentTimer.IsActive); }
internal void PauseOrResumeTimer(bool pause) { // Get timer DocumentTimer documentTimer = documentEditTimes[this.Application.ActiveDocument.Name]; if (pause && documentTimer.IsActive) { // Freeze timer documentTimer.EditTime += DateTime.Now - documentTimer.LastActive; documentTimer.IsActive = false; } else if (!pause && !documentTimer.IsActive) { // Resume timer documentTimer.IsActive = true; documentTimer.LastActive = DateTime.Now; } }
internal void RefreshDisplay() { // Clear existing list this.timerList.Items.Clear(); // Ensure all docs are monitored foreach (Word.Document doc in Globals.ThisAddIn.Application.Documents) { bool isMonitored = false; bool requiresNameChange = false; DocumentTimer oldNameTimer = null; string oldName = null; foreach (string documentName in documentEditTimes.Keys) { if (doc.Name == documentName) { isMonitored = true; break; } else { if (documentEditTimes[documentName].Document == doc) { // Monitored, but name changed! oldName = documentName; oldNameTimer = documentEditTimes[documentName]; isMonitored = true; requiresNameChange = true; break; } } } // Add monitor if not monitored if (!isMonitored) { Globals.ThisAddIn.MonitorDocument(doc); } // Rename if necessary if (requiresNameChange) { documentEditTimes.Remove(oldName); documentEditTimes.Add(doc.Name, oldNameTimer); } } // Create new list foreach (string documentName in documentEditTimes.Keys) { // Check to see if doc is still loaded bool isLoaded = false; foreach (Word.Document doc in Globals.ThisAddIn.Application.Documents) { if (doc.Name == documentName) { isLoaded = true; break; } } if (!isLoaded) { documentEditTimes[documentName].IsActive = false; documentEditTimes[documentName].Document = null; } // Add item this.timerList.Items.Add(string.Format("{0}: {1}", documentName, documentEditTimes[documentName].EditTime + (documentEditTimes[documentName].IsActive ? (DateTime.Now - documentEditTimes[documentName].LastActive) : new TimeSpan(0)))); } }