Changeset 207


Ignore:
Timestamp:
04/05/09 03:29:19 (3 years ago)
Author:
antonbatenev.ya.ru
Message:

fix #37 - спец-директория "Черновики" (см. так же #46)

Location:
trunk
Files:
1 added
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/form_main.cpp

    r173 r207  
    149149        AModerate2SendList moderates; 
    150150 
    151         if (storage->getMessage2SendList(messages_temp, NULL) == false) 
     151        if (storage->getMessage2SendList(messages_temp, false, NULL) == false) 
    152152        { 
    153153                storage->showError(this); 
  • trunk/form_message.cpp

    r198 r207  
    137137        // установка обработчиков формы 
    138138        connect(m_button_send,  SIGNAL(triggered()),                 this, SLOT(button_send_triggered())); 
     139        connect(m_button_draft, SIGNAL(triggered()),                 this, SLOT(button_draft_triggered())); 
    139140        connect(m_text_subject, SIGNAL(textChanged(const QString&)), this, SLOT(text_subject_text_changed(const QString&))); 
    140141        connect(m_tab_message,  SIGNAL(currentChanged(int)),         this, SLOT(tab_changed(int))); 
     
    170171//---------------------------------------------------------------------------------------------- 
    171172 
    172 void FormMessage::button_send_triggered () 
     173void FormMessage::sendMessage (bool draft) 
    173174{ 
    174175        // получение хранилища 
     
    189190        info.Message  = m_text_source->toPlainText(); 
    190191        info.Date     = QDateTime::currentDateTime(); 
     192        info.Draft    = draft; 
    191193 
    192194        if (m_edit_id == 0) 
     
    218220 
    219221        deleteLater(); 
     222} 
     223//---------------------------------------------------------------------------------------------- 
     224 
     225void FormMessage::button_send_triggered () 
     226{ 
     227        sendMessage(false); 
     228} 
     229//---------------------------------------------------------------------------------------------- 
     230 
     231void FormMessage::button_draft_triggered () 
     232{ 
     233        sendMessage(true); 
    220234} 
    221235//---------------------------------------------------------------------------------------------- 
  • trunk/form_message.h

    r197 r207  
    7272                void closeEvent (QCloseEvent* event); 
    7373 
     74                /*! 
     75                 * \brief Поместить сообщение к отправке. 
     76                 * \param draft - флаг черновика 
     77                 */ 
     78                void sendMessage (bool draft); 
     79 
    7480        private slots: 
    7581 
     
    8389                 */ 
    8490                void button_send_triggered (); 
     91 
     92                /*! 
     93                 * \brief В черновики. 
     94                 */ 
     95                void button_draft_triggered (); 
    8596 
    8697                /*! 
  • trunk/form_message_ui.cpp

    r172 r207  
    2626 
    2727        m_toolbar_message->addAction(m_button_send); 
     28 
     29        m_button_draft = new QAction(m_toolbar_message); 
     30        m_button_draft->setIcon(QIcon(":/icons/draft24.png")); 
     31        m_button_draft->setText(QString::fromUtf8("в черновики")); 
     32 
     33        m_toolbar_message->addAction(m_button_draft); 
    2834 
    2935        m_button_smile = new QAction(m_toolbar_message); 
  • trunk/form_message_ui.h

    r172 r207  
    4444 
    4545                QAction*  m_button_send;      /*!< \brief Кнопка "отправить"   */ 
     46                QAction*  m_button_draft;     /*!< \brief Кнопка "в черновики" */ 
    4647                QAction*  m_button_smile;     /*!< \brief Кнопка "смайл"       */ 
    4748                QAction*  m_button_bold;      /*!< \brief Кнопка "жирный"      */ 
  • trunk/forum_tree.cpp

    r199 r207  
    238238        special_moderate.RateLimit = 0; 
    239239 
     240        AForumInfo special_draft; 
     241 
     242        special_draft.ID        = SPECIAL_ID_FORUM_DRAFTS; 
     243        special_draft.IDGroup   = special_group.Group.ID; 
     244        special_draft.ShortName = QString::fromUtf8("drafts"); 
     245        special_draft.Name      = QString::fromUtf8("Черновики"); 
     246        special_draft.Rated     = false; 
     247        special_draft.InTop     = false; 
     248        special_draft.RateLimit = 0; 
     249 
    240250        special_group.Forums.append(special_message); 
    241251        special_group.Forums.append(special_rating); 
    242252        special_group.Forums.append(special_moderate); 
     253        special_group.Forums.append(special_draft); 
    243254 
    244255        m_specail_group_count = 1; 
  • trunk/message_tree.cpp

    r199 r207  
    240240                else 
    241241                { 
    242                         if (m_current_forum.ID == SPECIAL_ID_FORUM_MESSAGE2SEND || 
    243                             m_current_forum.ID == SPECIAL_ID_FORUM_MODERATE2SEND) 
     242                        if (m_current_forum.ID == SPECIAL_ID_FORUM_MESSAGE2SEND  || 
     243                            m_current_forum.ID == SPECIAL_ID_FORUM_MODERATE2SEND || 
     244                            m_current_forum.ID == SPECIAL_ID_FORUM_DRAFTS 
     245                           ) 
    244246                        { 
    245247                                m_menu_special_edit->setVisible(true); 
     
    411413                // специальная группа форумов 
    412414                if (m_current_forum.ID == SPECIAL_ID_FORUM_MESSAGE2SEND) 
    413                         loadMessage2Send(); 
     415                        loadMessage2Send(false); 
    414416                else if (m_current_forum.ID == SPECIAL_ID_FORUM_RATING2SEND) 
    415417                        loadRating2Send(); 
    416418                else if (m_current_forum.ID == SPECIAL_ID_FORUM_MODERATE2SEND) 
    417419                        loadModerate2Send(); 
     420                else if (m_current_forum.ID == SPECIAL_ID_FORUM_DRAFTS) 
     421                        loadMessage2Send(true); 
    418422        } 
    419423} 
     
    780784 
    781785        // отображение сообщения 
    782         m_message_view->setMessage(*info, m_current_forum.ID == SPECIAL_ID_FORUM_MESSAGE2SEND, m_current_forum.Rated); 
     786        m_message_view->setMessage(*info, m_current_forum.ID == SPECIAL_ID_FORUM_MESSAGE2SEND || m_current_forum.ID == SPECIAL_ID_FORUM_DRAFTS, m_current_forum.Rated); 
    783787 
    784788        // взвод таймера для пометки как прочитанного 
     
    11441148//---------------------------------------------------------------------------------------------- 
    11451149 
    1146 void AMessageTree::loadMessage2Send () 
     1150void AMessageTree::loadMessage2Send (bool drafts) 
    11471151{ 
    11481152        std::auto_ptr<IAStorage> storage(AStorageFactory::getStorage()); 
     
    11561160        AMessageInfoList list; 
    11571161 
    1158         if (storage->getMessage2SendList(list, NULL) == false) 
     1162        if (storage->getMessage2SendList(list, drafts, NULL) == false) 
    11591163        { 
    11601164                storage->showError(m_parent); 
     
    16631667                return; 
    16641668 
    1665         if (!(m_current_forum.ID == SPECIAL_ID_FORUM_MESSAGE2SEND || 
    1666               m_current_forum.ID == SPECIAL_ID_FORUM_RATING2SEND  || 
    1667               m_current_forum.ID == SPECIAL_ID_FORUM_MODERATE2SEND 
     1669        if (!(m_current_forum.ID == SPECIAL_ID_FORUM_MESSAGE2SEND  || 
     1670              m_current_forum.ID == SPECIAL_ID_FORUM_RATING2SEND   || 
     1671              m_current_forum.ID == SPECIAL_ID_FORUM_MODERATE2SEND || 
     1672              m_current_forum.ID == SPECIAL_ID_FORUM_DRAFTS 
    16681673        )) 
    16691674                return; 
     
    16961701        setCurrentItem(item); 
    16971702 
    1698         if (!(m_current_forum.ID == SPECIAL_ID_FORUM_MESSAGE2SEND || 
    1699               m_current_forum.ID == SPECIAL_ID_FORUM_RATING2SEND  || 
    1700               m_current_forum.ID == SPECIAL_ID_FORUM_MODERATE2SEND 
     1703        if (!(m_current_forum.ID == SPECIAL_ID_FORUM_MESSAGE2SEND  || 
     1704              m_current_forum.ID == SPECIAL_ID_FORUM_RATING2SEND   || 
     1705              m_current_forum.ID == SPECIAL_ID_FORUM_MODERATE2SEND || 
     1706              m_current_forum.ID == SPECIAL_ID_FORUM_DRAFTS 
    17011707        )) 
    17021708                return; 
     
    17131719                return; 
    17141720 
    1715         if (!(m_current_forum.ID == SPECIAL_ID_FORUM_MESSAGE2SEND || 
    1716               m_current_forum.ID == SPECIAL_ID_FORUM_RATING2SEND  || 
    1717               m_current_forum.ID == SPECIAL_ID_FORUM_MODERATE2SEND 
     1721        if (!(m_current_forum.ID == SPECIAL_ID_FORUM_MESSAGE2SEND  || 
     1722              m_current_forum.ID == SPECIAL_ID_FORUM_RATING2SEND   || 
     1723              m_current_forum.ID == SPECIAL_ID_FORUM_MODERATE2SEND || 
     1724              m_current_forum.ID == SPECIAL_ID_FORUM_DRAFTS 
    17181725        )) 
    17191726                return; 
    17201727 
    1721         if (m_current_forum.ID == SPECIAL_ID_FORUM_MESSAGE2SEND) 
     1728        if (m_current_forum.ID == SPECIAL_ID_FORUM_MESSAGE2SEND || m_current_forum.ID == SPECIAL_ID_FORUM_DRAFTS) 
    17221729        { 
    17231730                FormMessage* form = new FormMessage(NULL, false, *(item->pag()), item->pag()->Special); 
  • trunk/message_tree.h

    r198 r207  
    202202                /*! 
    203203                 * \brief Загрузить сообщения к отправке 
    204                  */ 
    205                 void loadMessage2Send (); 
     204                 * \param drafts - Флаг черновиков 
     205                 */ 
     206                void loadMessage2Send (bool drafts); 
    206207 
    207208                /*! 
  • trunk/model/forum.h

    r199 r207  
    7878const int SPECIAL_ID_FORUM_MODERATE2SEND = -3; 
    7979 
     80/*! 
     81 * \brief Константа для спец-форума "черновики" 
     82 */ 
     83const int SPECIAL_ID_FORUM_DRAFTS = -4; 
     84 
    8085#endif 
  • trunk/model/message.h

    r203 r207  
    147147        QString   Message;  /*!< \brief Сообщение              */ 
    148148        QDateTime Date;     /*!< \brief Дата                   */ 
     149        bool      Draft;    /*!< \brief Флаг черновика         */ 
    149150} AMessage2Send; 
    150151 
  • trunk/resource.qrc

    r175 r207  
    2929                <file>icons/synchronize24.png</file> 
    3030                <file>icons/reply24.png</file> 
     31                <file>icons/draft24.png</file> 
    3132                <file>icons/new24.png</file> 
    3233                <file>icons/nextunreadarticle24.png</file> 
  • trunk/storage/istorage.h

    r196 r207  
    224224                 * \brief Возвращает список всех сообщений к отправке. 
    225225                 * \param list Список сообщений к отправке. 
    226                  * \param progress Прогресс выполнения операции. 
    227                  */ 
    228                 virtual bool getMessage2SendList (AMessageInfoList& list, IProgress* progress = NULL) = 0; 
     226                 * \param drafts Флаг выбора черновиков. 
     227                 * \param progress Прогресс выполнения операции. 
     228                 */ 
     229                virtual bool getMessage2SendList (AMessageInfoList& list, bool drafts, IProgress* progress = NULL) = 0; 
    229230 
    230231                /*! 
  • trunk/storage/mysql_storage.cpp

    r206 r207  
    17601760        sql += "        COUNT(*)\n"; 
    17611761        sql += "FROM\n"; 
    1762         sql += "        `message2send`"; 
     1762        sql += "        `message2send`\n"; 
     1763        sql += "WHERE\n"; 
     1764        sql += "        `draft` = false\n"; 
    17631765 
    17641766        std::auto_ptr<AQuery> query_message(createQuery(sql, false)); 
     
    18321834        if (info_moderate.Count > 0) 
    18331835                list.append(info_moderate); 
     1836 
     1837        // черновики 
     1838        sql  = ""; 
     1839        sql += "SELECT\n"; 
     1840        sql += "        COUNT(*)\n"; 
     1841        sql += "FROM\n"; 
     1842        sql += "        `message2send`\n"; 
     1843        sql += "WHERE\n"; 
     1844        sql += "        `draft` = true\n"; 
     1845 
     1846        std::auto_ptr<AQuery> query_draft(createQuery(sql, false)); 
     1847 
     1848        if (query_draft.get() == NULL) 
     1849                return returnError(AMySQLDatabase::getLastError()); 
     1850 
     1851        if (query_draft->exec() == false) 
     1852                return returnError(query_draft->getLastError()); 
     1853 
     1854        query_draft->next(); 
     1855 
     1856        AUnreadForumCountInfo info_draft; 
     1857 
     1858        info_draft.IDForum = SPECIAL_ID_FORUM_DRAFTS; 
     1859        info_draft.Count   = query_draft->value(0).toInt(); 
     1860        info_draft.CountMy = 0; 
     1861 
     1862        if (info_draft.Count > 0) 
     1863                list.append(info_draft); 
    18341864 
    18351865        return returnSuccess(); 
     
    28802910        sql += "        `subject`,\n"; 
    28812911        sql += "        `message`,\n"; 
    2882         sql += "        `date`\n"; 
     2912        sql += "        `date`,\n"; 
     2913        sql += "        `draft`\n"; 
    28832914        sql += ")\n"; 
    28842915        sql += "VALUES\n"; 
     
    28892920        sql += "        :subject,\n"; 
    28902921        sql += "        :message,\n"; 
    2891         sql += "        :date\n"; 
     2922        sql += "        :date,\n"; 
     2923        sql += "        :draft\n"; 
    28922924        sql += ")\n"; 
    28932925        sql += "ON DUPLICATE KEY UPDATE\n"; 
     
    28962928        sql += "        `subject`   = :u_subject,\n"; 
    28972929        sql += "        `message`   = :u_message,\n"; 
    2898         sql += "        `date`      = :u_date"; 
     2930        sql += "        `date`      = :u_date,\n"; 
     2931        sql += "        `draft`     = :u_draft"; 
    28992932 
    29002933        std::auto_ptr<AQuery> query(createQuery(sql)); 
     
    29092942        query->bindValue(":message",   info.Message); 
    29102943        query->bindValue(":date",      info.Date); 
     2944        query->bindValue(":draft",     info.Draft); 
    29112945 
    29122946        query->bindValue(":u_id_parent", info.IDParent); 
     
    29152949        query->bindValue(":u_message",   info.Message); 
    29162950        query->bindValue(":u_date",      info.Date); 
     2951        query->bindValue(":u_draft",     info.Draft); 
    29172952 
    29182953        if (query->exec() == false) 
     
    29232958//---------------------------------------------------------------------------------------------- 
    29242959 
    2925 bool AMySQLStorage::getMessage2SendList (AMessageInfoList& list, IProgress* progress) 
     2960bool AMySQLStorage::getMessage2SendList (AMessageInfoList& list, bool drafts, IProgress* progress) 
    29262961{ 
    29272962        if (progress != NULL) 
     
    29392974        sql += "FROM\n"; 
    29402975        sql += "        `message2send`\n"; 
     2976        sql += "WHERE\n"; 
     2977        sql += (QString)"       `draft` = " + (drafts == true ? "true" : "false") + "\n"; 
    29412978        sql += "ORDER BY\n"; 
    29422979        sql += "        `date` DESC"; 
     
    35283565        sql += "DELETE FROM\n"; 
    35293566 
    3530         if (id_special == SPECIAL_ID_FORUM_MESSAGE2SEND) 
     3567        if (id_special == SPECIAL_ID_FORUM_MESSAGE2SEND || SPECIAL_ID_FORUM_DRAFTS) 
    35313568                sql += "        `message2send`\n"; 
    35323569        else if (id_special == SPECIAL_ID_FORUM_RATING2SEND) 
  • trunk/storage/mysql_storage.h

    r196 r207  
    6464                bool getMessageIds          (int from_id, int to_id, QList<int>& list, IProgress* progress = NULL); 
    6565                bool addMessage2Send        (const AMessage2Send& info, IProgress* progress = NULL); 
    66                 bool getMessage2SendList    (AMessageInfoList& list, IProgress* progress = NULL); 
     66                bool getMessage2SendList    (AMessageInfoList& list, bool drafts, IProgress* progress = NULL); 
    6767                bool getModerate2SendInfo   (int id, AModerate2Send& info, IProgress* progress = NULL); 
    6868                bool addRating2Send         (const ARating2Send& info, IProgress* progress = NULL); 
  • trunk/version.h

    r206 r207  
    2020 * \brief Дата билда (заменяется автоматически при каждом билде в version.h, что и приводит к смене номера ревизии) 
    2121 */ 
    22 #define AVALON_DATE "Вск Апр  5 00:20:59 MSD 2009" 
     22#define AVALON_DATE "Вск Апр  5 03:19:55 MSD 2009" 
    2323 
    2424#endif 
Note: See TracChangeset for help on using the changeset viewer.