]> git.mxchange.org Git - flightgear.git/blobdiff - src/ATC/ATCDialog.hxx
Modified Files:
[flightgear.git] / src / ATC / ATCDialog.hxx
index 812d08dda97100da46e597e47b71d52cbbb60ad9..76cf2cc9fb3e9892152b7646dad9f02aefddd400 100644 (file)
 //
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 #ifndef ATC_DIALOG_HXX
 #define ATC_DIALOG_HXX
 
 #include <simgear/compiler.h>
 
+#include <vector>
+#include <map>
+
 #include "ATC.hxx"
 
+SG_USING_STD(vector);
+SG_USING_STD(map);
+
+class NewGUI;
+
 // ATCMenuEntry - an encapsulation of an entry in the ATC dialog
 struct ATCMenuEntry {
 
   string  stationid;   // ID of transmitting station
-  int     stationfr;   // ?
+  //int     stationfr; // ?
   string  transmission;        // Actual speech of transmission
   string  menuentry;   // Shortened version for display in the dialog
+  int callback_code;    // This code is supplied by the registering station, and then
+                        // returned to the registering station if that option is chosen.
+                        // The actual value is only understood by the registering station - 
+                        // FGATCDialog only stores it and returns it if appropriate.
 
   ATCMenuEntry();
   ~ATCMenuEntry();
 };
 
-// convenience types
-typedef vector < ATCMenuEntry > atcmentry_list_type;
-typedef atcmentry_list_type::iterator atcmentry_list_iterator;
-typedef atcmentry_list_type::const_iterator atcmentry_list_const_iterator;
+typedef vector < ATCMenuEntry > atcmentry_vec_type;
+typedef atcmentry_vec_type::iterator atcmentry_vec_iterator;
   
-// typedef map < string, atcmentry_list_type, less<string> > atcmentry_map_type;
-typedef map < string, atcmentry_list_type > atcmentry_map_type;
+typedef map < string, atcmentry_vec_type > atcmentry_map_type;
 typedef atcmentry_map_type::iterator atcmentry_map_iterator;
-typedef atcmentry_map_type::const_iterator atcmentry_map_const_iterator;
 
-void ATCDialogInit();
+//void ATCDialogInit();
 
-void ATCDoDialog(atc_type type);
+//void ATCDoDialog(atc_type type);
 
 class FGATCDialog {
        
 public:
 
+       FGATCDialog();
+       ~FGATCDialog();
+       
        void Init();
        
-       void DoDialog();
+       void Update(double dt);
+       
+       void PopupDialog();
        
-       void add_entry( string station, string transmission, string menutext );
+       void PopupCallback(int);
        
-       bool trans_reg( const string &station, const string &trans );
+       void add_entry( const string& station, const string& transmission, const string& menutext, atc_type type, int code);
+       
+       void remove_entry( const string &station, const string &trans, atc_type type );
+
+       void remove_entry( const string &station, int code, atc_type type );
+       
+       // query the database whether the transmission is already registered; 
+       bool trans_reg( const string &station, const string &trans, atc_type type );
+       
+       // query the database whether the transmission is already registered; 
+       bool trans_reg( const string &station, int code, atc_type type );
        
        // Display a frequency search dialog for nearby stations
        void FreqDialog();
        
        // Display the comm ATC frequencies for airport ident
        // where ident is a valid ICAO code.
-       void FreqDisplay(string ident);
+       void FreqDisplay(string& ident);
 
 private:
 
-       atcmentry_map_type atcmentrylist_station;
+       atcmentry_map_type available_dialog[ATC_NUM_TYPES];
   
        int  freq;
        bool reset;
        
+       bool _callbackPending;
+       double _callbackTimer;
+       double _callbackWait;
+       FGATC* _callbackPtr;
+       int _callbackCode;
+
+       NewGUI *_gui;
 };
        
 extern FGATCDialog *current_atcdialog;