12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- // _____ _
- // |_ _| |_ _ _ ___ ___ _ __ __ _
- // | | | ' \| '_/ -_) -_) ' \/ _` |_
- // |_| |_||_|_| \___\___|_|_|_\__,_(_)
- //
- // Threema iOS Client
- // Copyright (c) 2014-2020 Threema GmbH
- //
- // This program is free software: you can redistribute it and/or modify
- // it under the terms of the GNU Affero General Public License, version 3,
- // as published by the Free Software Foundation.
- //
- // This program is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU Affero General Public License for more details.
- //
- // You should have received a copy of the GNU Affero General Public License
- // along with this program. If not, see <https://www.gnu.org/licenses/>.
- #import "BallotMessage.h"
- #import "Ballot.h"
- #import "BallotChoice.h"
- #define KEY_BALLOT @"ballot"
- @implementation BallotMessage
- @dynamic ballotState;
- @dynamic ballot;
- - (NSString*)format {
- NSString *prefix = NSLocalizedStringFromTable(@"ballot", @"Ballot", nil);
- NSMutableString *string = [NSMutableString stringWithFormat:@"%@: %@\n", prefix, self.ballot.title];
-
- for (BallotChoice *choice in self.ballot.choicesSortedByOrder) {
- [string appendFormat:@"- %@\n", choice.name];
- }
-
- return string;
- }
- - (NSString*)logText {
- return [self format];
- }
- - (NSString*)previewText {
- return NSLocalizedStringFromTable(@"ballot", @"Ballot", nil);
- }
- - (NSString *)quotePreviewText {
- return [NSString stringWithFormat:@"%@: %@", NSLocalizedStringFromTable(@"ballot", @"Ballot", nil), self.ballot.title];
- }
- - (BOOL)isClosed {
- return self.ballotState.intValue == kBallotMessageStateCloseBallot;
- }
- - (void)setBallot:(Ballot *)ballot
- {
- [self willChangeValueForKey:@"ballot"];
- [self setPrimitiveValue:ballot forKey:@"ballot"];
-
- // make sure ballot object is fresh
- [ballot.managedObjectContext refreshObject:ballot mergeChanges:YES];
- [self updateBallotState];
-
- [self didChangeValueForKey:@"ballot"];
- }
- - (void)updateBallotState {
-
- NSInteger messageState;
- switch (self.ballot.state.integerValue) {
- case kBallotStateOpen:
- messageState = kBallotMessageStateOpenBallot;
- break;
- case kBallotStateClosed:
- messageState = kBallotMessageStateCloseBallot;
- break;
- default:
- // ignore unexpected state
- return;
- }
-
- self.ballotState = [NSNumber numberWithInteger:messageState];
- }
- @end
|