Skip to content

Commit

Permalink
make it possible for library tab to be affected key combo
Browse files Browse the repository at this point in the history
  • Loading branch information
mhogomchungu committed Jan 7, 2025
1 parent 82a5875 commit d351537
Show file tree
Hide file tree
Showing 9 changed files with 108 additions and 47 deletions.
2 changes: 1 addition & 1 deletion src/basicdownloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ basicdownloader::basicdownloader( const Context& ctx ) :
m_settings( m_ctx.Settings() ),
m_ui( m_ctx.Ui() ),
m_tabManager( m_ctx.TabManager() ),
m_tableList( *m_ui.bdTableWidgetList,m_ctx.mainWidget().font() ),
m_tableList( *m_ui.bdTableWidgetList,0,m_ctx.mainWidget().font() ),
m_hiddenTable( m_bogusTableOriginal,m_ctx.mainWidget().font(),0,m_settings.textAlignment() )
{
m_ui.pbPasteClipboard->setIcon( m_settings.getIcon( "clipboard" ) ) ;
Expand Down
2 changes: 1 addition & 1 deletion src/batchdownloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ batchdownloader::batchdownloader( const Context& ctx ) :
m_mainWindow( m_ctx.mainWidget() ),
m_tabManager( m_ctx.TabManager() ),
m_table( *m_ui.tableWidgetBD,m_ctx.mainWidget().font(),1,m_settings.textAlignment() ),
m_tableWidgetBDList( *m_ui.TableWidgetBatchDownloaderList,m_ctx.mainWidget().font() ),
m_tableWidgetBDList( *m_ui.TableWidgetBatchDownloaderList,0,m_ctx.mainWidget().font() ),
m_defaultVideoThumbnail( m_settings.defaultVideoThumbnailIcon( settings::tabName::batch ) ),
m_ccmd( m_ctx,*m_ui.pbBDCancel,m_settings ),
m_ccmd_metadata( m_ctx,*m_ui.pbBDCancel,m_settings ),
Expand Down
6 changes: 3 additions & 3 deletions src/configure.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ configure::configure( const Context& ctx ) :
m_mainWindow( m_ctx.mainWidget() ),
m_tabManager( m_ctx.TabManager() ),
m_engines( m_ctx.Engines() ),
m_tablePresetOptions( *m_ui.tableWidgetConfigurePresetOptions,m_ctx.mainWidget().font() ),
m_tableUrlToDefaultEngine( *m_ui.tableWidgetConfigureUrl,m_ctx.mainWidget().font() ),
m_tableDefaultDownloadOptions( *m_ui.tableWidgetEnginesDefaultOptions,m_ctx.mainWidget().font() ),
m_tablePresetOptions( *m_ui.tableWidgetConfigurePresetOptions,0,m_ctx.mainWidget().font() ),
m_tableUrlToDefaultEngine( *m_ui.tableWidgetConfigureUrl,0,m_ctx.mainWidget().font() ),
m_tableDefaultDownloadOptions( *m_ui.tableWidgetEnginesDefaultOptions,0,m_ctx.mainWidget().font() ),
m_presetOptions( m_ctx,m_settings ),
m_downloadDefaultOptions( m_ctx,"downloadDefaultOptions.json" ),
m_downloadEngineDefaultOptions( m_ctx,"downloadEngineDefaultOptions.json" )
Expand Down
5 changes: 3 additions & 2 deletions src/library.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ library::library( const Context& ctx ) :
m_settings( m_ctx.Settings() ),
m_enabled( m_settings.enableLibraryTab() ),
m_ui( m_ctx.Ui() ),
m_table( *m_ui.tableWidgetLibrary,m_ctx.mainWidget().font() ),
m_table( *m_ui.tableWidgetLibrary,0,m_ctx.mainWidget().font() ),
m_downloadFolder( QDir::fromNativeSeparators( m_settings.downloadFolder() ) ),
m_currentPath( m_downloadFolder ),
m_folderIcon( m_settings.getIcon( "folder" ).pixmap( 30,40 ) ),
Expand Down Expand Up @@ -187,8 +187,9 @@ void library::init_done()
}
}

void library::keyPressed( utility::mainWindowKeyCombo )
void library::keyPressed( utility::mainWindowKeyCombo m )
{
utility::keyPressed( m_table,m ) ;
}

void library::enableAll()
Expand Down
2 changes: 1 addition & 1 deletion src/playlistdownloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ playlistdownloader::playlistdownloader( Context& ctx ) :
m_mainWindow( m_ctx.mainWidget() ),
m_tabManager( m_ctx.TabManager() ),
m_table( *m_ui.tableWidgetPl,m_ctx.mainWidget().font(),1,m_settings.textAlignment() ),
m_subscriptionTable( *m_ui.tableWidgetPlDownloaderSubscription,m_ctx.mainWidget().font() ),
m_subscriptionTable( *m_ui.tableWidgetPlDownloaderSubscription,0,m_ctx.mainWidget().font() ),
m_ccmd( m_ctx,*m_ui.pbPLCancel,m_settings ),
m_defaultVideoThumbnailIcon( m_settings.defaultVideoThumbnailIcon( settings::tabName::playlist ) ),
m_banner( m_table ),
Expand Down
32 changes: 17 additions & 15 deletions src/tableWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -386,22 +386,10 @@ void tableWidget::removeRow( int s )

