diff --git a/enzevalos_iphone.xcodeproj/project.pbxproj b/enzevalos_iphone.xcodeproj/project.pbxproj index 1f344e8dfde74046c93e5e2cae733c259b5e4a98..93e6e8d55da5a3aa3479ff8ed14da5916d7a8a24 100644 --- a/enzevalos_iphone.xcodeproj/project.pbxproj +++ b/enzevalos_iphone.xcodeproj/project.pbxproj @@ -14,7 +14,9 @@ A13526861D955BDF00D3BFE1 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A13526841D955BDF00D3BFE1 /* LaunchScreen.storyboard */; }; A13526911D955BE000D3BFE1 /* enzevalos_iphoneTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A13526901D955BE000D3BFE1 /* enzevalos_iphoneTests.swift */; }; A135269C1D955BE000D3BFE1 /* enzevalos_iphoneUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A135269B1D955BE000D3BFE1 /* enzevalos_iphoneUITests.swift */; }; + A17C04841DC6504E00F66EDB /* LogHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A17C04831DC6504E00F66EDB /* LogHandler.swift */; }; A1C3270E1DB907D900CE2ED5 /* TextFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1C3270D1DB907D900CE2ED5 /* TextFormatter.swift */; }; + A1E81B671DCA296200535F98 /* UIViewResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1E81B661DCA296200535F98 /* UIViewResolver.swift */; }; A1EB05781D956817008659C1 /* ImageExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1EB05771D956817008659C1 /* ImageExtension.swift */; }; A1EB057A1D956829008659C1 /* ContactCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1EB05791D956829008659C1 /* ContactCell.swift */; }; A1EB057C1D956838008659C1 /* MailHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1EB057B1D956838008659C1 /* MailHandler.swift */; }; @@ -83,8 +85,10 @@ A13526971D955BE000D3BFE1 /* enzevalos_iphoneUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = enzevalos_iphoneUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; A135269B1D955BE000D3BFE1 /* enzevalos_iphoneUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = enzevalos_iphoneUITests.swift; sourceTree = "<group>"; }; A135269D1D955BE000D3BFE1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + A17C04831DC6504E00F66EDB /* LogHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogHandler.swift; sourceTree = "<group>"; }; A198270D1D9A8ABC0027F65C /* enzevalos_iphone-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "enzevalos_iphone-Bridging-Header.h"; sourceTree = "<group>"; }; A1C3270D1DB907D900CE2ED5 /* TextFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextFormatter.swift; sourceTree = "<group>"; }; + A1E81B661DCA296200535F98 /* UIViewResolver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewResolver.swift; sourceTree = "<group>"; }; A1EB05771D956817008659C1 /* ImageExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageExtension.swift; sourceTree = "<group>"; }; A1EB05791D956829008659C1 /* ContactCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactCell.swift; sourceTree = "<group>"; }; A1EB057B1D956838008659C1 /* MailHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MailHandler.swift; sourceTree = "<group>"; }; @@ -245,12 +249,14 @@ children = ( A1EB05A51D956F73008659C1 /* images */, A1EB057F1D956851008659C1 /* SendViewController.swift */, + A1E81B661DCA296200535F98 /* UIViewResolver.swift */, A1EB057D1D956848008659C1 /* VENDataDelegate.swift */, A1EB05811D95685B008659C1 /* CollectionDataDelegate.swift */, A1EB05831D956867008659C1 /* TableViewDataDelegate.swift */, A1EB05791D956829008659C1 /* ContactCell.swift */, A1EB05851D956872008659C1 /* FrequentCell.swift */, A1C3270D1DB907D900CE2ED5 /* TextFormatter.swift */, + A17C04831DC6504E00F66EDB /* LogHandler.swift */, A1EB05891D956890008659C1 /* ContactCell.xib */, A1EB058B1D9568AB008659C1 /* FrequentCell.xib */, ); @@ -561,10 +567,12 @@ A1EB059C1D956957008659C1 /* NSDateCompare.swift in Sources */, A1EB05941D956931008659C1 /* InboxCellDelegator.swift in Sources */, A1EB05821D95685B008659C1 /* CollectionDataDelegate.swift in Sources */, + A17C04841DC6504E00F66EDB /* LogHandler.swift in Sources */, A1EB05801D956851008659C1 /* SendViewController.swift in Sources */, A1EB05981D956947008659C1 /* InboxViewController.swift in Sources */, A1EB059A1D95694E008659C1 /* FillInbox.swift in Sources */, A1EB057E1D956848008659C1 /* VENDataDelegate.swift in Sources */, + A1E81B671DCA296200535F98 /* UIViewResolver.swift in Sources */, A1EB057A1D956829008659C1 /* ContactCell.swift in Sources */, F12060801DA540FE00F6EF37 /* RefreshControlExtension.swift in Sources */, A1EB059E1D956963008659C1 /* EnzevalosContact.swift in Sources */, diff --git a/enzevalos_iphone/Base.lproj/Main.storyboard b/enzevalos_iphone/Base.lproj/Main.storyboard index 481f21841259d0f910fcfc2c87dc5eff260a1d32..df14680771b0e6462a3667c89d037f2d7e4cd073 100644 --- a/enzevalos_iphone/Base.lproj/Main.storyboard +++ b/enzevalos_iphone/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1004" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Amm-QN-vA7"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1108" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Amm-QN-vA7"> <dependencies> <deployment identifier="iOS"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/> @@ -463,18 +463,27 @@ <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/> </collectionViewFlowLayout> <cells/> + <connections> + <outletCollection property="gestureRecognizers" destination="b27-VB-voz" appends="YES" id="XZE-Dy-asu"/> + </connections> </collectionView> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="L5B-h5-HOl"> <color key="backgroundColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> <constraint firstAttribute="height" constant="1" id="veB-dJ-Aq3"/> </constraints> + <connections> + <outletCollection property="gestureRecognizers" destination="nNs-nd-j1C" appends="YES" id="aPz-In-MVP"/> + </connections> </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HOW-9b-T8z" customClass="VENTokenField"> <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> <constraint firstAttribute="height" constant="44" identifier="tokenFieldHeight" id="gjA-gA-kgR"/> </constraints> + <connections> + <outletCollection property="gestureRecognizers" destination="rts-b0-KoE" appends="YES" id="uDk-bp-RfX"/> + </connections> </view> <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsVerticalScrollIndicator="NO" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="w9d-ml-jRA"> <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> @@ -488,28 +497,40 @@ <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/> </collectionViewFlowLayout> <cells/> + <connections> + <outletCollection property="gestureRecognizers" destination="7ir-1V-kSk" appends="YES" id="l5Z-Xj-HlA"/> + </connections> </collectionView> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gUv-Jf-9DD"> <color key="backgroundColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> <constraint firstAttribute="height" constant="1" id="ojt-b3-hEs"/> </constraints> + <connections> + <outletCollection property="gestureRecognizers" destination="Mrn-Zn-b3E" appends="YES" id="XgT-ow-a88"/> + </connections> </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zbn-j5-Dz7" customClass="VENTokenField"> <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> <constraint firstAttribute="height" constant="44" id="Ija-JO-UZ4"/> </constraints> + <connections> + <outletCollection property="gestureRecognizers" destination="LHc-53-Rjd" appends="YES" id="KNa-J3-ITp"/> + </connections> </view> <view contentMode="scaleAspectFill" translatesAutoresizingMaskIntoConstraints="NO" id="vj8-uM-8eP"> <color key="backgroundColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> <constraint firstAttribute="height" constant="1" id="ejd-X4-e7O"/> </constraints> + <connections> + <outletCollection property="gestureRecognizers" destination="QzT-UB-ohJ" appends="YES" id="y0t-Ge-Ti7"/> + </connections> </view> <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFit" bounces="NO" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" keyboardDismissMode="interactive" usesAttributedText="YES" translatesAutoresizingMaskIntoConstraints="NO" id="quA-hP-Xkp"> <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> - <accessibility key="accessibilityConfiguration" label="test"> + <accessibility key="accessibilityConfiguration" identifier="send_textview" label="test"> <accessibilityTraits key="traits" adjustable="YES"/> </accessibility> <constraints> @@ -524,13 +545,20 @@ </fragment> </attributedString> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> + <connections> + <outletCollection property="gestureRecognizers" destination="5Nw-fP-Sop" appends="YES" id="MoD-Bq-Hcq"/> + </connections> </textView> <view contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zgt-Nh-yna" customClass="VENTokenField"> <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <accessibility key="accessibilityConfiguration" identifier="send_toText"/> <rect key="contentStretch" x="0.0" y="0.0" width="0.0" height="0.0"/> <constraints> <constraint firstAttribute="height" constant="44" identifier="tokenFieldHeight" id="CIk-PS-cBx"/> </constraints> + <connections> + <outletCollection property="gestureRecognizers" destination="uWH-WG-0hT" appends="YES" id="XzP-g3-Y8F"/> + </connections> </view> </subviews> <constraints> @@ -553,6 +581,9 @@ <constraint firstAttribute="height" constant="100" id="fcx-4L-TLn"/> </constraints> <sections/> + <connections> + <outletCollection property="gestureRecognizers" destination="4sw-b8-JJf" appends="YES" id="dYM-pN-Zf5"/> + </connections> </tableView> </subviews> <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> @@ -632,9 +663,64 @@ </connections> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="Lv5-U9-uUg" userLabel="First Responder" sceneMemberID="firstResponder"/> - <tapGestureRecognizer id="6eR-9b-HYR"> + <tapGestureRecognizer cancelsTouchesInView="NO" id="uWH-WG-0hT" userLabel="toText Tap Gesture Recognizer"> + <connections> + <action selector="tapped:" destination="4Ey-v4-VeB" id="Or8-ff-LLE"/> + <outlet property="delegate" destination="4Ey-v4-VeB" id="XsS-3t-Yi1"/> + </connections> + </tapGestureRecognizer> + <tapGestureRecognizer cancelsTouchesInView="NO" id="b27-VB-voz" userLabel="toCollectionview Tap Gesture Recognizer"> + <connections> + <action selector="tapped:" destination="4Ey-v4-VeB" id="kPe-9S-TOh"/> + <outlet property="delegate" destination="4Ey-v4-VeB" id="QVe-4k-TSH"/> + </connections> + </tapGestureRecognizer> + <tapGestureRecognizer cancelsTouchesInView="NO" id="nNs-nd-j1C" userLabel="seperator1 Tap Gesture Recognizer"> + <connections> + <action selector="tapped:" destination="4Ey-v4-VeB" id="j6N-Kq-gRi"/> + <outlet property="delegate" destination="4Ey-v4-VeB" id="0sU-Ag-o2B"/> + </connections> + </tapGestureRecognizer> + <tapGestureRecognizer cancelsTouchesInView="NO" id="rts-b0-KoE" userLabel="ccText Tap Gesture Recognizer"> + <connections> + <action selector="tapped:" destination="4Ey-v4-VeB" id="QxX-yw-Icz"/> + <outlet property="delegate" destination="4Ey-v4-VeB" id="rd6-Af-9dV"/> + </connections> + </tapGestureRecognizer> + <tapGestureRecognizer cancelsTouchesInView="NO" id="7ir-1V-kSk" userLabel="ccCollectionview Tap Gesture Recognizer"> + <connections> + <action selector="tapped:" destination="4Ey-v4-VeB" id="FJi-Ty-Ji9"/> + <outlet property="delegate" destination="4Ey-v4-VeB" id="9b6-pw-xaT"/> + </connections> + </tapGestureRecognizer> + <tapGestureRecognizer cancelsTouchesInView="NO" id="Mrn-Zn-b3E" userLabel="seperator2 Tap Gesture Recognizer"> + <connections> + <action selector="tapped:" destination="4Ey-v4-VeB" id="xzL-uL-7Rv"/> + <outlet property="delegate" destination="4Ey-v4-VeB" id="ofL-bx-K8K"/> + </connections> + </tapGestureRecognizer> + <tapGestureRecognizer cancelsTouchesInView="NO" id="LHc-53-Rjd" userLabel="subjectText Tap Gesture Recognizer"> + <connections> + <action selector="tapped:" destination="4Ey-v4-VeB" id="I3d-dI-edH"/> + <outlet property="delegate" destination="4Ey-v4-VeB" id="aFV-WX-04N"/> + </connections> + </tapGestureRecognizer> + <tapGestureRecognizer cancelsTouchesInView="NO" id="QzT-UB-ohJ" userLabel="seperator3 Tap Gesture Recognizer"> + <connections> + <action selector="tapped:" destination="4Ey-v4-VeB" id="7kd-1z-gva"/> + <outlet property="delegate" destination="4Ey-v4-VeB" id="JU1-Zt-iBr"/> + </connections> + </tapGestureRecognizer> + <tapGestureRecognizer cancelsTouchesInView="NO" id="5Nw-fP-Sop" userLabel="textview Tap Gesture Recognizer"> + <connections> + <action selector="tapped:" destination="4Ey-v4-VeB" id="FGa-LE-p9S"/> + <outlet property="delegate" destination="4Ey-v4-VeB" id="dCt-BE-yT4"/> + </connections> + </tapGestureRecognizer> + <tapGestureRecognizer cancelsTouchesInView="NO" id="4sw-b8-JJf" userLabel="tableview Tap Gesture Recognizer"> <connections> - <action selector="textTapped:" destination="4Ey-v4-VeB" id="LUb-GS-msq"/> + <action selector="tapped:" destination="4Ey-v4-VeB" id="cuh-kH-UvI"/> + <outlet property="delegate" destination="4Ey-v4-VeB" id="3jq-wi-4U0"/> </connections> </tapGestureRecognizer> </objects> @@ -643,6 +729,6 @@ </scenes> <inferredMetricsTieBreakers> <segue reference="GWh-iO-bPb"/> - <segue reference="Yft-MI-Wtf"/> + <segue reference="j4Q-k1-ud3"/> </inferredMetricsTieBreakers> </document> diff --git a/enzevalos_iphone/ContactCell.swift b/enzevalos_iphone/ContactCell.swift index 97ac0048189902922e4cbef8004141ad99e4b2ed..ed95f7d7498dc4926146562d6803574ed7ebcbdc 100644 --- a/enzevalos_iphone/ContactCell.swift +++ b/enzevalos_iphone/ContactCell.swift @@ -24,4 +24,4 @@ class ContactCell : UITableViewCell { super.init(coder: aDecoder) }*/ -} \ No newline at end of file +} diff --git a/enzevalos_iphone/ContactCell.xib b/enzevalos_iphone/ContactCell.xib index d86d768f5d51b9266df614a98059a2bc594e0b79..31b1ee2c433caa55eb258f5b584a983e515733cf 100644 --- a/enzevalos_iphone/ContactCell.xib +++ b/enzevalos_iphone/ContactCell.xib @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1004" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1108" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> <dependencies> <deployment identifier="iOS"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/> @@ -38,6 +38,7 @@ <constraint firstAttribute="bottomMargin" secondItem="63D-rq-tu0" secondAttribute="bottom" constant="1" id="yHC-En-yY9"/> </constraints> </tableViewCellContentView> + <gestureRecognizers/> <connections> <outlet property="address" destination="63D-rq-tu0" id="Zna-eA-HWh"/> <outlet property="img" destination="PhZ-Xe-rcO" id="pAL-Xa-0ZL"/> diff --git a/enzevalos_iphone/LogHandler.swift b/enzevalos_iphone/LogHandler.swift new file mode 100644 index 0000000000000000000000000000000000000000..98ae83941267bc23b200773279d7826241edc48c --- /dev/null +++ b/enzevalos_iphone/LogHandler.swift @@ -0,0 +1,144 @@ +// +// LogHandler.swift +// enzevalos_iphone +// +// Created by jakobsbode on 30.10.16. +// Copyright © 2016 fu-berlin. All rights reserved. +// + +import Foundation +import UIKit + +class LogHandler { + + private static var defaults = NSUserDefaults.init() + private(set) static var logging = false + private static var date = NSDate.init() + static var session : Int = 0 + + static func newLog(){ + logging = true + session = defaults.integerForKey("Session") + if session == 0{ + session = 1 + } + else { + session += 1 + } + defaults.setInteger(session, forKey: "Session") + defaults.setInteger(0, forKey: String(session)+"-index") + defaults.setObject("time,caller,interaction,point,comment"/*"time,caller,interaction,point,debugDescription,comment"*/, forKey: String(session)+"-0") + date = NSDate.init() + defaults.setObject(date.description, forKey: String(session)+"-date") + print("Logging Session: ",session) + print(date.description) + } + + static func stopLogging(){ + logging = false + } + + //TODO: escaping in comment and debugDescription + static func doLog(caller: String?, interaction: String, point: CGPoint, /*debugDescription: String,*/ comment : String){ + var entry = "" + let now = NSDate.init() + //Zeit holen + entry.appendContentsOf(String(now.timeIntervalSinceDate(date))) + entry.appendContentsOf(",") + //caller identifizieren + if caller != nil{ + entry.appendContentsOf(caller!) + } + entry.appendContentsOf(",") + //interaction bestimmen + entry.appendContentsOf(interaction) + entry.appendContentsOf(",") + //Punkt anbinden + entry.appendContentsOf(String(point)) + entry.appendContentsOf(",") + //debugDescription anhängen + //entry.appendContentsOf(debugDescription) + //entry.appendContentsOf(",") + //text anbinden + entry.appendContentsOf(comment) + //in nsuserdefaults speichern + var index = defaults.integerForKey(String(session)+"-index") + index += 1 + defaults.setInteger(index, forKey: String(session)+"-index") + defaults.setObject(entry, forKey: String(session)+"-"+String(index)) + } + + //methode zum auslesen eines logs + static func printLog(session : Int){ + print() + print("--------------------LOG OUTPUT--------------------") + print("LoggingSession ",session) + print(defaults.objectForKey(String(session)+"-date")) + print() + for var i in 0 ..< defaults.integerForKey(String(session)+"-index")+1{ + if let entry = defaults.objectForKey(String(session)+"-"+String(i)) { + print(String(entry)) + } + else { + print(",,,,")//print(",,,,,") + } + } + print() + print("--------------------------------------------------") + print() + print() + } + + static func printLogs(){ + for var i in 1 ..< defaults.integerForKey("Session")+1 { + printLog(i) + } + } + + static func getLog(session : Int) -> String{ + var log = "\n--------------------LOG OUTPUT--------------------\nLoggingSession "+String(session)+"\n"+String(defaults.objectForKey(String(session)+"-date"))+"\n\n" + + for var i in 0 ..< defaults.integerForKey(String(session)+"-index")+1{ + if let entry = defaults.objectForKey(String(session)+"-"+String(i)) { + log.appendContentsOf(String(entry)+"\n") + } + else { + log.appendContentsOf(",,,,\n")//log.appendContentsOf(",,,,,\n") + } + } + log.appendContentsOf("\n--------------------------------------------------\n\n") + + return log + } + + static func getLogs() -> String { + var logs = "" + for var i in 1 ..< defaults.integerForKey("Session")+1 { + logs.appendContentsOf(getLog(i)) + } + return logs + } + + //methode zum löschen bestimmter logs + static func deleteLog(session: Int){ + if logging{ + print("not deleting anything, active logging at the moment") + return + } + for var i in 0 ..< defaults.integerForKey(String(session)+"-index")+1{ + defaults.removeObjectForKey(String(session)+"-"+String(i)) + } + defaults.removeObjectForKey(String(session)+"-index") + } + + static func deleteLogs(){ + if logging{ + print("not deleting anything, active logging at the moment") + return + } + for var i in 1 ..< defaults.integerForKey("Session")+1 { + deleteLog(i) + } + defaults.setInteger(0, forKey: "Session") + } +} diff --git a/enzevalos_iphone/MailHandler.swift b/enzevalos_iphone/MailHandler.swift index 04d0b79f56c6e8085744c9eb140d1e1011b0d360..78a489e8edce3bb067fccb1b636964bfef34e156 100644 --- a/enzevalos_iphone/MailHandler.swift +++ b/enzevalos_iphone/MailHandler.swift @@ -141,8 +141,40 @@ class MailHandler { cc.append(r as! MCOAddress) } } + /*Jakob prototypeänderung anfang*/ + /*ursprünglicher Code : + let mail = Mail(uid: message.uid, sender: header.from, receivers: rec, cc: cc, time: header.date, received: true, subject: header.subject, body: body, isEncrypted: false, isVerified: false, trouble: false, isUnread: !messageRead, flags: message.flags) - + + */ + var enc = false + var ver = false + var troub = false + if header.subject != nil { + if header.subject == "Schlüssel" { + enc = true + } + if header.subject == "Re: Prüfung"{ + enc = true + troub = true + } + if header.subject == "Test4" { + ver = true + enc = true + } + if header.subject == "Multiple"{ + enc = true + } + if header.subject == "Noch ein Test"{ + enc = true + ver = true + } + if header.subject == "jetzt du"{ + enc = true + } + } + let mail = Mail(uid: message.uid, sender: header.from, receivers: rec, cc: cc, time: header.date, received: true, subject: header.subject, body: body, isEncrypted: enc, isVerified: ver, trouble: troub, isUnread: !messageRead, flags: message.flags) + /*Jakob prototypeänderung Ende*/ self.delegate?.addNewMail(mail) dispatch_group_leave(dispatchGroup) diff --git a/enzevalos_iphone/SendViewController.swift b/enzevalos_iphone/SendViewController.swift index 952c9d96456db5cbc8a1860c6d9cef1131911aa5..6a8ccd594403fc699d162b8d42c6e60b876a6de7 100644 --- a/enzevalos_iphone/SendViewController.swift +++ b/enzevalos_iphone/SendViewController.swift @@ -10,7 +10,7 @@ import UIKit import VENTokenField import Contacts -class SendViewController: UIViewController, UITextViewDelegate{ +class SendViewController: UIViewController, UITextViewDelegate, UIGestureRecognizerDelegate, VENTokenFieldDelegate{ var imageView: UIImageView = UIImageView(frame: CGRect(x: 0, y: 5, width: 200, height: 45)) @IBOutlet weak var button: UIBarButtonItem! @@ -47,6 +47,7 @@ class SendViewController: UIViewController, UITextViewDelegate{ var mailHandler = MailHandler() var tableDataDelegate = TableViewDataDelegate(insertCallback: {(name : String, address : String) -> Void in return}) var collectionDataDelegate = CollectionDataDelegate(suggestionFunc: AddressHandler.frequentAddresses, insertCallback: {(name : String, address : String) -> Void in return}) + var recognizer : UIGestureRecognizer = UIGestureRecognizer.init() var answerTo: Mail? = nil @@ -59,6 +60,8 @@ class SendViewController: UIViewController, UITextViewDelegate{ imageView.image = UIImage(named: "Icon_animated001-001_alpha_verschoben-90")! setAnimation(false) self.navigationItem.titleView = imageView + //recognizer = UIGestureRecognizer(target: self, action: #selector(self.tapped(_:))) + //self.view.addGestureRecognizer(recognizer) imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.iconButton(_:)))) imageView.userInteractionEnabled = true @@ -84,6 +87,8 @@ class SendViewController: UIViewController, UITextViewDelegate{ ccCollectionview.registerNib(UINib(nibName: "FrequentCell", bundle: nil), forCellWithReuseIdentifier: "frequent") ccCollectionviewHeight.constant = 0 + subjectText.delegate = self + //will always be thrown, when a token was editied toText.addTarget(self, action: #selector(self.newInput(_:)), forControlEvents: UIControlEvents.EditingDidEnd) ccText.addTarget(self, action: #selector(self.newInput(_:)), forControlEvents: UIControlEvents.EditingDidEnd) @@ -92,7 +97,9 @@ class SendViewController: UIViewController, UITextViewDelegate{ if answerTo != nil { toText.delegate?.tokenField!(toText, didEnterText: (answerTo?.sender?.mailbox!)!) for r in (answerTo?.receivers)!{ - ccText.delegate?.tokenField!(ccText, didEnterText: r.mailbox!) + if r.mailbox! != mailHandler.useraddr{ + ccText.delegate?.tokenField!(ccText, didEnterText: r.mailbox!) + } } subjectText.setText(NSLocalizedString("Re", comment: "prefix for subjects of answered mails")+": "+(answerTo?.subject!)!) textView.text = NSLocalizedString("mail from", comment: "describing who send the mail")+" " @@ -130,6 +137,24 @@ class SendViewController: UIViewController, UITextViewDelegate{ //register KeyBoardevents NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyboardOpen(_:)), name:UIKeyboardWillShowNotification, object: nil); NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyboardClose(_:)), name:UIKeyboardWillHideNotification, object: nil); + + toText.tag = UIViewResolver.toText.rawValue + ccText.tag = UIViewResolver.ccText.rawValue + textView.tag = UIViewResolver.textView.rawValue + imageView.tag = UIViewResolver.imageView.rawValue + tableview.tag = UIViewResolver.tableview.rawValue + toCollectionview.tag = UIViewResolver.toCollectionview.rawValue + ccCollectionview.tag = UIViewResolver.ccCollectionview.rawValue + subjectText.tag = UIViewResolver.subjectText.rawValue + scrollview.tag = UIViewResolver.scrollview.rawValue + + + //LogHandler.printLogs() + //LogHandler.deleteLogs() + LogHandler.newLog() + //LogHandler.printLogs() + + //LogHandler.printLogs() } override func viewDidAppear(animated: Bool){ @@ -141,6 +166,34 @@ class SendViewController: UIViewController, UITextViewDelegate{ // Dispose of any resources that can be recreated. } + func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { + return true + } + + @IBAction func tapped(sender: UITapGestureRecognizer) { + //print(sender.description) + //print(String(sender.view?.valueForKey("UILoggingName"))) + if LogHandler.logging { + LogHandler.doLog(UIViewResolver.resolve((sender.view?.tag)!), interaction: "tap", point: sender.locationOfTouch(sender.numberOfTouches()-1, inView: self.view), /*debugDescription: sender.view.debugDescription,*/ comment: "") + } + + } + + func tokenField(tokenField: VENTokenField, didChangeText text: String?) { + if text == "log"{ + LogHandler.stopLogging() + textView.text = LogHandler.getLogs() + LogHandler.deleteLogs() + LogHandler.newLog() + } + } + + func tokenFieldDidEndEditing(tokenField: VENTokenField) {} + + /*func tapped(sender: AnyObject){ + print("anything") + }*/ + func editName(tokenField : VENTokenField){ if let inText = tokenField.inputText(){ if inText != "" { @@ -303,6 +356,11 @@ class SendViewController: UIViewController, UITextViewDelegate{ } func iconButton(sender: AnyObject) { + //print(sender.absoluteString) + //print(recognizer.locationOfTouch(recognizer.numberOfTouches()-1, inView: imageView)) + /*for var i in 1 ..< recognizer.numberOfTouches(){ + print(recognizer.locationOfTouch(i, inView: self.view)) + }*/ let m = self.secureState let alert: UIAlertController let url: String diff --git a/enzevalos_iphone/UIViewResolver.swift b/enzevalos_iphone/UIViewResolver.swift new file mode 100644 index 0000000000000000000000000000000000000000..01b8f9f961a4737c8cd193ac1e61c15cad93e464 --- /dev/null +++ b/enzevalos_iphone/UIViewResolver.swift @@ -0,0 +1,21 @@ +// +// UIViewResolver.swift +// enzevalos_iphone +// +// Created by jakobsbode on 02.11.16. +// Copyright © 2016 fu-berlin. All rights reserved. +// + +import UIKit + +enum UIViewResolver : Int { + case unknown=0, cancel, imageView, send, toText, toCollectionview, ccText, ccCollectionview, subjectText, textView, tableview, scrollview + + public static func resolve(tag : Int) -> String{ + if let ui = UIViewResolver(rawValue: tag) { + return String(ui) + } + return "" + } +} + diff --git a/enzevalos_iphone/de.lproj/Localizable.strings b/enzevalos_iphone/de.lproj/Localizable.strings index 796f24b5a35704b317a1272f0a46bb70a1797a56..84821fd299e1b339b323e7ceb034c310846b7a72 100644 --- a/enzevalos_iphone/de.lproj/Localizable.strings +++ b/enzevalos_iphone/de.lproj/Localizable.strings @@ -57,5 +57,6 @@ "to" = "an"; "Trash" = "Papierkorb"; "TwoDaysAgo" = "Vorgestern"; +"write" = "verfassen"; "Yesterday" = "Gestern"; diff --git a/enzevalos_iphone/de.lproj/Main.strings b/enzevalos_iphone/de.lproj/Main.strings index 4e2eed4e976a13e7d162c766e4fdd163b3087244..57ea4c6265acfd406845e613e2b0314502f4781b 100644 --- a/enzevalos_iphone/de.lproj/Main.strings +++ b/enzevalos_iphone/de.lproj/Main.strings @@ -67,3 +67,6 @@ /* Class = "UIBarButtonItem"; title = "Archivieren"; ObjectID = "tGx-Pm-eAc"; */ "tGx-Pm-eAc.title" = "Archivieren"; + +/* Class = "UIBarButtonItem"; title = "write"; ObjectID = "j5W-eH-o1q"; */ +"write" = "verfassen"; diff --git a/enzevalos_iphone/en.lproj/Localizable.strings b/enzevalos_iphone/en.lproj/Localizable.strings index 239198d79ec823048064dba60ea7105d182b0902..9eab39530574bb7bd7da86ca157ec4e0a3f96aae 100644 --- a/enzevalos_iphone/en.lproj/Localizable.strings +++ b/enzevalos_iphone/en.lproj/Localizable.strings @@ -57,4 +57,5 @@ "to" = "to"; "Trash" = "Trash"; "TwoDaysAgo" = "2 days ago"; +"write" = "write"; "Yesterday" = "yesterday"; diff --git a/enzevalos_iphone/en.lproj/Main.strings b/enzevalos_iphone/en.lproj/Main.strings index 89d65229785e3b1029dfc1de2b8b59259169369f..2560ea51f51a784b735392ef1bf46956f66cf24a 100644 --- a/enzevalos_iphone/en.lproj/Main.strings +++ b/enzevalos_iphone/en.lproj/Main.strings @@ -67,3 +67,6 @@ /* Class = "UIBarButtonItem"; title = "Archive"; ObjectID = "tGx-Pm-eAc"; */ "tGx-Pm-eAc.title" = "Archive"; + +/* Class = "UIBarButtonItem"; title = "write"; ObjectID = "j5W-eH-o1q"; */ +"write" = "verfassen";