00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef OST_GUI_MESSAGES_MESSAGE_WIDGET_HH
00020 #define OST_GUI_MESSAGES_MESSAGE_WIDGET_HH
00021
00022
00023 #include <ost/gui/widget.hh>
00024 #include <ost/gui/module_config.hh>
00025
00026 #include <QListView>
00027 #include <QMessageBox>
00028 #include <QStandardItemModel>
00029
00030
00031
00032
00033
00034 namespace ost { namespace gui {
00035
00036
00037 class DLLEXPORT_OST_GUI MessageWidget: public Widget
00038 {
00039 Q_OBJECT;
00040 public:
00041 MessageWidget(QWidget* parent=NULL);
00042 ~MessageWidget();
00043
00044 public:
00045 virtual void LogMessage(const QString& message, QMessageBox::Icon icon=QMessageBox::Information);
00046 virtual void LogMessage(QStandardItem* item);
00047 virtual void LogMessage(const QString& message, QIcon icon);
00048
00049 virtual int GetMessagesCount(QMessageBox::Icon icon=QMessageBox::NoIcon);
00050 virtual int GetTotalMessagesCount();
00051 virtual bool Save(const QString& prefix) { return true; }
00052 virtual bool Restore(const QString& prefix) { return true; }
00053
00054 QPixmap GetIcon(QMessageBox::Icon icon, QWidget* widget);
00055
00056 ActionList GetActions();
00057
00058 signals:
00059 void MessageCountChanged(QMessageBox::Icon);
00060 void AllCleared();
00061
00062 public slots:
00063 void ErrorOutput(unsigned int id,const QString& output);
00064 void Clear();
00065 void RemoveSelected();
00066 void Update();
00067
00068 private slots:
00069 void ContextMenuRequested(const QPoint& pos);
00070
00071 private:
00072 void Increase(QMessageBox::Icon icon);
00073 void Decrease(QMessageBox::Icon icon);
00074
00075 QStandardItemModel* model_;
00076 QListView* view_;
00077
00078 ActionList actions_;
00079 QMap<int,int> count_map_;
00080 };
00081
00082 }}
00083
00084 #endif