void tableWidget::removeAllSelected()
{
std::vector< int > selected ;
utility::removeAllSelected( m_table,[ this ]( int row ){

auto col = m_table.columnCount() - 1 ;

for( int i = 0 ; i < m_table.rowCount() ; i++ ){

if( m_table.item( i,col )->isSelected() ){

selected.emplace_back( i ) ;
}
}

for( auto it = selected.rbegin() ; it != selected.rend() ; it++ ){

this->removeRow( *it ) ;
}
this->removeRow( row ) ;
} ) ;
}

void tableWidget::hideRow( int row )
Expand Down Expand Up @@ -580,3 +568,17 @@ void tableWidget::setColumnNumbersTo( int m )
m_table.insertColumn( 0 ) ;
}
}

baseRemoveAllSelected::~baseRemoveAllSelected()
{
}

void tableMiniWidgetRemoveAllSelected( QTableWidget& table,
std::unique_ptr< baseRemoveAllSelected > function )
{
utility::removeAllSelected( table,[ function = std::move( function ) ]( int row ){

//auto& m = *function ;
( *function )( row ) ;
} ) ;
}
40 changes: 39 additions & 1 deletion src/tableWidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -339,11 +339,21 @@ class tableWidget
Qt::Alignment m_textAlignment ;
} ;

class baseRemoveAllSelected
{
public:
virtual void operator()( int ) = 0 ;
virtual ~baseRemoveAllSelected() ;
private:
} ;

void tableMiniWidgetRemoveAllSelected( QTableWidget&,std::unique_ptr< baseRemoveAllSelected > ) ;

template< typename Stuff,size_t COLUMN_COUNT >
class tableMiniWidget
{
public:
tableMiniWidget( QTableWidget& t,const QFont& ) : m_table( t )
tableMiniWidget( QTableWidget& t,int s,const QFont& ) : m_table( t ),m_startPosition( s )
{
tableWidget::setTableWidget( m_table,tableWidget::tableWidgetOptions() ) ;
}
Expand Down Expand Up @@ -380,6 +390,29 @@ class tableMiniWidget
auto header = m_table.horizontalHeader() ;

QObject::connect( header,&QHeaderView::sectionClicked,std::move( t ) ) ;
}
void removeAllSelected()
{
class meaw : public baseRemoveAllSelected
{
public:
meaw( tableMiniWidget< Stuff,COLUMN_COUNT >& m ) : m_parent( m )
{
}
void operator()( int row ) override
{
m_parent.removeRow( row ) ;
}
~meaw()
{
}
private:
tableMiniWidget< Stuff,COLUMN_COUNT >& m_parent ;
} ;

auto s = std::make_unique< meaw >( *this ) ;

tableMiniWidgetRemoveAllSelected( m_table,std::move( s ) ) ;
}
void setUpHeaderMenu()
{
Expand All @@ -405,6 +438,10 @@ class tableMiniWidget
{
return m_table.rowCount() ;
}
int startPosition() const
{
return m_startPosition ;
}
void selectRow( QTableWidgetItem * current,QTableWidgetItem * previous,int s )
{
if( previous ){
Expand Down Expand Up @@ -865,6 +902,7 @@ class tableMiniWidget
}
int m_columnClicked = -1 ;
QTableWidget& m_table ;
int m_startPosition ;
std::vector< Stuff > m_stuff ;
};

Expand Down
22 changes: 0 additions & 22 deletions src/utility.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2448,28 +2448,6 @@ bool utility::Qt6Version()
#endif
}

void utility::keyPressed( tableWidget& table,utility::mainWindowKeyCombo m )
{
if( m == utility::mainWindowKeyCombo::CTRL_A ){

auto& t = table.get() ;

auto first = table.startPosition() ;

for( int row = 0 ; row < t.rowCount() ; row++ ){

for( int column = first ; column < t.columnCount() ; column++ ){

t.item( row,column )->setSelected( true ) ;
}
}

}else if( m == utility::mainWindowKeyCombo::CTRL_D ){

table.removeAllSelected() ;
}
}

QString utility::OSXApplicationDirPath()
{
return QCoreApplication::applicationDirPath() ;
Expand Down
44 changes: 43 additions & 1 deletion src/utility.h
Original file line number Diff line number Diff line change
Expand Up @@ -504,7 +504,49 @@ namespace utility

enum class mainWindowKeyCombo{ CTRL_D,CTRL_A } ;

void keyPressed( tableWidget&,utility::mainWindowKeyCombo ) ;
template< typename Table >
inline void keyPressed( Table& table,utility::mainWindowKeyCombo m )
{
if( m == utility::mainWindowKeyCombo::CTRL_A ){

auto& t = table.get() ;

auto first = table.startPosition() ;

for( int row = 0 ; row < t.rowCount() ; row++ ){

for( int column = first ; column < t.columnCount() ; column++ ){

t.item( row,column )->setSelected( true ) ;
}
}

}else if( m == utility::mainWindowKeyCombo::CTRL_D ){

table.removeAllSelected() ;
}
}

template< typename Function >
void removeAllSelected( QTableWidget& t,Function function )
{
std::vector< int > selected ;

auto col = t.columnCount() - 1 ;

for( int i = 0 ; i < t.rowCount() ; i++ ){

if( t.item( i,col )->isSelected() ){

selected.emplace_back( i ) ;
}
}

for( auto it = selected.rbegin() ; it != selected.rend() ; it++ ){

function( *it ) ;
}
}

struct downLoadOptions
{
Expand Down

0 comments on commit d351537

Please sign in to comment.