<commit_before>//
//  ArticleController.h
//  Vienna
//
//  Created by Steve on 5/6/06.
//  Copyright (c) 2004-2005 <NAME>. All rights reserved.
//
//  Licensed under the Apache License, Version 2.0 (the "License");
//  you may not use this file except in compliance with the License.
//  You may obtain a copy of the License at
//
//  http://www.apache.org/licenses/LICENSE-2.0
//
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS,
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//  See the License for the specific language governing permissions and
//  limitations under the License.
//

#import <Cocoa/Cocoa.h>
#import "FoldersTree.h"
#import "BacktrackArray.h"
#import "BaseView.h"
#import "ArticleBaseView.h"
#import "ArticleView.h"

/* ArticleController
 * The ArticleController contains the controlling logic for the article view that is
 * independent of the view. The code here was split from ArticleListView for the
 * purpose of allowing us to manage multiple article views. The application
 * controller creates a single article controller then assigns it the candidate
 * article view. Thus all control of the article view now passes through the article
 * controller.
 */
@interface ArticleController : NSObject
{
	FoldersTree * foldersTree;

	NSView<ArticleBaseView, BaseView> * mainArticleView;
	NSArray * currentArrayOfArticles;
	NSArray * folderArrayOfArticles;
	int currentFolderId;
	NSDictionary * articleSortSpecifiers;
	NSString * sortColumnIdentifier;
	BackTrackArray * backtrackArray;
	BOOL isBacktracking;
	Article * articleToPreserve;
}

@property (nonatomic, retain) IBOutlet FoldersTree * foldersTree;
@property (nonatomic, retain) NSView<ArticleBaseView, BaseView> * mainArticleView;
@property (nonatomic, retain) NSArray * currentArrayOfArticles;
@property (nonatomic, retain) NSArray * folderArrayOfArticles;
@property (nonatomic, assign) NSDictionary * articleSortSpecifiers;
@property (nonatomic, assign) BackTrackArray * backtrackArray;

// Public functions
-(NSView<ArticleBaseView, BaseView> *)mainArticleView;
-(void)setMainArticleView:(NSView<ArticleBaseView, BaseView> *)newView;
-(int)currentFolderId;
-(Article *)selectedArticle;
-(NSArray *)markedArticleRange;
-(void)saveTableSettings;
-(void)sortArticles;
-(NSArray *)allArticles;
-(void)displayFirstUnread;
-(void)displayNextUnread;
-(NSString *)searchPlaceholderString;
-(void)reloadArrayOfArticles;
-(void)refreshCurrentFolder;
-(void)displayFolder:(int)newFolderId;
-(void)refilterArrayOfArticles;
-(NSString *)sortColumnIdentifier;
-(BOOL)sortIsAscending;
-(void)ensureSelectedArticle:(BOOL)singleSelection;
-(void)sortByIdentifier:(NSString *)columnName;
-(void)sortAscending:(BOOL)newAscending;
-(BOOL)currentCacheContainsFolder:(int)folderId;
-(void)deleteArticlesByArray:(NSArray *)articleArray;
-(void)markReadByArray:(NSArray *)articleArray readFlag:(BOOL)readFlag;
-(void)markAllReadByReferencesArray:(NSArray *)refArray readFlag:(BOOL)readFlag;
-(void)markAllReadByArray:(NSArray *)folderArray withUndo:(BOOL)undoFlag withRefresh:(BOOL)refreshFlag;<commit_msg>Change dict & array properties to copy instead of retain<commit_after>//
//  ArticleController.h
//  Vienna
//
//  Created by Steve on 5/6/06.
//  Copyright (c) 2004-2005 <NAME>. All rights reserved.
//
//  Licensed under the Apache License, Version 2.0 (the "License");
//  you may not use this file except in compliance with the License.
//  You may obtain a copy of the License at
//
//  http://www.apache.org/licenses/LICENSE-2.0
//
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS,
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//  See the License for the specific language governing permissions and
//  limitations under the License.
//

#import <Cocoa/Cocoa.h>
#import "FoldersTree.h"
#import "BacktrackArray.h"
#import "BaseView.h"
#import "ArticleBaseView.h"
#import "ArticleView.h"

/* ArticleController
 * The ArticleController contains the controlling logic for the article view that is
 * independent of the view. The code here was split from ArticleListView for the
 * purpose of allowing us to manage multiple article views. The application
 * controller creates a single article controller then assigns it the candidate
 * article view. Thus all control of the article view now passes through the article
 * controller.
 */
@interface ArticleController : NSObject
{
	FoldersTree * foldersTree;

	NSView<ArticleBaseView, BaseView> * mainArticleView;
	NSArray * currentArrayOfArticles;
	NSArray * folderArrayOfArticles;
	int currentFolderId;
	NSDictionary * articleSortSpecifiers;
	NSString * sortColumnIdentifier;
	BackTrackArray * backtrackArray;
	BOOL isBacktracking;
	Article * articleToPreserve;
}

@property (nonatomic, retain) IBOutlet FoldersTree * foldersTree;
@property (nonatomic, retain) NSView<ArticleBaseView, BaseView> * mainArticleView;
@property (nonatomic, copy) NSArray * currentArrayOfArticles;
@property (nonatomic, copy) NSArray * folderArrayOfArticles;
@property (nonatomic, assign) NSDictionary * articleSortSpecifiers;
@property (nonatomic, assign) BackTrackArray * backtrackArray;

// Public functions
-(NSView<ArticleBaseView, BaseView> *)mainArticleView;
-(void)setMainArticleView:(NSView<ArticleBaseView, BaseView> *)newView;
-(int)currentFolderId;
-(Article *)selectedArticle;
-(NSArray *)markedArticleRange;
-(void)saveTableSettings;
-(void)sortArticles;
-(NSArray *)allArticles;
-(void)displayFirstUnread;
-(void)displayNextUnread;
-(NSString *)searchPlaceholderString;
-(void)reloadArrayOfArticles;
-(void)refreshCurrentFolder;
-(void)displayFolder:(int)newFolderId;
-(void)refilterArrayOfArticles;
-(NSString *)sortColumnIdentifier;
-(BOOL)sortIsAscending;
-(void)ensureSelectedArticle:(BOOL)singleSelection;
-(void)sortByIdentifier:(NSString *)columnName;
-(void)sortAscending:(BOOL)newAscending;
-(BOOL)currentCacheContainsFolder:(int)folderId;
-(void)deleteArticlesByArray:(NSArray *)articleArray;
-(void)markReadByArray:(NSArray *)articleArray readFlag:(BOOL)readFlag;
-(void)markAllReadByReferencesArray:(NSArray *)refArray readFlag:(BOOL)readFlag;
-(void)markAllReadByArray:(NSArray *)folderArray withUndo:(BOOL)undoFlag withRefresh:(BOOL)refreshFlag;
{'fraction_non_alphanumeric': 0.10643602929717937, 'fraction_numerical': 0.004986753934860527, 'mean_word_length': 6.146993318485523, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3675784', 'n_tokens_mistral': 1924, 'n_tokens_neox': 1804, 'n_words': 545}