📄 gpsmgrui.cpp
字号:
#include "gpsMgrUI.h"#include "exceptions.h"#include <gps.h>#include <qinputdialog.h>#include <qlistview.h>#include <sstream>#include "track.h"#include "waypoint.h"#include "waypointEditorUI.h"#include <waypointlist.h>namespace{ using namespace gpsmgr; //-------------------------------------------------------------------------- class TrackListItem : public QListViewItem { public: TrackListItem(DataStore::Tracks::iterator track, QListView * parent) : QListViewItem (parent), mTrack (track) {} QString text(int col) const { switch (col) { case 0: return mTrack->name(); default: return "UNKNOWN COLUMN"; } } void setTrack(DataStore::Tracks::iterator& track) { mTrack = track; } const gpsmgr::Track& track() const { return *mTrack; } private: DataStore::Tracks::iterator mTrack; }; //-------------------------------------------------------------------------- class WaypointListItem : public QListViewItem { public: enum { NAME_COL = 0, LAT_COL, LON_COL, ALT_COL }; WaypointListItem(DataStore::Waypoints::iterator wpitr, QListView * parent) : QListViewItem (parent), mWaypoint (wpitr) {} QString text(int col) const { switch (col) { case NAME_COL: return mWaypoint->name().c_str(); case LAT_COL: { ostringstream oss; oss << mWaypoint->position().lat(); return oss.str(); } case LON_COL: { ostringstream oss; oss << mWaypoint->position().lon(); return oss.str(); } case ALT_COL: { ostringstream oss; oss << mWaypoint->altitude(); return oss.str(); } default: return "UNKNOWN COLUMN"; } } void setWaypoint(DataStore::Waypoints::iterator wpitr) { mWaypoint = wpitr; } const Waypoint& waypoint() const { return *mWaypoint; } DataStore::Waypoints::iterator& waypointIterator() { return mWaypoint; } DataStore::Waypoints::const_iterator waypointIterator() const { return mWaypoint; } private: DataStore::Waypoints::iterator mWaypoint; }; void insertWaypoint(Waypoint& wp, DataStore& ds, QListView* lv) { DataStore::Waypoints::iterator itr = ds.waypoints().insert(ds.waypoints().end(), wp); new WaypointListItem(itr, lv); } }namespace gpsmgr { namespace ui { GPSMgrUI::GPSMgrUI(QWidget* parent, const char* name, WFlags fl) : GPSMgrUIBase (parent, name, fl) {} void GPSMgrUI::downloadGPS() { bool ok; QString device = QInputDialog::getText( "GPS Device", "Enter the device for the GPS:", QLineEdit::Normal, QString::null, &ok, this ); if ( !ok || device.isEmpty() ) return; GPS gps; gps.setDevice(device); Waypointlist wpl; gps.downloadWaypoints(wpl); gps.turnOff(); for (Waypointlist::Waypoints::const_iterator itr = wpl.getList().begin(); itr != wpl.getList().end(); ++itr) { Waypoint wp(*itr); insertWaypoint(wp, mDataStore, mWaypointListView); } } void GPSMgrUI::addWaypoint() { using namespace gpsmgr::exceptions; WaypointEditorUI wpui(this, "WaypointEditorUI"); if (!wpui.exec()) return; Waypoint wp = wpui.waypoint(); insertWaypoint(wp, mDataStore, mWaypointListView); } void GPSMgrUI::deleteWaypoint() { WaypointListItem* curr = dynamic_cast<WaypointListItem*>(mWaypointListView->currentItem()); if (curr == NULL) return; DataStore::Waypoints::iterator itr = curr->waypointIterator(); delete curr; mDataStore.waypoints().erase(itr); } void GPSMgrUI::editWaypoint() { WaypointListItem* curr = dynamic_cast<WaypointListItem*>(mWaypointListView->currentItem()); if (curr == NULL) return; WaypointEditorUI wpui(this, "WaypointEditorUI"); wpui.setWaypoint(curr->waypoint()); if (!wpui.exec()) return; *(curr->waypointIterator()) = wpui.waypoint(); } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -