//Handles keeping track of all the data structures for changing a contact. func changeContact(contactsMenuWin *gc.Window, contactMenu *gc.Menu) { globalMsgWin.Erase() currentContact = getTel(contactMenu.Current(nil).Name()) rows := getConversation(currentContact) defer rows.Close() var msg string var src string var t time.Time var b bytes.Buffer for rows.Next() { rows.Scan(&msg, &src, &t) if src != "You" { if time.Now().AddDate(0, 0, -1).Before(t) { if t.Hour() < 10 { b.WriteString("0") } b.WriteString(strconv.Itoa(t.Hour())) b.WriteString(":") if t.Minute() < 10 { b.WriteString("0") } b.WriteString(strconv.Itoa(t.Minute())) b.WriteString(": ") b.WriteString(msg) printToMsgWindow(b.String(), globalMsgWin, false) b.Reset() } else if (time.Now()).AddDate(0, 0, -6).Before(t) { b.WriteString(string([]byte(t.Weekday().String())[0:3])) b.WriteString(" at ") if t.Hour() < 10 { b.WriteString("0") } b.WriteString(strconv.Itoa(t.Hour())) b.WriteString(":") if t.Minute() < 10 { b.WriteString("0") } b.WriteString(strconv.Itoa(t.Minute())) b.WriteString(": ") b.WriteString(msg) printToMsgWindow(b.String(), globalMsgWin, false) b.Reset() } else { b.WriteString(t.Local().String()) b.WriteString(": ") b.WriteString(msg) printToMsgWindow(b.String(), globalMsgWin, false) b.Reset() } } else { if time.Now().AddDate(0, 0, -1).Before(t) { if t.Hour() < 10 { b.WriteString("0") } b.WriteString(strconv.Itoa(t.Hour())) b.WriteString(":") if t.Minute() < 10 { b.WriteString("0") } b.WriteString(strconv.Itoa(t.Minute())) b.WriteString(": ") b.WriteString(msg) printToMsgWindow(b.String(), globalMsgWin, true) b.Reset() } else if (time.Now()).AddDate(0, 0, -6).Before(t) { b.WriteString(string([]byte(t.Weekday().String())[0:3])) b.WriteString(" at ") if t.Hour() < 10 { b.WriteString("0") } b.WriteString(strconv.Itoa(t.Hour())) b.WriteString(":") if t.Minute() < 10 { b.WriteString("0") } b.WriteString(strconv.Itoa(t.Minute())) b.WriteString(": ") b.WriteString(msg) printToMsgWindow(b.String(), globalMsgWin, true) b.Reset() } else { b.WriteString(t.Local().String()) b.WriteString(": ") b.WriteString(msg) printToMsgWindow(b.String(), globalMsgWin, true) b.Reset() } } } globalMsgWin.Refresh() }