• Main Page
  • Namespaces
  • Data Structures
  • Files
  • File List

/www/proggenOrg/dedupe/export/trunk/userinterface/gui/qt/implementation.cpp

00001 
00009 #include "implementation.h"
00010 #include <QtCore/QList>
00011 #include <QtGui/QApplication>
00012 #include <QtGui/QPushButton>
00013 #include <QtGui/QListWidget>
00014 #include <QtGui/QMenuBar>
00015 #include <QtGui/QMenu>
00016 #include <QtGui/QVBoxLayout>
00017 #include <QtGui/QHBoxLayout>
00018 #include <QtGui/QFileDialog>
00019 #include <QtGui/QGroupBox>
00020 #include <QtGui/QStatusBar>
00021 #include <QtGui/QMessageBox>
00022 #include <cstdlib>
00023 #include <cstring>
00024 
00025 namespace Dedupe
00026 {
00027   namespace GUI
00028   {
00029     QtMain::QtMain( int argc, char *argv[] )
00030       : Main( argc, argv ),
00031         RefreshLeft( new QPushButton() ),
00032         RefreshRight( new QPushButton() ),
00033         Track( new QPushButton() ),
00034         Untrack( new QPushButton() ),
00035         RemoveKeepFlag( new QPushButton() ),
00036         TrackedFiles( new QListWidget() ),
00037         FilesToKeep( new QListWidget() ),
00038         TrackedFilesBox( new QGroupBox() ),
00039         FilesToKeepBox( new QGroupBox() ),
00040         Tabs( new QTabWidget() ),
00041         MenuBar( NULL )
00042     {   
00043       QHBoxLayout *hLayout = new QHBoxLayout();
00044 
00045       QWidget *leftContainer = new QWidget();
00046       QHBoxLayout *buttonLayout = new QHBoxLayout();
00047       buttonLayout->addStretch();
00048       buttonLayout->addWidget( RefreshLeft );
00049       buttonLayout->addWidget( Track );
00050       buttonLayout->addWidget( Untrack );
00051       buttonLayout->addStretch();
00052       QVBoxLayout *sectionLayout = new QVBoxLayout();
00053       QHBoxLayout *tmpContainer = new QHBoxLayout();
00054       tmpContainer->addWidget( TrackedFiles );
00055       TrackedFilesBox->setLayout( tmpContainer );
00056       sectionLayout->addWidget( TrackedFilesBox );
00057       sectionLayout->addLayout( buttonLayout );
00058       leftContainer->setLayout( sectionLayout );
00059 
00060       QWidget *rightContainer = new QWidget();
00061       buttonLayout = new QHBoxLayout();
00062       buttonLayout->addStretch();
00063       buttonLayout->addWidget( RefreshRight );
00064       buttonLayout->addWidget( RemoveKeepFlag );
00065       buttonLayout->addStretch();
00066       sectionLayout = new QVBoxLayout();
00067       tmpContainer = new QHBoxLayout();
00068       tmpContainer->addWidget( FilesToKeep );
00069       FilesToKeepBox->setLayout( tmpContainer );
00070       sectionLayout->addWidget( FilesToKeepBox );
00071       sectionLayout->addLayout( buttonLayout );
00072       rightContainer->setLayout( sectionLayout );
00073 
00074       hLayout->addWidget( leftContainer );
00075       hLayout->addWidget( rightContainer );
00076 
00077       QWidget *tabContainer = new QWidget();
00078       tabContainer->setLayout( hLayout );
00079       Tabs->addTab( tabContainer, tr( "Files" ) );
00080       Tabs->addTab( new QWidget(), tr( "Duplicates" ) );     // Dummy
00081       Tabs->addTab( new QWidget(), tr( "Watched Orders" ) ); // Dummy
00082 
00083       TrackedFiles->setSelectionMode( QListWidget::MultiSelection );
00084       setStatusBar( new QStatusBar() );
00085       setCentralWidget( Tabs );
00086       updateWidgetLanguage();
00087       resize( 800, 600 );
00088 
00089       connect( qApp, SIGNAL( aboutToQuit() ),
00090                this, SLOT( quitEvent() ) );
00091       connect( RefreshLeft, SIGNAL( clicked() ),
00092                this, SLOT( handleButtonClicked() ) );
00093       connect( RefreshRight, SIGNAL( clicked() ),
00094                this, SLOT( handleButtonClicked() ) );
00095       connect( Track, SIGNAL( clicked() ),
00096                this, SLOT( handleButtonClicked() ) );
00097       connect( Untrack, SIGNAL( clicked() ),
00098                this, SLOT( handleButtonClicked() ) );
00099       connect( RemoveKeepFlag, SIGNAL( clicked() ),
00100                this, SLOT( handleButtonClicked() ) );
00101     }
00102 
00103     QtMain::~QtMain()
00104     {
00105       delete RefreshLeft;
00106       delete RefreshRight;
00107       delete Track;
00108       delete Untrack;
00109       delete RemoveKeepFlag;
00110       delete TrackedFiles;
00111       delete FilesToKeep;
00112       delete TrackedFilesBox;
00113       delete FilesToKeepBox;
00114       delete Tabs;
00115       delete MenuBar;
00116     }
00117 
00118     void QtMain::TrackFile( const Dedupe::FileInfo & file )
00119     {
00120       TrackedFiles->addItem( file.GetPath().c_str() );
00121     }
00122 
00123     void QtMain::UntrackFile( const Dedupe::FileInfo & file )
00124     {
00125       for( int i = 0; i < TrackedFiles->count(); i++ )
00126       {
00127         if( TrackedFiles->item( i )->text().toStdString() == file.GetPath() )
00128           delete TrackedFiles->takeItem( i );
00129       }
00130     }
00131 
00132     void QtMain::ClearTrackedFiles()
00133     {
00134       TrackedFiles->clear();
00135     }
00136 
00137     bool QtMain::IsRecursive()
00138     {
00139       return QMessageBox::question( this, tr( "Settings" ),
00140                                     tr( "Process directories recursively?" ),
00141                                     QMessageBox::Yes | QMessageBox::No )
00142           == QMessageBox::Yes;
00143     }
00144 
00145     int QtMain::exec()
00146     {
00147       show();
00148       OnShow();
00149       return qApp->exec();
00150     }
00151 
00152     std::vector<Dedupe::FileInfo> QtMain::GetFiles()
00153     {
00154       std::vector<Dedupe::FileInfo> files;
00155       QList<QString> fileNames
00156           = QFileDialog::getOpenFileNames( this, tr( "Choose files" ) );
00157       for( int i = 0; i < fileNames.size(); i++ )
00158         files.push_back( FileInfo( fileNames[i].toStdString() ) );
00159       return files;
00160     }
00161 
00162     std::vector<Dedupe::FileInfo> QtMain::GetSelectedTrackedFiles()
00163     {
00164       std::vector<Dedupe::FileInfo> files;
00165       QList<QListWidgetItem *> selection
00166           = TrackedFiles->selectedItems();
00167       for( int i = 0; i < selection.size(); i++ )
00168         files.push_back( FileInfo( selection[i]->text().toStdString() ) );
00169       return files;
00170     }
00171 
00172     void QtMain::closeEvent( QCloseEvent *event )
00173     {
00174       OnHide();
00175       QWidget::closeEvent( event );
00176     }
00177 
00178     void QtMain::quitEvent()
00179     {
00180       OnQuit();
00181     }
00182 
00183     void QtMain::updateWidgetLanguage()
00184     {
00185       RefreshLeft->setText( tr( "Refresh" ) );
00186       RefreshRight->setText( tr( "Refresh" ) );
00187       Track->setText( tr( "Track" ) );
00188       Untrack->setText( tr( "Untrack" ) );
00189       RemoveKeepFlag->setText( tr( "Remove keep-flag" ) );
00190       TrackedFilesBox->setTitle( tr( "Tracked files" ) );
00191       FilesToKeepBox->setTitle( tr( "Files to keep" ) );
00192       Tabs->setTabText( 0, tr( "Files" ) );
00193       Tabs->setTabText( 1, tr( "Duplicates" ) );
00194       Tabs->setTabText( 2, tr( "Watched Orders" ) );
00195       createMenuBar();
00196     }
00197     
00198     void QtMain::createMenuBar()
00199     {
00200       QMenuBar *tmpMenu = new QMenuBar();
00201 
00202       QMenu *fileMenu = new QMenu( tr( "File" ) );
00203       fileMenu->addAction( tr( "Quit" ), qApp, SLOT( quit() ) );
00204 
00205       tmpMenu->addMenu( fileMenu );
00206       setMenuBar( tmpMenu );
00207       if( MenuBar != NULL )
00208         delete MenuBar;
00209     }
00210 
00211     void QtMain::handleButtonClicked()
00212     {
00213       if( sender() == Track )
00214         OnTrack();
00215       else if( sender() == RefreshLeft )
00216         OnIndex();
00217       else if( sender() == Untrack )
00218         OnUntrack();
00219     }
00220 
00221     void QtMain::changeEvent( QEvent *event )
00222     {
00223       if( event->type() == QEvent::LanguageChange )
00224         updateWidgetLanguage();
00225       else
00226         QWidget::changeEvent( event );
00227     }
00228 
00229   }
00230 }
00231 
00232 #include "implementation.moc"

Generated on Mon Mar 11 2013 12:04:52 for Dedupe by  doxygen 1.7.1