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