This commit is contained in:
Chris Li 2016-09-22 11:58:55 -04:00
parent 72a885d604
commit 8c7141854f
7 changed files with 61 additions and 46 deletions

View File

@ -49,7 +49,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>1.8.1009</string>
<string>1.8.1047</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>

View File

@ -21,7 +21,7 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.8.1013</string>
<string>1.8.1051</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionMainStoryboard</key>

View File

@ -28,11 +28,25 @@ class Book: NSManagedObject {
book.publisher = metadata["publisher"] as? String
book.desc = metadata["description"] as? String
book.meta4URL = metadata["url"] as? String
book.pid = metadata["name"] as? String
book.pid = {
if let pid = metadata["name"] as? String where pid != "" {
return pid
} else {
return nil
}
}()
book.articleCount = Int64((metadata["articleCount"] as? String) ?? "") ?? 0
book.mediaCount = Int64((metadata["mediaCount"] as? String) ?? "") ?? 0
book.fileSize = (Int64((metadata["size"] as? String) ?? "") ?? 0) * 1024
book.fileSize = {
if let fileSize = metadata["size"] as? String {
return (Int64(fileSize) ?? 0) * 1024
} else if let fileSize = metadata["size"] as? NSNumber {
return fileSize.longLongValue * 1024
} else {
return 0
}
}()
book.date = {
guard let date = metadata["date"] as? String else {return nil}

View File

@ -60,9 +60,9 @@ class ScanLocalBookOperation: Operation {
let addedZimFileURLs = currentZimFileURLSnapshot.subtract(lastZimFileURLSnapshot)
let removedZimFileURLs = lastZimFileURLSnapshot.subtract(currentZimFileURLSnapshot)
guard addedZimFileURLs.count > 0 || removedZimFileURLs.count > 0 else {return}
ZimMultiReader.shared.removeReaders(removedZimFileURLs)
ZimMultiReader.shared.addReaders(addedZimFileURLs)
ZimMultiReader.shared.producePIDMap()
}
private func updateCoreData() {

View File

@ -16,6 +16,7 @@ class ZimMultiReader: NSObject, DirectoryMonitorDelegate {
private let monitor = DirectoryMonitor(URL: NSFileManager.docDirURL)
private(set) var readers = [ZimID: ZimReader]()
private(set) var pidMap = [String: String]() // PID: ID
private var lastZimFileURLSnapshot = Set<NSURL>()
private var lastIndexFolderURLSnapshot = Set<NSURL>()
@ -63,6 +64,22 @@ class ZimMultiReader: NSObject, DirectoryMonitorDelegate {
}
}
func producePIDMap() {
pidMap.removeAll()
var map = [String: [ZimReader]]() // PID: [ZimReader]
for (_, reader) in readers {
guard let pid = reader.getName() where pid != "" else {continue}
var readers = map[pid] ?? [ZimReader]()
readers.append(reader)
map[pid] = readers
}
for (pid, readers) in map {
guard let reader = readers.sort({ $0.getDate().caseInsensitiveCompare($1.getDate()) == .OrderedAscending }).first,
let id = reader.getID() else {continue}
pidMap[pid] = id
}
}
// MARK: - DirectoryMonitorDelegate
func directoryMonitorDidObserveChange() {

View File

@ -42,11 +42,13 @@
- (NSString *)getTitle;
- (NSString *)getDesc;
- (NSString *)getLanguage;
- (NSString *)getName;
- (NSString *)getTags;
- (NSString *)getDate;
- (NSString *)getCreator;
- (NSString *)getPublisher;
- (NSString *)getOriginID;
- (NSString *)getFileSize;
- (NSNumber *)getFileSize;
- (NSData *)getFavicon;
- (NSString *)parseURL:(NSString *)urlPath;

View File

@ -240,85 +240,67 @@ int levenshtein_distance(const std::string &s1, const std::string &s2)
#pragma mark - get File Attributes
- (NSString *)getID {
NSString *id = nil;
string idC;
idC = _reader->getId();
id = [NSString stringWithCString:idC.c_str() encoding:NSUTF8StringEncoding];
return id;
return [NSString stringWithCString:idC.c_str() encoding:NSUTF8StringEncoding];
}
- (NSString *)getTitle {
NSString *title = nil;
string titleC;
titleC = _reader->getTitle();
title = [NSString stringWithCString:titleC.c_str() encoding:NSUTF8StringEncoding];
return title;
return [NSString stringWithCString:titleC.c_str() encoding:NSUTF8StringEncoding];
}
- (NSString *)getDesc {
NSString *description = nil;
string descriptionC;
descriptionC = _reader->getDescription();
description = [NSString stringWithCString:descriptionC.c_str() encoding:NSUTF8StringEncoding];
return description;
return [NSString stringWithCString:descriptionC.c_str() encoding:NSUTF8StringEncoding];
}
- (NSString *)getLanguage {
NSString *language = nil;
string languageC;
languageC = _reader->getLanguage();
language = [NSString stringWithCString:languageC.c_str() encoding:NSUTF8StringEncoding];
return language;
return [NSString stringWithCString:languageC.c_str() encoding:NSUTF8StringEncoding];
}
- (NSString *)getName {
string nameC;
nameC = _reader->getName();
return [NSString stringWithCString:nameC.c_str() encoding:NSUTF8StringEncoding];
}
- (NSString *)getTags {
string tagsC;
tagsC = _reader->getTags();
return [NSString stringWithCString:tagsC.c_str() encoding:NSUTF8StringEncoding];
}
- (NSString *)getDate {
string dateC;
dateC = _reader->getDate();
NSString *dateString = [NSString stringWithCString:dateC.c_str() encoding:NSUTF8StringEncoding];
return dateString;
return [NSString stringWithCString:dateC.c_str() encoding:NSUTF8StringEncoding];
}
- (NSString *)getCreator {
NSString *creator = nil;
string creatorC;
creatorC = _reader->getCreator();
creator = [NSString stringWithCString:creatorC.c_str() encoding:NSUTF8StringEncoding];
return creator;
return [NSString stringWithCString:creatorC.c_str() encoding:NSUTF8StringEncoding];
}
- (NSString *)getPublisher {
NSString *publisher = nil;
string publisherC;
publisherC = _reader->getOrigId();
publisher = [NSString stringWithCString:publisherC.c_str() encoding:NSUTF8StringEncoding];
return publisher;
return [NSString stringWithCString:publisherC.c_str() encoding:NSUTF8StringEncoding];
}
- (NSString *)getOriginID {
NSString *originID = nil;
string originIDC;
originIDC = _reader->getOrigId();
originID = [NSString stringWithCString:originIDC.c_str() encoding:NSUTF8StringEncoding];
return originID;
return [NSString stringWithCString:originIDC.c_str() encoding:NSUTF8StringEncoding];
}
- (NSString *)getFileSize {
return [NSString stringWithFormat:@"%u", _reader->getFileSize()];
- (NSNumber *)getFileSize {
return [[NSNumber alloc] initWithUnsignedInt:_reader->getFileSize()];
}
- (NSData *)getFavicon {