Warning, /utilities/isoimagewriter/isoimagewriter/externalprogressbar_mac.mm is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2016 ROSA 0003 SPDX-License-Identifier: GPL-3.0-or-later 0004 */ 0005 0006 //////////////////////////////////////////////////////////////////////////////// 0007 // Mac OS X implementation of ExternalProgressBar 0008 0009 0010 #include <QWidget> 0011 0012 #include "externalprogressbar.h" 0013 0014 #include <Cocoa/Cocoa.h> 0015 0016 // Class with platform-specific data 0017 class ExternalProgressBarPrivate 0018 { 0019 public: 0020 ExternalProgressBarPrivate(); 0021 ~ExternalProgressBarPrivate(); 0022 0023 NSProgressIndicator* progressIndicator; 0024 }; 0025 0026 ExternalProgressBarPrivate::ExternalProgressBarPrivate() : 0027 progressIndicator(nil) 0028 { 0029 } 0030 0031 ExternalProgressBarPrivate::~ExternalProgressBarPrivate() 0032 { 0033 } 0034 0035 0036 ExternalProgressBar::ExternalProgressBar(QWidget* mainWindow) : 0037 d_ptr(new ExternalProgressBarPrivate()), 0038 m_MaxValue(0) 0039 { 0040 Q_UNUSED(mainWindow); 0041 0042 // Create a new view based on the current application icon with progress bar positioned over it 0043 // and replace the Dock icon with this view 0044 NSImageView* iv = [[NSImageView alloc] init]; 0045 [iv setImage: [[NSApplication sharedApplication] applicationIconImage]]; 0046 [[NSApp dockTile] setContentView: iv]; 0047 0048 d_ptr->progressIndicator = [[NSProgressIndicator alloc] initWithFrame: NSMakeRect(0, 0, [NSApp dockTile].size.width, 20)]; 0049 [d_ptr->progressIndicator setHidden: YES]; 0050 [d_ptr->progressIndicator setStyle: NSProgressIndicatorBarStyle]; 0051 [d_ptr->progressIndicator setIndeterminate: NO]; 0052 [d_ptr->progressIndicator setBezeled: YES]; 0053 [iv addSubview: d_ptr->progressIndicator]; 0054 0055 [d_ptr->progressIndicator release]; 0056 0057 [[NSApp dockTile] display]; 0058 } 0059 0060 ExternalProgressBar::~ExternalProgressBar() 0061 { 0062 DestroyProgressBar(); 0063 delete d_ptr; 0064 } 0065 0066 // Initializes the external progress bar and sets its limits 0067 bool ExternalProgressBar::InitProgressBar(quint64 maxSteps) 0068 { 0069 m_MaxValue = maxSteps; 0070 0071 [d_ptr->progressIndicator setMinValue: 0]; 0072 [d_ptr->progressIndicator setMaxValue: maxSteps]; 0073 [d_ptr->progressIndicator setDoubleValue: 0]; 0074 [d_ptr->progressIndicator setHidden: NO]; 0075 [[NSApp dockTile] display]; 0076 0077 return true; 0078 } 0079 0080 // Deinitializes the external progress bar and returns into the normal state 0081 bool ExternalProgressBar::DestroyProgressBar() 0082 { 0083 [d_ptr->progressIndicator setHidden: YES]; 0084 [[NSApp dockTile] display]; 0085 return true; 0086 } 0087 0088 // Updates the current progress bar position 0089 bool ExternalProgressBar::SetProgressValue(quint64 currentSteps) 0090 { 0091 [d_ptr->progressIndicator setDoubleValue: currentSteps]; 0092 [d_ptr->progressIndicator setHidden: NO]; 0093 [[NSApp dockTile] display]; 0094 0095 return true; 0096 } 0097 0098 // Sets the progress bar to indicate pause 0099 bool ExternalProgressBar::ProgressSetPause() 0100 { 0101 // Not supported by OS X 0102 return false; 0103 } 0104 0105 // Sets the progress bar to indicate an error 0106 bool ExternalProgressBar::ProgressSetError() 0107 { 0108 // Not supported by OS X 0109 return false; 0110 } 0111