forked from qt-creator/qt-creator
		
	Signed-off-by: Abhishek Patil <abhishek.patil@vcreatelogic.com> Merge-request: 145 Reviewed-by: con <qtc-committer@nokia.com>
		
			
				
	
	
		
			112 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/*!
 | 
						|
    \page progress.html
 | 
						|
    \title 11.Showing and reacting to progress information
 | 
						|
    The progress bars give us the information about the progress status of a current task.We can find 
 | 
						|
    progress bar showing up in the Qt Creator window at the left side. Whenever a task is executed
 | 
						|
    a progress bar pops up showing the progress status until the task is completed.
 | 
						|
    
 | 
						|
    \inlineimage qtc-progressbar-11.png
 | 
						|
    
 | 
						|
    \section1 11.1 Creating a progress bar
 | 
						|
    First we will declare the methods required for implementing a "Progress Bar" widget and then we will attach the widget with "Header Filter" in "Find/Replace" 
 | 
						|
    and see it working according to the search progress status.
 | 
						|
    
 | 
						|
    \section2 Step 1. Modification of "HeaderFilter" class     
 | 
						|
    The "HeaderFilter" class discussed in Chapter 9. is further modified. 
 | 
						|
    So we will now declare the methods required for a  "Progress Bar" in the following block of code.    
 | 
						|
    \code
 | 
						|
    struct HeaderFilterData;
 | 
						|
    class HeaderFilter : public Find::IFindFilter
 | 
						|
    {
 | 
						|
        Q_OBJECT
 | 
						|
    public:
 | 
						|
        HeaderFilter();
 | 
						|
        ~HeaderFilter();
 | 
						|
        ...
 | 
						|
        QWidget *createProgressWidget();
 | 
						|
    
 | 
						|
    private:
 | 
						|
        HeaderFilterData *d;
 | 
						|
    };
 | 
						|
    \endcode
 | 
						|
    
 | 
						|
    Here \bold {createProgressWidget()} is not implemented from Find::IFindFilter. It is a custom function written within HeaderFilter class,
 | 
						|
    which takes up the onus of returning a progress display widget.
 | 
						|
    
 | 
						|
    \section2 Step 2. Implementation of the "HeaderFilter" class
 | 
						|
    The private member variables of the \bold {HeaderFilter} class are declared in the structure \bold {HeaderFilterData}
 | 
						|
    \code
 | 
						|
    struct HeaderFilterData
 | 
						|
    {
 | 
						|
        QFutureWatcher<FileSearchResult> watcher;
 | 
						|
        QLabel *resultLabel;
 | 
						|
        ...
 | 
						|
        ...        
 | 
						|
    };
 | 
						|
    \endcode
 | 
						|
    The \bold {constructor} and the \bold {destructor} are as follows.
 | 
						|
    \code    
 | 
						|
    HeaderFilter::HeaderFilter()
 | 
						|
    {
 | 
						|
        
 | 
						|
        d = new HeaderFilterProgressData;
 | 
						|
        d->watcher.setPendingResultsLimit(1);
 | 
						|
        d->resultLabel = 0 ;
 | 
						|
        ...
 | 
						|
    }
 | 
						|
        
 | 
						|
    HeaderFilter::~HeaderFilter()
 | 
						|
    {
 | 
						|
        delete d;
 | 
						|
    }
 | 
						|
    \endcode
 | 
						|
           
 | 
						|
    The \bold {findAll()} method is further modified to create a progress bar popup the bar while searching
 | 
						|
    is going on.
 | 
						|
    \code
 | 
						|
    void HeaderFilter::findAll(const QString &text,QTextDocument::FindFlags findFlags)
 | 
						|
    {
 | 
						|
        ...
 | 
						|
        ...
 | 
						|
        ...
 | 
						|
        
 | 
						|
        //The "progress" is the instance of FutureProgress class.
 | 
						|
        //The "progress" is the pointer to the progress bar created 
 | 
						|
        //Creates and shows the "progress" bar for searching task.
 | 
						|
        Core::FutureProgress *progress = 
 | 
						|
                Core::ICore::instance()->progressManager()->addTask(d->watcher.future(),
 | 
						|
                                                                   "MySearch",
 | 
						|
                                                                    Find::Constants::TASK_SEARCH,
 | 
						|
                                                                    Core::ProgressManager::KeepOnFinish
 | 
						|
                                                                    );
 | 
						|
                                                                            
 | 
						|
        progress->setWidget(createProgressWidget());
 | 
						|
        connect(progress, SIGNAL(clicked()), d->searchResultWindow(), SLOT(popup()));
 | 
						|
    }
 | 
						|
    \endcode
 | 
						|
 | 
						|
    The \bold {createProgressWidget()} function creates the progress widget.It shows
 | 
						|
    the number of searched items found below and is placed below the progress bar.
 | 
						|
    \code
 | 
						|
    QWidget *HeaderFilter::createProgressWidget()
 | 
						|
    {
 | 
						|
        d->resultLabel = new QLabel;
 | 
						|
        d->resultLabel->setAlignment(Qt::AlignCenter);
 | 
						|
        QFont f = d->resultLabel->font();
 | 
						|
        f.setBold(true);
 | 
						|
        f.setPointSizeF(StyleHelper::sidebarFontSize());
 | 
						|
        d->resultLabel->setFont(f);
 | 
						|
        d->resultLabel->setPalette(StyleHelper::sidebarFontPalette(d->resultLabel->palette()));
 | 
						|
        d->resultLabel->setText(tr("%1 found").arg(d->searchResultWindow()->numberOfResults()));
 | 
						|
        return d->resultLabel;
 | 
						|
    }
 | 
						|
    \endcode
 | 
						|
     
 | 
						|
    \section2 Step 3.Testing the plugin.       
 | 
						|
    Now its the time to test the plugin. For searching we use our "HeaderFilter" and the searched result is shown in the
 | 
						|
    "Search Results" window and the progress bar pops up while searching.
 | 
						|
    
 | 
						|
    \inlineimage qtc-searchprogress-11.png
 | 
						|
  
 | 
						|
*/
 |