summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/opluginloader.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/libopie2/opiecore/opluginloader.cpp b/libopie2/opiecore/opluginloader.cpp
index 1edf3a1..b8b6b79 100644
--- a/libopie2/opiecore/opluginloader.cpp
+++ b/libopie2/opiecore/opluginloader.cpp
@@ -538,74 +538,78 @@ OPluginItem::List OGenericPluginLoader::plugins( const QString& _dir, bool sorte
538 OPluginItem::List lst; 538 OPluginItem::List lst;
539 539
540 /* 540 /*
541 * get excluded list and then iterate over them 541 * get excluded list and then iterate over them
542 * Excluded list contains the name 542 * Excluded list contains the name
543 * Position is a list with 'name.pos.name.pos.name.pos' 543 * Position is a list with 'name.pos.name.pos.name.pos'
544 * 544 *
545 * For the look up we will create two QMap<QString,pos> 545 * For the look up we will create two QMap<QString,pos>
546 */ 546 */
547 QMap<QString, int> positionMap; 547 QMap<QString, int> positionMap;
548 QMap<QString, int> excludedMap; 548 QMap<QString, int> excludedMap;
549 549
550 550
551 OConfig cfg( m_dir+"-odpplugins" ); 551 OConfig cfg( m_dir+"-odpplugins" );
552 cfg.setGroup( _dir ); 552 cfg.setGroup( _dir );
553 553
554 554
555 QStringList excludes = cfg.readListEntry( "Excluded", ',' ); 555 QStringList excludes = cfg.readListEntry( "Excluded", ',' );
556 for ( QStringList::Iterator it = excludes.begin(); it != excludes.end(); ++it ) 556 for ( QStringList::Iterator it = excludes.begin(); it != excludes.end(); ++it )
557 excludedMap.insert( *it, -2 ); 557 excludedMap.insert( *it, -2 );
558 558
559 if ( sorted ) { 559 if ( sorted ) {
560 QStringList pos = cfg.readListEntry( "Positions", '.' ); 560 QStringList pos = cfg.readListEntry( "Positions", '.' );
561 QStringList::Iterator it = pos.begin(); 561 QStringList::Iterator it = pos.begin();
562 while ( it != pos.end() ) 562 QString tmp; int i;
563 positionMap.insert( *it++, (*it++).toInt() ); 563 while ( it != pos.end() ) {
564 tmp = *it++; i = (*it++).toInt();
565 positionMap.insert( tmp, i );
566 }
564 567
565 } 568 }
566 569
567 570
568 571
569 572
570 QStringList list = dir.entryList(); 573 QStringList list = dir.entryList();
571 for (QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { 574 for (QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
572 QString str = unlibify( *it ); 575 QString str = unlibify( *it );
573 OPluginItem item( str, _dir + "/" + *it ); 576 OPluginItem item( str, _dir + "/" + *it );
574 577
575 bool ex = excludedMap.contains( str ); 578 bool ex = excludedMap.contains( str );
576 /* 579 /*
577 * if disabled but we should show all mark it as disabled 580 * if disabled but we should show all mark it as disabled
578 * else continue because we don't want to add the item 581 * else continue because we don't want to add the item
579 * else if sorted we assign the right position 582 * else if sorted we assign the right position
580 */ 583 */
581 if ( ex && !disabled) 584 if ( ex && !disabled)
582 item.setEnabled( false ); 585 item.setEnabled( false );
583 else if ( ex && disabled ) 586 else if ( ex && disabled )
584 continue; 587 continue;
585 else if ( sorted ) 588 else if ( sorted )
586 item.setPosition( positionMap[str] ); 589 item.setPosition( positionMap[str] );
587 590
591
588 lst.append( item ); 592 lst.append( item );
589 } 593 }
590 594
591 return lst; 595 return lst;
592} 596}
593 597
594/** 598/**
595 * @internal generate a list of languages from $LANG 599 * @internal generate a list of languages from $LANG
596 */ 600 */
597QStringList OGenericPluginLoader::languageList() { 601QStringList OGenericPluginLoader::languageList() {
598 if ( m_languages.isEmpty() ) { 602 if ( m_languages.isEmpty() ) {
599 /* 603 /*
600 * be_BY.CP1251 We will add, be_BY.CP1251,be_BY,be 604 * be_BY.CP1251 We will add, be_BY.CP1251,be_BY,be
601 * to our list of languages. 605 * to our list of languages.
602 */ 606 */
603 QString str = ::getenv( "LANG" ); 607 QString str = ::getenv( "LANG" );
604 m_languages += str; 608 m_languages += str;
605 int pos = str.find( '.' ); 609 int pos = str.find( '.' );
606 610
607 if ( pos > 0 ) 611 if ( pos > 0 )
608 m_languages += str.left( pos ); 612 m_languages += str.left( pos );
609 613
610 int n_pos = str.find( '_' ); 614 int n_pos = str.find( '_' );
611 if ( pos > 0 && n_pos >= pos ) 615 if ( pos > 0 && n_pos >= pos )
@@ -813,48 +817,51 @@ void OPluginManager::load() {
813/** 817/**
814 * \brief Save the values and this way make it available. 818 * \brief Save the values and this way make it available.
815 * 819 *
816 * Save the current set of data. A call to @see OGenericPluginLoader::filtered 820 * Save the current set of data. A call to @see OGenericPluginLoader::filtered
817 * now would return your saved changes. 821 * now would return your saved changes.
818 */ 822 */
819void OPluginManager::save() { 823void OPluginManager::save() {
820 QMap<QString, QStringList> excluded; // map for path to excluded name 824 QMap<QString, QStringList> excluded; // map for path to excluded name
821 QMap<QString, QStringList> positions; // if positions matter contains splitted up by dirs 825 QMap<QString, QStringList> positions; // if positions matter contains splitted up by dirs
822 bool sorted = m_loader ? m_loader->isSorted() : m_isSorted; 826 bool sorted = m_loader ? m_loader->isSorted() : m_isSorted;
823 827
824 /* 828 /*
825 * We will create some maps for the groups to include positions a 829 * We will create some maps for the groups to include positions a
826 */ 830 */
827 for ( OPluginItem::List::Iterator it = m_plugins.begin(); it != m_plugins.end(); ++it ) { 831 for ( OPluginItem::List::Iterator it = m_plugins.begin(); it != m_plugins.end(); ++it ) {
828 OPluginItem item = *it; 832 OPluginItem item = *it;
829 QString path = QFileInfo( item.path() ).dirPath(true); 833 QString path = QFileInfo( item.path() ).dirPath(true);
830 if ( sorted ) { 834 if ( sorted ) {
831 positions[path].append( item.name() ); 835 positions[path].append( item.name() );
832 positions[path].append( QString::number( item.position() ) ); 836 positions[path].append( QString::number( item.position() ) );
833 } 837 }
834 838
835 if ( !item.isEnabled() ) 839 if ( !item.isEnabled() )
836 excluded[path].append( item.name() ); 840 excluded[path].append( item.name() );
841 if ( !excluded.contains( path ) )
842 excluded[path] = QString::null;
843
837 } 844 }
838 845
839/* 846/*
840 * The code below wouldn't work because we can't delete groups/keys from the config 847 * The code below wouldn't work because we can't delete groups/keys from the config
841 * ### for ODP make Config right! 848 * ### for ODP make Config right!
842 */ 849 */
843// if ( excluded.isEmpty() && positions.isEmpty() ) return; 850// if ( excluded.isEmpty() && positions.isEmpty() ) return;
844 /* 851 /*
845 * Now safe for each path 852 * Now safe for each path
846 */ 853 */
847 OConfig cfg( configName() ); 854 OConfig cfg( configName() );
848 855
849 /* safe excluded items */ 856 /* safe excluded items */
850 for ( QMap<QString, QStringList>::Iterator it = excluded.begin(); it != excluded.end(); ++it ) { 857 for ( QMap<QString, QStringList>::Iterator it = excluded.begin(); it != excluded.end(); ++it ) {
851 OConfigGroupSaver saver( &cfg, it.key() ); 858 OConfigGroupSaver saver( &cfg, it.key() );
852 cfg.writeEntry("Excluded", it.data(), ',' ); 859 cfg.writeEntry("Excluded", it.data(), ',' );
853 } 860 }
854 861
855 /* safe positions we could also see if positions.contains(path) and remove/write in the above loop 862 /* safe positions we could also see if positions.contains(path) and remove/write in the above loop
856 * ### Write a Test Suite that can profile these runs... 863 * ### Write a Test Suite that can profile these runs...
857 */ 864 */
858 for ( QMap<QString, QStringList>::Iterator it = positions.begin(); it != positions.end(); ++it ) { 865 for ( QMap<QString, QStringList>::Iterator it = positions.begin(); it != positions.end(); ++it ) {
859 OConfigGroupSaver saver( &cfg, it.key() ); 866 OConfigGroupSaver saver( &cfg, it.key() );
860 cfg.writeEntry("Positions", it.data(), '.' ); 867 cfg.writeEntry("Positions", it.data(), '.' );