9 Commits

Author SHA1 Message Date
relikd
51e1f07531 Version 1.2.1 release 2023-06-17 17:07:00 +02:00
relikd
b21cc20746 chore: update about page 2023-06-17 16:53:10 +02:00
relikd
be600b6c5f fix: initial autoresize on about page 2023-06-17 16:31:34 +02:00
relikd
a9c3ccc1f7 fix: use actual FlexibleSpace toolbar item 2023-06-17 16:31:34 +02:00
relikd
c4c5559d2d fix: autoresize issues (the 2nd) 2023-06-17 16:31:26 +02:00
relikd
68b25d10dd fix: auto column width for Feeds 2023-06-16 21:46:01 +02:00
relikd
24c785662a ref: remove Carthage dependency 2023-06-16 20:46:42 +02:00
relikd
2a589f51a8 fix: autoresize on Ventura 2023-06-16 19:08:26 +02:00
relikd
30527d50e6 fix: add missing changelog link 2022-10-01 18:14:59 +02:00
14 changed files with 98 additions and 61 deletions

View File

@@ -8,6 +8,16 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
## [Unreleased] ## [Unreleased]
## [1.2.1] 2023-06-17
### Added
- Universal binary (Intel+AppleSilicon)
### Fixed
- Autoresize issues of UI elements in macOS Ventura
- Flexible width TabBarItem
- Updated About page (removed dead link)
## [1.2.0] 2022-10-01 ## [1.2.0] 2022-10-01
### Added ### Added
- *UI*: Add option to hide read articles (show only unread) - *UI*: Add option to hide read articles (show only unread)
@@ -158,7 +168,9 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
Initial release Initial release
[Unreleased]: https://github.com/relikd/baRSS/compare/v1.1.3...HEAD [Unreleased]: https://github.com/relikd/baRSS/compare/v1.2.1...HEAD
[1.2.1]: https://github.com/relikd/baRSS/compare/v1.2.0...v1.2.1
[1.2.0]: https://github.com/relikd/baRSS/compare/v1.1.3...v1.2.0
[1.1.3]: https://github.com/relikd/baRSS/compare/v1.1.2...v1.1.3 [1.1.3]: https://github.com/relikd/baRSS/compare/v1.1.2...v1.1.3
[1.1.2]: https://github.com/relikd/baRSS/compare/v1.1.1...v1.1.2 [1.1.2]: https://github.com/relikd/baRSS/compare/v1.1.1...v1.1.2
[1.1.1]: https://github.com/relikd/baRSS/compare/v1.1.0...v1.1.1 [1.1.1]: https://github.com/relikd/baRSS/compare/v1.1.0...v1.1.1

View File

@@ -1 +0,0 @@
github "relikd/RSXML2" "v2.0.1"

View File

@@ -1 +0,0 @@
github "relikd/RSXML2" "v2.0.1"

View File

