mysocials-core 1.0

src/panels/messagebrowserpanel.h

Go to the documentation of this file.
00001 
00007 #ifndef MESSAGEBROWSERPANEL_H
00008 #define MESSAGEBROWSERPANEL_H
00009 
00010 #include <QWidget>
00011 #include <QListWidget>
00012 #include <QMessageBox>
00013 #include <QTreeWidget>
00014 #include <QPushButton>
00015 #include <QDesktopWidget>
00016 
00017 #include "datatypes/message.h"
00018 #include "datatypes/friend.h"
00019 
00020 #include "widgets/messagebrowser.h"
00021 #include "widgets/uiaccountsettings.h"
00022 
00023 #include "servicemgr.h"
00024 
00025 namespace Ui {
00026     class MessageBrowserPanel;
00027 }
00028 
00040 class MessageBrowserPanel : public QWidget
00041 {
00042     Q_OBJECT
00043 public:
00049     explicit MessageBrowserPanel(QWidget *parent = 0);
00050 
00058     explicit MessageBrowserPanel(ServiceMgr *mgr, QWidget *parent = 0);
00059 
00061     ~MessageBrowserPanel();
00062 
00068     void init();
00069 
00075     void hideAll(QLayout *layout);
00076 
00082     void showAll(QLayout *layout);
00083 
00090     enum WindowState {
00091         WindowMessageList,  
00092         WindowMessage       
00093     };
00094 
00100     void setState(WindowState state);
00101 
00105     void setState();
00106 
00112     enum MessagesState {
00113         MessagesInbox,  
00114         MessagesOutbox, 
00115         MessagesDrafts  
00116     };
00117 
00123     void setMessagesState(MessagesState state);
00124 
00132     void showAllMessages();
00133 
00134 signals:
00140     void openMessage(Message msg);
00141 
00147     void deleteMessage(Message msg);
00148 
00152     void newMessage();
00153 
00157     void replyMessage(Message msg);
00158 
00162     void editDraftMessage(Message msg);
00163 public slots:
00171     void showFriendMessages(Friend fd);
00172 private:
00173     Ui::MessageBrowserPanel *ui;
00174     ServiceMgr *sm;
00175     MessageBrowser *mb;
00176 
00177     Friend currentFriend;
00178 
00179     bool isFriendMessages;
00180     bool isInboxMessagesUpdate;
00181     bool isOutboxMessagesUpdate;
00182 
00183     bool isPortraitMode;
00184 
00185     // current state for window
00186     WindowState state;
00187 
00188     MessagesState msgState;
00189 
00190     QPushButton *buttonInbox;
00191     QPushButton *buttonOutbox;    
00192     QPushButton *buttonDrafts;
00193     QPushButton *buttonNewMsg;
00194     QPushButton *buttonSaveDraft;
00195     QPushButton *buttonEditDraft;
00196     QPushButton *buttonReply;
00197     QPushButton *buttonDeleteMsg;
00198     QPushButton *buttonBack;
00199 
00200     QTreeWidgetItem* createMessageWidget(Message msg);
00201 
00202 private slots:
00203     void updateListInboxMessages(MessageList list, bool isLastUpdate);
00204     void updateListOutboxMessages(MessageList list, bool isLastUpdate);
00205     void showListDraftMessages();
00206 
00207     void deleteMessageClicked();
00208     void newMessageClicked();
00209     void replyMessageClicked();
00210     void editDraftMessage();
00211 
00212     void orientationChanged();
00213 
00214     void hideMessage();
00215 
00216     void refreshListInboxMessages();
00217     void refreshListInboxMessages(bool isNeedUpdate);
00218     void refreshListOutboxMessages();
00219     void refreshListOutboxMessages(bool isNeedUpdate);
00220 
00221     void updateAccounts(AccountList list);
00222 
00223     void messageSelected(QTreeWidgetItem* item);
00224 
00225 };
00226 
00227 #endif // MESSAGEBROWSERPANEL_H