You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeedu/kstars/kstars/locationdialog.h

166 lines
5.6 KiB

/***************************************************************************
locationdialog.h - Trinity Desktop Planetarium
-------------------
begin : Sun Feb 11 2001
copyright : (C) 2001 by Jason Harris
email : jharris@30doradus.org
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef LOCATIONDIALOG_H
#define LOCATIONDIALOG_H
/**@class LocationDialog
*Dialog for changing the geographic location of the observer. The
*dialog is divided into two sections.
*
*The top section allows the location to be selected from a database
*of 2000 cities. It contains a MapCanvas (showing map of the globe
*with cities overlaid, with a handler for mouse clicks), a TQListBox
*containing the names of cities in the database, and three KLineEdit
*widgets, which allow the user to filter the List by the name of the
*City, Province, and Country. In addition, the List
*can be filtered by location, by clicking anywhere in the MapCanvas.
*Doing so will display cities within 2 degrees of the clicked position.
*
*The bottom section allows the location to be specified manually.
*The Longitude, Latitude, City name, Province/State name, and Country name
*are entered into KLineEdits. There is also a TQPushButton for adding the
*location to the custom Cities database. If the user selects "Add" without
*filling in all of the manual entry fields, an error message is displayed.
*@short Geographic Location dialog
*@author Jason Harris
*@version 1.0
*/
#include <kdialogbase.h>
#include "geolocation.h"
class TQVBoxLayout;
class TQHBoxLayout;
class TQGridLayout;
class TQGroupBox;
class TQLabel;
class TQListBox;
class TQListBoxItem;
class TQPushButton;
class TQComboBox;
class KLineEdit;
class MapCanvas;
class dmsBox;
class LocationDialog : public KDialogBase {
TQ_OBJECT
public:
/**
*Constructor. Create all widgets, and pack them into TQLayouts.
*Connect Signals to Slots. Run initCityList().
*/
LocationDialog( TQWidget* parent = 0 );
/**
*Destructor (empty)
*/
~LocationDialog();
/**
*Initialize list of cities. Note that the database is not read in here,
*that is done in the KStars constructor. This simply loads the local TQListBox
*with the names of the cities from the kstarsData object.
*/
void initCityList( void );
/**@return pointer to the highlighted city in the List.
*/
GeoLocation* selectedCity() const { return SelectedCity; }
/**@return pointer to the List of filtered city pointers.
*/
TQPtrList<GeoLocation>* filteredList() { return &filteredCityList; }
/**@short Show only cities within 3 degrees of point specified by arguments
*@param longitude the longitude of the search point (int)
*@param latitude the latitude of the search point (int)
*/
void findCitiesNear( int longitude, int latitude );
/**@return the city name of the selected location.
*/
TQString selectedCityName( void ) const { return SelectedCity->translatedName(); }
/**@return the province name of the selected location.
*/
TQString selectedProvinceName( void ) const { return SelectedCity->translatedProvince(); }
/**@return the country name of the selected location.
*/
TQString selectedCountryName( void ) const { return SelectedCity->translatedCountry(); }
/**@return true if the AddCityBUtton is enabled
*/
bool addCityEnabled();
public slots:
/**
*When text is entered in the City/Province/Country Filter KLineEdits,
*the List of cities is trimmed to show only cities beginning with the entered text.
*Also, the TQMemArray of ID numbers is kept in sync with the filtered list.
*/
void filterCity( void );
/**
*When the selected city in the TQListBox changes, repaint the MapCanvas
*so that the crosshairs icon appears on the newly selected city.
*/
void changeCity( void );
/**
*When the "Add new city" TQPushButton is clicked, add the manually-entered
*city information to the user's custom city database.
*/
void addCity( void );
void clearFields( void );
void showTZRules( void );
void nameChanged( void );
void dataChanged( void );
// void prepareToAccept( void );
void slotOk();
private:
/**
*Make sure Longitude and Latitude values are valid.
*/
bool checkLongLat( void );
bool dataModified, nameModified, bCityAdded;
TQGridLayout *glay, *glay2;
TQHBoxLayout *hlay, *hlayCoord, *hlayTZ, *hlayButtons, *hlay3;
TQVBoxLayout *RootLay, *CityLay, *CoordLay, *vlay;
TQGroupBox *CityBox, *CoordBox;
TQLabel *CityFiltLabel, *ProvinceFiltLabel, *CountryFiltLabel;
TQLabel *NewCityLabel, *NewProvinceLabel, *NewCountryLabel;
TQLabel *LongLabel, *LatLabel, *CountLabel;
TQLabel *TZLabel, *TZRuleLabel;
KLineEdit *NewCityName, *NewProvinceName, *NewCountryName;
KLineEdit *CityFilter, *ProvinceFilter, *CountryFilter;
dmsBox *NewLong, *NewLat;
TQComboBox *TZBox, *TZRuleBox;
TQPushButton *AddCityButton, *ClearFields, *ShowTZRules;
MapCanvas *MapView;
TQListBox *GeoBox;
GeoLocation *SelectedCity;
TQPtrList<GeoLocation> filteredCityList;
};
#endif