reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

import.hpp (1667B)


      1 /* ReaPack: Package manager for REAPER
      2  * Copyright (C) 2015-2025  Christian Fillion
      3  *
      4  * This program is free software: you can redistribute it and/or modify
      5  * it under the terms of the GNU Lesser General Public License as published by
      6  * the Free Software Foundation, either version 3 of the License, or
      7  * (at your option) any later version.
      8  *
      9  * This program is distributed in the hope that it will be useful,
     10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     12  * GNU Lesser General Public License for more details.
     13  *
     14  * You should have received a copy of the GNU Lesser General Public License
     15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     16  */
     17 
     18 #ifndef REAPACK_IMPORT_HPP
     19 #define REAPACK_IMPORT_HPP
     20 
     21 #include "dialog.hpp"
     22 
     23 #include "remote.hpp"
     24 
     25 #include <deque>
     26 #include <string>
     27 
     28 class MemoryDownload;
     29 class ThreadPool;
     30 
     31 class Import : public Dialog
     32 {
     33 public:
     34   Import();
     35 
     36 protected:
     37   void onInit() override;
     38   void onCommand(int, int) override;
     39   void onTimer(int) override;
     40 
     41 private:
     42   enum State {
     43     OK,
     44     Aborted,
     45     Close,
     46   };
     47 
     48   struct ImportData {
     49     size_t index;
     50     Remote remote;
     51     std::string contents;
     52 
     53     bool operator<(const ImportData &o) const { return index < o.index; }
     54   };
     55 
     56   ThreadPool *setupPool();
     57   void fetch();
     58   bool read(MemoryDownload *, size_t index);
     59   void processQueue();
     60   bool import(const ImportData &);
     61   void setWaiting(bool);
     62 
     63   std::unique_ptr<ThreadPool> m_pool;
     64   State m_state;
     65   std::deque<ImportData> m_queue;
     66   short m_fakePos;
     67 
     68   HWND m_url;
     69   HWND m_progress;
     70   HWND m_discover;
     71 };
     72 
     73 #endif