00001
00002 #ifndef SCREEN_H
00003 #define SCREEN_H
00004
00005 #define TIMING //defined in Privl.h, OpenDHT.h, SharingService.h
00006
00007 #include <QtGui/QMainWindow>
00008 #include <QNetworkAccessManager>
00009 #include <QNetworkRequest>
00010 #include <QNetworkReply>
00011 #include <QNetworkDiskCache>
00012 #include <QPushButton>
00013
00014 #include <QHash>
00015 #include <QAction>
00016
00017 #include <qgeocoordinate.h>
00018
00019 #include "Sharing.h"
00020 #include "Location.h"
00021 #include "Friend.h"
00022 #include "Sms.h"
00023 #include "Map.h"
00024
00025 #include "Mapscreen.h"
00026 #include "Loginscreen.h"
00027 #include "Friendscreen.h"
00028 #include "Smsscreen.h"
00029 #include "Settingscreen.h"
00030
00031 #ifdef TIMING
00032 #include <QTime>
00033 #endif
00034
00035
00036 QTM_USE_NAMESPACE
00037
00038
00050 class Privl : public QMainWindow
00051 {
00052 Q_OBJECT
00053
00054
00055 public:
00056 Privl(QWidget *parent = 0);
00057 ~Privl();
00058
00059
00060 loginscreen *login;
00061 mapscreen *maps;
00062 FriendScreen *friends;
00063 SmsScreen *sms;
00064 SettingScreen * settings;
00065
00066 void loadUserSettings();
00067 void connectCallbacks();
00068
00069
00070 void loadMap();
00071 void loadMap(QGeoCoordinate center);
00072 void loadMap(QGeoCoordinate center, int zoom);
00073 void loadMap(QGeoCoordinate center, int zoom, QString selId);
00074 void loadMap(int height, int width);
00075
00076
00077 void setFriends(QHash<QString, Friend*> fl);
00078 void addFriend(QString id, double lat, double lng);
00079 void clearFriends();
00080
00081 void setMe(QString id, double lat, double lng);
00082 Friend* getMe();
00083 void cleanUp();
00084
00085 void setCenter(QGeoCoordinate center);
00086 void setShowFriends(bool show);
00087 void setSelectId(QString id);
00088
00089 enum STATES {LOGIN, MAP, FRIENDS, SMS, SETTINGS};
00090 STATES state;
00091
00092
00093
00094 public slots:
00095 void showLoginScreen();
00096 void showMapScreen();
00097 void showFriendScreen();
00098 void showSmsScreen();
00099 void showSettingScreen();
00100
00101
00102 void actionShareAll();
00103 void actionShareFriend();
00104 void actionFindMe();
00105 void actionFindMeLast();
00106 void actionFindFriends();
00107 void actionFindFriend();
00108 void actionFindDistance();
00109 void actionLogin();
00110 void actionSaveCredentials();
00111 void actionResetCache();
00112
00113
00114 void loggedAction(bool success, QString msg);
00115 void recvLocationAction(QString source, double lat, double lng);
00116 void recvFriendLocationAction(QString id, double lat, double lng);
00117
00118 void logoutAction();
00119 void updateAction();
00120
00121 void setError(QString err);
00122 void setStatus(QString status);
00123
00124 void focusFriend(QListWidgetItem* item);
00125 void setShowDistance(bool show);
00126
00127 void actionSaChanged(QString id, QString action);
00128 void actionLevelChanged(int level);
00129 void actionModeChanged(int mode);
00130 void actionSmsSelected(QModelIndex ind);
00131 void actionTTLChanged(int val);
00132
00133 void exit();
00134
00135
00136
00137 private:
00138 bool logged;
00139 bool connected;
00140 bool ipokiRemember;
00141 QString ipokiUser;
00142 QString ipokiPass;
00143 int level;
00144 int mode;
00145
00146
00147
00148
00149 Sharing sharing;
00150 Location loc;
00151 Sms smservice;
00152
00153 QHash<QString, Friend*> fs;
00154 QHash<QString, QByteArray> sa;
00155 Friend me;
00156 QString status;
00157 QGeoCoordinate mapcenter;
00158 int zoom;
00159 bool showFriends;
00160 bool showDistance;
00161 bool shareWithFriend;
00162 QString selectId;
00163 QString selectIdKey;
00164 int ttl;
00165
00166 Map map;
00167
00168
00169 void initVars();
00170 void resizeEvent(QResizeEvent *);
00171 void saveUserSettings();
00172
00173
00174 #ifdef TIMING
00175 QTime tpos;
00176 QTime tgetfriends;
00177 QTime tshareall;
00178 QTime tloc;
00179 int msecgetfriends;
00180 int msecgetme;
00181 int msecshareall;
00182 int friendCounterGet;
00183 int friendCounterShare;
00184 int dummies;
00185 #endif
00186
00187 };
00188
00189 #endif