mainwindow.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include "DataHelper.h"
  5. #include "QMutex"
  6. #include <QLocalServer>
  7. #include <QLocalSocket>
  8. namespace Ui {
  9. class MainWindow;
  10. }
  11. class MainWindow : public QMainWindow
  12. {
  13. Q_OBJECT
  14. public:
  15. explicit MainWindow(QWidget *parent = 0);
  16. ~MainWindow();
  17. int createTab(QString name = "");
  18. protected:
  19. virtual void keyPressEvent(QKeyEvent *event);
  20. virtual void keyReleaseEvent(QKeyEvent *event);
  21. private:
  22. Ui::MainWindow *ui;
  23. QMutex mutex;
  24. QVector<Tab*> tabs;
  25. Tab* getTabById (int tabId = -1);
  26. Tab* getTabByWidget(QWidget *w);
  27. int tabFocus (int tabId);
  28. bool deleteTab (Tab* tab);
  29. bool isTabExist (int tabId);
  30. bool isTabNameExist(QString tabName);
  31. void StartServer(const QString&);
  32. void getNewConnections();
  33. QLocalServer server;
  34. QVector<QLocalSocket*> connection_list;
  35. QString version = "v 1.32";
  36. QPoint getPoint(QString *str);
  37. enum Commands : uint{
  38. undefined,
  39. IS_LOAD,
  40. GET_URL,
  41. OPEN_URL,
  42. TAB_FOCUS_BY_NAME,
  43. EVAL_JS,
  44. SET_PROXY,
  45. SET_USERAGENT,
  46. JS_ERROR_LOGGING,
  47. JS_LOG_LEVEL,
  48. JS_ON_ERROR_ALERT,
  49. GET_HTML,
  50. SET_HTML,
  51. V2,
  52. V3,
  53. HCAP,
  54. RECAPTCHA_RESPONSE,
  55. FORWARD,
  56. BACK,
  57. RELOAD,
  58. GET_IDS,
  59. GET_USERAGENT,
  60. GET_TAB_ID,
  61. GET_TAB_COUNT,
  62. CLOSE_WINDOW,
  63. WINDOW_MINIMAZE,
  64. WINDOW_RESTORE,
  65. DEL_TOR,
  66. PROXY_ON,
  67. PROXY_OFF,
  68. GET_COOKIES,
  69. DELETE_ALL_COOKIES,
  70. JS_ERROR,
  71. CLEAR_JS_ERRORS,
  72. ADD_TAB,
  73. ADD_TAB_FOCUS,
  74. CLOSE_TAB,
  75. TAB_FOCUS,
  76. CLOSE_TAB_BY_NAME,
  77. IS_TAB_EXISTS,
  78. IS_TAB_NAME_EXISTS,
  79. SET_WINDOW_SIZE,
  80. SET_POSITION,
  81. TOR,
  82. SET_CACHE_DIR,
  83. SET_COOKIE_DIR,
  84. SET_OWN_CACHE_DIR,
  85. SET_OWN_COOKIE_DIR,
  86. SET_COOKIES,
  87. SET_COOKIES_FROM_STRING,
  88. SAVE_COOKIES,
  89. SAVE_COOKIES_TO_PATH,
  90. GET_COOKIE_VALUE_BY_NAME,
  91. GET_COOKIE_BY_DOMAIN,
  92. GET_DOMAIN_COOKIE_VALUE_BY_NAME,
  93. MOUSEE_EMULATION,
  94. SCREEN_SHOT,
  95. PIXEL_EXISTS,
  96. // CONTAINS_IMAGE,
  97. // CAPMONSTER,
  98. L_BUTTON_CLICK,
  99. R_BUTTON_CLICK,
  100. L_BUTTON_PRESS,
  101. L_BUTTON_RELEASE,
  102. MOUSE_MOVE,
  103. SET_WINDOW_TITLE,
  104. SCROLL_Y,
  105. SCROLL_TO_Y,
  106. SCROLL_X,
  107. SCROLL_TO_X,
  108. SCROLL_Y_POSITION,
  109. SCROLL_Y_MAX,
  110. SCROLL_X_POSITION,
  111. SCROLL_X_MAX,
  112. GET_POSITION,
  113. GET_WINDOW_SIZE,
  114. IMAGES,
  115. IS_JS,
  116. ENABLE_JS,
  117. DISABLE_JS,
  118. WINDOW_MAXIMIZE,
  119. ENABLE_ACCELERATION,
  120. DISABLE_ACCELERATION,
  121. HIDE_BAR,
  122. SHOW_BAR,
  123. IS_BAR,
  124. };
  125. enum Errors : uint{
  126. NO_TABS,
  127. BAD_ID,
  128. NO_COMMAND,
  129. TAB_NOT_EXISTS,
  130. BAD_CAPTCHA_TYPE,
  131. BAD_COMMAND_NAME,
  132. BAD_PROXY_TYPE_OR_PARAMS,
  133. BAD_COMMAND_PARAM_LIST,
  134. BAD_COMMAND_NAME_OR_PARAMS,
  135. BAD_MOUSE_EMULATION,
  136. TOO_MUCH_PARAMS
  137. };
  138. const QByteArray NO_TABS_err = "No_Tabs_In_Browser";
  139. const QByteArray BAD_ID_err = "Bad_Tab_Id";
  140. const QByteArray NO_COMMAND_err = "Command_Name_Required";
  141. const QByteArray TAB_NOT_EXISTS_err = "Tab_Not_Exists";
  142. const QByteArray BAD_CAPTCHA_TYPE_err = "Bad_Captcha_Type";
  143. const QByteArray BAD_COMMAND_NAME_err = "Command_Executor_Not_Found";
  144. const QByteArray BAD_PROXY_TYPE_OR_PARAMS_err = "Bad_Proxy_Type_Or_Params";
  145. const QByteArray BAD_COMMAND_PARAM_LIST_err = "Bad_Params_Count_For_Command";
  146. const QByteArray BAD_COMMAND_NAME_OR_PARAMS_err = "Bad_Command_Name_Or_Params";
  147. const QByteArray BAD_MOUSE_EMULATION_err = "Mouse_Emulation_Failed";
  148. const QByteArray TOO_MUCH_PARAMS_err = "Too_Much_Params_For_Command";
  149. const QByteArray UNDEFINED_ERROR = "Undefined_Error";
  150. int mouseClick_X;
  151. int mouseClick_Y;
  152. bool ControlKeyPressed = false;
  153. void save_position_and_pseudo_minimaze();
  154. void restore_position_and_show_normal();
  155. QPoint normal_pos;
  156. bool isMinimized = false;
  157. static void scroll_y_position(Tab *tab, QByteArray *data_to_server);
  158. static void scroll_y_max(Tab *tab, QByteArray *data_to_server);
  159. static void scroll_y(Tab *tab, QByteArray *data_to_server, QString arg);
  160. static void scroll_to_y(Tab *tab, QByteArray *data_to_server, QString arg);
  161. static void scroll_x_position(Tab *tab, QByteArray *data_to_server);
  162. static void scroll_x_max(Tab *tab, QByteArray *data_to_server);
  163. static void scroll_x(Tab *tab, QByteArray *data_to_server, QString arg);
  164. static void scroll_to_x(Tab *tab, QByteArray *data_to_server, QString arg);
  165. static void setCachePath(Tab *tab, QString path);
  166. static void setCookiePath(Tab *tab, QString path);
  167. void scrollToClickPoint(QPoint *point);
  168. bool performeMouseEmulation(Tab *tab, Commands command, QPoint *point);
  169. bool isMatchString(QString &string, QStringList strings);
  170. void SendToServer(QLocalSocket *socket, const QByteArray *str);
  171. void error(Errors err, QLocalSocket *socket);
  172. const QByteArray * getError(Errors err);
  173. Commands getCommand(QString *posterCommand);
  174. private slots:
  175. void readSocket();
  176. void disconnectSocket();
  177. void tabChanged(int index);
  178. bool eventFilter(QObject *obj, QEvent *event);
  179. void mouseMoveEvent (QMouseEvent* event);
  180. void mousePressEvent(QMouseEvent* event);
  181. void on_pushButton_clicked();
  182. void on_pushButton_2_clicked();
  183. void on_url_line_returnPressed();
  184. void on_btn_saveCookie_clicked();
  185. void on_btn_removeCookie_clicked();
  186. void on_tabWidget_tabCloseRequested(int index);
  187. };
  188. #endif // MAINWINDOW_H