Changeset 17 for trunk/beos


Ignore:
Timestamp:
Jan 12, 2006, 6:55:27 PM (16 years ago)
Author:
root
Message:

Update 2005-12-18

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/beos/TRWindow.cpp

    r14 r17  
    118118/**
    119119 * Rescans the active Torrents folder, and will add all the torrents there to the
    120  * engine.
     120 * engine. Called during initial Application Start & Stop.
    121121 */
    122122void TRWindow::RescanTorrents() {
     
    160160                                transfers->AddItem(new TRTransfer(path.Path(), node));
    161161                               
    162                                 // Start the newly added torrent.
    163                                 worker_info *startData = (worker_info*)calloc(1, sizeof(worker_info));
    164                                 startData->window = this;
    165                                 startData->index = tr_torrentCount(engine) - 1;
    166                                 thread_id start_thread = spawn_thread(TRWindow::AsynchStartTorrent, "BirthCanal",
    167                                                                       B_NORMAL_PRIORITY, (void *)startData);
    168                                 if (!((start_thread) < B_OK)) {
    169                                         resume_thread(start_thread);
    170                                 } else { // Fallback and start the old way.
    171                                         StartTorrent(startData->index);
    172                                         free(startData);
     162                                bool autoStart = true;
     163                               
     164                                // Decide if we should auto-start this torrent or not.
     165                                BString prefName("download.");
     166                                prefName << path.Path() << ".running";
     167                               
     168                                Prefs *prefs = new Prefs(TRANSMISSION_SETTINGS);
     169                                if (prefs->FindBool(prefName.String(), &autoStart) != B_OK) {
     170                                        autoStart = true;
     171                                }
     172                                delete prefs;
     173                               
     174                                if (autoStart) {
     175                                        // Start the newly added torrent.
     176                                        worker_info *startData = (worker_info*)calloc(1, sizeof(worker_info));
     177                                        startData->window = this;
     178                                        startData->index = tr_torrentCount(engine) - 1;
     179                                        thread_id start_thread = spawn_thread(TRWindow::AsynchStartTorrent, "BirthCanal",
     180                                                                              B_NORMAL_PRIORITY, (void *)startData);
     181                                        if (!((start_thread) < B_OK)) {
     182                                                resume_thread(start_thread);
     183                                        } else { // Fallback and start the old way.
     184                                                StartTorrent(startData->index);
     185                                                free(startData);
     186                                        }
    173187                                }
    174188                                Unlock();
     
    247261                                // path name.
    248262                                tr_stat_t *stats;
    249                                 tr_torrentStat(engine, &stats);
     263                                int max = tr_torrentStat(engine, &stats);
    250264                                int index;
    251                                 for (index = 0; index < tr_torrentCount(engine); index++) {
     265                                for (index = 0; index < max; index++) {
    252266                                        if (strcmp(stats[index].info.torrent, path) == 0) {
    253267                                                tr_torrentClose(engine, index);
     
    308322                delete item;
    309323               
     324               
     325               
    310326                UpdateList(transfers->CurrentSelection(), true);
    311327        } else if (msg->what == B_SIMPLE_DATA) {
     
    316332}
    317333
    318 
     334/**
     335 * Handles QuitRequests.
     336 * Displays a BAlert asking if the user really wants to quit if torrents are running.
     337 * If affimative, then we'll stop all the running torrents.
     338 */
    319339bool TRWindow::QuitRequested() {
    320340        bool quit = false;
     
    349369                Prefs *prefs = new Prefs(TRANSMISSION_SETTINGS);
    350370                prefs->SetRect("window.frame", Frame());
     371               
     372                BString strItem("");
     373                for (int i = 0; i < tr_torrentStat(engine, &s); i++) {
     374                        strItem = "download.";
     375                        strItem << s[i].info.torrent << ".running";
     376                        if (s[i].status & (TR_STATUS_CHECK | TR_STATUS_DOWNLOAD | TR_STATUS_SEED)) {
     377                                prefs->SetBool(strItem.String(), true);
     378                                tr_torrentStop(engine, i);
     379                        } else {
     380                                prefs->SetBool(strItem.String(), false);
     381                        }
     382                }
     383                free(s);
    351384                delete prefs;
    352                
    353                 for (int i = 0; i < tr_torrentCount(engine); i++) {
    354                         tr_torrentStop(engine, i);
    355                 }
    356385               
    357386                be_app->PostMessage(new BMessage(B_QUIT_REQUESTED));
Note: See TracChangeset for help on using the changeset viewer.