Changeset 2949

Show
Ignore:
Timestamp:
04/27/06 12:32:26 (3 years ago)
Author:
madcat
Message:

Fixed adding/removing shared directories.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • hydranode/hncore/fileslist.cpp

    r2942 r2949  
    6565        } 
    6666 
    67         std::string globTemp(Prefs::instance().read<std::string>("/Temp", "")); 
    68         std::set<std::string>::iterator it(m_tempDirs.begin()); 
    69  
    70         if (m_tempDirs.size()) { 
    71                 Prefs::instance().write("/TempCnt", m_tempDirs.size() - 1); 
    72                 uint32_t cnt = 0; 
    73                 while (it != m_tempDirs.end()) { 
    74                         if ((*it) == globTemp) { 
    75                                 ++it; 
    76                                 continue; 
    77                         } 
    78                         boost::format fmt("/Temp_%d"); 
    79                         fmt % cnt++; 
    80                         Prefs::instance().write(fmt.str(), *it++); 
    81                 } 
    82         } 
     67        saveSettings(); 
    8368} 
    8469 
     
    116101 
    117102        scanSharedDir(path, recurse); 
     103        m_sharedDirs[path] = recurse; 
     104        saveSettings(); 
    118105 
    119106} catch (std::exception &e) { 
     
    134121        } 
    135122 
    136         m_tempDirs.insert(path); 
    137  
    138123        if (scan) { 
    139124                IOThread::Pauser pauser(IOThread::instance()); 
    140125                scanTempDir(path); 
    141126        } 
     127        m_tempDirs.insert(path); 
     128        saveSettings(); 
     129 
    142130} catch (std::exception &e) { 
    143131        logError(boost::format("Unable to scan temp dir: %s") % e.what()); 
     
    160148        // Scan through main map and locate entries which were in this 
    161149        // directory, and destroy them. 
     150        std::string _path = path; 
     151#ifdef WIN32 // workaround for boost_filesystem library issues 
     152        boost::algorithm::replace_all(_path, "/", "\\"); 
     153#endif 
     154 
    162155        for (SFIter i = m_list.begin(); i != m_list.end(); ++i) { 
    163                 if ((*i)->getLocation() == path) { 
     156                if ((*i)->getLocation() == _path) { 
    164157                        (*i)->destroy(); 
    165158                } 
    166159        } 
     160        saveSettings(); 
    167161} 
    168162 
     
    188182                } 
    189183        } 
     184        saveSettings(); 
    190185} 
    191186 
     
    236231                        } 
    237232                } 
    238                 // Write to prefs 
    239                 boost::format key("/SharedDirs/Dir_%d"); 
    240                 key % m_sharedDirs.size(); 
    241                 Prefs::instance().write(key.str(), dir); 
    242                 Prefs::instance().write( 
    243                         "/SharedDirs/Count", m_sharedDirs.size() 
    244                 ); 
    245                 if (recurse) { 
    246                         Prefs::instance().write(key.str() + "_recurse", true); 
    247                 } 
     233                saveSettings(); 
    248234        } 
    249235 
     
    541527} 
    542528 
     529void FilesList::saveSettings() const { 
     530        std::string incDir(Prefs::instance().read<std::string>("/Incoming","")); 
     531#ifdef WIN32 // workaround for boost_filesystem library issues 
     532        boost::algorithm::replace_all(incDir, "\\", "/"); 
     533#endif 
     534        if (m_sharedDirs.size()) { 
     535                Prefs::instance().write( 
     536                        "/SharedDirs/Count", m_sharedDirs.size() - 1 
     537                ); 
     538                std::map<std::string, bool>::const_iterator it( 
     539                        m_sharedDirs.begin() 
     540                ); 
     541                uint32_t cnt = 0; 
     542                while (it != m_sharedDirs.end()) { 
     543                        if ((*it).first == incDir) { 
     544                                ++it; 
     545                                continue; 
     546                        } 
     547                        boost::format fmt("/SharedDirs/Dir_%d"); 
     548                        fmt % cnt++; 
     549                        Prefs::instance().write(fmt.str(), (*it).first); 
     550                        if ((*it).second) { 
     551                                Prefs::instance().write( 
     552                                        fmt.str() + "_recurse", true 
     553                                ); 
     554                        } 
     555                        ++it; 
     556                } 
     557        } 
     558 
     559        std::string globTemp(Prefs::instance().read<std::string>("/Temp", "")); 
     560        std::set<std::string>::const_iterator it(m_tempDirs.begin()); 
     561 
     562#ifdef WIN32 // workaround for boost_filesystem library issues 
     563        boost::algorithm::replace_all(globTemp, "\\", "/"); 
     564#endif 
     565        if (m_tempDirs.size()) { 
     566                Prefs::instance().write("/TempCnt", m_tempDirs.size() - 1); 
     567                uint32_t cnt = 0; 
     568                while (it != m_tempDirs.end()) { 
     569                        if (*it == globTemp) { 
     570                                ++it; 
     571                                continue; 
     572                        } 
     573                        boost::format fmt("/Temp_%d"); 
     574                        fmt % cnt++; 
     575                        Prefs::instance().write(fmt.str(), *it++); 
     576                } 
     577        } 
     578} 
  • hydranode/hncore/fileslist.h

    r2942 r2949  
    257257        //! Attempt to import files from a location 
    258258        boost::signal<void (boost::filesystem::path)> import; 
     259 
     260        //! Saves known shared/temp dirs to settings 
     261        void saveSettings() const; 
    259262private: 
    260263        void scanSharedDir(const std::string &path, bool recurse = false); 
  • hydranode/hngui/librarytabs.cpp

    r2946 r2949  
    9797        int count = SettingsPage::instance().value("SharedDirs/Count").toInt(); 
    9898 
    99         for (int i = 1; i <= count; ++i) { 
     99        for (int i = 0; i < count; ++i) { 
    100100                QString dirName = SettingsPage::instance().value( 
    101101                        QString("SharedDirs/Dir_%1").arg(i) 
     
    157157 
    158158void LibraryPage::remShared() { 
     159        int count = SettingsPage::instance().value("SharedDirs/Count").toInt(); 
     160        if (!count) { 
     161                return; 
     162        } 
     163 
     164        QMenu menu(this); 
    159165        m_ui->removeButton->setCheckable(true); 
    160166        m_ui->removeButton->setChecked(true); 
    161167 
    162         QMenu menu(this); 
    163         int count = SettingsPage::instance().value("SharedDirs/Count").toInt(); 
    164         for (int i = 1; i <= count; ++i) { 
     168        for (int i = 0; i < count; ++i) { 
    165169                QString dirName = SettingsPage::instance().value( 
    166170                        QString("SharedDirs/Dir_%1").arg(i) 
     
    169173//              dirName = dirName.replace("/", "\\"); 
    170174//#endif 
    171                 /* QAction *ac =*/ menu.addAction(dirName); 
    172 //              if (fCol == 4 && fText == dirName) { 
    173 //                      ac->setIcon(QIcon(":/transfer/icons/clear16")); 
    174 //              } 
     175                menu.addAction(dirName); 
    175176        } 
    176177        QPoint pos(0, m_ui->removeButton->height()); 
     
    181182                LibraryList::getList()->remShared(ret->text().toStdString()); 
    182183        } 
     184        m_ui->removeButton->setChecked(false); 
    183185        m_ui->removeButton->setCheckable(false); 
    184         m_ui->removeButton->setChecked(false); 
    185186} 
    186187