diff --git a/Digital Textbook.xcodeproj/project.pbxproj b/Digital Textbook.xcodeproj/project.pbxproj new file mode 100755 index 0000000..2755278 --- /dev/null +++ b/Digital Textbook.xcodeproj/project.pbxproj @@ -0,0 +1,2452 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 314B7E6316C2D9BF0061F0BF /* EBookImporter.m in Sources */ = {isa = PBXBuildFile; fileRef = 314B7E6216C2D9BF0061F0BF /* EBookImporter.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 315F0AE416CC186C00300B19 /* bookshelf_vertical.png in Resources */ = {isa = PBXBuildFile; fileRef = 315F0AE116CC186C00300B19 /* bookshelf_vertical.png */; }; + 315F0AE516CC186C00300B19 /* bookshelf_horizontal.png in Resources */ = {isa = PBXBuildFile; fileRef = 315F0AE216CC186C00300B19 /* bookshelf_horizontal.png */; }; + 3166DB5416B0A5300089C0F2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3166DB5316B0A5300089C0F2 /* UIKit.framework */; }; + 3166DB5616B0A5300089C0F2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3166DB5516B0A5300089C0F2 /* Foundation.framework */; }; + 3166DB5816B0A5300089C0F2 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3166DB5716B0A5300089C0F2 /* CoreGraphics.framework */; }; + 3166DB5E16B0A5300089C0F2 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3166DB5C16B0A5300089C0F2 /* InfoPlist.strings */; }; + 3166DB6016B0A5300089C0F2 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3166DB5F16B0A5300089C0F2 /* main.m */; }; + 3166DB6416B0A5300089C0F2 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3166DB6316B0A5300089C0F2 /* AppDelegate.m */; }; + 3166DB6616B0A5300089C0F2 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 3166DB6516B0A5300089C0F2 /* Default.png */; }; + 3166DB6816B0A5300089C0F2 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3166DB6716B0A5300089C0F2 /* Default@2x.png */; }; + 3166DB6A16B0A5300089C0F2 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3166DB6916B0A5300089C0F2 /* Default-568h@2x.png */; }; + 3166DB7016B0A5300089C0F2 /* LibraryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3166DB6F16B0A5300089C0F2 /* LibraryViewController.m */; }; + 3166DB7616B0A5300089C0F2 /* MainStoryboard_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3166DB7416B0A5300089C0F2 /* MainStoryboard_iPhone.storyboard */; }; + 3166DB7916B0A5300089C0F2 /* MainStoryboard_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3166DB7716B0A5300089C0F2 /* MainStoryboard_iPad.storyboard */; }; + 3166DB8216B0A5300089C0F2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3166DB5316B0A5300089C0F2 /* UIKit.framework */; }; + 3166DB8316B0A5300089C0F2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3166DB5516B0A5300089C0F2 /* Foundation.framework */; }; + 31A8258E16C2E7E000F18C1D /* Book.m in Sources */ = {isa = PBXBuildFile; fileRef = 31A8258D16C2E7E000F18C1D /* Book.m */; }; + 31A90BBD16C9B23B003E13E0 /* BookCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 31A90BBC16C9B23B003E13E0 /* BookCell.m */; }; + 31A90BBF16C9C07F003E13E0 /* BookCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 31A90BBE16C9C07F003E13E0 /* BookCell.xib */; }; + 31B9150D16CB053B0040E8A2 /* BookViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 31B9150C16CB053B0040E8A2 /* BookViewController.m */; }; + 31DA906C16C32DCC000DA6A3 /* GDataXMLNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 31DA906B16C32DCC000DA6A3 /* GDataXMLNode.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 31F0CE2616C59BEA00E5CAC5 /* ZipArchive.mm in Sources */ = {isa = PBXBuildFile; fileRef = 31F0CE2516C59BEA00E5CAC5 /* ZipArchive.mm */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 31F0CE3316C59DEC00E5CAC5 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 31F0CE2B16C59DEC00E5CAC5 /* ioapi.c */; }; + 31F0CE3416C59DEC00E5CAC5 /* mztools.c in Sources */ = {isa = PBXBuildFile; fileRef = 31F0CE2D16C59DEC00E5CAC5 /* mztools.c */; }; + 31F0CE3516C59DEC00E5CAC5 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 31F0CE2F16C59DEC00E5CAC5 /* unzip.c */; }; + 31F0CE3616C59DEC00E5CAC5 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 31F0CE3116C59DEC00E5CAC5 /* zip.c */; }; + 3E4976BCB03DEADAA62C1D07 /* libPods-TurkStudyTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D89A401C8A81D714D393495 /* libPods-TurkStudyTests.a */; }; + 5604454817176734002368D7 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5604454717176734002368D7 /* libz.dylib */; }; + 5606C8B41BA797B0002F33D5 /* LogData.xml in Resources */ = {isa = PBXBuildFile; fileRef = 5606C8B31BA797B0002F33D5 /* LogData.xml */; }; + 560B2F4918EBD6C3009B8CB7 /* dialCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 560B2F4518EBD6C3009B8CB7 /* dialCell.xib */; }; + 560B2F4A18EBD6C3009B8CB7 /* dialCell2.xib in Resources */ = {isa = PBXBuildFile; fileRef = 560B2F4618EBD6C3009B8CB7 /* dialCell2.xib */; }; + 560B2F4B18EBD6C3009B8CB7 /* players.json in Resources */ = {isa = PBXBuildFile; fileRef = 560B2F4718EBD6C3009B8CB7 /* players.json */; }; + 560B2F5218EBD8B5009B8CB7 /* AWCollectionViewDialLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 560B2F5118EBD8B5009B8CB7 /* AWCollectionViewDialLayout.m */; }; + 560B2F6518EBE051009B8CB7 /* awcollectionviewdiallayout_1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 560B2F5C18EBE051009B8CB7 /* awcollectionviewdiallayout_1.jpg */; }; + 560B2F6618EBE051009B8CB7 /* awcollectionviewdiallayout_2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 560B2F5D18EBE051009B8CB7 /* awcollectionviewdiallayout_2.jpg */; }; + 560B2F6718EBE051009B8CB7 /* carmelo_anthony.png in Resources */ = {isa = PBXBuildFile; fileRef = 560B2F5E18EBE051009B8CB7 /* carmelo_anthony.png */; }; + 560B2F6818EBE051009B8CB7 /* dwayne_wade.png in Resources */ = {isa = PBXBuildFile; fileRef = 560B2F5F18EBE051009B8CB7 /* dwayne_wade.png */; }; + 560B2F6918EBE051009B8CB7 /* james_harden.png in Resources */ = {isa = PBXBuildFile; fileRef = 560B2F6018EBE051009B8CB7 /* james_harden.png */; }; + 560B2F6A18EBE051009B8CB7 /* kevin_durant.png in Resources */ = {isa = PBXBuildFile; fileRef = 560B2F6118EBE051009B8CB7 /* kevin_durant.png */; }; + 560B2F6B18EBE051009B8CB7 /* kyrie_irving.png in Resources */ = {isa = PBXBuildFile; fileRef = 560B2F6218EBE051009B8CB7 /* kyrie_irving.png */; }; + 560B2F6C18EBE051009B8CB7 /* lebron_james.png in Resources */ = {isa = PBXBuildFile; fileRef = 560B2F6318EBE051009B8CB7 /* lebron_james.png */; }; + 560B2F6D18EBE051009B8CB7 /* paul_george.png in Resources */ = {isa = PBXBuildFile; fileRef = 560B2F6418EBE051009B8CB7 /* paul_george.png */; }; + 560B2F7318ECC542009B8CB7 /* ConceptIconViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 560B2F7118ECC542009B8CB7 /* ConceptIconViewController.m */; }; + 560B2F7418ECC542009B8CB7 /* ConceptIconViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 560B2F7218ECC542009B8CB7 /* ConceptIconViewController.xib */; }; + 560B2F7718EDFE4D009B8CB7 /* ShangTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 560B2F7618EDFE4D009B8CB7 /* ShangTextField.m */; }; + 560D0BD319C9021F006B11E4 /* MapFinderViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 560D0BD119C9021F006B11E4 /* MapFinderViewController.m */; }; + 560D0BD419C9021F006B11E4 /* MapFinderViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 560D0BD219C9021F006B11E4 /* MapFinderViewController.xib */; }; + 5615BAEA171A02F30002B275 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5615BAE9171A02F30002B275 /* AudioToolbox.framework */; }; + 5615BAEC171A031C0002B275 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5615BAEB171A031C0002B275 /* CFNetwork.framework */; }; + 5615BAEE171A032B0002B275 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5615BAED171A032B0002B275 /* SystemConfiguration.framework */; }; + 5616F844178D46BC009E0FC6 /* HighlightContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5616F843178D46BC009E0FC6 /* HighlightContent.m */; }; + 5619B28517963287001E5BA0 /* LogFileController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5619B28417963287001E5BA0 /* LogFileController.m */; }; + 561BCBFA1B09CD8900F553D4 /* QAViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 561BCBF81B09CD8900F553D4 /* QAViewController.m */; }; + 561BCBFB1B09CD8900F553D4 /* QAViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 561BCBF91B09CD8900F553D4 /* QAViewController.xib */; }; + 561C0D5618C52ABD00B223D3 /* deleteConcept.png in Resources */ = {isa = PBXBuildFile; fileRef = 561C0D5518C52ABD00B223D3 /* deleteConcept.png */; }; + 561C0D5818C52B7900B223D3 /* edit.png in Resources */ = {isa = PBXBuildFile; fileRef = 561C0D5718C52B7900B223D3 /* edit.png */; }; + 561CDA401C7398E700FD23B7 /* doc.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 561CDA3F1C7398E700FD23B7 /* doc.pdf */; }; + 561D1AFC1C86894100D3AF47 /* CmapIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 561D1AFB1C86894100D3AF47 /* CmapIcon.png */; }; + 5623148016F9027C00B40047 /* ContentViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5623147E16F9027C00B40047 /* ContentViewController.m */; }; + 5623148116F9027C00B40047 /* ContentViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5623147F16F9027C00B40047 /* ContentViewController.xib */; }; + 562484381CA5E2EA000C9115 /* orangeRec.png in Resources */ = {isa = PBXBuildFile; fileRef = 562484371CA5E2EA000C9115 /* orangeRec.png */; }; + 5624843C1CA88A5E000C9115 /* NonHyperLink in Resources */ = {isa = PBXBuildFile; fileRef = 5624843B1CA88A5E000C9115 /* NonHyperLink */; }; + 5624843E1CA894CD000C9115 /* finishTraining.png in Resources */ = {isa = PBXBuildFile; fileRef = 5624843D1CA894CD000C9115 /* finishTraining.png */; }; + 562DD69B1C04DD0900D65FDE /* addIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 562DD69A1C04DD0900D65FDE /* addIcon.png */; }; + 563B50FE1919F6CC00FA0F34 /* CmapNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 563B50FD1919F6CC00FA0F34 /* CmapNode.m */; }; + 563B51011919F99900FA0F34 /* CmapNodeWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 563B51001919F99900FA0F34 /* CmapNodeWrapper.m */; }; + 563B51041919FA7A00FA0F34 /* CmapNodeParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 563B51031919FA7A00FA0F34 /* CmapNodeParser.m */; }; + 563B63AC1C237E0E00D09D3F /* TeachRotate.png in Resources */ = {isa = PBXBuildFile; fileRef = 563B63AB1C237E0E00D09D3F /* TeachRotate.png */; }; + 564061491CA306AE00C87504 /* Train_AddNode.png in Resources */ = {isa = PBXBuildFile; fileRef = 564061481CA306AE00C87504 /* Train_AddNode.png */; }; + 5640614B1CA37A9900C87504 /* Train_pageflip.png in Resources */ = {isa = PBXBuildFile; fileRef = 5640614A1CA37A9900C87504 /* Train_pageflip.png */; }; + 5640614D1CA37BC500C87504 /* Train_correct.png in Resources */ = {isa = PBXBuildFile; fileRef = 5640614C1CA37BC500C87504 /* Train_correct.png */; }; + 5640614F1CA37CE600C87504 /* Train_pinch.png in Resources */ = {isa = PBXBuildFile; fileRef = 5640614E1CA37CE600C87504 /* Train_pinch.png */; }; + 564061511CA37E2200C87504 /* Train_selectRelation.png in Resources */ = {isa = PBXBuildFile; fileRef = 564061501CA37E2200C87504 /* Train_selectRelation.png */; }; + 564061531CA37EC000C87504 /* Train_HyperNavi.png in Resources */ = {isa = PBXBuildFile; fileRef = 564061521CA37EC000C87504 /* Train_HyperNavi.png */; }; + 564061551CA37FAC00C87504 /* Train_delete.png in Resources */ = {isa = PBXBuildFile; fileRef = 564061541CA37FAC00C87504 /* Train_delete.png */; }; + 564061571CA3843F00C87504 /* Train_link.png in Resources */ = {isa = PBXBuildFile; fileRef = 564061561CA3843F00C87504 /* Train_link.png */; }; + 564061591CA4CFFE00C87504 /* Tutorial in Resources */ = {isa = PBXBuildFile; fileRef = 564061581CA4CFFE00C87504 /* Tutorial */; }; + 56434C681C70691700509960 /* magnify_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 56434C671C70691700509960 /* magnify_2.png */; }; + 56434C6E1C7125B900509960 /* MyTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = 56434C6D1C7125B900509960 /* MyTouch.m */; }; + 5643887E1B204286003330F6 /* CmapBookNoteViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5643887C1B204286003330F6 /* CmapBookNoteViewController.m */; }; + 5643887F1B204286003330F6 /* CmapBookNoteViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5643887D1B204286003330F6 /* CmapBookNoteViewController.xib */; }; + 5645250A170A5D09005E2D17 /* cover_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 56452509170A5D09005E2D17 /* cover_default.png */; }; + 56465CD217B8813C00EE38FC /* controlUpBarBG.png in Resources */ = {isa = PBXBuildFile; fileRef = 56465CD117B8813C00EE38FC /* controlUpBarBG.png */; }; + 56465CD717B8AF8300EE38FC /* TabNormal_skyBlue.png in Resources */ = {isa = PBXBuildFile; fileRef = 56465CD317B8AF8200EE38FC /* TabNormal_skyBlue.png */; }; + 56465CD817B8AF8300EE38FC /* TabNormal_green.png in Resources */ = {isa = PBXBuildFile; fileRef = 56465CD417B8AF8200EE38FC /* TabNormal_green.png */; }; + 56465CD917B8AF8300EE38FC /* TabNormal_purple.png in Resources */ = {isa = PBXBuildFile; fileRef = 56465CD517B8AF8300EE38FC /* TabNormal_purple.png */; }; + 56465CDA17B8AF8300EE38FC /* TabNormal_red.png in Resources */ = {isa = PBXBuildFile; fileRef = 56465CD617B8AF8300EE38FC /* TabNormal_red.png */; }; + 5646970818B477BE00DB5E2A /* CmapController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5646970718B477BE00DB5E2A /* CmapController.m */; }; + 564725BF1AC5EC49007BA8AE /* MultipleChoiceViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 564725BD1AC5EC49007BA8AE /* MultipleChoiceViewController.m */; }; + 56473546181AF0BD00EE1640 /* AcousticModelEnglish.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 56473545181AF0BD00EE1640 /* AcousticModelEnglish.bundle */; }; + 56473548181AF0CE00EE1640 /* AcousticModelSpanish.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 56473547181AF0CE00EE1640 /* AcousticModelSpanish.bundle */; }; + 5647354A181AF1EC00EE1640 /* OpenEars.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56473549181AF1EC00EE1640 /* OpenEars.framework */; }; + 564923151C176BB9009874D4 /* MultipleChoiceViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 564923141C176BB9009874D4 /* MultipleChoiceViewController.xib */; }; + 564C424D17060E0400B320EF /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56B1BDB2170031CB0056FEE3 /* QuartzCore.framework */; }; + 564C425517064A7000B320EF /* highlight_green.png in Resources */ = {isa = PBXBuildFile; fileRef = 564C425417064A7000B320EF /* highlight_green.png */; }; + 564C425717064D7800B320EF /* highlight_yellow.png in Resources */ = {isa = PBXBuildFile; fileRef = 564C425617064D7800B320EF /* highlight_yellow.png */; }; + 564C425917064D7B00B320EF /* highlight_blue.png in Resources */ = {isa = PBXBuildFile; fileRef = 564C425817064D7B00B320EF /* highlight_blue.png */; }; + 564C425B17064D7E00B320EF /* highlight_red.png in Resources */ = {isa = PBXBuildFile; fileRef = 564C425A17064D7E00B320EF /* highlight_red.png */; }; + 564C425D17064D8300B320EF /* highlight_purple.png in Resources */ = {isa = PBXBuildFile; fileRef = 564C425C17064D8300B320EF /* highlight_purple.png */; }; + 564FCEC3174B65B300790086 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 564FCEC2174B65B300790086 /* AVFoundation.framework */; }; + 5651D62119079CFD0088E733 /* bb.png in Resources */ = {isa = PBXBuildFile; fileRef = 5651D62019079CFD0088E733 /* bb.png */; }; + 56520809170418F5003272B0 /* UIMenuItem+CXAImageSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 56520808170418F5003272B0 /* UIMenuItem+CXAImageSupport.m */; }; + 5652081017041B30003272B0 /* JavaScriptFunctions.js in Sources */ = {isa = PBXBuildFile; fileRef = 5652080F17041B30003272B0 /* JavaScriptFunctions.js */; }; + 5652081317041F86003272B0 /* JavaScriptFunctions.js in Resources */ = {isa = PBXBuildFile; fileRef = 5652080F17041B30003272B0 /* JavaScriptFunctions.js */; }; + 565561B11798DA5C00297BB8 /* HighLight.m in Sources */ = {isa = PBXBuildFile; fileRef = 565561B01798DA5C00297BB8 /* HighLight.m */; }; + 565561B41798DAB800297BB8 /* HighLightWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 565561B31798DAB800297BB8 /* HighLightWrapper.m */; }; + 565561B71798DB1500297BB8 /* HighlightParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 565561B61798DB1500297BB8 /* HighlightParser.m */; }; + 565B23A918FE3A030074E344 /* ConceptViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 565B23A718FE3A030074E344 /* ConceptViewController.m */; }; + 565B23AA18FE3A030074E344 /* ConceptViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 565B23A818FE3A030074E344 /* ConceptViewController.xib */; }; + 565B23AD18FE54430074E344 /* ConceptIconTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 565B23AC18FE54430074E344 /* ConceptIconTextField.m */; }; + 565DA3F417B32F9C000DB171 /* ThumbNailIconWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 565DA3F317B32F9C000DB171 /* ThumbNailIconWrapper.m */; }; + 565DA3F717B33705000DB171 /* ThumbNailIconParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 565DA3F617B33705000DB171 /* ThumbNailIconParser.m */; }; + 566D5FFF1AC5D1FE00492921 /* ISMultipleChoiceQuestion.m in Sources */ = {isa = PBXBuildFile; fileRef = 566D5FF11AC5D1FE00492921 /* ISMultipleChoiceQuestion.m */; }; + 566D60001AC5D1FE00492921 /* ISOpenQuestion.m in Sources */ = {isa = PBXBuildFile; fileRef = 566D5FF31AC5D1FE00492921 /* ISOpenQuestion.m */; }; + 566D60011AC5D1FE00492921 /* ISQuestion.m in Sources */ = {isa = PBXBuildFile; fileRef = 566D5FF51AC5D1FE00492921 /* ISQuestion.m */; }; + 566D60021AC5D1FE00492921 /* ISQuiz.m in Sources */ = {isa = PBXBuildFile; fileRef = 566D5FF71AC5D1FE00492921 /* ISQuiz.m */; }; + 566D60031AC5D1FE00492921 /* ISQuizParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 566D5FFA1AC5D1FE00492921 /* ISQuizParser.m */; }; + 566D60041AC5D1FE00492921 /* ISSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 566D5FFC1AC5D1FE00492921 /* ISSession.m */; }; + 566D60051AC5D1FE00492921 /* ISTrueFalseQuestion.m in Sources */ = {isa = PBXBuildFile; fileRef = 566D5FFE1AC5D1FE00492921 /* ISTrueFalseQuestion.m */; }; + 566D60131AC5D23500492921 /* QuizViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 566D60081AC5D23500492921 /* QuizViewController.m */; }; + 566D60141AC5D23500492921 /* QuizViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 566D60091AC5D23500492921 /* QuizViewController.xib */; }; + 566D60151AC5D23500492921 /* OpenQuestionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 566D600B1AC5D23500492921 /* OpenQuestionViewController.m */; }; + 566D60161AC5D23500492921 /* OpenQuestionViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 566D600C1AC5D23500492921 /* OpenQuestionViewController.xib */; }; + 566D60171AC5D23500492921 /* TrueFalseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 566D600E1AC5D23500492921 /* TrueFalseViewController.m */; }; + 566D60181AC5D23500492921 /* TrueFalseViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 566D600F1AC5D23500492921 /* TrueFalseViewController.xib */; }; + 566D601D1AC5D27700492921 /* programming.plist in Resources */ = {isa = PBXBuildFile; fileRef = 566D601C1AC5D27700492921 /* programming.plist */; }; + 566E7C661C7E5BDB00D0ACFE /* DTAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 566E7C631C7E5BDB00D0ACFE /* DTAlertView.m */; }; + 566E7C671C7E5BDB00D0ACFE /* DTProgressStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 566E7C651C7E5BDB00D0ACFE /* DTProgressStatus.m */; }; + 566E7C6A1C7EB44C00D0ACFE /* MyAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 566E7C691C7EB44C00D0ACFE /* MyAlertView.m */; }; + 566EB44E18DADC0700BBC067 /* idea.png in Resources */ = {isa = PBXBuildFile; fileRef = 566EB44D18DADC0700BBC067 /* idea.png */; }; + 566F09BF1721C15800412952 /* speak.png in Resources */ = {isa = PBXBuildFile; fileRef = 566F09BE1721C15800412952 /* speak.png */; }; + 566F09C11721C17400412952 /* question.png in Resources */ = {isa = PBXBuildFile; fileRef = 566F09C01721C17400412952 /* question.png */; }; + 566F09CE17220A2700412952 /* NoteView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 566F09CC17220A2700412952 /* NoteView.xib */; }; + 566F09D117220B6F00412952 /* NoteViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 566F09D017220B6F00412952 /* NoteViewController.m */; }; + 566FF04518AC079A0094FB6A /* CmapView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 566FF04418AC079A0094FB6A /* CmapView.xib */; }; + 56711DEF17B77005001B4585 /* LSTintedButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711DEE17B77005001B4585 /* LSTintedButton.m */; }; + 56711DF317B77010001B4585 /* LSTabControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711DF117B77010001B4585 /* LSTabControl.m */; }; + 56711DFC17B7701B001B4585 /* LSTabItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711DF517B7701B001B4585 /* LSTabItem.m */; }; + 56711DFD17B7701B001B4585 /* LSTabBarView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711DF717B7701B001B4585 /* LSTabBarView.m */; }; + 56711DFE17B7701B001B4585 /* LSScrollTabBarView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711DFA17B7701B001B4585 /* LSScrollTabBarView.m */; }; + 56711E0217B7704B001B4585 /* HorizontalTabControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711E0117B7704B001B4585 /* HorizontalTabControl.m */; }; + 56711E0617B77057001B4585 /* LSHorizontalScrollTabViewDemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711E0417B77057001B4585 /* LSHorizontalScrollTabViewDemoViewController.m */; }; + 56711E0717B77057001B4585 /* LSHorizontalScrollTabView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 56711E0517B77057001B4585 /* LSHorizontalScrollTabView.xib */; }; + 56711E0C17B77075001B4585 /* controlpanel_view_background@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 56711E0817B77075001B4585 /* controlpanel_view_background@2x~ipad.png */; }; + 56711E0D17B77075001B4585 /* scrolltabs_horizontal_border.png in Resources */ = {isa = PBXBuildFile; fileRef = 56711E0917B77075001B4585 /* scrolltabs_horizontal_border.png */; }; + 56711E0E17B77075001B4585 /* TabNormal.png in Resources */ = {isa = PBXBuildFile; fileRef = 56711E0A17B77075001B4585 /* TabNormal.png */; }; + 56711E0F17B77075001B4585 /* TabSelected.png in Resources */ = {isa = PBXBuildFile; fileRef = 56711E0B17B77075001B4585 /* TabSelected.png */; }; + 56711E1B17B770B1001B4585 /* BadgeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711E1217B770B1001B4585 /* BadgeView.m */; }; + 56711E1C17B770B1001B4585 /* ColorPickerBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711E1417B770B1001B4585 /* ColorPickerBackgroundView.m */; }; + 56711E1D17B770B1001B4585 /* DrawingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711E1617B770B1001B4585 /* DrawingUtilities.m */; }; + 56711E1E17B770B1001B4585 /* UIImage+shortcuts.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711E1817B770B1001B4585 /* UIImage+shortcuts.m */; }; + 56711E1F17B770B1001B4585 /* UIView+Addictions.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711E1A17B770B1001B4585 /* UIView+Addictions.m */; }; + 56711E2117B7755A001B4585 /* LSHorizontalScrollTabViewDemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711E0417B77057001B4585 /* LSHorizontalScrollTabViewDemoViewController.m */; }; + 56711E2217B77579001B4585 /* HorizontalTabControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711E0117B7704B001B4585 /* HorizontalTabControl.m */; }; + 56711E2317B7758F001B4585 /* LSTabControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711DF117B77010001B4585 /* LSTabControl.m */; }; + 56711E2417B7758F001B4585 /* LSTabItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711DF517B7701B001B4585 /* LSTabItem.m */; }; + 56711E2517B7758F001B4585 /* LSTabBarView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711DF717B7701B001B4585 /* LSTabBarView.m */; }; + 56711E2617B7758F001B4585 /* LSScrollTabBarView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711DFA17B7701B001B4585 /* LSScrollTabBarView.m */; }; + 56711E2717B7759A001B4585 /* BadgeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711E1217B770B1001B4585 /* BadgeView.m */; }; + 56711E2817B7759A001B4585 /* ColorPickerBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711E1417B770B1001B4585 /* ColorPickerBackgroundView.m */; }; + 56711E2917B7759A001B4585 /* DrawingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711E1617B770B1001B4585 /* DrawingUtilities.m */; }; + 56711E2A17B7759A001B4585 /* UIImage+shortcuts.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711E1817B770B1001B4585 /* UIImage+shortcuts.m */; }; + 56711E2B17B7759A001B4585 /* UIView+Addictions.m in Sources */ = {isa = PBXBuildFile; fileRef = 56711E1A17B770B1001B4585 /* UIView+Addictions.m */; }; + 56711E2C17B776A2001B4585 /* LSHorizontalScrollTabView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 56711E0517B77057001B4585 /* LSHorizontalScrollTabView.xib */; }; + 56711E2E17B7834B001B4585 /* tab-back.png in Resources */ = {isa = PBXBuildFile; fileRef = 56711E2D17B7834B001B4585 /* tab-back.png */; }; + 56727D7A171E386800ACD92D /* WebBrowserViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 56727D78171E386800ACD92D /* WebBrowserViewController.m */; }; + 56727D7B171E386800ACD92D /* WebBrowserViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 56727D79171E386800ACD92D /* WebBrowserViewController.xib */; }; + 56727D84171F290D00ACD92D /* noteTaking.png in Resources */ = {isa = PBXBuildFile; fileRef = 56727D83171F290D00ACD92D /* noteTaking.png */; }; + 56727D8A171F2B0300ACD92D /* take_note.png in Resources */ = {isa = PBXBuildFile; fileRef = 56727D89171F2B0300ACD92D /* take_note.png */; }; + 56727D8E171FD12B00ACD92D /* noteIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 56727D8D171FD12B00ACD92D /* noteIcon.png */; }; + 56746BFF194CFD8F00805820 /* CmapLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 56746BFE194CFD8F00805820 /* CmapLink.m */; }; + 56746C02194D00D600805820 /* CmapLinkWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 56746C01194D00D600805820 /* CmapLinkWrapper.m */; }; + 56746C05194D018400805820 /* CmapLinkParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56746C04194D018400805820 /* CmapLinkParser.m */; }; + 56746C09194E3C8600805820 /* ConceptLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 56746C08194E3C8600805820 /* ConceptLink.m */; }; + 56746C0C194E54B200805820 /* RelationTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56746C0B194E54B200805820 /* RelationTextView.m */; }; + 56746C101950C2D400805820 /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 56746C0F1950C2D400805820 /* MBProgressHUD.m */; }; + 56746C121950C4D000805820 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56746C111950C4D000805820 /* Accelerate.framework */; }; + 56784B781C97C39800FBBC6B /* TrainingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 56784B761C97C39800FBBC6B /* TrainingViewController.m */; }; + 56784B791C97C39800FBBC6B /* TrainingViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 56784B771C97C39800FBBC6B /* TrainingViewController.xib */; }; + 567924BD1B12E673007B5038 /* error2.png in Resources */ = {isa = PBXBuildFile; fileRef = 567924BC1B12E673007B5038 /* error2.png */; }; + 567924C21B12E7BB007B5038 /* finder_alert.png in Resources */ = {isa = PBXBuildFile; fileRef = 567924BE1B12E7BB007B5038 /* finder_alert.png */; }; + 567924C31B12E7BB007B5038 /* finder_error.png in Resources */ = {isa = PBXBuildFile; fileRef = 567924BF1B12E7BB007B5038 /* finder_error.png */; }; + 567924C41B12E7BB007B5038 /* finder_finish.png in Resources */ = {isa = PBXBuildFile; fileRef = 567924C01B12E7BB007B5038 /* finder_finish.png */; }; + 567924C51B12E7BB007B5038 /* finder_stop.png in Resources */ = {isa = PBXBuildFile; fileRef = 567924C11B12E7BB007B5038 /* finder_stop.png */; }; + 567E5C4117B2234F0047F995 /* ThumbNailIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 567E5C4017B2234F0047F995 /* ThumbNailIcon.m */; }; + 568251A618B48A2100F6412B /* Screen Shot 2014-02-18 at 11.43.22 PM.png in Resources */ = {isa = PBXBuildFile; fileRef = 568251A518B48A2100F6412B /* Screen Shot 2014-02-18 at 11.43.22 PM.png */; }; + 568251A818B48A6300F6412B /* cmap.png in Resources */ = {isa = PBXBuildFile; fileRef = 568251A718B48A6300F6412B /* cmap.png */; }; + 568322F91B12EFED00D3C3D5 /* alert_small.png in Resources */ = {isa = PBXBuildFile; fileRef = 568322F51B12EFED00D3C3D5 /* alert_small.png */; }; + 568322FA1B12EFED00D3C3D5 /* error_small.png in Resources */ = {isa = PBXBuildFile; fileRef = 568322F61B12EFED00D3C3D5 /* error_small.png */; }; + 568322FB1B12EFED00D3C3D5 /* finish_small.png in Resources */ = {isa = PBXBuildFile; fileRef = 568322F71B12EFED00D3C3D5 /* finish_small.png */; }; + 568322FC1B12EFED00D3C3D5 /* stop_small.png in Resources */ = {isa = PBXBuildFile; fileRef = 568322F81B12EFED00D3C3D5 /* stop_small.png */; }; + 56887F091C9872F000467A76 /* hintbulb.png in Resources */ = {isa = PBXBuildFile; fileRef = 56887F081C9872F000467A76 /* hintbulb.png */; }; + 568BFE3619C0BBDA00C55843 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 568BFE3519C0BBDA00C55843 /* MobileCoreServices.framework */; }; + 568BFE5019C109D900C55843 /* GoogleDriveViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 568BFE4F19C109D900C55843 /* GoogleDriveViewController.m */; }; + 568BFE5419C1229B00C55843 /* DropboxSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 568BFE5319C1229B00C55843 /* DropboxSDK.framework */; }; + 569262E11C17838A0086BA9E /* Dog.png in Resources */ = {isa = PBXBuildFile; fileRef = 569262E01C17838A0086BA9E /* Dog.png */; }; + 569262E61C18AEDD0086BA9E /* VideoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 569262E41C18AEDD0086BA9E /* VideoViewController.m */; }; + 569262E71C18AEDD0086BA9E /* VideoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 569262E51C18AEDD0086BA9E /* VideoViewController.xib */; }; + 5693B3FA19006E6A00AABE27 /* CmapScrollViewViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5693B3F819006E6A00AABE27 /* CmapScrollViewViewController.m */; }; + 5693B3FB19006E6A00AABE27 /* CmapScrollViewViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5693B3F919006E6A00AABE27 /* CmapScrollViewViewController.xib */; }; + 569407F2193959ED00D5294F /* ResrouceThumbViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 569407F1193959ED00D5294F /* ResrouceThumbViewController.m */; }; + 569407F41939A28A00D5294F /* safari_square.png in Resources */ = {isa = PBXBuildFile; fileRef = 569407F31939A28A00D5294F /* safari_square.png */; }; + 569407F61939A2E400D5294F /* note_square.png in Resources */ = {isa = PBXBuildFile; fileRef = 569407F51939A2E400D5294F /* note_square.png */; }; + 569407F81939B40B00D5294F /* colorPlate.png in Resources */ = {isa = PBXBuildFile; fileRef = 569407F71939B40B00D5294F /* colorPlate.png */; }; + 56955C2418DCDAD60073A64C /* PFGoldenSectionSpiral.m in Sources */ = {isa = PBXBuildFile; fileRef = 56955C1D18DCDAD60073A64C /* PFGoldenSectionSpiral.m */; }; + 56955C2518DCDAD60073A64C /* ZYQSphereView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56955C2318DCDAD60073A64C /* ZYQSphereView.m */; }; + 56955C2918DCDC4E0073A64C /* SampleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 56955C2818DCDC4E0073A64C /* SampleViewController.m */; }; + 5695D66A1C39ADDF00C65227 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5695D6691C39ADDF00C65227 /* CoreMedia.framework */; }; + 5695D66C1C39ADE500C65227 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5695D66B1C39ADE500C65227 /* CoreMotion.framework */; }; + 5695D66E1C39ADF900C65227 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5695D66D1C39ADF900C65227 /* OpenGLES.framework */; }; + 56A869CA1C63F60B00CD6CC9 /* StudentData.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A869C91C63F60B00CD6CC9 /* StudentData.m */; }; + 56A869CD1C63F65B00CD6CC9 /* StudentDataWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A869CC1C63F65B00CD6CC9 /* StudentDataWrapper.m */; }; + 56A869D01C63F6B900CD6CC9 /* StudentDataParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A869CF1C63F6B900CD6CC9 /* StudentDataParser.m */; }; + 56AB71FB1C6EA66800FEB7BE /* preview.png in Resources */ = {isa = PBXBuildFile; fileRef = 56AB71FA1C6EA66800FEB7BE /* preview.png */; }; + 56ACC30219E3A804008D4304 /* LogData.m in Sources */ = {isa = PBXBuildFile; fileRef = 56ACC30119E3A804008D4304 /* LogData.m */; }; + 56ACC30519E3AAB5008D4304 /* LogDataWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 56ACC30419E3AAB5008D4304 /* LogDataWrapper.m */; }; + 56ACC30819E3AE23008D4304 /* LogDataParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56ACC30719E3AE23008D4304 /* LogDataParser.m */; }; + 56AFB3891B0ACF240048E036 /* switch.png in Resources */ = {isa = PBXBuildFile; fileRef = 56AFB3881B0ACF240048E036 /* switch.png */; }; + 56AFB38B1B0B04190048E036 /* QAIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 56AFB38A1B0B04190048E036 /* QAIcon.png */; }; + 56B0B98018C50B9F0016783E /* MainWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B0B97F18C50B9F0016783E /* MainWindowController.m */; }; + 56B0B98318C50F560016783E /* CmapView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B0B98218C50F560016783E /* CmapView.m */; }; + 56B0B98618C512FC0016783E /* NodeCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B0B98518C512FC0016783E /* NodeCell.m */; }; + 56B0B98818C5133F0016783E /* NodeCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 56B0B98718C5133F0016783E /* NodeCell.xib */; }; + 56B0B98C18C522080016783E /* GHContextMenuView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B0B98B18C522080016783E /* GHContextMenuView.m */; }; + 56B0B99218C523B90016783E /* facebook-white.png in Resources */ = {isa = PBXBuildFile; fileRef = 56B0B98D18C523B90016783E /* facebook-white.png */; }; + 56B0B99318C523B90016783E /* google-plus-white.png in Resources */ = {isa = PBXBuildFile; fileRef = 56B0B98E18C523B90016783E /* google-plus-white.png */; }; + 56B0B99418C523B90016783E /* linkedin-white.png in Resources */ = {isa = PBXBuildFile; fileRef = 56B0B98F18C523B90016783E /* linkedin-white.png */; }; + 56B0B99518C523B90016783E /* pinterest-white.png in Resources */ = {isa = PBXBuildFile; fileRef = 56B0B99018C523B90016783E /* pinterest-white.png */; }; + 56B0B99618C523B90016783E /* twitter-white.png in Resources */ = {isa = PBXBuildFile; fileRef = 56B0B99118C523B90016783E /* twitter-white.png */; }; + 56B0B99A18C526740016783E /* link.png in Resources */ = {isa = PBXBuildFile; fileRef = 56B0B99918C526740016783E /* link.png */; }; + 56B0B9A018C529110016783E /* addConcpetNode.png in Resources */ = {isa = PBXBuildFile; fileRef = 56B0B99F18C529110016783E /* addConcpetNode.png */; }; + 56B1BDB3170031CB0056FEE3 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56B1BDB2170031CB0056FEE3 /* QuartzCore.framework */; }; + 56B1BDBD170107840056FEE3 /* navigation_bar.png in Resources */ = {isa = PBXBuildFile; fileRef = 56B1BDBC170107840056FEE3 /* navigation_bar.png */; }; + 56B6B7C8189C4AB700F3F400 /* Slt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5647354B181AF1F100EE1640 /* Slt.framework */; }; + 56B7BB4B170CD4B100037E9E /* underline2.png in Resources */ = {isa = PBXBuildFile; fileRef = 56B7BB4A170CD4B100037E9E /* underline2.png */; }; + 56B7BB4D170CD73E00037E9E /* undo.png in Resources */ = {isa = PBXBuildFile; fileRef = 56B7BB4C170CD73E00037E9E /* undo.png */; }; + 56B7BB51170CE51000037E9E /* PopoverView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B7BB50170CE51000037E9E /* PopoverView.m */; }; + 56B7BB57170CE82300037E9E /* OCDaysView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B7BB56170CE82300037E9E /* OCDaysView.m */; }; + 56B7BB59170CECEB00037E9E /* error.png in Resources */ = {isa = PBXBuildFile; fileRef = 56B7BB58170CECEB00037E9E /* error.png */; }; + 56B7BB5B170CECF000037E9E /* success.png in Resources */ = {isa = PBXBuildFile; fileRef = 56B7BB5A170CECF000037E9E /* success.png */; }; + 56B8C1381C55A4D1002187A9 /* iconLeft.png in Resources */ = {isa = PBXBuildFile; fileRef = 56B8C1361C55A4D1002187A9 /* iconLeft.png */; }; + 56B8C1391C55A4D1002187A9 /* iconRight.png in Resources */ = {isa = PBXBuildFile; fileRef = 56B8C1371C55A4D1002187A9 /* iconRight.png */; }; + 56B8C13E1C55E080002187A9 /* upload-dsym.sh in Resources */ = {isa = PBXBuildFile; fileRef = 56B8C13C1C55E080002187A9 /* upload-dsym.sh */; }; + 56B8C1411C560550002187A9 /* libTestFairy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 56B8C1401C560550002187A9 /* libTestFairy.a */; }; + 56BD58901C7E1FF100283AC3 /* trade.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 56BD58801C7E1FF100283AC3 /* trade.bundle */; }; + 56BD58911C7E1FF100283AC3 /* UIView+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BD58821C7E1FF100283AC3 /* UIView+Extension.m */; }; + 56BD58921C7E1FF100283AC3 /* NSString+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BD58841C7E1FF100283AC3 /* NSString+Extension.m */; }; + 56BD58931C7E1FF100283AC3 /* UIAlertView+Quick.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BD58861C7E1FF100283AC3 /* UIAlertView+Quick.m */; }; + 56BD58941C7E1FF100283AC3 /* ZCTradeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BD58881C7E1FF100283AC3 /* ZCTradeView.m */; }; + 56BD58951C7E1FF100283AC3 /* ZCTradeInputView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BD588A1C7E1FF100283AC3 /* ZCTradeInputView.m */; }; + 56BD58961C7E1FF100283AC3 /* ZCTradeKeyboard.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BD588C1C7E1FF100283AC3 /* ZCTradeKeyboard.m */; }; + 56BD58971C7E1FF100283AC3 /* ZCAudioTool.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BD588F1C7E1FF100283AC3 /* ZCAudioTool.m */; }; + 56BD589E1C7E20B600283AC3 /* NSString+FontAwesome.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BD589A1C7E20B600283AC3 /* NSString+FontAwesome.m */; }; + 56BD589F1C7E20B600283AC3 /* UIButton+Bootstrap.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BD589C1C7E20B600283AC3 /* UIButton+Bootstrap.m */; }; + 56BD58A01C7E20B600283AC3 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 56BD589D1C7E20B600283AC3 /* FontAwesome.ttf */; }; + 56BF7F271ADEE94900B015C6 /* ExpertCmapLinkList.xml in Resources */ = {isa = PBXBuildFile; fileRef = 56BF7F251ADEE94900B015C6 /* ExpertCmapLinkList.xml */; }; + 56BF7F281ADEE94900B015C6 /* ExpertCmapNodeList.xml in Resources */ = {isa = PBXBuildFile; fileRef = 56BF7F261ADEE94900B015C6 /* ExpertCmapNodeList.xml */; }; + 56C69D491725D2AD009419B3 /* WebMarkController.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C69D471725D2AD009419B3 /* WebMarkController.m */; }; + 56C69D4A1725D2AD009419B3 /* WebMarkController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 56C69D481725D2AD009419B3 /* WebMarkController.xib */; }; + 56C69D4C1725D40B009419B3 /* safari.png in Resources */ = {isa = PBXBuildFile; fileRef = 56C69D4B1725D40B009419B3 /* safari.png */; }; + 56C69D531727BE5B009419B3 /* EpubSampleNick.epub in Resources */ = {isa = PBXBuildFile; fileRef = 56C69D521727BE5B009419B3 /* EpubSampleNick.epub */; }; + 56C69D561727BF74009419B3 /* Bio.epub in Resources */ = {isa = PBXBuildFile; fileRef = 56C69D551727BF74009419B3 /* Bio.epub */; }; + 56CB3D6518FD23E4003FE954 /* ConceptThubm.png in Resources */ = {isa = PBXBuildFile; fileRef = 56CB3D6418FD23E4003FE954 /* ConceptThubm.png */; }; + 56D76C1718BC04BB0041FA56 /* DragView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56D76C1418BC04BB0041FA56 /* DragView.m */; }; + 56D76C2818BC05140041FA56 /* ConceptNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56D76C1F18BC05140041FA56 /* ConceptNode.m */; }; + 56D76C2918BC05140041FA56 /* Connection.m in Sources */ = {isa = PBXBuildFile; fileRef = 56D76C2118BC05140041FA56 /* Connection.m */; }; + 56D76C2A18BC05140041FA56 /* GroupingNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56D76C2318BC05140041FA56 /* GroupingNode.m */; }; + 56D76C2B18BC05140041FA56 /* Node.m in Sources */ = {isa = PBXBuildFile; fileRef = 56D76C2518BC05140041FA56 /* Node.m */; }; + 56D76C2C18BC05140041FA56 /* Relation.m in Sources */ = {isa = PBXBuildFile; fileRef = 56D76C2718BC05140041FA56 /* Relation.m */; }; + 56D76C3418BC065B0041FA56 /* Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 56D76C2F18BC065B0041FA56 /* Base64.m */; }; + 56D76C3518BC065B0041FA56 /* CMapImporterExporter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56D76C3118BC065B0041FA56 /* CMapImporterExporter.m */; }; + 56D76C3618BC065B0041FA56 /* NSString+XMLEntities.m in Sources */ = {isa = PBXBuildFile; fileRef = 56D76C3318BC065B0041FA56 /* NSString+XMLEntities.m */; }; + 56E31A30172D063D0066C55D /* Experiment.m in Sources */ = {isa = PBXBuildFile; fileRef = 56E31A2F172D063D0066C55D /* Experiment.m */; }; + 56E9B03318DE48AF00AADD2E /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56E9B03218DE48AF00AADD2E /* CoreImage.framework */; }; + 56E9B03918DE522E00AADD2E /* blurWallPaper.png in Resources */ = {isa = PBXBuildFile; fileRef = 56E9B03818DE522E00AADD2E /* blurWallPaper.png */; }; + 56EF20A219BF7F6E00A22FC8 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56EF20A119BF7F6E00A22FC8 /* Security.framework */; }; + 56F02EB6178FA29100C310F9 /* ThumbNailController.m in Sources */ = {isa = PBXBuildFile; fileRef = 56F02EB5178FA29100C310F9 /* ThumbNailController.m */; }; + 56F04AB31B6453250092A523 /* LogInViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 56F04AB21B6453250092A523 /* LogInViewController.m */; }; + 56F04AB71B645CDA0092A523 /* LoginBG.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 56F04AB61B645CDA0092A523 /* LoginBG.jpg */; }; + 56F04AB91B6463350092A523 /* LoginForm.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 56F04AB81B6463350092A523 /* LoginForm.jpg */; }; + 56F04ABB1B6464A50092A523 /* LoginButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 56F04ABA1B6464A50092A523 /* LoginButton.png */; }; + 56F30E4218F5124F00E8ECEF /* UIView+i7Rotate360.m in Sources */ = {isa = PBXBuildFile; fileRef = 56F30E4118F5124F00E8ECEF /* UIView+i7Rotate360.m */; }; + 56F30E4418F5130A00E8ECEF /* wait.png in Resources */ = {isa = PBXBuildFile; fileRef = 56F30E4318F5130A00E8ECEF /* wait.png */; }; + 56F935E41B0DBF1D00138A1A /* QAWeb.png in Resources */ = {isa = PBXBuildFile; fileRef = 56F935E31B0DBF1D00138A1A /* QAWeb.png */; }; + 56F935E81B0DC3A500138A1A /* QAFinderViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 56F935E61B0DC3A500138A1A /* QAFinderViewController.m */; }; + 56F935E91B0DC3A500138A1A /* QAFinderViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 56F935E71B0DC3A500138A1A /* QAFinderViewController.xib */; }; + 56FB60D917286999008C1F0B /* KnowledgeModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 56FB60D817286999008C1F0B /* KnowledgeModule.m */; }; + 56FB60DC17286AFA008C1F0B /* Concept.m in Sources */ = {isa = PBXBuildFile; fileRef = 56FB60DB17286AFA008C1F0B /* Concept.m */; }; + 56FB67111BCE241D00006AF0 /* PreViewNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56FB670F1BCE241D00006AF0 /* PreViewNode.m */; }; + 56FB67121BCE241D00006AF0 /* PreViewNode.xib in Resources */ = {isa = PBXBuildFile; fileRef = 56FB67101BCE241D00006AF0 /* PreViewNode.xib */; }; + 56FB67161BCE2C3F00006AF0 /* BookPageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 56FB67141BCE2C3F00006AF0 /* BookPageViewController.m */; }; + 56FB67171BCE2C3F00006AF0 /* BookPageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 56FB67151BCE2C3F00006AF0 /* BookPageViewController.xib */; }; + 56FB671A1BCE2CDF00006AF0 /* blueDot.png in Resources */ = {isa = PBXBuildFile; fileRef = 56FB67181BCE2CDF00006AF0 /* blueDot.png */; }; + 56FB671B1BCE2CDF00006AF0 /* blueRec.png in Resources */ = {isa = PBXBuildFile; fileRef = 56FB67191BCE2CDF00006AF0 /* blueRec.png */; }; + 56FFE96A19DBD31400364476 /* NodeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 56FFE96819DBD31400364476 /* NodeViewController.m */; }; + 56FFE96B19DBD31400364476 /* NodeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 56FFE96919DBD31400364476 /* NodeViewController.xib */; }; + 56FFE97319DC70D100364476 /* SubNodeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 56FFE97119DC70D100364476 /* SubNodeViewController.m */; }; + 56FFE97419DC70D100364476 /* SubNodeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 56FFE97219DC70D100364476 /* SubNodeViewController.xib */; }; + 68D1BF031D887BF100BD09D1 /* TylerTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 68D1BF021D887BF100BD09D1 /* TylerTextView.m */; }; + 68D1BF061D9AF9C600BD09D1 /* Node_Small.png in Resources */ = {isa = PBXBuildFile; fileRef = 68D1BF041D9AF9C600BD09D1 /* Node_Small.png */; }; + 68D1BF071D9AF9C600BD09D1 /* Safarai_White.png in Resources */ = {isa = PBXBuildFile; fileRef = 68D1BF051D9AF9C600BD09D1 /* Safarai_White.png */; }; + 68D1BF091DB6B68B00BD09D1 /* webbrowser.png in Resources */ = {isa = PBXBuildFile; fileRef = 68D1BF081DB6B68B00BD09D1 /* webbrowser.png */; }; + 68D1BF0B1DBFFF3100BD09D1 /* aa.epub in Resources */ = {isa = PBXBuildFile; fileRef = 68D1BF0A1DBFFE3E00BD09D1 /* aa.epub */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 3166DB8416B0A5300089C0F2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3166DB4616B0A5300089C0F2 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3166DB4E16B0A5300089C0F2; + remoteInfo = eBookReader; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0C38CE2BF8B5F65AF31BB6AC /* libPods-TouchTest.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TouchTest.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 314B7E6116C2D9BF0061F0BF /* EBookImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EBookImporter.h; sourceTree = ""; }; + 314B7E6216C2D9BF0061F0BF /* EBookImporter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EBookImporter.m; sourceTree = ""; }; + 315F0AE116CC186C00300B19 /* bookshelf_vertical.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bookshelf_vertical.png; sourceTree = ""; }; + 315F0AE216CC186C00300B19 /* bookshelf_horizontal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bookshelf_horizontal.png; sourceTree = ""; }; + 3166DB4F16B0A5300089C0F2 /* Study.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Study.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 3166DB5316B0A5300089C0F2 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 3166DB5516B0A5300089C0F2 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 3166DB5716B0A5300089C0F2 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 3166DB5B16B0A5300089C0F2 /* Study-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Study-Info.plist"; sourceTree = ""; }; + 3166DB5D16B0A5300089C0F2 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 3166DB5F16B0A5300089C0F2 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 3166DB6116B0A5300089C0F2 /* Study-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Study-Prefix.pch"; sourceTree = ""; }; + 3166DB6216B0A5300089C0F2 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 3166DB6316B0A5300089C0F2 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 3166DB6516B0A5300089C0F2 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + 3166DB6716B0A5300089C0F2 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; + 3166DB6916B0A5300089C0F2 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + 3166DB6E16B0A5300089C0F2 /* LibraryViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LibraryViewController.h; sourceTree = ""; }; + 3166DB6F16B0A5300089C0F2 /* LibraryViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LibraryViewController.m; sourceTree = ""; }; + 3166DB7516B0A5300089C0F2 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPhone.storyboard; sourceTree = ""; }; + 3166DB7816B0A5300089C0F2 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPad.storyboard; sourceTree = ""; }; + 3166DB7F16B0A5300089C0F2 /* Study.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Study.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 31A8258C16C2E7E000F18C1D /* Book.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Book.h; sourceTree = ""; }; + 31A8258D16C2E7E000F18C1D /* Book.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Book.m; sourceTree = ""; }; + 31A90BBB16C9B23B003E13E0 /* BookCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BookCell.h; sourceTree = ""; }; + 31A90BBC16C9B23B003E13E0 /* BookCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BookCell.m; sourceTree = ""; }; + 31A90BBE16C9C07F003E13E0 /* BookCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BookCell.xib; sourceTree = ""; }; + 31B9150B16CB053B0040E8A2 /* BookViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BookViewController.h; sourceTree = ""; }; + 31B9150C16CB053B0040E8A2 /* BookViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BookViewController.m; sourceTree = ""; }; + 31DA906A16C32DCC000DA6A3 /* GDataXMLNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GDataXMLNode.h; sourceTree = ""; }; + 31DA906B16C32DCC000DA6A3 /* GDataXMLNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GDataXMLNode.m; sourceTree = ""; }; + 31F0CE2416C59BEA00E5CAC5 /* ZipArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZipArchive.h; sourceTree = ""; }; + 31F0CE2516C59BEA00E5CAC5 /* ZipArchive.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ZipArchive.mm; sourceTree = ""; }; + 31F0CE2A16C59DEC00E5CAC5 /* crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; + 31F0CE2B16C59DEC00E5CAC5 /* ioapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; }; + 31F0CE2C16C59DEC00E5CAC5 /* ioapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; + 31F0CE2D16C59DEC00E5CAC5 /* mztools.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mztools.c; sourceTree = ""; }; + 31F0CE2E16C59DEC00E5CAC5 /* mztools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mztools.h; sourceTree = ""; }; + 31F0CE2F16C59DEC00E5CAC5 /* unzip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + 31F0CE3016C59DEC00E5CAC5 /* unzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + 31F0CE3116C59DEC00E5CAC5 /* zip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; }; + 31F0CE3216C59DEC00E5CAC5 /* zip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; + 5604454717176734002368D7 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; + 5606C8B31BA797B0002F33D5 /* LogData.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = LogData.xml; sourceTree = ""; }; + 560B2F4518EBD6C3009B8CB7 /* dialCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = dialCell.xib; sourceTree = ""; }; + 560B2F4618EBD6C3009B8CB7 /* dialCell2.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = dialCell2.xib; sourceTree = ""; }; + 560B2F4718EBD6C3009B8CB7 /* players.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = players.json; sourceTree = ""; }; + 560B2F4E18EBD85D009B8CB7 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + 560B2F5018EBD8B5009B8CB7 /* AWCollectionViewDialLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWCollectionViewDialLayout.h; sourceTree = ""; }; + 560B2F5118EBD8B5009B8CB7 /* AWCollectionViewDialLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWCollectionViewDialLayout.m; sourceTree = ""; }; + 560B2F5C18EBE051009B8CB7 /* awcollectionviewdiallayout_1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = awcollectionviewdiallayout_1.jpg; sourceTree = ""; }; + 560B2F5D18EBE051009B8CB7 /* awcollectionviewdiallayout_2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = awcollectionviewdiallayout_2.jpg; sourceTree = ""; }; + 560B2F5E18EBE051009B8CB7 /* carmelo_anthony.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = carmelo_anthony.png; sourceTree = ""; }; + 560B2F5F18EBE051009B8CB7 /* dwayne_wade.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dwayne_wade.png; sourceTree = ""; }; + 560B2F6018EBE051009B8CB7 /* james_harden.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = james_harden.png; sourceTree = ""; }; + 560B2F6118EBE051009B8CB7 /* kevin_durant.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = kevin_durant.png; sourceTree = ""; }; + 560B2F6218EBE051009B8CB7 /* kyrie_irving.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = kyrie_irving.png; sourceTree = ""; }; + 560B2F6318EBE051009B8CB7 /* lebron_james.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lebron_james.png; sourceTree = ""; }; + 560B2F6418EBE051009B8CB7 /* paul_george.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = paul_george.png; sourceTree = ""; }; + 560B2F7018ECC542009B8CB7 /* ConceptIconViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConceptIconViewController.h; sourceTree = ""; }; + 560B2F7118ECC542009B8CB7 /* ConceptIconViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConceptIconViewController.m; sourceTree = ""; }; + 560B2F7218ECC542009B8CB7 /* ConceptIconViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConceptIconViewController.xib; sourceTree = ""; }; + 560B2F7518EDFE4D009B8CB7 /* ShangTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShangTextField.h; sourceTree = ""; }; + 560B2F7618EDFE4D009B8CB7 /* ShangTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ShangTextField.m; sourceTree = ""; }; + 560D0BD019C9021F006B11E4 /* MapFinderViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapFinderViewController.h; sourceTree = ""; }; + 560D0BD119C9021F006B11E4 /* MapFinderViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapFinderViewController.m; sourceTree = ""; }; + 560D0BD219C9021F006B11E4 /* MapFinderViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapFinderViewController.xib; sourceTree = ""; }; + 5615BAE9171A02F30002B275 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 5615BAEB171A031C0002B275 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; + 5615BAED171A032B0002B275 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; + 5616F842178D46BC009E0FC6 /* HighlightContent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HighlightContent.h; sourceTree = ""; }; + 5616F843178D46BC009E0FC6 /* HighlightContent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HighlightContent.m; sourceTree = ""; }; + 5619B28317963287001E5BA0 /* LogFileController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogFileController.h; sourceTree = ""; }; + 5619B28417963287001E5BA0 /* LogFileController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LogFileController.m; sourceTree = ""; }; + 561BCBF71B09CD8900F553D4 /* QAViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QAViewController.h; sourceTree = ""; }; + 561BCBF81B09CD8900F553D4 /* QAViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QAViewController.m; sourceTree = ""; }; + 561BCBF91B09CD8900F553D4 /* QAViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = QAViewController.xib; sourceTree = ""; }; + 561C0D5518C52ABD00B223D3 /* deleteConcept.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = deleteConcept.png; sourceTree = ""; }; + 561C0D5718C52B7900B223D3 /* edit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = edit.png; sourceTree = ""; }; + 561CDA3F1C7398E700FD23B7 /* doc.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = doc.pdf; sourceTree = ""; }; + 561D1AFB1C86894100D3AF47 /* CmapIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CmapIcon.png; sourceTree = ""; }; + 5623147D16F9027C00B40047 /* ContentViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContentViewController.h; sourceTree = ""; }; + 5623147E16F9027C00B40047 /* ContentViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContentViewController.m; sourceTree = ""; }; + 5623147F16F9027C00B40047 /* ContentViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContentViewController.xib; sourceTree = ""; }; + 562484371CA5E2EA000C9115 /* orangeRec.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = orangeRec.png; sourceTree = ""; }; + 5624843B1CA88A5E000C9115 /* NonHyperLink */ = {isa = PBXFileReference; lastKnownFileType = folder; path = NonHyperLink; sourceTree = ""; }; + 5624843D1CA894CD000C9115 /* finishTraining.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = finishTraining.png; sourceTree = ""; }; + 562DD69A1C04DD0900D65FDE /* addIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = addIcon.png; sourceTree = ""; }; + 563B50FC1919F6CC00FA0F34 /* CmapNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CmapNode.h; sourceTree = ""; }; + 563B50FD1919F6CC00FA0F34 /* CmapNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CmapNode.m; sourceTree = ""; }; + 563B50FF1919F99900FA0F34 /* CmapNodeWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CmapNodeWrapper.h; sourceTree = ""; }; + 563B51001919F99900FA0F34 /* CmapNodeWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CmapNodeWrapper.m; sourceTree = ""; }; + 563B51021919FA7A00FA0F34 /* CmapNodeParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CmapNodeParser.h; sourceTree = ""; }; + 563B51031919FA7A00FA0F34 /* CmapNodeParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CmapNodeParser.m; sourceTree = ""; }; + 563B63AB1C237E0E00D09D3F /* TeachRotate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TeachRotate.png; sourceTree = ""; }; + 564061481CA306AE00C87504 /* Train_AddNode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Train_AddNode.png; sourceTree = ""; }; + 5640614A1CA37A9900C87504 /* Train_pageflip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Train_pageflip.png; sourceTree = ""; }; + 5640614C1CA37BC500C87504 /* Train_correct.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Train_correct.png; sourceTree = ""; }; + 5640614E1CA37CE600C87504 /* Train_pinch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Train_pinch.png; sourceTree = ""; }; + 564061501CA37E2200C87504 /* Train_selectRelation.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Train_selectRelation.png; sourceTree = ""; }; + 564061521CA37EC000C87504 /* Train_HyperNavi.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Train_HyperNavi.png; sourceTree = ""; }; + 564061541CA37FAC00C87504 /* Train_delete.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Train_delete.png; sourceTree = ""; }; + 564061561CA3843F00C87504 /* Train_link.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Train_link.png; sourceTree = ""; }; + 564061581CA4CFFE00C87504 /* Tutorial */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Tutorial; sourceTree = ""; }; + 56434C671C70691700509960 /* magnify_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = magnify_2.png; sourceTree = ""; }; + 56434C6C1C7125B900509960 /* MyTouch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyTouch.h; sourceTree = ""; }; + 56434C6D1C7125B900509960 /* MyTouch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyTouch.m; sourceTree = ""; }; + 56434C851C7130A700509960 /* TouchTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TouchTest.m; sourceTree = ""; }; + 56434C871C7130A700509960 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5643887B1B204286003330F6 /* CmapBookNoteViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CmapBookNoteViewController.h; sourceTree = ""; }; + 5643887C1B204286003330F6 /* CmapBookNoteViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CmapBookNoteViewController.m; sourceTree = ""; }; + 5643887D1B204286003330F6 /* CmapBookNoteViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CmapBookNoteViewController.xib; sourceTree = ""; }; + 56452509170A5D09005E2D17 /* cover_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cover_default.png; sourceTree = ""; }; + 56465CD117B8813C00EE38FC /* controlUpBarBG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = controlUpBarBG.png; sourceTree = ""; }; + 56465CD317B8AF8200EE38FC /* TabNormal_skyBlue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabNormal_skyBlue.png; sourceTree = ""; }; + 56465CD417B8AF8200EE38FC /* TabNormal_green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabNormal_green.png; sourceTree = ""; }; + 56465CD517B8AF8300EE38FC /* TabNormal_purple.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabNormal_purple.png; sourceTree = ""; }; + 56465CD617B8AF8300EE38FC /* TabNormal_red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabNormal_red.png; sourceTree = ""; }; + 5646970618B477BE00DB5E2A /* CmapController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CmapController.h; sourceTree = ""; }; + 5646970718B477BE00DB5E2A /* CmapController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CmapController.m; sourceTree = ""; }; + 564725BC1AC5EC49007BA8AE /* MultipleChoiceViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultipleChoiceViewController.h; sourceTree = ""; }; + 564725BD1AC5EC49007BA8AE /* MultipleChoiceViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultipleChoiceViewController.m; sourceTree = ""; }; + 56473545181AF0BD00EE1640 /* AcousticModelEnglish.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = AcousticModelEnglish.bundle; path = Framework/AcousticModelEnglish.bundle; sourceTree = ""; }; + 56473547181AF0CE00EE1640 /* AcousticModelSpanish.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = AcousticModelSpanish.bundle; path = Framework/AcousticModelSpanish.bundle; sourceTree = ""; }; + 56473549181AF1EC00EE1640 /* OpenEars.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenEars.framework; path = Framework/OpenEars.framework; sourceTree = ""; }; + 5647354B181AF1F100EE1640 /* Slt.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Slt.framework; path = Framework/Slt.framework; sourceTree = ""; }; + 564923141C176BB9009874D4 /* MultipleChoiceViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MultipleChoiceViewController.xib; sourceTree = ""; }; + 564C425417064A7000B320EF /* highlight_green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = highlight_green.png; sourceTree = ""; }; + 564C425617064D7800B320EF /* highlight_yellow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = highlight_yellow.png; sourceTree = ""; }; + 564C425817064D7B00B320EF /* highlight_blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = highlight_blue.png; sourceTree = ""; }; + 564C425A17064D7E00B320EF /* highlight_red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = highlight_red.png; sourceTree = ""; }; + 564C425C17064D8300B320EF /* highlight_purple.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = highlight_purple.png; sourceTree = ""; }; + 564FCEC2174B65B300790086 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + 5651D62019079CFD0088E733 /* bb.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bb.png; sourceTree = ""; }; + 56520807170418F5003272B0 /* UIMenuItem+CXAImageSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIMenuItem+CXAImageSupport.h"; sourceTree = ""; }; + 56520808170418F5003272B0 /* UIMenuItem+CXAImageSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIMenuItem+CXAImageSupport.m"; sourceTree = ""; }; + 5652080F17041B30003272B0 /* JavaScriptFunctions.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = JavaScriptFunctions.js; sourceTree = ""; }; + 565561AF1798DA5C00297BB8 /* HighLight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HighLight.h; sourceTree = ""; }; + 565561B01798DA5C00297BB8 /* HighLight.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HighLight.m; sourceTree = ""; }; + 565561B21798DAB800297BB8 /* HighLightWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HighLightWrapper.h; sourceTree = ""; }; + 565561B31798DAB800297BB8 /* HighLightWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HighLightWrapper.m; sourceTree = ""; }; + 565561B51798DB1400297BB8 /* HighlightParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HighlightParser.h; sourceTree = ""; }; + 565561B61798DB1500297BB8 /* HighlightParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HighlightParser.m; sourceTree = ""; }; + 565B23A618FE3A030074E344 /* ConceptViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConceptViewController.h; sourceTree = ""; }; + 565B23A718FE3A030074E344 /* ConceptViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConceptViewController.m; sourceTree = ""; }; + 565B23A818FE3A030074E344 /* ConceptViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConceptViewController.xib; sourceTree = ""; }; + 565B23AB18FE54430074E344 /* ConceptIconTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConceptIconTextField.h; sourceTree = ""; }; + 565B23AC18FE54430074E344 /* ConceptIconTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConceptIconTextField.m; sourceTree = ""; }; + 565DA3F217B32F9C000DB171 /* ThumbNailIconWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThumbNailIconWrapper.h; sourceTree = ""; }; + 565DA3F317B32F9C000DB171 /* ThumbNailIconWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThumbNailIconWrapper.m; sourceTree = ""; }; + 565DA3F517B33705000DB171 /* ThumbNailIconParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThumbNailIconParser.h; sourceTree = ""; }; + 565DA3F617B33705000DB171 /* ThumbNailIconParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThumbNailIconParser.m; sourceTree = ""; }; + 566D5FF01AC5D1FE00492921 /* ISMultipleChoiceQuestion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISMultipleChoiceQuestion.h; sourceTree = ""; }; + 566D5FF11AC5D1FE00492921 /* ISMultipleChoiceQuestion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ISMultipleChoiceQuestion.m; sourceTree = ""; }; + 566D5FF21AC5D1FE00492921 /* ISOpenQuestion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISOpenQuestion.h; sourceTree = ""; }; + 566D5FF31AC5D1FE00492921 /* ISOpenQuestion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ISOpenQuestion.m; sourceTree = ""; }; + 566D5FF41AC5D1FE00492921 /* ISQuestion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISQuestion.h; sourceTree = ""; }; + 566D5FF51AC5D1FE00492921 /* ISQuestion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ISQuestion.m; sourceTree = ""; }; + 566D5FF61AC5D1FE00492921 /* ISQuiz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISQuiz.h; sourceTree = ""; }; + 566D5FF71AC5D1FE00492921 /* ISQuiz.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ISQuiz.m; sourceTree = ""; }; + 566D5FF81AC5D1FE00492921 /* ISQuizKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISQuizKit.h; sourceTree = ""; }; + 566D5FF91AC5D1FE00492921 /* ISQuizParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISQuizParser.h; sourceTree = ""; }; + 566D5FFA1AC5D1FE00492921 /* ISQuizParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ISQuizParser.m; sourceTree = ""; }; + 566D5FFB1AC5D1FE00492921 /* ISSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISSession.h; sourceTree = ""; }; + 566D5FFC1AC5D1FE00492921 /* ISSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ISSession.m; sourceTree = ""; }; + 566D5FFD1AC5D1FE00492921 /* ISTrueFalseQuestion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISTrueFalseQuestion.h; sourceTree = ""; }; + 566D5FFE1AC5D1FE00492921 /* ISTrueFalseQuestion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ISTrueFalseQuestion.m; sourceTree = ""; }; + 566D60061AC5D23500492921 /* QuizController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuizController.h; sourceTree = ""; }; + 566D60071AC5D23500492921 /* QuizViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuizViewController.h; sourceTree = ""; }; + 566D60081AC5D23500492921 /* QuizViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QuizViewController.m; sourceTree = ""; }; + 566D60091AC5D23500492921 /* QuizViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = QuizViewController.xib; sourceTree = ""; }; + 566D600A1AC5D23500492921 /* OpenQuestionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenQuestionViewController.h; sourceTree = ""; }; + 566D600B1AC5D23500492921 /* OpenQuestionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OpenQuestionViewController.m; sourceTree = ""; }; + 566D600C1AC5D23500492921 /* OpenQuestionViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = OpenQuestionViewController.xib; sourceTree = ""; }; + 566D600D1AC5D23500492921 /* TrueFalseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrueFalseViewController.h; sourceTree = ""; }; + 566D600E1AC5D23500492921 /* TrueFalseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TrueFalseViewController.m; sourceTree = ""; }; + 566D600F1AC5D23500492921 /* TrueFalseViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TrueFalseViewController.xib; sourceTree = ""; }; + 566D601C1AC5D27700492921 /* programming.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = programming.plist; sourceTree = ""; }; + 566E7C621C7E5BDB00D0ACFE /* DTAlertView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DTAlertView.h; sourceTree = ""; }; + 566E7C631C7E5BDB00D0ACFE /* DTAlertView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DTAlertView.m; sourceTree = ""; }; + 566E7C641C7E5BDB00D0ACFE /* DTProgressStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DTProgressStatus.h; sourceTree = ""; }; + 566E7C651C7E5BDB00D0ACFE /* DTProgressStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DTProgressStatus.m; sourceTree = ""; }; + 566E7C681C7EB44C00D0ACFE /* MyAlertView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyAlertView.h; sourceTree = ""; }; + 566E7C691C7EB44C00D0ACFE /* MyAlertView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyAlertView.m; sourceTree = ""; }; + 566EB44D18DADC0700BBC067 /* idea.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = idea.png; sourceTree = ""; }; + 566F09BE1721C15800412952 /* speak.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = speak.png; sourceTree = ""; }; + 566F09C01721C17400412952 /* question.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = question.png; sourceTree = ""; }; + 566F09CC17220A2700412952 /* NoteView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NoteView.xib; sourceTree = ""; }; + 566F09CF17220B6F00412952 /* NoteViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NoteViewController.h; sourceTree = ""; }; + 566F09D017220B6F00412952 /* NoteViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NoteViewController.m; sourceTree = ""; }; + 566FF04418AC079A0094FB6A /* CmapView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CmapView.xib; sourceTree = ""; }; + 56711DED17B76FFC001B4585 /* LSTintedButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSTintedButton.h; sourceTree = ""; }; + 56711DEE17B77005001B4585 /* LSTintedButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSTintedButton.m; sourceTree = ""; }; + 56711DF017B77010001B4585 /* LSTabControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSTabControl.h; sourceTree = ""; }; + 56711DF117B77010001B4585 /* LSTabControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSTabControl.m; sourceTree = ""; }; + 56711DF217B77010001B4585 /* LSTabControl_Protected.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSTabControl_Protected.h; sourceTree = ""; }; + 56711DF417B7701B001B4585 /* LSTabItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSTabItem.h; sourceTree = ""; }; + 56711DF517B7701B001B4585 /* LSTabItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSTabItem.m; sourceTree = ""; }; + 56711DF617B7701B001B4585 /* LSTabBarView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSTabBarView.h; sourceTree = ""; }; + 56711DF717B7701B001B4585 /* LSTabBarView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSTabBarView.m; sourceTree = ""; }; + 56711DF817B7701B001B4585 /* LSTabBarView_Protected.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSTabBarView_Protected.h; sourceTree = ""; }; + 56711DF917B7701B001B4585 /* LSScrollTabBarView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSScrollTabBarView.h; sourceTree = ""; }; + 56711DFA17B7701B001B4585 /* LSScrollTabBarView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSScrollTabBarView.m; sourceTree = ""; }; + 56711DFB17B7701B001B4585 /* LSScrollTabBarView_Protected.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSScrollTabBarView_Protected.h; sourceTree = ""; }; + 56711E0017B7704B001B4585 /* HorizontalTabControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HorizontalTabControl.h; sourceTree = ""; }; + 56711E0117B7704B001B4585 /* HorizontalTabControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HorizontalTabControl.m; sourceTree = ""; }; + 56711E0317B77057001B4585 /* LSHorizontalScrollTabViewDemoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSHorizontalScrollTabViewDemoViewController.h; sourceTree = ""; }; + 56711E0417B77057001B4585 /* LSHorizontalScrollTabViewDemoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSHorizontalScrollTabViewDemoViewController.m; sourceTree = ""; }; + 56711E0517B77057001B4585 /* LSHorizontalScrollTabView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LSHorizontalScrollTabView.xib; sourceTree = ""; }; + 56711E0817B77075001B4585 /* controlpanel_view_background@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "controlpanel_view_background@2x~ipad.png"; sourceTree = ""; }; + 56711E0917B77075001B4585 /* scrolltabs_horizontal_border.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = scrolltabs_horizontal_border.png; sourceTree = ""; }; + 56711E0A17B77075001B4585 /* TabNormal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabNormal.png; sourceTree = ""; }; + 56711E0B17B77075001B4585 /* TabSelected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabSelected.png; sourceTree = ""; }; + 56711E1117B770B1001B4585 /* BadgeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BadgeView.h; sourceTree = ""; }; + 56711E1217B770B1001B4585 /* BadgeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BadgeView.m; sourceTree = ""; }; + 56711E1317B770B1001B4585 /* ColorPickerBackgroundView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColorPickerBackgroundView.h; sourceTree = ""; }; + 56711E1417B770B1001B4585 /* ColorPickerBackgroundView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ColorPickerBackgroundView.m; sourceTree = ""; }; + 56711E1517B770B1001B4585 /* DrawingUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawingUtilities.h; sourceTree = ""; }; + 56711E1617B770B1001B4585 /* DrawingUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DrawingUtilities.m; sourceTree = ""; }; + 56711E1717B770B1001B4585 /* UIImage+shortcuts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+shortcuts.h"; sourceTree = ""; }; + 56711E1817B770B1001B4585 /* UIImage+shortcuts.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+shortcuts.m"; sourceTree = ""; }; + 56711E1917B770B1001B4585 /* UIView+Addictions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Addictions.h"; sourceTree = ""; }; + 56711E1A17B770B1001B4585 /* UIView+Addictions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Addictions.m"; sourceTree = ""; }; + 56711E2D17B7834B001B4585 /* tab-back.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "tab-back.png"; sourceTree = ""; }; + 56727D77171E386800ACD92D /* WebBrowserViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebBrowserViewController.h; sourceTree = ""; }; + 56727D78171E386800ACD92D /* WebBrowserViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebBrowserViewController.m; sourceTree = ""; }; + 56727D79171E386800ACD92D /* WebBrowserViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WebBrowserViewController.xib; sourceTree = ""; }; + 56727D83171F290D00ACD92D /* noteTaking.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = noteTaking.png; sourceTree = ""; }; + 56727D89171F2B0300ACD92D /* take_note.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = take_note.png; sourceTree = ""; }; + 56727D8D171FD12B00ACD92D /* noteIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = noteIcon.png; sourceTree = ""; }; + 56746BFD194CFD8F00805820 /* CmapLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CmapLink.h; sourceTree = ""; }; + 56746BFE194CFD8F00805820 /* CmapLink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CmapLink.m; sourceTree = ""; }; + 56746C00194D00D600805820 /* CmapLinkWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CmapLinkWrapper.h; sourceTree = ""; }; + 56746C01194D00D600805820 /* CmapLinkWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CmapLinkWrapper.m; sourceTree = ""; }; + 56746C03194D018400805820 /* CmapLinkParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CmapLinkParser.h; sourceTree = ""; }; + 56746C04194D018400805820 /* CmapLinkParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CmapLinkParser.m; sourceTree = ""; }; + 56746C07194E3C8600805820 /* ConceptLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConceptLink.h; sourceTree = ""; }; + 56746C08194E3C8600805820 /* ConceptLink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConceptLink.m; sourceTree = ""; }; + 56746C0A194E54B200805820 /* RelationTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RelationTextView.h; sourceTree = ""; }; + 56746C0B194E54B200805820 /* RelationTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RelationTextView.m; sourceTree = ""; }; + 56746C0E1950C2D400805820 /* MBProgressHUD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; + 56746C0F1950C2D400805820 /* MBProgressHUD.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; + 56746C111950C4D000805820 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; + 56784B751C97C39800FBBC6B /* TrainingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrainingViewController.h; sourceTree = ""; }; + 56784B761C97C39800FBBC6B /* TrainingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TrainingViewController.m; sourceTree = ""; }; + 56784B771C97C39800FBBC6B /* TrainingViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TrainingViewController.xib; sourceTree = ""; }; + 567924BC1B12E673007B5038 /* error2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = error2.png; sourceTree = ""; }; + 567924BE1B12E7BB007B5038 /* finder_alert.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = finder_alert.png; sourceTree = ""; }; + 567924BF1B12E7BB007B5038 /* finder_error.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = finder_error.png; sourceTree = ""; }; + 567924C01B12E7BB007B5038 /* finder_finish.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = finder_finish.png; sourceTree = ""; }; + 567924C11B12E7BB007B5038 /* finder_stop.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = finder_stop.png; sourceTree = ""; }; + 567E5C3F17B2234F0047F995 /* ThumbNailIcon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThumbNailIcon.h; sourceTree = ""; }; + 567E5C4017B2234F0047F995 /* ThumbNailIcon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThumbNailIcon.m; sourceTree = ""; }; + 568251A518B48A2100F6412B /* Screen Shot 2014-02-18 at 11.43.22 PM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Screen Shot 2014-02-18 at 11.43.22 PM.png"; sourceTree = ""; }; + 568251A718B48A6300F6412B /* cmap.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cmap.png; sourceTree = ""; }; + 568322F51B12EFED00D3C3D5 /* alert_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = alert_small.png; sourceTree = ""; }; + 568322F61B12EFED00D3C3D5 /* error_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = error_small.png; sourceTree = ""; }; + 568322F71B12EFED00D3C3D5 /* finish_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = finish_small.png; sourceTree = ""; }; + 568322F81B12EFED00D3C3D5 /* stop_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stop_small.png; sourceTree = ""; }; + 56887F081C9872F000467A76 /* hintbulb.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hintbulb.png; sourceTree = ""; }; + 568BFE3519C0BBDA00C55843 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; + 568BFE4E19C109D900C55843 /* GoogleDriveViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GoogleDriveViewController.h; sourceTree = ""; }; + 568BFE4F19C109D900C55843 /* GoogleDriveViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GoogleDriveViewController.m; sourceTree = ""; }; + 568BFE5319C1229B00C55843 /* DropboxSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = DropboxSDK.framework; sourceTree = ""; }; + 569262E01C17838A0086BA9E /* Dog.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Dog.png; sourceTree = ""; }; + 569262E31C18AEDD0086BA9E /* VideoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoViewController.h; sourceTree = ""; }; + 569262E41C18AEDD0086BA9E /* VideoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoViewController.m; sourceTree = ""; }; + 569262E51C18AEDD0086BA9E /* VideoViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = VideoViewController.xib; sourceTree = ""; }; + 5693B3F719006E6A00AABE27 /* CmapScrollViewViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CmapScrollViewViewController.h; sourceTree = ""; }; + 5693B3F819006E6A00AABE27 /* CmapScrollViewViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CmapScrollViewViewController.m; sourceTree = ""; }; + 5693B3F919006E6A00AABE27 /* CmapScrollViewViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CmapScrollViewViewController.xib; sourceTree = ""; }; + 569407F0193959ED00D5294F /* ResrouceThumbViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResrouceThumbViewController.h; sourceTree = ""; }; + 569407F1193959ED00D5294F /* ResrouceThumbViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResrouceThumbViewController.m; sourceTree = ""; }; + 569407F31939A28A00D5294F /* safari_square.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = safari_square.png; sourceTree = ""; }; + 569407F51939A2E400D5294F /* note_square.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = note_square.png; sourceTree = ""; }; + 569407F71939B40B00D5294F /* colorPlate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = colorPlate.png; sourceTree = ""; }; + 56955C1B18DCDAD60073A64C /* PFAxisDirection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PFAxisDirection.h; sourceTree = ""; }; + 56955C1C18DCDAD60073A64C /* PFGoldenSectionSpiral.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PFGoldenSectionSpiral.h; sourceTree = ""; }; + 56955C1D18DCDAD60073A64C /* PFGoldenSectionSpiral.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PFGoldenSectionSpiral.m; sourceTree = ""; }; + 56955C1E18DCDAD60073A64C /* PFMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PFMatrix.h; sourceTree = ""; }; + 56955C1F18DCDAD60073A64C /* PFMatrixTransform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PFMatrixTransform.h; sourceTree = ""; }; + 56955C2018DCDAD60073A64C /* PFPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PFPoint.h; sourceTree = ""; }; + 56955C2118DCDAD60073A64C /* PFRadian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PFRadian.h; sourceTree = ""; }; + 56955C2218DCDAD60073A64C /* ZYQSphereView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZYQSphereView.h; sourceTree = ""; }; + 56955C2318DCDAD60073A64C /* ZYQSphereView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZYQSphereView.m; sourceTree = ""; }; + 56955C2718DCDC4E0073A64C /* SampleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SampleViewController.h; sourceTree = ""; }; + 56955C2818DCDC4E0073A64C /* SampleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SampleViewController.m; sourceTree = ""; }; + 5695D6691C39ADDF00C65227 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; + 5695D66B1C39ADE500C65227 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; + 5695D66D1C39ADF900C65227 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + 56A869C81C63F60B00CD6CC9 /* StudentData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StudentData.h; sourceTree = ""; }; + 56A869C91C63F60B00CD6CC9 /* StudentData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StudentData.m; sourceTree = ""; }; + 56A869CB1C63F65B00CD6CC9 /* StudentDataWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StudentDataWrapper.h; sourceTree = ""; }; + 56A869CC1C63F65B00CD6CC9 /* StudentDataWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StudentDataWrapper.m; sourceTree = ""; }; + 56A869CE1C63F6B900CD6CC9 /* StudentDataParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StudentDataParser.h; sourceTree = ""; }; + 56A869CF1C63F6B900CD6CC9 /* StudentDataParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StudentDataParser.m; sourceTree = ""; }; + 56AB71FA1C6EA66800FEB7BE /* preview.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = preview.png; sourceTree = ""; }; + 56ACC30019E3A804008D4304 /* LogData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogData.h; sourceTree = ""; }; + 56ACC30119E3A804008D4304 /* LogData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LogData.m; sourceTree = ""; }; + 56ACC30319E3AAB5008D4304 /* LogDataWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogDataWrapper.h; sourceTree = ""; }; + 56ACC30419E3AAB5008D4304 /* LogDataWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LogDataWrapper.m; sourceTree = ""; }; + 56ACC30619E3AE23008D4304 /* LogDataParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogDataParser.h; sourceTree = ""; }; + 56ACC30719E3AE23008D4304 /* LogDataParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LogDataParser.m; sourceTree = ""; }; + 56AFB3881B0ACF240048E036 /* switch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = switch.png; sourceTree = ""; }; + 56AFB38A1B0B04190048E036 /* QAIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = QAIcon.png; sourceTree = ""; }; + 56B0B97E18C50B9F0016783E /* MainWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainWindowController.h; sourceTree = ""; }; + 56B0B97F18C50B9F0016783E /* MainWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainWindowController.m; sourceTree = ""; }; + 56B0B98118C50F560016783E /* CmapView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CmapView.h; sourceTree = ""; }; + 56B0B98218C50F560016783E /* CmapView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CmapView.m; sourceTree = ""; }; + 56B0B98418C512FC0016783E /* NodeCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeCell.h; sourceTree = ""; }; + 56B0B98518C512FC0016783E /* NodeCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NodeCell.m; sourceTree = ""; }; + 56B0B98718C5133F0016783E /* NodeCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NodeCell.xib; sourceTree = ""; }; + 56B0B98A18C522080016783E /* GHContextMenuView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHContextMenuView.h; sourceTree = ""; }; + 56B0B98B18C522080016783E /* GHContextMenuView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHContextMenuView.m; sourceTree = ""; }; + 56B0B98D18C523B90016783E /* facebook-white.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "facebook-white.png"; sourceTree = ""; }; + 56B0B98E18C523B90016783E /* google-plus-white.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "google-plus-white.png"; sourceTree = ""; }; + 56B0B98F18C523B90016783E /* linkedin-white.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "linkedin-white.png"; sourceTree = ""; }; + 56B0B99018C523B90016783E /* pinterest-white.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "pinterest-white.png"; sourceTree = ""; }; + 56B0B99118C523B90016783E /* twitter-white.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "twitter-white.png"; sourceTree = ""; }; + 56B0B99918C526740016783E /* link.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = link.png; sourceTree = ""; }; + 56B0B99F18C529110016783E /* addConcpetNode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = addConcpetNode.png; sourceTree = ""; }; + 56B1BDB2170031CB0056FEE3 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 56B1BDBC170107840056FEE3 /* navigation_bar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = navigation_bar.png; sourceTree = ""; }; + 56B7BB4A170CD4B100037E9E /* underline2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = underline2.png; sourceTree = ""; }; + 56B7BB4C170CD73E00037E9E /* undo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = undo.png; sourceTree = ""; }; + 56B7BB4F170CE51000037E9E /* PopoverView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PopoverView.h; sourceTree = ""; }; + 56B7BB50170CE51000037E9E /* PopoverView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PopoverView.m; sourceTree = ""; }; + 56B7BB52170CE52D00037E9E /* PopoverView_Configuration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PopoverView_Configuration.h; sourceTree = ""; }; + 56B7BB55170CE82300037E9E /* OCDaysView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCDaysView.h; sourceTree = ""; }; + 56B7BB56170CE82300037E9E /* OCDaysView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCDaysView.m; sourceTree = ""; }; + 56B7BB58170CECEB00037E9E /* error.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = error.png; sourceTree = ""; }; + 56B7BB5A170CECF000037E9E /* success.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = success.png; sourceTree = ""; }; + 56B8C1361C55A4D1002187A9 /* iconLeft.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = iconLeft.png; sourceTree = ""; }; + 56B8C1371C55A4D1002187A9 /* iconRight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = iconRight.png; sourceTree = ""; }; + 56B8C13C1C55E080002187A9 /* upload-dsym.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "upload-dsym.sh"; sourceTree = ""; }; + 56B8C13F1C56053E002187A9 /* TestFairy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestFairy.h; sourceTree = ""; }; + 56B8C1401C560550002187A9 /* libTestFairy.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libTestFairy.a; sourceTree = ""; }; + 56BD58801C7E1FF100283AC3 /* trade.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = trade.bundle; sourceTree = ""; }; + 56BD58811C7E1FF100283AC3 /* UIView+Extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Extension.h"; sourceTree = ""; }; + 56BD58821C7E1FF100283AC3 /* UIView+Extension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Extension.m"; sourceTree = ""; }; + 56BD58831C7E1FF100283AC3 /* NSString+Extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+Extension.h"; sourceTree = ""; }; + 56BD58841C7E1FF100283AC3 /* NSString+Extension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Extension.m"; sourceTree = ""; }; + 56BD58851C7E1FF100283AC3 /* UIAlertView+Quick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIAlertView+Quick.h"; sourceTree = ""; }; + 56BD58861C7E1FF100283AC3 /* UIAlertView+Quick.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIAlertView+Quick.m"; sourceTree = ""; }; + 56BD58871C7E1FF100283AC3 /* ZCTradeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZCTradeView.h; sourceTree = ""; }; + 56BD58881C7E1FF100283AC3 /* ZCTradeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZCTradeView.m; sourceTree = ""; }; + 56BD58891C7E1FF100283AC3 /* ZCTradeInputView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZCTradeInputView.h; sourceTree = ""; }; + 56BD588A1C7E1FF100283AC3 /* ZCTradeInputView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZCTradeInputView.m; sourceTree = ""; }; + 56BD588B1C7E1FF100283AC3 /* ZCTradeKeyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZCTradeKeyboard.h; sourceTree = ""; }; + 56BD588C1C7E1FF100283AC3 /* ZCTradeKeyboard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZCTradeKeyboard.m; sourceTree = ""; }; + 56BD588D1C7E1FF100283AC3 /* Singleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Singleton.h; sourceTree = ""; }; + 56BD588E1C7E1FF100283AC3 /* ZCAudioTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZCAudioTool.h; sourceTree = ""; }; + 56BD588F1C7E1FF100283AC3 /* ZCAudioTool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZCAudioTool.m; sourceTree = ""; }; + 56BD58991C7E20B600283AC3 /* NSString+FontAwesome.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+FontAwesome.h"; sourceTree = ""; }; + 56BD589A1C7E20B600283AC3 /* NSString+FontAwesome.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+FontAwesome.m"; sourceTree = ""; }; + 56BD589B1C7E20B600283AC3 /* UIButton+Bootstrap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIButton+Bootstrap.h"; sourceTree = ""; }; + 56BD589C1C7E20B600283AC3 /* UIButton+Bootstrap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIButton+Bootstrap.m"; sourceTree = ""; }; + 56BD589D1C7E20B600283AC3 /* FontAwesome.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome.ttf; sourceTree = ""; }; + 56BF7F251ADEE94900B015C6 /* ExpertCmapLinkList.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ExpertCmapLinkList.xml; sourceTree = ""; }; + 56BF7F261ADEE94900B015C6 /* ExpertCmapNodeList.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ExpertCmapNodeList.xml; sourceTree = ""; }; + 56C69D461725D2AD009419B3 /* WebMarkController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebMarkController.h; sourceTree = ""; }; + 56C69D471725D2AD009419B3 /* WebMarkController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebMarkController.m; sourceTree = ""; }; + 56C69D481725D2AD009419B3 /* WebMarkController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WebMarkController.xib; sourceTree = ""; }; + 56C69D4B1725D40B009419B3 /* safari.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = safari.png; sourceTree = ""; }; + 56C69D521727BE5B009419B3 /* EpubSampleNick.epub */ = {isa = PBXFileReference; lastKnownFileType = file; path = EpubSampleNick.epub; sourceTree = ""; }; + 56C69D551727BF74009419B3 /* Bio.epub */ = {isa = PBXFileReference; lastKnownFileType = file; path = Bio.epub; sourceTree = ""; }; + 56CB3D6418FD23E4003FE954 /* ConceptThubm.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ConceptThubm.png; sourceTree = ""; }; + 56D76C1318BC04BB0041FA56 /* DragView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DragView.h; sourceTree = ""; }; + 56D76C1418BC04BB0041FA56 /* DragView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DragView.m; sourceTree = ""; }; + 56D76C1E18BC05140041FA56 /* ConceptNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConceptNode.h; sourceTree = ""; }; + 56D76C1F18BC05140041FA56 /* ConceptNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConceptNode.m; sourceTree = ""; }; + 56D76C2018BC05140041FA56 /* Connection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Connection.h; sourceTree = ""; }; + 56D76C2118BC05140041FA56 /* Connection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Connection.m; sourceTree = ""; }; + 56D76C2218BC05140041FA56 /* GroupingNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupingNode.h; sourceTree = ""; }; + 56D76C2318BC05140041FA56 /* GroupingNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupingNode.m; sourceTree = ""; }; + 56D76C2418BC05140041FA56 /* Node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Node.h; sourceTree = ""; }; + 56D76C2518BC05140041FA56 /* Node.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Node.m; sourceTree = ""; }; + 56D76C2618BC05140041FA56 /* Relation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Relation.h; sourceTree = ""; }; + 56D76C2718BC05140041FA56 /* Relation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Relation.m; sourceTree = ""; }; + 56D76C2E18BC065B0041FA56 /* Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Base64.h; sourceTree = ""; }; + 56D76C2F18BC065B0041FA56 /* Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Base64.m; sourceTree = ""; }; + 56D76C3018BC065B0041FA56 /* CMapImporterExporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMapImporterExporter.h; sourceTree = ""; }; + 56D76C3118BC065B0041FA56 /* CMapImporterExporter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMapImporterExporter.m; sourceTree = ""; }; + 56D76C3218BC065B0041FA56 /* NSString+XMLEntities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+XMLEntities.h"; sourceTree = ""; }; + 56D76C3318BC065B0041FA56 /* NSString+XMLEntities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+XMLEntities.m"; sourceTree = ""; }; + 56E31A2E172D063D0066C55D /* Experiment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Experiment.h; sourceTree = ""; }; + 56E31A2F172D063D0066C55D /* Experiment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Experiment.m; sourceTree = ""; }; + 56E9B03218DE48AF00AADD2E /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; }; + 56E9B03818DE522E00AADD2E /* blurWallPaper.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = blurWallPaper.png; sourceTree = ""; }; + 56EF20A119BF7F6E00A22FC8 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; + 56F02EB4178FA29100C310F9 /* ThumbNailController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThumbNailController.h; sourceTree = ""; }; + 56F02EB5178FA29100C310F9 /* ThumbNailController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThumbNailController.m; sourceTree = ""; }; + 56F04AB11B6453250092A523 /* LogInViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogInViewController.h; sourceTree = ""; }; + 56F04AB21B6453250092A523 /* LogInViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LogInViewController.m; sourceTree = ""; }; + 56F04AB61B645CDA0092A523 /* LoginBG.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = LoginBG.jpg; sourceTree = ""; }; + 56F04AB81B6463350092A523 /* LoginForm.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = LoginForm.jpg; sourceTree = ""; }; + 56F04ABA1B6464A50092A523 /* LoginButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = LoginButton.png; sourceTree = ""; }; + 56F30E4018F5124F00E8ECEF /* UIView+i7Rotate360.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+i7Rotate360.h"; sourceTree = ""; }; + 56F30E4118F5124F00E8ECEF /* UIView+i7Rotate360.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+i7Rotate360.m"; sourceTree = ""; }; + 56F30E4318F5130A00E8ECEF /* wait.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = wait.png; sourceTree = ""; }; + 56F935E31B0DBF1D00138A1A /* QAWeb.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = QAWeb.png; sourceTree = ""; }; + 56F935E51B0DC3A500138A1A /* QAFinderViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QAFinderViewController.h; sourceTree = ""; }; + 56F935E61B0DC3A500138A1A /* QAFinderViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QAFinderViewController.m; sourceTree = ""; }; + 56F935E71B0DC3A500138A1A /* QAFinderViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = QAFinderViewController.xib; sourceTree = ""; }; + 56FB60D717286999008C1F0B /* KnowledgeModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KnowledgeModule.h; sourceTree = ""; }; + 56FB60D817286999008C1F0B /* KnowledgeModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KnowledgeModule.m; sourceTree = ""; }; + 56FB60DA17286AFA008C1F0B /* Concept.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Concept.h; sourceTree = ""; }; + 56FB60DB17286AFA008C1F0B /* Concept.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Concept.m; sourceTree = ""; }; + 56FB670E1BCE241D00006AF0 /* PreViewNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreViewNode.h; sourceTree = ""; }; + 56FB670F1BCE241D00006AF0 /* PreViewNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PreViewNode.m; sourceTree = ""; }; + 56FB67101BCE241D00006AF0 /* PreViewNode.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PreViewNode.xib; sourceTree = ""; }; + 56FB67131BCE2C3F00006AF0 /* BookPageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BookPageViewController.h; sourceTree = ""; }; + 56FB67141BCE2C3F00006AF0 /* BookPageViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BookPageViewController.m; sourceTree = ""; }; + 56FB67151BCE2C3F00006AF0 /* BookPageViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BookPageViewController.xib; sourceTree = ""; }; + 56FB67181BCE2CDF00006AF0 /* blueDot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = blueDot.png; sourceTree = ""; }; + 56FB67191BCE2CDF00006AF0 /* blueRec.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = blueRec.png; sourceTree = ""; }; + 56FFE96719DBD31400364476 /* NodeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeViewController.h; sourceTree = ""; }; + 56FFE96819DBD31400364476 /* NodeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NodeViewController.m; sourceTree = ""; }; + 56FFE96919DBD31400364476 /* NodeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NodeViewController.xib; sourceTree = ""; }; + 56FFE97019DC70D100364476 /* SubNodeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubNodeViewController.h; sourceTree = ""; }; + 56FFE97119DC70D100364476 /* SubNodeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SubNodeViewController.m; sourceTree = ""; }; + 56FFE97219DC70D100364476 /* SubNodeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SubNodeViewController.xib; sourceTree = ""; }; + 5D89A401C8A81D714D393495 /* libPods-TurkStudyTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TurkStudyTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 68D1BF011D887BF100BD09D1 /* TylerTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TylerTextView.h; sourceTree = ""; }; + 68D1BF021D887BF100BD09D1 /* TylerTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TylerTextView.m; sourceTree = ""; }; + 68D1BF041D9AF9C600BD09D1 /* Node_Small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Node_Small.png; sourceTree = ""; }; + 68D1BF051D9AF9C600BD09D1 /* Safarai_White.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Safarai_White.png; sourceTree = ""; }; + 68D1BF081DB6B68B00BD09D1 /* webbrowser.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = webbrowser.png; sourceTree = ""; }; + 68D1BF0A1DBFFE3E00BD09D1 /* aa.epub */ = {isa = PBXFileReference; lastKnownFileType = file; path = aa.epub; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3166DB4C16B0A5300089C0F2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5695D66E1C39ADF900C65227 /* OpenGLES.framework in Frameworks */, + 5615BAEE171A032B0002B275 /* SystemConfiguration.framework in Frameworks */, + 564FCEC3174B65B300790086 /* AVFoundation.framework in Frameworks */, + 56B8C1411C560550002187A9 /* libTestFairy.a in Frameworks */, + 5695D66C1C39ADE500C65227 /* CoreMotion.framework in Frameworks */, + 5695D66A1C39ADDF00C65227 /* CoreMedia.framework in Frameworks */, + 5647354A181AF1EC00EE1640 /* OpenEars.framework in Frameworks */, + 56B6B7C8189C4AB700F3F400 /* Slt.framework in Frameworks */, + 5615BAEC171A031C0002B275 /* CFNetwork.framework in Frameworks */, + 568BFE5419C1229B00C55843 /* DropboxSDK.framework in Frameworks */, + 568BFE3619C0BBDA00C55843 /* MobileCoreServices.framework in Frameworks */, + 56EF20A219BF7F6E00A22FC8 /* Security.framework in Frameworks */, + 56746C121950C4D000805820 /* Accelerate.framework in Frameworks */, + 56E9B03318DE48AF00AADD2E /* CoreImage.framework in Frameworks */, + 564C424D17060E0400B320EF /* QuartzCore.framework in Frameworks */, + 5615BAEA171A02F30002B275 /* AudioToolbox.framework in Frameworks */, + 5604454817176734002368D7 /* libz.dylib in Frameworks */, + 3166DB5416B0A5300089C0F2 /* UIKit.framework in Frameworks */, + 3166DB5616B0A5300089C0F2 /* Foundation.framework in Frameworks */, + 3166DB5816B0A5300089C0F2 /* CoreGraphics.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3166DB7B16B0A5300089C0F2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3166DB8216B0A5300089C0F2 /* UIKit.framework in Frameworks */, + 56B1BDB3170031CB0056FEE3 /* QuartzCore.framework in Frameworks */, + 3166DB8316B0A5300089C0F2 /* Foundation.framework in Frameworks */, + 3E4976BCB03DEADAA62C1D07 /* libPods-TurkStudyTests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 315F0AE016CC186C00300B19 /* Pictures */ = { + isa = PBXGroup; + children = ( + 561D1AFB1C86894100D3AF47 /* CmapIcon.png */, + 562484371CA5E2EA000C9115 /* orangeRec.png */, + 56B8C1361C55A4D1002187A9 /* iconLeft.png */, + 56B8C1371C55A4D1002187A9 /* iconRight.png */, + 56F04ABA1B6464A50092A523 /* LoginButton.png */, + 56F04AB61B645CDA0092A523 /* LoginBG.jpg */, + 56F04AB81B6463350092A523 /* LoginForm.jpg */, + 567924BE1B12E7BB007B5038 /* finder_alert.png */, + 567924BF1B12E7BB007B5038 /* finder_error.png */, + 567924C01B12E7BB007B5038 /* finder_finish.png */, + 567924C11B12E7BB007B5038 /* finder_stop.png */, + 569407F71939B40B00D5294F /* colorPlate.png */, + 568322F51B12EFED00D3C3D5 /* alert_small.png */, + 568322F61B12EFED00D3C3D5 /* error_small.png */, + 68D1BF041D9AF9C600BD09D1 /* Node_Small.png */, + 68D1BF051D9AF9C600BD09D1 /* Safarai_White.png */, + 568322F71B12EFED00D3C3D5 /* finish_small.png */, + 568322F81B12EFED00D3C3D5 /* stop_small.png */, + 56AFB38A1B0B04190048E036 /* QAIcon.png */, + 56F935E31B0DBF1D00138A1A /* QAWeb.png */, + 569407F51939A2E400D5294F /* note_square.png */, + 569407F31939A28A00D5294F /* safari_square.png */, + 567924BC1B12E673007B5038 /* error2.png */, + 5651D62019079CFD0088E733 /* bb.png */, + 56AFB3881B0ACF240048E036 /* switch.png */, + 56CB3D6418FD23E4003FE954 /* ConceptThubm.png */, + 68D1BF081DB6B68B00BD09D1 /* webbrowser.png */, + 56F30E4318F5130A00E8ECEF /* wait.png */, + 56B1BDBC170107840056FEE3 /* navigation_bar.png */, + 56452509170A5D09005E2D17 /* cover_default.png */, + 566F09BE1721C15800412952 /* speak.png */, + 56C69D4B1725D40B009419B3 /* safari.png */, + 56727D8D171FD12B00ACD92D /* noteIcon.png */, + 56727D89171F2B0300ACD92D /* take_note.png */, + 566F09C01721C17400412952 /* question.png */, + 56B7BB5A170CECF000037E9E /* success.png */, + 56B7BB58170CECEB00037E9E /* error.png */, + 564C425617064D7800B320EF /* highlight_yellow.png */, + 564C425817064D7B00B320EF /* highlight_blue.png */, + 564C425417064A7000B320EF /* highlight_green.png */, + 564C425A17064D7E00B320EF /* highlight_red.png */, + 564C425C17064D8300B320EF /* highlight_purple.png */, + 56B7BB4A170CD4B100037E9E /* underline2.png */, + 56727D83171F290D00ACD92D /* noteTaking.png */, + 56B7BB4C170CD73E00037E9E /* undo.png */, + 315F0AE116CC186C00300B19 /* bookshelf_vertical.png */, + 315F0AE216CC186C00300B19 /* bookshelf_horizontal.png */, + ); + path = Pictures; + sourceTree = ""; + }; + 3166DB4416B0A5300089C0F2 = { + isa = PBXGroup; + children = ( + 3166DB5916B0A5300089C0F2 /* eBookReader */, + 56434C841C7130A700509960 /* TouchTest */, + 3166DB5216B0A5300089C0F2 /* Frameworks */, + 3166DB5016B0A5300089C0F2 /* Products */, + ); + sourceTree = ""; + }; + 3166DB5016B0A5300089C0F2 /* Products */ = { + isa = PBXGroup; + children = ( + 3166DB4F16B0A5300089C0F2 /* Study.app */, + 3166DB7F16B0A5300089C0F2 /* Study.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 3166DB5216B0A5300089C0F2 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5695D66D1C39ADF900C65227 /* OpenGLES.framework */, + 5695D66B1C39ADE500C65227 /* CoreMotion.framework */, + 5695D6691C39ADDF00C65227 /* CoreMedia.framework */, + 568BFE5319C1229B00C55843 /* DropboxSDK.framework */, + 568BFE3519C0BBDA00C55843 /* MobileCoreServices.framework */, + 56EF20A119BF7F6E00A22FC8 /* Security.framework */, + 56746C111950C4D000805820 /* Accelerate.framework */, + 560B2F4E18EBD85D009B8CB7 /* XCTest.framework */, + 56E9B03218DE48AF00AADD2E /* CoreImage.framework */, + 5647354B181AF1F100EE1640 /* Slt.framework */, + 56473549181AF1EC00EE1640 /* OpenEars.framework */, + 56473547181AF0CE00EE1640 /* AcousticModelSpanish.bundle */, + 56473545181AF0BD00EE1640 /* AcousticModelEnglish.bundle */, + 564FCEC2174B65B300790086 /* AVFoundation.framework */, + 5604454717176734002368D7 /* libz.dylib */, + 56B1BDB2170031CB0056FEE3 /* QuartzCore.framework */, + 3166DB5316B0A5300089C0F2 /* UIKit.framework */, + 3166DB5516B0A5300089C0F2 /* Foundation.framework */, + 5615BAED171A032B0002B275 /* SystemConfiguration.framework */, + 5615BAEB171A031C0002B275 /* CFNetwork.framework */, + 5615BAE9171A02F30002B275 /* AudioToolbox.framework */, + 3166DB5716B0A5300089C0F2 /* CoreGraphics.framework */, + 0C38CE2BF8B5F65AF31BB6AC /* libPods-TouchTest.a */, + 5D89A401C8A81D714D393495 /* libPods-TurkStudyTests.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 3166DB5916B0A5300089C0F2 /* eBookReader */ = { + isa = PBXGroup; + children = ( + 5695D6631C39ADAC00C65227 /* TestFairy */, + 56D563921ADC71CD0060574D /* Resource */, + 566D601B1AC5D25C00492921 /* quizzes */, + 5652080E17041AF1003272B0 /* JavaScript */, + 315F0AE016CC186C00300B19 /* Pictures */, + 31DA906D16C3303E000DA6A3 /* External Libraries */, + 31A8258A16C2E11A00F18C1D /* Model */, + 31A8258916C2E0F700F18C1D /* View */, + 31A8258B16C2E13500F18C1D /* Controller */, + ); + path = eBookReader; + sourceTree = ""; + }; + 3166DB5A16B0A5300089C0F2 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 560B2F5B18EBE044009B8CB7 /* pics */, + 56E9B03818DE522E00AADD2E /* blurWallPaper.png */, + 566EB44D18DADC0700BBC067 /* idea.png */, + 561C0D5718C52B7900B223D3 /* edit.png */, + 561C0D5518C52ABD00B223D3 /* deleteConcept.png */, + 56B0B99F18C529110016783E /* addConcpetNode.png */, + 56B0B99918C526740016783E /* link.png */, + 56B0B98D18C523B90016783E /* facebook-white.png */, + 56B0B98E18C523B90016783E /* google-plus-white.png */, + 56B0B98F18C523B90016783E /* linkedin-white.png */, + 56B0B99018C523B90016783E /* pinterest-white.png */, + 56B0B99118C523B90016783E /* twitter-white.png */, + 568251A718B48A6300F6412B /* cmap.png */, + 56465CD317B8AF8200EE38FC /* TabNormal_skyBlue.png */, + 56465CD417B8AF8200EE38FC /* TabNormal_green.png */, + 56465CD517B8AF8300EE38FC /* TabNormal_purple.png */, + 56465CD617B8AF8300EE38FC /* TabNormal_red.png */, + 56711E0817B77075001B4585 /* controlpanel_view_background@2x~ipad.png */, + 56465CD117B8813C00EE38FC /* controlUpBarBG.png */, + 56711E0917B77075001B4585 /* scrolltabs_horizontal_border.png */, + 56711E2D17B7834B001B4585 /* tab-back.png */, + 56711E0A17B77075001B4585 /* TabNormal.png */, + 56711E0B17B77075001B4585 /* TabSelected.png */, + 5604454917177F20002368D7 /* Default book */, + 3166DB5B16B0A5300089C0F2 /* Study-Info.plist */, + 3166DB5C16B0A5300089C0F2 /* InfoPlist.strings */, + 3166DB5F16B0A5300089C0F2 /* main.m */, + 3166DB6116B0A5300089C0F2 /* Study-Prefix.pch */, + 3166DB6516B0A5300089C0F2 /* Default.png */, + 3166DB6716B0A5300089C0F2 /* Default@2x.png */, + 3166DB6916B0A5300089C0F2 /* Default-568h@2x.png */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 31A8258916C2E0F700F18C1D /* View */ = { + isa = PBXGroup; + children = ( + 56B7BB4E170CE4CA00037E9E /* PopoverView */, + 3166DB6216B0A5300089C0F2 /* AppDelegate.h */, + 3166DB6316B0A5300089C0F2 /* AppDelegate.m */, + 31A90BBB16C9B23B003E13E0 /* BookCell.h */, + 31A90BBC16C9B23B003E13E0 /* BookCell.m */, + 56F04AB11B6453250092A523 /* LogInViewController.h */, + 56F04AB21B6453250092A523 /* LogInViewController.m */, + 31A90BBE16C9C07F003E13E0 /* BookCell.xib */, + 5623147F16F9027C00B40047 /* ContentViewController.xib */, + 56727D79171E386800ACD92D /* WebBrowserViewController.xib */, + 3166DB7416B0A5300089C0F2 /* MainStoryboard_iPhone.storyboard */, + 3166DB7716B0A5300089C0F2 /* MainStoryboard_iPad.storyboard */, + ); + name = View; + sourceTree = ""; + }; + 31A8258A16C2E11A00F18C1D /* Model */ = { + isa = PBXGroup; + children = ( + 56FB60D617286955008C1F0B /* ExpertModule */, + 314B7E6116C2D9BF0061F0BF /* EBookImporter.h */, + 314B7E6216C2D9BF0061F0BF /* EBookImporter.m */, + 31A8258C16C2E7E000F18C1D /* Book.h */, + 31A8258D16C2E7E000F18C1D /* Book.m */, + ); + name = Model; + sourceTree = ""; + }; + 31A8258B16C2E13500F18C1D /* Controller */ = { + isa = PBXGroup; + children = ( + 569262E21C18AECE0086BA9E /* VideoView */, + 561BCBF11B09AAE500F553D4 /* Q&A */, + 566D5FEA1AC5D19700492921 /* QuizKit */, + 568BFE4D19C1072100C55843 /* GoogleDriveController */, + 563B50FA1919F64600FA0F34 /* SavingFile */, + 56955C2618DCDC420073A64C /* SphereViewController */, + 566FF04118AC06D60094FB6A /* Cmap Controller */, + 56711DFF17B77037001B4585 /* TabViewController */, + 5619B28217963226001E5BA0 /* LogFile */, + 5616F841178D4685009E0FC6 /* HighlightContent */, + 568DF8D11777B4590063787B /* ThumbNailController */, + 56FB60D2172868F2008C1F0B /* Library */, + 56FB60D51728692E008C1F0B /* BookView */, + 56FB60D41728691D008C1F0B /* WebBrowser */, + 56FB60D317286902008C1F0B /* PopUpViewController */, + ); + name = Controller; + sourceTree = ""; + }; + 31DA906916C32DAF000DA6A3 /* GData XML Parser */ = { + isa = PBXGroup; + children = ( + 31DA906A16C32DCC000DA6A3 /* GDataXMLNode.h */, + 31DA906B16C32DCC000DA6A3 /* GDataXMLNode.m */, + ); + name = "GData XML Parser"; + sourceTree = ""; + }; + 31DA906D16C3303E000DA6A3 /* External Libraries */ = { + isa = PBXGroup; + children = ( + 56BD58981C7E20A400283AC3 /* UIBtn+Bootstrape */, + 568BFE4719C0C0A600C55843 /* GoogleDrive */, + 56746C0D1950C2C600805820 /* MBProgressHUD */, + 56955C1A18DCDA990073A64C /* SphereView */, + 56B0B98918C521FB0016783E /* GHMenuView */, + 56711DEC17B76F9D001B4585 /* TabView Library */, + 56520806170418E6003272B0 /* UIMenuItem+CXAImageSupport */, + 31F0CE2316C59BD300E5CAC5 /* Unzip Library */, + 31DA906916C32DAF000DA6A3 /* GData XML Parser */, + ); + name = "External Libraries"; + sourceTree = ""; + }; + 31F0CE2316C59BD300E5CAC5 /* Unzip Library */ = { + isa = PBXGroup; + children = ( + 31F0CE2916C59DEC00E5CAC5 /* minizip */, + 31F0CE2416C59BEA00E5CAC5 /* ZipArchive.h */, + 31F0CE2516C59BEA00E5CAC5 /* ZipArchive.mm */, + ); + name = "Unzip Library"; + sourceTree = ""; + }; + 31F0CE2916C59DEC00E5CAC5 /* minizip */ = { + isa = PBXGroup; + children = ( + 31F0CE2A16C59DEC00E5CAC5 /* crypt.h */, + 31F0CE2B16C59DEC00E5CAC5 /* ioapi.c */, + 31F0CE2C16C59DEC00E5CAC5 /* ioapi.h */, + 31F0CE2D16C59DEC00E5CAC5 /* mztools.c */, + 31F0CE2E16C59DEC00E5CAC5 /* mztools.h */, + 31F0CE2F16C59DEC00E5CAC5 /* unzip.c */, + 31F0CE3016C59DEC00E5CAC5 /* unzip.h */, + 31F0CE3116C59DEC00E5CAC5 /* zip.c */, + 31F0CE3216C59DEC00E5CAC5 /* zip.h */, + ); + path = minizip; + sourceTree = ""; + }; + 5604454917177F20002368D7 /* Default book */ = { + isa = PBXGroup; + children = ( + 56C69D521727BE5B009419B3 /* EpubSampleNick.epub */, + 56C69D551727BF74009419B3 /* Bio.epub */, + ); + name = "Default book"; + sourceTree = ""; + }; + 560B2F5B18EBE044009B8CB7 /* pics */ = { + isa = PBXGroup; + children = ( + 560B2F5C18EBE051009B8CB7 /* awcollectionviewdiallayout_1.jpg */, + 560B2F5D18EBE051009B8CB7 /* awcollectionviewdiallayout_2.jpg */, + 560B2F5E18EBE051009B8CB7 /* carmelo_anthony.png */, + 560B2F5F18EBE051009B8CB7 /* dwayne_wade.png */, + 560B2F6018EBE051009B8CB7 /* james_harden.png */, + 560B2F6118EBE051009B8CB7 /* kevin_durant.png */, + 560B2F6218EBE051009B8CB7 /* kyrie_irving.png */, + 560B2F6318EBE051009B8CB7 /* lebron_james.png */, + 560B2F6418EBE051009B8CB7 /* paul_george.png */, + ); + name = pics; + sourceTree = ""; + }; + 560D0BCB19C90210006B11E4 /* PopUpChooser */ = { + isa = PBXGroup; + children = ( + 560D0BD019C9021F006B11E4 /* MapFinderViewController.h */, + 560D0BD119C9021F006B11E4 /* MapFinderViewController.m */, + 560D0BD219C9021F006B11E4 /* MapFinderViewController.xib */, + ); + name = PopUpChooser; + sourceTree = ""; + }; + 5616F841178D4685009E0FC6 /* HighlightContent */ = { + isa = PBXGroup; + children = ( + 5616F842178D46BC009E0FC6 /* HighlightContent.h */, + 5616F843178D46BC009E0FC6 /* HighlightContent.m */, + ); + name = HighlightContent; + sourceTree = ""; + }; + 5619B28217963226001E5BA0 /* LogFile */ = { + isa = PBXGroup; + children = ( + 5619B28317963287001E5BA0 /* LogFileController.h */, + 5619B28417963287001E5BA0 /* LogFileController.m */, + ); + name = LogFile; + sourceTree = ""; + }; + 561BCBF11B09AAE500F553D4 /* Q&A */ = { + isa = PBXGroup; + children = ( + 561BCBF71B09CD8900F553D4 /* QAViewController.h */, + 561BCBF81B09CD8900F553D4 /* QAViewController.m */, + 561BCBF91B09CD8900F553D4 /* QAViewController.xib */, + 56F935E51B0DC3A500138A1A /* QAFinderViewController.h */, + 56F935E61B0DC3A500138A1A /* QAFinderViewController.m */, + 56F935E71B0DC3A500138A1A /* QAFinderViewController.xib */, + ); + name = "Q&A"; + sourceTree = ""; + }; + 563B50FA1919F64600FA0F34 /* SavingFile */ = { + isa = PBXGroup; + children = ( + 56A869C71C63F5E500CD6CC9 /* studentInfo */, + 56ACC2FB19E3A55C008D4304 /* Logfile */, + 56746BFC194C31EC00805820 /* ConceptLinks */, + 563B50FB1919F66B00FA0F34 /* ConceptNodes */, + 567E5C3E17B221AA0047F995 /* ThumbNailIcon */, + 565561AE1798DA0100297BB8 /* HIghlight */, + ); + name = SavingFile; + sourceTree = ""; + }; + 563B50FB1919F66B00FA0F34 /* ConceptNodes */ = { + isa = PBXGroup; + children = ( + 563B50FC1919F6CC00FA0F34 /* CmapNode.h */, + 563B50FD1919F6CC00FA0F34 /* CmapNode.m */, + 563B50FF1919F99900FA0F34 /* CmapNodeWrapper.h */, + 563B51001919F99900FA0F34 /* CmapNodeWrapper.m */, + 563B51021919FA7A00FA0F34 /* CmapNodeParser.h */, + 563B51031919FA7A00FA0F34 /* CmapNodeParser.m */, + ); + name = ConceptNodes; + sourceTree = ""; + }; + 56434C841C7130A700509960 /* TouchTest */ = { + isa = PBXGroup; + children = ( + 56434C851C7130A700509960 /* TouchTest.m */, + 56434C871C7130A700509960 /* Info.plist */, + ); + path = TouchTest; + sourceTree = ""; + }; + 5643887A1B20423F003330F6 /* Widgets */ = { + isa = PBXGroup; + children = ( + 5643887B1B204286003330F6 /* CmapBookNoteViewController.h */, + 5643887C1B204286003330F6 /* CmapBookNoteViewController.m */, + 5643887D1B204286003330F6 /* CmapBookNoteViewController.xib */, + ); + name = Widgets; + sourceTree = ""; + }; + 56520806170418E6003272B0 /* UIMenuItem+CXAImageSupport */ = { + isa = PBXGroup; + children = ( + 56520807170418F5003272B0 /* UIMenuItem+CXAImageSupport.h */, + 56520808170418F5003272B0 /* UIMenuItem+CXAImageSupport.m */, + ); + name = "UIMenuItem+CXAImageSupport"; + sourceTree = ""; + }; + 5652080E17041AF1003272B0 /* JavaScript */ = { + isa = PBXGroup; + children = ( + 5652080F17041B30003272B0 /* JavaScriptFunctions.js */, + ); + name = "JavaScript "; + sourceTree = ""; + }; + 565561AE1798DA0100297BB8 /* HIghlight */ = { + isa = PBXGroup; + children = ( + 565561AF1798DA5C00297BB8 /* HighLight.h */, + 565561B01798DA5C00297BB8 /* HighLight.m */, + 565561B21798DAB800297BB8 /* HighLightWrapper.h */, + 565561B31798DAB800297BB8 /* HighLightWrapper.m */, + 565561B51798DB1400297BB8 /* HighlightParser.h */, + 565561B61798DB1500297BB8 /* HighlightParser.m */, + ); + name = HIghlight; + sourceTree = ""; + }; + 566D5FEA1AC5D19700492921 /* QuizKit */ = { + isa = PBXGroup; + children = ( + 566D5FEF1AC5D1DC00492921 /* ISQuiz */, + 566D60061AC5D23500492921 /* QuizController.h */, + 566D60071AC5D23500492921 /* QuizViewController.h */, + 566D60081AC5D23500492921 /* QuizViewController.m */, + 566D60091AC5D23500492921 /* QuizViewController.xib */, + 566D600A1AC5D23500492921 /* OpenQuestionViewController.h */, + 566D600B1AC5D23500492921 /* OpenQuestionViewController.m */, + 566D600C1AC5D23500492921 /* OpenQuestionViewController.xib */, + 566D600D1AC5D23500492921 /* TrueFalseViewController.h */, + 566D600E1AC5D23500492921 /* TrueFalseViewController.m */, + 566D600F1AC5D23500492921 /* TrueFalseViewController.xib */, + 564725BC1AC5EC49007BA8AE /* MultipleChoiceViewController.h */, + 564725BD1AC5EC49007BA8AE /* MultipleChoiceViewController.m */, + 564923141C176BB9009874D4 /* MultipleChoiceViewController.xib */, + ); + name = QuizKit; + sourceTree = ""; + }; + 566D5FEF1AC5D1DC00492921 /* ISQuiz */ = { + isa = PBXGroup; + children = ( + 569262E01C17838A0086BA9E /* Dog.png */, + 566D5FF01AC5D1FE00492921 /* ISMultipleChoiceQuestion.h */, + 566D5FF11AC5D1FE00492921 /* ISMultipleChoiceQuestion.m */, + 566D5FF21AC5D1FE00492921 /* ISOpenQuestion.h */, + 566D5FF31AC5D1FE00492921 /* ISOpenQuestion.m */, + 566D5FF41AC5D1FE00492921 /* ISQuestion.h */, + 566D5FF51AC5D1FE00492921 /* ISQuestion.m */, + 566D5FF61AC5D1FE00492921 /* ISQuiz.h */, + 566D5FF71AC5D1FE00492921 /* ISQuiz.m */, + 566D5FF81AC5D1FE00492921 /* ISQuizKit.h */, + 566D5FF91AC5D1FE00492921 /* ISQuizParser.h */, + 566D5FFA1AC5D1FE00492921 /* ISQuizParser.m */, + 566D5FFB1AC5D1FE00492921 /* ISSession.h */, + 566D5FFC1AC5D1FE00492921 /* ISSession.m */, + 566D5FFD1AC5D1FE00492921 /* ISTrueFalseQuestion.h */, + 566D5FFE1AC5D1FE00492921 /* ISTrueFalseQuestion.m */, + ); + name = ISQuiz; + sourceTree = ""; + }; + 566D601B1AC5D25C00492921 /* quizzes */ = { + isa = PBXGroup; + children = ( + 566D601C1AC5D27700492921 /* programming.plist */, + ); + name = quizzes; + sourceTree = ""; + }; + 566E7C611C7E5BBE00D0ACFE /* ShakeAlertview */ = { + isa = PBXGroup; + children = ( + 566E7C621C7E5BDB00D0ACFE /* DTAlertView.h */, + 566E7C631C7E5BDB00D0ACFE /* DTAlertView.m */, + 566E7C641C7E5BDB00D0ACFE /* DTProgressStatus.h */, + 566E7C651C7E5BDB00D0ACFE /* DTProgressStatus.m */, + 566E7C681C7EB44C00D0ACFE /* MyAlertView.h */, + 566E7C691C7EB44C00D0ACFE /* MyAlertView.m */, + ); + name = ShakeAlertview; + sourceTree = ""; + }; + 566FF04118AC06D60094FB6A /* Cmap Controller */ = { + isa = PBXGroup; + children = ( + 566E7C611C7E5BBE00D0ACFE /* ShakeAlertview */, + 569407EF193959CF00D5294F /* ResourceThumb */, + 56D76C2D18BC06470041FA56 /* Import and Export */, + 56D76C1D18BC04F10041FA56 /* Model-Data Structure */, + 56D76C1918BC04CA0041FA56 /* Controller */, + 56D76C1218BC04850041FA56 /* View */, + 5646970618B477BE00DB5E2A /* CmapController.h */, + 5646970718B477BE00DB5E2A /* CmapController.m */, + 56AB71FA1C6EA66800FEB7BE /* preview.png */, + 562DD69A1C04DD0900D65FDE /* addIcon.png */, + 56434C671C70691700509960 /* magnify_2.png */, + 566FF04418AC079A0094FB6A /* CmapView.xib */, + ); + name = "Cmap Controller"; + sourceTree = ""; + }; + 56711DEC17B76F9D001B4585 /* TabView Library */ = { + isa = PBXGroup; + children = ( + 56711E1017B77096001B4585 /* Help Classes */, + 56711DED17B76FFC001B4585 /* LSTintedButton.h */, + 56711DEE17B77005001B4585 /* LSTintedButton.m */, + 56711DF017B77010001B4585 /* LSTabControl.h */, + 56711DF117B77010001B4585 /* LSTabControl.m */, + 56711DF217B77010001B4585 /* LSTabControl_Protected.h */, + 56711DF417B7701B001B4585 /* LSTabItem.h */, + 56711DF517B7701B001B4585 /* LSTabItem.m */, + 56711DF617B7701B001B4585 /* LSTabBarView.h */, + 56711DF717B7701B001B4585 /* LSTabBarView.m */, + 56711DF817B7701B001B4585 /* LSTabBarView_Protected.h */, + 56711DF917B7701B001B4585 /* LSScrollTabBarView.h */, + 56711DFA17B7701B001B4585 /* LSScrollTabBarView.m */, + 56711DFB17B7701B001B4585 /* LSScrollTabBarView_Protected.h */, + ); + name = "TabView Library"; + sourceTree = ""; + }; + 56711DFF17B77037001B4585 /* TabViewController */ = { + isa = PBXGroup; + children = ( + 56711E0317B77057001B4585 /* LSHorizontalScrollTabViewDemoViewController.h */, + 56711E0417B77057001B4585 /* LSHorizontalScrollTabViewDemoViewController.m */, + 56711E0517B77057001B4585 /* LSHorizontalScrollTabView.xib */, + 56711E0017B7704B001B4585 /* HorizontalTabControl.h */, + 56711E0117B7704B001B4585 /* HorizontalTabControl.m */, + ); + name = TabViewController; + sourceTree = ""; + }; + 56711E1017B77096001B4585 /* Help Classes */ = { + isa = PBXGroup; + children = ( + 56711E1117B770B1001B4585 /* BadgeView.h */, + 56711E1217B770B1001B4585 /* BadgeView.m */, + 56711E1317B770B1001B4585 /* ColorPickerBackgroundView.h */, + 56711E1417B770B1001B4585 /* ColorPickerBackgroundView.m */, + 56711E1517B770B1001B4585 /* DrawingUtilities.h */, + 56711E1617B770B1001B4585 /* DrawingUtilities.m */, + 56711E1717B770B1001B4585 /* UIImage+shortcuts.h */, + 56711E1817B770B1001B4585 /* UIImage+shortcuts.m */, + 56711E1917B770B1001B4585 /* UIView+Addictions.h */, + 56711E1A17B770B1001B4585 /* UIView+Addictions.m */, + ); + name = "Help Classes"; + sourceTree = ""; + }; + 56746BFC194C31EC00805820 /* ConceptLinks */ = { + isa = PBXGroup; + children = ( + 56746BFD194CFD8F00805820 /* CmapLink.h */, + 56746BFE194CFD8F00805820 /* CmapLink.m */, + 56746C00194D00D600805820 /* CmapLinkWrapper.h */, + 56746C01194D00D600805820 /* CmapLinkWrapper.m */, + 56746C03194D018400805820 /* CmapLinkParser.h */, + 56746C04194D018400805820 /* CmapLinkParser.m */, + ); + name = ConceptLinks; + sourceTree = ""; + }; + 56746C06194E3C2F00805820 /* CmapDataStructure */ = { + isa = PBXGroup; + children = ( + 56B0B98418C512FC0016783E /* NodeCell.h */, + 56B0B98518C512FC0016783E /* NodeCell.m */, + 560B2F7518EDFE4D009B8CB7 /* ShangTextField.h */, + 560B2F7618EDFE4D009B8CB7 /* ShangTextField.m */, + 56B0B98718C5133F0016783E /* NodeCell.xib */, + 56746C07194E3C8600805820 /* ConceptLink.h */, + 56746C08194E3C8600805820 /* ConceptLink.m */, + 56746C0A194E54B200805820 /* RelationTextView.h */, + 56746C0B194E54B200805820 /* RelationTextView.m */, + 68D1BF011D887BF100BD09D1 /* TylerTextView.h */, + 68D1BF021D887BF100BD09D1 /* TylerTextView.m */, + ); + name = CmapDataStructure; + sourceTree = ""; + }; + 56746C0D1950C2C600805820 /* MBProgressHUD */ = { + isa = PBXGroup; + children = ( + 56746C0E1950C2D400805820 /* MBProgressHUD.h */, + 56746C0F1950C2D400805820 /* MBProgressHUD.m */, + ); + name = MBProgressHUD; + sourceTree = ""; + }; + 567E5C3E17B221AA0047F995 /* ThumbNailIcon */ = { + isa = PBXGroup; + children = ( + 567E5C3F17B2234F0047F995 /* ThumbNailIcon.h */, + 567E5C4017B2234F0047F995 /* ThumbNailIcon.m */, + 565DA3F217B32F9C000DB171 /* ThumbNailIconWrapper.h */, + 565DA3F317B32F9C000DB171 /* ThumbNailIconWrapper.m */, + 565DA3F517B33705000DB171 /* ThumbNailIconParser.h */, + 565DA3F617B33705000DB171 /* ThumbNailIconParser.m */, + ); + name = ThumbNailIcon; + sourceTree = ""; + }; + 568BFE4719C0C0A600C55843 /* GoogleDrive */ = { + isa = PBXGroup; + children = ( + ); + name = GoogleDrive; + sourceTree = ""; + }; + 568BFE4D19C1072100C55843 /* GoogleDriveController */ = { + isa = PBXGroup; + children = ( + 568BFE4E19C109D900C55843 /* GoogleDriveViewController.h */, + 568BFE4F19C109D900C55843 /* GoogleDriveViewController.m */, + ); + name = GoogleDriveController; + sourceTree = ""; + }; + 568DF8D11777B4590063787B /* ThumbNailController */ = { + isa = PBXGroup; + children = ( + 56F02EB4178FA29100C310F9 /* ThumbNailController.h */, + 56F02EB5178FA29100C310F9 /* ThumbNailController.m */, + ); + name = ThumbNailController; + sourceTree = ""; + }; + 569262E21C18AECE0086BA9E /* VideoView */ = { + isa = PBXGroup; + children = ( + 5624843B1CA88A5E000C9115 /* NonHyperLink */, + 564061581CA4CFFE00C87504 /* Tutorial */, + 564061481CA306AE00C87504 /* Train_AddNode.png */, + 564061561CA3843F00C87504 /* Train_link.png */, + 5624843D1CA894CD000C9115 /* finishTraining.png */, + 564061521CA37EC000C87504 /* Train_HyperNavi.png */, + 5640614A1CA37A9900C87504 /* Train_pageflip.png */, + 5640614E1CA37CE600C87504 /* Train_pinch.png */, + 564061541CA37FAC00C87504 /* Train_delete.png */, + 563B63AB1C237E0E00D09D3F /* TeachRotate.png */, + 564061501CA37E2200C87504 /* Train_selectRelation.png */, + 5640614C1CA37BC500C87504 /* Train_correct.png */, + 569262E31C18AEDD0086BA9E /* VideoViewController.h */, + 569262E41C18AEDD0086BA9E /* VideoViewController.m */, + 569262E51C18AEDD0086BA9E /* VideoViewController.xib */, + 56784B751C97C39800FBBC6B /* TrainingViewController.h */, + 56784B761C97C39800FBBC6B /* TrainingViewController.m */, + 56784B771C97C39800FBBC6B /* TrainingViewController.xib */, + 56887F081C9872F000467A76 /* hintbulb.png */, + ); + name = VideoView; + sourceTree = ""; + }; + 5693B3FC19006E7D00AABE27 /* CmapScrollView */ = { + isa = PBXGroup; + children = ( + 5693B3F719006E6A00AABE27 /* CmapScrollViewViewController.h */, + 5693B3F819006E6A00AABE27 /* CmapScrollViewViewController.m */, + 5693B3F919006E6A00AABE27 /* CmapScrollViewViewController.xib */, + ); + name = CmapScrollView; + sourceTree = ""; + }; + 569407EF193959CF00D5294F /* ResourceThumb */ = { + isa = PBXGroup; + children = ( + 569407F0193959ED00D5294F /* ResrouceThumbViewController.h */, + 569407F1193959ED00D5294F /* ResrouceThumbViewController.m */, + ); + name = ResourceThumb; + sourceTree = ""; + }; + 56955C1A18DCDA990073A64C /* SphereView */ = { + isa = PBXGroup; + children = ( + 56955C1B18DCDAD60073A64C /* PFAxisDirection.h */, + 56955C1C18DCDAD60073A64C /* PFGoldenSectionSpiral.h */, + 56955C1D18DCDAD60073A64C /* PFGoldenSectionSpiral.m */, + 56955C1E18DCDAD60073A64C /* PFMatrix.h */, + 56955C1F18DCDAD60073A64C /* PFMatrixTransform.h */, + 56955C2018DCDAD60073A64C /* PFPoint.h */, + 56955C2118DCDAD60073A64C /* PFRadian.h */, + 56955C2218DCDAD60073A64C /* ZYQSphereView.h */, + 56955C2318DCDAD60073A64C /* ZYQSphereView.m */, + ); + name = SphereView; + sourceTree = ""; + }; + 56955C2618DCDC420073A64C /* SphereViewController */ = { + isa = PBXGroup; + children = ( + 56955C2718DCDC4E0073A64C /* SampleViewController.h */, + 56955C2818DCDC4E0073A64C /* SampleViewController.m */, + 560B2F7018ECC542009B8CB7 /* ConceptIconViewController.h */, + 560B2F7118ECC542009B8CB7 /* ConceptIconViewController.m */, + 560B2F7218ECC542009B8CB7 /* ConceptIconViewController.xib */, + ); + name = SphereViewController; + sourceTree = ""; + }; + 5695D6631C39ADAC00C65227 /* TestFairy */ = { + isa = PBXGroup; + children = ( + 56B8C13F1C56053E002187A9 /* TestFairy.h */, + 56B8C1401C560550002187A9 /* libTestFairy.a */, + 56B8C13C1C55E080002187A9 /* upload-dsym.sh */, + ); + name = TestFairy; + sourceTree = ""; + }; + 56A869C71C63F5E500CD6CC9 /* studentInfo */ = { + isa = PBXGroup; + children = ( + 56A869C81C63F60B00CD6CC9 /* StudentData.h */, + 56A869C91C63F60B00CD6CC9 /* StudentData.m */, + 56A869CB1C63F65B00CD6CC9 /* StudentDataWrapper.h */, + 56A869CC1C63F65B00CD6CC9 /* StudentDataWrapper.m */, + 56A869CE1C63F6B900CD6CC9 /* StudentDataParser.h */, + 56A869CF1C63F6B900CD6CC9 /* StudentDataParser.m */, + ); + name = studentInfo; + sourceTree = ""; + }; + 56ACC2FB19E3A55C008D4304 /* Logfile */ = { + isa = PBXGroup; + children = ( + 56ACC30019E3A804008D4304 /* LogData.h */, + 56ACC30119E3A804008D4304 /* LogData.m */, + 56ACC30319E3AAB5008D4304 /* LogDataWrapper.h */, + 56ACC30419E3AAB5008D4304 /* LogDataWrapper.m */, + 56ACC30619E3AE23008D4304 /* LogDataParser.h */, + 56ACC30719E3AE23008D4304 /* LogDataParser.m */, + ); + name = Logfile; + sourceTree = ""; + }; + 56B0B98918C521FB0016783E /* GHMenuView */ = { + isa = PBXGroup; + children = ( + 56B0B98A18C522080016783E /* GHContextMenuView.h */, + 56B0B98B18C522080016783E /* GHContextMenuView.m */, + ); + name = GHMenuView; + sourceTree = ""; + }; + 56B7BB4E170CE4CA00037E9E /* PopoverView */ = { + isa = PBXGroup; + children = ( + 56B7BB4F170CE51000037E9E /* PopoverView.h */, + 56B7BB50170CE51000037E9E /* PopoverView.m */, + 56B7BB52170CE52D00037E9E /* PopoverView_Configuration.h */, + 56B7BB55170CE82300037E9E /* OCDaysView.h */, + 56B7BB56170CE82300037E9E /* OCDaysView.m */, + 566F09CC17220A2700412952 /* NoteView.xib */, + 56C69D481725D2AD009419B3 /* WebMarkController.xib */, + ); + name = PopoverView; + sourceTree = ""; + }; + 56BD587F1C7E1FE100283AC3 /* InputCode */ = { + isa = PBXGroup; + children = ( + 56BD58801C7E1FF100283AC3 /* trade.bundle */, + 56BD58811C7E1FF100283AC3 /* UIView+Extension.h */, + 56BD58821C7E1FF100283AC3 /* UIView+Extension.m */, + 56BD58831C7E1FF100283AC3 /* NSString+Extension.h */, + 56BD58841C7E1FF100283AC3 /* NSString+Extension.m */, + 56BD58851C7E1FF100283AC3 /* UIAlertView+Quick.h */, + 56BD58861C7E1FF100283AC3 /* UIAlertView+Quick.m */, + 56BD58871C7E1FF100283AC3 /* ZCTradeView.h */, + 56BD58881C7E1FF100283AC3 /* ZCTradeView.m */, + 56BD58891C7E1FF100283AC3 /* ZCTradeInputView.h */, + 56BD588A1C7E1FF100283AC3 /* ZCTradeInputView.m */, + 56BD588B1C7E1FF100283AC3 /* ZCTradeKeyboard.h */, + 56BD588C1C7E1FF100283AC3 /* ZCTradeKeyboard.m */, + 56BD588D1C7E1FF100283AC3 /* Singleton.h */, + 56BD588E1C7E1FF100283AC3 /* ZCAudioTool.h */, + 56BD588F1C7E1FF100283AC3 /* ZCAudioTool.m */, + ); + name = InputCode; + sourceTree = ""; + }; + 56BD58981C7E20A400283AC3 /* UIBtn+Bootstrape */ = { + isa = PBXGroup; + children = ( + 56BD58991C7E20B600283AC3 /* NSString+FontAwesome.h */, + 56BD589A1C7E20B600283AC3 /* NSString+FontAwesome.m */, + 56BD589B1C7E20B600283AC3 /* UIButton+Bootstrap.h */, + 56BD589C1C7E20B600283AC3 /* UIButton+Bootstrap.m */, + 56BD589D1C7E20B600283AC3 /* FontAwesome.ttf */, + ); + name = "UIBtn+Bootstrape"; + sourceTree = ""; + }; + 56D563921ADC71CD0060574D /* Resource */ = { + isa = PBXGroup; + children = ( + 56BF7F251ADEE94900B015C6 /* ExpertCmapLinkList.xml */, + 56BF7F261ADEE94900B015C6 /* ExpertCmapNodeList.xml */, + 68D1BF0A1DBFFE3E00BD09D1 /* aa.epub */, + 5606C8B31BA797B0002F33D5 /* LogData.xml */, + ); + name = Resource; + sourceTree = ""; + }; + 56D76C1218BC04850041FA56 /* View */ = { + isa = PBXGroup; + children = ( + 56BD587F1C7E1FE100283AC3 /* InputCode */, + 560D0BCB19C90210006B11E4 /* PopUpChooser */, + 56746C06194E3C2F00805820 /* CmapDataStructure */, + 5693B3FC19006E7D00AABE27 /* CmapScrollView */, + 56F30E3F18F5124100E8ECEF /* retation */, + ); + name = View; + sourceTree = ""; + }; + 56D76C1918BC04CA0041FA56 /* Controller */ = { + isa = PBXGroup; + children = ( + 56B0B97F18C50B9F0016783E /* MainWindowController.m */, + 56B0B97E18C50B9F0016783E /* MainWindowController.h */, + 3166DB5A16B0A5300089C0F2 /* Supporting Files */, + ); + name = Controller; + sourceTree = ""; + }; + 56D76C1D18BC04F10041FA56 /* Model-Data Structure */ = { + isa = PBXGroup; + children = ( + 56D76C1E18BC05140041FA56 /* ConceptNode.h */, + 56D76C1F18BC05140041FA56 /* ConceptNode.m */, + 56D76C2018BC05140041FA56 /* Connection.h */, + 56D76C2118BC05140041FA56 /* Connection.m */, + 56D76C2218BC05140041FA56 /* GroupingNode.h */, + 56D76C2318BC05140041FA56 /* GroupingNode.m */, + 56D76C2418BC05140041FA56 /* Node.h */, + 56D76C2518BC05140041FA56 /* Node.m */, + 56D76C2718BC05140041FA56 /* Relation.m */, + 56D76C2618BC05140041FA56 /* Relation.h */, + ); + name = "Model-Data Structure"; + sourceTree = ""; + }; + 56D76C2D18BC06470041FA56 /* Import and Export */ = { + isa = PBXGroup; + children = ( + 56D76C2E18BC065B0041FA56 /* Base64.h */, + 56D76C2F18BC065B0041FA56 /* Base64.m */, + 56D76C3018BC065B0041FA56 /* CMapImporterExporter.h */, + 56D76C3118BC065B0041FA56 /* CMapImporterExporter.m */, + 56D76C3218BC065B0041FA56 /* NSString+XMLEntities.h */, + 56D76C3318BC065B0041FA56 /* NSString+XMLEntities.m */, + ); + name = "Import and Export"; + sourceTree = ""; + }; + 56F30E3F18F5124100E8ECEF /* retation */ = { + isa = PBXGroup; + children = ( + 56B0B98118C50F560016783E /* CmapView.h */, + 56B0B98218C50F560016783E /* CmapView.m */, + 56D76C1318BC04BB0041FA56 /* DragView.h */, + 56D76C1418BC04BB0041FA56 /* DragView.m */, + 56F30E4018F5124F00E8ECEF /* UIView+i7Rotate360.h */, + 56F30E4118F5124F00E8ECEF /* UIView+i7Rotate360.m */, + ); + name = retation; + sourceTree = ""; + }; + 56FB60D2172868F2008C1F0B /* Library */ = { + isa = PBXGroup; + children = ( + 3166DB6E16B0A5300089C0F2 /* LibraryViewController.h */, + 3166DB6F16B0A5300089C0F2 /* LibraryViewController.m */, + ); + name = Library; + sourceTree = ""; + }; + 56FB60D317286902008C1F0B /* PopUpViewController */ = { + isa = PBXGroup; + children = ( + 568251A518B48A2100F6412B /* Screen Shot 2014-02-18 at 11.43.22 PM.png */, + 566F09CF17220B6F00412952 /* NoteViewController.h */, + 566F09D017220B6F00412952 /* NoteViewController.m */, + 56C69D461725D2AD009419B3 /* WebMarkController.h */, + 56C69D471725D2AD009419B3 /* WebMarkController.m */, + 565B23A618FE3A030074E344 /* ConceptViewController.h */, + 565B23A718FE3A030074E344 /* ConceptViewController.m */, + 565B23A818FE3A030074E344 /* ConceptViewController.xib */, + 565B23AB18FE54430074E344 /* ConceptIconTextField.h */, + 565B23AC18FE54430074E344 /* ConceptIconTextField.m */, + ); + name = PopUpViewController; + sourceTree = ""; + }; + 56FB60D41728691D008C1F0B /* WebBrowser */ = { + isa = PBXGroup; + children = ( + 56727D77171E386800ACD92D /* WebBrowserViewController.h */, + 56727D78171E386800ACD92D /* WebBrowserViewController.m */, + ); + name = WebBrowser; + sourceTree = ""; + }; + 56FB60D51728692E008C1F0B /* BookView */ = { + isa = PBXGroup; + children = ( + 56434C6C1C7125B900509960 /* MyTouch.h */, + 56434C6D1C7125B900509960 /* MyTouch.m */, + 56FB67181BCE2CDF00006AF0 /* blueDot.png */, + 56FB67191BCE2CDF00006AF0 /* blueRec.png */, + 5643887A1B20423F003330F6 /* Widgets */, + 560B2F5018EBD8B5009B8CB7 /* AWCollectionViewDialLayout.h */, + 560B2F5118EBD8B5009B8CB7 /* AWCollectionViewDialLayout.m */, + 560B2F4518EBD6C3009B8CB7 /* dialCell.xib */, + 560B2F4618EBD6C3009B8CB7 /* dialCell2.xib */, + 560B2F4718EBD6C3009B8CB7 /* players.json */, + 31B9150B16CB053B0040E8A2 /* BookViewController.h */, + 31B9150C16CB053B0040E8A2 /* BookViewController.m */, + 56FB67131BCE2C3F00006AF0 /* BookPageViewController.h */, + 56FB67141BCE2C3F00006AF0 /* BookPageViewController.m */, + 56FB67151BCE2C3F00006AF0 /* BookPageViewController.xib */, + 561CDA3F1C7398E700FD23B7 /* doc.pdf */, + 5623147D16F9027C00B40047 /* ContentViewController.h */, + 5623147E16F9027C00B40047 /* ContentViewController.m */, + 56FFE96719DBD31400364476 /* NodeViewController.h */, + 56FFE96819DBD31400364476 /* NodeViewController.m */, + 56FFE96919DBD31400364476 /* NodeViewController.xib */, + 56FFE97019DC70D100364476 /* SubNodeViewController.h */, + 56FFE97119DC70D100364476 /* SubNodeViewController.m */, + 56FFE97219DC70D100364476 /* SubNodeViewController.xib */, + 56FB670E1BCE241D00006AF0 /* PreViewNode.h */, + 56FB670F1BCE241D00006AF0 /* PreViewNode.m */, + 56FB67101BCE241D00006AF0 /* PreViewNode.xib */, + ); + name = BookView; + sourceTree = ""; + }; + 56FB60D617286955008C1F0B /* ExpertModule */ = { + isa = PBXGroup; + children = ( + 56FB60D717286999008C1F0B /* KnowledgeModule.h */, + 56FB60D817286999008C1F0B /* KnowledgeModule.m */, + 56FB60DA17286AFA008C1F0B /* Concept.h */, + 56FB60DB17286AFA008C1F0B /* Concept.m */, + 56E31A2E172D063D0066C55D /* Experiment.h */, + 56E31A2F172D063D0066C55D /* Experiment.m */, + ); + name = ExpertModule; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3166DB4E16B0A5300089C0F2 /* Study */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3166DB9116B0A5300089C0F2 /* Build configuration list for PBXNativeTarget "Study" */; + buildPhases = ( + 3166DB4B16B0A5300089C0F2 /* Sources */, + 3166DB4C16B0A5300089C0F2 /* Frameworks */, + 3166DB4D16B0A5300089C0F2 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Study; + productName = eBookReader; + productReference = 3166DB4F16B0A5300089C0F2 /* Study.app */; + productType = "com.apple.product-type.application"; + }; + 3166DB7E16B0A5300089C0F2 /* StudyTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3166DB9416B0A5300089C0F2 /* Build configuration list for PBXNativeTarget "StudyTests" */; + buildPhases = ( + 252C02D4490F7F3A0386478F /* Check Pods Manifest.lock */, + 3166DB7A16B0A5300089C0F2 /* Sources */, + 3166DB7B16B0A5300089C0F2 /* Frameworks */, + 3166DB7C16B0A5300089C0F2 /* Resources */, + 3166DB7D16B0A5300089C0F2 /* ShellScript */, + B6430A75B48E49480A096704 /* Embed Pods Frameworks */, + D261206CDE099DB06CDB6A08 /* Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + 3166DB8516B0A5300089C0F2 /* PBXTargetDependency */, + ); + name = StudyTests; + productName = eBookReaderTests; + productReference = 3166DB7F16B0A5300089C0F2 /* Study.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3166DB4616B0A5300089C0F2 /* Project object */ = { + isa = PBXProject; + attributes = { + LastTestingUpgradeCheck = 0700; + LastUpgradeCheck = 0450; + ORGANIZATIONNAME = "Shang Wang"; + TargetAttributes = { + 3166DB4E16B0A5300089C0F2 = { + DevelopmentTeam = APBHN348LB; + }; + }; + }; + buildConfigurationList = 3166DB4916B0A5300089C0F2 /* Build configuration list for PBXProject "Digital Textbook" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 3166DB4416B0A5300089C0F2; + productRefGroup = 3166DB5016B0A5300089C0F2 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3166DB4E16B0A5300089C0F2 /* Study */, + 3166DB7E16B0A5300089C0F2 /* StudyTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 3166DB4D16B0A5300089C0F2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 68D1BF0B1DBFFF3100BD09D1 /* aa.epub in Resources */, + 567924C41B12E7BB007B5038 /* finder_finish.png in Resources */, + 56711E2C17B776A2001B4585 /* LSHorizontalScrollTabView.xib in Resources */, + 568251A618B48A2100F6412B /* Screen Shot 2014-02-18 at 11.43.22 PM.png in Resources */, + 5693B3FB19006E6A00AABE27 /* CmapScrollViewViewController.xib in Resources */, + 56F04AB91B6463350092A523 /* LoginForm.jpg in Resources */, + 5640614D1CA37BC500C87504 /* Train_correct.png in Resources */, + 568251A818B48A6300F6412B /* cmap.png in Resources */, + 5652081317041F86003272B0 /* JavaScriptFunctions.js in Resources */, + 56BD58A01C7E20B600283AC3 /* FontAwesome.ttf in Resources */, + 566D60181AC5D23500492921 /* TrueFalseViewController.xib in Resources */, + 561D1AFC1C86894100D3AF47 /* CmapIcon.png in Resources */, + 561BCBFB1B09CD8900F553D4 /* QAViewController.xib in Resources */, + 3166DB5E16B0A5300089C0F2 /* InfoPlist.strings in Resources */, + 567924C51B12E7BB007B5038 /* finder_stop.png in Resources */, + 3166DB6616B0A5300089C0F2 /* Default.png in Resources */, + 564061571CA3843F00C87504 /* Train_link.png in Resources */, + 56BF7F281ADEE94900B015C6 /* ExpertCmapNodeList.xml in Resources */, + 3166DB6816B0A5300089C0F2 /* Default@2x.png in Resources */, + 569407F41939A28A00D5294F /* safari_square.png in Resources */, + 68D1BF091DB6B68B00BD09D1 /* webbrowser.png in Resources */, + 566D60141AC5D23500492921 /* QuizViewController.xib in Resources */, + 56B0B99618C523B90016783E /* twitter-white.png in Resources */, + 3166DB6A16B0A5300089C0F2 /* Default-568h@2x.png in Resources */, + 560B2F4A18EBD6C3009B8CB7 /* dialCell2.xib in Resources */, + 68D1BF071D9AF9C600BD09D1 /* Safarai_White.png in Resources */, + 3166DB7616B0A5300089C0F2 /* MainStoryboard_iPhone.storyboard in Resources */, + 564061591CA4CFFE00C87504 /* Tutorial in Resources */, + 56B0B98818C5133F0016783E /* NodeCell.xib in Resources */, + 561CDA401C7398E700FD23B7 /* doc.pdf in Resources */, + 56BD58901C7E1FF100283AC3 /* trade.bundle in Resources */, + 56B8C1391C55A4D1002187A9 /* iconRight.png in Resources */, + 5624843C1CA88A5E000C9115 /* NonHyperLink in Resources */, + 3166DB7916B0A5300089C0F2 /* MainStoryboard_iPad.storyboard in Resources */, + 560B2F6D18EBE051009B8CB7 /* paul_george.png in Resources */, + 5640614B1CA37A9900C87504 /* Train_pageflip.png in Resources */, + 31A90BBF16C9C07F003E13E0 /* BookCell.xib in Resources */, + 5640614F1CA37CE600C87504 /* Train_pinch.png in Resources */, + 564923151C176BB9009874D4 /* MultipleChoiceViewController.xib in Resources */, + 315F0AE416CC186C00300B19 /* bookshelf_vertical.png in Resources */, + 569262E71C18AEDD0086BA9E /* VideoViewController.xib in Resources */, + 315F0AE516CC186C00300B19 /* bookshelf_horizontal.png in Resources */, + 5623148116F9027C00B40047 /* ContentViewController.xib in Resources */, + 56B1BDBD170107840056FEE3 /* navigation_bar.png in Resources */, + 564C425517064A7000B320EF /* highlight_green.png in Resources */, + 562484381CA5E2EA000C9115 /* orangeRec.png in Resources */, + 564C425717064D7800B320EF /* highlight_yellow.png in Resources */, + 56FFE97419DC70D100364476 /* SubNodeViewController.xib in Resources */, + 564C425917064D7B00B320EF /* highlight_blue.png in Resources */, + 56F04ABB1B6464A50092A523 /* LoginButton.png in Resources */, + 56473546181AF0BD00EE1640 /* AcousticModelEnglish.bundle in Resources */, + 56BF7F271ADEE94900B015C6 /* ExpertCmapLinkList.xml in Resources */, + 564C425B17064D7E00B320EF /* highlight_red.png in Resources */, + 56F30E4418F5130A00E8ECEF /* wait.png in Resources */, + 564C425D17064D8300B320EF /* highlight_purple.png in Resources */, + 569407F81939B40B00D5294F /* colorPlate.png in Resources */, + 56B0B99A18C526740016783E /* link.png in Resources */, + 566EB44E18DADC0700BBC067 /* idea.png in Resources */, + 56B8C1381C55A4D1002187A9 /* iconLeft.png in Resources */, + 56473548181AF0CE00EE1640 /* AcousticModelSpanish.bundle in Resources */, + 56AFB38B1B0B04190048E036 /* QAIcon.png in Resources */, + 560B2F6518EBE051009B8CB7 /* awcollectionviewdiallayout_1.jpg in Resources */, + 566D601D1AC5D27700492921 /* programming.plist in Resources */, + 56887F091C9872F000467A76 /* hintbulb.png in Resources */, + 5645250A170A5D09005E2D17 /* cover_default.png in Resources */, + 56AB71FB1C6EA66800FEB7BE /* preview.png in Resources */, + 560B2F6918EBE051009B8CB7 /* james_harden.png in Resources */, + 5643887F1B204286003330F6 /* CmapBookNoteViewController.xib in Resources */, + 56F935E41B0DBF1D00138A1A /* QAWeb.png in Resources */, + 56B7BB4B170CD4B100037E9E /* underline2.png in Resources */, + 567924C21B12E7BB007B5038 /* finder_alert.png in Resources */, + 56CB3D6518FD23E4003FE954 /* ConceptThubm.png in Resources */, + 56B7BB4D170CD73E00037E9E /* undo.png in Resources */, + 56B7BB59170CECEB00037E9E /* error.png in Resources */, + 56B7BB5B170CECF000037E9E /* success.png in Resources */, + 56434C681C70691700509960 /* magnify_2.png in Resources */, + 563B63AC1C237E0E00D09D3F /* TeachRotate.png in Resources */, + 560B2F6B18EBE051009B8CB7 /* kyrie_irving.png in Resources */, + 56727D7B171E386800ACD92D /* WebBrowserViewController.xib in Resources */, + 5624843E1CA894CD000C9115 /* finishTraining.png in Resources */, + 560B2F6718EBE051009B8CB7 /* carmelo_anthony.png in Resources */, + 56FB671B1BCE2CDF00006AF0 /* blueRec.png in Resources */, + 56727D84171F290D00ACD92D /* noteTaking.png in Resources */, + 561C0D5818C52B7900B223D3 /* edit.png in Resources */, + 56B0B99518C523B90016783E /* pinterest-white.png in Resources */, + 56AFB3891B0ACF240048E036 /* switch.png in Resources */, + 56B0B99318C523B90016783E /* google-plus-white.png in Resources */, + 56727D8A171F2B0300ACD92D /* take_note.png in Resources */, + 56FB671A1BCE2CDF00006AF0 /* blueDot.png in Resources */, + 56FB67171BCE2C3F00006AF0 /* BookPageViewController.xib in Resources */, + 564061491CA306AE00C87504 /* Train_AddNode.png in Resources */, + 56727D8E171FD12B00ACD92D /* noteIcon.png in Resources */, + 560B2F6818EBE051009B8CB7 /* dwayne_wade.png in Resources */, + 56FFE96B19DBD31400364476 /* NodeViewController.xib in Resources */, + 568322FB1B12EFED00D3C3D5 /* finish_small.png in Resources */, + 5651D62119079CFD0088E733 /* bb.png in Resources */, + 568322F91B12EFED00D3C3D5 /* alert_small.png in Resources */, + 56B0B99418C523B90016783E /* linkedin-white.png in Resources */, + 56F04AB71B645CDA0092A523 /* LoginBG.jpg in Resources */, + 56B8C13E1C55E080002187A9 /* upload-dsym.sh in Resources */, + 56F935E91B0DC3A500138A1A /* QAFinderViewController.xib in Resources */, + 566F09BF1721C15800412952 /* speak.png in Resources */, + 56B0B9A018C529110016783E /* addConcpetNode.png in Resources */, + 68D1BF061D9AF9C600BD09D1 /* Node_Small.png in Resources */, + 566F09C11721C17400412952 /* question.png in Resources */, + 566F09CE17220A2700412952 /* NoteView.xib in Resources */, + 560B2F7418ECC542009B8CB7 /* ConceptIconViewController.xib in Resources */, + 56C69D4A1725D2AD009419B3 /* WebMarkController.xib in Resources */, + 566FF04518AC079A0094FB6A /* CmapView.xib in Resources */, + 5606C8B41BA797B0002F33D5 /* LogData.xml in Resources */, + 561C0D5618C52ABD00B223D3 /* deleteConcept.png in Resources */, + 56E9B03918DE522E00AADD2E /* blurWallPaper.png in Resources */, + 56B0B99218C523B90016783E /* facebook-white.png in Resources */, + 567924BD1B12E673007B5038 /* error2.png in Resources */, + 56FB67121BCE241D00006AF0 /* PreViewNode.xib in Resources */, + 56C69D4C1725D40B009419B3 /* safari.png in Resources */, + 560B2F4B18EBD6C3009B8CB7 /* players.json in Resources */, + 56711E0C17B77075001B4585 /* controlpanel_view_background@2x~ipad.png in Resources */, + 565B23AA18FE3A030074E344 /* ConceptViewController.xib in Resources */, + 56711E0D17B77075001B4585 /* scrolltabs_horizontal_border.png in Resources */, + 56711E0E17B77075001B4585 /* TabNormal.png in Resources */, + 56711E0F17B77075001B4585 /* TabSelected.png in Resources */, + 56711E2E17B7834B001B4585 /* tab-back.png in Resources */, + 560B2F6A18EBE051009B8CB7 /* kevin_durant.png in Resources */, + 564061511CA37E2200C87504 /* Train_selectRelation.png in Resources */, + 56465CD217B8813C00EE38FC /* controlUpBarBG.png in Resources */, + 56784B791C97C39800FBBC6B /* TrainingViewController.xib in Resources */, + 568322FC1B12EFED00D3C3D5 /* stop_small.png in Resources */, + 560B2F6618EBE051009B8CB7 /* awcollectionviewdiallayout_2.jpg in Resources */, + 560B2F4918EBD6C3009B8CB7 /* dialCell.xib in Resources */, + 569262E11C17838A0086BA9E /* Dog.png in Resources */, + 564061551CA37FAC00C87504 /* Train_delete.png in Resources */, + 566D60161AC5D23500492921 /* OpenQuestionViewController.xib in Resources */, + 567924C31B12E7BB007B5038 /* finder_error.png in Resources */, + 560D0BD419C9021F006B11E4 /* MapFinderViewController.xib in Resources */, + 56465CD717B8AF8300EE38FC /* TabNormal_skyBlue.png in Resources */, + 56465CD817B8AF8300EE38FC /* TabNormal_green.png in Resources */, + 56465CD917B8AF8300EE38FC /* TabNormal_purple.png in Resources */, + 568322FA1B12EFED00D3C3D5 /* error_small.png in Resources */, + 569407F61939A2E400D5294F /* note_square.png in Resources */, + 56465CDA17B8AF8300EE38FC /* TabNormal_red.png in Resources */, + 560B2F6C18EBE051009B8CB7 /* lebron_james.png in Resources */, + 564061531CA37EC000C87504 /* Train_HyperNavi.png in Resources */, + 562DD69B1C04DD0900D65FDE /* addIcon.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3166DB7C16B0A5300089C0F2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 56C69D531727BE5B009419B3 /* EpubSampleNick.epub in Resources */, + 56C69D561727BF74009419B3 /* Bio.epub in Resources */, + 56711E0717B77057001B4585 /* LSHorizontalScrollTabView.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 252C02D4490F7F3A0386478F /* Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + 3166DB7D16B0A5300089C0F2 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; + }; + B6430A75B48E49480A096704 /* Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-TurkStudyTests/Pods-TurkStudyTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + D261206CDE099DB06CDB6A08 /* Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-TurkStudyTests/Pods-TurkStudyTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3166DB4B16B0A5300089C0F2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 566D60021AC5D1FE00492921 /* ISQuiz.m in Sources */, + 56D76C3418BC065B0041FA56 /* Base64.m in Sources */, + 569407F2193959ED00D5294F /* ResrouceThumbViewController.m in Sources */, + 3166DB6016B0A5300089C0F2 /* main.m in Sources */, + 56A869CA1C63F60B00CD6CC9 /* StudentData.m in Sources */, + 56BD58921C7E1FF100283AC3 /* NSString+Extension.m in Sources */, + 3166DB6416B0A5300089C0F2 /* AppDelegate.m in Sources */, + 3166DB7016B0A5300089C0F2 /* LibraryViewController.m in Sources */, + 314B7E6316C2D9BF0061F0BF /* EBookImporter.m in Sources */, + 5646970818B477BE00DB5E2A /* CmapController.m in Sources */, + 566E7C671C7E5BDB00D0ACFE /* DTProgressStatus.m in Sources */, + 56F04AB31B6453250092A523 /* LogInViewController.m in Sources */, + 560B2F7318ECC542009B8CB7 /* ConceptIconViewController.m in Sources */, + 566D60011AC5D1FE00492921 /* ISQuestion.m in Sources */, + 566D60171AC5D23500492921 /* TrueFalseViewController.m in Sources */, + 56746C101950C2D400805820 /* MBProgressHUD.m in Sources */, + 560B2F5218EBD8B5009B8CB7 /* AWCollectionViewDialLayout.m in Sources */, + 31A8258E16C2E7E000F18C1D /* Book.m in Sources */, + 56711E2717B7759A001B4585 /* BadgeView.m in Sources */, + 56711E2817B7759A001B4585 /* ColorPickerBackgroundView.m in Sources */, + 56D76C2A18BC05140041FA56 /* GroupingNode.m in Sources */, + 56711E2917B7759A001B4585 /* DrawingUtilities.m in Sources */, + 56711E2A17B7759A001B4585 /* UIImage+shortcuts.m in Sources */, + 56711E2B17B7759A001B4585 /* UIView+Addictions.m in Sources */, + 56746BFF194CFD8F00805820 /* CmapLink.m in Sources */, + 566E7C6A1C7EB44C00D0ACFE /* MyAlertView.m in Sources */, + 566D60031AC5D1FE00492921 /* ISQuizParser.m in Sources */, + 56D76C3618BC065B0041FA56 /* NSString+XMLEntities.m in Sources */, + 56B0B98318C50F560016783E /* CmapView.m in Sources */, + 31DA906C16C32DCC000DA6A3 /* GDataXMLNode.m in Sources */, + 56FB67161BCE2C3F00006AF0 /* BookPageViewController.m in Sources */, + 31F0CE2616C59BEA00E5CAC5 /* ZipArchive.mm in Sources */, + 56D76C1718BC04BB0041FA56 /* DragView.m in Sources */, + 31F0CE3316C59DEC00E5CAC5 /* ioapi.c in Sources */, + 56BD58941C7E1FF100283AC3 /* ZCTradeView.m in Sources */, + 31F0CE3416C59DEC00E5CAC5 /* mztools.c in Sources */, + 56D76C2818BC05140041FA56 /* ConceptNode.m in Sources */, + 56A869CD1C63F65B00CD6CC9 /* StudentDataWrapper.m in Sources */, + 31F0CE3516C59DEC00E5CAC5 /* unzip.c in Sources */, + 56711DEF17B77005001B4585 /* LSTintedButton.m in Sources */, + 56711E2317B7758F001B4585 /* LSTabControl.m in Sources */, + 56FFE97319DC70D100364476 /* SubNodeViewController.m in Sources */, + 56D76C2B18BC05140041FA56 /* Node.m in Sources */, + 5643887E1B204286003330F6 /* CmapBookNoteViewController.m in Sources */, + 56711E2417B7758F001B4585 /* LSTabItem.m in Sources */, + 565B23AD18FE54430074E344 /* ConceptIconTextField.m in Sources */, + 566D60151AC5D23500492921 /* OpenQuestionViewController.m in Sources */, + 56955C2918DCDC4E0073A64C /* SampleViewController.m in Sources */, + 56711E2517B7758F001B4585 /* LSTabBarView.m in Sources */, + 56A869D01C63F6B900CD6CC9 /* StudentDataParser.m in Sources */, + 56711E2617B7758F001B4585 /* LSScrollTabBarView.m in Sources */, + 565B23A918FE3A030074E344 /* ConceptViewController.m in Sources */, + 31F0CE3616C59DEC00E5CAC5 /* zip.c in Sources */, + 56ACC30219E3A804008D4304 /* LogData.m in Sources */, + 566D60131AC5D23500492921 /* QuizViewController.m in Sources */, + 563B51041919FA7A00FA0F34 /* CmapNodeParser.m in Sources */, + 31A90BBD16C9B23B003E13E0 /* BookCell.m in Sources */, + 56BD58971C7E1FF100283AC3 /* ZCAudioTool.m in Sources */, + 5693B3FA19006E6A00AABE27 /* CmapScrollViewViewController.m in Sources */, + 31B9150D16CB053B0040E8A2 /* BookViewController.m in Sources */, + 5623148016F9027C00B40047 /* ContentViewController.m in Sources */, + 56520809170418F5003272B0 /* UIMenuItem+CXAImageSupport.m in Sources */, + 5652081017041B30003272B0 /* JavaScriptFunctions.js in Sources */, + 56B0B98618C512FC0016783E /* NodeCell.m in Sources */, + 56B7BB51170CE51000037E9E /* PopoverView.m in Sources */, + 56711E2117B7755A001B4585 /* LSHorizontalScrollTabViewDemoViewController.m in Sources */, + 56B7BB57170CE82300037E9E /* OCDaysView.m in Sources */, + 56D76C2918BC05140041FA56 /* Connection.m in Sources */, + 56D76C2C18BC05140041FA56 /* Relation.m in Sources */, + 560B2F7718EDFE4D009B8CB7 /* ShangTextField.m in Sources */, + 56BD589E1C7E20B600283AC3 /* NSString+FontAwesome.m in Sources */, + 563B50FE1919F6CC00FA0F34 /* CmapNode.m in Sources */, + 56727D7A171E386800ACD92D /* WebBrowserViewController.m in Sources */, + 561BCBFA1B09CD8900F553D4 /* QAViewController.m in Sources */, + 56FFE96A19DBD31400364476 /* NodeViewController.m in Sources */, + 56746C09194E3C8600805820 /* ConceptLink.m in Sources */, + 56746C0C194E54B200805820 /* RelationTextView.m in Sources */, + 56BD58951C7E1FF100283AC3 /* ZCTradeInputView.m in Sources */, + 56ACC30519E3AAB5008D4304 /* LogDataWrapper.m in Sources */, + 564725BF1AC5EC49007BA8AE /* MultipleChoiceViewController.m in Sources */, + 56955C2518DCDAD60073A64C /* ZYQSphereView.m in Sources */, + 566D5FFF1AC5D1FE00492921 /* ISMultipleChoiceQuestion.m in Sources */, + 56711E2217B77579001B4585 /* HorizontalTabControl.m in Sources */, + 568BFE5019C109D900C55843 /* GoogleDriveViewController.m in Sources */, + 566F09D117220B6F00412952 /* NoteViewController.m in Sources */, + 56746C05194D018400805820 /* CmapLinkParser.m in Sources */, + 566D60041AC5D1FE00492921 /* ISSession.m in Sources */, + 56784B781C97C39800FBBC6B /* TrainingViewController.m in Sources */, + 56C69D491725D2AD009419B3 /* WebMarkController.m in Sources */, + 56F935E81B0DC3A500138A1A /* QAFinderViewController.m in Sources */, + 56F30E4218F5124F00E8ECEF /* UIView+i7Rotate360.m in Sources */, + 56FB60D917286999008C1F0B /* KnowledgeModule.m in Sources */, + 566E7C661C7E5BDB00D0ACFE /* DTAlertView.m in Sources */, + 56FB60DC17286AFA008C1F0B /* Concept.m in Sources */, + 56B0B98018C50B9F0016783E /* MainWindowController.m in Sources */, + 56BD58931C7E1FF100283AC3 /* UIAlertView+Quick.m in Sources */, + 56E31A30172D063D0066C55D /* Experiment.m in Sources */, + 56955C2418DCDAD60073A64C /* PFGoldenSectionSpiral.m in Sources */, + 68D1BF031D887BF100BD09D1 /* TylerTextView.m in Sources */, + 5616F844178D46BC009E0FC6 /* HighlightContent.m in Sources */, + 56F02EB6178FA29100C310F9 /* ThumbNailController.m in Sources */, + 5619B28517963287001E5BA0 /* LogFileController.m in Sources */, + 56BD58911C7E1FF100283AC3 /* UIView+Extension.m in Sources */, + 566D60001AC5D1FE00492921 /* ISOpenQuestion.m in Sources */, + 560D0BD319C9021F006B11E4 /* MapFinderViewController.m in Sources */, + 56BD58961C7E1FF100283AC3 /* ZCTradeKeyboard.m in Sources */, + 56ACC30819E3AE23008D4304 /* LogDataParser.m in Sources */, + 56BD589F1C7E20B600283AC3 /* UIButton+Bootstrap.m in Sources */, + 565561B11798DA5C00297BB8 /* HighLight.m in Sources */, + 56434C6E1C7125B900509960 /* MyTouch.m in Sources */, + 56D76C3518BC065B0041FA56 /* CMapImporterExporter.m in Sources */, + 56746C02194D00D600805820 /* CmapLinkWrapper.m in Sources */, + 56B0B98C18C522080016783E /* GHContextMenuView.m in Sources */, + 566D60051AC5D1FE00492921 /* ISTrueFalseQuestion.m in Sources */, + 565561B41798DAB800297BB8 /* HighLightWrapper.m in Sources */, + 56FB67111BCE241D00006AF0 /* PreViewNode.m in Sources */, + 565561B71798DB1500297BB8 /* HighlightParser.m in Sources */, + 563B51011919F99900FA0F34 /* CmapNodeWrapper.m in Sources */, + 567E5C4117B2234F0047F995 /* ThumbNailIcon.m in Sources */, + 565DA3F417B32F9C000DB171 /* ThumbNailIconWrapper.m in Sources */, + 569262E61C18AEDD0086BA9E /* VideoViewController.m in Sources */, + 565DA3F717B33705000DB171 /* ThumbNailIconParser.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3166DB7A16B0A5300089C0F2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 56711DF317B77010001B4585 /* LSTabControl.m in Sources */, + 56711DFC17B7701B001B4585 /* LSTabItem.m in Sources */, + 56711DFD17B7701B001B4585 /* LSTabBarView.m in Sources */, + 56711DFE17B7701B001B4585 /* LSScrollTabBarView.m in Sources */, + 56711E0217B7704B001B4585 /* HorizontalTabControl.m in Sources */, + 56711E0617B77057001B4585 /* LSHorizontalScrollTabViewDemoViewController.m in Sources */, + 56711E1B17B770B1001B4585 /* BadgeView.m in Sources */, + 56711E1C17B770B1001B4585 /* ColorPickerBackgroundView.m in Sources */, + 56711E1D17B770B1001B4585 /* DrawingUtilities.m in Sources */, + 56711E1E17B770B1001B4585 /* UIImage+shortcuts.m in Sources */, + 56711E1F17B770B1001B4585 /* UIView+Addictions.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 3166DB8516B0A5300089C0F2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3166DB4E16B0A5300089C0F2 /* Study */; + targetProxy = 3166DB8416B0A5300089C0F2 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 3166DB5C16B0A5300089C0F2 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 3166DB5D16B0A5300089C0F2 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 3166DB7416B0A5300089C0F2 /* MainStoryboard_iPhone.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 3166DB7516B0A5300089C0F2 /* en */, + ); + name = MainStoryboard_iPhone.storyboard; + sourceTree = ""; + }; + 3166DB7716B0A5300089C0F2 /* MainStoryboard_iPad.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 3166DB7816B0A5300089C0F2 /* en */, + ); + name = MainStoryboard_iPad.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 3166DB8F16B0A5300089C0F2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD)", + arm64, + armv7, + armv7s, + ); + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_BITCODE = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = /usr/include/libxml2; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + ONLY_ACTIVE_ARCH = NO; + OTHER_LDFLAGS = ( + "-lxml2", + "-Obj", + ); + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 3166DB9016B0A5300089C0F2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD)", + arm64, + armv7, + armv7s, + ); + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_BITCODE = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = /usr/include/libxml2; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + ONLY_ACTIVE_ARCH = NO; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + OTHER_LDFLAGS = ( + "-lxml2", + "-Obj", + ); + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 3166DB9216B0A5300089C0F2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\\\\\\\"$(SRCROOT)/lib/armv6-armv7\\\\\\\"", + "\\\\\\\"$(SRCROOT)/lib/armv7-armv7s\\\\\\\"", + "\\\\\\\"$(SRCROOT)/Framework\\\\\\\"", + /Users/shangwang/Developer/Latest_Version/eBookReader_08_01/Framework, + /Users/shangwang/Developer/Research/eBookReader_iPad/Framework, + "$(DEVELOPER_FRAMEWORKS_DIR)", + "$(PROJECT_DIR)", + "$(PROJECT_DIR)/Framework", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "eBookReader/Study-Prefix.pch"; + HEADER_SEARCH_PATHS = ( + "$(SDKROOT)/usr/include/libxml2", + "", + ); + "HEADER_SEARCH_PATHS[arch=*]" = "$(SDKROOT)/usr/include/libxml2"; + INFOPLIST_FILE = "eBookReader/Study-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)", + "$(PROJECT_DIR)/eBookReader", + ); + OTHER_LDFLAGS = "-lxml2 "; + PRODUCT_NAME = Study; + PROVISIONING_PROFILE = ""; + TARGETED_DEVICE_FAMILY = 2; + "USER_HEADER_SEARCH_PATHS[arch=*]" = "$(SRCROOT)/Source"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 3166DB9316B0A5300089C0F2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\\\\\\\"$(SRCROOT)/lib/armv6-armv7\\\\\\\"", + "\\\\\\\"$(SRCROOT)/lib/armv7-armv7s\\\\\\\"", + "\\\\\\\"$(SRCROOT)/Framework\\\\\\\"", + /Users/shangwang/Developer/Latest_Version/eBookReader_08_01/Framework, + /Users/shangwang/Developer/Research/eBookReader_iPad/Framework, + "$(DEVELOPER_FRAMEWORKS_DIR)", + "$(PROJECT_DIR)", + "$(PROJECT_DIR)/Framework", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "eBookReader/Study-Prefix.pch"; + HEADER_SEARCH_PATHS = "$(SDKROOT)/usr/include/libxml2 "; + INFOPLIST_FILE = "eBookReader/Study-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)", + "$(PROJECT_DIR)/eBookReader", + ); + OTHER_LDFLAGS = "-lxml2 "; + PRODUCT_NAME = Study; + PROVISIONING_PROFILE = ""; + TARGETED_DEVICE_FAMILY = 2; + "USER_HEADER_SEARCH_PATHS[arch=*]" = "$(SRCROOT)/Source"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + 3166DB9516B0A5300089C0F2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/eBookReader.app/eBookReader"; + FRAMEWORK_SEARCH_PATHS = ( + "\"$(SDKROOT)/Developer/Library/Frameworks\"", + "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", + "$(inherited)", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "eBookReader/Study-Prefix.pch"; + INFOPLIST_FILE = "eBookReaderTests/eBookReaderTests-Info.plist"; + PRODUCT_NAME = Study; + TEST_HOST = "$(BUNDLE_LOADER)"; + }; + name = Debug; + }; + 3166DB9616B0A5300089C0F2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/eBookReader.app/eBookReader"; + FRAMEWORK_SEARCH_PATHS = ( + "\"$(SDKROOT)/Developer/Library/Frameworks\"", + "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", + "$(inherited)", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "eBookReader/Study-Prefix.pch"; + INFOPLIST_FILE = "eBookReaderTests/eBookReaderTests-Info.plist"; + PRODUCT_NAME = Study; + TEST_HOST = "$(BUNDLE_LOADER)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3166DB4916B0A5300089C0F2 /* Build configuration list for PBXProject "Digital Textbook" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3166DB8F16B0A5300089C0F2 /* Debug */, + 3166DB9016B0A5300089C0F2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3166DB9116B0A5300089C0F2 /* Build configuration list for PBXNativeTarget "Study" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3166DB9216B0A5300089C0F2 /* Debug */, + 3166DB9316B0A5300089C0F2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3166DB9416B0A5300089C0F2 /* Build configuration list for PBXNativeTarget "StudyTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3166DB9516B0A5300089C0F2 /* Debug */, + 3166DB9616B0A5300089C0F2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 3166DB4616B0A5300089C0F2 /* Project object */; +} diff --git a/Digital Textbook.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Digital Textbook.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100755 index 0000000..7a81159 --- /dev/null +++ b/Digital Textbook.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Digital Textbook.xcodeproj/project.xcworkspace/xcshareddata/TurkStudy.xcscmblueprint b/Digital Textbook.xcodeproj/project.xcworkspace/xcshareddata/TurkStudy.xcscmblueprint new file mode 100755 index 0000000..bd7c43e --- /dev/null +++ b/Digital Textbook.xcodeproj/project.xcworkspace/xcshareddata/TurkStudy.xcscmblueprint @@ -0,0 +1,30 @@ +{ + "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "6464D1B802AA52B16B691A748C8D87A7ACE0711C", + "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : { + + }, + "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : { + "6464D1B802AA52B16B691A748C8D87A7ACE0711C" : 0, + "10265E242415D473A6A613214DB7AC3EE3D43F93" : 0 + }, + "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "6882C9B8-7F79-4CC6-B03A-C2CA845F3DAB", + "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : { + "6464D1B802AA52B16B691A748C8D87A7ACE0711C" : "New_TurkStudy\/", + "10265E242415D473A6A613214DB7AC3EE3D43F93" : "New_TurkStudy\/Framework\/Frameworks\/KIF\/" + }, + "DVTSourceControlWorkspaceBlueprintNameKey" : "TurkStudy", + "DVTSourceControlWorkspaceBlueprintVersion" : 204, + "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "TurkStudy.xcodeproj", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [ + { + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/kif-framework\/KIF.git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "10265E242415D473A6A613214DB7AC3EE3D43F93" + }, + { + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/nberk\/DigitalTextbook.git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "6464D1B802AA52B16B691A748C8D87A7ACE0711C" + } + ] +} \ No newline at end of file diff --git a/Digital Textbook.xcodeproj/project.xcworkspace/xcshareddata/eBookReader.xccheckout b/Digital Textbook.xcodeproj/project.xcworkspace/xcshareddata/eBookReader.xccheckout new file mode 100755 index 0000000..0698e6d --- /dev/null +++ b/Digital Textbook.xcodeproj/project.xcworkspace/xcshareddata/eBookReader.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + 04CD9BD4-9FCA-478A-9EBC-2DD1E6135A46 + IDESourceControlProjectName + eBookReader + IDESourceControlProjectOriginsDictionary + + 6464D1B802AA52B16B691A748C8D87A7ACE0711C + https://github.com/nberk/DigitalTextbook.git + + IDESourceControlProjectPath + eBookReader.xcodeproj + IDESourceControlProjectRelativeInstallPathDictionary + + 6464D1B802AA52B16B691A748C8D87A7ACE0711C + ../.. + + IDESourceControlProjectURL + https://github.com/nberk/DigitalTextbook.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + 6464D1B802AA52B16B691A748C8D87A7ACE0711C + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + 6464D1B802AA52B16B691A748C8D87A7ACE0711C + IDESourceControlWCCName + Turk_Study + + + + diff --git a/Digital Textbook.xcodeproj/project.xcworkspace/xcuserdata/Drea.xcuserdatad/UserInterfaceState.xcuserstate b/Digital Textbook.xcodeproj/project.xcworkspace/xcuserdata/Drea.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100755 index 0000000..5f95c24 Binary files /dev/null and b/Digital Textbook.xcodeproj/project.xcworkspace/xcuserdata/Drea.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Digital Textbook.xcodeproj/project.xcworkspace/xcuserdata/Drea.xcuserdatad/WorkspaceSettings.xcsettings b/Digital Textbook.xcodeproj/project.xcworkspace/xcuserdata/Drea.xcuserdatad/WorkspaceSettings.xcsettings new file mode 100755 index 0000000..28f6741 --- /dev/null +++ b/Digital Textbook.xcodeproj/project.xcworkspace/xcuserdata/Drea.xcuserdatad/WorkspaceSettings.xcsettings @@ -0,0 +1,22 @@ + + + + + BuildLocationStyle + UseAppPreferences + CustomBuildLocationType + RelativeToDerivedData + DerivedDataLocationStyle + Default + HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges + + IssueFilterStyle + ShowActiveSchemeOnly + LiveSourceIssuesEnabled + + SnapshotAutomaticallyBeforeSignificantChanges + + SnapshotLocationStyle + Default + + diff --git a/Digital Textbook.xcodeproj/project.xcworkspace/xcuserdata/shangwang.xcuserdatad/UserInterfaceState.xcuserstate b/Digital Textbook.xcodeproj/project.xcworkspace/xcuserdata/shangwang.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100755 index 0000000..cd4e718 Binary files /dev/null and b/Digital Textbook.xcodeproj/project.xcworkspace/xcuserdata/shangwang.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Digital Textbook.xcodeproj/project.xcworkspace/xcuserdata/shangwang.xcuserdatad/WorkspaceSettings.xcsettings b/Digital Textbook.xcodeproj/project.xcworkspace/xcuserdata/shangwang.xcuserdatad/WorkspaceSettings.xcsettings new file mode 100755 index 0000000..659c876 --- /dev/null +++ b/Digital Textbook.xcodeproj/project.xcworkspace/xcuserdata/shangwang.xcuserdatad/WorkspaceSettings.xcsettings @@ -0,0 +1,10 @@ + + + + + HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges + + SnapshotAutomaticallyBeforeSignificantChanges + + + diff --git a/Digital Textbook.xcodeproj/xcuserdata/Drea.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/Digital Textbook.xcodeproj/xcuserdata/Drea.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100755 index 0000000..6069909 --- /dev/null +++ b/Digital Textbook.xcodeproj/xcuserdata/Drea.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,44 @@ + + + + + + + + + + + diff --git a/Digital Textbook.xcodeproj/xcuserdata/Drea.xcuserdatad/xcschemes/eBookReader.xcscheme b/Digital Textbook.xcodeproj/xcuserdata/Drea.xcuserdatad/xcschemes/eBookReader.xcscheme new file mode 100755 index 0000000..5887c59 --- /dev/null +++ b/Digital Textbook.xcodeproj/xcuserdata/Drea.xcuserdatad/xcschemes/eBookReader.xcscheme @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Digital Textbook.xcodeproj/xcuserdata/Drea.xcuserdatad/xcschemes/xcschememanagement.plist b/Digital Textbook.xcodeproj/xcuserdata/Drea.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100755 index 0000000..fe1c25b --- /dev/null +++ b/Digital Textbook.xcodeproj/xcuserdata/Drea.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + eBookReader.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 3166DB4E16B0A5300089C0F2 + + primary + + + 3166DB7E16B0A5300089C0F2 + + primary + + + + + diff --git a/Digital Textbook.xcodeproj/xcuserdata/shangwang.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/Digital Textbook.xcodeproj/xcuserdata/shangwang.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100755 index 0000000..ce2a664 --- /dev/null +++ b/Digital Textbook.xcodeproj/xcuserdata/shangwang.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Digital Textbook.xcodeproj/xcuserdata/shangwang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Digital Textbook.xcodeproj/xcuserdata/shangwang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100755 index 0000000..d553fb6 --- /dev/null +++ b/Digital Textbook.xcodeproj/xcuserdata/shangwang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,8877 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Digital Textbook.xcodeproj/xcuserdata/shangwang.xcuserdatad/xcschemes/eBookReader.xcscheme b/Digital Textbook.xcodeproj/xcuserdata/shangwang.xcuserdatad/xcschemes/eBookReader.xcscheme new file mode 100755 index 0000000..79a74c1 --- /dev/null +++ b/Digital Textbook.xcodeproj/xcuserdata/shangwang.xcuserdatad/xcschemes/eBookReader.xcscheme @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Digital Textbook.xcodeproj/xcuserdata/shangwang.xcuserdatad/xcschemes/xcschememanagement.plist b/Digital Textbook.xcodeproj/xcuserdata/shangwang.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100755 index 0000000..6b9455b --- /dev/null +++ b/Digital Textbook.xcodeproj/xcuserdata/shangwang.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,37 @@ + + + + + SchemeUserState + + eBookReader.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 3166DB4E16B0A5300089C0F2 + + primary + + + 3166DB7E16B0A5300089C0F2 + + primary + + + 56434C721C7128FE00509960 + + primary + + + 56434C821C7130A700509960 + + primary + + + + + diff --git a/Study.xcodeproj/project.xcworkspace/xcshareddata/TurkStudy.xcscmblueprint b/Study.xcodeproj/project.xcworkspace/xcshareddata/TurkStudy.xcscmblueprint old mode 100644 new mode 100755 diff --git a/TouchTest/Info.plist b/TouchTest/Info.plist old mode 100644 new mode 100755 diff --git a/TouchTest/TouchTest.m b/TouchTest/TouchTest.m old mode 100644 new mode 100755 diff --git a/eBookReader/BookCell.xib b/eBookReader/BookCell.xib index 61b0f32..050dd23 100755 --- a/eBookReader/BookCell.xib +++ b/eBookReader/BookCell.xib @@ -1,7 +1,8 @@ - + - + + @@ -15,7 +16,6 @@ - @@ -25,7 +25,6 @@ - \ No newline at end of file + diff --git a/eBookReader/BookPageViewController.h b/eBookReader/BookPageViewController.h index 4c4e993..a90cd75 100755 --- a/eBookReader/BookPageViewController.h +++ b/eBookReader/BookPageViewController.h @@ -13,12 +13,17 @@ #import "VideoViewController.h" #import "QAViewController.h" #import "DTAlertView.h" +#import "UIMenuItem+CXAImageSupport.h" +#import "WebBrowserViewController.h" + @class LogDataWrapper; -@interface BookPageViewController : UIViewController +@interface BookPageViewController : UIViewController @property (strong, nonatomic) CmapController *cmapView; @property (strong, nonatomic) VideoViewController *videoView; @property (strong, nonatomic) BookViewController *bookView; @property (strong, nonatomic) QAViewController *QA; + +@property (strong, nonatomic) WebBrowserViewController *myWebView; @property (nonatomic, strong) DBRestClient *restClient; @property (nonatomic, retain)LogDataWrapper * logWrapper; @property (strong,nonatomic) UIImageView *bulbImageView; @@ -26,7 +31,7 @@ @property BOOL ShowingQA; @property BOOL isTraining; @property BOOL enableHyperLink; -@property NSTimeInterval totalCountdownInterval; +@property NSTimeInterval totalCountdownInterval; @property NSTimeInterval remainTime; @property NSDate* startDate; @property (weak, nonatomic) IBOutlet UILabel *timerLable; @@ -38,8 +43,7 @@ @property (strong, nonatomic) NSMutableArray* conceptNodeArray; @property BOOL isSecondShow; @property NSTimer* CmapTimer; - - +@property int subViewType; //0:contentview 1:web brower view @property (strong, nonatomic) UILabel *webFocusQuestionLable; @property (strong, nonatomic) UILabel *cmapFocusQuestionLable; @property (strong, nonatomic) UIImageView *hintImg; @@ -62,6 +66,8 @@ -(void)showAlertWithText: (NSString*) str; -(void)showLinkingWarning; -(void)hideLinkingWarning; -@end +-(void)showWebView: (NSString*)conceptName atNode: (NodeCell*) relatedNode; +-(void)hideWebView; +@end diff --git a/eBookReader/BookPageViewController.m b/eBookReader/BookPageViewController.m index d71e4c1..08d165e 100755 --- a/eBookReader/BookPageViewController.m +++ b/eBookReader/BookPageViewController.m @@ -13,6 +13,9 @@ #import "ConceptLink.h" #import "PreViewNode.h" #import "VideoViewController.h" +#import "UIMenuItem+CXAImageSupport.h" + + @interface BookPageViewController () @end @@ -43,6 +46,9 @@ @implementation BookPageViewController @synthesize webFocusQuestionLable; @synthesize cmapFocusQuestionLable; @synthesize hintImg; +@synthesize myWebView; +@synthesize subViewType; + - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; @@ -53,34 +59,25 @@ - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil logWrapper= [LogDataParser loadLogData]; ShowingQA=true; conceptNodeArray=[[NSMutableArray alloc] init]; - + subViewType=0; } return self; } --(void)test{ - NSLog(@"Test"); -} - -(void)addSwitchView{ - bulbImageView = [[UIImageView alloc]initWithFrame:CGRectMake(498, 350, 30, 30)]; [bulbImageView setImage:[UIImage imageNamed:@"switch.png"]]; //bulbImageView.alpha=0.8; bulbImageView.userInteractionEnabled = YES; - UITapGestureRecognizer *bulbTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(clickOnBulb:)]; - [self.bulbImageView addGestureRecognizer:bulbTap]; - [self.view addSubview:bulbImageView]; [bulbImageView setHidden:YES]; bulbImageView.layer.shadowOpacity = 0.4; bulbImageView.layer.shadowRadius = 4; bulbImageView.layer.shadowColor = [UIColor blackColor].CGColor; bulbImageView.layer.shadowOffset = CGSizeMake(2, 2); - } - (IBAction)clickOnBulb : (id)sender @@ -95,7 +92,6 @@ - (IBAction)clickOnBulb : (id)sender ShowingQA=true; } [self.view bringSubviewToFront:bulbImageView]; - } @@ -104,14 +100,12 @@ - (IBAction)QAonConcpet if(ShowingQA){ [self.view bringSubviewToFront:cmapView.view]; [cmapView loadConceptMap:nil]; - ShowingQA=false; }else{ [self.view bringSubviewToFront:QA.view]; ShowingQA=true; } [self.view bringSubviewToFront:bulbImageView]; - } -(void)finishTraining{ @@ -125,6 +119,8 @@ -(void)finishTraining{ + + - (void)viewDidLoad { [super viewDidLoad]; @@ -134,15 +130,14 @@ - (void)viewDidLoad self.navigationItem.rightBarButtonItem = leftButton; + if(isTraining){ UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"Finish" style:UIBarButtonItemStyleDone target:self action:@selector(finishTraining)]; self.navigationItem.rightBarButtonItem = leftButton; } - //[self.navigationItem setHidesBackButton:YES animated:YES]; - - // [self.parentViewController.navigationController.navigationBar setHidden:YES]; + // [self.parentViewController.navigationController.navigationBar setHidden:YES]; [[NSNotificationCenter defaultCenter] addObserver:self // put here the view controller which has to be notified @@ -150,9 +145,6 @@ - (void)viewDidLoad name:@"UIDeviceOrientationDidChangeNotification" object:nil]; - - - //[self.navigationController setNavigationBarHidden:YES]; // self.navigationController.navigationBar.translucent = NO; //self.parentViewController.navigationController.navigationBar.translucent = YES; @@ -161,7 +153,10 @@ - (void)viewDidLoad //[self.navigationController setNavigationBarHidden:YES animated:YES]; // Do any additional setup after loading the view from its nib. + [self createMenuItems]; [self createCmapView]; + [self createWebView]; + //[self createQA]; //[self addSwitchView]; bookView.parent_BookPageViewController=self; @@ -171,76 +166,51 @@ - (void)viewDidLoad [self splitScreen]; } upperBorder = [CALayer layer]; - // [self.view bringSubviewToFront:cmapView.toolBar]; - //[self.view bringSubviewToFront:previewImg]; + [self.view bringSubviewToFront:cmapView.toolBar]; + [self.view bringSubviewToFront:previewImg]; [self.view sendSubviewToBack:bookView.view]; [self.view bringSubviewToFront:previewImg]; NSString* isPreview=[[NSUserDefaults standardUserDefaults] stringForKey:@"isPreview"]; UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; - if( (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)&&[isPreview isEqualToString:@"YES"]) + if( (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)&&[isPreview isEqualToString:@"YES"]) //horizontal, split screen { [previewImg setHidden:NO]; [PreviewRect setHidden:NO]; - + }else{ + [previewImg setHidden:YES]; [PreviewRect setHidden:YES]; } - /* - UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; - if(orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) - { - if([isPreview isEqualToString:@"NO"]){ - [previewImg setHidden:YES]; - [PreviewRect setHidden:YES]; - } - else{ - [previewImg setHidden:NO]; - [PreviewRect setHidden:NO]; - - } - }else{ - [previewImg setHidden:NO]; - [PreviewRect setHidden:NO]; - - }*/ - - - /* [cmapView loadConceptMap:nil]; - NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(checkCountdown:) userInfo:nil repeats:YES]; - QuizViewController *quiz=[[QuizViewController alloc] initWithNibName:@"ViewController" bundle:nil]; - quiz.isFinished=false; - quiz.userName=userName; - quiz.bookLogDataWrapper=logWrapper; - quiz.testType=0;//pre test - quiz.parentBookPageViewController=self; - [self.navigationController pushViewController:quiz animated:YES]; - */ - if([isPreview isEqualToString:@"YES"]){ - - UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)]; - panGesture.delegate=self; - [previewImg addGestureRecognizer:panGesture]; - [previewImg setUserInteractionEnabled:YES]; - - PreviewRect= [[UIView alloc] initWithFrame:CGRectMake(2,2,previewImg.frame.size.width-4,previewImg.frame.size.height-4)]; - PreviewRect.backgroundColor=[UIColor clearColor]; - PreviewRect.layer.borderColor = [UIColor redColor].CGColor; - PreviewRect.tag=1; - PreviewRect.layer.borderWidth = 1.0f; - originalFrame=PreviewRect.frame; - [previewImg addSubview:PreviewRect]; + + UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)]; + panGesture.delegate=self; + [previewImg addGestureRecognizer:panGesture]; + [previewImg setUserInteractionEnabled:YES]; + + PreviewRect= [[UIView alloc] initWithFrame:CGRectMake(2,2,previewImg.frame.size.width-4,previewImg.frame.size.height-4)]; + PreviewRect.backgroundColor=[UIColor clearColor]; + PreviewRect.layer.borderColor = [UIColor redColor].CGColor; + PreviewRect.tag=1; + PreviewRect.layer.borderWidth = 1.0f; + originalFrame=PreviewRect.frame; + [previewImg addSubview:PreviewRect]; } // [self splitScreen]; if(isTraining){ self.navigationItem.title=@"Training"; } + + LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:@"Application Loaded Succesfully" selection:@"Book Page View" input:@"null" pageNum:bookView.currentContentView.pageNum]; + [logWrapper addLogs:newlog]; + [LogDataParser saveLogData:logWrapper]; + } @@ -249,11 +219,18 @@ - (void)orientationChanged:(NSNotification *)notification{ //when retating the device, clear the thumbnail icons and reload if(orientation==UIInterfaceOrientationPortrait||orientation==UIInterfaceOrientationPortraitUpsideDown){ - + //Vertical + LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:@"Changed to Vertical Orientation" selection:@"Book Page View" input:@"null" pageNum:bookView.currentContentView.pageNum]; + [logWrapper addLogs:newlog]; + [LogDataParser saveLogData:logWrapper]; [self resumeNormalScreen ]; } //otherwise, hide the concept map view. if(orientation==UIInterfaceOrientationLandscapeLeft||orientation==UIInterfaceOrientationLandscapeRight){ + //Horizontal + LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:@"Changed to Horizontal Orientation" selection:@"Book Page View" input:@"null" pageNum:bookView.currentContentView.pageNum]; + [logWrapper addLogs:newlog]; + [LogDataParser saveLogData:logWrapper]; [self splitScreen]; } //do stuff @@ -273,7 +250,7 @@ -(void)viewWillAppear:(BOOL)animated{ -(void)viewDidAppear:(BOOL)animated{ - + NSString* istest=[[NSUserDefaults standardUserDefaults] stringForKey:@"testMode"]; if(![istest isEqualToString:@"YES"]){ @@ -290,18 +267,6 @@ -(void)viewDidAppear:(BOOL)animated{ } } - /* - self.parentViewController.navigationController.navigationBar.translucent = YES; - self.navigationController.navigationBar.translucent = YES; - [ self.parentViewController.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; - [ self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; - [self.navigationController.navigationBar setBackgroundImage:[UIImage new] - forBarMetrics:UIBarMetricsDefault]; - self.navigationController.navigationBar.shadowImage = [UIImage new]; - self.navigationController.navigationBar.translucent = YES; - - [self.navigationController.navigationBar setFrame:CGRectMake(0, 0, self.navigationController.navigationBar.frame.size.width, 30)];*/ - // [self.navigationController.navigationBar setFrame:CGRectMake(0, 0, self.navigationController.navigationBar.frame.size.width, 40)]; } @@ -347,7 +312,7 @@ -(void)showTutorial{ LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:@"Go to tutorial view" selection:@"Tutorial View" input:@"null" pageNum:bookView.currentContentView.pageNum]; [logWrapper addLogs:newlog]; [LogDataParser saveLogData:logWrapper]; - + [self.navigationController pushViewController:tutorial animated:NO]; @@ -431,6 +396,85 @@ -(BOOL)prefersStatusBarHidden{ return YES; } + +//Sets up the menu items that pop up +-(void) createMenuItems{ + //get the shared menubar. + UIMenuController *menuController = [UIMenuController sharedMenuController]; + //create a menu item + CXAMenuItemSettings *markIconSettingSpeak = [CXAMenuItemSettings new]; + markIconSettingSpeak.image = [UIImage imageNamed:@"bb"]; + markIconSettingSpeak.shadowDisabled = NO; + markIconSettingSpeak.shrinkWidth = 4; //set menu item size and picture. + //set up the function called when user click the button + UIMenuItem *speakItem = [[UIMenuItem alloc] initWithTitle: @"speak" action: @selector(dragAndDropConcept:)]; + [speakItem cxa_setSettings:markIconSettingSpeak]; + //add the menu item to the menubar. + [menuController setMenuItems: [NSArray arrayWithObjects: speakItem, nil]]; +} + +//enables menu item buttons to perform action +-(BOOL) canPerformAction:(SEL)action withSender:(id)sender{ + if (action == @selector(dragAndDropConcept:)){ + return YES; + } + return NO; +} + +//Creates concept node from selections +-(void)dragAndDropConcept:(id)sender{ + // NSLog(@"dadc"); + NSString *selection = @""; + BOOL isHyperLink = [[NSUserDefaults standardUserDefaults] boolForKey:@"HyperLinking"]; + if(0==subViewType){ //selection comes from content view controller + // NSLog(@"Content View"); + selection = [self.bookView.currentContentView.webView stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"]; //selection is selected string in content view + NSLog(@"Selection = %@", selection); + if(selection.length>50){ //selection is too long + UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"You can not add concepts that have more than 50 charaters!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; + [alert show]; + return; + } + + if([self.cmapView isNodeExist:selection]){ //selected string already exists + NSString *msg=[[NSString alloc]initWithFormat:@"Node with name \"%@\" already exist!",selection]; + UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; + [alert show]; + return; + } + [self.cmapView createNodeFromBook:CGPointMake( arc4random() % 400+30, 690) withName:selection BookPos:CGPointMake(0, 0) page:self.bookView.currentContentView.pageNum]; + if(isHyperLink){//check if is group A + [self.bookView.currentContentView saveHighlightToXML:@"#F2B36B" ]; + [self.bookView.currentContentView highlightStringWithColor:@"#F2B36B"]; + [self.cmapView highlightNode:selection]; + } + + } + else if(1==subViewType){ //selection comes from web browser view controller + // NSLog(@"Web browser"); + selection = [self.myWebView.webBrowserView stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"]; //selection is selected string in web browser view + // NSLog(@"Selection = %@", selection); + if(selection.length>50){ //selection is too long + UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"You can not add concepts that have more than 50 charaters!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; + [alert show]; + return; + } + + if([self.cmapView isNodeExist:selection]){ //selected string already exists + NSString *msg=[[NSString alloc]initWithFormat:@"Node with name \"%@\" already exist!",selection]; + UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; + [alert show]; + return; + } + [self.cmapView createNodeFromBook:CGPointMake( arc4random() % 400+30, 690) withName:selection BookPos:CGPointMake(0, 0) page:0]; + } + else{ + NSLog(@"Something has gone wrong in drag and drop concept"); + } + +} + + -(void)createCmapView{ cmapView=[[CmapController alloc] initWithNibName:@"CmapView" bundle:nil]; @@ -459,6 +503,27 @@ -(void)createQA{ [QA.view setHidden:YES]; } +//creates our web browser view +-(void)createWebView{ + myWebView=[[WebBrowserViewController alloc] initWithNibName:@"WebBrowserViewController" bundle:nil]; + myWebView.parentBookPageViewCtr=self; + [self addChildViewController:myWebView]; + [self.view addSubview:myWebView.view]; + [myWebView.view setUserInteractionEnabled:YES]; + //CGPoint decides where webview is showing, lookup screen resolution to ipad 2 + //if that doesn't work go to view didload in web browser.m + //myWebView.view.center=CGPointMake(768, 384); + myWebView.view.center=CGPointMake(256, 384); + [myWebView.view setHidden:YES]; + myWebView.view.clipsToBounds = YES; + + //myWebView.view.layer.zPosition = 1; + // [self.view bringSubviewToFront:myWebView.view]; +} + +-(void)webViewDidFinishLoad:(UIWebView *)m_webView{ + [bookView.loadContentView loadHghLight]; //This maintains and loads the highlights +} -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { @@ -474,11 +539,12 @@ -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOr } - +//Screen splits when screen is rotated sideways. This is what happens when screen is split -(void)splitScreen{ CGRect rec=CGRectMake(0, 0, 512, 768); [bookView.view setFrame:rec]; [cmapView.view setHidden:NO]; + //[myWebView.view setHidden:NO]; [QA.view setHidden:NO]; [bulbImageView setHidden:NO]; LogFileController *logFile=[[LogFileController alloc]init]; @@ -807,8 +873,10 @@ -(void)addConceptMapPreview:(NSMutableArray*)nodeArray Links: (NSMutableArray*)l [pNode.view setFrame:CGRectMake(cell.showPoint.x*xRatio, cell.showPoint.y*yRatio,6, 6)]; pNode.ParentPreView=previewImg; pNode.name=cell.text.text; - if(cell.pageNum==(bookView.currentContentView.pageNum-1)){ - UIImage* orgImg =[UIImage imageNamed:@"orangeRec"]; + //if the cell's page number = current page + if(cell.pageNum+1==(bookView.loadContentView.pageNum)){ + NSLog (@"Activate"); + UIImage* orgImg =[UIImage imageNamed:@"orangeRec"]; //highlight node in preview orgImg=[self imageWithImage:orgImg scaledToSize:CGSizeMake(20, 20)]; UIImageView *dot =[[UIImageView alloc]initWithImage:orgImg]; [pNode.img setImage:orgImg]; @@ -863,7 +931,7 @@ -(void)showAdminPsdAlert{ // Set text field to secure text mode after show. [alertView.textField setSecureTextEntry:YES]; - + } ////////////////////functions for tutorial/////////////////////// @@ -987,7 +1055,7 @@ -(void)showAlertWithString: (NSString*) str : (UIView*)imgView{ [alert setValue:imgView forKey:@"accessoryView"]; [alert show]; - + } @@ -1011,13 +1079,27 @@ -(void)createDeleteTraining{ [cmapView.conceptNodeArray removeAllObjects]; [cmapView.conceptLinkArray removeAllObjects]; - NodeCell* cell= [cmapView createNodeFromBookForLink:CGPointMake( 250, 300) withName:@"delete me" BookPos:CGPointMake(0, 0) page:1]; cell.text.backgroundColor=[UIColor colorWithRed:247.0/255.0 green:176.0/255.0 blue:143.0/255.0 alpha:1]; webFocusQuestionLable.text=@"Long click on a concept and drag to the delete option."; } +//Displays webview and sets related node +-(void)showWebView: (NSString*)conceptName atNode:(NodeCell *)relatedNode { + [myWebView.view setHidden:NO]; + subViewType=1; + [myWebView SearchKeyWord:conceptName]; + [myWebView setRelatedNode:relatedNode]; + // [previewImg setHidden:YES]; + [self.view bringSubviewToFront:myWebView.view]; +} +//hides webview +-(void)hideWebView{ + subViewType=0; + [myWebView.view setHidden:YES]; + //[previewImg setHidden:NO]; + [self.view sendSubviewToBack:myWebView.view]; +} - -@end +@end \ No newline at end of file diff --git a/eBookReader/BookViewController.h b/eBookReader/BookViewController.h index fdac1fb..c143dd9 100755 --- a/eBookReader/BookViewController.h +++ b/eBookReader/BookViewController.h @@ -42,6 +42,7 @@ @property (strong, nonatomic) BookPageViewController* parent_BookPageViewController; @property (strong, nonatomic) NSString* userName; @property (strong, nonatomic) ContentViewController *currentContentView; +@property (strong, nonatomic) ContentViewController *loadContentView; - (void) loadFirstPage; -(void) createContentPages; diff --git a/eBookReader/BookViewController.m b/eBookReader/BookViewController.m index 3fa3ca2..9210f35 100755 --- a/eBookReader/BookViewController.m +++ b/eBookReader/BookViewController.m @@ -47,7 +47,7 @@ @implementation BookViewController @synthesize logWrapper; @synthesize userName; @synthesize currentContentView; - +@synthesize loadContentView; - (void)viewDidLoad { [super viewDidLoad]; @@ -197,7 +197,7 @@ - (ContentViewController *)viewControllerAtIndex:(NSUInteger)index return nil; } - NSString* logStr=[[NSString alloc] initWithFormat:@"Navigate to page: %d", index+1]; + NSString* logStr=[[NSString alloc] initWithFormat:@"Loading page: %d", index+1]; LogData* log= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:logStr selection:@"Textbook" input:@"null" pageNum:index]; [logWrapper addLogs:log]; [LogDataParser saveLogData:logWrapper]; @@ -217,7 +217,8 @@ - (ContentViewController *)viewControllerAtIndex:(NSUInteger)index dataViewController.bookHighLight=highLight; dataViewController.bookthumbNailIcon=thumbnailIcon; dataViewController.bookLogData=logWrapper; - currentContentView=dataViewController; + loadContentView=dataViewController; + // currentContentView=dataViewController; NSLog(@"Page: %d/%d", _pageNum+1,_totalPageNum); dataViewController.dataObject = @@ -345,7 +346,8 @@ - (UIImage*)scaleToSize:(CGSize)size image:(UIImage*) img { -(void)searchAndHighlightNode{ - + [parent_BookPageViewController.cmapView highlightPageNode:loadContentView.pageNum]; + /* if(thumbnailIcon!=nil){ for(ThumbNailIcon *thumbNailItem in thumbnailIcon.thumbnails){ // if([thumbNailItem.relatedConcpet isEqualToString: concpet]){ @@ -353,13 +355,13 @@ -(void)searchAndHighlightNode{ if (3==thumbNailItem.type){ //if(parent_BookPageViewController.cmapView.isInitComplete){ // [parent_BookPageViewController.cmapView highlightNode:thumbNailItem.text]; - [parent_BookPageViewController.cmapView highlightPageNode:currentContentView.pageNum]; + [parent_BookPageViewController.cmapView highlightPageNode:loadContentView.pageNum]; // } } } //} } - } + }*/ } diff --git a/eBookReader/CmapController.h b/eBookReader/CmapController.h index 0e8892b..c6e49a7 100755 --- a/eBookReader/CmapController.h +++ b/eBookReader/CmapController.h @@ -30,6 +30,7 @@ #import "ZCTradeView.h" #import "RelationTextView.h" #import "DTAlertView.h" +#import "WebBrowserViewController.h" @class NodeCell; @class BookViewController; @class HighLightWrapper; @@ -47,6 +48,9 @@ @property (strong, nonatomic) IBOutlet UIScrollView *conceptMapView; @property (strong, nonatomic) IBOutlet UIView *contentView; +@property (strong, nonatomic) PopoverView* showingPV; //pv in node cell +@property (strong, nonatomic) NodeCell* noteTakingNode; //for taking notes + @property (strong, nonatomic) id dataObject;// sotres the HTML data @property (strong, nonatomic) id url; //the URL link to display HTML content @property (nonatomic) BOOL isMenuShow; @@ -75,6 +79,7 @@ @property(strong,nonatomic) UIImageView *bulbImageView; @property(strong,nonatomic) UIImageView *previewImageView; + @property (weak, nonatomic) IBOutlet UILabel *focusQuestionLable; @property BOOL isQuestionShow; @property (strong, nonatomic) NSMutableArray* conceptNamesArray; @@ -153,7 +158,7 @@ -(void)startWait; -(void)endWait; -(void)showResources; --(void)createNode:(CGPoint)position withName:(NSString*) name page: (int)m_pageNum; +-(void)createNode:(CGPoint)position withName:(NSString*) name page: (int)m_pageNum url:(NSURL*)m_linkingUrl; -(void)createNodeFromBook:(CGPoint)position withName:(NSString*) name BookPos: (CGPoint)bookPosition page:(int)m_pageNum; -(void)addConcpetLink: (ConceptLink*) m_link; -(void)autoSaveMap; @@ -190,4 +195,5 @@ -(void)highlightPageNode: (int)page; -(void)showLinkHint; -(void)dismissLinkHint; +-(void)showNoteTaking: (CGPoint)showpoint; @end diff --git a/eBookReader/CmapController.m b/eBookReader/CmapController.m index b695859..edf573d 100755 --- a/eBookReader/CmapController.m +++ b/eBookReader/CmapController.m @@ -26,6 +26,7 @@ #import "ZCTradeView.h" #import "MyAlertView.h" #import "TrainingViewController.h" +#import "PopoverView.h" /* @interface CmapController () @property (weak, nonatomic) IBOutlet UIImageView *imageView; @@ -98,6 +99,9 @@ @implementation CmapController @synthesize keyboardOffset; @synthesize linkJustCreated; @synthesize upLoadIcon; +@synthesize showingPV; +@synthesize noteTakingNode; + - (id) init { if (self = [super init]) { nodeCount=1; @@ -143,6 +147,8 @@ - (void)viewDidLoad lastStepConceptNodeArray=[[NSMutableArray alloc] init]; lastStepConceptLinkArray=[[NSMutableArray alloc] init]; + // myWebView=[[WebBrowserViewController alloc]initWithNibName:@"WebBrowserViewController" bundle:nil]; + [self.navigationController setDelegate:self]; // [self.navigationController setNavigationBarHidden: YES animated:NO]; /* @@ -182,11 +188,6 @@ - (void)viewDidLoad // [self loadConceptMap:nil]; isInitComplete=YES; - //double tap to pop up help menu - //UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapped:)]; - //[doubleTap setNumberOfTapsRequired:2]; - //doubleTap.delegate=self; - //[self.view addGestureRecognizer:doubleTap]; bulbImageView = [[UIImageView alloc]initWithFrame:CGRectMake(450, 700, 40, 40)]; [bulbImageView setImage:[UIImage imageNamed:@"addIcon"]]; @@ -408,7 +409,7 @@ - (void)toolBarTap:(UILongPressGestureRecognizer *)gestureRecognizer{ } - +//The search button on toolbar - (IBAction)hideAndShow:(id)sender { [parentBookPageViewController hideAndShowPreView]; @@ -416,7 +417,7 @@ - (IBAction)hideAndShow:(id)sender { -(void)showAndHidePreview:(id)sender { - [parentBookPageViewController hideAndShowPreView]; + //[parentBookPageViewController hideAndShowPreView]; } -(void)buttonAction{ @@ -463,14 +464,12 @@ - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView if(contentView.frame.size.width>2500){ // return NULL; } - - return contentView; } - +//Loads concept map - (IBAction)loadConceptMap:(id)sender { @@ -494,9 +493,10 @@ - (IBAction)loadConceptMap:(id)sender { [conceptNodeArray removeAllObjects]; [conceptLinkArray removeAllObjects]; + for(CmapNode* cell in bookNodeWrapper.cmapNodes){ - [self createNode:CGPointMake(cell.point_x, cell.point_y) withName:cell.text page:cell.pageNum]; + [self createNode:CGPointMake(cell.point_x, cell.point_y) withName:cell.text page:cell.pageNum url:cell.linkingUrl urlTitle: cell.linkingUrlTitle hasNote: cell.hasNote hasHighlight: cell.hasHighlight hasWebLink: cell.hasWebLink savedNotesString: cell.savedNotesString]; } @@ -540,7 +540,7 @@ -(void)reCreateAllLinks{ [conceptLinkArray removeAllObjects]; for(CmapNode* cell in bookNodeWrapper.cmapNodes){ - [self createNode:CGPointMake(cell.point_x, cell.point_y) withName:cell.text page:cell.pageNum]; + [self createNode:CGPointMake(cell.point_x, cell.point_y) withName:cell.text page:cell.pageNum url:cell.linkingUrl]; } @@ -580,11 +580,6 @@ -(void)createLink: (NodeCell*) leftCell rightCell: (NodeCell*) rightCell name: ( name:UITextViewTextDidEndEditingNotification object:nil]; - //relation.frame = CGRectMake(relation.frame.origin.x, relation.frame.origin.y, relation.contentSize.width, relation.contentSize.height); - // [relationTextArray addObject:relation]; - //ConceptLink *link = [[ConceptLink alloc] initWithName:self conceptName:relationName relation:relation]; - //[parentCmapController addConcpetLink:link]; - CGPoint p1=[self getViewCenterPoint:leftCell.view]; CGPoint p2=[self getViewCenterPoint:rightCell.view]; relation.center=CGPointMake((p1.x/2+p2.x/2), (p1.y/2+p2.y/2)); @@ -628,7 +623,7 @@ - (IBAction)saveConceptMap:(id)sender { // [ CmapLinkParser saveCmapLink:bookLinkWrapper]; [ CmapLinkParser saveExpertCmapLink:bookLinkWrapper]; for(NodeCell* m_node in conceptNodeArray){ - CmapNode* node= [[CmapNode alloc] initWithName: m_node.text.text bookTitle:m_node.bookTitle positionX:m_node.view.frame.origin.x positionY:m_node.view.frame.origin.y Tag:m_node.text.tag page:m_node.pageNum]; + CmapNode* node= [[CmapNode alloc] initWithName: m_node.text.text bookTitle:m_node.bookTitle positionX:m_node.view.frame.origin.x positionY:m_node.view.frame.origin.y Tag:m_node.text.tag page:m_node.pageNum url:m_node.linkingUrl.absoluteString urlTitle: m_node.linkingUrlTitle hasNote:m_node.hasNote hasHighlight:m_node.hasHighlight hasWebLink:m_node.hasWeblink savedNotesString: m_node.appendedNoteString]; [bookNodeWrapper addthumbnail:node]; } //[CmapNodeParser saveCmapNode:bookNodeWrapper]; @@ -641,7 +636,7 @@ -(void)savePreviousStep{ } --(void)autoSaveMap{ +-(void)autoSaveMap{ //This is to save the current concept map in the log files if(isTraining){ return; } @@ -656,7 +651,8 @@ -(void)autoSaveMap{ } [ CmapLinkParser saveCmapLink:bookLinkWrapper]; for(NodeCell* m_node in conceptNodeArray){ - CmapNode* node= [[CmapNode alloc] initWithName: m_node.text.text bookTitle:m_node.bookTitle positionX:m_node.view.frame.origin.x positionY:m_node.view.frame.origin.y Tag:m_node.text.tag page:m_node.pageNum]; + // NSLog([NSString stringWithFormat: @"Note String at auto save: %@", m_node.appendedNoteString]); + CmapNode* node= [[CmapNode alloc] initWithName: m_node.text.text bookTitle:m_node.bookTitle positionX:m_node.view.frame.origin.x positionY:m_node.view.frame.origin.y Tag:m_node.text.tag page:m_node.pageNum url:m_node.linkingUrl.absoluteString urlTitle: m_node.linkingUrlTitle hasNote:m_node.hasNote hasHighlight:m_node.hasHighlight hasWebLink:m_node.hasWeblink savedNotesString: m_node.appendedNoteString]; [bookNodeWrapper addthumbnail:node]; } @@ -680,30 +676,30 @@ - (void)LongPress:(UILongPressGestureRecognizer *)gestureRecognizer { -(void)logLinkingConceptNodes: (NSString*)Concept1 ConnectedConcept: (NSString*)Concept2 { - NSString* LogString=[[NSString alloc] initWithFormat:@"Linking concept: %@ with: %@. ", Concept1, Concept2]; + NSString* LogString=[[NSString alloc] initWithFormat:@"Linking concept: %@ with: %@.", Concept1, Concept2]; NSString* selectionString=[[NSString alloc] initWithFormat:@" %@ and %@. ", Concept1, Concept2]; LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:LogString selection:selectionString input:@"null" pageNum:pageNum]; [bookLogDataWrapper addLogs:newlog]; [LogDataParser saveLogData:bookLogDataWrapper]; } - +/* -(void)logHyperNavigation:(NSString*)ConceptName{ NSString* LogString=[[NSString alloc] initWithFormat:@"Using hyperlink from concept: %@", ConceptName]; LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:LogString selection:@"concept map view" input:@"null" pageNum:pageNum]; [bookLogDataWrapper addLogs:newlog]; [LogDataParser saveLogData:bookLogDataWrapper]; -} +}*/ -(void)disableAllNodesEditting{ for (NodeCell *node in conceptNodeArray){ - node.text.enabled=NO; + // node.text.enabled=NO; } } -(void)enableAllNodesEditting{ for (NodeCell *node in conceptNodeArray){ - node.text.enabled=YES; + // node.text.enabled=YES; } } @@ -734,26 +730,8 @@ -(void)dismissAlert:(UIAlertView*)x{ -(BOOL)prefersStatusBarHidden{ return YES; } - --(void)createNode:(CGPoint)position withName:(NSString*) name page: (int)m_pageNum{ - //[self savePreviousStep]; - /* - NodeCell *node=[[NodeCell alloc]initWithNibName:@"NodeCell" bundle:nil]; - node.parentCmapController=self; - node.showPoint=CGPointMake(position.x+39, position.y+15);; - node.bookHighLight=bookHighlight; - node.isInitialed=YES; - node.bookTitle=bookTitle; - node.bookthumbNailIcon=bookThumbNial; - node.text.text=name; - node.conceptName=name; - [self addChildViewController:node]; - [conceptNodeArray addObject:node]; - [conceptMapView addSubview: node.view ]; - node.text.text=name; - node.conceptName=name; - */ - +//Used to create nodes when map is loading +-(void)createNode:(CGPoint)position withName:(NSString*) name page: (int)m_pageNum url:(NSURL*)m_linkingUrl urlTitle: (NSString *) m_linkingUrlTitle hasNote: (BOOL) m_hasNote hasHighlight: (BOOL) m_hasHighlight hasWebLink: (BOOL) m_hasWebLink savedNotesString: (NSString *) m_noteString{ NodeCell *node=[[NodeCell alloc]initWithNibName:@"NodeCell" bundle:nil]; node.createType=0; @@ -769,20 +747,26 @@ -(void)createNode:(CGPoint)position withName:(NSString*) name page: (int)m_pageN node.conceptName=name; node.userName=userName; node.bookLogData=bookLogDataWrapper; + node.appendedNoteString = m_noteString; [conceptNodeArray addObject:node]; + if(m_hasNote){ + node.hasNote = YES; + } + if(m_hasWebLink){ + node.hasWeblink = YES; + } + if(m_hasHighlight) { + node.hasHighlight = YES; + } [self addChildViewController:node]; [conceptMapView addSubview: node.view ]; node.text.text=name; node.text.tag=nodeCount;//use nodeCount to identify the node. nodeCount++; + node.linkingUrl = m_linkingUrl; + node.linkingUrlTitle = m_linkingUrlTitle; + [node becomeFirstResponder]; - - // [self autoSaveMap]; - //if([name isEqualToString:@"seeds"]||[name isEqualToString:@"bud"]||[name isEqualToString:@"fusion"]||[name isEqualToString:@"plant"]||[name isEqualToString:@"spores"]){ - // node.text.text=@"???"; - // node.pageNum=-1; - //} - //[self autoSaveMap]; } @@ -1048,7 +1032,7 @@ -(IBAction)mapViewTap:(id)sender{ } } - +//The "+" button on the toolbar, create a node - (IBAction)clickOnBulb : (id)sender { @@ -1072,12 +1056,14 @@ - (IBAction)clickOnBulb : (id)sender [self addConceptOnClick: location]; + NSString* numString=[[NSUserDefaults standardUserDefaults] stringForKey:@"NumOfConcepts"]; int numInt=[numString intValue]; numInt++; numString=[[NSString alloc]initWithFormat:@"%d",numInt]; [[NSUserDefaults standardUserDefaults] setObject:numString forKey:@"NumOfConcepts"]; + [self getPreView:nil]; [self updatePreviewLocation]; /* @@ -1092,17 +1078,11 @@ - (IBAction)clickOnBulb : (id)sender */ } - -- (IBAction)uppCmap : (id)sender -{ - [self uploadConceptMapImg]; -} - - +//For nodes created from book and web browser -(void)createNodeFromBook:(CGPoint)position withName:(NSString*) name BookPos: (CGPoint)bookPosition page:(int)m_pageNum{ [self savePreviousStep]; for(NodeCell* cell in conceptNodeArray){ - if([cell.text.text isEqualToString:name]){ + if([cell.text.text isEqualToString:name]){//Node already exists NSString* msg=[[NSString alloc]initWithFormat:@"Concept %@ already exist.", name]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; alert.tag=1; @@ -1114,11 +1094,19 @@ -(void)createNodeFromBook:(CGPoint)position withName:(NSString*) name BookPos: ( CGPoint pointInView=position; pointInView.x+=conceptMapView.contentOffset.x; pointInView.y+=conceptMapView.contentOffset.y; - - LogData* log= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:@"creating concept node from book " selection:@"textbook" input:name pageNum:pageNum]; - [bookLogDataWrapper addLogs:log]; - [LogDataParser saveLogData:bookLogDataWrapper]; - + //Saves info into log file + if (m_pageNum == 0){ //Made from Web Browser + LogData* log= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:@"creating concept node from web browser " selection:@"web browser" input:name pageNum:0]; + [bookLogDataWrapper addLogs:log]; + [LogDataParser saveLogData:bookLogDataWrapper]; + } + else{//from book + LogData* log= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:@"creating concept node from book " selection:@"textbook" input:name pageNum:m_pageNum]; + [bookLogDataWrapper addLogs:log]; + [LogDataParser saveLogData:bookLogDataWrapper]; + } + + //creates node NodeCell *node=[[NodeCell alloc]initWithNibName:@"NodeCell" bundle:nil]; node.createType=1; node.parentCmapController=self; @@ -1132,11 +1120,20 @@ -(void)createNodeFromBook:(CGPoint)position withName:(NSString*) name BookPos: ( node.showType=showType; node.enableHyperLink=YES; node.pageNum=m_pageNum-1; + if (m_pageNum == 0){ //Made from Web Browser + [node setLinkingUrl]; + node.hasWeblink = YES; + } + else { + node.hasHighlight = YES; //made from book + } [conceptNodeArray addObject:node]; [self addChildViewController:node]; [conceptMapView addSubview: node.view ]; node.text.tag=nodeCount;//use nodeCount to identify the node. node.text.text=name; + + node.conceptName=name; [node updateViewSize]; nodeCount++; NSString* numString=[[NSUserDefaults standardUserDefaults] stringForKey:@"NumOfConcepts"]; @@ -1145,6 +1142,7 @@ -(void)createNodeFromBook:(CGPoint)position withName:(NSString*) name BookPos: ( numString=[[NSString alloc]initWithFormat:@"%d",numInt]; [[NSUserDefaults standardUserDefaults] setObject:numString forKey:@"NumOfConcepts"]; + node.updateViewSize; [self getPreView:nil]; [self updatePreviewLocation]; [self autoSaveMap]; @@ -1253,22 +1251,25 @@ -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceO } - +//from click on bulb adds a node -(void)addConceptOnClick: (CGPoint)clickPoint { NodeCell *node=[[NodeCell alloc]initWithNibName:@"NodeCell" bundle:nil]; + node.hasNote = YES; // created manually node.createType=1; node.parentCmapController=self; node.showPoint=clickPoint; node.bookLogData=bookLogDataWrapper; node.bookHighLight=bookHighlight; - node.pageNum=parent_ContentViewController.pageNum-1; + node.pageNum=self.parent_ContentViewController.pageNum - 1; node.bookTitle=bookTitle; node.bookthumbNailIcon=bookThumbNial; [self addChildViewController:node]; [conceptNodeArray addObject:node]; [conceptMapView addSubview: node.view ]; addedNode=node; + + node.updateViewSize; } -(void)scrollCmapView :(CGFloat)length @@ -1283,7 +1284,6 @@ -(void)scrollCmapView :(CGFloat)length - (void)textFieldDidBeginEditing:(UITextField *)textField{ nodeTextBeforeEditing=textField.text; - // textField.text=@""; CGSize screenSZ=[self screenSize]; CGFloat offSet=(textField.superview.frame.size.height+ textField.superview.frame.origin.y)-(768-352); @@ -1324,8 +1324,12 @@ - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)butto [addedNode.text becomeFirstResponder]; //Code for OK button } - if (buttonIndex == 1&&alertView.tag==2) + if (buttonIndex == 1&&alertView.tag==2)//delete map was selected { + LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:@"deleting whole concept view" selection:@"Concept Map View" input:@"null" pageNum:pageNum]; + [bookLogDataWrapper addLogs:newlog]; + [LogDataParser saveLogData:bookLogDataWrapper]; + for (NodeCell *cell in conceptNodeArray) { [cell removeLink]; @@ -1397,6 +1401,7 @@ -(void) targetMethod:(NSTimer*)_timer{ - (void)keyboardWillHide:(NSNotification*)notification { + /* if ([addedNode.text.text isEqualToString:@""] ){ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"Node is empty!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; @@ -1425,6 +1430,7 @@ - (void)keyboardDidHide:(NSNotification*)notification { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"Node is empty!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; // [alert show]; } + // if(isKeyboardOffset){ // [self scrollCmapView: -keyboardOffset]; // isKeyboardOffset=NO; @@ -1452,6 +1458,7 @@ - (void)keyboardDidHide:(NSNotification*)notification { }//end if }//end else*/ + } -(void)showDepliAlert{ @@ -1479,7 +1486,7 @@ -(void)autoGerenateNode{ [conceptNamesArray addObject:cell.conceptName]; CGPoint position= [self calculateNodePosition:conceptId]; conceptId++; - [self createNode:position withName:cell.conceptName page:0]; + //[self createNode:position withName:cell.conceptName page:0 url:cell.]; } } } @@ -1528,10 +1535,14 @@ -(void)showResources //- (void)textViewDidEndEditing:(UITextView *)textView{ - (void)textViewDidEndEditing:(UITextView *)textView{ - LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:@"Finish editting concept link name" selection:linkTextBeforeEditing input:textView.text pageNum:pageNum]; + LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:@"Taking notes" selection:linkTextBeforeEditing input:textView.text pageNum:pageNum]; [bookLogDataWrapper addLogs:newlog]; [LogDataParser saveLogData:bookLogDataWrapper]; - + if (showingPV != nil){ // popoverview for taking notes exists + noteTakingNode.appendedNoteString = showingPV.noteText.text; //saves text from popover view + [showingPV dismiss]; //gets rid of popover view + } + [self autoSaveMap]; /* if(textView.text.length<5){ textView.frame=CGRectMake(textView.frame.origin.x, textView.frame.origin.y, 40, textView.frame.size.height); @@ -1606,7 +1617,7 @@ -(void)highlightPageNode: (int)page{ for(NodeCell* cell in conceptNodeArray){ if(cell.pageNum==(page-1)){ [cell highlightNode]; - return; + } } @@ -1665,10 +1676,6 @@ -(void)removePreviewNode: (NSString*)nodeName{ } -- (IBAction)hidePreView:(id)sender { - [parentBookPageViewController hideAndShowPreView]; -} - - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ [self updatePreviewLocation]; @@ -1729,7 +1736,11 @@ -(void)scrollViewDidZoom:(UIScrollView *)scrollView{ extraWidth=conceptMapView.frame.size.width*(conceptMapView.zoomScale-sacleBeforeZooming)/2; extraHeight=conceptMapView.frame.size.height*(conceptMapView.zoomScale-sacleBeforeZooming)/2; int i=0; + for (NodeCell* cell in conceptNodeArray ){ + if(positionBeforeZoom.count==0){ + continue; + } NSValue *CGPointValue=[positionBeforeZoom objectAtIndex:i]; CGPoint savedPoint=[CGPointValue CGPointValue]; //[cell.view setFrame:CGRectMake(cell.view.frame.origin.x*scale, cell.view.frame.origin.y*scale, cell.view.frame.size.width, cell.view.frame.size.height)]; @@ -1846,67 +1857,8 @@ -(void)SetNodesFirstResponder{ -- (void) uploadConceptMapImg{ - /* - UIGraphicsBeginImageContextWithOptions(conceptMapView.bounds.size, NO, 0.0); - [conceptMapView.layer renderInContext:UIGraphicsGetCurrentContext()]; - - UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); - [[UIColor whiteColor] set]; - - UIGraphicsEndImageContext(); - - - - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"ExpertScreenShot.png"]; - - // Save image. - // [UIImagePNGRepresentation(img) writeToFile:filePath atomically:YES]; - - //return img; - - NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; - sessionConfiguration.HTTPAdditionalHeaders = @{ - @"Authorization" : [NSString stringWithFormat:@"Bearer %@", @"BFPZY5kp2NAAAAAAAAAAJHzSODkGgGqThiZaKH2pCafGwX1kKVs2UVSVnwMiRj9c"], - @"Content-Type" : @"application/zip" - }; - - - //make a file name to write the data to using the documents directory: - NSString *documentsDirectory = [paths objectAtIndex:0]; - - NSString *content = [[NSString alloc] initWithContentsOfFile:filePath - usedEncoding:nil - error:nil]; - // NSString *filename = @"Maps/ScreenShot.png"; - // NSString *localDir = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; - //NSString *localPath = [localDir stringByAppendingPathComponent:filename]; - /// [content writeToFile:localPath atomically:YES encoding:NSUTF8StringEncoding error:nil]; - - - NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: sessionConfiguration delegate: self delegateQueue: [NSOperationQueue mainQueue]]; - NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://api-content.dropbox.com/1/files_put/auto/%@?overwrite=false",filename]]]; - [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; - NSData *data = [[NSFileManager defaultManager] contentsAtPath:filePath]; - [request setHTTPMethod:@"PUT"]; - [request setHTTPBody:data]; - [request setTimeoutInterval:1000]; - - NSURLSessionDataTask *doDataTask = [defaultSession dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { - if (!error){ - NSLog(@"WORKED!!!!"); - } else { - NSLog(@"ERROR: %@", error); - } - }]; - - [doDataTask resume]; - */ -} - - -(void)deleteLink: (NSString* )leftName SecondNode: (NSString*)rightName{ + [self savePreviousStep]; NSLog(@"%@",leftName); NSLog(@"%@",rightName); @@ -1928,6 +1880,11 @@ -(void)deleteLink: (NSString* )leftName SecondNode: (NSString*)rightName{ linkBk=link; } } + + LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:@"Deleting Link" selection:@"concept map view" input:linkBk.relation.text pageNum:pageNum]; + [bookLogDataWrapper addLogs:newlog]; + [LogDataParser saveLogData:bookLogDataWrapper]; + //removes link that matches description [conceptLinkArray removeObject:linkBk]; for(NodeCell* cell in conceptNodeArray){ @@ -1983,26 +1940,6 @@ -(void)uploadCmapCocneptAddedList{ -(void)uploadCMapImg { - - /* - UIGraphicsBeginImageContextWithOptions(conceptMapView.bounds.size, NO, 0.0); - [conceptMapView.layer renderInContext:UIGraphicsGetCurrentContext()]; - - UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); - [[UIColor whiteColor] set]; - - UIGraphicsEndImageContext(); - - - - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"FinalScreenShot.png"]; - - // Save image. - [UIImagePNGRepresentation(img) writeToFile:filePath atomically:YES]; - - //return img;*/ - UIImage* image = nil; UIGraphicsBeginImageContext(conceptMapView.contentSize); @@ -2027,6 +1964,7 @@ -(void)uploadCMapImg // Save image. [UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES]; + /* if (image != nil) { @@ -2035,12 +1973,6 @@ -(void)uploadCMapImg }*/ - - - - - - NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; sessionConfiguration.HTTPAdditionalHeaders = @{ @"Authorization" : [NSString stringWithFormat:@"Bearer %@", @"BFPZY5kp2NAAAAAAAAAAJHzSODkGgGqThiZaKH2pCafGwX1kKVs2UVSVnwMiRj9c"], @@ -2353,11 +2285,14 @@ -(void)readSavedOrigin{ } + + - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { return textView.text.length + (text.length - range.length) <= 140; } +//trashcan on toolbar - (IBAction)deleteAll:(id)sender { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"Do you want to delete the whole map?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles: @"Yes",nil]; alert.tag=2; @@ -2376,7 +2311,7 @@ - (IBAction)undo:(id)sender { [conceptLinkArray removeAllObjects]; for(CmapNode* cell in bookNodeWrapper.cmapNodes){ - [self createNode:CGPointMake(cell.point_x, cell.point_y) withName:cell.text page:cell.pageNum]; + [self createNode:CGPointMake(cell.point_x, cell.point_y) withName:cell.text page:cell.pageNum url:cell.linkingUrl]; } @@ -2403,7 +2338,7 @@ -(void)deleteHighlightwithWord: (NSString*)name{ [parentBookPageViewController.bookView.currentContentView refresh]; } - +//upload button on far right of toolbar, needs three clicks to load - (IBAction)AdminUpload:(id)sender { /* ZCTradeView* trade=[[ZCTradeView alloc]init]; @@ -2444,6 +2379,7 @@ -(void)upLoadLogFiletoDropBox{ NSString *content = [[NSString alloc] initWithContentsOfFile:fileName usedEncoding:nil error:nil]; + NSString *filename = @"HighSchoolLogfile/"; NSString* usrName=[[NSUserDefaults standardUserDefaults] stringForKey:@"UserName"]; // filename=[filename stringByAppendingString:usrName]; @@ -2504,5 +2440,42 @@ -(void)dismissLinkHint{ [parentBookPageViewController hideLinkingWarning]; } +//"Web" button on toolbar action to display web view +-(IBAction) displayWebView:(id)sender{ + /// WebBrowserViewController *myweb=[[WebBrowserViewController alloc]initWithNibName:@"WebBrowserViewController" bundle:nil]; + if (self.parentBookPageViewController.myWebView.view.isHidden == YES){ // Web browser view is hidden + //Show view + [self.parentBookPageViewController.myWebView.view setHidden: NO]; + if ([self.parentBookPageViewController.myWebView.webAdrText.text isEqualToString:@""]){ //Url textfield is empty + [self.parentBookPageViewController.myWebView SearchKeyWord: @""]; //go to google + } + self.parentBookPageViewController.subViewType=1; + [self.parentBookPageViewController.view bringSubviewToFront:parentBookPageViewController.myWebView.view]; + } + else{ //Web browser view is showing + //Hide View + [self.parentBookPageViewController.myWebView.view setHidden: YES]; + self.parentBookPageViewController.subViewType=0; + [self.parentBookPageViewController.view sendSubviewToBack:parentBookPageViewController.myWebView.view]; + } + +} + + +//commenting +-(void)showNoteTaking: (CGPoint)showpoint { + + NSArray *popUpContent=[NSArray arrayWithObjects:@"NoteTaking", nil]; + [PopoverView showPopoverAtPoint:showpoint + inView:self.contentView + withTitle:@"Take Note" + withStringArray:popUpContent + delegate:self]; + //pv.showPoint=self.showPoint; + + // [pv becomeFirstResponder]; + +} + @end diff --git a/eBookReader/CmapIcon.png b/eBookReader/CmapIcon.png old mode 100644 new mode 100755 diff --git a/eBookReader/CmapNode.h b/eBookReader/CmapNode.h index cbd8c1d..822aeb9 100755 --- a/eBookReader/CmapNode.h +++ b/eBookReader/CmapNode.h @@ -20,11 +20,17 @@ @property (strong, nonatomic) NSMutableArray* relatedNodesArray; @property (strong, nonatomic) NSMutableArray* linkLayerArray; @property (strong, nonatomic) NSMutableArray* relationTextArray; +@property (strong, nonatomic) NSURL* linkingUrl; // linking url for web browser +@property (strong, nonatomic) NSString* linkingUrlTitle; //title of linking url +@property (assign, nonatomic) BOOL* hasNote; // Made manually +@property (assign, nonatomic) BOOL* hasWebLink; // Made from web browser +@property (assign, nonatomic) BOOL* hasHighlight; // Made from book +@property (strong, nonatomic) NSString* savedNotesString; //for taking notes on the concept //@property (nonatomic, retain) HighLightWrapper *bookHighLight;//the highlight wrapper pased from the bookviewcontroller to control the highlight info in the book //@property (nonatomic, retain) ThumbNailIconWrapper *bookthumbNailIcon; @property (strong, nonatomic) NSString *bookTitle; @property int tag; //- (id)initWithName:(NSString*)m_text ShowType: (CGPoint)m_position RelatedNodeArray: (NSMutableArray*)m_relatedNodesArray linkArray:(NSMutableArray*)m_linkArray // linkTextArray: (NSMutableArray*)m_linkTextArray bookTitle:(NSString*)m_bookTitle; -- (id)initWithName:(NSString*)m_text bookTitle: (NSString*)m_bookTitle positionX:(int)m_pointX positionY: (int)m_positionY Tag: (int)m_tag page: (int) m_pageNum; +- (id)initWithName:(NSString*)m_text bookTitle: (NSString*)m_bookTitle positionX:(int)m_pointX positionY: (int)m_positionY Tag: (int)m_tag page: (int) m_pageNum url: (NSURL*)m_url urlTitle: (NSString *) m_urlTitle hasNote: (BOOL)m_hasNote hasHighlight: (BOOL)m_hasHighlight hasWebLink: (BOOL)m_hasWebLink savedNotesString: (NSString *) m_noteString ; @end diff --git a/eBookReader/CmapNode.m b/eBookReader/CmapNode.m index 65e3a3e..d1ac590 100755 --- a/eBookReader/CmapNode.m +++ b/eBookReader/CmapNode.m @@ -19,6 +19,9 @@ @implementation CmapNode @synthesize point_y; @synthesize tag; @synthesize pageNum; +@synthesize linkingUrl; +@synthesize linkingUrlTitle; +@synthesize savedNotesString; /* - (id)initWithName:(NSString*)m_text ShowType: (CGPoint)m_position RelatedNodeArray: (NSMutableArray*)m_relatedNodesArray linkArray:(NSMutableArray*)m_linkArray @@ -36,7 +39,7 @@ - (id)initWithName:(NSString*)m_text ShowType: (CGPoint)m_position RelatedNodeAr } */ -- (id)initWithName:(NSString*)m_text bookTitle: (NSString*)m_bookTitle positionX:(int)m_pointX positionY: (int)m_positionY Tag: (int)m_tag page: (int) m_pageNum +- (id)initWithName:(NSString*)m_text bookTitle: (NSString*)m_bookTitle positionX:(int)m_pointX positionY: (int)m_positionY Tag: (int)m_tag page: (int) m_pageNum url: (NSURL*)m_url urlTitle: (NSString *) m_urlTitle hasNote: (BOOL)m_hasNote hasHighlight: (BOOL)m_hasHighlight hasWebLink: (BOOL)m_hasWebLink savedNotesString: (NSString *) m_noteString { if ((self = [super init])) { text=m_text; @@ -45,6 +48,12 @@ - (id)initWithName:(NSString*)m_text bookTitle: (NSString*)m_bookTitle positionX point_y=m_positionY; tag=m_tag; pageNum=m_pageNum; + linkingUrl =m_url; + linkingUrlTitle = m_urlTitle; + _hasNote = m_hasNote; + _hasWebLink = m_hasWebLink; + _hasHighlight = m_hasHighlight; + savedNotesString = m_noteString; } return self; diff --git a/eBookReader/CmapNodeParser.m b/eBookReader/CmapNodeParser.m index 3feb102..ea23d7f 100755 --- a/eBookReader/CmapNodeParser.m +++ b/eBookReader/CmapNodeParser.m @@ -41,6 +41,7 @@ + (NSString *)expertMapDataFilePath:(BOOL)forSave { } } +//Reading CMap------------------------------------------------------------------------------------------- + (CmapNodeWrapper *)loadCmapNode { CmapNodeWrapper *cmapNodeWrapper = [[CmapNodeWrapper alloc] init]; NSString *filePath = [self dataFilePath:FALSE]; @@ -63,6 +64,12 @@ + (CmapNodeWrapper *)loadCmapNode { int p_y; NSString *bookTitle=@""; int page; + NSString* linkingUrl; + NSString* linkingUrlTitle; + BOOL hasNote; + BOOL hasWebLink; + BOOL hasHighlight; + NSString *savedNotesString=@""; NSArray *titles = [partyMember elementsForName:@"ConceptName"]; if (titles.count > 0) { @@ -97,13 +104,71 @@ + (CmapNodeWrapper *)loadCmapNode { page=point_y.stringValue.floatValue; } else continue; - CmapNode *player = [[CmapNode alloc] initWithName:conceptName bookTitle:bookTitle positionX:p_x positionY:p_y Tag:0 page:page]; + + + NSArray *show_linkgUrl = [partyMember elementsForName:@"LinkingUrl"]; + if (show_linkgUrl.count > 0) { + GDataXMLElement *url_element = (GDataXMLElement *) [show_linkgUrl objectAtIndex:0]; + linkingUrl=url_element.stringValue; + + } else continue; + + NSArray *show_UrlTitle = [partyMember elementsForName:@"UrlTitle"]; + if (show_UrlTitle.count > 0) { + GDataXMLElement *urlTitleElement = (GDataXMLElement *) [show_UrlTitle objectAtIndex:0]; + linkingUrlTitle=urlTitleElement.stringValue; + + } else continue; + + NSArray *savedNotesStr = [partyMember elementsForName:@"NoteString"]; + if (savedNotesStr.count > 0) { + GDataXMLElement *noteStringItem = (GDataXMLElement *) [savedNotesStr objectAtIndex:0]; + savedNotesString = noteStringItem.stringValue; + } else continue; + + //BOOL* hasNoteString=@"YES"; + + NSArray *show_hasNote= [partyMember elementsForName:@"nodeHasNote"]; + if(show_hasNote.count>0){ + GDataXMLElement* hasNote_Element= (GDataXMLElement*)[show_hasNote objectAtIndex:0]; + NSString* hasNoteString=hasNote_Element.stringValue; + if([hasNoteString isEqualToString:@"YES"]){ + hasNote=YES; + }else{ + hasNote=NO; + } + }else continue; + + NSArray *show_hasWebLink= [partyMember elementsForName:@"nodeHasWebLink"]; + if(show_hasWebLink.count>0){ + GDataXMLElement* hasWebLink_Element= (GDataXMLElement*)[show_hasWebLink objectAtIndex:0]; + NSString* hasWebLinkString=hasWebLink_Element.stringValue; + if([hasWebLinkString isEqualToString:@"YES"]){ + hasWebLink=YES; + }else{ + hasWebLink=NO; + } + }else continue; + + NSArray *show_hasHighlight= [partyMember elementsForName:@"nodeHasHighlight"]; + if(show_hasHighlight.count>0){ + GDataXMLElement* hasHighlight_Element= (GDataXMLElement*)[show_hasHighlight objectAtIndex:0]; + NSString* hasHighlightString=hasHighlight_Element.stringValue; + if([hasHighlightString isEqualToString:@"YES"]){ + hasHighlight=YES; + }else{ + hasHighlight=NO; + } + }else continue; + + NSURL* realUrl= [NSURL URLWithString:[linkingUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; + CmapNode *player = [[CmapNode alloc] initWithName:conceptName bookTitle:bookTitle positionX:p_x positionY:p_y Tag:0 page:page url:realUrl urlTitle: linkingUrlTitle hasNote: hasNote hasHighlight:hasHighlight hasWebLink:hasWebLink savedNotesString: savedNotesString]; [cmapNodeWrapper.cmapNodes addObject:player]; } return cmapNodeWrapper; } - +//Load expert cmap-------------------------------------------------------------------------------------- + (CmapNodeWrapper *)loadExpertCmapNode { CmapNodeWrapper *cmapNodeWrapper = [[CmapNodeWrapper alloc] init]; NSString *filePath = [self expertMapDataFilePath:FALSE]; @@ -126,6 +191,12 @@ + (CmapNodeWrapper *)loadExpertCmapNode { int p_y; NSString *bookTitle=@""; int page; + NSString* linkingUrl; + NSString* linkingUrlTitle; + BOOL hasNote; + BOOL hasWebLink; + BOOL hasHighlight; + NSString *savedNotesString=@""; NSArray *titles = [partyMember elementsForName:@"ConceptName"]; if (titles.count > 0) { @@ -160,8 +231,64 @@ + (CmapNodeWrapper *)loadExpertCmapNode { page=point_y.stringValue.floatValue; } else continue; - CmapNode *player = [[CmapNode alloc] initWithName:conceptName bookTitle:bookTitle positionX:p_x positionY:p_y Tag:0 page:page]; + + + NSArray *show_linkgUrl = [partyMember elementsForName:@"LinkingUrl"]; + if (show_linkgUrl.count > 0) { + GDataXMLElement *url_element = (GDataXMLElement *) [show_linkgUrl objectAtIndex:0]; + linkingUrl=url_element.stringValue; + } else continue; + + NSArray *show_UrlTitle = [partyMember elementsForName:@"UrlTitle"]; + if (show_UrlTitle.count > 0) { + GDataXMLElement *urlTitleElement = (GDataXMLElement *) [show_UrlTitle objectAtIndex:0]; + linkingUrlTitle=urlTitleElement.stringValue; + + } else continue; + + NSArray *savedNotesStr = [partyMember elementsForName:@"NoteString"]; + if (savedNotesStr.count > 0) { + GDataXMLElement *noteStringItem = (GDataXMLElement *) [savedNotesStr objectAtIndex:0]; + savedNotesString = noteStringItem.stringValue; + } else continue; + + NSArray *show_hasNote= [partyMember elementsForName:@"nodeHasNote"]; + if(show_hasNote.count>0){ + GDataXMLElement* hasNote_Element= (GDataXMLElement*)[show_hasNote objectAtIndex:0]; + NSString* hasNoteString=hasNote_Element.stringValue; + if([hasNoteString isEqualToString:@"YES"]){ + hasNote=YES; + }else{ + hasNote=NO; + } + }else continue; + + NSArray *show_hasWebLink= [partyMember elementsForName:@"nodeHasWebLink"]; + if(show_hasNote.count>0){ + GDataXMLElement* hasWebLink_Element= (GDataXMLElement*)[show_hasWebLink objectAtIndex:0]; + NSString* hasWebLinkString=hasWebLink_Element.stringValue; + if([hasWebLinkString isEqualToString:@"YES"]){ + hasWebLink=YES; + }else{ + hasWebLink=NO; + } + }else continue; + + NSArray *show_hasHighlight= [partyMember elementsForName:@"nodeHasHighlight"]; + if(show_hasNote.count>0){ + GDataXMLElement* hasHighlight_Element= (GDataXMLElement*)[show_hasHighlight objectAtIndex:0]; + NSString* hasHighlightString=hasHighlight_Element.stringValue; + if([hasHighlightString isEqualToString:@"YES"]){ + hasHighlight=YES; + }else{ + hasHighlight=NO; + } + }else continue; + + NSURL* realUrl= [NSURL URLWithString:[linkingUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; + CmapNode *player = [[CmapNode alloc] initWithName:conceptName bookTitle:bookTitle positionX:p_x positionY:p_y Tag:0 page:page url:realUrl urlTitle: linkingUrlTitle hasNote: hasNote hasHighlight:hasHighlight hasWebLink:hasWebLink savedNotesString: savedNotesString]; [cmapNodeWrapper.cmapNodes addObject:player]; + } return cmapNodeWrapper; } @@ -169,7 +296,7 @@ + (CmapNodeWrapper *)loadExpertCmapNode { - +//saving CMap nodes--------------------------------------------------------------------------------- + (void)saveCmapNode:(CmapNodeWrapper *)wrapper { GDataXMLElement * partyElement = [GDataXMLNode elementWithName:@"CmapNodeList"]; @@ -200,12 +327,57 @@ + (void)saveCmapNode:(CmapNodeWrapper *)wrapper { [GDataXMLNode elementWithName:@"PageNum" stringValue: [NSString stringWithFormat:@"%d", nodeItem.pageNum]]; + NSString *hasNoteStr = @"NO"; + if (nodeItem.hasNote){ + hasNoteStr = @"YES"; + } + GDataXMLElement * nodeHasNote = + [GDataXMLNode elementWithName:@"nodeHasNote" stringValue: + [NSString stringWithFormat:@"%@", hasNoteStr]]; + + NSString *hasWebLinkStr = @"NO"; + if (nodeItem.hasWebLink){ + hasWebLinkStr = @"YES"; + } + GDataXMLElement * nodeHasWebLink = + [GDataXMLNode elementWithName:@"nodeHasWebLink" stringValue: + [NSString stringWithFormat:@"%@", hasWebLinkStr]]; + + NSString *hasHighlightStr = @"NO"; + if (nodeItem.hasHighlight){ + hasHighlightStr = @"YES"; + } + GDataXMLElement * nodeHasHighlight = + [GDataXMLNode elementWithName:@"nodeHasHighlight" stringValue: + [NSString stringWithFormat:@"%@", hasHighlightStr]]; + + GDataXMLElement * linkingUrl; + if(nodeItem.linkingUrl){ + linkingUrl = + [GDataXMLNode elementWithName:@"LinkingUrl" stringValue: + [NSString stringWithFormat:@"%@", nodeItem.linkingUrl]]; + }else{ + linkingUrl = + [GDataXMLNode elementWithName:@"LinkingUrl" stringValue:@""]; + } + + GDataXMLElement * urlTitleElement = + [GDataXMLNode elementWithName:@"UrlTitle" stringValue:nodeItem.linkingUrlTitle]; + + GDataXMLElement * savedNotesStringElement = + [GDataXMLNode elementWithName:@"NoteString" stringValue:nodeItem.savedNotesString]; [itemElement addChild:conceptNameElement]; [itemElement addChild:bookTitleElement]; [itemElement addChild:pointX]; [itemElement addChild:pointY]; [itemElement addChild:nodePageNum]; + [itemElement addChild:linkingUrl]; + [itemElement addChild:urlTitleElement]; + [itemElement addChild:nodeHasNote]; + [itemElement addChild:nodeHasWebLink]; + [itemElement addChild:nodeHasHighlight]; + [itemElement addChild:savedNotesStringElement]; [partyElement addChild: itemElement]; // NSLog(@"Add element"); } @@ -220,7 +392,7 @@ + (void)saveCmapNode:(CmapNodeWrapper *)wrapper { } - +//save expert cmap-------------------------------------------------------------------------------- + (void)saveExpertCmapNode:(CmapNodeWrapper *)wrapper { GDataXMLElement * partyElement = [GDataXMLNode elementWithName:@"CmapNodeList"]; @@ -251,12 +423,57 @@ + (void)saveExpertCmapNode:(CmapNodeWrapper *)wrapper { [GDataXMLNode elementWithName:@"PageNum" stringValue: [NSString stringWithFormat:@"%d", nodeItem.pageNum]]; + NSString *hasNoteStr = @"NO"; + if (nodeItem.hasNote){ + hasNoteStr = @"YES"; + } + GDataXMLElement * nodeHasNote = + [GDataXMLNode elementWithName:@"nodeHasNote" stringValue: + [NSString stringWithFormat:@"%@", hasNoteStr]]; + + NSString *hasWebLinkStr = @"NO"; + if (nodeItem.hasWebLink){ + hasWebLinkStr = @"YES"; + } + GDataXMLElement * nodeHasWebLink = + [GDataXMLNode elementWithName:@"nodeHasWebLink" stringValue: + [NSString stringWithFormat:@"%@", hasWebLinkStr]]; + + NSString *hasHighlightStr = @"NO"; + if (nodeItem.hasHighlight){ + hasHighlightStr = @"YES"; + } + GDataXMLElement * nodeHasHighlight = + [GDataXMLNode elementWithName:@"nodeHasHighlight" stringValue: + [NSString stringWithFormat:@"%@", hasHighlightStr]]; + + GDataXMLElement * linkingUrl; + if(nodeItem.linkingUrl){ + linkingUrl = + [GDataXMLNode elementWithName:@"LinkingUrl" stringValue: + [NSString stringWithFormat:@"%@", nodeItem.linkingUrl]]; + }else{ + linkingUrl = + [GDataXMLNode elementWithName:@"LinkingUrl" stringValue:@""]; + } + + GDataXMLElement * urlTitleElement = + [GDataXMLNode elementWithName:@"UrlTitle" stringValue:nodeItem.linkingUrlTitle]; + + GDataXMLElement * savedNotesStringElement = + [GDataXMLNode elementWithName:@"NoteString" stringValue:nodeItem.savedNotesString]; [itemElement addChild:conceptNameElement]; [itemElement addChild:bookTitleElement]; [itemElement addChild:pointX]; [itemElement addChild:pointY]; [itemElement addChild:nodePageNum]; + [itemElement addChild:linkingUrl]; + [itemElement addChild:urlTitleElement]; + [itemElement addChild:nodeHasNote]; + [itemElement addChild:nodeHasWebLink]; + [itemElement addChild:nodeHasHighlight]; + [itemElement addChild:savedNotesStringElement]; [partyElement addChild: itemElement]; // NSLog(@"Add element"); } diff --git a/eBookReader/CmapView.xib b/eBookReader/CmapView.xib index dddf714..d1cf714 100755 --- a/eBookReader/CmapView.xib +++ b/eBookReader/CmapView.xib @@ -1,8 +1,8 @@ - + - + @@ -23,6 +23,16 @@ + + + @@ -71,4 +81,7 @@ + + + diff --git a/eBookReader/ContentViewController.m b/eBookReader/ContentViewController.m index 85b21b0..95b8efe 100755 --- a/eBookReader/ContentViewController.m +++ b/eBookReader/ContentViewController.m @@ -30,6 +30,7 @@ #import "NodeViewController.h" #import "SubNodeViewController.h" #import "CmapBookNoteViewController.h" +#import "BookPageViewController.h" //#import //#import "TouchSynthesis.h" // for the "quick help" feature, we haven't decided what interaction we want to add after user clicks the button so we define this array to display some default word. @@ -92,6 +93,7 @@ @implementation ContentViewController{ @synthesize timerLable; + -(void)viewDidAppear:(BOOL)animated{ //[self refresh]; [self.currentPageLabel setText:[NSString stringWithFormat:@"%d/%d",pageNum, totalpageNum]]; @@ -104,6 +106,7 @@ -(void)viewDidAppear:(BOOL)animated{ //[ThumbScrollViewRight setHidden:YES]; [self hideAllSubview:ThumbScrollViewRight]; isSplit=YES; + //when loading, at least } [parent_BookViewController clearAllHighlightNode]; @@ -116,34 +119,25 @@ -(void)viewDidAppear:(BOOL)animated{ [webView becomeFirstResponder]; parent_BookViewController.parent_BookPageViewController.cmapView.parent_ContentViewController=self; + parent_BookViewController.currentContentView=self; + + NSString* logStr=[[NSString alloc] initWithFormat:@"Turned tos page: %d", index+1]; + LogData* log= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:logStr selection:@"Textbook" input:@"null" pageNum:index]; + [bookLogData addLogs:log]; + [LogDataParser saveLogData:bookLogData]; // [self.parentViewController.navigationController setNavigationBarHidden: YES animated:YES]; //[self.navigationController setNavigationBarHidden: YES animated:YES]; } -/* -- (void)performTouchInView:(UIView *)view -{ - //UITouch *touch = [UITouch alloc]; - //[touch ssssssssssss]; - UITouch *touch = [[UITouch alloc] initInView:view]; - UIEvent *eventDown = [[UIEvent alloc] initWithTouch:touch]; - - [touch.view touchesBegan:[eventDown allTouches] withEvent:eventDown]; - - [touch setPhase:UITouchPhaseEnded]; - UIEvent *eventUp = [[UIEvent alloc] initWithTouch:touch]; - - [touch.view touchesEnded:[eventUp allTouches] withEvent:eventUp]; -} -*/ - (void)viewDidLoad { [super viewDidLoad]; [ThumbScrollViewRight setHidden:YES]; startDate = [NSDate date]; - [webView setDelegate:self]; + //[webView setDelegate:self]; + [webView setDelegate:parent_BookViewController.parent_BookPageViewController]; [linkCollectionView setDataSource:self]; [linkCollectionView setDelegate:self]; linkCollectionView.backgroundColor = [UIColor colorWithWhite:255 alpha:0.1]; @@ -191,8 +185,8 @@ - (void)viewDidLoad [webView addGestureRecognizer:doubleTap]; */ //set up menu items, icons and methods - [self setingUpMenuItem]; - + // [self setingUpMenuItem]; + //specify the javascript file path NSString *filePath = [[NSBundle mainBundle] pathForResource:@"JavaScriptFunctions" ofType:@"js" inDirectory:@""]; if(filePath==nil){ @@ -336,9 +330,14 @@ -(void)webViewDidFinishLoad:(UIWebView *)m_webView{ // NSString *jsString2 = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'",96]; //[webView stringByEvaluatingJavaScriptFromString:jsString2]; } + + // [self settingUpParentMenu]; + } + + - (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { //UIGraphicsBeginImageContext(newSize); // In next line, pass 0.0 to use the current device's pixel scaling factor (and thus account for Retina resolution). @@ -357,6 +356,9 @@ -(void) refresh{ [self.currentPageLabel setText:[NSString stringWithFormat:@"%d/%d",pageNum, totalpageNum]]; } + + +//Sets up the menu items that pop up -(void) setingUpMenuItem{ //set the menu items in the content view // use notification to check if the menu is showing [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willShowEditMenu:) name:UIMenuControllerWillShowMenuNotification object:nil]; @@ -373,7 +375,7 @@ -(void) setingUpMenuItem{ //set the menu items in the content view markIconSettingSpeak.shrinkWidth = 4; //set menu item size and picture. CXAMenuItemSettings *markIconSettingsPopUp = [CXAMenuItemSettings new]; - markIconSettingsPopUp.image = [UIImage imageNamed:@"question"]; + markIconSettingsPopUp.image = [UIImage imageNamed:@"bb"]; markIconSettingsPopUp.shadowDisabled = NO; markIconSettingsPopUp.shrinkWidth = 4; //set menu item size and picture. @@ -392,40 +394,40 @@ -(void) setingUpMenuItem{ //set the menu items in the content view markIconSettingsYelow.image = [UIImage imageNamed:@"highlight_yellow"]; markIconSettingsYelow.shadowDisabled = NO; markIconSettingsYelow.shrinkWidth = 4; //set menu item size and picture. - + /* - CXAMenuItemSettings *markIconSettingsGreeen = [CXAMenuItemSettings new]; - markIconSettingsGreeen.image = [UIImage imageNamed:@"highlight_green"]; - markIconSettingsGreeen.shadowDisabled = NO; - markIconSettingsGreeen.shrinkWidth = 4; //set menu item size and picture. - - CXAMenuItemSettings *markIconSettingsBlue = [CXAMenuItemSettings new]; - markIconSettingsBlue.image = [UIImage imageNamed:@"highlight_blue"]; - markIconSettingsBlue.shadowDisabled = NO; - markIconSettingsBlue.shrinkWidth = 4; //set menu item size and picture. - - CXAMenuItemSettings *markIconSettingsPurple = [CXAMenuItemSettings new]; - markIconSettingsPurple.image = [UIImage imageNamed:@"highlight_purple"]; - markIconSettingsPurple.shadowDisabled = NO; - markIconSettingsPurple.shrinkWidth = 4; //set menu item size and picture. - - CXAMenuItemSettings *markIconSettingsRed = [CXAMenuItemSettings new]; - markIconSettingsRed.image = [UIImage imageNamed:@"highlight_red"]; - markIconSettingsRed.shadowDisabled = NO; - markIconSettingsRed.shrinkWidth = 4; //set menu item size and picture. + CXAMenuItemSettings *markIconSettingsGreeen = [CXAMenuItemSettings new]; + markIconSettingsGreeen.image = [UIImage imageNamed:@"highlight_green"]; + markIconSettingsGreeen.shadowDisabled = NO; + markIconSettingsGreeen.shrinkWidth = 4; //set menu item size and picture. - - CXAMenuItemSettings *underLineSet = [CXAMenuItemSettings new]; - underLineSet.image = [UIImage imageNamed:@"underline2"]; - underLineSet.shadowDisabled = NO; - underLineSet.shrinkWidth = 4; //set menu item size and picture. - - CXAMenuItemSettings *undoSet = [CXAMenuItemSettings new]; - undoSet.image = [UIImage imageNamed:@"undo"]; - undoSet.shadowDisabled = NO; - undoSet.shrinkWidth = 4; //set menu item size and picture. - */ - + CXAMenuItemSettings *markIconSettingsBlue = [CXAMenuItemSettings new]; + markIconSettingsBlue.image = [UIImage imageNamed:@"highlight_blue"]; + markIconSettingsBlue.shadowDisabled = NO; + markIconSettingsBlue.shrinkWidth = 4; //set menu item size and picture. + + CXAMenuItemSettings *markIconSettingsPurple = [CXAMenuItemSettings new]; + markIconSettingsPurple.image = [UIImage imageNamed:@"highlight_purple"]; + markIconSettingsPurple.shadowDisabled = NO; + markIconSettingsPurple.shrinkWidth = 4; //set menu item size and picture. + + CXAMenuItemSettings *markIconSettingsRed = [CXAMenuItemSettings new]; + markIconSettingsRed.image = [UIImage imageNamed:@"highlight_red"]; + markIconSettingsRed.shadowDisabled = NO; + markIconSettingsRed.shrinkWidth = 4; //set menu item size and picture. + + + CXAMenuItemSettings *underLineSet = [CXAMenuItemSettings new]; + underLineSet.image = [UIImage imageNamed:@"underline2"]; + underLineSet.shadowDisabled = NO; + underLineSet.shrinkWidth = 4; //set menu item size and picture. + + CXAMenuItemSettings *undoSet = [CXAMenuItemSettings new]; + undoSet.image = [UIImage imageNamed:@"undo"]; + undoSet.shadowDisabled = NO; + undoSet.shrinkWidth = 4; //set menu item size and picture. + */ + CXAMenuItemSettings *takeNoteSetting = [CXAMenuItemSettings new]; takeNoteSetting.image = [UIImage imageNamed:@"take_note"]; takeNoteSetting.shadowDisabled = NO; @@ -440,25 +442,25 @@ -(void) setingUpMenuItem{ //set the menu items in the content view UIMenuItem *markHighlightedStringYellow = [[UIMenuItem alloc] initWithTitle: @"mark yellow" action: @selector(markHighlightedStringInYellow:)]; [markHighlightedStringYellow cxa_setSettings:markIconSettingsYelow]; - /* - UIMenuItem *markHighlightedStringGreen = [[UIMenuItem alloc] initWithTitle: @"mark green" action: @selector(markHighlightedStringInGreen:)]; - [markHighlightedStringGreen cxa_setSettings:markIconSettingsGreeen]; - - UIMenuItem *markHighlightedStringBlue = [[UIMenuItem alloc] initWithTitle: @"mark blue" action: @selector(markHighlightedStringInBlue:)]; - [markHighlightedStringBlue cxa_setSettings:markIconSettingsBlue]; - - UIMenuItem *markHighlightedStringPurple = [[UIMenuItem alloc] initWithTitle: @"mark purple" action: @selector(markHighlightedStringInPurple:)]; - [markHighlightedStringPurple cxa_setSettings:markIconSettingsPurple]; - - UIMenuItem *markHighlightedStringRed = [[UIMenuItem alloc] initWithTitle: @"mark red" action: @selector(markHighlightedStringInRed:)]; - [markHighlightedStringRed cxa_setSettings:markIconSettingsRed]; - - UIMenuItem *underLineItem = [[UIMenuItem alloc] initWithTitle: @"underline" action: @selector(underLine:)]; - [underLineItem cxa_setSettings:underLineSet]; - - UIMenuItem *undoItem = [[UIMenuItem alloc] initWithTitle: @"undo" action: @selector(removeFormat:)]; - [undoItem cxa_setSettings:undoSet]; - */ + /* + UIMenuItem *markHighlightedStringGreen = [[UIMenuItem alloc] initWithTitle: @"mark green" action: @selector(markHighlightedStringInGreen:)]; + [markHighlightedStringGreen cxa_setSettings:markIconSettingsGreeen]; + + UIMenuItem *markHighlightedStringBlue = [[UIMenuItem alloc] initWithTitle: @"mark blue" action: @selector(markHighlightedStringInBlue:)]; + [markHighlightedStringBlue cxa_setSettings:markIconSettingsBlue]; + + UIMenuItem *markHighlightedStringPurple = [[UIMenuItem alloc] initWithTitle: @"mark purple" action: @selector(markHighlightedStringInPurple:)]; + [markHighlightedStringPurple cxa_setSettings:markIconSettingsPurple]; + + UIMenuItem *markHighlightedStringRed = [[UIMenuItem alloc] initWithTitle: @"mark red" action: @selector(markHighlightedStringInRed:)]; + [markHighlightedStringRed cxa_setSettings:markIconSettingsRed]; + + UIMenuItem *underLineItem = [[UIMenuItem alloc] initWithTitle: @"underline" action: @selector(underLine:)]; + [underLineItem cxa_setSettings:underLineSet]; + + UIMenuItem *undoItem = [[UIMenuItem alloc] initWithTitle: @"undo" action: @selector(removeFormat:)]; + [undoItem cxa_setSettings:undoSet]; + */ UIMenuItem *takeNoteItem = [[UIMenuItem alloc] initWithTitle: @"take note" action: @selector(takeNote:)]; [takeNoteItem cxa_setSettings:takeNoteSetting]; @@ -467,7 +469,6 @@ -(void) setingUpMenuItem{ //set the menu items in the content view [menuController setMenuItems: [NSArray arrayWithObjects: concept, nil]]; - } @@ -660,17 +661,17 @@ - (BOOL) canPerformAction:(SEL)action withSender:(id)sender return NO; } - +//function that adds a node with name, not in use, but keep it in case we need its contents - (void)dragAndDrop:(id)sender{ - if(parent_BookViewController.parent_BookPageViewController.cmapView.isReadyToLink){ [parent_BookViewController.parent_BookPageViewController showAlertWithText:@"There is a concept waiting to be linked!"]; return; } - - + BOOL isHyperLink = [[NSUserDefaults standardUserDefaults] boolForKey:@"HyperLinking"]; - NSString* h_text=[webView stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"]; + //Gets string + //web view not our web browser + NSString* h_text=[webView stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"]; if(YES==isSplit){ if(h_text.length>25){ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"You can not add concepts that have more than 25 charaters!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; @@ -1201,7 +1202,8 @@ -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOr //[self hideAllSubview:ThumbScrollViewRight]; //[self hideAllSubview:ThumbScrollViewLeft]; isSplit=YES; - + [self.parent_BookViewController.parent_BookPageViewController.myWebView updateBrowserWindow]; + //When rotate // NSString *jsString2 = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'",96]; //[webView stringByEvaluatingJavaScriptFromString:jsString2]; @@ -1216,6 +1218,9 @@ -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOr [self loadThumbNailIcon:firstRespondConcpet]; isSplit=NO; + [self.parent_BookViewController.parent_BookPageViewController.myWebView updateBrowserWindow]; + + //when rotate } @@ -1283,9 +1288,6 @@ -(void)expandSubNode:(UIView*)node { // Do nothing - not a UIButton or subclass instance } } - - - subnode.tag=0;//mark the node back to unexpanded } diff --git a/eBookReader/Digital Textbook-Info.plist b/eBookReader/Digital Textbook-Info.plist new file mode 100755 index 0000000..d21e542 --- /dev/null +++ b/eBookReader/Digital Textbook-Info.plist @@ -0,0 +1,63 @@ + + + + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ASU.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLSchemes + + db-scq2u5yv0ucrrcb + + + + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIMainStoryboardFile + MainStoryboard_iPad + UIMainStoryboardFile~ipad + MainStoryboard_iPad + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortrait + + + diff --git a/eBookReader/Digital Textbook-Prefix.pch b/eBookReader/Digital Textbook-Prefix.pch new file mode 100755 index 0000000..787b017 --- /dev/null +++ b/eBookReader/Digital Textbook-Prefix.pch @@ -0,0 +1,14 @@ +// +// Prefix header for all source files of the 'eBookReader' target in the 'eBookReader' project +// + +#import + +#ifndef __IPHONE_5_0 +#warning "This project uses features only available in iOS SDK 5.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/eBookReader/Dog.png b/eBookReader/Dog.png old mode 100644 new mode 100755 diff --git a/eBookReader/ExpertCmapLinkList.xml b/eBookReader/ExpertCmapLinkList.xml old mode 100644 new mode 100755 diff --git a/eBookReader/ExpertCmapNode.xml b/eBookReader/ExpertCmapNode.xml old mode 100644 new mode 100755 diff --git a/eBookReader/ExpertCmapNodeList.xml b/eBookReader/ExpertCmapNodeList.xml old mode 100644 new mode 100755 diff --git a/eBookReader/ExpertLink.xml b/eBookReader/ExpertLink.xml old mode 100644 new mode 100755 diff --git a/eBookReader/ExpertNode.xml b/eBookReader/ExpertNode.xml old mode 100644 new mode 100755 diff --git a/eBookReader/GHContextMenuView.h b/eBookReader/GHContextMenuView.h index 8f7b535..59aa78a 100755 --- a/eBookReader/GHContextMenuView.h +++ b/eBookReader/GHContextMenuView.h @@ -17,6 +17,7 @@ @property (nonatomic, assign) id delegate; - (void) longPressDetected:(UIGestureRecognizer*) gestureRecognizer; +- (void) highlightMenuItemClicked: (NSInteger) index2highlight; @end diff --git a/eBookReader/GHContextMenuView.m b/eBookReader/GHContextMenuView.m index 9d64a0c..de1aa37 100755 --- a/eBookReader/GHContextMenuView.m +++ b/eBookReader/GHContextMenuView.m @@ -89,84 +89,23 @@ - (id)init UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(clickDetected:)]; - //[self addGestureRecognizer:tapGesture]; + [self addGestureRecognizer:tapGesture]; } return self; } -/* -- (void) longPressDetected:(UIGestureRecognizer*) gestureRecognizer -{ - if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { - // NSLog(@"Longpress begin.\n"); - self.prevIndex = -1; - [[UIApplication sharedApplication].keyWindow addSubview:self]; - self.longPressLocation = [gestureRecognizer locationInView:self]; - CGPoint pointInView = [gestureRecognizer locationInView:gestureRecognizer.view]; - if (self.dataSource != nil && [self.dataSource respondsToSelector:@selector(shouldShowMenuAtPoint:)] && ![self.dataSource shouldShowMenuAtPoint:pointInView]){ - return; - } - self.layer.backgroundColor = [UIColor colorWithWhite:0.1f alpha:.6f].CGColor; - self.isShowing = YES; - [self animateMenu:YES]; - [self setNeedsDisplay]; - } - - if (gestureRecognizer.state == UIGestureRecognizerStateChanged) { - if (self.isShowing) { - self.isPaning = YES; - self.curretnLocation = [gestureRecognizer locationInView:self]; - } - } - - if (gestureRecognizer.state == UIGestureRecognizerStateEnded) { - //NSLog(@"Longpress end.\n\n"); - if(self.delegate && [self.delegate respondsToSelector:@selector(didSelectItemAtIndex: forMenuAtPoint:)] && self.prevIndex >= 0){ - [self.delegate didSelectItemAtIndex:self.prevIndex forMenuAtPoint:[self convertPoint:self.longPressLocation toView:gestureRecognizer.view]]; - self.prevIndex = -1; - } - [self hideMenu]; - } -} - -- (void) clickDetected:(UIGestureRecognizer*) gestureRecognizer{ - - if(!self.isShowing){ - self.prevIndex = -1; - [[UIApplication sharedApplication].keyWindow addSubview:self]; - self.longPressLocation = [gestureRecognizer locationInView:self]; - CGPoint pointInView = [gestureRecognizer locationInView:gestureRecognizer.view]; - if (self.dataSource != nil && [self.dataSource respondsToSelector:@selector(shouldShowMenuAtPoint:)] && ![self.dataSource shouldShowMenuAtPoint:pointInView]){ - return; - } - self.layer.backgroundColor = [UIColor colorWithWhite:0.1f alpha:.6f].CGColor; - self.isShowing = YES; - [self animateMenu:YES]; - [self setNeedsDisplay]; - self.isShowing=YES; - }else if(self.isShowing){ - - if(self.delegate && [self.delegate respondsToSelector:@selector(didSelectItemAtIndex: forMenuAtPoint:)] && self.prevIndex >= 0){ - [self.delegate didSelectItemAtIndex:self.prevIndex forMenuAtPoint:[self convertPoint:self.longPressLocation toView:gestureRecognizer.view]]; - self.prevIndex = -1; - } - [self hideMenu]; - - - } - +- (void) highlightMenuItemClicked: (NSInteger) index2highlight +{ + CALayer *layer = [self.menuItems objectAtIndex:index2highlight]; + layer.backgroundColor = self.itemBGHighlightedColor; +// [self performSelector:@selector(highlightMenuItemClicked:) withObject:self afterDelay:1.0f]; } -*/ - - - - - (void) longPressDetected:(UIGestureRecognizer*) gestureRecognizer { @@ -184,7 +123,7 @@ - (void) longPressDetected:(UIGestureRecognizer*) gestureRecognizer [self animateMenu:YES]; [self setNeedsDisplay]; } - + /* if (gestureRecognizer.state == UIGestureRecognizerStateChanged) { if (self.isShowing) { @@ -193,14 +132,15 @@ - (void) longPressDetected:(UIGestureRecognizer*) gestureRecognizer } } + if (gestureRecognizer.state == UIGestureRecognizerStateEnded) { //NSLog(@"Longpress end.\n\n"); if(self.delegate && [self.delegate respondsToSelector:@selector(didSelectItemAtIndex: forMenuAtPoint:)] && self.prevIndex >= 0){ [self.delegate didSelectItemAtIndex:self.prevIndex forMenuAtPoint:[self convertPoint:self.longPressLocation toView:gestureRecognizer.view]]; self.prevIndex = -1; } - [self hideMenu]; - } + //[self hideMenu]; + }*/ } @@ -208,12 +148,46 @@ - (void) longPressDetected:(UIGestureRecognizer*) gestureRecognizer - (void) clickDetected:(UIGestureRecognizer*) gestureRecognizer{ self.curretnLocation = [gestureRecognizer locationInView:self]; - if(self.isShowing){ + NSLog(@"click location : %@", NSStringFromCGPoint(self.curretnLocation)); + + + + + + + + if(self.isShowing){ + + for (int i = 0; i < self.menuItems.count; i++) { + GHMenuItemLocation* itemLocation = [self.itemLocations objectAtIndex:i]; + // NSLog(@"item location at button index %i: %@", i, NSStringFromCGPoint(itemLocation.position)); + + CGFloat xDist = (itemLocation.position.x - _curretnLocation.x); //[2] + CGFloat yDist = (itemLocation.position.y - _curretnLocation.y); //[3] + CGFloat distance = sqrt((xDist * xDist) + (yDist * yDist)); //[4] + // NSLog(@"distance from buton and click: %f", distance); + + if (distance < 22) { + _prevIndex = i; + break; + } + } + //responds to selector and previndex is the index of a menu item if(self.delegate && [self.delegate respondsToSelector:@selector(didSelectItemAtIndex: forMenuAtPoint:)] && self.prevIndex >= 0){ + + + [self.delegate didSelectItemAtIndex:self.prevIndex forMenuAtPoint:[self convertPoint:self.longPressLocation toView:gestureRecognizer.view]]; + + //highlight + [self highlightMenuItemClicked: _prevIndex]; - [self.delegate didSelectItemAtIndex:self.prevIndex forMenuAtPoint:[self convertPoint:self.curretnLocation toView:gestureRecognizer.view]]; self.prevIndex = -1; + + /*if(self.delegate && [self.delegate respondsToSelector:@selector(didSelectItemAtIndex: forMenuAtPoint:)] && self.prevIndex >= 0){ + + [self.delegate didSelectItemAtIndex:self.prevIndex forMenuAtPoint:[self convertPoint:self.curretnLocation toView:gestureRecognizer.view]]; + self.prevIndex = -1;*/ } [self hideMenu]; @@ -379,12 +353,16 @@ - (CGFloat) validaAngle:(CGFloat) angle # pragma mark - animation and selection + + - (void) highlightMenuItemForPoint { if (self.isShowing && self.isPaning) { CGFloat angle = [self angleBeweenStartinPoint:self.longPressLocation endingPoint:self.curretnLocation]; + //Close to index tells you what index in the menu item buttons you are close to NSInteger closeToIndex = -1; + //This iterates through the menu items, if the angle is pointed towards a certain button, close to index = that button's index for (int i = 0; i < self.menuItems.count; i++) { GHMenuItemLocation* itemLocation = [self.itemLocations objectAtIndex:i]; if (fabs(itemLocation.angle - angle) < self.angleBetweenItems/2) { @@ -392,7 +370,7 @@ - (void) highlightMenuItemForPoint break; } } - + //basically close to index is the index of a menu item if (closeToIndex >= 0 && closeToIndex < self.menuItems.count) { GHMenuItemLocation* itemLocation = [self.itemLocations objectAtIndex:closeToIndex]; @@ -427,7 +405,7 @@ - (void) highlightMenuItemForPoint if ( ( self.prevIndex >= 0 && self.prevIndex != closeToIndex)) { [self resetPreviousSelection]; } - + //changes previndex to close to index, this lets menu know which button is being selected later self.prevIndex = closeToIndex; } else if(self.prevIndex >= 0) { diff --git a/eBookReader/LogData.xml b/eBookReader/LogData.xml old mode 100644 new mode 100755 diff --git a/eBookReader/MyAlertView.h b/eBookReader/MyAlertView.h old mode 100644 new mode 100755 diff --git a/eBookReader/MyAlertView.m b/eBookReader/MyAlertView.m old mode 100644 new mode 100755 diff --git a/eBookReader/MyTouch.h b/eBookReader/MyTouch.h old mode 100644 new mode 100755 diff --git a/eBookReader/MyTouch.m b/eBookReader/MyTouch.m old mode 100644 new mode 100755 diff --git a/eBookReader/NSString+Extension.h b/eBookReader/NSString+Extension.h old mode 100644 new mode 100755 diff --git a/eBookReader/NSString+Extension.m b/eBookReader/NSString+Extension.m old mode 100644 new mode 100755 diff --git a/eBookReader/NodeCell.h b/eBookReader/NodeCell.h index a480926..4718b42 100755 --- a/eBookReader/NodeCell.h +++ b/eBookReader/NodeCell.h @@ -19,6 +19,8 @@ #import "ConceptLink.h" #import "CmapLink.h" #import "RelationTextView.h" +#import "PopoverView.h" +#import "TylerTextView.h" #import "LogDataWrapper.h" @class CmapController; @class ContentViewController; @@ -26,13 +28,18 @@ @interface NodeCell : UIViewController @property (assign)CGPoint showPoint; +@property (strong, nonatomic) PopoverView *pv; //For taking notes +@property (strong, nonatomic) NSString *appendedNoteString; //Saved text info for notes @property int pageNum; @property int createType; @property int nodeType; //1: shows in book scroll thumb view; 0: shows in Cmap view; -@property (strong, nonatomic) IBOutlet ShangTextField *text; +//@property (strong, nonatomic) IBOutlet ShangTextField *text; @property (strong, nonatomic) NSString *conceptName; + +@property (weak, nonatomic) IBOutlet TylerTextView *text; + @property (strong, nonatomic) GHContextMenuView* overlay; @property int showType; //0:full screen, 1: half screen; @property CGPoint bookPagePosition; @@ -48,7 +55,9 @@ @property(strong,nonatomic) IBOutlet UITapGestureRecognizer* tapRecognizer; - +@property (strong, nonatomic) NSMutableArray* savedUrls; //bookmarked urls from web browser +@property (strong, nonatomic) NSURL* linkingUrl; //associated url when created from web browser +@property (strong, nonatomic) NSString* linkingUrlTitle; //title of web page for linking url @property (strong, nonatomic) NSMutableArray* relatedNodesArray; @property (strong, nonatomic) NSMutableArray* linkLayerArray; @property (strong, nonatomic) NSMutableArray* relationTextArray; @@ -62,6 +71,7 @@ @property (strong, nonatomic) NSString *userName; @property (strong, nonatomic) RelationTextView*linkTextview2; @property BOOL enableHyperLink; + -(void)deleteLinkWithNode: (NodeCell*)cellToDel; -(void)removeLinkWithNode: (NodeCell*) LinkedNode; @@ -76,4 +86,7 @@ -(void)deleteNode: (BOOL)delByUser; -(void)updateViewSize; -(void)updateLink; +-(void)enterIntoUrlArray; +-(void)setLinkingUrl; + @end diff --git a/eBookReader/NodeCell.m b/eBookReader/NodeCell.m index 2e3a6e7..acdada6 100755 --- a/eBookReader/NodeCell.m +++ b/eBookReader/NodeCell.m @@ -27,6 +27,9 @@ @implementation NodeCell @synthesize pressing; @synthesize longPressRecognizer; @synthesize isInitialed; +@synthesize linkingUrl; +@synthesize linkingUrlTitle; +@synthesize savedUrls; @synthesize relatedNodesArray; @synthesize linkLayerArray; @synthesize relationTextArray; @@ -51,6 +54,8 @@ @implementation NodeCell @synthesize enableHyperLink; @synthesize createType; @synthesize isAlertShowing; +@synthesize pv; //pop up to take notes +@synthesize appendedNoteString; //to save notes - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; @@ -60,19 +65,56 @@ - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil relatedNodesArray=[[NSMutableArray alloc] init]; linkLayerArray=[[NSMutableArray alloc] init]; relationTextArray=[[NSMutableArray alloc] init]; + savedUrls = [[NSMutableArray alloc] init]; pageNum=0; overlay = [[GHContextMenuView alloc] init]; overlay.dataSource = self; overlay.delegate = self; + hasHighlight=NO; + hasNote=NO; + hasWeblink=NO; + } return self; } +//To update the thumbnail icons below the node +-(void) updateThumbIcons { + + for(UIView* subview in self.view.subviews){ + if([subview isKindOfClass:[UIImageView class]]) + { + // do somthing + + [subview removeFromSuperview]; + } + } + + + if(hasNote){ // created from "+" (manually) + [self addNoteThumb]; + } + if(hasWeblink){ // created from web browser + [self addWebThumb]; + } + if(hasHighlight){ // created from book + [self addHighlightThumb]; + } + +} +-(void)viewDidAppear:(BOOL)animated{ + [self updateViewSize]; + [self updateThumbIcons]; + + +} - (void)viewDidLoad { [super viewDidLoad]; //[parentCmapController updateNodesPosition:self.view.center Node:self]; - + text.delegate = self; + + /* [text addTarget:self action:@selector(textFieldDidBeginEditing:) forControlEvents:UIControlEventEditingDidBegin]; @@ -84,8 +126,12 @@ - (void)viewDidLoad [text addTarget:self action:@selector(textFieldDidEndEditing:) forControlEvents:UIControlEventEditingDidEnd]; - - + */ + /* + hasNote=YES; //Manual + hasWeblink=YES; //web browser + hasHighlight=YES; // Book + */ //conceptName.text=text.text; /* int r = arc4random_uniform(3); @@ -120,7 +166,13 @@ - (void)viewDidLoad self.view.layer.shadowRadius = 3; self.view.layer.shadowColor = [UIColor blackColor].CGColor; self.view.layer.shadowOffset = CGSizeMake(2, 2); + self.view.layer.cornerRadius=8; + //self.view.layer.masksToBounds=YES; + + + text.delegate=self; + //keyboard for ... cell text.keyboardType=UIKeyboardTypeASCIICapable; [text setReturnKeyType:UIReturnKeyDone]; @@ -129,11 +181,11 @@ - (void)viewDidLoad overlay.delegate = self; longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:overlay action:@selector(longPressDetected:)]; - text.enableRecognizer=YES; + //text.enableRecognizer=YES; [self.view addGestureRecognizer:longPressRecognizer]; - text.enableRecognizer=NO; + //text.enableRecognizer=NO; [text setUserInteractionEnabled:YES]; /* tapRecognizer=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(singleTap:)]; @@ -147,24 +199,44 @@ - (void)viewDidLoad if(NO==isInitialed){ [text becomeFirstResponder]; } + + + // checks if node is created from a certain source and displays an icon in the corner /* - if(hasNote){ + if(hasNote){ // created from "+" (manually) [self addNoteThumb]; } - if(hasWeblink){ + if(hasWeblink){ // created from web browser [self addWebThumb]; } - if(hasHighlight){ + if(hasHighlight){ // created from book [self addHighlightThumb]; - } - */ + }*/ + [self becomeFirstResponder]; //self.view.layer.zPosition=2; enableHyperLink=NO; + } +//enters a url string into the "savedUrls" array +-(void) enterIntoUrlArray { + NSString *urlEnter = parentCmapController.parentBookPageViewController.myWebView.webAdrText.text; + [savedUrls addObject: urlEnter]; + NSLog(@"element %@ has been added to the array of node '%@'", urlEnter, self.conceptName ); + +} +//sets linkingUrl to current url of web browser +-(void) setLinkingUrl{ + NSString *urlEnter = parentCmapController.parentBookPageViewController.myWebView.webAdrText.text; + // NSLog(@"urlEnter = %@", urlEnter); + // NSLog(@"concept name = %@", self.conceptName); + linkingUrl = [NSURL URLWithString: urlEnter]; + linkingUrlTitle = [parentCmapController.parentBookPageViewController.myWebView.webBrowserView stringByEvaluatingJavaScriptFromString:@"document.title"]; +} +//Probably NOT CALLED because we no longer use textfields in the project -(void)textFieldDidChange :(UITextField *)theTextField{ CGRect textFrame=text.frame; CGRect viewFrame=self.view.frame; @@ -183,6 +255,7 @@ -(void)textFieldDidChange :(UITextField *)theTextField{ self.text.frame=textFrame; self.view.frame=viewFrame; + [self updateThumbIcons]; [self updateLink]; } @@ -196,43 +269,109 @@ -(void)viewWillAppear:(BOOL)animated{ // NSLog(@"fontSize = %f\tbounds = (%f x %f)",fontSize,r.size.width,r.size.height);//output the wrap size of the text CGRect textFrame=text.frame; CGRect viewFrame=self.view.frame; - CGFloat length = [text.text sizeWithAttributes:@{NSFontAttributeName:text.font}].width; + //To update width of textview to fit text + CGFloat length = [text.text sizeWithAttributes:@{NSFontAttributeName:text.font}].width; + //To update height of textview to fit text + CGFloat height = [text.text sizeWithAttributes:@{NSFontAttributeName:text.font}].height; + //Increase length length+=25; - if(length>180){ - length=180; + if(length>80){ + length=80; + height+=25; + textFrame.size.height=height; + self.text.frame=textFrame; } + //Increase height + height+=12; + /* if(height>180){ + height=180; + }*/ + //resize to new width textFrame.size.width=length; viewFrame.size.width=length; + //resize to new height + textFrame.size.height=height; + viewFrame.size.height=height; + if(text.text.length<1){ textFrame.size.width=20; viewFrame.size.width=20; } + + self.text.frame=textFrame; self.view.frame=viewFrame; + [self updateThumbIcons]; [self becomeFirstResponder]; [self updateLink]; } - +//Updates View Size, -(void)updateViewSize{ CGRect textFrame=text.frame; CGRect viewFrame=self.view.frame; - //int length=(int) (7*text.text.length+20); - - CGFloat length = [text.text sizeWithAttributes:@{NSFontAttributeName:text.font}].width; + CGFloat length = [text.text sizeWithAttributes:@{NSFontAttributeName:text.font}].width; length+=20; - if(length>180){ - length=180; + if (length >= 100){ + length = 100; } + CGFloat height = text.contentSize.height; + //CGSize height2 = [text sizeThatFits:CGSizeMake(text.frame.size.width, text.frame.size.height)]; + //resize to new width textFrame.size.width=length; viewFrame.size.width=length; + //resize to new height + textFrame.size.height=height; + viewFrame.size.height=height; + + // textFrame.size.height = height2.height; + // viewFrame.size.height = height2.height; + //Prevent textbox from just disappearing if(text.text.length<1){ textFrame.size.width=20; viewFrame.size.width=20; } + self.text.frame=textFrame; self.view.frame=viewFrame; + + /* + //To update width of textview to fit text + CGFloat length = [text.text sizeWithAttributes:@{NSFontAttributeName:text.font}].width; + //To update height of textview to fit text + CGFloat height = [text.text sizeWithAttributes:@{NSFontAttributeName:text.font}].height; + //Increase length + length+=12; + if(length>80){ + length=80; + height+=25; + textFrame.size.height=height; + self.text.frame=textFrame; + } + //Increase height + height+=25; + if(height>180){ + height=180; + } + //resize to new width + textFrame.size.width=length; + viewFrame.size.width=length; + //resize to new height + textFrame.size.height=height; + viewFrame.size.height=height; + + if(text.text.length<1){ + textFrame.size.width=20; + viewFrame.size.width=20; + } + + + self.text.frame=textFrame; + self.view.frame=viewFrame; + */ + [self updateThumbIcons]; + [self updateLink]; } -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ @@ -246,32 +385,38 @@ -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecogniz - (void)textViewDidChange:(UITextView *)textView { + /* textView.scrollEnabled = NO; CGFloat fixedWidth = textView.frame.size.width; CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)]; CGRect newFrame = textView.frame; newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height); textView.frame = newFrame; + + [textView sizeToFit]; + + [self updateThumbIcons]; //CGRect textFrame=textView.frame; // textFrame.size.width=7*textView.text.length+20; // textView.frame=textFrame; // textFrame.size.width=7*text.text.length+20; - + */ + [self updateViewSize]; } - -- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ +//Probably NO LONGER CALLED since there are no longer textfields +/*- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ if(text.disableEditting){ return NO; } return YES; } +*/ - - -- (void)textFieldDidBeginEditing:(UITextField *)textField{ +//Probably NO LONGER CALLED since textfields have been replaced with TextViews +/*- (void)textFieldDidBeginEditing:(UITextField *)textField{ parentCmapController.nodeTextBeforeEditing=textField.text; //textField.text=@""; CGSize screenSZ=[self screenSize]; @@ -282,9 +427,10 @@ - (void)textFieldDidBeginEditing:(UITextField *)textField{ [parentCmapController scrollCmapView:(offSet)]; } } +*/ -(void)textViewDidBeginEditing:(UITextView *)textView{ - parentCmapController.linkTextBeforeEditing=textView.text; + parentCmapController.linkTextBeforeEditing=textView.text; CGSize screenSZ=[self screenSize]; CGFloat offSet=(textView.frame.size.height+ textView.frame.origin.y-parentCmapController.conceptMapView.contentOffset.y)-(768-352)+88; @@ -386,6 +532,9 @@ - (IBAction)pan:(UIPanGestureRecognizer *)gesture - (IBAction)tap:(UIPanGestureRecognizer *)gesture { + + //[self takeNote:nil]; + // NSLog(@"Tap gesture!"); if(YES==parentCmapController.isReadyToLink){ if([text.text isEqualToString:parentCmapController.nodesToLink.text.text]){ @@ -410,7 +559,7 @@ - (IBAction)tap:(UIPanGestureRecognizer *)gesture [bookLogData addLogs:newlog]; [LogDataParser saveLogData:bookLogData]; */ - + /* MapFinderViewController* finder=[[MapFinderViewController alloc]initWithNibName:@"MapFinderViewController" bundle:nil]; finder.userName=userName; finder.parentBookPageView=parentCmapController.parentBookPageViewController; @@ -429,7 +578,7 @@ - (IBAction)tap:(UIPanGestureRecognizer *)gesture [parentCmapController resignFirstResponder]; [finder becomeFirstResponder]; - + */ [relatedNodesArray addObject:parentCmapController.nodesToLink]; [parentCmapController.nodesToLink.relatedNodesArray addObject:self]; [parentCmapController.nodesToLink removeShadowAnim]; @@ -447,7 +596,8 @@ - (IBAction)tap:(UIPanGestureRecognizer *)gesture linkTextview.leftNodeName=text.text; linkTextview.rightNodeName=parentCmapController.nodesToLink.text.text; parentCmapController.linkJustCreated=linkTextview; - + //edit name + [linkTextview becomeFirstResponder]; [relationTextArray addObject:linkTextview]; ConceptLink *link = [[ConceptLink alloc] initWithName:self conceptName:parentCmapController.nodesToLink relation:linkTextview page:parentCmapController.pageNum]; [parentCmapController addConcpetLink:link]; @@ -477,7 +627,7 @@ - (IBAction)tap:(UIPanGestureRecognizer *)gesture } return; } - if(-1==pageNum){ + if(-1==pageNum && (linkingUrl == nil || [linkingUrl.absoluteString isEqualToString:@""])){ // Node created manually, no linking url return; } // if(enableHyperLink&&(createType!=0)){ @@ -486,22 +636,37 @@ - (IBAction)tap:(UIPanGestureRecognizer *)gesture if([istest isEqualToString:@"YES"]){ enableHyperLink=YES; } + //Hyperlinking if(enableHyperLink){ + if (linkingUrl != nil && linkingUrl.absoluteString.length!=0 ){//created from web Browser + [self.parentCmapController.parentBookPageViewController showWebView:linkingUrl.absoluteString atNode:self]; + + // [self.parentCmapController.parentBookPageViewController showWebView:@"" atNode:self]; + NSString* LogString=[[NSString alloc] initWithFormat:@"Using hyperlink from concept: %@", self.conceptName]; + //save info in log files + LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:LogString selection:@"concept map view" input:@"concept map view" pageNum:pageNum]; + [parentCmapController.bookLogDataWrapper addLogs:newlog]; + [LogDataParser saveLogData:parentCmapController.bookLogDataWrapper]; + return; + } [parentCmapController.neighbor_BookViewController showFirstPage:pageNum]; parentContentViewController.pageNum=pageNum+1; - [parentCmapController logHyperNavigation:text.text]; + // [parentCmapController logHyperNavigation:text.text]; //log the hyperlinking action - NSString* LogString=[[NSString alloc] initWithFormat:@"%d", (pageNum+1)]; NSString* selectionString; if(createType==0){ selectionString=@"Expert Node"; }else{ selectionString=@"Student Node"; } + [self.parentCmapController.parentBookPageViewController hideWebView]; - LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:@"Use Hyperlinking" selection:selectionString input:LogString pageNum:pageNum]; - [bookLogData addLogs:newlog]; - [LogDataParser saveLogData:bookLogData]; + //save in log file + + NSString* LogString=[[NSString alloc] initWithFormat:@"Using hyperlink from concept: %@", self.conceptName]; + LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:LogString selection:@"concept map view" input:@"concept map view" pageNum:pageNum]; + [parentCmapController.bookLogDataWrapper addLogs:newlog]; + [LogDataParser saveLogData:parentCmapController.bookLogDataWrapper]; } @@ -588,7 +753,7 @@ - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range r } } - return textView.text.length + (text.length - range.length) <= 20; + return textView.text.length + (text.length - range.length) <= 50; } @@ -637,6 +802,10 @@ -(void)removeLink{ } for(ConceptLink *link in delAry){ + //deletes the links in delarray + LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:@"Deleting Links because concept was deleted" selection:@"concept map" input:link.relation.text pageNum:pageNum]; + [bookLogData addLogs:newlog]; + [LogDataParser saveLogData:bookLogData]; [parentCmapController.conceptLinkArray removeObject:link]; } @@ -779,22 +948,29 @@ - (CGSize) screenSize - (NSInteger) numberOfMenuItems { - return 3; + return 5; } +//specify image names -(UIImage*) imageForItemAtIndex:(NSInteger)index { NSString* imageName = nil; switch (index) { - case 0: + case 0: // delete node imageName = @"deleteConcept"; break; - case 1: + case 1: // link nodes imageName = @"link"; break; - case 2: + case 2: // edit node name imageName = @"edit"; break; + case 3: // search on internet + imageName= @"webbrowser"; + break; + case 4: // taking notes + imageName = @"Node_Small"; + break; default: break; } @@ -809,11 +985,12 @@ -(UIImage*) imageForItemAtIndex:(NSInteger)index return img; } +//call back functions, decides what menu does - (void) didSelectItemAtIndex:(NSInteger)selectedIndex forMenuAtPoint:(CGPoint)point { NSString* msg = nil; switch (selectedIndex) { - case 0: + case 0: // delete node { { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Deleting" @@ -825,7 +1002,7 @@ - (void) didSelectItemAtIndex:(NSInteger)selectedIndex forMenuAtPoint:(CGPoint)p } } break; - case 1: + case 1: // link nodes msg = @"link Selected"; [parentCmapController showLinkHint]; parentCmapController.isReadyToLink=YES; @@ -834,24 +1011,76 @@ - (void) didSelectItemAtIndex:(NSInteger)selectedIndex forMenuAtPoint:(CGPoint)p // [parentCmapController startWait]; [self waitForLink]; break; - case 2: + case 2: //edit node name { - parentCmapController.addedNode=self; - [self.text becomeFirstResponder]; + CGFloat offSet = (self.view.frame.size.height+ self.view.frame.origin.y-parentCmapController.conceptMapView.contentOffset.y)-(768-352)+88; + // NSLog(@"Height: %f, Origin: %f",pv.noteText.frame.size.height,pv.noteText.frame.origin.y); + if(offSet>0){ // view is blocked by keyboard + // NSLog(@"Blocked by keyboard!!"); + [parentCmapController scrollCmapView:(offSet)]; //scroll view so that view is not blocked + } + //This timer gives the view time to scroll before going to editNodename function + [NSTimer scheduledTimerWithTimeInterval:0.3f + target:self + selector: @selector(editNodeName:) + userInfo:nil + repeats:NO]; } break; - case 3: + case 3: // Search internet button { - QAFinderViewController* finder=[[QAFinderViewController alloc]initWithNibName:@"QAFinderViewController" bundle:nil]; - finder.conceptName=text.text; - finder.viewType=1;//change the view type into web resource. - finder.parentQA=parentCmapController.parentBookPageViewController.QA; - finder.parentCmap=parentCmapController; - [finder.view setUserInteractionEnabled:YES]; - [parentCmapController addChildViewController:finder]; - [parentCmapController.view addSubview:finder.view]; - //[finder becomeFirstResponder]; + //look up current text + [parentCmapController.parentBookPageViewController showWebView: text.text atNode: self]; + //Look up concept name + //[parentCmapController.parentBookPageViewController showWebView: conceptName atNode: self]; + } + break; + case 4: // note taking button + { + + /* + int hh=pv.noteText.frame.size.height; + int hh2=pv.noteText.frame.origin.y; + */ + CGFloat offSet = (self.view.frame.size.height+ self.view.frame.origin.y-parentCmapController.conceptMapView.contentOffset.y)-(768-352)+88; + // NSLog(@"Height: %f, Origin: %f",pv.noteText.frame.size.height,pv.noteText.frame.origin.y); + if(offSet>0){ // view is blocked by keyboard + // NSLog(@"Blocked by keyboard!!"); + [parentCmapController scrollCmapView:(offSet)]; //scroll view so that view is not blocked + } + //This timer gives the view time to scroll before going to takeNote function + [NSTimer scheduledTimerWithTimeInterval:0.3f + target:self + selector: @selector(takeNote:) + userInfo:nil + repeats:NO]; + + + + // [self takeNote:nil]; + + // [parentCmapController showNoteTaking:CGPointMake(200, 200)]; + /* NSString *sourceString; + if (pageNum== -1){ // Node created manually or from web browser + if (linkingUrl == nil || [linkingUrl.absoluteString isEqualToString:@""]){ //There is no linking url, created manually + sourceString = @"Manually Created"; + } + else { //There is a linking url, created from web browser + sourceString = [NSString stringWithFormat:@"Web Browser\nURL: %@", linkingUrl]; + } + + } + else{//created from book + sourceString = [NSString stringWithFormat:@"Textbook\nPage Number: %d", pageNum + 1]; + } + NSString *infoString = [NSString stringWithFormat:@"Current Name: %@\nOriginal Text: %@\n Source: %@", text.text, conceptName, sourceString]; + UIAlertView *infoAlert = [[UIAlertView alloc] initWithTitle:@"Concept Information:" + message:(infoString) + delegate:self + cancelButtonTitle:@"Ok" + otherButtonTitles: nil]; + [infoAlert show];*/ } break; default: @@ -859,8 +1088,45 @@ - (void) didSelectItemAtIndex:(NSInteger)selectedIndex forMenuAtPoint:(CGPoint)p } } +//Edits name of node +- (IBAction)editNodeName : (id)sender { + parentCmapController.addedNode=self; + [self.text becomeFirstResponder]; +} + + +//Allows user to take notes on the concept selected +- (IBAction)takeNote : (id)sender { + NSString *takeNoteTitleString; + if (self.hasHighlight){ //node created from book + takeNoteTitleString = [NSString stringWithFormat:@"Notes on \"%@\" Page: %i", self.text.text, self.pageNum + 1]; + } + else if (self.linkingUrl.absoluteString.length > 0){ //node created from web browser + NSString *siteTitle = self.linkingUrlTitle; + takeNoteTitleString = [NSString stringWithFormat:@"Notes on \"%@\" Site: %@", self.text.text, siteTitle]; + } + else { + takeNoteTitleString = [NSString stringWithFormat:@"Notes on \"%@\"", self.text.text]; + } + NSArray *popUpContent=[NSArray arrayWithObjects:@"NoteTaking", nil]; + PopoverView*pv= [PopoverView showPopoverAtPoint: CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2) + inView:self.view + withTitle:takeNoteTitleString + withStringArray:popUpContent + delegate:self]; + + pv.noteText.delegate=parentCmapController; //We need this. + parentCmapController.noteTakingNode = self; //sets noteTaking node to current node + pv.noteText.font = [UIFont fontWithName:@"Helvetica" size:15]; + pv.noteText.text = appendedNoteString; //saves note text to string + parentCmapController.showingPV=pv; + /*CGFloat offSet=(pv.noteText.frame.size.height+ pv.noteText.frame.origin.y-parentCmapController.conceptMapView.contentOffset.y)-(768-352)+88;*/ + + +} +//deletes selected node -(void)deleteNode: (BOOL)delByUser{ if(1==nodeType){ [self.view removeFromSuperview]; @@ -943,27 +1209,28 @@ - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger) [cell removeLink]; [cell.view removeFromSuperview]; } + if(parentCmapController.parentBookPageViewController.isTraining&&[text.text isEqualToString:@"delete me"]){ [parentCmapController.conceptNodeArray removeAllObjects]; [parentCmapController.conceptLinkArray removeAllObjects]; }*/ } - +//for nodes from the "+" button------------------------------------------------------------------------- -(void)addNoteThumb{ UIImageView *thumb = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"note_square.png"]]; - [thumb setFrame:CGRectMake(30, 22, 14, 14)]; + [thumb setFrame:CGRectMake(self.view.frame.size.width-7, self.view.frame.size.height, 14, 14)]; [self.view addSubview:thumb]; } - +//for nodes from the web browser------------------------------------------------------------------------- -(void)addWebThumb{ UIImageView *thumb = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"safari_square.png"]]; - [thumb setFrame:CGRectMake(50, 22, 14, 14)]; + [thumb setFrame:CGRectMake(self.view.frame.size.width-7, self.view.frame.size.height, 14, 14)]; [self.view addSubview:thumb]; } - +//for nodes from the book------------------------------------------------------------------------------- -(void)addHighlightThumb{ UIImageView *thumb = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"colorPlate.png"]]; - [thumb setFrame:CGRectMake(10, 22, 14, 14)]; + [thumb setFrame:CGRectMake(self.view.frame.size.width-7, self.view.frame.size.height, 14, 14)]; [self.view addSubview:thumb]; } @@ -977,30 +1244,70 @@ -(void)showResources{ -//after editting the text in the link, update the conceptLinkArray +//after editing the text in the textviews, update the conceptLinkArray - (void)textViewDidEndEditing:(UITextView *)textView{ // ConceptLink* linkToUpdate; - if(textView.text.length<8){ + /* if(textView.text.length<8){ textView.frame=CGRectMake(textView.frame.origin.x, textView.frame.origin.y, 60, textView.frame.size.height); } if(textView.text.length<6){ textView.frame=CGRectMake(textView.frame.origin.x, textView.frame.origin.y, 40, textView.frame.size.height); - } + }*/ + if(01){ //node has same name + [NSTimer scheduledTimerWithTimeInterval:1.0 + target:self + selector:@selector(showDupliAlert) + userInfo:nil + repeats:NO]; + } + if(!self.conceptName){ //conceptname is nil + self.conceptName=self.text.text; //conceptname is current text } + + + } + else{//is not TylerTextView, editinglink names + + for(ConceptLink* view in parentCmapController.conceptLinkArray){ + if(view.relation.tag== textView.tag){ + view.relation.text=textView.text; + NSLog(@"update link text...\n"); + NSString* inputString=[[NSString alloc] initWithFormat:@"%@", textView.text]; + LogData* newlog= [[LogData alloc]initWithName:userName SessionID:@"session_id" action:@"Update Link Name" selection:parentCmapController.linkTextBeforeEditing input:inputString pageNum:pageNum]; + [bookLogData addLogs:newlog]; + [LogDataParser saveLogData:bookLogData]; + }//end if + }//endfor + }//end else // NSLog(@"finish editting"); - } + }//endif if(parentCmapController.isTraining){ [parentCmapController.parentTrainingCtr showAlertWithString:@"Good job! Now try to delete a concept node"]; @@ -1008,12 +1315,12 @@ - (void)textViewDidEndEditing:(UITextView *)textView{ } [textView resignFirstResponder]; + } - - - -- (void)textFieldDidEndEditing:(UITextField *)textField{ +//This function is NO LONGER CALLED!!!! Since node has been changed to TylerTextView +//after editing the text in the name textfield(!), update the conceptNodeArray and node information +/*- (void)textFieldDidEndEditing:(UITextField *)textField{ NSString* inputString=[[NSString alloc] initWithFormat:@"%@", textField.text]; NSString* parTxt=parentCmapController.nodeTextBeforeEditing; @@ -1044,8 +1351,11 @@ - (void)textFieldDidEndEditing:(UITextField *)textField{ userInfo:nil repeats:NO]; } + if(!self.conceptName){ //conceptname is nil + self.conceptName=self.text.text; //conceptname is current text + } - /* + if([parentCmapController isNodeExist:textField.text]){ [NSTimer scheduledTimerWithTimeInterval:2.0 target:self @@ -1053,11 +1363,10 @@ - (void)textFieldDidEndEditing:(UITextField *)textField{ userInfo:nil repeats:NO]; - }*/ - + } -} - +}*/ +//shows alert if a duplicate node exists -(void)showDupliAlert{ [text becomeFirstResponder]; NSString* msg=[[NSString alloc]initWithFormat:@"Node with name \"%@\" already exists!",text.text]; diff --git a/eBookReader/NodeCell.xib b/eBookReader/NodeCell.xib index c86a8aa..c8b894a 100755 --- a/eBookReader/NodeCell.xib +++ b/eBookReader/NodeCell.xib @@ -1,13 +1,13 @@ - + - + - + @@ -16,18 +16,17 @@ - - + + - - + - - + + - + diff --git a/eBookReader/NodeViewController.xib b/eBookReader/NodeViewController.xib index ffce535..4f1f561 100755 --- a/eBookReader/NodeViewController.xib +++ b/eBookReader/NodeViewController.xib @@ -1,8 +1,8 @@ - + - + @@ -18,7 +18,6 @@ - @@ -26,7 +25,6 @@ - diff --git a/eBookReader/Pictures/CmapIcon.png b/eBookReader/Pictures/CmapIcon.png old mode 100644 new mode 100755 diff --git a/eBookReader/Pictures/Node_Small.png b/eBookReader/Pictures/Node_Small.png new file mode 100755 index 0000000..1acdb3b Binary files /dev/null and b/eBookReader/Pictures/Node_Small.png differ diff --git a/eBookReader/Pictures/Safarai_White.png b/eBookReader/Pictures/Safarai_White.png new file mode 100755 index 0000000..df7730e Binary files /dev/null and b/eBookReader/Pictures/Safarai_White.png differ diff --git a/eBookReader/Pictures/iconLeft.png b/eBookReader/Pictures/iconLeft.png old mode 100644 new mode 100755 diff --git a/eBookReader/Pictures/iconRight.png b/eBookReader/Pictures/iconRight.png old mode 100644 new mode 100755 diff --git a/eBookReader/Pictures/inform3.png b/eBookReader/Pictures/inform3.png new file mode 100755 index 0000000..ed7e60d Binary files /dev/null and b/eBookReader/Pictures/inform3.png differ diff --git a/eBookReader/Pictures/internet.png b/eBookReader/Pictures/internet.png new file mode 100755 index 0000000..8a95e72 Binary files /dev/null and b/eBookReader/Pictures/internet.png differ diff --git a/eBookReader/Pictures/notebook.png b/eBookReader/Pictures/notebook.png new file mode 100755 index 0000000..22dcebe Binary files /dev/null and b/eBookReader/Pictures/notebook.png differ diff --git a/eBookReader/Pictures/orangeRec.png b/eBookReader/Pictures/orangeRec.png old mode 100644 new mode 100755 diff --git a/eBookReader/Pictures/webbrowser.png b/eBookReader/Pictures/webbrowser.png new file mode 100755 index 0000000..7f4559e Binary files /dev/null and b/eBookReader/Pictures/webbrowser.png differ diff --git a/eBookReader/PopoverView_Configuration.h b/eBookReader/PopoverView_Configuration.h index f9ed292..76c93ca 100755 --- a/eBookReader/PopoverView_Configuration.h +++ b/eBookReader/PopoverView_Configuration.h @@ -83,7 +83,7 @@ // FONTS //normal text font -#define kTextFont [UIFont fontWithName:@"HelveticaNeue" size:16.f] +#define kTextFont [UIFont fontWithName:@"Helvetica" size:16.f] //normal text color #define kTextColor [UIColor colorWithRed:0.329 green:0.341 blue:0.353 alpha:1] @@ -94,7 +94,7 @@ #define kTextAlignment UITextAlignmentCenter //title font -#define kTitleFont [UIFont fontWithName:@"HelveticaNeue-Bold" size:16.f] +#define kTitleFont [UIFont fontWithName:@"Helvetica-Bold" size:16.f] //title text color #define kTitleColor [UIColor colorWithRed:0.329 green:0.341 blue:0.353 alpha:1] diff --git a/eBookReader/PreViewNode.h b/eBookReader/PreViewNode.h old mode 100644 new mode 100755 diff --git a/eBookReader/PreViewNode.m b/eBookReader/PreViewNode.m old mode 100644 new mode 100755 diff --git a/eBookReader/PreViewNode.xib b/eBookReader/PreViewNode.xib old mode 100644 new mode 100755 diff --git a/eBookReader/Singleton.h b/eBookReader/Singleton.h old mode 100644 new mode 100755 diff --git a/eBookReader/StudentData.h b/eBookReader/StudentData.h old mode 100644 new mode 100755 diff --git a/eBookReader/StudentData.m b/eBookReader/StudentData.m old mode 100644 new mode 100755 diff --git a/eBookReader/StudentDataParser.h b/eBookReader/StudentDataParser.h old mode 100644 new mode 100755 diff --git a/eBookReader/StudentDataParser.m b/eBookReader/StudentDataParser.m old mode 100644 new mode 100755 diff --git a/eBookReader/StudentDataWrapper.h b/eBookReader/StudentDataWrapper.h old mode 100644 new mode 100755 diff --git a/eBookReader/StudentDataWrapper.m b/eBookReader/StudentDataWrapper.m old mode 100644 new mode 100755 diff --git a/eBookReader/Study-Info.plist b/eBookReader/Study-Info.plist index dad0bca..6fcfcf1 100755 --- a/eBookReader/Study-Info.plist +++ b/eBookReader/Study-Info.plist @@ -2,11 +2,6 @@ - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - CFBundleDevelopmentRegion en CFBundleDisplayName @@ -40,6 +35,11 @@ 1.0 LSRequiresIPhoneOS + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + UIMainStoryboardFile MainStoryboard_iPad UIMainStoryboardFile~ipad diff --git a/eBookReader/SubNodeViewController.xib b/eBookReader/SubNodeViewController.xib index b9ff03c..8a9f02f 100755 --- a/eBookReader/SubNodeViewController.xib +++ b/eBookReader/SubNodeViewController.xib @@ -1,8 +1,8 @@ - + - + @@ -18,7 +18,6 @@ - @@ -26,7 +25,6 @@ - diff --git a/eBookReader/TeachRotate.png b/eBookReader/TeachRotate.png old mode 100644 new mode 100755 diff --git a/eBookReader/TestFairy.h b/eBookReader/TestFairy.h old mode 100644 new mode 100755 diff --git a/eBookReader/Train_AddNode.png b/eBookReader/Train_AddNode.png old mode 100644 new mode 100755 diff --git a/eBookReader/Train_HyperNavi.png b/eBookReader/Train_HyperNavi.png old mode 100644 new mode 100755 diff --git a/eBookReader/Train_correct.png b/eBookReader/Train_correct.png old mode 100644 new mode 100755 diff --git a/eBookReader/Train_delete.png b/eBookReader/Train_delete.png old mode 100644 new mode 100755 diff --git a/eBookReader/Train_link.png b/eBookReader/Train_link.png old mode 100644 new mode 100755 index af804f8..782d297 Binary files a/eBookReader/Train_link.png and b/eBookReader/Train_link.png differ diff --git a/eBookReader/Train_pageflip.png b/eBookReader/Train_pageflip.png old mode 100644 new mode 100755 diff --git a/eBookReader/Train_pinch.png b/eBookReader/Train_pinch.png old mode 100644 new mode 100755 diff --git a/eBookReader/Train_selectRelation.png b/eBookReader/Train_selectRelation.png old mode 100644 new mode 100755 diff --git a/eBookReader/TrainingViewController.h b/eBookReader/TrainingViewController.h old mode 100644 new mode 100755 index a74556b..3f1a95b --- a/eBookReader/TrainingViewController.h +++ b/eBookReader/TrainingViewController.h @@ -21,4 +21,5 @@ -(void)showAlertWithString: (NSString*) str; -(void)createDeleteTraining; + @end diff --git a/eBookReader/TrainingViewController.m b/eBookReader/TrainingViewController.m old mode 100644 new mode 100755 index 870aec6..5cf2766 --- a/eBookReader/TrainingViewController.m +++ b/eBookReader/TrainingViewController.m @@ -132,8 +132,7 @@ - (void)longpressAction:(UITapGestureRecognizer *)tap // UIMenuController *menuController = [UIMenuController sharedMenuController]; // [menuController setMenuVisible:YES animated:YES]; - - + } - (void)didReceiveMemoryWarning { @@ -141,6 +140,7 @@ - (void)didReceiveMemoryWarning { // Dispose of any resources that can be recreated. } + -(void)createCmapView{ cmapView=[[CmapController alloc] initWithNibName:@"CmapView" bundle:nil]; cmapView.parentTrainingCtr=self; diff --git a/eBookReader/TrainingViewController.xib b/eBookReader/TrainingViewController.xib old mode 100644 new mode 100755 diff --git a/eBookReader/TylerTextView.h b/eBookReader/TylerTextView.h new file mode 100755 index 0000000..f9d0a4f --- /dev/null +++ b/eBookReader/TylerTextView.h @@ -0,0 +1,14 @@ +// +// TylerTextView.h +// Digital Textbook +// +// Created by Lab User on 9/13/16. +// Copyright © 2016 Shang Wang. All rights reserved. +// + +#import + +@interface TylerTextView : UITextView +@property BOOL enableRecognizer; +@property BOOL disableEditting; +@end diff --git a/eBookReader/TylerTextView.m b/eBookReader/TylerTextView.m new file mode 100755 index 0000000..178345e --- /dev/null +++ b/eBookReader/TylerTextView.m @@ -0,0 +1,81 @@ +// +// TylerTextView.m +// Digital Textbook +// +// Created by Lab User on 9/13/16. +// Copyright © 2016 Shang Wang. All rights reserved. +// + +#import "TylerTextView.h" + +@implementation TylerTextView +@synthesize enableRecognizer; +@synthesize disableEditting; + +- (id)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + self.scrollEnabled = NO; + if (self) { + // Initialization cod + + + + } + return self; +} + + +/* + - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ + if(disableEditting){ + return NO; + }else{ + return NO; + } + } + */ + + + +- (void)textFieldDidEndEditing:(UITextView *)textView{ + NSLog(@"Finish editing.."); + +} + +//function needed to distinguish it from default textview +- (BOOL) isTylerTextView{ + return YES; +} + + + + +//This is the important part, changes gesture recognition of default TextView +-(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer +{ + //Prevent zooming but not panning + if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]]) + { + gestureRecognizer.enabled = self.enableRecognizer; + + } + + if([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]){ + gestureRecognizer.enabled = self.enableRecognizer; + } + + [super addGestureRecognizer:gestureRecognizer]; + return; +} + +/* + // Only override drawRect: if you perform custom drawing. + // An empty implementation adversely affects performance during animation. + - (void)drawRect:(CGRect)rect + { + // Drawing code + } + */ + +@end diff --git a/eBookReader/UIAlertView+Quick.h b/eBookReader/UIAlertView+Quick.h old mode 100644 new mode 100755 diff --git a/eBookReader/UIAlertView+Quick.m b/eBookReader/UIAlertView+Quick.m old mode 100644 new mode 100755 diff --git a/eBookReader/VideoViewController.h b/eBookReader/VideoViewController.h old mode 100644 new mode 100755 diff --git a/eBookReader/VideoViewController.m b/eBookReader/VideoViewController.m old mode 100644 new mode 100755 diff --git a/eBookReader/VideoViewController.xib b/eBookReader/VideoViewController.xib old mode 100644 new mode 100755 diff --git a/eBookReader/WebBrowserViewController.h b/eBookReader/WebBrowserViewController.h index 7a3db10..ac35932 100755 --- a/eBookReader/WebBrowserViewController.h +++ b/eBookReader/WebBrowserViewController.h @@ -9,9 +9,14 @@ #import #import "WebMarkController.h" #import "ContentViewController.h" - - -@interface WebBrowserViewController : UIViewController { +#import "CmapController.h" +#import "NodeCell.h" +#import "LogData.h" +#import "LogDataParser.h" +#import "LogDataWrapper.h" +@class BookPageViewController; + +@interface WebBrowserViewController : UIViewController { // ContentViewController *parent_View; } @@ -19,9 +24,15 @@ @property (nonatomic, strong) IBOutlet UIWebView *webBrowserView; @property (strong, nonatomic) NSURL *url;//the URL link to display HTML content +@property (strong, nonatomic) NSURL *prevUrl; // previous url to check against current @property (strong, nonatomic) NSURLRequest *requestObj; -@property (nonatomic, strong) ContentViewController *parent_View_Controller; + +@property (strong, nonatomic)ContentViewController* parent_View_Controller; +@property (nonatomic, strong) BookPageViewController *parentBookPageViewCtr; +@property (strong, nonatomic) NodeCell *relatedNode; + + @property (strong, nonatomic) IBOutlet UIBarButtonItem *refresh; @property (strong, nonatomic) IBOutlet UIBarButtonItem *next; @property (strong, nonatomic) IBOutlet UIBarButtonItem *pre; @@ -34,6 +45,11 @@ @property (nonatomic) CGPoint pvPoint;//the point where the popup note is originally evoked @property (nonatomic) int urlId; @property (nonatomic) BOOL isNew; +-(IBAction)search_go:(id)sender; -(void)setParent_View:(ContentViewController *)view; +-(void)SearchKeyWord: (NSString*) keywrod; +-(NSString *)getSiteTitle_fromLinkingUrl: (NSString *) keyword; +-(void) updateBrowserWindow; + @end diff --git a/eBookReader/WebBrowserViewController.m b/eBookReader/WebBrowserViewController.m index 3d5b7c2..2ad9156 100755 --- a/eBookReader/WebBrowserViewController.m +++ b/eBookReader/WebBrowserViewController.m @@ -7,13 +7,17 @@ // #import "WebBrowserViewController.h" - +#import "BookPageViewController.h" +#import "UIMenuItem+CXAImageSupport.h" +#import "NodeCell.h" +#import "QuartzCore/QuartzCore.h" @interface WebBrowserViewController () @end @implementation WebBrowserViewController @synthesize webBrowserView; @synthesize url; +@synthesize prevUrl; @synthesize requestObj; @synthesize next; @synthesize pre; @@ -25,9 +29,11 @@ @implementation WebBrowserViewController @synthesize refresh; @synthesize back; @synthesize markPage; -@synthesize parent_View_Controller; @synthesize pvPoint; @synthesize isNew; +@synthesize parent_View_Controller; +@synthesize relatedNode; + - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { @@ -41,16 +47,30 @@ - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [webBrowserView loadRequest:requestObj]; - //[urlStack addObject:webBrowserView.request]; + // [webBrowserView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.google.com"]]]; + [self.navigationController setNavigationBarHidden: YES animated:NO]; } - (void)viewDidLoad { [super viewDidLoad]; + // [self.view setUserInteractionEnabled:YES]; + //This function also determines how big, where webview is showing + //530 = x, 0 = y, 511 and 768 are dimensions + //CGRect rect=CGRectMake(530, 0, 511, 768); + CGRect rect=CGRectMake(0, 0, 513, 768); + [self.view setFrame:rect]; + + // CGRect rect=CGRectMake(256, 384, 511, 768); + // [self.view setFrame:rect]; + self.view.layer.borderColor = [UIColor grayColor].CGColor; + self.view.layer.borderWidth = 2; + urlId=0; [webBrowserView setDelegate:self]; + //[webBrowserView setDelegate:_parentBookPageViewCtr]; + //[webBrowserView becomeFirstResponder]; webBrowserView.scalesPageToFit=YES; [refresh setTarget:self]; [refresh setAction:@selector(refreshWebPage:)]; @@ -58,9 +78,58 @@ - (void)viewDidLoad [markPage setAction:@selector(addWebMark:)]; [back setTarget:self]; [back setAction:@selector(backToBook:)]; - + + + //Long press gesture + UILongPressGestureRecognizer *longpress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longpressAction:)]; + longpress.delegate=self; + [webBrowserView addGestureRecognizer:longpress]; + + //recognizes first tap + UITapGestureRecognizer *onetap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(updatePVPosition:)]; + [onetap setNumberOfTapsRequired:1]; + onetap.delegate=self; + [webBrowserView addGestureRecognizer:onetap]; + + self.view.layer.zPosition = MAXFLOAT; + [webBrowserView setUserInteractionEnabled:YES]; + +} + +-(void) updateBrowserWindow{ + CGRect rect; + if (_parentBookPageViewCtr.bookView.currentContentView.isSplit == YES){ // split screen + rect=CGRectMake(0, 0, 513, 768); + [self.webAdrText setFrame: CGRectMake(200, 7, 255, 30)]; //changes size of webAdrText textfield + } + else{ //not split screen + rect=CGRectMake(0, 0, 768, 1024); + [self.webAdrText setFrame: CGRectMake(402, 7, 505, 30)]; //changes size of webAdrText textfield + } + + [self.view setFrame:rect]; } +//Allows two gestures to be recognized simultaneously, in this case longpress and onetap------------------------------ +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer +{ + return YES; +} + +//actions taken when long press is recognized----------------------------------------------------------------------- +- (void)longpressAction:(UITapGestureRecognizer *)tap +{ + //Become first responder + [self becomeFirstResponder]; +} + +//Needed to prevent crashing for gesture recognizer related actions------------------------------------------------ +- (void)updatePVPosition:(UITapGestureRecognizer *)tap +{ + +} + + - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; @@ -70,43 +139,137 @@ - (void)didReceiveMemoryWarning - (void )webViewDidFinishLoad:(UIWebView *)webView{ //update the url address text after the webview loads a new web page [webAdrText setText:webBrowserView.request.URL.absoluteString]; + + if (prevUrl != nil){ //A previous Url was set + if (prevUrl == webBrowserView.request.URL){ //previousUrl is same as current + return; //this to prevent log files from reporting the same url over and over again + } + else { + //save info in logs + LogData* log= [[LogData alloc]initWithName:parent_View_Controller.userName SessionID:@"session_id" action:@"Update URL/search web " selection:@"web browser" input:webBrowserView.request.URL.absoluteString pageNum:0]; + [_parentBookPageViewCtr.cmapView.bookLogDataWrapper addLogs:log]; + [LogDataParser saveLogData:_parentBookPageViewCtr.cmapView.bookLogDataWrapper]; + + prevUrl = webBrowserView.request.URL; //set previous url to current + return; + } + } + + prevUrl = webBrowserView.request.URL; //set previous url to current } -//refresh the web page +//Gives web browser permission to be first responder--------------------------------------------------------- +- (BOOL)canBecomeFirstResponder { + return YES; +} + +//give permission to show the menu item we added -------------------------------------------------------------- +- (BOOL) canPerformAction:(SEL)action withSender:(id)sender +{ + //long press gesture + if (action == @selector(longpressAction:)){ + return YES; + } + return NO; +} + +//searches for contents in textfield, goes to url----------------------------------------------------------- +- (IBAction)search_go:(id)sender { + NSString *url_field_text = [webAdrText text]; + /* NSURL *url = [NSURL URLWithString: url_field_text]; + NSString *schemeString= url.scheme; + NSString *hostString= url.host; + if (url && schemeString && hostString){ //if url is valid + [webBrowserView loadRequest : [NSURLRequest requestWithURL:url]]; + } + else { + [self SearchKeyWord: url_field_text]; + }*/ + [self SearchKeyWord: url_field_text]; +} + + + +//refresh the web page ----> we no longer have a refresh button ----------------------------------------------------- - (IBAction)refreshWebPage : (id)sender { - NSString *link= webAdrText.text; + NSString *link= @"https://www.google.com"; NSURL *new_url = [NSURL URLWithString:link]; NSURLRequest *new_requestObj = [NSURLRequest requestWithURL:new_url]; [webBrowserView loadRequest:new_requestObj]; } -//go back to book view +//go back to book view-------------------------------------------------------------------------------------- - (IBAction)backToBook : (id)sender { - [self.navigationController popViewControllerAnimated:YES ]; + // [self.navigationController popViewControllerAnimated:YES ]; + [_parentBookPageViewCtr hideWebView]; } -//add a web page icon at the content view controller -- (IBAction)addWebMark : (id)sender { - if(isNew){ - [parent_View_Controller createWebNote: pvPoint - URL: requestObj isWriteToFile:YES isNewIcon:YES]; - }else{ - NSLog(@"return to book page!"); + + +//Sets relatedNode to parameter. This is so we know where to send url info ------------------------------------ +-(void)setRelatedNode:(NodeCell *)givenNode{ + if (givenNode != nil){ + relatedNode = givenNode; + } + else { + NSLog (@"Problem in Web Browser, setRelatedNode"); } - [self.navigationController popViewControllerAnimated:YES ]; } -- (BOOL) canPerformAction:(SEL)action withSender:(id)sender +- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { - if ( action == @selector(refreshWebPage:) - ||action==@selector(addWebMark:) - ||action==@selector(backToBook:)) - { - return YES; + NSLog(@"Error : %@",error); +} + + +//Searches for selected string in Google or Wikipedia -------------------------------------------------------- +-(void)SearchKeyWord: (NSString*) keywrod{ + NSString* searchTerm = @""; + // NSLog(@"Keyword = %@", keywrod); + if (keywrod != nil){ // Keyword contains a string + NSURL *potentialUrl = [NSURL URLWithString: keywrod]; + NSString *schemeString= potentialUrl.scheme; + NSString *hostString= potentialUrl.host; + if (potentialUrl && schemeString && hostString){ //if url is valid + // NSLog(@"Keyword is valid url %@", potentialUrl); + //go to url + [webBrowserView loadRequest : [NSURLRequest requestWithURL:potentialUrl]]; + //save info in logs + LogData* log= [[LogData alloc]initWithName:parent_View_Controller.userName SessionID:@"session_id" action:@"searching key word on web browser " selection:@"web browser" input:potentialUrl.absoluteString pageNum:0]; + [_parentBookPageViewCtr.cmapView.bookLogDataWrapper addLogs:log]; + [LogDataParser saveLogData:_parentBookPageViewCtr.cmapView.bookLogDataWrapper]; + return; + } + else { + searchTerm = [keywrod stringByReplacingOccurrencesOfString:@" " withString:@"+"]; + searchTerm = [searchTerm stringByReplacingOccurrencesOfString:@"\"" withString: @"%22"]; + searchTerm = [searchTerm stringByReplacingOccurrencesOfString:@"%" withString: @"%25"]; + searchTerm = [searchTerm stringByReplacingOccurrencesOfString:@":" withString: @"%3A%20"]; + } + } - return NO; + + //For Google + NSString* urlStr=@"https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q="; + urlStr=[urlStr stringByAppendingString:searchTerm]; + // NSString *encodedUrlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + [webBrowserView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]]]; + //save info in logs + LogData* log= [[LogData alloc]initWithName:parent_View_Controller.userName SessionID:@"session_id" action:@"searching key word on web browser " selection:@"web browser" input:searchTerm pageNum:0]; + [_parentBookPageViewCtr.cmapView.bookLogDataWrapper addLogs:log]; + [LogDataParser saveLogData:_parentBookPageViewCtr.cmapView.bookLogDataWrapper]; + + //For Wikipedia + /*NSString* wikiSearchToken = @"&searchToken"; + NSString* urlStrWiki= @"https://en.wikipedia.org/w/index.php?title=Special%3ASearch&profile=default&fulltext=Search&search="; + urlStrWiki=[urlStrWiki stringByAppendingString:searchTerm]; + urlStrWiki=[urlStrWiki stringByAppendingString:wikiSearchToken]; + [webBrowserView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlStrWiki]]]; + */ } + + @end diff --git a/eBookReader/WebBrowserViewController.xib b/eBookReader/WebBrowserViewController.xib index d981ae0..2381d93 100755 --- a/eBookReader/WebBrowserViewController.xib +++ b/eBookReader/WebBrowserViewController.xib @@ -1,21 +1,19 @@ - + - + - - - + - + @@ -45,33 +43,42 @@ - + + + + + - + + + + + - + + + + + - + - - - - - - - - + + + + + - + diff --git a/eBookReader/ZCAudioTool.h b/eBookReader/ZCAudioTool.h old mode 100644 new mode 100755 diff --git a/eBookReader/ZCAudioTool.m b/eBookReader/ZCAudioTool.m old mode 100644 new mode 100755 diff --git a/eBookReader/ZCTradeInputView.h b/eBookReader/ZCTradeInputView.h old mode 100644 new mode 100755 diff --git a/eBookReader/ZCTradeInputView.m b/eBookReader/ZCTradeInputView.m old mode 100644 new mode 100755 diff --git a/eBookReader/ZCTradeKeyboard.h b/eBookReader/ZCTradeKeyboard.h old mode 100644 new mode 100755 diff --git a/eBookReader/ZCTradeKeyboard.m b/eBookReader/ZCTradeKeyboard.m old mode 100644 new mode 100755 diff --git a/eBookReader/ZCTradeView.h b/eBookReader/ZCTradeView.h old mode 100644 new mode 100755 diff --git a/eBookReader/ZCTradeView.m b/eBookReader/ZCTradeView.m old mode 100644 new mode 100755 diff --git a/eBookReader/aa.epub b/eBookReader/aa.epub old mode 100644 new mode 100755 index 9241d3f..5c72d2f Binary files a/eBookReader/aa.epub and b/eBookReader/aa.epub differ diff --git a/eBookReader/aa_backup.epub b/eBookReader/aa_backup.epub old mode 100644 new mode 100755 diff --git a/eBookReader/addIcon.png b/eBookReader/addIcon.png old mode 100644 new mode 100755 diff --git a/eBookReader/blueDot.png b/eBookReader/blueDot.png old mode 100644 new mode 100755 diff --git a/eBookReader/blueRec.png b/eBookReader/blueRec.png old mode 100644 new mode 100755 diff --git a/eBookReader/doc.pdf b/eBookReader/doc.pdf old mode 100644 new mode 100755 diff --git a/eBookReader/en.lproj/WebBrowserViewController.xib b/eBookReader/en.lproj/WebBrowserViewController.xib new file mode 100755 index 0000000..d5873bf --- /dev/null +++ b/eBookReader/en.lproj/WebBrowserViewController.xib @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eBookReader/finishTraining.png b/eBookReader/finishTraining.png old mode 100644 new mode 100755 diff --git a/eBookReader/hintbulb.png b/eBookReader/hintbulb.png old mode 100644 new mode 100755 diff --git a/eBookReader/libTestFairy.a b/eBookReader/libTestFairy.a old mode 100644 new mode 100755 diff --git a/eBookReader/magnify_2.png b/eBookReader/magnify_2.png old mode 100644 new mode 100755 diff --git a/eBookReader/orangeRec.png b/eBookReader/orangeRec.png old mode 100644 new mode 100755 diff --git a/eBookReader/preview.png b/eBookReader/preview.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/number_bg@2x.png b/eBookReader/trade.bundle/number_bg@2x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/number_bg@3x.png b/eBookReader/trade.bundle/number_bg@3x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/password_cancel_down@2x.png b/eBookReader/trade.bundle/password_cancel_down@2x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/password_cancel_down@3x.png b/eBookReader/trade.bundle/password_cancel_down@3x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/password_cancel_up@2x.png b/eBookReader/trade.bundle/password_cancel_up@2x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/password_cancel_up@3x.png b/eBookReader/trade.bundle/password_cancel_up@3x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/password_in@2x.png b/eBookReader/trade.bundle/password_in@2x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/password_in@3x.png b/eBookReader/trade.bundle/password_in@3x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/password_ok_down@2x.png b/eBookReader/trade.bundle/password_ok_down@2x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/password_ok_down@3x.png b/eBookReader/trade.bundle/password_ok_down@3x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/password_ok_up@2x.png b/eBookReader/trade.bundle/password_ok_up@2x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/password_ok_up@3x.png b/eBookReader/trade.bundle/password_ok_up@3x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/pssword_bg@2x.png b/eBookReader/trade.bundle/pssword_bg@2x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/pssword_bg@3x.png b/eBookReader/trade.bundle/pssword_bg@3x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/yuan@2x.png b/eBookReader/trade.bundle/yuan@2x.png old mode 100644 new mode 100755 diff --git a/eBookReader/trade.bundle/yuan@3x.png b/eBookReader/trade.bundle/yuan@3x.png old mode 100644 new mode 100755 diff --git a/eBookReader/upload-dsym.sh b/eBookReader/upload-dsym.sh old mode 100644 new mode 100755