@@ -42,18 +42,20 @@ Go to [releases](https://github.com/relikd/baRSS/releases) and downloaded the la
Searching for the App Store release? Read this [notice](#app-store-notice). Searching for the App Store release? Read this [notice](#app-store-notice).
### Build from source ### Build from source
You'll need Xcode and [Carthage](https://github.com/Carthage/Carthage#installing-carthage). You'll need Xcode, [RSXML2] \(required), and [QLOPML] \(optional).
The latter is optional, you can build the [RSXML2] library from source instead.
Carthage just makes it more convenient. ```sh
Download and unzip this project, navigate to the root folder and run `carthage bootstrap --platform macOS`. git clone https://github.com/relikd/baRSS
git clone https://github.com/relikd/RSXML2
git clone https://github.com/relikd/QLOPML
```
Next, you need to clone [QLOPML](https://github.com/relikd/QLOPML) in the same folder where this project is.
Alternatively, you can simply delete the `QLOPML` project reference without much harm. Alternatively, you can simply delete the `QLOPML` project reference without much harm.
`QLOPML` is a Quick Look plugin for `.opml` files. `QLOPML` is a Quick Look plugin for `.opml` files.
It will display the file contents whenever you hit spacebar. It will display the file contents whenever you hit spacebar.
That's it. That's it.
Open Xcode and build the project. Open `baRSS/baRSS.xcodeproj` and build the project.
Note, there are some compiler flags that append 'beta' to the development release. Note, there are some compiler flags that append 'beta' to the development release.
If you prefer the optimized release version go to `Product > Archive`. If you prefer the optimized release version go to `Product > Archive`.
@@ -165,7 +167,7 @@ But on the other hand, now it is macOS 10.12 compatible.
### 3rd Party Libraries ### 3rd Party Libraries
This project uses a modified version of Brent Simmons' [RSXML](https://github.com/brentsimmons/RSXML) for feed parsing. This project uses a modified version of Brent Simmons' [RSXML] for feed parsing.
[RSXML2] is licensed under a MIT license (same as this project). [RSXML2] is licensed under a MIT license (same as this project).
@@ -176,4 +178,6 @@ This project uses a modified version of Brent Simmons' [RSXML](https://github.co
- First prototype used __feedparser python__ library - First prototype used __feedparser python__ library
[QLOPML]: https://github.com/relikd/QLOPML
[RSXML2]: https://github.com/relikd/RSXML2 [RSXML2]: https://github.com/relikd/RSXML2
[RSXML]: https://github.com/brentsimmons/RSXML

View File

@@ -14,9 +14,6 @@
54209E942117325100F3B5EF /* DrawImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 54209E932117325100F3B5EF /* DrawImage.m */; }; 54209E942117325100F3B5EF /* DrawImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 54209E932117325100F3B5EF /* DrawImage.m */; };
544B011A2114B41200386E5C /* ModalSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = 544B01192114B41200386E5C /* ModalSheet.m */; }; 544B011A2114B41200386E5C /* ModalSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = 544B01192114B41200386E5C /* ModalSheet.m */; };
544B011D2114EE9100386E5C /* AppHook.m in Sources */ = {isa = PBXBuildFile; fileRef = 544B011C2114EE9100386E5C /* AppHook.m */; }; 544B011D2114EE9100386E5C /* AppHook.m in Sources */ = {isa = PBXBuildFile; fileRef = 544B011C2114EE9100386E5C /* AppHook.m */; };
544DCCB9212A2B4D002DBC46 /* RSXML2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 544DCCB8212A2B4D002DBC46 /* RSXML2.framework */; };
544DCCBA212A2B4D002DBC46 /* RSXML2.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 544DCCB8212A2B4D002DBC46 /* RSXML2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
544DCCBE212A2B6F002DBC46 /* RSXML2.framework.dSYM in CopyFiles */ = {isa = PBXBuildFile; fileRef = 544DCCBD212A2B6F002DBC46 /* RSXML2.framework.dSYM */; };
54501010230E9C8600F0B165 /* FeedDownload.m in Sources */ = {isa = PBXBuildFile; fileRef = 5450100F230E9C8600F0B165 /* FeedDownload.m */; }; 54501010230E9C8600F0B165 /* FeedDownload.m in Sources */ = {isa = PBXBuildFile; fileRef = 5450100F230E9C8600F0B165 /* FeedDownload.m */; };
546A6A2922C583390034E806 /* SettingsGeneralView.m in Sources */ = {isa = PBXBuildFile; fileRef = 54D857D122802309001BA1C8 /* SettingsGeneralView.m */; }; 546A6A2922C583390034E806 /* SettingsGeneralView.m in Sources */ = {isa = PBXBuildFile; fileRef = 54D857D122802309001BA1C8 /* SettingsGeneralView.m */; };
546A6A2C22C584AF0034E806 /* SettingsAppearanceView.m in Sources */ = {isa = PBXBuildFile; fileRef = 546A6A2A22C584AF0034E806 /* SettingsAppearanceView.m */; }; 546A6A2C22C584AF0034E806 /* SettingsAppearanceView.m in Sources */ = {isa = PBXBuildFile; fileRef = 546A6A2A22C584AF0034E806 /* SettingsAppearanceView.m */; };
@@ -25,6 +22,8 @@
546FC44321189975007CC3A3 /* SettingsGeneral.m in Sources */ = {isa = PBXBuildFile; fileRef = 546FC44121189975007CC3A3 /* SettingsGeneral.m */; }; 546FC44321189975007CC3A3 /* SettingsGeneral.m in Sources */ = {isa = PBXBuildFile; fileRef = 546FC44121189975007CC3A3 /* SettingsGeneral.m */; };
5477D34E21233C62002BA27F /* FeedGroup+Ext.m in Sources */ = {isa = PBXBuildFile; fileRef = 5477D34D21233C62002BA27F /* FeedGroup+Ext.m */; }; 5477D34E21233C62002BA27F /* FeedGroup+Ext.m in Sources */ = {isa = PBXBuildFile; fileRef = 5477D34D21233C62002BA27F /* FeedGroup+Ext.m */; };
5478DF04225A7AE200D30C64 /* SettingsFeedsView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5478DF03225A7AE200D30C64 /* SettingsFeedsView.m */; }; 5478DF04225A7AE200D30C64 /* SettingsFeedsView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5478DF03225A7AE200D30C64 /* SettingsFeedsView.m */; };
5483296C2A3CDC38000688B9 /* RSXML2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 548329652A3CDB22000688B9 /* RSXML2.framework */; };
5483296D2A3CDC38000688B9 /* RSXML2.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 548329652A3CDB22000688B9 /* RSXML2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
548C6D0A230C33DE003A1AAF /* NSURL+Ext.m in Sources */ = {isa = PBXBuildFile; fileRef = 548C6D09230C33DE003A1AAF /* NSURL+Ext.m */; }; 548C6D0A230C33DE003A1AAF /* NSURL+Ext.m in Sources */ = {isa = PBXBuildFile; fileRef = 548C6D09230C33DE003A1AAF /* NSURL+Ext.m */; };
5491005D2331435E00858AE2 /* Download3rdParty.m in Sources */ = {isa = PBXBuildFile; fileRef = 5491005C2331435E00858AE2 /* Download3rdParty.m */; }; 5491005D2331435E00858AE2 /* Download3rdParty.m in Sources */ = {isa = PBXBuildFile; fileRef = 5491005C2331435E00858AE2 /* Download3rdParty.m */; };
54910067233A4D4000858AE2 /* URLScheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 54910066233A4D4000858AE2 /* URLScheme.m */; }; 54910067233A4D4000858AE2 /* URLScheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 54910066233A4D4000858AE2 /* URLScheme.m */; };
@@ -59,6 +58,20 @@
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
548329642A3CDB22000688B9 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 5483295E2A3CDB22000688B9 /* RSXML2.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 84F22C0D1B52DDEA000060CE;
remoteInfo = RSXML2;
};
548329662A3CDB22000688B9 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 5483295E2A3CDB22000688B9 /* RSXML2.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 84F22C171B52DDEA000060CE;
remoteInfo = RSXML2Tests;
};
54A2D63722EF8193007C61F3 /* PBXContainerItemProxy */ = { 54A2D63722EF8193007C61F3 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = 54A2D62E22EF8183007C61F3 /* QLOPML.xcodeproj */; containerPortal = 54A2D62E22EF8183007C61F3 /* QLOPML.xcodeproj */;
@@ -75,7 +88,7 @@
dstPath = ""; dstPath = "";
dstSubfolderSpec = 10; dstSubfolderSpec = 10;
files = ( files = (
544DCCBA212A2B4D002DBC46 /* RSXML2.framework in Embed Frameworks */, 5483296D2A3CDC38000688B9 /* RSXML2.framework in Embed Frameworks */,
); );
name = "Embed Frameworks"; name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@@ -86,7 +99,6 @@
dstPath = ""; dstPath = "";
dstSubfolderSpec = 16; dstSubfolderSpec = 16;
files = ( files = (
544DCCBE212A2B6F002DBC46 /* RSXML2.framework.dSYM in CopyFiles */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -119,8 +131,6 @@
544B01192114B41200386E5C /* ModalSheet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ModalSheet.m; sourceTree = "<group>"; }; 544B01192114B41200386E5C /* ModalSheet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ModalSheet.m; sourceTree = "<group>"; };
544B011B2114EE9100386E5C /* AppHook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppHook.h; sourceTree = "<group>"; }; 544B011B2114EE9100386E5C /* AppHook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppHook.h; sourceTree = "<group>"; };
544B011C2114EE9100386E5C /* AppHook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppHook.m; sourceTree = "<group>"; }; 544B011C2114EE9100386E5C /* AppHook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppHook.m; sourceTree = "<group>"; };
544DCCB8212A2B4D002DBC46 /* RSXML2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RSXML2.framework; path = Carthage/Build/Mac/RSXML2.framework; sourceTree = "<group>"; };
544DCCBD212A2B6F002DBC46 /* RSXML2.framework.dSYM */ = {isa = PBXFileReference; lastKnownFileType = wrapper.dsym; name = RSXML2.framework.dSYM; path = Carthage/Build/Mac/RSXML2.framework.dSYM; sourceTree = "<group>"; };
5450100E230E9C8600F0B165 /* FeedDownload.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FeedDownload.h; sourceTree = "<group>"; }; 5450100E230E9C8600F0B165 /* FeedDownload.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FeedDownload.h; sourceTree = "<group>"; };
5450100F230E9C8600F0B165 /* FeedDownload.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FeedDownload.m; sourceTree = "<group>"; }; 5450100F230E9C8600F0B165 /* FeedDownload.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FeedDownload.m; sourceTree = "<group>"; };
546A6A2A22C584AF0034E806 /* SettingsAppearanceView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsAppearanceView.m; sourceTree = "<group>"; }; 546A6A2A22C584AF0034E806 /* SettingsAppearanceView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsAppearanceView.m; sourceTree = "<group>"; };
@@ -135,6 +145,7 @@
5477D34D21233C62002BA27F /* FeedGroup+Ext.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "FeedGroup+Ext.m"; sourceTree = "<group>"; }; 5477D34D21233C62002BA27F /* FeedGroup+Ext.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "FeedGroup+Ext.m"; sourceTree = "<group>"; };
5478DF02225A7AE200D30C64 /* SettingsFeedsView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SettingsFeedsView.h; sourceTree = "<group>"; }; 5478DF02225A7AE200D30C64 /* SettingsFeedsView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SettingsFeedsView.h; sourceTree = "<group>"; };
5478DF03225A7AE200D30C64 /* SettingsFeedsView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SettingsFeedsView.m; sourceTree = "<group>"; }; 5478DF03225A7AE200D30C64 /* SettingsFeedsView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SettingsFeedsView.m; sourceTree = "<group>"; };
5483295E2A3CDB22000688B9 /* RSXML2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSXML2.xcodeproj; path = ../RSXML2/RSXML2.xcodeproj; sourceTree = "<group>"; };
54892F1D2235285700271CBA /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = "<group>"; }; 54892F1D2235285700271CBA /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = "<group>"; };
548C6D08230C33DE003A1AAF /* NSURL+Ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSURL+Ext.h"; sourceTree = "<group>"; }; 548C6D08230C33DE003A1AAF /* NSURL+Ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSURL+Ext.h"; sourceTree = "<group>"; };
548C6D09230C33DE003A1AAF /* NSURL+Ext.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSURL+Ext.m"; sourceTree = "<group>"; }; 548C6D09230C33DE003A1AAF /* NSURL+Ext.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSURL+Ext.m"; sourceTree = "<group>"; };
@@ -204,7 +215,7 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
544DCCB9212A2B4D002DBC46 /* RSXML2.framework in Frameworks */, 5483296C2A3CDC38000688B9 /* RSXML2.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -247,15 +258,6 @@
path = NSCategories; path = NSCategories;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
544FBD4321064AEB008A260C /* Frameworks */ = {
isa = PBXGroup;
children = (
544DCCB8212A2B4D002DBC46 /* RSXML2.framework */,
544DCCBD212A2B6F002DBC46 /* RSXML2.framework.dSYM */,
);
name = Frameworks;
sourceTree = "<group>";
};
546FC44D2118B357007CC3A3 /* Preferences */ = { 546FC44D2118B357007CC3A3 /* Preferences */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -271,6 +273,15 @@
path = Preferences; path = Preferences;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
5483295F2A3CDB22000688B9 /* Products */ = {
isa = PBXGroup;
children = (
548329652A3CDB22000688B9 /* RSXML2.framework */,
548329672A3CDB22000688B9 /* RSXML2Tests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
54A07A8322105E0800082C51 /* Core Data */ = { 54A07A8322105E0800082C51 /* Core Data */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -305,8 +316,8 @@
54892F1D2235285700271CBA /* CHANGELOG.md */, 54892F1D2235285700271CBA /* CHANGELOG.md */,
54ACC27E21061B3B0020715F /* baRSS */, 54ACC27E21061B3B0020715F /* baRSS */,
54A2D62E22EF8183007C61F3 /* QLOPML.xcodeproj */, 54A2D62E22EF8183007C61F3 /* QLOPML.xcodeproj */,
5483295E2A3CDB22000688B9 /* RSXML2.xcodeproj */,
54ACC27D21061B3B0020715F /* Products */, 54ACC27D21061B3B0020715F /* Products */,
544FBD4321064AEB008A260C /* Frameworks */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
}; };
@@ -498,6 +509,10 @@
ProductGroup = 54A2D63422EF8193007C61F3 /* Products */; ProductGroup = 54A2D63422EF8193007C61F3 /* Products */;
ProjectRef = 54A2D62E22EF8183007C61F3 /* QLOPML.xcodeproj */; ProjectRef = 54A2D62E22EF8183007C61F3 /* QLOPML.xcodeproj */;
}, },
{
ProductGroup = 5483295F2A3CDB22000688B9 /* Products */;
ProjectRef = 5483295E2A3CDB22000688B9 /* RSXML2.xcodeproj */;
},
); );
projectRoot = ""; projectRoot = "";
targets = ( targets = (
@@ -507,6 +522,20 @@
/* End PBXProject section */ /* End PBXProject section */
/* Begin PBXReferenceProxy section */ /* Begin PBXReferenceProxy section */
548329652A3CDB22000688B9 /* RSXML2.framework */ = {
isa = PBXReferenceProxy;
fileType = wrapper.framework;
path = RSXML2.framework;
remoteRef = 548329642A3CDB22000688B9 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
548329672A3CDB22000688B9 /* RSXML2Tests.xctest */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
path = RSXML2Tests.xctest;
remoteRef = 548329662A3CDB22000688B9 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
54A2D63822EF8193007C61F3 /* QLOPML.qlgenerator */ = { 54A2D63822EF8193007C61F3 /* QLOPML.qlgenerator */ = {
isa = PBXReferenceProxy; isa = PBXReferenceProxy;
fileType = wrapper.cfbundle; fileType = wrapper.cfbundle;
@@ -754,7 +783,6 @@
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)", "$(PROJECT_DIR)",
"$(PROJECT_DIR)/Carthage/Build/Mac",
); );
GCC_PREPROCESSOR_DEFINITIONS = ( GCC_PREPROCESSOR_DEFINITIONS = (
"APP_NAME=\"\\@\\\"$(PRODUCT_NAME)\\\"\"", "APP_NAME=\"\\@\\\"$(PRODUCT_NAME)\\\"\"",
@@ -809,7 +837,6 @@
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)", "$(PROJECT_DIR)",
"$(PROJECT_DIR)/Carthage/Build/Mac",
); );
GCC_PREPROCESSOR_DEFINITIONS = ( GCC_PREPROCESSOR_DEFINITIONS = (
"APP_NAME=\"\\@\\\"$(PRODUCT_NAME)\\\"\"", "APP_NAME=\"\\@\\\"$(PRODUCT_NAME)\\\"\"",

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "1200" LastUpgradeVersion = "1240"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"

View File

@@ -45,7 +45,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.2.0</string> <string>1.2.1</string>
<key>CFBundleURLTypes</key> <key>CFBundleURLTypes</key>
<array> <array>
<dict> <dict>
@@ -70,7 +70,7 @@
</dict> </dict>
</array> </array>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>14698</string> <string>14835</string>
<key>LSApplicationCategoryType</key> <key>LSApplicationCategoryType</key>
<string>public.app-category.news</string> <string>public.app-category.news</string>
<key>LSMinimumSystemVersion</key> <key>LSMinimumSystemVersion</key>

View File

@@ -4,7 +4,7 @@
@implementation SettingsAboutView @implementation SettingsAboutView
- (instancetype)init { - (instancetype)init {
self = [super initWithFrame: NSZeroRect]; self = [super initWithFrame:NSMakeRect(0, 0, 320, 327)];
NSDictionary *info = [[NSBundle mainBundle] infoDictionary]; NSDictionary *info = [[NSBundle mainBundle] infoDictionary];
NSString *version = [NSString stringWithFormat:NSLocalizedString(@"Version %@", nil), info[@"CFBundleShortVersionString"]]; NSString *version = [NSString stringWithFormat:NSLocalizedString(@"Version %@", nil), info[@"CFBundleShortVersionString"]];
#if DEBUG // append build number, e.g., '0.9.4 (9906)' #if DEBUG // append build number, e.g., '0.9.4 (9906)'
@@ -33,16 +33,16 @@
NSMutableAttributedString *mas = [NSMutableAttributedString new]; NSMutableAttributedString *mas = [NSMutableAttributedString new];
[mas beginEditing]; [mas beginEditing];
[self str:mas add:@"Programming\n" bold:YES]; [self str:mas add:@"Programming\n" bold:YES];
[self str:mas add:@"Oleg Geier\n\n" bold:NO]; [self str:mas add:@"Oleg Geier\n" bold:NO];
[self str:mas add:@"Source Code Available\n" bold:YES]; [self str:mas add:@"\nSource Code Available\n" bold:YES];
[self str:mas add:@"github.com" link:@"https://github.com/relikd/baRSS"]; [self str:mas add:@"github.com" link:@"https://github.com/relikd/baRSS"];
[self str:mas add:@" (MIT License)\nor " bold:NO]; [self str:mas add:@" (MIT License)\n" bold:NO];
[self str:mas add:@"gitlab.com" link:@"https://gitlab.com/relikd/baRSS"]; [self str:mas add:@"\nLibraries\n" bold:YES];
[self str:mas add:@" (MIT License)\n\n" bold:NO];
[self str:mas add:@"3rd-Party Libraries\n" bold:YES];
[self str:mas add:@"RSXML2" link:@"https://github.com/relikd/RSXML2"]; [self str:mas add:@"RSXML2" link:@"https://github.com/relikd/RSXML2"];
[self str:mas add:@" (MIT License)" bold:NO]; [self str:mas add:@" (MIT License)\n" bold:NO];
[self str:mas add:@"\n\n\n\nOptions\n" bold:YES]; [self str:mas add:@"QLOPML" link:@"https://github.com/relikd/QLOPML"];
[self str:mas add:@" (MIT License)\n" bold:NO];
[self str:mas add:@"\n\n\nOptions\n" bold:YES];
[self str:mas add:@"Fix Cache\n" link:@"barss:config/fixcache"]; [self str:mas add:@"Fix Cache\n" link:@"barss:config/fixcache"];
[self str:mas add:@"Backup now\n" link:@"barss:backup/show"]; [self str:mas add:@"Backup now\n" link:@"barss:backup/show"];
[mas endEditing]; [mas endEditing];

View File

@@ -16,7 +16,7 @@
@implementation SettingsAppearanceView @implementation SettingsAppearanceView
- (instancetype)init { - (instancetype)init {
self = [super initWithFrame: NSZeroRect]; self = [super initWithFrame:NSMakeRect(0, 0, 320, 327)];
// Insert matrix header (icons above checkbox matrix) // Insert matrix header (icons above checkbox matrix)
ColumnIcon(self, X__, RSSImageSettingsGlobal, NSLocalizedString(@"Show in menu bar", nil)); ColumnIcon(self, X__, RSSImageSettingsGlobal, NSLocalizedString(@"Show in menu bar", nil));
ColumnIcon(self, _X_, RSSImageSettingsGroup, NSLocalizedString(@"Show in group menu", nil)); ColumnIcon(self, _X_, RSSImageSettingsGroup, NSLocalizedString(@"Show in group menu", nil));

View File

@@ -14,7 +14,7 @@
NSView *labels = [NSView labelColumn:lbls rowHeight:HEIGHT_INPUTFIELD padding:PAD_S]; NSView *labels = [NSView labelColumn:lbls rowHeight:HEIGHT_INPUTFIELD padding:PAD_S];
self = [super initWithFrame:NSMakeRect(0, 0, 0, NSHeight(labels.frame))]; self = [super initWithFrame:NSMakeRect(0, 0, 320, NSHeight(labels.frame))];
self.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable; self.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
CGFloat x = NSWidth(labels.frame) + PAD_S; CGFloat x = NSWidth(labels.frame) + PAD_S;

View File

@@ -14,7 +14,7 @@
@return Centered view without autoresizing. @return Centered view without autoresizing.
*/ */
- (instancetype)initWithRefreshInterval:(NSDictionary*)info articleCount:(NSUInteger)count callback:(nullable id<RefreshIntervalButtonDelegate>)callback { - (instancetype)initWithRefreshInterval:(NSDictionary*)info articleCount:(NSUInteger)count callback:(nullable id<RefreshIntervalButtonDelegate>)callback {
self = [super initWithFrame:NSZeroRect]; self = [super initWithFrame:NSMakeRect(0, 0, 320, 327)];
self.autoresizesSubviews = NO; self.autoresizesSubviews = NO;
NSTextField *dateView = [self viewForArticlesCount:count latest:info]; NSTextField *dateView = [self viewForArticlesCount:count latest:info];

View File

@@ -13,7 +13,7 @@
@implementation SettingsFeedsView @implementation SettingsFeedsView
- (instancetype)initWithController:(SettingsFeeds*)delegate { - (instancetype)initWithController:(SettingsFeeds*)delegate {
self = [super initWithFrame:NSZeroRect]; self = [super initWithFrame:NSMakeRect(0, 0, 201, 327)];
if (self) { if (self) {
self.controller = delegate; // make sure its first self.controller = delegate; // make sure its first
self.outline = [self generateOutlineView]; // uses self.controller self.outline = [self generateOutlineView]; // uses self.controller
@@ -60,7 +60,7 @@
- (void)setOutlineColumns:(NSOutlineView*)outline { - (void)setOutlineColumns:(NSOutlineView*)outline {
NSTableColumn *colName = [[NSTableColumn alloc] initWithIdentifier:CustomCellName]; NSTableColumn *colName = [[NSTableColumn alloc] initWithIdentifier:CustomCellName];
colName.title = NSLocalizedString(@"Name", nil); colName.title = NSLocalizedString(@"Name", nil);
colName.width = 10000; colName.width = 201;
colName.maxWidth = 10000; colName.maxWidth = 10000;
colName.resizingMask = NSTableColumnAutoresizingMask; colName.resizingMask = NSTableColumnAutoresizingMask;
[outline addTableColumn:colName]; [outline addTableColumn:colName];

View File

@@ -5,7 +5,7 @@
@implementation SettingsGeneralView @implementation SettingsGeneralView
- (instancetype)initWithController:(SettingsGeneral*)controller { - (instancetype)initWithController:(SettingsGeneral*)controller {
self = [super initWithFrame:NSZeroRect]; self = [super initWithFrame:NSMakeRect(0, 0, 320, 327)];
// Change default feed reader application // Change default feed reader application
NSTextField *l1 = [[NSView label:NSLocalizedString(@"Default feed reader:", nil)] placeIn:self x:PAD_WIN yTop:PAD_WIN + 3]; NSTextField *l1 = [[NSView label:NSLocalizedString(@"Default feed reader:", nil)] placeIn:self x:PAD_WIN yTop:PAD_WIN + 3];
NSButton *help = [[[NSView helpButton] action:@selector(clickHowToDefaults:) target:controller] placeIn:self xRight:PAD_WIN yTop:PAD_WIN]; NSButton *help = [[[NSView helpButton] action:@selector(clickHowToDefaults:) target:controller] placeIn:self xRight:PAD_WIN yTop:PAD_WIN];

View File

@@ -16,18 +16,13 @@
if (self) { if (self) {
self.tabStyle = NSTabViewControllerTabStyleToolbar; self.tabStyle = NSTabViewControllerTabStyleToolbar;
self.transitionOptions = NSViewControllerTransitionNone; self.transitionOptions = NSViewControllerTransitionNone;
NSTabViewItem *flexibleWidth = [[NSTabViewItem alloc] initWithIdentifier:NSToolbarFlexibleSpaceItemIdentifier];
flexibleWidth.viewController = [NSViewController new];
self.tabViewItems = @[ self.tabViewItems = @[
TabItem(NSImageNamePreferencesGeneral, NSLocalizedString(@"General", nil), [SettingsGeneral class]), TabItem(NSImageNamePreferencesGeneral, NSLocalizedString(@"General", nil), [SettingsGeneral class]),
TabItem(NSImageNameUserAccounts, NSLocalizedString(@"Feeds", nil), [SettingsFeeds class]), TabItem(NSImageNameUserAccounts, NSLocalizedString(@"Feeds", nil), [SettingsFeeds class]),
TabItem(NSImageNameFontPanel, NSLocalizedString(@"Appearance", nil), [SettingsAppearance class]), TabItem(NSImageNameFontPanel, NSLocalizedString(@"Appearance", nil), [SettingsAppearance class]),
flexibleWidth,
TabItem(NSImageNameInfo, NSLocalizedString(@"About", nil), [SettingsAbout class]), TabItem(NSImageNameInfo, NSLocalizedString(@"About", nil), [SettingsAbout class]),
]; ];
[self switchToTab: UserPrefsUInt(Pref_prefSelectedTab)]; self.selectedTabViewItemIndex = -1;
} }
return self; return self;
} }
@@ -43,19 +38,16 @@ static inline NSTabViewItem* TabItem(NSImageName imageName, NSString *text, Clas
/// Safely set selected index without out of bounds exception /// Safely set selected index without out of bounds exception
- (__kindof NSViewController*)switchToTab:(NSUInteger)index { - (__kindof NSViewController*)switchToTab:(NSUInteger)index {
if (index < 0 || index >= self.tabViewItems.count) if (index < 0 || index >= self.tabViewItems.count)
return nil; index = 0;
NSTabViewItem *tab = self.tabViewItems[index];
if (tab.identifier == NSToolbarFlexibleSpaceItemIdentifier)
return nil;
self.selectedTabViewItemIndex = (NSInteger)index; self.selectedTabViewItemIndex = (NSInteger)index;
return [tab viewController]; return [self.tabViewItems[index] viewController];
} }
/// Delegate method, store last selected tab to user preferences /// Delegate method, store last selected tab to user preferences
- (void)tabView:(NSTabView*)tabView didSelectTabViewItem:(nullable NSTabViewItem*)tabViewItem { - (void)tabView:(NSTabView*)tabView didSelectTabViewItem:(nullable NSTabViewItem*)tabViewItem {
[super tabView:tabView didSelectTabViewItem:tabViewItem]; [super tabView:tabView didSelectTabViewItem:tabViewItem];
NSInteger newIndex = self.selectedTabViewItemIndex; NSInteger newIndex = self.selectedTabViewItemIndex;
if (UserPrefsInt(Pref_prefSelectedTab) != newIndex) if (newIndex != -1 && UserPrefsInt(Pref_prefSelectedTab) != newIndex)
UserPrefsSetInt(Pref_prefSelectedTab, newIndex); UserPrefsSetInt(Pref_prefSelectedTab, newIndex);
} }
@@ -70,7 +62,10 @@ static inline NSTabViewItem* TabItem(NSImageName imageName, NSString *text, Clas
w.contentMinSize = NSMakeSize(320, 327); w.contentMinSize = NSMakeSize(320, 327);
w.windowController.shouldCascadeWindows = YES; w.windowController.shouldCascadeWindows = YES;
w.title = [NSString stringWithFormat:NSLocalizedString(@"%@ Preferences", nil), NSProcessInfo.processInfo.processName]; w.title = [NSString stringWithFormat:NSLocalizedString(@"%@ Preferences", nil), NSProcessInfo.processInfo.processName];
w.contentViewController = [PrefTabs new]; PrefTabs *tabController = [PrefTabs new];
w.contentViewController = tabController;
[w.toolbar insertItemWithItemIdentifier:NSToolbarSpaceItemIdentifier atIndex:3];
[w.toolbar insertItemWithItemIdentifier:NSToolbarFlexibleSpaceItemIdentifier atIndex:4];
w.delegate = w; w.delegate = w;
NSWindowPersistableFrameDescriptor prevFrame = UserPrefsString(Pref_prefWindowFrame); NSWindowPersistableFrameDescriptor prevFrame = UserPrefsString(Pref_prefWindowFrame);
if (!prevFrame) { if (!prevFrame) {
@@ -79,6 +74,7 @@ static inline NSTabViewItem* TabItem(NSImageName imageName, NSString *text, Clas
} else { } else {
[w setFrameFromString:prevFrame]; [w setFrameFromString:prevFrame];
} }
[tabController switchToTab:UserPrefsUInt(Pref_prefSelectedTab)];
return w; return w;
} }