├── .gitattributes
├── .gitignore
├── Pictures
├── image_github_w1920.png
├── notification_1.png
├── notification_2.png
├── status_bar.png
├── tab_notification.png
├── tab_pie_1.png
├── tab_pie_2.png
├── tab_profile.png
├── tab_trend_1.png
├── tab_trend_2.png
├── tab_trending.png
└── vc_settings.png
├── Podfile
├── README.md
├── VHGithubNotifier-Bridging-Header.h
├── VHGithubNotifier.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── xcuserdata
│ └── huangweiping.xcuserdatad
│ ├── xcdebugger
│ └── Breakpoints_v2.xcbkptlist
│ └── xcschemes
│ ├── VHGithubNotifier.xcscheme
│ └── xcschememanagement.plist
├── VHGithubNotifier.xcworkspace
├── contents.xcworkspacedata
├── xcshareddata
│ └── VHGithubNotifier.xcscmblueprint
└── xcuserdata
│ └── huangweiping.xcuserdatad
│ └── xcdebugger
│ ├── Breakpoints_v2.xcbkptlist
│ └── Expressions.xcexplist
└── VHGithubNotifier
├── AppDelegate.h
├── AppDelegate.m
├── Assets.xcassets
├── AppIcon.appiconset
│ ├── Contents.json
│ ├── icon_app_128@1x.png
│ ├── icon_app_128@2x.png
│ ├── icon_app_16@1x.png
│ ├── icon_app_16@2x.png
│ ├── icon_app_256@1x.png
│ ├── icon_app_256@2x.png
│ ├── icon_app_32@1x.png
│ ├── icon_app_32@2x.png
│ ├── icon_app_512@1x.png
│ └── icon_app_512@2x.png
├── Contents.json
├── icon_cancel.imageset
│ ├── Contents.json
│ ├── icon_cancel.png
│ ├── icon_cancel@2x.png
│ └── icon_cancel@3x.png
├── icon_done.imageset
│ ├── Contents.json
│ ├── icon_done.png
│ ├── icon_done@2x.png
│ └── icon_done@3x.png
├── icon_empty_trending.imageset
│ ├── Contents.json
│ └── icon_empty_trending.png
├── icon_error.imageset
│ ├── Contents.json
│ └── icon_error.png
├── icon_exit.imageset
│ ├── Contents.json
│ ├── icon_exit.png
│ ├── icon_exit@2x.png
│ └── icon_exit@3x.png
├── icon_follower.imageset
│ ├── Contents.json
│ ├── icon_follower@1x.png
│ ├── icon_follower@2x.png
│ └── icon_follower@3x.png
├── icon_follower_dark.imageset
│ ├── Contents.json
│ ├── icon_follower_dark@1x.png
│ ├── icon_follower_dark@2x.png
│ └── icon_follower_dark@3x.png
├── icon_follower_pressed.imageset
│ ├── Contents.json
│ ├── icon_follower_pressed@1x.png
│ ├── icon_follower_pressed@2x.png
│ └── icon_follower_pressed@3x.png
├── icon_github.imageset
│ ├── Contents.json
│ ├── icon_github@1x.png
│ ├── icon_github@2x.png
│ └── icon_github@3x.png
├── icon_github_url.imageset
│ ├── Contents.json
│ ├── icon_github_url.png
│ ├── icon_github_url@2x.png
│ └── icon_github_url@3x.png
├── icon_language.imageset
│ ├── Contents.json
│ ├── icon_language.png
│ ├── icon_language@2x.png
│ └── icon_language@3x.png
├── icon_language_dot.imageset
│ ├── Contents.json
│ ├── icon_language_dot.png
│ ├── icon_language_dot@2x.png
│ └── icon_language_dot@3x.png
├── icon_login.imageset
│ ├── Contents.json
│ ├── icon_login.png
│ ├── icon_login@2x.png
│ └── icon_login@3x.png
├── icon_notification.imageset
│ ├── Contents.json
│ ├── icon_notification.png
│ ├── icon_notification@2x.png
│ └── icon_notification@3x.png
├── icon_open_url.imageset
│ ├── Contents.json
│ ├── icon_open_url.png
│ ├── icon_open_url@2x.png
│ └── icon_open_url@3x.png
├── icon_profile.imageset
│ ├── Contents.json
│ ├── icon_profile.png
│ ├── icon_profile@2x.png
│ └── icon_profile@3x.png
├── icon_read.imageset
│ ├── Contents.json
│ └── icon_read@2x.png
├── icon_refresh.imageset
│ ├── Contents.json
│ ├── icon_refresh.png
│ ├── icon_refresh@2x.png
│ └── icon_refresh@3x.png
├── icon_repository_fork.imageset
│ ├── Contents.json
│ └── icon_repository_fork@2x.png
├── icon_repository_pie.imageset
│ ├── Contents.json
│ ├── icon_repository_pie.png
│ ├── icon_repository_pie@2x.png
│ └── icon_repository_pie@3x.png
├── icon_repository_star.imageset
│ ├── Contents.json
│ └── icon_repository_star@2x.png
├── icon_settings.imageset
│ ├── Contents.json
│ ├── icon_settings.png
│ ├── icon_settings@2x.png
│ └── icon_settings@3x.png
├── icon_star.imageset
│ ├── Contents.json
│ ├── icon_star@1x.png
│ ├── icon_star@2x.png
│ └── icon_star@3x.png
├── icon_star_dark.imageset
│ ├── Contents.json
│ ├── icon_star_dark@1x.png
│ ├── icon_star_dark@2x.png
│ └── icon_star_dark@3x.png
├── icon_star_pressed.imageset
│ ├── Contents.json
│ ├── icon_star_pressed@1x.png
│ ├── icon_star_pressed@2x.png
│ └── icon_star_pressed@3x.png
├── icon_status_bar_github.imageset
│ ├── Contents.json
│ ├── icon_status_bar_github.png
│ ├── icon_status_bar_github@2x.png
│ └── icon_status_bar_github@3x.png
├── icon_status_bar_github_dark.imageset
│ ├── Contents.json
│ ├── icon_status_bar_github_dark.png
│ ├── icon_status_bar_github_dark@2x.png
│ └── icon_status_bar_github_dark@3x.png
├── icon_status_bar_github_pressed.imageset
│ ├── Contents.json
│ ├── icon_status_bar_github_pressed.png
│ ├── icon_status_bar_github_pressed@2x.png
│ └── icon_status_bar_github_pressed@3x.png
├── icon_status_bar_notification.imageset
│ ├── Contents.json
│ ├── icon_status_bar_notification.png
│ ├── icon_status_bar_notification@2x.png
│ └── icon_status_bar_notification@3x.png
├── icon_status_bar_notification_dark.imageset
│ ├── Contents.json
│ ├── icon_status_bar_notification_dark.png
│ ├── icon_status_bar_notification_dark@2x.png
│ └── icon_status_bar_notification_dark@3x.png
├── icon_status_bar_notification_pressed.imageset
│ ├── Contents.json
│ ├── icon_status_bar_notification_pressed.png
│ ├── icon_status_bar_notification_pressed@2x.png
│ └── icon_status_bar_notification_pressed@3x.png
├── icon_time.imageset
│ ├── Contents.json
│ ├── icon_time.png
│ ├── icon_time@2x.png
│ └── icon_time@3x.png
├── icon_trend.imageset
│ ├── Contents.json
│ ├── icon_trend.png
│ ├── icon_trend@2x.png
│ └── icon_trend@3x.png
├── icon_trend_followers.imageset
│ ├── Contents.json
│ ├── icon_trend_followers.png
│ ├── icon_trend_followers@2x.png
│ └── icon_trend_followers@3x.png
├── icon_trend_repository.imageset
│ ├── Contents.json
│ ├── icon_trend_repository.png
│ ├── icon_trend_repository@2x.png
│ └── icon_trend_repository@3x.png
├── icon_trending.imageset
│ ├── Contents.json
│ ├── icon_trending.png
│ ├── icon_trending@2x.png
│ └── icon_trending@3x.png
├── icon_unsubscribe.imageset
│ ├── Contents.json
│ └── icon_unsubscribe@2x.png
├── icon_user_placeholder.imageset
│ ├── Contents.json
│ ├── icon_user_placeholder.png
│ ├── icon_user_placeholder@2x.png
│ └── icon_user_placeholder@3x.png
├── image_account_info_window.imageset
│ ├── Contents.json
│ └── image_account_info_window.png
├── image_empty_notification.imageset
│ ├── Contents.json
│ └── image_empty_notification.png
├── image_issue.imageset
│ ├── Contents.json
│ └── image_issue.png
├── image_notification.imageset
│ ├── Contents.json
│ └── image_notification.png
├── image_pull_request.imageset
│ ├── Contents.json
│ └── image_pull_request.png
├── image_scroller.imageset
│ ├── Contents.json
│ └── image_scroller.png
└── image_scroller_pressed.imageset
│ ├── Contents.json
│ └── image_scroller_pressed.png
├── Assets
└── echarts.js
├── Base.lproj
└── Main.storyboard
├── Charts
├── Charts.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ ├── xcshareddata
│ │ └── xcschemes
│ │ │ ├── Charts.xcscheme
│ │ │ ├── ChartsRealm.xcscheme
│ │ │ └── ChartsTests.xcscheme
│ └── xcuserdata
│ │ └── huangweiping.xcuserdatad
│ │ └── xcschemes
│ │ └── xcschememanagement.plist
└── Source
│ ├── Charts
│ ├── Animation
│ │ ├── Animator.swift
│ │ └── ChartAnimationEasing.swift
│ ├── Charts
│ │ ├── BarChartView.swift
│ │ ├── BarLineChartViewBase.swift
│ │ ├── BubbleChartView.swift
│ │ ├── CandleStickChartView.swift
│ │ ├── ChartViewBase.swift
│ │ ├── CombinedChartView.swift
│ │ ├── HorizontalBarChartView.swift
│ │ ├── LineChartView.swift
│ │ ├── PieChartView.swift
│ │ ├── PieRadarChartViewBase.swift
│ │ ├── RadarChartView.swift
│ │ └── ScatterChartView.swift
│ ├── Components
│ │ ├── AxisBase.swift
│ │ ├── ChartLimitLine.swift
│ │ ├── ComponentBase.swift
│ │ ├── Description.swift
│ │ ├── IMarker.swift
│ │ ├── Legend.swift
│ │ ├── LegendEntry.swift
│ │ ├── MarkerImage.swift
│ │ ├── MarkerView.swift
│ │ ├── XAxis.swift
│ │ └── YAxis.swift
│ ├── Data
│ │ ├── Implementations
│ │ │ ├── ChartBaseDataSet.swift
│ │ │ └── Standard
│ │ │ │ ├── BarChartData.swift
│ │ │ │ ├── BarChartDataEntry.swift
│ │ │ │ ├── BarChartDataSet.swift
│ │ │ │ ├── BarLineScatterCandleBubbleChartData.swift
│ │ │ │ ├── BarLineScatterCandleBubbleChartDataSet.swift
│ │ │ │ ├── BubbleChartData.swift
│ │ │ │ ├── BubbleChartDataEntry.swift
│ │ │ │ ├── BubbleChartDataSet.swift
│ │ │ │ ├── CandleChartData.swift
│ │ │ │ ├── CandleChartDataEntry.swift
│ │ │ │ ├── CandleChartDataSet.swift
│ │ │ │ ├── ChartData.swift
│ │ │ │ ├── ChartDataEntry.swift
│ │ │ │ ├── ChartDataEntryBase.swift
│ │ │ │ ├── ChartDataSet.swift
│ │ │ │ ├── CombinedChartData.swift
│ │ │ │ ├── LineChartData.swift
│ │ │ │ ├── LineChartDataSet.swift
│ │ │ │ ├── LineRadarChartDataSet.swift
│ │ │ │ ├── LineScatterCandleRadarChartDataSet.swift
│ │ │ │ ├── PieChartData.swift
│ │ │ │ ├── PieChartDataEntry.swift
│ │ │ │ ├── PieChartDataSet.swift
│ │ │ │ ├── RadarChartData.swift
│ │ │ │ ├── RadarChartDataEntry.swift
│ │ │ │ ├── RadarChartDataSet.swift
│ │ │ │ ├── ScatterChartData.swift
│ │ │ │ └── ScatterChartDataSet.swift
│ │ └── Interfaces
│ │ │ ├── IBarChartDataSet.swift
│ │ │ ├── IBarLineScatterCandleBubbleChartDataSet.swift
│ │ │ ├── IBubbleChartDataSet.swift
│ │ │ ├── ICandleChartDataSet.swift
│ │ │ ├── IChartDataSet.swift
│ │ │ ├── ILineChartDataSet.swift
│ │ │ ├── ILineRadarChartDataSet.swift
│ │ │ ├── ILineScatterCandleRadarChartDataSet.swift
│ │ │ ├── IPieChartDataSet.swift
│ │ │ ├── IRadarChartDataSet.swift
│ │ │ └── IScatterChartDataSet.swift
│ ├── Filters
│ │ └── DataApproximator.swift
│ ├── Formatters
│ │ ├── DefaultAxisValueFormatter.swift
│ │ ├── DefaultFillFormatter.swift
│ │ ├── DefaultValueFormatter.swift
│ │ ├── IAxisValueFormatter.swift
│ │ ├── IFillFormatter.swift
│ │ ├── IValueFormatter.swift
│ │ └── IndexAxisValueFormatter.swift
│ ├── Highlight
│ │ ├── BarHighlighter.swift
│ │ ├── ChartHighlighter.swift
│ │ ├── CombinedHighlighter.swift
│ │ ├── Highlight.swift
│ │ ├── HorizontalBarHighlighter.swift
│ │ ├── IHighlighter.swift
│ │ ├── PieHighlighter.swift
│ │ ├── PieRadarHighlighter.swift
│ │ ├── RadarHighlighter.swift
│ │ └── Range.swift
│ ├── Interfaces
│ │ ├── BarChartDataProvider.swift
│ │ ├── BarLineScatterCandleBubbleChartDataProvider.swift
│ │ ├── BubbleChartDataProvider.swift
│ │ ├── CandleChartDataProvider.swift
│ │ ├── ChartDataProvider.swift
│ │ ├── CombinedChartDataProvider.swift
│ │ ├── LineChartDataProvider.swift
│ │ └── ScatterChartDataProvider.swift
│ ├── Jobs
│ │ ├── AnimatedMoveViewJob.swift
│ │ ├── AnimatedViewPortJob.swift
│ │ ├── AnimatedZoomViewJob.swift
│ │ ├── MoveViewJob.swift
│ │ ├── ViewPortJob.swift
│ │ └── ZoomViewJob.swift
│ ├── Renderers
│ │ ├── AxisRendererBase.swift
│ │ ├── BarChartRenderer.swift
│ │ ├── BarLineScatterCandleBubbleRenderer.swift
│ │ ├── BubbleChartRenderer.swift
│ │ ├── CandleStickChartRenderer.swift
│ │ ├── ChartDataRendererBase.swift
│ │ ├── CombinedChartRenderer.swift
│ │ ├── HorizontalBarChartRenderer.swift
│ │ ├── LegendRenderer.swift
│ │ ├── LineChartRenderer.swift
│ │ ├── LineRadarRenderer.swift
│ │ ├── LineScatterCandleRadarRenderer.swift
│ │ ├── PieChartRenderer.swift
│ │ ├── RadarChartRenderer.swift
│ │ ├── Renderer.swift
│ │ ├── Scatter
│ │ │ ├── ChevronDownShapeRenderer.swift
│ │ │ ├── ChevronUpShapeRenderer.swift
│ │ │ ├── CircleShapeRenderer.swift
│ │ │ ├── CrossShapeRenderer.swift
│ │ │ ├── IShapeRenderer.swift
│ │ │ ├── SquareShapeRenderer.swift
│ │ │ ├── TriangleShapeRenderer.swift
│ │ │ └── XShapeRenderer.swift
│ │ ├── ScatterChartRenderer.swift
│ │ ├── XAxisRenderer.swift
│ │ ├── XAxisRendererHorizontalBarChart.swift
│ │ ├── XAxisRendererRadarChart.swift
│ │ ├── YAxisRenderer.swift
│ │ ├── YAxisRendererHorizontalBarChart.swift
│ │ └── YAxisRendererRadarChart.swift
│ └── Utils
│ │ ├── ChartColorTemplates.swift
│ │ ├── ChartUtils.swift
│ │ ├── Fill.swift
│ │ ├── Platform.swift
│ │ ├── Transformer.swift
│ │ ├── TransformerHorizontalBarChart.swift
│ │ └── ViewPortHandler.swift
│ └── Supporting Files
│ ├── Charts.h
│ ├── ChartsRealm.h
│ └── Info.plist
├── Info.plist
├── Model
├── Manager
│ ├── VHGithubNotifierManager+ChartDataProvider.h
│ ├── VHGithubNotifierManager+ChartDataProvider.m
│ ├── VHGithubNotifierManager+Language.h
│ ├── VHGithubNotifierManager+Language.m
│ ├── VHGithubNotifierManager+Notification.h
│ ├── VHGithubNotifierManager+Notification.m
│ ├── VHGithubNotifierManager+Profile.h
│ ├── VHGithubNotifierManager+Profile.m
│ ├── VHGithubNotifierManager+Realm.h
│ ├── VHGithubNotifierManager+Realm.m
│ ├── VHGithubNotifierManager+Trend.h
│ ├── VHGithubNotifierManager+Trend.m
│ ├── VHGithubNotifierManager+Trending.h
│ ├── VHGithubNotifierManager+Trending.m
│ ├── VHGithubNotifierManager+UserDefault.h
│ ├── VHGithubNotifierManager+UserDefault.m
│ ├── VHGithubNotifierManager+UserNotification.h
│ ├── VHGithubNotifierManager+UserNotification.m
│ ├── VHGithubNotifierManager.h
│ ├── VHGithubNotifierManager.m
│ └── VHGithubNotifierManager_Private.h
├── VHContributionBlock.h
├── VHContributionBlock.m
├── VHContributionChartDrawer.h
├── VHContributionChartDrawer.m
├── VHContributionChartFaceDrawer.h
├── VHContributionChartFaceDrawer.m
├── VHGithubNotifierEnums.h
├── VHHTTPResponseSerializer.h
├── VHHTTPResponseSerializer.m
├── VHLanguage.h
├── VHLanguage.m
├── VHNotification.h
├── VHNotification.m
├── VHNotificationRecord.h
├── VHNotificationRecord.m
├── VHRecord.h
├── VHRecord.m
├── VHRepository.h
├── VHRepository.m
├── VHSimpleRepository.h
├── VHSimpleRepository.m
├── VHTrendChartParser.h
├── VHTrendChartParser.m
├── VHTrendingRepository.h
├── VHTrendingRepository.m
├── VHUser.h
└── VHUser.m
├── Utils
├── AFAutoPurgingImageCache.h
├── AFAutoPurgingImageCache.m
├── AFImageDownloader.h
├── AFImageDownloader.m
├── CNUserNotification
│ ├── AppledocSettings.plist
│ ├── CNUserNotification.h
│ ├── CNUserNotification.m
│ ├── CNUserNotificationBannerBackgroundView.h
│ ├── CNUserNotificationBannerBackgroundView.m
│ ├── CNUserNotificationBannerButton.h
│ ├── CNUserNotificationBannerButton.m
│ ├── CNUserNotificationBannerButtonCell.h
│ ├── CNUserNotificationBannerButtonCell.m
│ ├── CNUserNotificationBannerController.h
│ ├── CNUserNotificationBannerController.m
│ ├── CNUserNotificationCenter.h
│ ├── CNUserNotificationCenter.m
│ ├── CNUserNotificationCenterDelegate.h
│ ├── CNUserNotificationFeature.h
│ └── CNUserNotificationFeature.m
├── Hpple
│ ├── TFHpple.h
│ ├── TFHpple.m
│ ├── TFHppleElement.h
│ ├── TFHppleElement.m
│ ├── XPathQuery.h
│ └── XPathQuery.m
├── NSArray+Safe.h
├── NSArray+Safe.m
├── NSColor+Utils.h
├── NSColor+Utils.m
├── NSDate+Utils.h
├── NSDate+Utils.m
├── NSImage+Tint.h
├── NSImage+Tint.m
├── NSImageView+AFNetworking.h
├── NSImageView+AFNetworking.m
├── NSMutableArray+Queue.h
├── NSMutableArray+Queue.m
├── NSMutableArray+Safe.h
├── NSMutableArray+Safe.m
├── RLMResults+ToArray.h
├── RLMResults+ToArray.m
├── UAGithubEngine
│ ├── NSArray+Utilities.h
│ ├── NSArray+Utilities.m
│ ├── NSData+Base64.h
│ ├── NSData+Base64.m
│ ├── NSInvocation+Blocks.h
│ ├── NSInvocation+Blocks.m
│ ├── NSString+UAGithubEngineUtilities.h
│ ├── NSString+UAGithubEngineUtilities.m
│ ├── NSString+UUID.h
│ ├── NSString+UUID.m
│ ├── UAGithubEngine.h
│ ├── UAGithubEngine.m
│ ├── UAGithubEngineConstants.h
│ ├── UAGithubEngineConstants.m
│ ├── UAGithubEngineRequestTypes.h
│ ├── UAGithubJSONParser.h
│ ├── UAGithubJSONParser.m
│ ├── UAGithubURLConnection.h
│ ├── UAGithubURLConnection.m
│ ├── UAReachability.h
│ └── UAReachability.m
├── VHCursorButton+AFNetworking.h
├── VHCursorButton+AFNetworking.m
├── VHDateValueFormatter.h
├── VHDateValueFormatter.m
├── VHLog.h
├── VHLog.m
├── VHUtils+Json.h
├── VHUtils+Json.m
├── VHUtils+TransForm.h
├── VHUtils+TransForm.m
├── VHUtils.h
└── VHUtils.m
├── VC
├── VHNotificationVC.h
├── VHNotificationVC.m
├── VHNotificationVC.xib
├── VHPieVC.h
├── VHPieVC.m
├── VHPieVC.xib
├── VHProfileVC.h
├── VHProfileVC.m
├── VHProfileVC.xib
├── VHTabVC.h
├── VHTabVC.m
├── VHTabVC.xib
├── VHTrendVC.h
├── VHTrendVC.m
├── VHTrendVC.xib
├── VHTrendingVC.h
├── VHTrendingVC.m
├── VHTrendingVC.xib
├── VHViewController.h
└── VHViewController.m
├── VHDefines.h
├── VHGithubNotifier+Prefix.pch
├── VHGithubNotifierNotifications.h
├── View
├── NSView+Position.h
├── NSView+Position.m
├── VHContributionChartView.h
├── VHContributionChartView.m
├── VHCursorButton.h
├── VHCursorButton.m
├── VHHorizontalLine.h
├── VHHorizontalLine.m
├── VHLanguageDotView.h
├── VHLanguageDotView.m
├── VHLanguagesButton.h
├── VHLanguagesButton.m
├── VHNotificationGroupBodyCellView.h
├── VHNotificationGroupBodyCellView.m
├── VHNotificationGroupBodyCellView.xib
├── VHNotificationGroupHeaderCellView.h
├── VHNotificationGroupHeaderCellView.m
├── VHNotificationGroupHeaderCellView.xib
├── VHNotificationGroupView.h
├── VHNotificationGroupView.m
├── VHNotificationHeaderCellView.h
├── VHNotificationHeaderCellView.m
├── VHNotificationHeaderCellView.xib
├── VHPieChartView.swift
├── VHPopUpButton.h
├── VHPopUpButton.m
├── VHPopUpButtonCell.h
├── VHPopUpButtonCell.m
├── VHScroller.h
├── VHScroller.m
├── VHScrollerThumb.h
├── VHScrollerThumb.m
├── VHSecureTextField.h
├── VHSecureTextField.m
├── VHSecureTextFieldCell.h
├── VHSecureTextFieldCell.m
├── VHSettingsCellView.h
├── VHSettingsCellView.m
├── VHSettingsCellView.xib
├── VHStateView.h
├── VHStateView.m
├── VHStateView.xib
├── VHStatusBarButton.h
├── VHStatusBarButton.m
├── VHTabVCBackgroundView.h
├── VHTabVCBackgroundView.m
├── VHTabView.h
├── VHTabView.m
├── VHTableView.h
├── VHTableView.m
├── VHTextField.h
├── VHTextField.m
├── VHTextFieldCell.h
├── VHTextFieldCell.m
├── VHTrendingLanguageCellView.h
├── VHTrendingLanguageCellView.m
├── VHTrendingLanguageCellView.xib
├── VHTrendingRepositoryCellView.h
├── VHTrendingRepositoryCellView.m
├── VHTrendingRepositoryCellView.xib
└── VHVisualEffectView.swift
├── Window
├── VHAccountInfoWC.h
├── VHAccountInfoWC.m
├── VHAccountInfoWC.xib
├── VHSettingsWC.h
├── VHSettingsWC.m
├── VHSettingsWC.xib
├── VHUserNotificationWindow.h
├── VHUserNotificationWindow.m
├── VHWebLoginWC.h
├── VHWebLoginWC.m
├── VHWebLoginWC.xib
├── VHWindow.h
└── VHWindow.m
└── main.m
/.gitattributes:
--------------------------------------------------------------------------------
1 | VHGithubNotifier/Assets/echarts.js linguist-vendored
--------------------------------------------------------------------------------
/Pictures/image_github_w1920.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/Pictures/image_github_w1920.png
--------------------------------------------------------------------------------
/Pictures/notification_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/Pictures/notification_1.png
--------------------------------------------------------------------------------
/Pictures/notification_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/Pictures/notification_2.png
--------------------------------------------------------------------------------
/Pictures/status_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/Pictures/status_bar.png
--------------------------------------------------------------------------------
/Pictures/tab_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/Pictures/tab_notification.png
--------------------------------------------------------------------------------
/Pictures/tab_pie_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/Pictures/tab_pie_1.png
--------------------------------------------------------------------------------
/Pictures/tab_pie_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/Pictures/tab_pie_2.png
--------------------------------------------------------------------------------
/Pictures/tab_profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/Pictures/tab_profile.png
--------------------------------------------------------------------------------
/Pictures/tab_trend_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/Pictures/tab_trend_1.png
--------------------------------------------------------------------------------
/Pictures/tab_trend_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/Pictures/tab_trend_2.png
--------------------------------------------------------------------------------
/Pictures/tab_trending.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/Pictures/tab_trending.png
--------------------------------------------------------------------------------
/Pictures/vc_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/Pictures/vc_settings.png
--------------------------------------------------------------------------------
/Podfile:
--------------------------------------------------------------------------------
1 | source 'https://github.com/CocoaPods/Specs.git'
2 | platform :osx, '10.9'
3 |
4 | target 'VHGithubNotifier' do
5 | pod 'AFNetworking'
6 | pod 'Realm'
7 | pod 'YAML-Framework'
8 | pod 'SYFlatButton'
9 | end
--------------------------------------------------------------------------------
/VHGithubNotifier-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 |
5 | @import Charts;
6 |
--------------------------------------------------------------------------------
/VHGithubNotifier.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/VHGithubNotifier.xcodeproj/xcuserdata/huangweiping.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/VHGithubNotifier.xcodeproj/xcuserdata/huangweiping.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | VHGithubNotifier.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 378E0ADA1E0ECD070033CBD5
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/VHGithubNotifier.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/VHGithubNotifier.xcworkspace/xcshareddata/VHGithubNotifier.xcscmblueprint:
--------------------------------------------------------------------------------
1 | {
2 | "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "81033B36365A4D58F1454CE6F007319E331A5DAF",
3 | "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : {
4 |
5 | },
6 | "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : {
7 | "81033B36365A4D58F1454CE6F007319E331A5DAF" : 9223372036854775807
8 | },
9 | "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "1C626041-837F-47EC-BA7C-98CC8774F7DC",
10 | "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : {
11 | "81033B36365A4D58F1454CE6F007319E331A5DAF" : "VHGithubNotifier\/"
12 | },
13 | "DVTSourceControlWorkspaceBlueprintNameKey" : "VHGithubNotifier",
14 | "DVTSourceControlWorkspaceBlueprintVersion" : 204,
15 | "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "VHGithubNotifier.xcworkspace",
16 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [
17 | {
18 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/Nightonke\/Gitee.git",
19 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
20 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "81033B36365A4D58F1454CE6F007319E331A5DAF"
21 | }
22 | ]
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier.xcworkspace/xcuserdata/huangweiping.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/VHGithubNotifier/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/24.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface AppDelegate : NSObject
10 |
11 |
12 | @end
13 |
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_128@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_128@1x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_128@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_128@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_16@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_16@1x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_16@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_16@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_256@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_256@1x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_256@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_256@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_32@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_32@1x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_32@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_32@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_512@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_512@1x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_512@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/AppIcon.appiconset/icon_app_512@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_cancel.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_cancel.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_cancel@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_cancel@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_cancel.imageset/icon_cancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_cancel.imageset/icon_cancel.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_cancel.imageset/icon_cancel@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_cancel.imageset/icon_cancel@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_cancel.imageset/icon_cancel@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_cancel.imageset/icon_cancel@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_done.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_done.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_done@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_done@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_done.imageset/icon_done.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_done.imageset/icon_done.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_done.imageset/icon_done@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_done.imageset/icon_done@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_done.imageset/icon_done@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_done.imageset/icon_done@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_empty_trending.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_empty_trending.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_empty_trending.imageset/icon_empty_trending.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_empty_trending.imageset/icon_empty_trending.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_error.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_error.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_error.imageset/icon_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_error.imageset/icon_error.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_exit.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_exit.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_exit@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_exit@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_exit.imageset/icon_exit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_exit.imageset/icon_exit.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_exit.imageset/icon_exit@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_exit.imageset/icon_exit@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_exit.imageset/icon_exit@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_exit.imageset/icon_exit@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_follower.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_follower@1x.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_follower@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_follower@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_follower.imageset/icon_follower@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_follower.imageset/icon_follower@1x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_follower.imageset/icon_follower@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_follower.imageset/icon_follower@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_follower.imageset/icon_follower@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_follower.imageset/icon_follower@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_follower_dark.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_follower_dark@1x.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_follower_dark@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_follower_dark@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_follower_dark.imageset/icon_follower_dark@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_follower_dark.imageset/icon_follower_dark@1x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_follower_dark.imageset/icon_follower_dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_follower_dark.imageset/icon_follower_dark@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_follower_dark.imageset/icon_follower_dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_follower_dark.imageset/icon_follower_dark@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_follower_pressed.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_follower_pressed@1x.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_follower_pressed@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_follower_pressed@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_follower_pressed.imageset/icon_follower_pressed@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_follower_pressed.imageset/icon_follower_pressed@1x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_follower_pressed.imageset/icon_follower_pressed@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_follower_pressed.imageset/icon_follower_pressed@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_follower_pressed.imageset/icon_follower_pressed@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_follower_pressed.imageset/icon_follower_pressed@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_github.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_github@1x.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_github@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_github@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_github.imageset/icon_github@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_github.imageset/icon_github@1x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_github.imageset/icon_github@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_github.imageset/icon_github@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_github.imageset/icon_github@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_github.imageset/icon_github@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_github_url.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_github_url.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_github_url@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_github_url@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_github_url.imageset/icon_github_url.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_github_url.imageset/icon_github_url.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_github_url.imageset/icon_github_url@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_github_url.imageset/icon_github_url@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_github_url.imageset/icon_github_url@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_github_url.imageset/icon_github_url@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_language.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_language.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_language@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_language@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_language.imageset/icon_language.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_language.imageset/icon_language.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_language.imageset/icon_language@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_language.imageset/icon_language@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_language.imageset/icon_language@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_language.imageset/icon_language@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_language_dot.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_language_dot.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_language_dot@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_language_dot@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_language_dot.imageset/icon_language_dot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_language_dot.imageset/icon_language_dot.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_language_dot.imageset/icon_language_dot@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_language_dot.imageset/icon_language_dot@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_language_dot.imageset/icon_language_dot@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_language_dot.imageset/icon_language_dot@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_login.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_login.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_login@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_login@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_login.imageset/icon_login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_login.imageset/icon_login.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_login.imageset/icon_login@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_login.imageset/icon_login@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_login.imageset/icon_login@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_login.imageset/icon_login@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_notification.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_notification.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_notification@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_notification@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_notification.imageset/icon_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_notification.imageset/icon_notification.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_notification.imageset/icon_notification@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_notification.imageset/icon_notification@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_notification.imageset/icon_notification@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_notification.imageset/icon_notification@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_open_url.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_open_url.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_open_url@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_open_url@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_open_url.imageset/icon_open_url.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_open_url.imageset/icon_open_url.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_open_url.imageset/icon_open_url@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_open_url.imageset/icon_open_url@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_open_url.imageset/icon_open_url@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_open_url.imageset/icon_open_url@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_profile.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_profile.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_profile@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_profile@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_profile.imageset/icon_profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_profile.imageset/icon_profile.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_profile.imageset/icon_profile@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_profile.imageset/icon_profile@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_profile.imageset/icon_profile@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_profile.imageset/icon_profile@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_read.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "icon_read@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_read.imageset/icon_read@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_read.imageset/icon_read@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_refresh.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_refresh.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_refresh@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_refresh@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_refresh.imageset/icon_refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_refresh.imageset/icon_refresh.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_refresh.imageset/icon_refresh@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_refresh.imageset/icon_refresh@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_refresh.imageset/icon_refresh@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_refresh.imageset/icon_refresh@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_repository_fork.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "icon_repository_fork@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_repository_fork.imageset/icon_repository_fork@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_repository_fork.imageset/icon_repository_fork@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_repository_pie.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_repository_pie.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_repository_pie@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_repository_pie@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_repository_pie.imageset/icon_repository_pie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_repository_pie.imageset/icon_repository_pie.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_repository_pie.imageset/icon_repository_pie@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_repository_pie.imageset/icon_repository_pie@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_repository_pie.imageset/icon_repository_pie@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_repository_pie.imageset/icon_repository_pie@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_repository_star.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "icon_repository_star@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_repository_star.imageset/icon_repository_star@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_repository_star.imageset/icon_repository_star@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_settings.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_settings.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_settings@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_settings@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_settings.imageset/icon_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_settings.imageset/icon_settings.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_settings.imageset/icon_settings@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_settings.imageset/icon_settings@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_settings.imageset/icon_settings@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_settings.imageset/icon_settings@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_star.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_star@1x.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_star@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_star@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_star.imageset/icon_star@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_star.imageset/icon_star@1x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_star.imageset/icon_star@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_star.imageset/icon_star@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_star.imageset/icon_star@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_star.imageset/icon_star@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_star_dark.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_star_dark@1x.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_star_dark@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_star_dark@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_star_dark.imageset/icon_star_dark@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_star_dark.imageset/icon_star_dark@1x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_star_dark.imageset/icon_star_dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_star_dark.imageset/icon_star_dark@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_star_dark.imageset/icon_star_dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_star_dark.imageset/icon_star_dark@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_star_pressed.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_star_pressed@1x.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_star_pressed@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_star_pressed@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_star_pressed.imageset/icon_star_pressed@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_star_pressed.imageset/icon_star_pressed@1x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_star_pressed.imageset/icon_star_pressed@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_star_pressed.imageset/icon_star_pressed@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_star_pressed.imageset/icon_star_pressed@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_star_pressed.imageset/icon_star_pressed@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_github.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_status_bar_github.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_status_bar_github@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_status_bar_github@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_github.imageset/icon_status_bar_github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_github.imageset/icon_status_bar_github.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_github.imageset/icon_status_bar_github@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_github.imageset/icon_status_bar_github@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_github.imageset/icon_status_bar_github@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_github.imageset/icon_status_bar_github@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_github_dark.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_status_bar_github_dark.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_status_bar_github_dark@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_status_bar_github_dark@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_github_dark.imageset/icon_status_bar_github_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_github_dark.imageset/icon_status_bar_github_dark.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_github_dark.imageset/icon_status_bar_github_dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_github_dark.imageset/icon_status_bar_github_dark@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_github_dark.imageset/icon_status_bar_github_dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_github_dark.imageset/icon_status_bar_github_dark@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_github_pressed.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_status_bar_github_pressed.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_status_bar_github_pressed@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_status_bar_github_pressed@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_github_pressed.imageset/icon_status_bar_github_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_github_pressed.imageset/icon_status_bar_github_pressed.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_github_pressed.imageset/icon_status_bar_github_pressed@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_github_pressed.imageset/icon_status_bar_github_pressed@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_github_pressed.imageset/icon_status_bar_github_pressed@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_github_pressed.imageset/icon_status_bar_github_pressed@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_status_bar_notification.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_status_bar_notification@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_status_bar_notification@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification.imageset/icon_status_bar_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification.imageset/icon_status_bar_notification.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification.imageset/icon_status_bar_notification@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification.imageset/icon_status_bar_notification@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification.imageset/icon_status_bar_notification@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification.imageset/icon_status_bar_notification@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification_dark.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_status_bar_notification_dark.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_status_bar_notification_dark@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_status_bar_notification_dark@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification_dark.imageset/icon_status_bar_notification_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification_dark.imageset/icon_status_bar_notification_dark.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification_dark.imageset/icon_status_bar_notification_dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification_dark.imageset/icon_status_bar_notification_dark@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification_dark.imageset/icon_status_bar_notification_dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification_dark.imageset/icon_status_bar_notification_dark@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification_pressed.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_status_bar_notification_pressed.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_status_bar_notification_pressed@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_status_bar_notification_pressed@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification_pressed.imageset/icon_status_bar_notification_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification_pressed.imageset/icon_status_bar_notification_pressed.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification_pressed.imageset/icon_status_bar_notification_pressed@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification_pressed.imageset/icon_status_bar_notification_pressed@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification_pressed.imageset/icon_status_bar_notification_pressed@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_status_bar_notification_pressed.imageset/icon_status_bar_notification_pressed@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_time.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_time.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_time@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_time@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_time.imageset/icon_time.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_time.imageset/icon_time.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_time.imageset/icon_time@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_time.imageset/icon_time@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_time.imageset/icon_time@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_time.imageset/icon_time@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trend.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_trend.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_trend@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_trend@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trend.imageset/icon_trend.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_trend.imageset/icon_trend.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trend.imageset/icon_trend@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_trend.imageset/icon_trend@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trend.imageset/icon_trend@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_trend.imageset/icon_trend@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trend_followers.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_trend_followers.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_trend_followers@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_trend_followers@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trend_followers.imageset/icon_trend_followers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_trend_followers.imageset/icon_trend_followers.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trend_followers.imageset/icon_trend_followers@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_trend_followers.imageset/icon_trend_followers@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trend_followers.imageset/icon_trend_followers@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_trend_followers.imageset/icon_trend_followers@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trend_repository.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_trend_repository.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_trend_repository@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_trend_repository@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trend_repository.imageset/icon_trend_repository.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_trend_repository.imageset/icon_trend_repository.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trend_repository.imageset/icon_trend_repository@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_trend_repository.imageset/icon_trend_repository@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trend_repository.imageset/icon_trend_repository@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_trend_repository.imageset/icon_trend_repository@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trending.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_trending.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_trending@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_trending@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trending.imageset/icon_trending.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_trending.imageset/icon_trending.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trending.imageset/icon_trending@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_trending.imageset/icon_trending@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_trending.imageset/icon_trending@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_trending.imageset/icon_trending@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_unsubscribe.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "icon_unsubscribe@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_unsubscribe.imageset/icon_unsubscribe@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_unsubscribe.imageset/icon_unsubscribe@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_user_placeholder.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "icon_user_placeholder.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "icon_user_placeholder@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "icon_user_placeholder@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_user_placeholder.imageset/icon_user_placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_user_placeholder.imageset/icon_user_placeholder.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_user_placeholder.imageset/icon_user_placeholder@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_user_placeholder.imageset/icon_user_placeholder@2x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/icon_user_placeholder.imageset/icon_user_placeholder@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/icon_user_placeholder.imageset/icon_user_placeholder@3x.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/image_account_info_window.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "image_account_info_window.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/image_account_info_window.imageset/image_account_info_window.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/image_account_info_window.imageset/image_account_info_window.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/image_empty_notification.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "image_empty_notification.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/image_empty_notification.imageset/image_empty_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/image_empty_notification.imageset/image_empty_notification.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/image_issue.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "image_issue.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/image_issue.imageset/image_issue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/image_issue.imageset/image_issue.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/image_notification.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "image_notification.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/image_notification.imageset/image_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/image_notification.imageset/image_notification.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/image_pull_request.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "image_pull_request.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/image_pull_request.imageset/image_pull_request.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/image_pull_request.imageset/image_pull_request.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/image_scroller.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "image_scroller.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/image_scroller.imageset/image_scroller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/image_scroller.imageset/image_scroller.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/image_scroller_pressed.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "image_scroller_pressed.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Assets.xcassets/image_scroller_pressed.imageset/image_scroller_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nightonke/Gitee/564f72fb137cafabc1ce3e91554d22d33d8bff22/VHGithubNotifier/Assets.xcassets/image_scroller_pressed.imageset/image_scroller_pressed.png
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Charts.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Charts.xcodeproj/xcuserdata/huangweiping.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Charts.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 1
11 |
12 | ChartsRealm.xcscheme_^#shared#^_
13 |
14 | orderHint
15 | 2
16 |
17 | ChartsTests.xcscheme_^#shared#^_
18 |
19 | orderHint
20 | 3
21 |
22 |
23 | SuppressBuildableAutocreation
24 |
25 | 06165F231D8110E600722320
26 |
27 | primary
28 |
29 |
30 | 06165F2D1D8110E600722320
31 |
32 | primary
33 |
34 |
35 | 06B120D41D811E6200D14B02
36 |
37 | primary
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Charts/BubbleChartView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BubbleChartView.swift
3 | // Charts
4 | //
5 | // Bubble chart implementation:
6 | // Copyright 2015 Pierre-Marc Airoldi
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | open class BubbleChartView: BarLineChartViewBase, BubbleChartDataProvider
16 | {
17 | open override func initialize()
18 | {
19 | super.initialize()
20 |
21 | renderer = BubbleChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler)
22 | }
23 |
24 | // MARK: - BubbleChartDataProbider
25 |
26 | open var bubbleData: BubbleChartData? { return _data as? BubbleChartData }
27 | }
28 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Charts/CandleStickChartView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CandleStickChartView.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | /// Financial chart type that draws candle-sticks.
16 | open class CandleStickChartView: BarLineChartViewBase, CandleChartDataProvider
17 | {
18 | internal override func initialize()
19 | {
20 | super.initialize()
21 |
22 | renderer = CandleStickChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler)
23 |
24 | self.xAxis.spaceMin = 0.5
25 | self.xAxis.spaceMax = 0.5
26 | }
27 |
28 | // MARK: - CandleChartDataProvider
29 |
30 | open var candleData: CandleChartData?
31 | {
32 | return _data as? CandleChartData
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Charts/LineChartView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LineChartView.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | /// Chart that draws lines, surfaces, circles, ...
16 | open class LineChartView: BarLineChartViewBase, LineChartDataProvider
17 | {
18 | internal override func initialize()
19 | {
20 | super.initialize()
21 |
22 | renderer = LineChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler)
23 | }
24 |
25 | // MARK: - LineChartDataProvider
26 |
27 | open var lineData: LineChartData? { return _data as? LineChartData }
28 | }
29 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Charts/ScatterChartView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ScatterChartView.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | /// The ScatterChart. Draws dots, triangles, squares and custom shapes into the chartview.
16 | open class ScatterChartView: BarLineChartViewBase, ScatterChartDataProvider
17 | {
18 | open override func initialize()
19 | {
20 | super.initialize()
21 |
22 | renderer = ScatterChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler)
23 | }
24 |
25 | // MARK: - ScatterChartDataProbider
26 |
27 | open var scatterData: ScatterChartData? { return _data as? ScatterChartData }
28 | }
29 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Components/ComponentBase.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ComponentBase.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 |
16 | /// This class encapsulates everything both Axis, Legend and LimitLines have in common
17 | @objc(ChartComponentBase)
18 | open class ComponentBase: NSObject
19 | {
20 | /// flag that indicates if this component is enabled or not
21 | open var enabled = true
22 |
23 | /// The offset this component has on the x-axis
24 | /// **default**: 5.0
25 | open var xOffset = CGFloat(5.0)
26 |
27 | /// The offset this component has on the x-axis
28 | /// **default**: 5.0 (or 0.0 on ChartYAxis)
29 | open var yOffset = CGFloat(5.0)
30 |
31 | public override init()
32 | {
33 | super.init()
34 | }
35 |
36 | open var isEnabled: Bool { return enabled }
37 | }
38 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Components/Description.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Description.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(ChartDescription)
16 | open class Description: ComponentBase
17 | {
18 | public override init()
19 | {
20 | #if os(tvOS)
21 | // 23 is the smallest recommended font size on the TV
22 | font = NSUIFont.systemFont(ofSize: 23)
23 | #elseif os(OSX)
24 | font = NSUIFont.systemFont(ofSize: NSUIFont.systemFontSize())
25 | #else
26 | font = NSUIFont.systemFont(ofSize: 8.0)
27 | #endif
28 |
29 | super.init()
30 | }
31 |
32 | /// The text to be shown as the description.
33 | open var text: String? = "Description Label"
34 |
35 | /// Custom position for the description text in pixels on the screen.
36 | open var position: CGPoint? = nil
37 |
38 | /// The text alignment of the description text. Default RIGHT.
39 | open var textAlign: NSTextAlignment = NSTextAlignment.right
40 |
41 | /// Font object used for drawing the description text.
42 | open var font: NSUIFont
43 |
44 | /// Text color used for drawing the description text
45 | open var textColor = NSUIColor.black
46 | }
47 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartData.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BarLineScatterCandleBubbleChartData.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | open class BarLineScatterCandleBubbleChartData: ChartData
15 | {
16 | public override init()
17 | {
18 | super.init()
19 | }
20 |
21 | public override init(dataSets: [IChartDataSet]?)
22 | {
23 | super.init(dataSets: dataSets)
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BarLineScatterCandleBubbleChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 |
16 | open class BarLineScatterCandleBubbleChartDataSet: ChartDataSet, IBarLineScatterCandleBubbleChartDataSet
17 | {
18 | // MARK: - Data functions and accessors
19 |
20 | // MARK: - Styling functions and accessors
21 |
22 | open var highlightColor = NSUIColor(red: 255.0/255.0, green: 187.0/255.0, blue: 115.0/255.0, alpha: 1.0)
23 | open var highlightLineWidth = CGFloat(0.5)
24 | open var highlightLineDashPhase = CGFloat(0.0)
25 | open var highlightLineDashLengths: [CGFloat]?
26 |
27 | // MARK: - NSCopying
28 |
29 | open override func copyWithZone(_ zone: NSZone?) -> AnyObject
30 | {
31 | let copy = super.copyWithZone(zone) as! BarLineScatterCandleBubbleChartDataSet
32 | copy.highlightColor = highlightColor
33 | copy.highlightLineWidth = highlightLineWidth
34 | copy.highlightLineDashPhase = highlightLineDashPhase
35 | copy.highlightLineDashLengths = highlightLineDashLengths
36 | return copy
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Data/Implementations/Standard/BubbleChartData.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BubbleChartData.swift
3 | // Charts
4 | //
5 | // Bubble chart implementation:
6 | // Copyright 2015 Pierre-Marc Airoldi
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | open class BubbleChartData: BarLineScatterCandleBubbleChartData
16 | {
17 | public override init()
18 | {
19 | super.init()
20 | }
21 |
22 | public override init(dataSets: [IChartDataSet]?)
23 | {
24 | super.init(dataSets: dataSets)
25 | }
26 |
27 | /// Sets the width of the circle that surrounds the bubble when highlighted for all DataSet objects this data object contains
28 | open func setHighlightCircleWidth(_ width: CGFloat)
29 | {
30 | for set in (_dataSets as? [IBubbleChartDataSet])!
31 | {
32 | set.highlightCircleWidth = width
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Data/Implementations/Standard/CandleChartData.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CandleChartData.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | open class CandleChartData: BarLineScatterCandleBubbleChartData
15 | {
16 | public override init()
17 | {
18 | super.init()
19 | }
20 |
21 | public override init(dataSets: [IChartDataSet]?)
22 | {
23 | super.init(dataSets: dataSets)
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Data/Implementations/Standard/LineChartData.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LineChartData.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | /// Data object that encapsulates all data associated with a LineChart.
15 | open class LineChartData: ChartData
16 | {
17 | public override init()
18 | {
19 | super.init()
20 | }
21 |
22 | public override init(dataSets: [IChartDataSet]?)
23 | {
24 | super.init(dataSets: dataSets)
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Data/Implementations/Standard/RadarChartData.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RadarChartData.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 |
16 | open class RadarChartData: ChartData
17 | {
18 | open var highlightColor = NSUIColor(red: 255.0/255.0, green: 187.0/255.0, blue: 115.0/255.0, alpha: 1.0)
19 | open var highlightLineWidth = CGFloat(1.0)
20 | open var highlightLineDashPhase = CGFloat(0.0)
21 | open var highlightLineDashLengths: [CGFloat]?
22 |
23 | /// Sets labels that should be drawn around the RadarChart at the end of each web line.
24 | open var labels = [String]()
25 |
26 | /// Sets the labels that should be drawn around the RadarChart at the end of each web line.
27 | open func setLabels(_ labels: String...)
28 | {
29 | self.labels = labels
30 | }
31 |
32 | public override init()
33 | {
34 | super.init()
35 | }
36 |
37 | public override init(dataSets: [IChartDataSet]?)
38 | {
39 | super.init(dataSets: dataSets)
40 | }
41 |
42 | open override func entryForHighlight(_ highlight: Highlight) -> ChartDataEntry?
43 | {
44 | return getDataSetByIndex(highlight.dataSetIndex)?.entryForIndex(Int(highlight.x))
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Data/Implementations/Standard/RadarChartDataEntry.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RadarChartDataEntry.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | open class RadarChartDataEntry: ChartDataEntry
16 | {
17 | public required init()
18 | {
19 | super.init()
20 | }
21 |
22 | /// - parameter value: The value on the y-axis.
23 | /// - parameter data: Spot for additional data this Entry represents.
24 | public init(value: Double, data: AnyObject?)
25 | {
26 | super.init(x: 0.0, y: value, data: data)
27 | }
28 |
29 | /// - parameter value: The value on the y-axis.
30 | public convenience init(value: Double)
31 | {
32 | self.init(value: value, data: nil)
33 | }
34 |
35 | // MARK: Data property accessors
36 |
37 | open var value: Double
38 | {
39 | get { return y }
40 | set { y = value }
41 | }
42 |
43 | // MARK: NSCopying
44 |
45 | open override func copyWithZone(_ zone: NSZone?) -> AnyObject
46 | {
47 | let copy = super.copyWithZone(zone) as! RadarChartDataEntry
48 |
49 | return copy
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Data/Implementations/Standard/ScatterChartData.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ScatterChartData.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | open class ScatterChartData: BarLineScatterCandleBubbleChartData
16 | {
17 | public override init()
18 | {
19 | super.init()
20 | }
21 |
22 | public override init(dataSets: [IChartDataSet]?)
23 | {
24 | super.init(dataSets: dataSets)
25 | }
26 |
27 | /// - returns: The maximum shape-size across all DataSets.
28 | open func getGreatestShapeSize() -> CGFloat
29 | {
30 | var max = CGFloat(0.0)
31 |
32 | for set in _dataSets
33 | {
34 | let scatterDataSet = set as? IScatterChartDataSet
35 |
36 | if scatterDataSet == nil
37 | {
38 | print("ScatterChartData: Found a DataSet which is not a ScatterChartDataSet", terminator: "\n")
39 | }
40 | else
41 | {
42 | let size = scatterDataSet!.scatterShapeSize
43 |
44 | if size > max
45 | {
46 | max = size
47 | }
48 | }
49 | }
50 |
51 | return max
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Data/Interfaces/IBarLineScatterCandleBubbleChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IBarLineScatterCandleBubbleChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol IBarLineScatterCandleBubbleChartDataSet: IChartDataSet
17 | {
18 | // MARK: - Data functions and accessors
19 |
20 | // MARK: - Styling functions and accessors
21 |
22 | var highlightColor: NSUIColor { get set }
23 | var highlightLineWidth: CGFloat { get set }
24 | var highlightLineDashPhase: CGFloat { get set }
25 | var highlightLineDashLengths: [CGFloat]? { get set }
26 | }
27 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Data/Interfaces/IBubbleChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IBubbleChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol IBubbleChartDataSet: IBarLineScatterCandleBubbleChartDataSet
17 | {
18 | // MARK: - Data functions and accessors
19 |
20 | var maxSize: CGFloat { get }
21 | var isNormalizeSizeEnabled: Bool { get }
22 |
23 | // MARK: - Styling functions and accessors
24 |
25 | /// Sets/gets the width of the circle that surrounds the bubble when highlighted
26 | var highlightCircleWidth: CGFloat { get set }
27 | }
28 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Data/Interfaces/ILineScatterCandleRadarChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ILineScatterCandleRadarChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | @objc
15 | public protocol ILineScatterCandleRadarChartDataSet: IBarLineScatterCandleBubbleChartDataSet
16 | {
17 | // MARK: - Data functions and accessors
18 |
19 | // MARK: - Styling functions and accessors
20 |
21 | /// Enables / disables the horizontal highlight-indicator. If disabled, the indicator is not drawn.
22 | var drawHorizontalHighlightIndicatorEnabled: Bool { get set }
23 |
24 | /// Enables / disables the vertical highlight-indicator. If disabled, the indicator is not drawn.
25 | var drawVerticalHighlightIndicatorEnabled: Bool { get set }
26 |
27 | /// - returns: `true` if horizontal highlight indicator lines are enabled (drawn)
28 | var isHorizontalHighlightIndicatorEnabled: Bool { get }
29 |
30 | /// - returns: `true` if vertical highlight indicator lines are enabled (drawn)
31 | var isVerticalHighlightIndicatorEnabled: Bool { get }
32 |
33 | /// Enables / disables both vertical and horizontal highlight-indicators.
34 | /// :param: enabled
35 | func setDrawHighlightIndicators(_ enabled: Bool)
36 | }
37 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Data/Interfaces/IRadarChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IRadarChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol IRadarChartDataSet: ILineRadarChartDataSet
17 | {
18 | // MARK: - Data functions and accessors
19 |
20 | // MARK: - Styling functions and accessors
21 |
22 | /// flag indicating whether highlight circle should be drawn or not
23 | var drawHighlightCircleEnabled: Bool { get set }
24 |
25 | var isDrawHighlightCircleEnabled: Bool { get }
26 |
27 | var highlightCircleFillColor: NSUIColor? { get set }
28 |
29 | /// The stroke color for highlight circle.
30 | /// If `nil`, the color of the dataset is taken.
31 | var highlightCircleStrokeColor: NSUIColor? { get set }
32 |
33 | var highlightCircleStrokeAlpha: CGFloat { get set }
34 |
35 | var highlightCircleInnerRadius: CGFloat { get set }
36 |
37 | var highlightCircleOuterRadius: CGFloat { get set }
38 |
39 | var highlightCircleStrokeWidth: CGFloat { get set }
40 | }
41 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Data/Interfaces/IScatterChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IScatterChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol IScatterChartDataSet: ILineScatterCandleRadarChartDataSet
17 | {
18 | // MARK: - Data functions and accessors
19 |
20 | // MARK: - Styling functions and accessors
21 |
22 | /// - returns: The size the scatter shape will have
23 | var scatterShapeSize: CGFloat { get }
24 |
25 | /// - returns: The radius of the hole in the shape (applies to Square, Circle and Triangle)
26 | /// Set this to <= 0 to remove holes.
27 | /// **default**: 0.0
28 | var scatterShapeHoleRadius: CGFloat { get }
29 |
30 | /// - returns: Color for the hole in the shape. Setting to `nil` will behave as transparent.
31 | /// **default**: nil
32 | var scatterShapeHoleColor: NSUIColor? { get }
33 |
34 | /// - returns: The IShapeRenderer responsible for rendering this DataSet.
35 | var shapeRenderer: IShapeRenderer? { get }
36 | }
37 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Formatters/IAxisValueFormatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IAxisValueFormatter.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | /// An interface for providing custom axis Strings.
15 | @objc(IChartAxisValueFormatter)
16 | public protocol IAxisValueFormatter : NSObjectProtocol
17 | {
18 |
19 | /// Called when a value from an axis is formatted before being drawn.
20 | ///
21 | /// For performance reasons, avoid excessive calculations and memory allocations inside this method.
22 | ///
23 | /// - returns: The customized label that is drawn on the x-axis.
24 | /// - parameter value: the value that is currently being drawn
25 | /// - parameter axis: the axis that the value belongs to
26 | ///
27 | func stringForValue(_ value: Double,
28 | axis: AxisBase?) -> String
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Formatters/IFillFormatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IFillFormatter.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | /// Protocol for providing a custom logic to where the filling line of a LineDataSet should end. This of course only works if setFillEnabled(...) is set to true.
16 | @objc(IChartFillFormatter)
17 | public protocol IFillFormatter
18 | {
19 | /// - returns: The vertical (y-axis) position where the filled-line of the LineDataSet should end.
20 | func getFillLinePosition(dataSet: ILineChartDataSet, dataProvider: LineChartDataProvider) -> CGFloat
21 | }
22 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Highlight/IHighlighter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IHighlighter.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(IChartHighlighter)
16 | public protocol IHighlighter : NSObjectProtocol
17 | {
18 | /// - returns: A Highlight object corresponding to the given x- and y- touch positions in pixels.
19 | /// - parameter x:
20 | /// - parameter y:
21 | /// - returns:
22 | func getHighlight(x: CGFloat, y: CGFloat) -> Highlight?
23 | }
24 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Highlight/PieHighlighter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PieHighlighter.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(PieChartHighlighter)
16 | open class PieHighlighter: PieRadarHighlighter
17 | {
18 | open override func closestHighlight(index: Int, x: CGFloat, y: CGFloat) -> Highlight?
19 | {
20 | guard let set = chart?.data?.dataSets[0]
21 | else { return nil }
22 |
23 | guard let entry = set.entryForIndex(index)
24 | else { return nil }
25 |
26 | return Highlight(x: Double(index), y: entry.y, xPx: x, yPx: y, dataSetIndex: 0, axis: set.axisDependency)
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Highlight/Range.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Range.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | @objc(ChartRange)
15 | open class Range: NSObject
16 | {
17 | open var from: Double
18 | open var to: Double
19 |
20 | public init(from: Double, to: Double)
21 | {
22 | self.from = from
23 | self.to = to
24 |
25 | super.init()
26 | }
27 |
28 | /// - returns: `true` if this range contains (if the value is in between) the given value, `false` ifnot.
29 | /// - parameter value:
30 | open func contains(_ value: Double) -> Bool
31 | {
32 | if value > from && value <= to
33 | {
34 | return true
35 | }
36 | else
37 | {
38 | return false
39 | }
40 | }
41 |
42 | open func isLarger(_ value: Double) -> Bool
43 | {
44 | return value > to
45 | }
46 |
47 | open func isSmaller(_ value: Double) -> Bool
48 | {
49 | return value < from
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Interfaces/BarChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BarChartDataProvider.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol BarChartDataProvider: BarLineScatterCandleBubbleChartDataProvider
17 | {
18 | var barData: BarChartData? { get }
19 |
20 | var isDrawBarShadowEnabled: Bool { get }
21 | var isDrawValueAboveBarEnabled: Bool { get }
22 | var isHighlightFullBarEnabled: Bool { get }
23 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Interfaces/BarLineScatterCandleBubbleChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BarLineScatterCandleBubbleChartDataProvider.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol BarLineScatterCandleBubbleChartDataProvider: ChartDataProvider
17 | {
18 | func getTransformer(forAxis: YAxis.AxisDependency) -> Transformer
19 | func isInverted(axis: YAxis.AxisDependency) -> Bool
20 |
21 | var lowestVisibleX: Double { get }
22 | var highestVisibleX: Double { get }
23 | }
24 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Interfaces/BubbleChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BubbleChartDataProvider.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol BubbleChartDataProvider: BarLineScatterCandleBubbleChartDataProvider
17 | {
18 | var bubbleData: BubbleChartData? { get }
19 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Interfaces/CandleChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CandleChartDataProvider.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol CandleChartDataProvider: BarLineScatterCandleBubbleChartDataProvider
17 | {
18 | var candleData: CandleChartData? { get }
19 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Interfaces/ChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChartDataProvider.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol ChartDataProvider
17 | {
18 | /// - returns: The minimum x-value of the chart, regardless of zoom or translation.
19 | var chartXMin: Double { get }
20 |
21 | /// - returns: The maximum x-value of the chart, regardless of zoom or translation.
22 | var chartXMax: Double { get }
23 |
24 | /// - returns: The minimum y-value of the chart, regardless of zoom or translation.
25 | var chartYMin: Double { get }
26 |
27 | /// - returns: The maximum y-value of the chart, regardless of zoom or translation.
28 | var chartYMax: Double { get }
29 |
30 | var maxHighlightDistance: CGFloat { get }
31 |
32 | var xRange: Double { get }
33 |
34 | var centerOffsets: CGPoint { get }
35 |
36 | var data: ChartData? { get }
37 |
38 | var maxVisibleCount: Int { get }
39 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Interfaces/CombinedChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CombinedChartDataProvider.swoft
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol CombinedChartDataProvider: LineChartDataProvider, BarChartDataProvider, BubbleChartDataProvider, CandleChartDataProvider, ScatterChartDataProvider
17 | {
18 | var combinedData: CombinedChartData? { get }
19 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Interfaces/LineChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LineChartDataProvider.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol LineChartDataProvider: BarLineScatterCandleBubbleChartDataProvider
17 | {
18 | var lineData: LineChartData? { get }
19 |
20 | func getAxis(_ axis: YAxis.AxisDependency) -> YAxis
21 | }
22 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Interfaces/ScatterChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ScatterChartDataProvider.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol ScatterChartDataProvider: BarLineScatterCandleBubbleChartDataProvider
17 | {
18 | var scatterData: ScatterChartData? { get }
19 | }
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Jobs/MoveViewJob.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MoveViewJob.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | #if !os(OSX)
16 | import UIKit
17 | #endif
18 |
19 | @objc(MoveChartViewJob)
20 | open class MoveViewJob: ViewPortJob
21 | {
22 | public override init(
23 | viewPortHandler: ViewPortHandler,
24 | xValue: Double,
25 | yValue: Double,
26 | transformer: Transformer,
27 | view: ChartViewBase)
28 | {
29 | super.init(
30 | viewPortHandler: viewPortHandler,
31 | xValue: xValue,
32 | yValue: yValue,
33 | transformer: transformer,
34 | view: view)
35 | }
36 |
37 | open override func doJob()
38 | {
39 | guard
40 | let viewPortHandler = viewPortHandler,
41 | let transformer = transformer,
42 | let view = view
43 | else { return }
44 |
45 | var pt = CGPoint(
46 | x: CGFloat(xValue),
47 | y: CGFloat(yValue)
48 | )
49 |
50 | transformer.pointValueToPixel(&pt)
51 | viewPortHandler.centerViewPort(pt: pt, chart: view)
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Jobs/ViewPortJob.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewPortJob.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | // This defines a viewport modification job, used for delaying or animating viewport changes
16 | @objc(ChartViewPortJob)
17 | open class ViewPortJob: NSObject
18 | {
19 | internal var point: CGPoint = CGPoint()
20 | internal weak var viewPortHandler: ViewPortHandler?
21 | internal var xValue: Double = 0.0
22 | internal var yValue: Double = 0.0
23 | internal weak var transformer: Transformer?
24 | internal weak var view: ChartViewBase?
25 |
26 | public init(
27 | viewPortHandler: ViewPortHandler,
28 | xValue: Double,
29 | yValue: Double,
30 | transformer: Transformer,
31 | view: ChartViewBase)
32 | {
33 | super.init()
34 |
35 | self.viewPortHandler = viewPortHandler
36 | self.xValue = xValue
37 | self.yValue = yValue
38 | self.transformer = transformer
39 | self.view = view
40 | }
41 |
42 | open func doJob()
43 | {
44 | // Override this
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Renderers/Renderer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Renderer.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(ChartRenderer)
16 | open class Renderer: NSObject
17 | {
18 | /// the component that handles the drawing area of the chart and it's offsets
19 | open var viewPortHandler: ViewPortHandler?
20 |
21 | public override init()
22 | {
23 | super.init()
24 | }
25 |
26 | public init(viewPortHandler: ViewPortHandler?)
27 | {
28 | super.init()
29 | self.viewPortHandler = viewPortHandler
30 | }
31 | }
32 |
33 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Renderers/Scatter/ChevronDownShapeRenderer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChevronDownShapeRenderer.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 | import Foundation
12 |
13 | open class ChevronDownShapeRenderer : NSObject, IShapeRenderer
14 | {
15 | open func renderShape(
16 | context: CGContext,
17 | dataSet: IScatterChartDataSet,
18 | viewPortHandler: ViewPortHandler,
19 | point: CGPoint,
20 | color: NSUIColor)
21 | {
22 | let shapeSize = dataSet.scatterShapeSize
23 | let shapeHalf = shapeSize / 2.0
24 |
25 | context.setLineWidth(1.0)
26 | context.setStrokeColor(color.cgColor)
27 |
28 | context.beginPath()
29 | context.move(to: CGPoint(x: point.x, y: point.y + 2 * shapeHalf))
30 | context.addLine(to: CGPoint(x: point.x + 2 * shapeHalf, y: point.y))
31 | context.move(to: CGPoint(x: point.x, y: point.y + 2 * shapeHalf))
32 | context.addLine(to: CGPoint(x: point.x - 2 * shapeHalf, y: point.y))
33 | context.strokePath()
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Renderers/Scatter/ChevronUpShapeRenderer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChevronUpShapeRenderer.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 | import Foundation
12 |
13 | open class ChevronUpShapeRenderer : NSObject, IShapeRenderer
14 | {
15 | open func renderShape(
16 | context: CGContext,
17 | dataSet: IScatterChartDataSet,
18 | viewPortHandler: ViewPortHandler,
19 | point: CGPoint,
20 | color: NSUIColor)
21 | {
22 | let shapeSize = dataSet.scatterShapeSize
23 | let shapeHalf = shapeSize / 2.0
24 |
25 | context.setLineWidth(1.0)
26 | context.setStrokeColor(color.cgColor)
27 |
28 | context.beginPath()
29 | context.move(to: CGPoint(x: point.x, y: point.y - 2 * shapeHalf))
30 | context.addLine(to: CGPoint(x: point.x + 2 * shapeHalf, y: point.y))
31 | context.move(to: CGPoint(x: point.x, y: point.y - 2 * shapeHalf))
32 | context.addLine(to: CGPoint(x: point.x - 2 * shapeHalf, y: point.y))
33 | context.strokePath()
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Renderers/Scatter/CrossShapeRenderer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CrossShapeRenderer.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 | import Foundation
12 |
13 | open class CrossShapeRenderer : NSObject, IShapeRenderer
14 | {
15 | open func renderShape(
16 | context: CGContext,
17 | dataSet: IScatterChartDataSet,
18 | viewPortHandler: ViewPortHandler,
19 | point: CGPoint,
20 | color: NSUIColor)
21 | {
22 | let shapeSize = dataSet.scatterShapeSize
23 | let shapeHalf = shapeSize / 2.0
24 |
25 | context.setLineWidth(1.0)
26 | context.setStrokeColor(color.cgColor)
27 |
28 | context.beginPath()
29 | context.move(to: CGPoint(x: point.x - shapeHalf, y: point.y))
30 | context.addLine(to: CGPoint(x: point.x + shapeHalf, y: point.y))
31 | context.move(to: CGPoint(x: point.x, y: point.y - shapeHalf))
32 | context.addLine(to: CGPoint(x: point.x, y: point.y + shapeHalf))
33 | context.strokePath()
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Renderers/Scatter/IShapeRenderer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IShapeRenderer.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | @objc
15 | public protocol IShapeRenderer : NSObjectProtocol
16 | {
17 | /// Renders the provided ScatterDataSet with a shape.
18 | ///
19 | /// - parameter context: CGContext for drawing on
20 | /// - parameter dataSet: The DataSet to be drawn
21 | /// - parameter viewPortHandler: Contains information about the current state of the view
22 | /// - parameter point: Position to draw the shape at
23 | /// - parameter color: Color to draw the shape
24 | func renderShape(
25 | context: CGContext,
26 | dataSet: IScatterChartDataSet,
27 | viewPortHandler: ViewPortHandler,
28 | point: CGPoint,
29 | color: NSUIColor)
30 | }
31 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Renderers/Scatter/XShapeRenderer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // XShapeRenderer.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 | import Foundation
12 |
13 | open class XShapeRenderer : NSObject, IShapeRenderer
14 | {
15 | open func renderShape(
16 | context: CGContext,
17 | dataSet: IScatterChartDataSet,
18 | viewPortHandler: ViewPortHandler,
19 | point: CGPoint,
20 | color: NSUIColor)
21 | {
22 | let shapeSize = dataSet.scatterShapeSize
23 | let shapeHalf = shapeSize / 2.0
24 |
25 | context.setLineWidth(1.0)
26 | context.setStrokeColor(color.cgColor)
27 |
28 | context.beginPath()
29 | context.move(to: CGPoint(x: point.x - shapeHalf, y: point.y - shapeHalf))
30 | context.addLine(to: CGPoint(x: point.x + shapeHalf, y: point.y + shapeHalf))
31 | context.move(to: CGPoint(x: point.x + shapeHalf, y: point.y - shapeHalf))
32 | context.addLine(to: CGPoint(x: point.x - shapeHalf, y: point.y + shapeHalf))
33 | context.strokePath()
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Charts/Utils/TransformerHorizontalBarChart.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TransformerHorizontalBarChart.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(ChartTransformerHorizontalBarChart)
16 | open class TransformerHorizontalBarChart: Transformer
17 | {
18 | /// Prepares the matrix that contains all offsets.
19 | open override func prepareMatrixOffset(inverted: Bool)
20 | {
21 | if !inverted
22 | {
23 | _matrixOffset = CGAffineTransform(translationX: _viewPortHandler.offsetLeft, y: _viewPortHandler.chartHeight - _viewPortHandler.offsetBottom)
24 | }
25 | else
26 | {
27 | _matrixOffset = CGAffineTransform(scaleX: -1.0, y: 1.0)
28 | _matrixOffset = _matrixOffset.translatedBy(x: -(_viewPortHandler.chartWidth - _viewPortHandler.offsetRight),
29 | y: _viewPortHandler.chartHeight - _viewPortHandler.offsetBottom)
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Supporting Files/Charts.h:
--------------------------------------------------------------------------------
1 | //
2 | // Charts.h
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #include
13 |
14 | #if TARGET_OS_IPHONE || TARGET_OS_TV || TARGET_IPHONE_SIMULATOR
15 | #import
16 | #else
17 | #import
18 | #endif
19 |
20 | //! Project version number for Charts.
21 | FOUNDATION_EXPORT double ChartsVersionNumber;
22 |
23 | //! Project version string for Charts.
24 | FOUNDATION_EXPORT const unsigned char ChartsVersionString[];
25 |
26 | // In this header, you should import all the public headers of your framework using statements like #import
27 |
28 |
29 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Supporting Files/ChartsRealm.h:
--------------------------------------------------------------------------------
1 | //
2 | // ChartsRealm.h
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 |
14 | //! Project version number for ChartsRealm.
15 | FOUNDATION_EXPORT double ChartsRealmVersionNumber;
16 |
17 | //! Project version string for ChartsRealm.
18 | FOUNDATION_EXPORT const unsigned char ChartsRealmVersionString[];
19 |
20 | // In this header, you should import all the public headers of your framework using statements like #import
21 |
22 |
23 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Charts/Source/Supporting Files/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 3.0.1
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 23
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | Gitee
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIconFile
12 |
13 | CFBundleIdentifier
14 | $(PRODUCT_BUNDLE_IDENTIFIER)
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundleName
18 | $(PRODUCT_NAME)
19 | CFBundlePackageType
20 | APPL
21 | CFBundleShortVersionString
22 | 1.0.2.7
23 | CFBundleVersion
24 | 1027
25 | LSMinimumSystemVersion
26 | $(MACOSX_DEPLOYMENT_TARGET)
27 | LSUIElement
28 |
29 | NSAppTransportSecurity
30 |
31 | NSAllowsArbitraryLoads
32 |
33 |
34 | NSHumanReadableCopyright
35 | Copyright © 2016年 黄伟平. All rights reserved.
36 | NSMainStoryboardFile
37 | Main
38 | NSPrincipalClass
39 | NSApplication
40 |
41 |
42 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/Manager/VHGithubNotifierManager+ChartDataProvider.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHGithubNotifierManager+ChartDataProvider.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/1/4.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHGithubNotifierManager.h"
10 | #import "VHGithubNotifier-Swift.h"
11 |
12 | @interface VHGithubNotifierManager (ChartDataProvider)
13 |
14 | - (PieChartData *)userRepositoriesPieData;
15 |
16 | - (void)updateUserRepositoriesPieData;
17 |
18 | - (NSString *)urlFromRepositoryName:(NSString *)name;
19 |
20 | - (NSUInteger)repositoriesPieTotalStarNumber;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/Manager/VHGithubNotifierManager+Language.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHGithubNotifierManager+Language.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/20.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHGithubNotifierManager.h"
10 |
11 | extern NSInteger const AllLanguageID;
12 | extern NSInteger const UnknownLanguageID;
13 |
14 | @interface VHGithubNotifierManager (Language)
15 |
16 | - (void)innerInitializeLanguages;
17 |
18 | - (void)startTimerOfLanguage;
19 |
20 | - (void)stopTimerOfLanguage;
21 |
22 | - (void)updateLanguages;
23 |
24 | - (VHLoadStateType)languagesLoadState;
25 |
26 | - (NSInteger)matchLanguageIndexFromSearchString:(NSString *)searchLanguageName;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/Manager/VHGithubNotifierManager+Profile.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHGithubNotifierManager+Profile.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/8.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHGithubNotifierManager.h"
10 | #import "VHContributionBlock.h"
11 | #import "VHContributionChartDrawer.h"
12 |
13 | @interface VHGithubNotifierManager (Profile)
14 |
15 | #pragma mark - Cookie
16 |
17 | - (void)startTimerOfProfile;
18 |
19 | - (void)stopTimerOfProfile;
20 |
21 | - (void)updateProfile;
22 |
23 | - (VHLoadStateType)contributionLoadState;
24 |
25 | - (NSArray *)contributionBlocks;
26 |
27 | - (BOOL)loginCookieExist:(BOOL)sendNotification;
28 |
29 | - (VHContributionChartDrawer *)contributionChartDrawer;
30 |
31 | - (NSUInteger)yearContributions;
32 |
33 | - (NSString *)yearContributionsTimeString;
34 |
35 | - (NSUInteger)todayContributions;
36 |
37 | - (NSString *)todayContributionsTimeString;
38 |
39 | - (void)updateContributionChartLocally;
40 |
41 | @end
42 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/Manager/VHGithubNotifierManager+Realm.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHGithubNotifierManager+Realm.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/1/5.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHGithubNotifierManager.h"
10 | #import
11 |
12 | @interface VHGithubNotifierManager (Realm)
13 |
14 | /**
15 | Get the realm.
16 |
17 | @return realm
18 | */
19 | - (RLMRealm *)realm;
20 |
21 | /**
22 | Persist user data to realm.
23 | */
24 | - (void)persistUser;
25 |
26 | /**
27 | Persist user data to realm.
28 |
29 | @param user the user needed to persist
30 | */
31 | - (void)persistUser:(VHUser *)user;
32 |
33 | /**
34 | Load user data from realm.
35 | */
36 | - (void)loadUser;
37 |
38 | /**
39 | Realm directory.
40 |
41 | @return url of realm directory
42 | */
43 | - (NSURL *)realmDirectory;
44 |
45 | @end
46 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/Manager/VHGithubNotifierManager+Realm.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHGithubNotifierManager+Realm.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/1/5.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHGithubNotifierManager+Realm.h"
10 |
11 | @implementation VHGithubNotifierManager (Realm)
12 |
13 | - (RLMRealm *)realm
14 | {
15 | return [RLMRealm defaultRealm];
16 | }
17 |
18 | - (void)persistUser
19 | {
20 | [self persistUser:self.user];
21 | }
22 |
23 | - (void)persistUser:(VHUser *)user
24 | {
25 | @autoreleasepool
26 | {
27 | RLMRealm *realm = [self realm];
28 | [realm transactionWithBlock:^{
29 | [realm addOrUpdateObject:user];
30 | }];
31 | }
32 | }
33 |
34 | - (void)loadUser
35 | {
36 | VHUser *user = SAFE_CAST([[VHUser allObjects] firstObject], [VHUser class]);
37 | if (user != nil)
38 | {
39 | self.user = user;
40 | [self.user resetStarCount];
41 | }
42 | }
43 |
44 | - (NSURL *)realmDirectory
45 | {
46 | return [[self realm].configuration.fileURL URLByDeletingLastPathComponent];
47 | }
48 |
49 | @end
50 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/Manager/VHGithubNotifierManager+Trend.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHGithubNotifierManager+Trend.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/4.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHGithubNotifierManager.h"
10 | #import
11 |
12 | @interface VHGithubNotifierManager (Trend)
13 |
14 | - (void)innerInitializePropertiesForTrend;
15 |
16 | - (void)updateTrendData;
17 |
18 | - (RLMResults *)trendDatas;
19 |
20 | - (BOOL)loadTrendChartInWebView:(WKWebView *)webView withTrendContentIndex:(NSUInteger)contentIndex withTitle:(NSString *)title;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/Manager/VHGithubNotifierManager+Trending.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHGithubNotifierManager+Trending.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/21.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHGithubNotifierManager.h"
10 |
11 | @interface VHGithubNotifierManager (Trending)
12 |
13 | - (void)startTimerOfTrending;
14 |
15 | - (void)stopTimerOfTrending;
16 |
17 | - (void)updateTrending;
18 |
19 | - (VHLoadStateType)trendingContentLoadState;
20 |
21 | - (BOOL)hasValidTrendingData;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/Manager/VHGithubNotifierManager+UserNotification.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHGithubNotifierManager+UserNotification.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/1.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHGithubNotifierManager.h"
10 | #import "VHNotification.h"
11 | #import "CNUserNotificationCenter.h"
12 | #import "CNUserNotificationCenterDelegate.h"
13 |
14 | @interface VHGithubNotifierManager (UserNotification)
15 |
16 | - (void)innerInitializePropertiesForUserNotification;
17 |
18 | - (void)addNotifications:(NSArray *)notifications;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/Manager/VHGithubNotifierManager.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHGithubNotifierManager.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/25.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHUser.h"
10 | #import "VHLanguage.h"
11 | #import "VHTrendingRepository.h"
12 | #import "UAGithubEngine.h"
13 |
14 | @interface VHGithubNotifierManager : NSObject
15 |
16 | @property (nonatomic, strong) VHUser *user;
17 | @property (nonatomic, strong) NSArray *languages;
18 | @property (nonatomic, strong) NSArray *trendingRepositories;
19 |
20 | + (instancetype)sharedManager;
21 |
22 | - (UAGithubEngine *)engine;
23 |
24 | - (void)startTimerOfBasicInfo;
25 |
26 | - (void)stopTimerOfBasicInfo;
27 |
28 | - (void)updateBasicInfo;
29 |
30 | - (void)updateAllTimer;
31 |
32 | - (void)redirectLogToDocuments;
33 |
34 | - (void)confirmUserAccount:(NSString *)username withPassword:(NSString *)password withOauthToken:(NSString *)oauthToken;
35 |
36 | - (VHLoadStateType)repositoriesLoadState;
37 |
38 | - (BOOL)userAccountInfoExist;
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/Manager/VHGithubNotifierManager_Private.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHGithubNotifierManager_Private.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/27.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | #ifndef VHGithubNotifierManager_Private_h
10 | #define VHGithubNotifierManager_Private_h
11 |
12 | #import "VHUser.h"
13 | #import "VHGithubNotifierManager.h"
14 |
15 | @interface VHGithubNotifierManager ()
16 |
17 | @property (nonatomic, strong) VHUser *backupUser;
18 | @property (nonatomic, assign) BOOL hasLoadedLanguagesSuccessfully;
19 | @property (nonatomic, assign) BOOL hasLoadedTrendingsSuccessfully;
20 |
21 | @end
22 |
23 | #endif /* VHGithubNotifierManager_Private_h */
24 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/VHContributionBlock.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHContributionBlock.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/8.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "TFHpple.h"
10 |
11 | @interface VHContributionBlock : NSObject
12 |
13 | @property (nonatomic, assign) Byte level;
14 | @property (nonatomic, assign) NSUInteger contributions;
15 | @property (nonatomic, strong) NSDate *date;
16 |
17 | - (instancetype)initWithHppleElement:(TFHppleElement *)element;
18 |
19 | - (NSColor *)leftFaceColor;
20 |
21 | - (NSColor *)rightFaceColor;
22 |
23 | - (NSColor *)topFaceColor;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/VHContributionChartDrawer.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHContributionChartDrawer.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/8.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHContributionChartFaceDrawer.h"
10 | #import "VHContributionBlock.h"
11 |
12 | @interface VHContributionChartDrawer : NSObject
13 |
14 | @property (nonatomic, strong, readonly) NSArray *faces;
15 |
16 | - (void)readyForDrawingFromContributionBlocks:(NSArray *)contributionBlocks;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/VHContributionChartFaceDrawer.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHContributionChartFaceDrawer.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/8.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface VHContributionChartFaceDrawer : NSObject
10 |
11 | @property (nonatomic, assign) CGPoint p1;
12 | @property (nonatomic, assign) CGPoint p2;
13 | @property (nonatomic, assign) CGPoint p3;
14 | @property (nonatomic, assign) CGPoint p4;
15 | @property (nonatomic, strong) NSColor *color;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/VHContributionChartFaceDrawer.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHContributionChartFaceDrawer.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/8.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHContributionChartFaceDrawer.h"
10 |
11 | @implementation VHContributionChartFaceDrawer
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/VHHTTPResponseSerializer.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHHTTPResponseSerializer.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/20.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface VHHTTPResponseSerializer : AFHTTPResponseSerializer
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/VHHTTPResponseSerializer.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHHTTPResponseSerializer.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/20.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHHTTPResponseSerializer.h"
10 |
11 | @implementation VHHTTPResponseSerializer
12 |
13 | - (id)responseObjectForResponse:(NSURLResponse *)response
14 | data:(NSData *)data
15 | error:(NSError *__autoreleasing *)error
16 | {
17 | return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
18 | }
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/VHLanguage.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHLanguage.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/20.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface VHLanguage : RLMObject
12 |
13 | @property long long languageId;
14 | @property NSString *name;
15 | @property NSString *requestName;
16 | @property NSString *colorValue;
17 |
18 | + (NSArray *)languagesFromData:(NSString *)data;
19 |
20 | - (NSColor *)color;
21 |
22 | - (BOOL)isValid;
23 |
24 | @end
25 |
26 | RLM_ARRAY_TYPE(VHLanguage)
27 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/VHNotificationRecord.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHNotificationRecord.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/1.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface VHNotificationRecord : RLMObject
12 |
13 | @property long long notificationId;
14 | @property NSDate *latestUpdateTime;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/VHNotificationRecord.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHNotificationRecord.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/1.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHNotificationRecord.h"
10 |
11 | @implementation VHNotificationRecord
12 |
13 | + (NSString *)primaryKey
14 | {
15 | return @"notificationId";
16 | }
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/VHRecord.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHRecord.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/1/5.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface VHRecord : RLMObject
12 |
13 | @property NSDate *date;
14 | @property long long number;
15 |
16 | + (NSArray *)anytimeRecordsFromRecords:(NSArray *)records;
17 |
18 | + (NSArray *)dayRecordsFromRecords:(NSArray *)records;
19 |
20 | + (NSArray *)weekRecordsFromRecords:(NSArray *)records;
21 |
22 | + (NSArray *)monthRecordsFromRecords:(NSArray *)records;
23 |
24 | + (NSArray *)yearRecordsFromRecords:(NSArray *)records;
25 |
26 | - (instancetype)initWithNumber:(long long)number;
27 |
28 | @end
29 |
30 | RLM_ARRAY_TYPE(VHRecord)
31 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/VHRepository.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHRepository.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/25.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "VHRecord.h"
11 | #import "VHGithubNotifier-Swift.h"
12 |
13 | @interface VHRepository : RLMObject
14 |
15 | @property long long repositoryId;
16 | @property NSString *name;
17 | @property NSString *repositoryDescription;
18 | @property NSString *language;
19 | @property NSString *url;
20 | @property long long starNumber;
21 | @property long long forkNumber;
22 | @property BOOL isPrivate;
23 | @property long long ownerId;
24 | @property NSString *ownerAccount;
25 | @property NSString *ownerAvatar;
26 |
27 | @property RLMArray *starRecords;
28 | @property RLMArray *forkRecords;
29 |
30 | - (instancetype)initWithDataDictionary:(NSDictionary *)dictionary;
31 |
32 | /**
33 | Init records for a new repository.
34 | */
35 | - (void)addRecords;
36 |
37 | /**
38 | Update records from an old repository in realm.
39 |
40 | @param oldRepository old repository in realm
41 | */
42 | - (void)updateRecordsFrom:(VHRepository *)oldRepository;
43 |
44 | @end
45 |
46 | RLM_ARRAY_TYPE(VHRepository)
47 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/VHSimpleRepository.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHSimpleRepository.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/26.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface VHSimpleRepository : NSObject
10 |
11 | @property (nonatomic, assign) long long repositoryId;
12 | @property (nonatomic, strong) NSString *fullName;
13 | @property (nonatomic, strong) NSString *htmlUrl;
14 | @property (nonatomic, strong) NSString *ownerName;
15 | @property (nonatomic, strong) NSString *name;
16 |
17 | - (instancetype)initFromResponseDictionary:(NSDictionary *)dic;
18 |
19 | - (BOOL)isValid;
20 |
21 | - (BOOL)isEqualToRepository:(VHSimpleRepository *)repository;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/VHTrendChartParser.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHTrendChartParser.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/4.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHRecord.h"
10 |
11 | @interface VHTrendChartParser : NSObject
12 |
13 | + (NSString *)chartHtmlContentWithTitle:(NSString *)title withRecords:(NSArray *)records withYValueName:(NSString *)yValueName;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Model/VHTrendingRepository.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHTrendingRepository.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/21.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface VHTrendingRepository : NSObject
10 |
11 | @property (nonatomic, strong) NSString *url;
12 | @property (nonatomic, strong) NSString *name;
13 | @property (nonatomic, strong) NSString *ownerAccount;
14 | @property (nonatomic, strong) NSString *repositoryDescription;
15 | @property (nonatomic, strong) NSString *languageName;
16 | @property (nonatomic, strong) NSColor *languageColor;
17 | @property (nonatomic, strong) NSString *starNumberString;
18 | @property (nonatomic, assign, readonly) NSInteger starNumber;
19 | @property (nonatomic, strong) NSString *forkNumberString;
20 | @property (nonatomic, assign, readonly) NSInteger forkNumber;
21 | @property (nonatomic, strong) NSArray *contributorAvatars;
22 | @property (nonatomic, strong) NSString *trendingTip;
23 | @property (nonatomic, assign, readonly) NSInteger trendingTipStarNumber;
24 |
25 | - (BOOL)isValid;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/CNUserNotification/AppledocSettings.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | --project-name
6 | CNUserNotification
7 | --project-company
8 | cocoa:naut
9 | --project-version
10 | 0.1.4
11 | --company-id
12 | com.cocoanaut
13 | --ignore
14 |
15 | *.m
16 | CNAppDelegate.*
17 |
18 | --docset-platform-family
19 | osx
20 | --create-docset
21 |
22 | --install-docset
23 |
24 | --create-html
25 |
26 | --index-desc
27 | ../DocIndex.md
28 | --output
29 | ../Documentation/
30 | include
31 | ../Documentation/Images
32 | --warn-empty-description
33 |
34 | --warn-missing-arg
35 |
36 | --warn-unknown-directive
37 |
38 | --logformat
39 | xcode
40 | --exit-threshold
41 | 2
42 | --repeat-first-par
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/CNUserNotification/CNUserNotificationFeature.m:
--------------------------------------------------------------------------------
1 | //
2 | // CNUserNotificationFeature.m
3 | // CNUserNotification Example
4 | //
5 | // Created by Frank Gregor on 26.05.13.
6 | // Copyright (c) 2013 cocoa:naut. All rights reserved.
7 | //
8 |
9 | #import "CNUserNotificationFeature.h"
10 |
11 | @implementation CNUserNotificationFeature
12 |
13 | - (id)init
14 | {
15 | self = [super init];
16 | if (self) {
17 | _dismissDelayTime = 5;
18 | _lineBreakMode = NSLineBreakByTruncatingTail;
19 | _bannerImage = [NSApp applicationIconImage];
20 | }
21 | return self;
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/Hpple/XPathQuery.h:
--------------------------------------------------------------------------------
1 | //
2 | // XPathQuery.h
3 | // FuelFinder
4 | //
5 | // Created by Matt Gallagher on 4/08/08.
6 | // Copyright 2008 __MyCompanyName__. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NSArray *PerformHTMLXPathQuery(NSData *document, NSString *query);
12 | NSArray *PerformHTMLXPathQueryWithEncoding(NSData *document, NSString *query,NSString *encoding);
13 | NSArray *PerformXMLXPathQuery(NSData *document, NSString *query);
14 | NSArray *PerformXMLXPathQueryWithEncoding(NSData *document, NSString *query,NSString *encoding);
15 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/NSArray+Safe.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+Safe.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/22.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface NSArray (Safe)
10 |
11 | - (ObjectType)safeObjectAtIndex:(NSUInteger)index;
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/NSArray+Safe.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+Safe.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/22.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "NSArray+Safe.h"
10 |
11 | @implementation NSArray (Safe)
12 |
13 | - (id)safeObjectAtIndex:(NSUInteger)index
14 | {
15 | if (index >= self.count)
16 | {
17 | return nil;
18 | }
19 | return [self objectAtIndex:index];
20 | }
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/NSColor+Utils.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSColor+Utils.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/8.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface NSColor (Utils)
10 |
11 | - (NSColor *)lighterColor;
12 |
13 | - (NSColor *)darkerColor;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/NSColor+Utils.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSColor+Utils.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/8.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "NSColor+Utils.h"
10 |
11 | @implementation NSColor (Utils)
12 |
13 | - (NSColor *)lighterColor
14 | {
15 | CGFloat h, s, b, a;
16 | [self getHue:&h saturation:&s brightness:&b alpha:&a];
17 | return [NSColor colorWithHue:h
18 | saturation:s
19 | brightness:MIN(b * 1.3, 1.0)
20 | alpha:a];
21 | return nil;
22 | }
23 |
24 | - (NSColor *)darkerColor
25 | {
26 | CGFloat h, s, b, a;
27 | [self getHue:&h saturation:&s brightness:&b alpha:&a];
28 | return [NSColor colorWithHue:h
29 | saturation:s
30 | brightness:b * 0.75
31 | alpha:a];
32 | return nil;
33 | }
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/NSDate+Utils.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSDate+Utils.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/1/16.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface NSDate (Utils)
10 |
11 | - (NSDate *)dateOfDay;
12 |
13 | - (BOOL)isSameDayAsDate:(NSDate *)date;
14 |
15 | - (BOOL)isSameWeekAsDate:(NSDate *)date byWeekStartFrom:(VHGithubWeekStartFrom)from;
16 |
17 | - (BOOL)isSameMonthAsDate:(NSDate *)date;
18 |
19 | - (BOOL)isSameYearAsDate:(NSDate *)date;
20 |
21 | - (NSDate *)toLocalTime;
22 |
23 | - (NSDate *)toGlobalTime;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/NSImage+Tint.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSImage+Tint.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/7.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface NSImage (Tint)
10 |
11 | - (NSImage *)imageTintedWithColor:(NSColor *)tint;
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/NSImage+Tint.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSImage+Tint.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/7.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "NSImage+Tint.h"
10 |
11 | @implementation NSImage (Tint)
12 |
13 | - (NSImage *)imageTintedWithColor:(NSColor *)tint
14 | {
15 | NSImage *image = [self copy];
16 | if (tint) {
17 | [image lockFocus];
18 | [tint set];
19 | NSRect imageRect = {NSZeroPoint, [image size]};
20 | NSRectFillUsingOperation(imageRect, NSCompositeSourceAtop);
21 | [image unlockFocus];
22 | }
23 | return image;
24 | }
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/NSImageView+AFNetworking.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSImageView+AFNetworking.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/9.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "AFImageDownloader.h"
10 |
11 | @interface NSImageView (AFNetworking)
12 |
13 | + (void)setSharedImageDownloader:(AFImageDownloader *)imageDownloader;
14 |
15 | + (AFImageDownloader *)sharedImageDownloader;
16 |
17 | - (void)setImageWithURL:(NSURL *)url;
18 |
19 | - (void)setImageWithURL:(NSURL *)url
20 | placeholderImage:(nullable NSImage *)placeholderImage;
21 |
22 | - (void)setImageWithURLRequest:(NSURLRequest *)urlRequest
23 | placeholderImage:(nullable NSImage *)placeholderImage
24 | success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, NSImage *image))success
25 | failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, NSError *error))failure;
26 |
27 | - (void)cancelImageDownloadTask;
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/NSMutableArray+Queue.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSMutableArray+Queue.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/1.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface NSMutableArray (Queue)
10 |
11 | - (ObjectType)front;
12 |
13 | - (ObjectType)pop;
14 |
15 | - (void)push:(ObjectType)obj;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/NSMutableArray+Queue.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSMutableArray+Queue.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/1.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "NSMutableArray+Queue.h"
10 |
11 | @implementation NSMutableArray (Queue)
12 |
13 | - (id)front
14 | {
15 | return [self firstObject];
16 | }
17 |
18 | - (id)pop
19 | {
20 | id headObject = [self firstObject];
21 | if (headObject)
22 | {
23 | [self removeObjectAtIndex:0];
24 | }
25 | return headObject;
26 | }
27 |
28 | - (void)push:(id)obj
29 | {
30 | [self addObject:obj];
31 | }
32 |
33 | @end
34 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/NSMutableArray+Safe.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSMutableArray+Safe.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/29.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface NSMutableArray (Safe)
10 |
11 | - (ObjectType)safeObjectAtIndex:(NSUInteger)index;
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/NSMutableArray+Safe.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSMutableArray+Safe.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/29.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "NSMutableArray+Safe.h"
10 |
11 | @implementation NSMutableArray (Safe)
12 |
13 | - (id)safeObjectAtIndex:(NSUInteger)index
14 | {
15 | if (index >= self.count)
16 | {
17 | return nil;
18 | }
19 | return [self objectAtIndex:index];
20 | }
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/RLMResults+ToArray.h:
--------------------------------------------------------------------------------
1 | //
2 | // RLMResults+ToArray.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/21.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface RLMResults (ToArray)
12 |
13 | - (NSArray *)toArray;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/RLMResults+ToArray.m:
--------------------------------------------------------------------------------
1 | //
2 | // RLMResults+ToArray.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/21.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "RLMResults+ToArray.h"
10 |
11 | @implementation RLMResults (ToArray)
12 |
13 | - (NSArray *)toArray
14 | {
15 | NSMutableArray *array = [NSMutableArray arrayWithCapacity:self.count];
16 | for (RLMObject *object in self)
17 | {
18 | [array addObject:object];
19 | }
20 | return array;
21 | }
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/UAGithubEngine/NSArray+Utilities.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+Utilities.h
3 | // UAGithubEngine
4 | //
5 | // Created by Owain Hunt on 27/07/2010.
6 | // Copyright 2010 Owain R Hunt. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSArray (Utilities)
12 |
13 | - (id)firstObject;
14 | - (NSArray *)sortedWithKey:(NSString *)theKey ascending:(BOOL)ascending;
15 |
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/UAGithubEngine/NSArray+Utilities.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+Utilities.m
3 | // UAGithubEngine
4 | //
5 | // Created by Owain Hunt on 27/07/2010.
6 | // Copyright 2010 Owain R Hunt. All rights reserved.
7 | //
8 | // Credit: http://troybrant.net/blog/2010/02/adding-firstobject-to-nsarray/
9 |
10 | #import "NSArray+Utilities.h"
11 |
12 |
13 | @implementation NSArray (Utilities)
14 |
15 | - (id)firstObject
16 | {
17 | if ([self count] > 0)
18 | {
19 | return [self objectAtIndex:0];
20 | }
21 | return nil;
22 | }
23 |
24 |
25 | - (NSArray *)sortedWithKey:(NSString *)theKey ascending:(BOOL)ascending
26 | {
27 | return [self sortedArrayUsingDescriptors:[NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:theKey ascending:ascending selector:@selector(caseInsensitiveCompare:)]]];
28 | }
29 |
30 |
31 | @end
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/UAGithubEngine/NSData+Base64.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSData+Base64.h
3 | // base64
4 | //
5 | // Created by Matt Gallagher on 2009/06/03.
6 | // Copyright 2009 Matt Gallagher. All rights reserved.
7 | //
8 | // Permission is given to use this source code file, free of charge, in any
9 | // project, commercial or otherwise, entirely at your risk, with the condition
10 | // that any redistribution (in part or whole) of source code must retain
11 | // this copyright and permission notice. Attribution in compiled projects is
12 | // appreciated but not required.
13 | //
14 |
15 | #import
16 |
17 | void *NewBase64Decode(
18 | const char *inputBuffer,
19 | size_t length,
20 | size_t *outputLength);
21 |
22 | char *NewBase64Encode(
23 | const void *inputBuffer,
24 | size_t length,
25 | bool separateLines,
26 | size_t *outputLength);
27 |
28 | @interface NSData (Base64)
29 |
30 | + (NSData *)dataFromBase64String:(NSString *)aString;
31 | - (NSString *)base64EncodedString;
32 |
33 | @end
34 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/UAGithubEngine/NSInvocation+Blocks.h:
--------------------------------------------------------------------------------
1 | // NSInvocation+Blocks.h - http://github.com/rentzsch/NSInvocation-blocks
2 | // Copyright (c) 2010 Jonathan 'Wolf' Rentzsch: http://rentzsch.com
3 | // Some rights reserved: http://opensource.org/licenses/mit-license.php
4 |
5 | #import
6 |
7 | @interface NSInvocation (Blocks)
8 |
9 | /*
10 | Usage example:
11 |
12 | NSInvocation *invocation = [NSInvocation jr_invocationWithTarget:myObject block:^(id myObject){
13 | [myObject someMethodWithArg:42.0];
14 | }];
15 | */
16 |
17 | + (id)jr_invocationWithTarget:(id)target block:(void (^)(id target))block;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/UAGithubEngine/NSInvocation+Blocks.m:
--------------------------------------------------------------------------------
1 | // NSInvocation+Blocks.m - http://github.com/rentzsch/NSInvocation-blocks
2 | // Copyright (c) 2010 Jonathan 'Wolf' Rentzsch: http://rentzsch.com
3 | // Some rights reserved: http://opensource.org/licenses/mit-license.php
4 |
5 | #import "NSInvocation+Blocks.h"
6 |
7 | @interface JRInvocationGrabber : NSProxy {
8 | id target;
9 | NSInvocation *invocation;
10 | }
11 | @property (retain) id target;
12 | @property (retain) NSInvocation *invocation;
13 | @end
14 |
15 | @implementation JRInvocationGrabber
16 | @synthesize target, invocation;
17 |
18 | - (id)initWithTarget:(id)target_ {
19 | self.target = target_;
20 | return self;
21 | }
22 |
23 | - (NSMethodSignature*)methodSignatureForSelector:(SEL)selector_ {
24 | return [self.target methodSignatureForSelector:selector_];
25 | }
26 |
27 | - (void)forwardInvocation:(NSInvocation*)invocation_ {
28 | [invocation_ setTarget:self.target];
29 | self.invocation = invocation_;
30 | }
31 |
32 | - (void)dealloc {
33 | self.target = nil;
34 | self.invocation = nil;
35 | }
36 | @end
37 |
38 |
39 | @implementation NSInvocation (jr_block)
40 |
41 | + (id)jr_invocationWithTarget:(id)target_ block:(void (^)(id target))block_ {
42 | JRInvocationGrabber *grabber = [[JRInvocationGrabber alloc] initWithTarget:target_];
43 | block_(grabber);
44 | return grabber.invocation;
45 | }
46 |
47 | @end
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/UAGithubEngine/NSString+UAGithubEngineUtilities.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+UAGithubEngineUtilities.h
3 | // UAGithubEngine
4 | //
5 | // Created by Owain Hunt on 08/04/2010.
6 | // Copyright 2010 Owain R Hunt. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 |
13 | @interface NSString(UAGithubEngineUtilities)
14 |
15 | - (NSDate *)dateFromGithubDateString;
16 | - (NSString *)encodedString;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/UAGithubEngine/NSString+UAGithubEngineUtilities.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+UAGithubEngineUtilities.m
3 | // UAGithubEngine
4 | //
5 | // Created by Owain Hunt on 08/04/2010.
6 | // Copyright 2010 Owain R Hunt. All rights reserved.
7 | //
8 |
9 | #import "NSString+UAGithubEngineUtilities.h"
10 |
11 |
12 | @implementation NSString(UAGithubEngineUtilities)
13 |
14 | - (NSDate *)dateFromGithubDateString {
15 |
16 | NSDateFormatter *df = [[NSDateFormatter alloc] init];
17 | NSString *dateString = self;
18 |
19 | if (![[self substringWithRange:NSMakeRange([self length] - 1, 1)] isEqualToString:@"Z"])
20 | {
21 | NSMutableString *newDate = [self mutableCopy];
22 | [newDate deleteCharactersInRange:NSMakeRange(19, 1)];
23 | [df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
24 | dateString = newDate;
25 | }
26 | else
27 | {
28 | [df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
29 | }
30 |
31 | return [df dateFromString:dateString];
32 |
33 | }
34 |
35 |
36 | - (NSString *)encodedString
37 | {
38 | return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge CFStringRef)self, NULL, (CFStringRef)@";/?:@&=$+{}<>,", kCFStringEncodingUTF8);
39 |
40 | }
41 |
42 |
43 | @end
44 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/UAGithubEngine/NSString+UUID.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+UUID.h
3 | // MGTwitterEngine
4 | //
5 | // Created by Matt Gemmell on 16/09/2007.
6 | // Copyright 2008 Instinctive Code.
7 | //
8 |
9 |
10 | @interface NSString (UUID)
11 |
12 | + (NSString*)stringWithNewUUID;
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/UAGithubEngine/NSString+UUID.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+UUID.m
3 | // MGTwitterEngine
4 | //
5 | // Created by Matt Gemmell on 16/09/2007.
6 | // Copyright 2008 Instinctive Code.
7 | //
8 |
9 | #import "NSString+UUID.h"
10 |
11 |
12 | @implementation NSString (UUID)
13 |
14 |
15 | + (NSString*)stringWithNewUUID
16 | {
17 | // Create a new UUID
18 | CFUUIDRef uuidObj = CFUUIDCreate(nil);
19 |
20 | // Get the string representation of the UUID
21 | NSString *newUUID = (__bridge_transfer NSString*)CFUUIDCreateString(nil, uuidObj);
22 | CFRelease(uuidObj);
23 | return newUUID;
24 | }
25 |
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/UAGithubEngine/UAGithubEngineConstants.h:
--------------------------------------------------------------------------------
1 | //
2 | // UAGithubEngineConstants.h
3 | // IssuesHub
4 | //
5 | // Created by Owain Hunt on 11/11/2010.
6 | // Copyright 2010 Owain R Hunt. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | extern NSString * const UAGithubAPILimitReached;
13 |
14 | #define UAGithubReachabilityStatusDidChangeNotification @"UAGithubReachabilityStatusDidChangeNotification"
15 |
16 | #define UAGithubIssueClosedState @"closed"
17 | #define UAGithubIssueOpenState @"open"
18 |
19 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/UAGithubEngine/UAGithubEngineConstants.m:
--------------------------------------------------------------------------------
1 | //
2 | // UAGithubEngineConstants.m
3 | // IssuesHub
4 | //
5 | // Created by Owain Hunt on 11/11/2010.
6 | // Copyright 2010 Owain R Hunt. All rights reserved.
7 | //
8 |
9 | #import "UAGithubEngineConstants.h"
10 |
11 |
12 | NSString * const UAGithubAPILimitReached = @"UAGithubAPILimitReached";
13 |
14 |
15 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/UAGithubEngine/UAGithubJSONParser.h:
--------------------------------------------------------------------------------
1 | //
2 | // UAGithubJSONParser.h
3 | // UAGithubEngine
4 | //
5 | // Created by Owain Hunt on 27/07/2010.
6 | // Copyright 2010 Owain R Hunt. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "UAGithubEngineRequestTypes.h"
12 |
13 | @interface UAGithubJSONParser : NSObject
14 | {
15 |
16 | }
17 |
18 | + (id)parseJSON:(NSData *)theJSON error:(NSError **)error;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/UAGithubEngine/UAGithubURLConnection.h:
--------------------------------------------------------------------------------
1 | //
2 | // UAGithubURLConnection.h
3 | // UAGithubEngine
4 | //
5 | // Created by Owain Hunt on 26/04/2010.
6 | // Copyright 2010 Owain R Hunt. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "UAGithubEngineRequestTypes.h"
11 |
12 | @interface UAGithubURLConnection : NSURLConnection
13 | {
14 | NSMutableData *data;
15 | UAGithubRequestType requestType;
16 | UAGithubResponseType responseType;
17 | NSString *identifier;
18 | }
19 |
20 |
21 | @property (nonatomic, strong) NSMutableData *data;
22 | @property (nonatomic, assign) UAGithubRequestType requestType;
23 | @property (nonatomic, assign) UAGithubResponseType responseType;
24 | @property (nonatomic, strong) NSString *identifier;
25 |
26 | + (id)asyncRequest:(NSURLRequest *)request success:(id(^)(NSData *, NSURLResponse *))successBlock failure:(id(^)(NSError *))failureBlock_;
27 | + (id)asyncRequest:(NSURLRequest *)request success:(id(^)(NSData *, NSURLResponse *))successBlock error:(NSError *__strong *)error;
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/UAGithubEngine/UAReachability.h:
--------------------------------------------------------------------------------
1 | //
2 | // UAReachability.h
3 | // ReachTest
4 | //
5 | // Created by Owain Hunt on 10/01/2011.
6 | // Copyright 2011 Owain R Hunt. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | typedef enum {
13 | NotReachable = 0,
14 | Reachable,
15 | } NetworkStatus;
16 |
17 |
18 | @interface UAReachability : NSObject {
19 | SCNetworkReachabilityRef reachabilityRef;
20 | }
21 |
22 |
23 | - (NetworkStatus)networkStatusForFlags:(SCNetworkReachabilityFlags)flags;
24 | - (NetworkStatus)currentReachabilityStatus;
25 |
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/VHCursorButton+AFNetworking.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHCursorButton+AFNetworking.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/9.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHCursorButton.h"
10 | #import "AFImageDownloader.h"
11 |
12 | @interface VHCursorButton (AFNetworking)
13 |
14 | + (void)setSharedImageDownloader:(AFImageDownloader *)imageDownloader;
15 |
16 | + (AFImageDownloader *)sharedImageDownloader;
17 |
18 | - (void)setImageWithURL:(NSURL *)url;
19 |
20 | - (void)setImageWithURL:(NSURL *)url
21 | placeholderImage:(nullable NSImage *)placeholderImage;
22 |
23 | - (void)setImageWithURLRequest:(NSURLRequest *)urlRequest
24 | placeholderImage:(nullable NSImage *)placeholderImage
25 | success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, NSImage *image))success
26 | failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, NSError *error))failure;
27 |
28 | - (void)cancelImageDownloadTask;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/VHDateValueFormatter.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHDateValueFormatter.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/1/16.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHGithubNotifier-Swift.h"
10 |
11 | @interface VHDateValueFormatter : NSObject
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/VHDateValueFormatter.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHDateValueFormatter.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/1/16.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHDateValueFormatter.h"
10 |
11 | @interface VHDateValueFormatter ()
12 |
13 | @property NSDateFormatter *dateFormatter;
14 |
15 | @end
16 |
17 | @implementation VHDateValueFormatter
18 |
19 | - (id)init
20 | {
21 | self = [super init];
22 | if (self)
23 | {
24 | _dateFormatter = [[NSDateFormatter alloc] init];
25 | _dateFormatter.dateFormat = @"dd MMM HH:mm";
26 | }
27 | return self;
28 | }
29 |
30 | - (NSString *)stringForValue:(double)value axis:(ChartAxisBase *)axis
31 | {
32 | return [_dateFormatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:value]];
33 | }
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/VHLog.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHLog.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/26.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | static void VHInnerLog(NSString *category, NSString* format, va_list argList)
10 | {
11 | va_list copyList;
12 | va_copy(copyList, argList);
13 |
14 | if ([format length] == 0)
15 | {
16 | return;
17 | }
18 |
19 | NSLogv([[NSMutableString alloc] initWithFormat:@"[%@] %@", category, format], argList);
20 | }
21 |
22 | void VHLog(NSString *category, NSString* format, ...)
23 | {
24 | va_list argList;
25 | va_start(argList, format);
26 | VHInnerLog(category,format, argList);
27 | va_end(argList);
28 | }
29 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/VHUtils+TransForm.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHUtils+TransForm.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/28.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHUtils.h"
10 | #import "VHNotification.h"
11 |
12 | @interface VHUtils (TransForm)
13 |
14 | + (NSImage *)imageFromGithubContentType:(VHGithubContentType)type;
15 |
16 | + (NSColor *)colorFromHexColorCodeInString:(NSString *)string;
17 |
18 | + (NSString *)hexadecimalValueFromColor:(NSColor *)color;
19 |
20 | + (NSString *)encodeToPercentEscapeString:(NSString *)input;
21 |
22 | + (NSDate *)dateFromGithubTimeString:(NSString *)timeString;
23 |
24 | + (VHNotificationReasonType)notificationReasonTypeFromString:(NSString *)string;
25 |
26 | + (NSString *)timeStringToNowFromTime:(NSDate *)time;
27 |
28 | + (VHNotificationType)notificationTypeFromString:(NSString *)string;
29 |
30 | + (NSImage *)imageFromNotificationType:(VHNotificationType)type;
31 |
32 | + (NSString *)githubTimeStringFromDate:(NSDate *)date;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Utils/VHUtils.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHUtils.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/25.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHGithubNotifier-Swift.h"
10 |
11 | @interface VHUtils : NSObject
12 |
13 | + (BOOL)isDarkMode;
14 |
15 | + (CGFloat)widthOfString:(NSString *)string withFont:(NSFont *)font;
16 |
17 | + (CGFloat)heightOfString:(NSString *)string withFont:(NSFont *)font;
18 |
19 | + (BOOL)point:(CGPoint)point notOutOfRect:(CGRect)rect;
20 |
21 | + (void)setRandomColor:(ChartDataSet *)chartDataSet withNumber:(NSInteger)count;
22 |
23 | + (NSColor *)randomColor;
24 |
25 | + (NSColor *)trendColor:(NSColor *)color withCount:(NSUInteger)count withRow:(NSUInteger)row;
26 |
27 | + (NSTextField *)labelWithFrame:(NSRect)frame;
28 |
29 | + (void)openUrl:(NSString *)url;
30 |
31 | + (void)openURL:(NSURL *)url;
32 |
33 | + (void)resetWKWebViewExceptCookie;
34 |
35 | + (void)resetWKWebView;
36 |
37 | + (void)scrollViewToTop:(NSScrollView *)scrollView;
38 |
39 | + (NSArray *)randomColors;
40 |
41 | + (NSInteger)unsignIntFromString:(NSString *)string;
42 |
43 | @end
44 |
--------------------------------------------------------------------------------
/VHGithubNotifier/VC/VHNotificationVC.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHNotificationVC.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/19.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHViewController.h"
10 |
11 | @interface VHNotificationVC : VHViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/VC/VHPieVC.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHPieVC.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/19.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHViewController.h"
10 |
11 | @interface VHPieVC : VHViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/VC/VHProfileVC.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHProfileVC.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/29.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHViewController.h"
10 |
11 | @interface VHProfileVC : VHViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/VC/VHTabVC.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHTabVC.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/28.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHViewController.h"
10 |
11 | @interface VHTabVC : VHViewController
12 |
13 | - (void)updateArrowWithStatusItemCenterX:(CGFloat)centerX;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/VHGithubNotifier/VC/VHTrendVC.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHTrendVC.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/1/13.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHViewController.h"
10 |
11 | @interface VHTrendVC : VHViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/VC/VHTrendingVC.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHTrendingVC.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/19.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHViewController.h"
10 |
11 | @interface VHTrendingVC : VHViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/VC/VHViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHViewController.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/22.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface VHViewController : NSViewController
10 |
11 | - (void)addNotification:(NSString *)name forSelector:(SEL)selector;
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/VC/VHViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHViewController.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/22.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHViewController.h"
10 |
11 | @interface VHViewController ()
12 |
13 | @end
14 |
15 | @implementation VHViewController
16 |
17 | - (void)addNotification:(NSString *)name forSelector:(SEL)selector
18 | {
19 | [[NSNotificationCenter defaultCenter] addObserver:self
20 | selector:selector
21 | name:name
22 | object:nil];
23 | }
24 |
25 | - (void)dealloc
26 | {
27 | [[NSNotificationCenter defaultCenter] removeObserver:self];
28 | }
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/VHGithubNotifier/VHGithubNotifier+Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // VHGithubNotifier+Prefix.pch
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/25.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | #ifndef VHGithubNotifier_Prefix_pch
10 | #define VHGithubNotifier_Prefix_pch
11 |
12 | // Include any system framework and library headers here that should be included in all compilation units.
13 | // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.
14 |
15 | #import "VHDefines.h"
16 | #import "VHGithubNotifierNotifications.h"
17 |
18 | #endif /* VHGithubNotifier_Prefix_pch */
19 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/NSView+Position.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSView+Position.h
3 | // QMCGIProtocolAnalyseTool
4 | //
5 | // Created by viktorhuang on 2016/12/21.
6 | // Copyright © 2016年 Tencent. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSView (Position)
12 |
13 | - (CGFloat)getTop;
14 | - (CGFloat)getLeft;
15 | - (CGFloat)getRight;
16 | - (CGFloat)getBottom;
17 | - (CGFloat)getWidth;
18 | - (CGFloat)getHeight;
19 | - (CGFloat)getCenterX;
20 | - (CGFloat)getCenterY;
21 | - (void)setTop:(CGFloat)top;
22 | - (void)setLeft:(CGFloat)left;
23 | - (void)setLeftTop:(CGPoint)leftTop;
24 | - (CGPoint)origin;
25 | - (void)setOrigin:(CGPoint) point;
26 |
27 | - (CGSize)size;
28 | - (void)setSize:(CGSize) size;
29 |
30 | - (CGFloat)x;
31 | - (void)setX:(CGFloat)x;
32 |
33 | - (CGFloat)y;
34 | - (void)setY:(CGFloat)y;
35 |
36 | - (CGFloat)height;
37 | - (void)setHeight:(CGFloat)height;
38 |
39 | - (CGFloat)width;
40 | - (void)setWidth:(CGFloat)width;
41 |
42 | // 横向设置,同时设定x和宽度
43 | - (void) setLeft:(CGFloat)left width:(CGFloat)width;
44 |
45 | // 垂直设置,同时设定y和高度
46 | - (void) setTop:(CGFloat)top height:(CGFloat)height;
47 |
48 | // 同时设定宽和高
49 | - (void)setWidth:(CGFloat)width height:(CGFloat)height;
50 |
51 | // 设置垂直方向的中心点
52 | - (void) setVCenter:(CGFloat)vCenter;
53 |
54 | // 设置水平方向的中心点
55 | - (void) setHCenter:(CGFloat)hCenter;
56 |
57 | - (NSRect)frameRelativeToWindow;
58 |
59 | - (NSRect)frameRelativeToScreen;
60 |
61 | - (void)removeAllSubViews;
62 |
63 | @end
64 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHContributionChartView.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHContributionChartView.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/8.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface VHContributionChartView : NSView
10 |
11 | @end
12 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHContributionChartView.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHContributionChartView.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/8.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHContributionChartView.h"
10 | #import "VHContributionBlock.h"
11 | #import "VHGithubNotifierManager+Profile.h"
12 | #import "VHGithubNotifierManager+UserDefault.h"
13 | #import "VHUtils+TransForm.h"
14 | #import "VHContributionChartDrawer.h"
15 | #import "VHContributionChartFaceDrawer.h"
16 |
17 | @implementation VHContributionChartView
18 |
19 | - (void)drawRect:(NSRect)dirtyRect
20 | {
21 | [super drawRect:dirtyRect];
22 |
23 | VHContributionChartDrawer *drawer = [[VHGithubNotifierManager sharedManager] contributionChartDrawer];
24 |
25 | NSBezierPath *path = [NSBezierPath bezierPath];
26 | path.lineWidth = 0;
27 |
28 | for (VHContributionChartFaceDrawer *faceDrawer in drawer.faces)
29 | {
30 | [path removeAllPoints];
31 | [path moveToPoint:faceDrawer.p1];
32 | [path lineToPoint:faceDrawer.p2];
33 | [path lineToPoint:faceDrawer.p3];
34 | [path lineToPoint:faceDrawer.p4];
35 | [faceDrawer.color set];
36 | [path closePath];
37 | [path fill];
38 | }
39 | }
40 |
41 | @end
42 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHCursorButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHCursorButton.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/1.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface VHCursorButton : NSButton
10 |
11 | @property (nonatomic, strong) NSCursor *cursor;
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHCursorButton.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHCursorButton.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/1.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHCursorButton.h"
10 |
11 | @implementation VHCursorButton
12 |
13 | - (instancetype)initWithCoder:(NSCoder *)coder
14 | {
15 | self = [super initWithCoder:coder];
16 | if (self)
17 | {
18 | _cursor = [NSCursor pointingHandCursor];
19 | }
20 | return self;
21 | }
22 |
23 | - (instancetype)initWithFrame:(NSRect)frameRect
24 | {
25 | self = [super initWithFrame:frameRect];
26 | if (self)
27 | {
28 | _cursor = [NSCursor pointingHandCursor];
29 | }
30 | return self;
31 | }
32 |
33 | - (instancetype)init
34 | {
35 | self = [super init];
36 | if (self)
37 | {
38 | _cursor = [NSCursor pointingHandCursor];
39 | }
40 | return self;
41 | }
42 |
43 | - (void)resetCursorRects
44 | {
45 | if (self.cursor)
46 | {
47 | [self addCursorRect:[self bounds] cursor: self.cursor];
48 | }
49 | else
50 | {
51 | [super resetCursorRects];
52 | }
53 | }
54 |
55 | @end
56 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHHorizontalLine.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHHorizontalLine.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/7.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface VHHorizontalLine : NSView
10 |
11 | @property (nonatomic, assign) CGFloat lineWidth;
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHHorizontalLine.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHHorizontalLine.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/7.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHHorizontalLine.h"
10 | #import "VHUtils+TransForm.h"
11 |
12 | @implementation VHHorizontalLine
13 |
14 | - (void)drawRect:(NSRect)dirtyRect
15 | {
16 | [super drawRect:dirtyRect];
17 |
18 | NSBezierPath *line = [NSBezierPath bezierPath];
19 | [line moveToPoint:NSMakePoint(0, 0)];
20 | [line lineToPoint:NSMakePoint(NSMaxX([self bounds]), 0)];
21 | [line setLineWidth:self.lineWidth];
22 | [[VHUtils colorFromHexColorCodeInString:@"#aaaaaa"] set];
23 | [line stroke];
24 | }
25 |
26 | - (void)setLineWidth:(CGFloat)lineWidth
27 | {
28 | _lineWidth = lineWidth;
29 | [self setNeedsDisplay:YES];
30 | }
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHLanguageDotView.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHLanguageDotView.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/23.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface VHLanguageDotView : NSView
10 |
11 | @property (nonatomic, strong) NSColor *languageColor;
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHLanguageDotView.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHLanguageDotView.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/23.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHLanguageDotView.h"
10 |
11 | @implementation VHLanguageDotView
12 |
13 | - (void)drawRect:(NSRect)dirtyRect
14 | {
15 | [super drawRect:dirtyRect];
16 | NSBezierPath* circlePath = [NSBezierPath bezierPath];
17 | [circlePath appendBezierPathWithOvalInRect:self.bounds];
18 | [self.languageColor setFill];
19 | [circlePath fill];
20 | }
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHLanguagesButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHLanguagesButton.h
3 | // VHGithubNotifier
4 | //
5 | // Created by Nightonke on 2017/9/23.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHCursorButton.h"
10 |
11 | @interface VHLanguagesButton : VHCursorButton
12 |
13 | - (void)setSelectedLanguageIDs:(NSSet *)languageIDs;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHLanguagesButton.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHLanguagesButton.m
3 | // VHGithubNotifier
4 | //
5 | // Created by Nightonke on 2017/9/23.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHLanguagesButton.h"
10 | #import "VHLanguageDotView.h"
11 | #import "NSView+Position.h"
12 | #import "VHLanguage.h"
13 |
14 | @implementation VHLanguagesButton
15 |
16 | - (void)setSelectedLanguageIDs:(NSSet *)languageIDs
17 | {
18 | [self removeAllSubViews];
19 |
20 | CGFloat startX = 10;
21 | CGFloat paddingX = 10;
22 | CGFloat width = 10;
23 | __block NSInteger index = 0;
24 | [languageIDs enumerateObjectsUsingBlock:^(NSNumber * _Nonnull obj, BOOL * _Nonnull stop) {
25 | CGFloat x = startX + index * (width + paddingX);
26 | if (x + width > self.width)
27 | {
28 | *stop = YES;
29 | }
30 | else
31 | {
32 | RLMResults *languages = [VHLanguage objectsWhere:@"languageId = %d", [obj integerValue]];
33 | VHLanguage *language = [languages firstObject];
34 | VHLanguageDotView *dot = [[VHLanguageDotView alloc] initWithFrame:NSMakeRect(startX + index * (width + paddingX), 0, width, width)];
35 | [dot setLanguageColor:language.color];
36 | [dot setVCenter:self.height / 2];
37 | [self addSubview:dot];
38 | index++;
39 | }
40 | }];
41 | }
42 |
43 | @end
44 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHNotificationGroupBodyCellView.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHNotificationGroupBodyCellView.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/28.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHNotification.h"
10 |
11 | @interface VHNotificationGroupBodyCellView : NSTableCellView
12 |
13 | @property (nonatomic, strong) VHNotification *notification;
14 | @property (nonatomic, assign) BOOL isLastBody;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHNotificationGroupHeaderCellView.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHNotificationGroupHeaderCellView.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/28.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHSimpleRepository.h"
10 |
11 | @interface VHNotificationGroupHeaderCellView : NSTableCellView
12 |
13 | @property (nonatomic, strong) VHSimpleRepository *repository;
14 |
15 | - (void)setNotificationNumber:(NSUInteger)notificationNumber;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHNotificationGroupView.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHNotificationGroupView.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/27.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface VHNotificationGroupView : NSView
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHNotificationGroupView.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHNotificationGroupView.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/27.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHNotificationGroupView.h"
10 |
11 | @implementation VHNotificationGroupView
12 |
13 | - (void)drawRect:(NSRect)dirtyRect {
14 | [super drawRect:dirtyRect];
15 |
16 | // Drawing code here.
17 | }
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHNotificationHeaderCellView.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHNotificationHeaderCellView.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/3.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface VHNotificationHeaderCellView : NSTableCellView
10 |
11 | - (void)setNotificationNumber:(NSUInteger)notificationNumber;
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHPopUpButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHPopUpButton.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/28.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface VHPopUpButton : NSPopUpButton
10 |
11 | @property (nonatomic, assign) CGFloat menuWindowXOffset;
12 | @property (nonatomic, assign) CGFloat menuWindowYOffset;
13 | @property (nonatomic, assign) CGFloat menuWindowWidth;
14 | @property (nonatomic, assign) CGFloat menuWindowHeight;
15 |
16 | @property (nonatomic, strong) NSCursor *cursor;
17 |
18 | - (void)setMenuWindowRelativeFrame:(NSRect)frame;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHPopUpButtonCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHPopUpButtonCell.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/7.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface VHPopUpButtonCell : NSPopUpButtonCell
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHPopUpButtonCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHPopUpButtonCell.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/7.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHPopUpButtonCell.h"
10 |
11 | @implementation VHPopUpButtonCell
12 |
13 | - (void)drawImageWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
14 | {
15 | [super drawImageWithFrame:cellFrame inView:controlView];
16 | }
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHScroller.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHScroller.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/23.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface VHScroller : NSView
10 |
11 | - (instancetype)initWithFrame:(NSRect)frameRect
12 | withImageFrame:(NSRect)imageFrame
13 | withImageName:(NSString *)imageName
14 | withPressedImageName:(NSString *)pressedImageName
15 | withScrollView:(NSScrollView *)scrollView;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHScrollerThumb.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHScrollerThumb.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/23.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | typedef NS_ENUM(NSUInteger, VHDragDirectionType)
10 | {
11 | VHDragDirectionTypeNeither = 0,
12 | VHDragDirectionTypeHorizontal = 1,
13 | VHDragDirectionTypeVertical = 2,
14 | VHDragDirectionTypeBoth = 3,
15 | };
16 |
17 | @protocol VHScrollerThumbDelegate
18 |
19 | @required
20 | - (void)onThumbScrolled:(CGFloat)progress;
21 |
22 | @end
23 |
24 | @interface VHScrollerThumb : NSImageView
25 |
26 | @property (nonatomic, assign) VHDragDirectionType dragDirection;
27 | @property (nonatomic, weak) id delegate;
28 |
29 | - (instancetype)initWithFrame:(NSRect)frameRect
30 | withImageName:(NSString *)imageName
31 | withPressedImageName:(NSString *)pressedImageName;
32 |
33 | @end
34 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHSecureTextField.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHSecureTextField.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/25.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @class VHSecureTextField;
10 |
11 | @protocol VHSecureTextFieldDelegate
12 |
13 | @required
14 | - (void)onSecureTextFieldEnterButtonClicked:(VHSecureTextField *)textField;
15 |
16 | @end
17 |
18 | @interface VHSecureTextField : NSSecureTextField
19 |
20 | @property (nonatomic, weak) id secureTextFieldDelegate;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHSecureTextField.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHSecureTextField.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/25.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHSecureTextField.h"
10 |
11 | @implementation VHSecureTextField
12 |
13 | - (BOOL)performKeyEquivalent:(NSEvent *)event
14 | {
15 | if ([[event charactersIgnoringModifiers] isEqualToString:@"\r"]
16 | && self.secureTextFieldDelegate
17 | && [self.secureTextFieldDelegate respondsToSelector:@selector(onSecureTextFieldEnterButtonClicked:)])
18 | {
19 | [self.secureTextFieldDelegate onSecureTextFieldEnterButtonClicked:self];
20 | }
21 | return [super performKeyEquivalent:event];
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHSecureTextFieldCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHSecureTextFieldCell.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/24.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface VHSecureTextFieldCell : NSSecureTextFieldCell
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHSettingsCellView.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHSettingsCellView.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/8.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface VHSettingsCellView : NSTableCellView
10 |
11 | - (void)updateSettings;
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHStateView.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHStateView.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/21.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | typedef NS_ENUM(NSUInteger, VHStateViewStateType)
10 | {
11 | VHStateViewStateTypeLoading = 1,
12 | VHStateViewStateTypeLoadFailed = 2,
13 | VHStateViewStateTypeLoadSuccessfully = 3,
14 | VHStateViewStateTypeEmpty = 4,
15 | };
16 |
17 | @protocol VHStateViewDelegate
18 |
19 | @required
20 | - (void)onRetryButtonClicked;
21 |
22 | @end
23 |
24 | @interface VHStateView : NSView
25 |
26 | @property (nonatomic, strong) IBOutlet NSView *view;
27 |
28 | @property (nonatomic, assign) VHStateViewStateType state;
29 |
30 | @property (nonatomic, weak) id delegate;
31 |
32 | - (void)setRetryText:(NSString *)retryText;
33 |
34 | - (void)setEmptyText:(NSString *)emptyText;
35 |
36 | - (void)setLoadingText:(NSString *)loadingText;
37 |
38 | - (void)setEmptyImage:(NSString *)emptyImage;
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHStatusBarButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHStatusBarButton.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/25.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | @protocol VHStatusBarButtonProtocol
10 |
11 | @required
12 | - (void)onStatusBarButtonClicked;
13 | - (void)onStatusBarButtonMoved;
14 |
15 | @end
16 |
17 | @interface VHStatusBarButton : NSTextField
18 |
19 | @property (nonatomic, weak) id statusBarButtonDelegate;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHTabVCBackgroundView.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHTabVCBackgroundView.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/26.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | @interface VHTabVCBackgroundView : NSControl
10 |
11 | @property (nonatomic, assign) CGFloat arrowWidth;
12 | @property (nonatomic, assign) CGFloat arrowHeight;
13 | @property (nonatomic, assign) CGFloat titleHeight;
14 | @property (nonatomic, assign) CGFloat cornerRadius;
15 |
16 | - (void)updateArrowWithStatusItemCenterX:(CGFloat)centerX;
17 |
18 | - (NSRect)tabViewFrame;
19 |
20 | - (NSRect)contentViewFrame;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHTabView.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHTabView.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/28.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | @protocol VHTabViewDelegate
10 |
11 | @required
12 | - (void)didSelectGithubContentType:(VHGithubContentType)type;
13 |
14 | @end
15 |
16 | @interface VHTabView : NSView
17 |
18 | @property (nonatomic, weak) id delegate;
19 |
20 | @property (nonatomic, assign) NSUInteger selectedTab;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHTableView.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHTableView.h
3 | // VHGithubNotifier
4 | //
5 | // Created by Nightonke on 2017/9/24.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface VHTableView : NSTableView
12 |
13 | - (void)scrollRowToVisible:(NSInteger)rowIndex animate:(BOOL)animate;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHTableView.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHTableView.m
3 | // VHGithubNotifier
4 | //
5 | // Created by Nightonke on 2017/9/24.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHTableView.h"
10 |
11 | @implementation VHTableView
12 |
13 | - (void)scrollRowToVisible:(NSInteger)rowIndex animate:(BOOL)animate
14 | {
15 | if(animate)
16 | {
17 | NSRect rowRect = [self rectOfRow:rowIndex];
18 | NSPoint scrollOrigin = rowRect.origin;
19 | NSClipView *clipView = (NSClipView *)[self superview];
20 | scrollOrigin.y += MAX(0, round((NSHeight(rowRect) - NSHeight(clipView.frame)) * 0.5f));
21 | NSScrollView *scrollView = (NSScrollView *)[clipView superview];
22 | if ([scrollView respondsToSelector:@selector(flashScrollers)])
23 | {
24 | [scrollView flashScrollers];
25 | }
26 | [[clipView animator] setBoundsOrigin:scrollOrigin];
27 | }
28 | else
29 | {
30 | NSRect rowRect = [self rectOfRow:rowIndex];
31 | NSPoint scrollOrigin = rowRect.origin;
32 | NSClipView *clipView = (NSClipView *)[self superview];
33 | scrollOrigin.y += MAX(0, round((NSHeight(rowRect) - NSHeight(clipView.frame)) * 0.5f));
34 | [clipView setBoundsOrigin:scrollOrigin];
35 | }
36 | }
37 |
38 | @end
39 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHTextField.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHTextField.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/25.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @class VHTextField;
10 |
11 | @protocol VHTextFieldDelegate
12 |
13 | @required
14 | - (void)onTextFieldEnterButtonClicked:(VHTextField *)textField;
15 |
16 | @end
17 |
18 | @interface VHTextField : NSTextField
19 |
20 | @property (nonatomic, weak) id textFieldDelegate;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHTextFieldCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHTextFieldCell.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/24.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface VHTextFieldCell : NSTextFieldCell
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHTrendingLanguageCellView.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHTrendingLanguageCellView.h
3 | // VHGithubNotifier
4 | //
5 | // Created by Nightonke on 2017/9/24.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "VHLanguage.h"
11 |
12 | @protocol VHTrendingLanguageCellViewDelegate
13 |
14 | @required
15 | - (void)onLanguage:(VHLanguage *)language selected:(BOOL)selected;
16 |
17 | @end
18 |
19 | @interface VHTrendingLanguageCellView : NSTableCellView
20 |
21 | @property (nonatomic, strong) VHLanguage *language;
22 | @property (nonatomic, weak) id delegate;
23 | @property (nonatomic, assign) BOOL selected;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHTrendingLanguageCellView.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHTrendingLanguageCellView.m
3 | // VHGithubNotifier
4 | //
5 | // Created by Nightonke on 2017/9/24.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHTrendingLanguageCellView.h"
10 |
11 | @interface VHTrendingLanguageCellView()
12 |
13 | @property (weak) IBOutlet NSButton *checkBox;
14 |
15 | @end
16 |
17 | @implementation VHTrendingLanguageCellView
18 |
19 | - (void)setLanguage:(VHLanguage *)language
20 | {
21 | _language = language;
22 | self.checkBox.title = language.name;
23 | self.checkBox.bezelColor = language.color;
24 | }
25 |
26 | - (IBAction)onTrendingLanguageSelected:(NSButton *)sender
27 | {
28 | if ([self.delegate respondsToSelector:@selector(onLanguage:selected:)])
29 | {
30 | BOOL isSelected = (self.checkBox.state == NSOnState);
31 | [self.delegate onLanguage:self.language selected:isSelected];
32 | }
33 | }
34 |
35 | - (void)setSelected:(BOOL)selected
36 | {
37 | _selected = selected;
38 | if (selected)
39 | {
40 | [self.checkBox setState:NSOnState];
41 | }
42 | else
43 | {
44 | [self.checkBox setState:NSOffState];
45 | }
46 | }
47 |
48 | @end
49 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHTrendingRepositoryCellView.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHTrendingRepositoryCellView.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/22.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHTrendingRepository.h"
10 | #import "VHLanguageDotView.h"
11 |
12 | @protocol VHTrendingRepositoryCellViewDelegate
13 |
14 | @required
15 | - (void)onTrendingClicked:(VHTrendingRepository *)repository;
16 |
17 | @end
18 |
19 | @interface VHTrendingRepositoryCellView : NSTableCellView
20 |
21 | @property (weak) IBOutlet NSTextField *name;
22 | @property (weak) IBOutlet NSTextField *repositoryDescription;
23 | @property (weak) IBOutlet VHLanguageDotView *languageDot;
24 | @property (weak) IBOutlet NSTextField *language;
25 | @property (weak) IBOutlet NSImageView *starImage;
26 | @property (weak) IBOutlet NSTextField *starText;
27 | @property (weak) IBOutlet NSImageView *forkImage;
28 | @property (weak) IBOutlet NSTextField *forkText;
29 | @property (weak) IBOutlet NSImageView *starTrendingImage;
30 | @property (weak) IBOutlet NSTextField *starTrendingText;
31 | @property (nonatomic, assign) BOOL isLastRow;
32 | @property (nonatomic, weak) id delegate;
33 |
34 | - (void)setTrendingRepository:(VHTrendingRepository *)trendingRepository;
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/VHGithubNotifier/View/VHVisualEffectView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // VHVisualEffectView.swift
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/7.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | import Cocoa
10 |
11 | @objc class VHVisualEffectView: NSVisualEffectView {
12 |
13 | override init(frame frameRect: NSRect) {
14 | tintColor = .clear
15 | super.init(frame:frameRect)
16 | }
17 |
18 | required init?(coder: NSCoder) {
19 | tintColor = .clear
20 | super.init(coder: coder)
21 | }
22 |
23 | var tintColor: NSColor {
24 | didSet {
25 | layer?.sublayers?.first(where: { $0.name == "ClearCopyLayer" })?.backgroundColor = tintColor.cgColor
26 | }
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Window/VHAccountInfoWC.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHAccountInfoWC.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/2/24.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @protocol VHAccountInfoWCDelegate
10 |
11 | @required
12 | - (void)onAccountInfoWindowClosed;
13 | - (void)onUserAccountConfirmed;
14 |
15 | @end
16 |
17 | @interface VHAccountInfoWC : NSWindowController
18 |
19 | @property (nonatomic, weak) id accountInfoDelegate;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Window/VHSettingsWC.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHSettingsWC.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/6.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @protocol VHSettingsWCDelegate
10 |
11 | @required
12 | - (void)onSettingsWindowClosed;
13 |
14 | @end
15 |
16 | @interface VHSettingsWC : NSWindowController
17 |
18 | @property (nonatomic, weak) id settingsWCDelegate;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Window/VHUserNotificationWindow.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHUserNotificationWindow.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/3.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface VHUserNotificationWindow : NSWindow
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Window/VHUserNotificationWindow.m:
--------------------------------------------------------------------------------
1 | //
2 | // VHUserNotificationWindow.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/3.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHUserNotificationWindow.h"
10 |
11 | @implementation VHUserNotificationWindow
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Window/VHWebLoginWC.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHWebLoginWC.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2017/3/8.
6 | // Copyright © 2017年 黄伟平. All rights reserved.
7 | //
8 |
9 | @protocol VHWebLoginWCDelegate
10 |
11 | @required
12 | - (void)onWebLoginWindowClosed;
13 |
14 | @end
15 |
16 | @interface VHWebLoginWC : NSWindowController
17 |
18 | @property (nonatomic, weak) id webLoginDelegate;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/VHGithubNotifier/Window/VHWindow.h:
--------------------------------------------------------------------------------
1 | //
2 | // VHWindow.h
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/27.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import "VHStatusBarButton.h"
10 |
11 | @protocol VHWindowProtocol
12 |
13 | @required
14 | - (void)onMouseClickedOutside;
15 |
16 | @end
17 |
18 | @interface VHWindow : NSWindow
19 |
20 | @property (nonatomic, weak) id windowDelegate;
21 |
22 | - (instancetype)initWithStatusItem:(NSStatusItem *)statusBarButton withDelegate:(id)delegate;
23 |
24 | - (void)updateArrowWithStatusItem:(NSStatusItem *) statusItem;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/VHGithubNotifier/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // VHGithubNotifier
4 | //
5 | // Created by viktorhuang on 2016/12/24.
6 | // Copyright © 2016年 黄伟平. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | int main(int argc, const char * argv[]) {
12 | return NSApplicationMain(argc, argv);
13 | }
14 |
--------------------------------------------------------------------------------