//---------------------------------------------------------------------- // Messages Messages::Messages(DateTimeMgr* dateTimeMgr, MessageFilters* messageFilters, QObject* parent, const char* name) : QObject(parent, name), m_dateTimeMgr(dateTimeMgr), m_messageFilters(messageFilters) { if (!s_messages) s_messages = this; connect(m_messageFilters, SIGNAL(removed(uint32_t, uint8_t)), this, SLOT(removedFilter(uint32_t, uint8_t))); connect(m_messageFilters, SIGNAL(added(uint32_t, uint8_t, const MessageFilter&)), this, SLOT(addedFilter(uint32_t, uint8_t, const MessageFilter&))); }
//---------------------------------------------------------------------- // MessageFilterDialog MessageFilterDialog::MessageFilterDialog(MessageFilters* filters, const QString& caption, QWidget* parent, const char* name) : QDialog(parent, name, false, WType_Dialog), m_filters(filters), m_currentFilterNum(0xFF), m_currentFilter(0) { // set the caption setCaption(caption); // don't support resizing the dialog setSizeGripEnabled(false); // connect to the MessageFilter signals connect(m_filters, SIGNAL(removed(uint32_t, uint8_t)), this, SLOT(removedFilter(uint32_t, uint8_t))); connect(m_filters, SIGNAL(added(uint32_t, uint8_t, const MessageFilter&)), this, SLOT(addedFilter(uint32_t, uint8_t, const MessageFilter&))); // setup the dialog QVBoxLayout* outerLayout = new QVBoxLayout(this, 5, -1, "outerlayout"); QHBoxLayout* columnLayout = new QHBoxLayout(outerLayout, -1, "columns"); QVBoxLayout* column1Layout = new QVBoxLayout(5, "column1"); columnLayout->addLayout(column1Layout, 1); // layout 1st column QLabel* label = new QLabel("&Existing Filters", this); column1Layout->addWidget(label, 1, AlignCenter); m_existingFilters = new QListBox(this, "existingfilters"); column1Layout->addWidget(m_existingFilters, 10); label->setBuddy(m_existingFilters); m_existingFilters->setSelectionMode(QListBox::Single); connect(m_existingFilters, SIGNAL(selectionChanged(QListBoxItem*)), this, SLOT(existingFilterSelectionChanged(QListBoxItem*))); m_new = new QPushButton("Ne&w", this); column1Layout->addWidget(m_new, 1, AlignCenter); connect(m_new, SIGNAL(clicked()), this, SLOT(newFilter())); m_filterGroup = new QGroupBox(1, Vertical, "New &Filter", this, "filtergroup"); columnLayout->addWidget(m_filterGroup, 5); QFrame* dummy = new QFrame(m_filterGroup, "dummy"); QGridLayout* filterLayout = new QGridLayout(dummy, 8, 3, 5, -1, "filterlayout"); label = new QLabel("&Name", dummy); filterLayout->addWidget(label, 0, 0, AlignLeft | AlignVCenter); m_name = new QLineEdit(dummy, "name"); filterLayout->addMultiCellWidget(m_name, 0, 0, 1, 2); label->setBuddy(m_name); connect(m_name, SIGNAL(textChanged(const QString&)), this, SLOT(anyTextChanged(const QString&))); label = new QLabel("&Pattern", dummy); filterLayout->addWidget(label, 1, 0, AlignLeft | AlignVCenter); m_pattern = new QLineEdit(dummy, "pattern"); filterLayout->addMultiCellWidget(m_pattern, 1, 1, 1, 2); label->setBuddy(m_pattern); connect(m_pattern, SIGNAL(textChanged(const QString&)), this, SLOT(anyTextChanged(const QString&))); label = new QLabel("&Message Types", dummy); filterLayout->addWidget(label, 2, 0, AlignLeft | AlignVCenter); m_messageTypes = new QListBox(dummy, "messagetypes"); filterLayout->addMultiCellWidget(m_messageTypes, 2, 6, 1, 2); label->setBuddy(m_messageTypes); m_messageTypes->setSelectionMode(QListBox::Multi); connect(m_messageTypes, SIGNAL(selectionChanged()), this, SLOT(messageTypeSelectionChanged())); m_delete = new QPushButton("&Delete", dummy); filterLayout->addWidget(m_delete, 7, 0, AlignCenter); m_delete->setEnabled(false); connect(m_delete, SIGNAL(clicked()), this, SLOT(deleteFilter())); m_update = new QPushButton("&Update", dummy); filterLayout->addWidget(m_update, 7, 1, AlignCenter); m_update->setEnabled(false); connect(m_update, SIGNAL(clicked()), this, SLOT(updateFilter())); m_add = new QPushButton("&Add", dummy); filterLayout->addWidget(m_add, 7, 2, AlignCenter); m_add->setEnabled(false); connect(m_add, SIGNAL(clicked()), this, SLOT(addFilter())); QPushButton* close = new QPushButton("&Close", this); outerLayout->addWidget(close, 1, AlignCenter); connect(close, SIGNAL(clicked()), this, SLOT(accept())); // fill in message types QString typeName; for (int i = MT_Guild; i <= MT_Max; i++) { typeName = MessageEntry::messageTypeString((MessageType)i); if (!typeName.isEmpty()) (void)new MessageFilterListBoxText(m_messageTypes, typeName, i); } // fill in existing messages const MessageFilter* filter; for (int i = 0; i < maxMessageFilters; i++) { filter = m_filters->filter(i); if (filter) (void)new MessageFilterListBoxText(m_existingFilters, filter->name(), i); } }