Changeset 179
- Timestamp:
- 03/23/09 15:08:36 (3 years ago)
- Location:
- branches/message_tree
- Files:
-
- 7 edited
-
message_tree.cpp (modified) (3 diffs)
-
message_tree.h (modified) (2 diffs)
-
storage/database.cpp (modified) (2 diffs)
-
storage/mysql_database.cpp (modified) (1 diff)
-
storage/mysql_storage.cpp (modified) (5 diffs)
-
sysheaders.h (modified) (2 diffs)
-
version.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/message_tree/message_tree.cpp
r178 r179 6 6 //---------------------------------------------------------------------------------------------- 7 7 #include "message_tree.h" 8 //---------------------------------------------------------------------------------------------- 9 #include "global.h" 8 10 #include "icon_effect.h" 11 #include "tree_widget_item.h" 12 #include "storage/storage_factory.h" 13 //---------------------------------------------------------------------------------------------- 14 /*! 15 * \brief Элемент, который хранится в каждой ноде дерева 16 */ 17 typedef struct AMessageInfoGUI 18 { 19 ATopicInfo Info; /*!< \brief Дескриптор сообщения */ 20 }; 21 //---------------------------------------------------------------------------------------------- 22 /*! 23 * \brief Элемент для дерева группы форумов с информацией о группе 24 */ 25 typedef ATreeWidgetItemT<AMessageInfoGUI> MessageTreeWidgetItem; 9 26 //---------------------------------------------------------------------------------------------- 10 27 … … 15 32 m_message_view = 0; 16 33 m_main_form = 0; 34 35 m_current_forum.ID = 0; 36 m_current_forum.IDGroup = 0; 37 m_current_forum.ShortName = ""; 38 m_current_forum.Name = ""; 39 m_current_forum.Rated = false; 40 m_current_forum.InTop = false; 41 m_current_forum.RateLimit = 0; 17 42 18 43 setFrameShadow(QFrame::Plain); … … 188 213 //---------------------------------------------------------------------------------------------- 189 214 215 void AMessageTree::vertical_scroll (int /*value*/) 216 { 217 } 218 //---------------------------------------------------------------------------------------------- 219 220 void AMessageTree::expand_item (QTreeWidgetItem* item_expanded) 221 { 222 } 223 //---------------------------------------------------------------------------------------------- 224 225 void AMessageTree::timer_on_timer () 226 { 227 } 228 //---------------------------------------------------------------------------------------------- 229 230 void AMessageTree::showSource () 231 { 232 } 233 //---------------------------------------------------------------------------------------------- 234 235 void AMessageTree::selection_changed () 236 { 237 } 238 //---------------------------------------------------------------------------------------------- 239 240 void AMessageTree::menu_mark_message_as_read_triggered () 241 { 242 } 243 //---------------------------------------------------------------------------------------------- 244 245 void AMessageTree::menu_mark_message_as_unread_triggered () 246 { 247 } 248 //---------------------------------------------------------------------------------------------- 249 250 void AMessageTree::menu_mark_thread_as_read_triggered () 251 { 252 } 253 //---------------------------------------------------------------------------------------------- 254 255 void AMessageTree::menu_mark_thread_as_unread_triggered () 256 { 257 } 258 //---------------------------------------------------------------------------------------------- 259 260 void AMessageTree::menu_reply_triggered () 261 { 262 } 263 //---------------------------------------------------------------------------------------------- 264 265 void AMessageTree::processUrl (const QString& url) 266 { 267 } 268 //---------------------------------------------------------------------------------------------- 269 270 void AMessageTree::gotoNextUnreadArticle () 271 { 272 } 273 //---------------------------------------------------------------------------------------------- 274 275 void AMessageTree::gotoNextUnreadThread () 276 { 277 } 278 //---------------------------------------------------------------------------------------------- 279 280 void AMessageTree::menu_special_delete_triggered () 281 { 282 } 283 //---------------------------------------------------------------------------------------------- 284 285 void AMessageTree::item_double_clicked (QTreeWidgetItem* item, int /*column*/) 286 { 287 } 288 //---------------------------------------------------------------------------------------------- 289 290 void AMessageTree::menu_special_edit_triggered () 291 { 292 } 293 //---------------------------------------------------------------------------------------------- 294 295 void AMessageTree::menu_special_plus_1_triggered () 296 { 297 } 298 //---------------------------------------------------------------------------------------------- 299 300 void AMessageTree::menu_special_1_triggered () 301 { 302 } 303 //---------------------------------------------------------------------------------------------- 304 305 void AMessageTree::menu_special_2_triggered () 306 { 307 } 308 //---------------------------------------------------------------------------------------------- 309 310 void AMessageTree::menu_special_3_triggered () 311 { 312 } 313 //---------------------------------------------------------------------------------------------- 314 315 void AMessageTree::menu_special_smile_triggered () 316 { 317 } 318 //---------------------------------------------------------------------------------------------- 319 320 void AMessageTree::menu_special_plus_triggered () 321 { 322 } 323 //---------------------------------------------------------------------------------------------- 324 325 void AMessageTree::menu_special_minus_triggered () 326 { 327 } 328 //---------------------------------------------------------------------------------------------- 329 330 void AMessageTree::getSelectedPath (QList<int>& path) 331 { 332 } 333 //---------------------------------------------------------------------------------------------- 334 335 bool AMessageTree::selectByPath (const QList<int>* path) 336 { 337 } 338 //---------------------------------------------------------------------------------------------- 339 190 340 void AMessageTree::changeForum (const AForumInfo* forum_info) 191 341 { 192 } 193 //---------------------------------------------------------------------------------------------- 194 195 void AMessageTree::vertical_scroll (int /*value*/) 196 { 197 } 198 //---------------------------------------------------------------------------------------------- 199 200 void AMessageTree::expand_item (QTreeWidgetItem* item_expanded) 201 { 202 } 203 //---------------------------------------------------------------------------------------------- 204 205 void AMessageTree::timer_on_timer () 206 { 207 } 208 //---------------------------------------------------------------------------------------------- 209 210 void AMessageTree::showSource () 211 { 212 } 213 //---------------------------------------------------------------------------------------------- 214 215 void AMessageTree::selection_changed () 216 { 217 } 218 //---------------------------------------------------------------------------------------------- 219 220 void AMessageTree::menu_mark_message_as_read_triggered () 221 { 222 } 223 //---------------------------------------------------------------------------------------------- 224 225 void AMessageTree::menu_mark_message_as_unread_triggered () 226 { 227 } 228 //---------------------------------------------------------------------------------------------- 229 230 void AMessageTree::menu_mark_thread_as_read_triggered () 231 { 232 } 233 //---------------------------------------------------------------------------------------------- 234 235 void AMessageTree::menu_mark_thread_as_unread_triggered () 236 { 237 } 238 //---------------------------------------------------------------------------------------------- 239 240 void AMessageTree::menu_reply_triggered () 241 { 242 } 243 //---------------------------------------------------------------------------------------------- 244 245 void AMessageTree::processUrl (const QString& url) 246 { 247 } 248 //---------------------------------------------------------------------------------------------- 249 250 void AMessageTree::gotoNextUnreadArticle () 251 { 252 } 253 //---------------------------------------------------------------------------------------------- 254 255 void AMessageTree::gotoNextUnreadThread () 256 { 257 } 258 //---------------------------------------------------------------------------------------------- 259 260 void AMessageTree::menu_special_delete_triggered () 261 { 262 } 263 //---------------------------------------------------------------------------------------------- 264 265 void AMessageTree::item_double_clicked (QTreeWidgetItem* item, int /*column*/) 266 { 267 } 268 //---------------------------------------------------------------------------------------------- 269 270 void AMessageTree::menu_special_edit_triggered () 271 { 272 } 273 //---------------------------------------------------------------------------------------------- 274 275 void AMessageTree::menu_special_plus_1_triggered () 276 { 277 } 278 //---------------------------------------------------------------------------------------------- 279 280 void AMessageTree::menu_special_1_triggered () 281 { 282 } 283 //---------------------------------------------------------------------------------------------- 284 285 void AMessageTree::menu_special_2_triggered () 286 { 287 } 288 //---------------------------------------------------------------------------------------------- 289 290 void AMessageTree::menu_special_3_triggered () 291 { 292 } 293 //---------------------------------------------------------------------------------------------- 294 295 void AMessageTree::menu_special_smile_triggered () 296 { 297 } 298 //---------------------------------------------------------------------------------------------- 299 300 void AMessageTree::menu_special_plus_triggered () 301 { 302 } 303 //---------------------------------------------------------------------------------------------- 304 305 void AMessageTree::menu_special_minus_triggered () 306 { 307 } 308 //---------------------------------------------------------------------------------------------- 309 310 void AMessageTree::getSelectedPath (QList<int>& path) 311 { 312 } 313 //---------------------------------------------------------------------------------------------- 314 315 bool AMessageTree::selectByPath (const QList<int>* path) 316 { 317 } 318 //---------------------------------------------------------------------------------------------- 342 // 343 // базовая очистка 344 // 345 346 m_current_forum.ID = 0; 347 m_current_forum.IDGroup = 0; 348 m_current_forum.ShortName = ""; 349 m_current_forum.Name = ""; 350 m_current_forum.Rated = false; 351 m_current_forum.InTop = false; 352 m_current_forum.RateLimit = 0; 353 354 if (m_main_form != NULL) 355 m_main_form->setEnabledAction(aaViewSource, false); 356 357 clear(); 358 359 m_message_view->clear(); 360 361 scrollToTop(); 362 363 // если выделена группа, то просто очистка 364 if (forum_info == NULL) 365 { 366 headerItem()->setText(0, QString::fromUtf8("тема")); 367 368 QFont font = headerItem()->font(0); 369 font.setBold(false); 370 headerItem()->setFont(0, font); 371 372 return; 373 } 374 375 // 376 // есть форум для отображения 377 // 378 379 m_current_forum.ID = forum_info->ID; 380 m_current_forum.IDGroup = forum_info->IDGroup; 381 m_current_forum.ShortName = forum_info->ShortName; 382 m_current_forum.Name = forum_info->Name; 383 m_current_forum.Rated = forum_info->Rated; 384 m_current_forum.InTop = forum_info->InTop; 385 m_current_forum.RateLimit = forum_info->RateLimit; 386 387 // вывод наименования форума в хедер 388 headerItem()->setText(0, m_current_forum.Name); 389 390 // 391 // загрузка топиков в зависимости от типа форума 392 // 393 394 // получение хранилища 395 std::auto_ptr<IAStorage> storage(AStorageFactory::getStorage()); 396 397 if (storage.get() == NULL) 398 { 399 QMessageBox::critical(m_parent, QString::fromUtf8("Ошибка!"), QString::fromUtf8("Не выбрано хранилище данных")); 400 return; 401 } 402 403 // если группа форумов обыкновенная 404 if (m_current_forum.IDGroup != SPECIAL_ID_GROUP) 405 { 406 // получение топиков 407 // ориентировочное время выполнения 68 ms (для форума NET, 28199 топиков) 408 QList<int> topic_list; 409 410 if (storage->getForumTopicList(m_current_forum.ID, AGlobal::getInstance()->MaxTopicToShow, topic_list, NULL) == false) 411 { 412 storage->showError(m_parent); 413 return; 414 } 415 AProfiler p; for (int profiler = 0; profiler < 1000; profiler++) { 416 // установка топиков 417 // ориентировочное время выполнения 50 ms (для форума NET, 28199 топиков) 418 QList<QTreeWidgetItem*> items; 419 MessageTreeWidgetItem* items_array = new MessageTreeWidgetItem[topic_list.count()]; 420 421 for (int i = 0; i < topic_list.count(); i++) 422 { 423 MessageTreeWidgetItem* item = &items_array[i]; 424 425 //MessageTreeWidgetItem* item = new MessageTreeWidgetItem(); 426 427 // начальное заполнение дескриптора топика 428 AMessageInfoGUI* info = item->pag(); 429 430 //info->Info.ID = topic_list[i]; 431 432 items.append(item); 433 } 434 435 // отображение на виджет 436 addTopLevelItems(items); 437 clear(); 438 } p.stop(1000); 439 } 440 else // if (forum_info->IDGroup != SPECIAL_ID_GROUP) 441 { 442 } 443 } 444 //---------------------------------------------------------------------------------------------- -
branches/message_tree/message_tree.h
r178 r179 70 70 private: 71 71 72 /*! 73 * \brief Главная форма приложения (для отображения сообщений об ошибках) 74 */ 75 QWidget* m_parent; 72 QWidget* m_parent; /*!< \brief Главная форма приложения (для отображения сообщений об ошибках) */ 76 73 77 74 IForumTree* m_forum_tree; /*!< \brief Интерфейс дерева форумов */ … … 129 126 QAction* m_menu_special_minus; /*!< \brief - (несогласен) */ 130 127 128 // 129 // внутренние переменные 130 // 131 132 AForumInfo m_current_forum; 133 131 134 // IMessageTree 132 135 public: -
branches/message_tree/storage/database.cpp
r94 r179 26 26 AQuery* ADatabase::createQuery (const QString& sql) 27 27 { 28 return new AQuery(this,sql);28 return createPreparedQuery(sql); 29 29 } 30 30 //---------------------------------------------------------------------------------------------- … … 32 32 AQuery* ADatabase::createPreparedQuery (const QString& sql) 33 33 { 34 AQuery* query = createQuery();34 AQuery* query = new AQuery(this); 35 35 36 36 if (query->prepare(sql) == false) -
branches/message_tree/storage/mysql_database.cpp
r96 r179 128 128 129 129 if (prepared == true) 130 { 131 query = createPreparedQuery(sql); 132 133 if (query == NULL) 134 { 135 if (m_transaction) 136 rollback(); 137 else 138 ADatabase::close(); 139 140 return 0; 141 } 142 } 130 query = ADatabase::createPreparedQuery(sql); 143 131 else 144 132 query = ADatabase::createQuery(sql); 133 134 if (query == NULL) 135 { 136 if (m_transaction) 137 rollback(); 138 else 139 ADatabase::close(); 140 } 145 141 146 142 return query; -
branches/message_tree/storage/mysql_storage.cpp
r177 r179 34 34 else 35 35 IAStorage::setLastError(message); 36 37 close(); 36 38 37 39 return false; … … 1834 1836 sql += " `id_forum` = " + QString::number(id_forum) + "\n"; 1835 1837 sql += "ORDER BY\n"; 1836 sql += " `message_date` DESC"; 1838 1839 // поскльку id_message автоинкремент и растет вместе с датой, то 1840 // можно условно положиться на то, что бОльшему id_message соответствует 1841 // бОльшая дата - в результате сортировка дает ~50% выигрыша в производительности 1842 //sql += " `message_date` DESC"; 1843 1844 sql += " `id_message` DESC"; 1837 1845 1838 1846 if (count > 0) … … 1846 1854 if (query_select.get() == NULL) 1847 1855 return returnError(AMySQLDatabase::getLastError()); 1856 1857 query_select->setForwardOnly(true); 1848 1858 1849 1859 if (query_select->exec() == false) … … 1875 1885 return returnError(AMySQLDatabase::getLastError()); 1876 1886 1887 query_select_unread_child->setForwardOnly(true); 1888 1877 1889 if (query_select_unread_child->exec() == false) 1878 1890 return returnError(query_select_unread_child->getLastError()); … … 1909 1921 if (query_select_unread_topic.get() == NULL) 1910 1922 return returnError(AMySQLDatabase::getLastError()); 1923 1924 query_select_unread_topic->setForwardOnly(true); 1911 1925 1912 1926 if (query_select_unread_topic->exec() == false) -
branches/message_tree/sysheaders.h
r177 r179 91 91 class AProfiler 92 92 { 93 public:93 public: 94 94 95 95 /*! 96 96 * \brief При создании экземпляра создается первая отсечка времени. 97 97 */ 98 AProfiler ()99 {100 Start();101 }98 AProfiler () 99 { 100 start(); 101 } 102 102 103 103 /*! … … 105 105 * при повторном вызове заменяет старую отсечку времени текущей. 106 106 */ 107 void Start ()108 {109 gettimeofday(&m_start, 0);110 }107 void start () 108 { 109 gettimeofday(&m_start, 0); 110 } 111 111 112 112 /*! 113 113 * \brief Создание второй отсечки времени и вывод разницы между текущей отсечкой и стартовой в миллисекундах. 114 * \param ittr Количество итераций 114 115 */ 115 void Stop ()116 {117 gettimeofday(&m_stop, 0);116 void stop (int ittr = 1) 117 { 118 gettimeofday(&m_stop, 0); 118 119 119 long long int delta = (m_stop.tv_sec - m_start.tv_sec) * 1000 + (m_stop.tv_usec - m_start.tv_usec) / 1000;120 long long int delta = (m_stop.tv_sec - m_start.tv_sec) * 1000 + (m_stop.tv_usec - m_start.tv_usec) / 1000; 120 121 121 QString msg = QString::number(delta) + "ms";122 QString msg; 122 123 123 QMessageBox::information(0, QString::fromUtf8("Таймер!"), msg);124 } 124 msg += QString::fromUtf8("Общее время : ") + QString::number(delta) + " ms\n"; 125 msg += QString::fromUtf8("Среднее время : ") + QString::number(delta / ittr) + " ms"; 125 126 126 private: 127 QMessageBox::information(0, QString::fromUtf8("Таймер!"), msg); 128 } 129 130 private: 127 131 128 132 /*! 129 133 * \brief Время вызова функции Start(). 130 134 */ 131 timeval m_start; 135 timeval m_start; 136 132 137 /*! 133 138 * \brief Время вызова функции Stop(). 134 139 */ 135 timeval m_stop;140 timeval m_stop; 136 141 }; 137 142 -
branches/message_tree/version.h
r178 r179 20 20 * \brief Дата билда (заменяется автоматически при каждом билде в version.h, что и приводит к смене номера ревизии) 21 21 */ 22 #define AVALON_DATE "Пнд Мар 23 09:01:24MSK 2009"22 #define AVALON_DATE "Пнд Мар 23 11:39:19 MSK 2009" 23 23 24 24 #endif
Note: See TracChangeset
for help on using the changeset viewer.
