mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-07-05 15:09:10 +02:00
2021-02-09 Fred Gleason <fredg@paravelsystems.com>
* Refactored the 'Log Events' dialog in rdlogmanager(1) to use the model based API. Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
parent
17ed26f066
commit
4b516d398c
@ -21077,3 +21077,6 @@
|
|||||||
* Removed 'RD3CartDrag' dependency from rdlogedit(1).
|
* Removed 'RD3CartDrag' dependency from rdlogedit(1).
|
||||||
* Removed 'RD3CartDrag' dependency from rdpanel(1).
|
* Removed 'RD3CartDrag' dependency from rdpanel(1).
|
||||||
* Removed 'RD3CartDrag'.
|
* Removed 'RD3CartDrag'.
|
||||||
|
2021-02-09 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Refactored the 'Log Events' dialog in rdlogmanager(1) to use
|
||||||
|
the model based API.
|
||||||
|
@ -53,6 +53,7 @@ dist_rdlogmanager_SOURCES = add_clock.cpp add_clock.h\
|
|||||||
edit_schedrules.cpp edit_schedrules.h\
|
edit_schedrules.cpp edit_schedrules.h\
|
||||||
edit_schedcoderules.cpp edit_schedcoderules.h\
|
edit_schedcoderules.cpp edit_schedcoderules.h\
|
||||||
edit_track.cpp edit_track.h\
|
edit_track.cpp edit_track.h\
|
||||||
|
eventlistmodel.cpp eventlistmodel.h\
|
||||||
generate_log.cpp generate_log.h\
|
generate_log.cpp generate_log.h\
|
||||||
importcartsmodel.cpp importcartsmodel.h\
|
importcartsmodel.cpp importcartsmodel.h\
|
||||||
importcartsview.cpp importcartsview.h\
|
importcartsview.cpp importcartsview.h\
|
||||||
@ -81,6 +82,7 @@ nodist_rdlogmanager_SOURCES = moc_add_clock.cpp\
|
|||||||
moc_edit_schedrules.cpp\
|
moc_edit_schedrules.cpp\
|
||||||
moc_edit_schedcoderules.cpp\
|
moc_edit_schedcoderules.cpp\
|
||||||
moc_edit_track.cpp\
|
moc_edit_track.cpp\
|
||||||
|
moc_eventlistmodel.cpp\
|
||||||
moc_generate_log.cpp\
|
moc_generate_log.cpp\
|
||||||
moc_importcartsmodel.cpp\
|
moc_importcartsmodel.cpp\
|
||||||
moc_importcartsview.cpp\
|
moc_importcartsview.cpp\
|
||||||
|
@ -83,26 +83,30 @@ AddEvent::AddEvent(QString *logname,QWidget *parent)
|
|||||||
event_name_label->setGeometry(10,11,130,19);
|
event_name_label->setGeometry(10,11,130,19);
|
||||||
event_name_label->setFont(labelFont());
|
event_name_label->setFont(labelFont());
|
||||||
event_name_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic);
|
event_name_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic);
|
||||||
|
connect(event_name_edit,SIGNAL(textChanged(const QString &)),
|
||||||
|
this,SLOT(nameChangedData(const QString &)));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Ok Button
|
// Ok Button
|
||||||
//
|
//
|
||||||
QPushButton *ok_button=new QPushButton(this);
|
event_ok_button=new QPushButton(this);
|
||||||
ok_button->setGeometry(sizeHint().width()-180,sizeHint().height()-60,80,50);
|
event_ok_button->
|
||||||
ok_button->setDefault(true);
|
setGeometry(sizeHint().width()-180,sizeHint().height()-60,80,50);
|
||||||
ok_button->setFont(buttonFont());
|
event_ok_button->setDefault(true);
|
||||||
ok_button->setText(tr("&OK"));
|
event_ok_button->setFont(buttonFont());
|
||||||
connect(ok_button,SIGNAL(clicked()),this,SLOT(okData()));
|
event_ok_button->setText(tr("&OK"));
|
||||||
|
connect(event_ok_button,SIGNAL(clicked()),this,SLOT(okData()));
|
||||||
|
event_ok_button->setDisabled(true);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Cancel Button
|
// Cancel Button
|
||||||
//
|
//
|
||||||
QPushButton *cancel_button=new QPushButton(this);
|
event_cancel_button=new QPushButton(this);
|
||||||
cancel_button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,
|
event_cancel_button->
|
||||||
80,50);
|
setGeometry(sizeHint().width()-90,sizeHint().height()-60,80,50);
|
||||||
cancel_button->setFont(buttonFont());
|
event_cancel_button->setFont(buttonFont());
|
||||||
cancel_button->setText(tr("&Cancel"));
|
event_cancel_button->setText(tr("&Cancel"));
|
||||||
connect(cancel_button,SIGNAL(clicked()),this,SLOT(cancelData()));
|
connect(event_cancel_button,SIGNAL(clicked()),this,SLOT(cancelData()));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Populate Data
|
// Populate Data
|
||||||
@ -130,6 +134,12 @@ QSizePolicy AddEvent::sizePolicy() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void AddEvent::nameChangedData(const QString &str)
|
||||||
|
{
|
||||||
|
event_ok_button->setDisabled(str.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void AddEvent::okData()
|
void AddEvent::okData()
|
||||||
{
|
{
|
||||||
*event_name=event_name_edit->text();
|
*event_name=event_name_edit->text();
|
||||||
|
@ -21,7 +21,8 @@
|
|||||||
#ifndef ADD_EVENT_H
|
#ifndef ADD_EVENT_H
|
||||||
#define ADD_EVENT_H
|
#define ADD_EVENT_H
|
||||||
|
|
||||||
#include <qlineedit.h>
|
#include <QLineEdit>
|
||||||
|
#include <QPushButton>
|
||||||
|
|
||||||
#include <rddialog.h>
|
#include <rddialog.h>
|
||||||
|
|
||||||
@ -36,6 +37,7 @@ class AddEvent : public RDDialog
|
|||||||
QSizePolicy sizePolicy() const;
|
QSizePolicy sizePolicy() const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void nameChangedData(const QString &str);
|
||||||
void okData();
|
void okData();
|
||||||
void cancelData();
|
void cancelData();
|
||||||
|
|
||||||
@ -45,8 +47,9 @@ class AddEvent : public RDDialog
|
|||||||
private:
|
private:
|
||||||
QLineEdit *event_name_edit;
|
QLineEdit *event_name_edit;
|
||||||
QString *event_name;
|
QString *event_name;
|
||||||
|
QPushButton *event_ok_button;
|
||||||
|
QPushButton *event_cancel_button;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif // ADD_EVENT_H
|
||||||
|
|
||||||
|
@ -695,6 +695,7 @@ EditEvent::EditEvent(QString eventname,bool new_event,
|
|||||||
button->setFont(buttonFont());
|
button->setFont(buttonFont());
|
||||||
button->setText(tr("Save &As"));
|
button->setText(tr("Save &As"));
|
||||||
connect(button,SIGNAL(clicked()),this,SLOT(saveAsData()));
|
connect(button,SIGNAL(clicked()),this,SLOT(saveAsData()));
|
||||||
|
button->setDisabled(new_event);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Service Association Button
|
// Service Association Button
|
||||||
|
325
rdlogmanager/eventlistmodel.cpp
Normal file
325
rdlogmanager/eventlistmodel.cpp
Normal file
@ -0,0 +1,325 @@
|
|||||||
|
// eventlistmodel.cpp
|
||||||
|
//
|
||||||
|
// Data model for Rivendell rdlogmanager(1) events
|
||||||
|
//
|
||||||
|
// (C) Copyright 2021 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License version 2 as
|
||||||
|
// published by the Free Software Foundation.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public
|
||||||
|
// License along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <QPainter>
|
||||||
|
|
||||||
|
#include "rdapplication.h"
|
||||||
|
#include "rdconf.h"
|
||||||
|
#include "rdescape_string.h"
|
||||||
|
#include "rdevent_line.h"
|
||||||
|
#include "eventlistmodel.h"
|
||||||
|
|
||||||
|
EventListModel::EventListModel(QObject *parent)
|
||||||
|
: QAbstractTableModel(parent)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Column Attributes
|
||||||
|
//
|
||||||
|
unsigned left=Qt::AlignLeft|Qt::AlignVCenter;
|
||||||
|
unsigned center=Qt::AlignCenter;
|
||||||
|
//unsigned right=Qt::AlignRight|Qt::AlignVCenter;
|
||||||
|
|
||||||
|
d_headers.push_back(tr("Name"));
|
||||||
|
d_alignments.push_back(left);
|
||||||
|
|
||||||
|
d_headers.push_back(tr("Trans"));
|
||||||
|
d_alignments.push_back(center);
|
||||||
|
|
||||||
|
d_headers.push_back(tr("Properties"));
|
||||||
|
d_alignments.push_back(left);
|
||||||
|
|
||||||
|
updateModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EventListModel::~EventListModel()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QPalette EventListModel::palette()
|
||||||
|
{
|
||||||
|
return d_palette;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EventListModel::setPalette(const QPalette &pal)
|
||||||
|
{
|
||||||
|
d_palette=pal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EventListModel::setFont(const QFont &font)
|
||||||
|
{
|
||||||
|
d_font=font;
|
||||||
|
d_bold_font=font;
|
||||||
|
d_bold_font.setWeight(QFont::Bold);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int EventListModel::columnCount(const QModelIndex &parent) const
|
||||||
|
{
|
||||||
|
return d_headers.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int EventListModel::rowCount(const QModelIndex &parent) const
|
||||||
|
{
|
||||||
|
return d_texts.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QVariant EventListModel::headerData(int section,Qt::Orientation orient,
|
||||||
|
int role) const
|
||||||
|
{
|
||||||
|
if((orient==Qt::Horizontal)&&(role==Qt::DisplayRole)) {
|
||||||
|
return d_headers.at(section);
|
||||||
|
}
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QVariant EventListModel::data(const QModelIndex &index,int role) const
|
||||||
|
{
|
||||||
|
QString str;
|
||||||
|
int col=index.column();
|
||||||
|
int row=index.row();
|
||||||
|
|
||||||
|
if(row<d_texts.size()) {
|
||||||
|
switch((Qt::ItemDataRole)role) {
|
||||||
|
case Qt::DisplayRole:
|
||||||
|
return d_texts.at(row).at(col);
|
||||||
|
|
||||||
|
case Qt::DecorationRole:
|
||||||
|
if(col==0) {
|
||||||
|
return d_icons.at(row);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Qt::TextAlignmentRole:
|
||||||
|
return d_alignments.at(col);
|
||||||
|
|
||||||
|
case Qt::FontRole:
|
||||||
|
if(col==0) {
|
||||||
|
return d_bold_font;
|
||||||
|
}
|
||||||
|
return d_font;
|
||||||
|
|
||||||
|
case Qt::TextColorRole:
|
||||||
|
// Nothing to do!
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Qt::BackgroundRole:
|
||||||
|
// Nothing to do!
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString EventListModel::eventName(const QModelIndex &row) const
|
||||||
|
{
|
||||||
|
return d_texts.at(row.row()).at(0).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QModelIndex EventListModel::addEvent(const QString &name)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Find the insertion offset
|
||||||
|
//
|
||||||
|
int offset=d_texts.size();
|
||||||
|
for(int i=0;i<d_texts.size();i++) {
|
||||||
|
if(name.toLower()<d_texts.at(i).at(0).toString().toLower()) {
|
||||||
|
offset=i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
beginInsertRows(QModelIndex(),offset,offset);
|
||||||
|
QList<QVariant> list;
|
||||||
|
for(int i=0;i<columnCount();i++) {
|
||||||
|
list.push_back(QVariant());
|
||||||
|
}
|
||||||
|
list[0]=name;
|
||||||
|
d_texts.insert(offset,list);
|
||||||
|
d_icons.insert(offset,QVariant());
|
||||||
|
updateRowLine(offset);
|
||||||
|
endInsertRows();
|
||||||
|
|
||||||
|
return createIndex(offset,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EventListModel::removeEvent(const QModelIndex &row)
|
||||||
|
{
|
||||||
|
beginRemoveRows(QModelIndex(),row.row(),row.row());
|
||||||
|
|
||||||
|
d_texts.removeAt(row.row());
|
||||||
|
d_icons.removeAt(row.row());
|
||||||
|
|
||||||
|
endRemoveRows();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EventListModel::removeEvent(const QString &name)
|
||||||
|
{
|
||||||
|
for(int i=0;i<d_texts.size();i++) {
|
||||||
|
if(d_texts.at(i).at(0).toString()==name) {
|
||||||
|
removeEvent(createIndex(i,0));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EventListModel::refresh(const QModelIndex &row)
|
||||||
|
{
|
||||||
|
if(row.row()<d_texts.size()) {
|
||||||
|
QString sql=sqlFields()+
|
||||||
|
"where "+
|
||||||
|
"EVENTS.NAME=\""+RDEscapeString(d_texts.at(row.row()).at(0).toString())+
|
||||||
|
"\"";
|
||||||
|
RDSqlQuery *q=new RDSqlQuery(sql);
|
||||||
|
if(q->first()) {
|
||||||
|
updateRow(row.row(),q);
|
||||||
|
emit dataChanged(createIndex(row.row(),0),
|
||||||
|
createIndex(row.row(),columnCount()));
|
||||||
|
}
|
||||||
|
delete q;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EventListModel::refresh(const QString &name)
|
||||||
|
{
|
||||||
|
for(int i=0;i<d_texts.size();i++) {
|
||||||
|
if(d_texts.at(i).at(0).toString()==name) {
|
||||||
|
updateRowLine(i);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EventListModel::setFilterSql(const QString &sql)
|
||||||
|
{
|
||||||
|
if(sql!=d_filter_sql) {
|
||||||
|
d_filter_sql=sql;
|
||||||
|
updateModel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EventListModel::updateModel()
|
||||||
|
{
|
||||||
|
QList<QVariant> texts;
|
||||||
|
|
||||||
|
RDSqlQuery *q=NULL;
|
||||||
|
QString sql=sqlFields()+
|
||||||
|
d_filter_sql+
|
||||||
|
"order by EVENTS.NAME ";
|
||||||
|
beginResetModel();
|
||||||
|
d_texts.clear();
|
||||||
|
d_icons.clear();
|
||||||
|
q=new RDSqlQuery(sql);
|
||||||
|
while(q->next()) {
|
||||||
|
d_texts.push_back(texts);
|
||||||
|
d_icons.push_back(QVariant());
|
||||||
|
updateRow(d_texts.size()-1,q);
|
||||||
|
}
|
||||||
|
delete q;
|
||||||
|
endResetModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EventListModel::updateRowLine(int line)
|
||||||
|
{
|
||||||
|
if(line<d_texts.size()) {
|
||||||
|
QString sql=sqlFields()+
|
||||||
|
"where "+
|
||||||
|
"EVENTS.NAME=\""+RDEscapeString(d_texts.at(line).at(0).toString())+"\"";
|
||||||
|
RDSqlQuery *q=new RDSqlQuery(sql);
|
||||||
|
if(q->first()) {
|
||||||
|
updateRow(line,q);
|
||||||
|
}
|
||||||
|
delete q;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EventListModel::updateRow(int row,RDSqlQuery *q)
|
||||||
|
{
|
||||||
|
QList<QVariant> texts;
|
||||||
|
|
||||||
|
// Name
|
||||||
|
texts.push_back(q->value(0));
|
||||||
|
|
||||||
|
// Trans
|
||||||
|
texts.
|
||||||
|
push_back(RDLogLine::transText((RDLogLine::TransType)q->value(3).toUInt()));
|
||||||
|
|
||||||
|
// Properties
|
||||||
|
texts.push_back(RDEventLine::propertiesText(q->value(2).toInt(),
|
||||||
|
(RDLogLine::TransType)q->value(3).toUInt(),
|
||||||
|
(RDLogLine::TimeType)q->value(4).toUInt(),
|
||||||
|
q->value(5).toInt(),
|
||||||
|
RDBool(q->value(6).toString()),
|
||||||
|
(RDEventLine::ImportSource)q->value(7).toUInt(),
|
||||||
|
!q->value(8).toString().isEmpty()));
|
||||||
|
|
||||||
|
d_texts[row]=texts;
|
||||||
|
d_icons[row]=MakeIcon(q->value(1).toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString EventListModel::sqlFields() const
|
||||||
|
{
|
||||||
|
QString sql=QString("select ")+
|
||||||
|
"NAME,"+ // 00
|
||||||
|
"COLOR,"+ // 01
|
||||||
|
"PREPOSITION,"+ // 02
|
||||||
|
"FIRST_TRANS_TYPE,"+ // 03
|
||||||
|
"TIME_TYPE,"+ // 04
|
||||||
|
"GRACE_TIME,"+ // 05
|
||||||
|
"USE_AUTOFILL,"+ // 06
|
||||||
|
"IMPORT_SOURCE,"+ // 07
|
||||||
|
"NESTED_EVENT "+ // 08
|
||||||
|
"from EVENTS ";
|
||||||
|
|
||||||
|
return sql;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QPixmap EventListModel::MakeIcon(const QString &color) const
|
||||||
|
{
|
||||||
|
QPixmap pix(QSize(15,15));
|
||||||
|
QPainter *p=new QPainter();
|
||||||
|
p->begin(&pix);
|
||||||
|
p->fillRect(0,0,15,15,QColor(color));
|
||||||
|
p->end();
|
||||||
|
delete p;
|
||||||
|
|
||||||
|
return pix;
|
||||||
|
}
|
75
rdlogmanager/eventlistmodel.h
Normal file
75
rdlogmanager/eventlistmodel.h
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
// eventlistmodel.h
|
||||||
|
//
|
||||||
|
// Data model for Rivendell rdlogmanager(1) events
|
||||||
|
//
|
||||||
|
// (C) Copyright 2021 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License version 2 as
|
||||||
|
// published by the Free Software Foundation.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public
|
||||||
|
// License along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef EVENTLISTMODEL_H
|
||||||
|
#define EVENTLISTMODEL_H
|
||||||
|
|
||||||
|
#include <QAbstractTableModel>
|
||||||
|
#include <QFont>
|
||||||
|
#include <QList>
|
||||||
|
#include <QPalette>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
|
#include <rddb.h>
|
||||||
|
#include <rdnotification.h>
|
||||||
|
#include <rduser.h>
|
||||||
|
|
||||||
|
class EventListModel : public QAbstractTableModel
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
EventListModel(QObject *parent=0);
|
||||||
|
~EventListModel();
|
||||||
|
QPalette palette();
|
||||||
|
void setPalette(const QPalette &pal);
|
||||||
|
void setFont(const QFont &font);
|
||||||
|
int columnCount(const QModelIndex &parent=QModelIndex()) const;
|
||||||
|
int rowCount(const QModelIndex &parent=QModelIndex()) const;
|
||||||
|
QVariant headerData(int section,Qt::Orientation orient,
|
||||||
|
int role=Qt::DisplayRole) const;
|
||||||
|
QVariant data(const QModelIndex &index,int role=Qt::DisplayRole) const;
|
||||||
|
QString eventName(const QModelIndex &row) const;
|
||||||
|
QModelIndex addEvent(const QString &name);
|
||||||
|
void removeEvent(const QModelIndex &row);
|
||||||
|
void removeEvent(const QString &name);
|
||||||
|
void refresh(const QModelIndex &row);
|
||||||
|
void refresh(const QString &name);
|
||||||
|
void setFilterSql(const QString &sql);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void updateModel();
|
||||||
|
void updateRowLine(int line);
|
||||||
|
void updateRow(int row,RDSqlQuery *q);
|
||||||
|
QString sqlFields() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QPixmap MakeIcon(const QString &color) const;
|
||||||
|
QPalette d_palette;
|
||||||
|
QFont d_font;
|
||||||
|
QFont d_bold_font;
|
||||||
|
QList<QVariant> d_headers;
|
||||||
|
QList<QVariant> d_alignments;
|
||||||
|
QList<QList<QVariant> > d_texts;
|
||||||
|
QList<QVariant> d_icons;
|
||||||
|
QString d_filter_sql;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // EVENTLISTMODEL_H
|
@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// List a Rivendell Log Event
|
// List a Rivendell Log Event
|
||||||
//
|
//
|
||||||
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
|
// (C) Copyright 2002-2021 Fred Gleason <fredg@paravelsystems.com>
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or modify
|
// This program is free software; you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License version 2 as
|
// it under the terms of the GNU General Public License version 2 as
|
||||||
@ -18,8 +18,7 @@
|
|||||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
//
|
//
|
||||||
|
|
||||||
#include <qmessagebox.h>
|
#include <QMessageBox>
|
||||||
#include <qpainter.h>
|
|
||||||
|
|
||||||
#include <rdconf.h>
|
#include <rdconf.h>
|
||||||
#include <rdescape_string.h>
|
#include <rdescape_string.h>
|
||||||
@ -57,16 +56,16 @@ ListEvents::ListEvents(QString *eventname,QWidget *parent)
|
|||||||
//
|
//
|
||||||
// Events List
|
// Events List
|
||||||
//
|
//
|
||||||
edit_events_list=new Q3ListView(this);
|
edit_events_view=new RDTableView(this);
|
||||||
edit_events_list->setAllColumnsShowFocus(true);
|
edit_events_model=new EventListModel(this);
|
||||||
edit_events_list->setItemMargin(5);
|
edit_events_model->setFont(font());
|
||||||
edit_events_list->addColumn(tr("Name"));
|
edit_events_model->setPalette(palette());
|
||||||
edit_events_list->addColumn(tr("Trans"));
|
edit_events_view->setModel(edit_events_model);
|
||||||
edit_events_list->setColumnAlignment(1,Qt::AlignCenter);
|
connect(edit_events_view,SIGNAL(doubleClicked(const QModelIndex &)),
|
||||||
edit_events_list->addColumn(tr("Properties"));
|
this,SLOT(doubleClickedData(const QModelIndex &)));
|
||||||
connect(edit_events_list,
|
connect(edit_events_model,SIGNAL(modelReset()),
|
||||||
SIGNAL(doubleClicked(Q3ListViewItem *,const QPoint &,int)),
|
edit_events_view,SLOT(resizeColumnsToContents()));
|
||||||
this,SLOT(doubleClickedData(Q3ListViewItem *,const QPoint &,int)));
|
edit_events_view->resizeColumnsToContents();
|
||||||
|
|
||||||
//
|
//
|
||||||
// Add Button
|
// Add Button
|
||||||
@ -159,8 +158,6 @@ ListEvents::ListEvents(QString *eventname,QWidget *parent)
|
|||||||
edit_filter_box->setCurrentItem(edit_filter_box->count()-1);
|
edit_filter_box->setCurrentItem(edit_filter_box->count()-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RefreshList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -237,31 +234,39 @@ void ListEvents::addData()
|
|||||||
"SERVICE_NAME=\""+RDEscapeString(edit_filter_box->currentText())+"\"";
|
"SERVICE_NAME=\""+RDEscapeString(edit_filter_box->currentText())+"\"";
|
||||||
RDSqlQuery::apply(sql);
|
RDSqlQuery::apply(sql);
|
||||||
}
|
}
|
||||||
|
QModelIndex row=edit_events_model->addEvent(logname);
|
||||||
|
if(row.isValid()) {
|
||||||
|
edit_events_view->selectRow(row.row());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
delete event_dialog;
|
delete event_dialog;
|
||||||
Q3ListViewItem *item=new Q3ListViewItem(edit_events_list);
|
for(unsigned i=0;i<new_events.size();i++) {
|
||||||
item->setText(0,logname);
|
QModelIndex row=edit_events_model->addEvent(new_events.at(i));
|
||||||
RefreshItem(item,&new_events);
|
if(row.isValid()) {
|
||||||
edit_events_list->setSelected(item,true);
|
edit_events_view->selectRow(row.row());
|
||||||
edit_events_list->ensureItemVisible(item);
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ListEvents::editData()
|
void ListEvents::editData()
|
||||||
{
|
{
|
||||||
std::vector<QString> new_events;
|
std::vector<QString> new_events;
|
||||||
|
QModelIndexList rows=edit_events_view->selectionModel()->selectedRows();
|
||||||
|
|
||||||
Q3ListViewItem *item=edit_events_list->selectedItem();
|
if(rows.size()!=1) {
|
||||||
if(item==NULL) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
EditEvent *event_dialog=new EditEvent(item->text(0),false,&new_events,this);
|
EditEvent *event_dialog=
|
||||||
if(event_dialog->exec()<-1) {
|
new EditEvent(edit_events_model->eventName(rows.first()),false,&new_events,
|
||||||
delete event_dialog;
|
this);
|
||||||
return;
|
if(event_dialog->exec()>=-1) {
|
||||||
|
edit_events_model->refresh(rows.first());
|
||||||
|
}
|
||||||
|
for(unsigned i=0;i<new_events.size();i++) {
|
||||||
|
edit_events_model->addEvent(new_events.at(i));
|
||||||
}
|
}
|
||||||
delete event_dialog;
|
delete event_dialog;
|
||||||
RefreshItem(item,&new_events);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -269,21 +274,21 @@ void ListEvents::deleteData()
|
|||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
QString clock_list;
|
QString clock_list;
|
||||||
|
QModelIndexList rows=edit_events_view->selectionModel()->selectedRows();
|
||||||
|
|
||||||
Q3ListViewItem *item=edit_events_list->selectedItem();
|
if(rows.size()!=1) {
|
||||||
if(item==NULL) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(QMessageBox::question(this,"RDLogManager - "+tr("Delete Event"),
|
if(QMessageBox::question(this,"RDLogManager - "+tr("Delete Event"),
|
||||||
tr("Are you sure you want to delete")+" \""+
|
tr("Are you sure you want to delete")+" \""+
|
||||||
item->text(0)+"\"?",
|
edit_events_model->eventName(rows.first())+"\"?",
|
||||||
QMessageBox::Yes,QMessageBox::No)
|
QMessageBox::Yes,QMessageBox::No)
|
||||||
!=QMessageBox::Yes) {
|
!=QMessageBox::Yes) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if((n=ActiveEvents(item->text(0),&clock_list))>0) {
|
if((n=ActiveEvents(edit_events_model->eventName(rows.first()),&clock_list))>0) {
|
||||||
if(QMessageBox::warning(this,"RDLogManager - "+tr("Event In Use"),
|
if(QMessageBox::warning(this,"RDLogManager - "+tr("Event In Use"),
|
||||||
"\""+item->text(0)+"\" "+
|
"\""+edit_events_model->eventName(rows.first())+"\" "+
|
||||||
tr("is in use in the following clocks")+":\n\n"+
|
tr("is in use in the following clocks")+":\n\n"+
|
||||||
clock_list+"\n"+
|
clock_list+"\n"+
|
||||||
tr("Do you still want to delete it?"),
|
tr("Do you still want to delete it?"),
|
||||||
@ -292,77 +297,88 @@ void ListEvents::deleteData()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DeleteEvent(item->text(0));
|
DeleteEvent(edit_events_model->eventName(rows.first()));
|
||||||
delete item;
|
edit_events_model->removeEvent(rows.first());
|
||||||
RefreshList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ListEvents::renameData()
|
void ListEvents::renameData()
|
||||||
{
|
{
|
||||||
QString sql;
|
QString sql;
|
||||||
RDSqlQuery *q;
|
QModelIndexList rows=edit_events_view->selectionModel()->selectedRows();
|
||||||
Q3ListViewItem *item=edit_events_list->selectedItem();
|
|
||||||
if(item==NULL) {
|
if(rows.size()!=1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
QString new_name=item->text(0);
|
QString old_name=edit_events_model->eventName(rows.first());
|
||||||
|
QString new_name=old_name;
|
||||||
RenameItem *rename_dialog=new RenameItem(&new_name,"EVENTS",this);
|
RenameItem *rename_dialog=new RenameItem(&new_name,"EVENTS",this);
|
||||||
if(rename_dialog->exec()<-1) {
|
if(rename_dialog->exec()<-1) {
|
||||||
delete rename_dialog;
|
delete rename_dialog;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
delete rename_dialog;
|
delete rename_dialog;
|
||||||
|
if(old_name==new_name) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Rename Clock References
|
// Rename Clock References
|
||||||
//
|
//
|
||||||
sql=QString("update CLOCK_LINES set ")+
|
sql=QString("update CLOCK_LINES set ")+
|
||||||
"EVENT_NAME=\""+RDEscapeString(new_name)+"\" where "+
|
"EVENT_NAME=\""+RDEscapeString(new_name)+"\" where "+
|
||||||
"EVENT_NAME=\""+RDEscapeString(item->text(0))+"\"";
|
"EVENT_NAME=\""+RDEscapeString(old_name)+"\"";
|
||||||
q=new RDSqlQuery(sql);
|
RDSqlQuery::apply(sql);
|
||||||
delete q;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Rename Event Line References
|
// Rename Event Line References
|
||||||
//
|
//
|
||||||
sql=QString("update EVENT_LINES set ")+
|
sql=QString("update EVENT_LINES set ")+
|
||||||
"EVENT_NAME=\""+RDEscapeString(new_name)+"\" where "+
|
"EVENT_NAME=\""+RDEscapeString(new_name)+"\" where "+
|
||||||
"EVENT_NAME=\""+RDEscapeString(item->text(0))+"\"";
|
"EVENT_NAME=\""+RDEscapeString(old_name)+"\"";
|
||||||
q=new RDSqlQuery(sql);
|
RDSqlQuery::apply(sql);
|
||||||
delete q;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Rename Service Permissions
|
// Rename Service Permissions
|
||||||
//
|
//
|
||||||
sql=QString().sprintf("update EVENT_PERMS set EVENT_NAME=\"%s\"\
|
sql=QString("update EVENT_PERMS set ")+
|
||||||
where EVENT_NAME=\"%s\"",
|
"EVENT_NAME=\""+RDEscapeString(new_name)+"\" "+
|
||||||
(const char *)new_name,
|
"where EVENT_NAME=\""+RDEscapeString(old_name)+"\"";
|
||||||
(const char *)item->text(0));
|
RDSqlQuery::apply(sql);
|
||||||
q=new RDSqlQuery(sql);
|
|
||||||
delete q;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Rename Primary Key
|
// Rename Primary Key
|
||||||
//
|
//
|
||||||
sql=QString().sprintf("update EVENTS set NAME=\"%s\" where NAME=\"%s\"",
|
sql=QString("update EVENTS set ")+
|
||||||
(const char *)new_name,
|
"NAME=\""+RDEscapeString(new_name)+"\" where "+
|
||||||
(const char *)item->text(0));
|
"NAME=\""+RDEscapeString(old_name)+"\"";
|
||||||
q=new RDSqlQuery(sql);
|
RDSqlQuery::apply(sql);
|
||||||
delete q;
|
|
||||||
|
|
||||||
item->setText(0,new_name);
|
edit_events_model->removeEvent(old_name);
|
||||||
RefreshItem(item);
|
QModelIndex row=edit_events_model->addEvent(new_name);
|
||||||
|
if(row.isValid()) {
|
||||||
|
edit_events_view->selectRow(row.row());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ListEvents::filterActivatedData(int id)
|
void ListEvents::filterActivatedData(int id)
|
||||||
{
|
{
|
||||||
RefreshList();
|
QString filter;
|
||||||
|
|
||||||
|
if(id==1) { // NONE Filter
|
||||||
|
filter=GetNoneFilter();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(id>1) {
|
||||||
|
filter=GetEventFilter(edit_filter_box->currentText());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
edit_events_model->setFilterSql(filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ListEvents::doubleClickedData(Q3ListViewItem *item,const QPoint &,int)
|
void ListEvents::doubleClickedData(const QModelIndex &index)
|
||||||
{
|
{
|
||||||
if(edit_eventname==NULL) {
|
if(edit_eventname==NULL) {
|
||||||
editData();
|
editData();
|
||||||
@ -381,13 +397,13 @@ void ListEvents::closeData()
|
|||||||
|
|
||||||
void ListEvents::okData()
|
void ListEvents::okData()
|
||||||
{
|
{
|
||||||
Q3ListViewItem *item=edit_events_list->selectedItem();
|
|
||||||
*event_filter=edit_filter_box->currentText();
|
*event_filter=edit_filter_box->currentText();
|
||||||
if(item==NULL) {
|
QModelIndexList rows=edit_events_view->selectionModel()->selectedRows();
|
||||||
|
if(rows.size()!=1) {
|
||||||
done(-1);
|
done(-1);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
*edit_eventname=item->text(0);
|
*edit_eventname=edit_events_model->eventName(rows.first());
|
||||||
|
|
||||||
done(0);
|
done(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -401,7 +417,7 @@ void ListEvents::cancelData()
|
|||||||
void ListEvents::resizeEvent(QResizeEvent *e)
|
void ListEvents::resizeEvent(QResizeEvent *e)
|
||||||
{
|
{
|
||||||
edit_filter_box->setGeometry(65,10,size().width()-75,20);
|
edit_filter_box->setGeometry(65,10,size().width()-75,20);
|
||||||
edit_events_list->setGeometry(10,45,size().width()-20,size().height()-125);
|
edit_events_view->setGeometry(10,45,size().width()-20,size().height()-125);
|
||||||
edit_add_button->setGeometry(10,size().height()-60,80,50);
|
edit_add_button->setGeometry(10,size().height()-60,80,50);
|
||||||
edit_edit_button->setGeometry(100,size().height()-60,80,50);
|
edit_edit_button->setGeometry(100,size().height()-60,80,50);
|
||||||
edit_delete_button->setGeometry(190,size().height()-60,80,50);
|
edit_delete_button->setGeometry(190,size().height()-60,80,50);
|
||||||
@ -418,104 +434,6 @@ void ListEvents::closeEvent(QCloseEvent *e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ListEvents::RefreshList()
|
|
||||||
{
|
|
||||||
QString filter;
|
|
||||||
|
|
||||||
if(edit_filter_box->currentItem()==1) { // NONE Filter
|
|
||||||
filter=GetNoneFilter();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if(edit_filter_box->currentItem()>1) {
|
|
||||||
filter=GetEventFilter(edit_filter_box->currentText());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
edit_events_list->clear();
|
|
||||||
QString sql=WriteItemSql()+" "+filter;
|
|
||||||
RDSqlQuery *q=new RDSqlQuery(sql);
|
|
||||||
Q3ListViewItem *item=NULL;
|
|
||||||
while(q->next()) {
|
|
||||||
item=new Q3ListViewItem(edit_events_list);
|
|
||||||
WriteItem(item,q);
|
|
||||||
}
|
|
||||||
delete q;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ListEvents::RefreshItem(Q3ListViewItem *item,
|
|
||||||
std::vector<QString> *new_events)
|
|
||||||
{
|
|
||||||
Q3ListViewItem *new_item;
|
|
||||||
UpdateItem(item,item->text(0));
|
|
||||||
|
|
||||||
if(new_events!=NULL) {
|
|
||||||
for(unsigned i=0;i<new_events->size();i++) {
|
|
||||||
if((new_item=edit_events_list->findItem(new_events->at(i),0))==NULL) {
|
|
||||||
new_item=new Q3ListViewItem(edit_events_list);
|
|
||||||
}
|
|
||||||
UpdateItem(new_item,new_events->at(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ListEvents::UpdateItem(Q3ListViewItem *item,QString name)
|
|
||||||
{
|
|
||||||
QString sql=WriteItemSql()+"where NAME=\""+RDEscapeString(name)+"\"";
|
|
||||||
RDSqlQuery *q=new RDSqlQuery(sql);
|
|
||||||
if(q->next()) {
|
|
||||||
item->setText(0,name);
|
|
||||||
WriteItem(item,q);
|
|
||||||
}
|
|
||||||
delete q;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ListEvents::WriteItem(Q3ListViewItem *item,RDSqlQuery *q)
|
|
||||||
{
|
|
||||||
QPixmap *pix;
|
|
||||||
QPainter *p=new QPainter();
|
|
||||||
|
|
||||||
item->setText(0,q->value(0).toString());
|
|
||||||
item->setText(1,
|
|
||||||
RDLogLine::transText((RDLogLine::TransType)q->value(3).toUInt()));
|
|
||||||
item->setText(2,RDEventLine::
|
|
||||||
propertiesText(q->value(2).toInt(),
|
|
||||||
(RDLogLine::TransType)q->value(3).toUInt(),
|
|
||||||
(RDLogLine::TimeType)q->value(4).toUInt(),
|
|
||||||
q->value(5).toInt(),
|
|
||||||
RDBool(q->value(6).toString()),
|
|
||||||
(RDEventLine::ImportSource)q->value(7).toUInt(),
|
|
||||||
!q->value(8).toString().isEmpty()));
|
|
||||||
pix=new QPixmap(QSize(15,15));
|
|
||||||
p->begin(pix);
|
|
||||||
p->fillRect(0,0,15,15,QColor(q->value(1).toString()));
|
|
||||||
p->end();
|
|
||||||
item->setPixmap(0,*pix);
|
|
||||||
|
|
||||||
delete p;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
QString ListEvents::WriteItemSql() const
|
|
||||||
{
|
|
||||||
QString sql=QString("select ")+
|
|
||||||
"NAME,"+ // 00
|
|
||||||
"COLOR,"+ // 01
|
|
||||||
"PREPOSITION,"+ // 02
|
|
||||||
"FIRST_TRANS_TYPE,"+ // 03
|
|
||||||
"TIME_TYPE,"+ // 04
|
|
||||||
"GRACE_TIME,"+ // 05
|
|
||||||
"USE_AUTOFILL,"+ // 06
|
|
||||||
"IMPORT_SOURCE,"+ // 07
|
|
||||||
"NESTED_EVENT "+ // 08
|
|
||||||
"from EVENTS ";
|
|
||||||
|
|
||||||
return sql;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int ListEvents::ActiveEvents(QString event_name,QString *clock_list)
|
int ListEvents::ActiveEvents(QString event_name,QString *clock_list)
|
||||||
{
|
{
|
||||||
int n=0;
|
int n=0;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// List Rivendell Log Events
|
// List Rivendell Log Events
|
||||||
//
|
//
|
||||||
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
|
// (C) Copyright 2002-2021 Fred Gleason <fredg@paravelsystems.com>
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or modify
|
// This program is free software; you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License version 2 as
|
// it under the terms of the GNU General Public License version 2 as
|
||||||
@ -21,13 +21,13 @@
|
|||||||
#ifndef LIST_EVENTS_H
|
#ifndef LIST_EVENTS_H
|
||||||
#define LIST_EVENTS_H
|
#define LIST_EVENTS_H
|
||||||
|
|
||||||
#include <q3listview.h>
|
#include <QComboBox>
|
||||||
|
|
||||||
#include <qlabel.h>
|
|
||||||
#include <qcombobox.h>
|
|
||||||
|
|
||||||
#include <rddb.h>
|
#include <rddb.h>
|
||||||
#include <rddialog.h>
|
#include <rddialog.h>
|
||||||
|
#include <rdtableview.h>
|
||||||
|
|
||||||
|
#include "eventlistmodel.h"
|
||||||
|
|
||||||
class ListEvents : public RDDialog
|
class ListEvents : public RDDialog
|
||||||
{
|
{
|
||||||
@ -42,7 +42,7 @@ class ListEvents : public RDDialog
|
|||||||
void editData();
|
void editData();
|
||||||
void deleteData();
|
void deleteData();
|
||||||
void renameData();
|
void renameData();
|
||||||
void doubleClickedData(Q3ListViewItem *,const QPoint &,int);
|
void doubleClickedData(const QModelIndex &index);
|
||||||
void filterActivatedData(int id);
|
void filterActivatedData(int id);
|
||||||
void closeData();
|
void closeData();
|
||||||
void okData();
|
void okData();
|
||||||
@ -53,16 +53,12 @@ class ListEvents : public RDDialog
|
|||||||
void closeEvent(QCloseEvent *e);
|
void closeEvent(QCloseEvent *e);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void RefreshList();
|
|
||||||
void RefreshItem(Q3ListViewItem *item,std::vector<QString> *new_events=NULL);
|
|
||||||
void UpdateItem(Q3ListViewItem *item,QString name);
|
|
||||||
void WriteItem(Q3ListViewItem *item,RDSqlQuery *q);
|
|
||||||
QString WriteItemSql() const;
|
|
||||||
int ActiveEvents(QString event_name,QString *clock_list);
|
int ActiveEvents(QString event_name,QString *clock_list);
|
||||||
void DeleteEvent(QString event_name);
|
void DeleteEvent(QString event_name);
|
||||||
QString GetEventFilter(QString svc_name);
|
QString GetEventFilter(QString svc_name);
|
||||||
QString GetNoneFilter();
|
QString GetNoneFilter();
|
||||||
Q3ListView *edit_events_list;
|
RDTableView *edit_events_view;
|
||||||
|
EventListModel *edit_events_model;
|
||||||
QString *edit_eventname;
|
QString *edit_eventname;
|
||||||
QLabel *edit_filter_label;
|
QLabel *edit_filter_label;
|
||||||
QComboBox *edit_filter_box;
|
QComboBox *edit_filter_box;
|
||||||
@ -76,5 +72,4 @@ class ListEvents : public RDDialog
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif // LIST_EVENTS_H
|
||||||
|
|
||||||
|
@ -1310,11 +1310,11 @@ delete</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Name</source>
|
<source>Name</source>
|
||||||
<translation>Název</translation>
|
<translation type="obsolete">Název</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Properties</source>
|
<source>Properties</source>
|
||||||
<translation>Vlastnosti</translation>
|
<translation type="obsolete">Vlastnosti</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Color</source>
|
<source>Color</source>
|
||||||
@ -1358,11 +1358,11 @@ delete</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Event Exists</source>
|
<source>Event Exists</source>
|
||||||
<translation>Událost existuje</translation>
|
<translation type="unfinished">Událost existuje</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>An event with that name already exists!</source>
|
<source>An event with that name already exists!</source>
|
||||||
<translation>Událost s tímto názvem již existuje!</translation>
|
<translation type="unfinished">Událost s tímto názvem již existuje!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Are you sure you want to
|
<source>Are you sure you want to
|
||||||
@ -1371,7 +1371,7 @@ delete</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Delete Event</source>
|
<source>Delete Event</source>
|
||||||
<translation>Smazat událost</translation>
|
<translation type="unfinished">Smazat událost</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>is in use in the following clocks:</source>
|
<source>is in use in the following clocks:</source>
|
||||||
@ -1379,11 +1379,11 @@ delete</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Do you still want to delete it?</source>
|
<source>Do you still want to delete it?</source>
|
||||||
<translation>Stále ještě chcete smazat?</translation>
|
<translation type="unfinished">Stále ještě chcete smazat?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Event In Use</source>
|
<source>Event In Use</source>
|
||||||
<translation>Používaná událost</translation>
|
<translation type="unfinished">Používaná událost</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Log Events - User: </source>
|
<source>Log Events - User: </source>
|
||||||
@ -1401,10 +1401,6 @@ delete</source>
|
|||||||
<source>is in use in the following clocks</source>
|
<source>is in use in the following clocks</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Trans</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ListGrids</name>
|
<name>ListGrids</name>
|
||||||
|
@ -1310,11 +1310,11 @@ delete</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Name</source>
|
<source>Name</source>
|
||||||
<translation>Name</translation>
|
<translation type="obsolete">Name</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Properties</source>
|
<source>Properties</source>
|
||||||
<translation>Eigenschaften</translation>
|
<translation type="obsolete">Eigenschaften</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Color</source>
|
<source>Color</source>
|
||||||
@ -1358,11 +1358,11 @@ delete</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Event Exists</source>
|
<source>Event Exists</source>
|
||||||
<translation>Event existiert</translation>
|
<translation type="unfinished">Event existiert</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>An event with that name already exists!</source>
|
<source>An event with that name already exists!</source>
|
||||||
<translation>Ein Event mit diesem Namen existiert bereits!</translation>
|
<translation type="unfinished">Ein Event mit diesem Namen existiert bereits!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Are you sure you want to
|
<source>Are you sure you want to
|
||||||
@ -1371,7 +1371,7 @@ delete</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Delete Event</source>
|
<source>Delete Event</source>
|
||||||
<translation>Event Löschen</translation>
|
<translation type="unfinished">Event Löschen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>is in use in the following clocks:</source>
|
<source>is in use in the following clocks:</source>
|
||||||
@ -1379,11 +1379,11 @@ delete</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Do you still want to delete it?</source>
|
<source>Do you still want to delete it?</source>
|
||||||
<translation>Wollen Sie immernoch löschen?</translation>
|
<translation type="unfinished">Wollen Sie immernoch löschen?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Event In Use</source>
|
<source>Event In Use</source>
|
||||||
<translation>Event in Verwendung</translation>
|
<translation type="unfinished">Event in Verwendung</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Log Events - User: </source>
|
<source>Log Events - User: </source>
|
||||||
@ -1401,10 +1401,6 @@ delete</source>
|
|||||||
<source>is in use in the following clocks</source>
|
<source>is in use in the following clocks</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Trans</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ListGrids</name>
|
<name>ListGrids</name>
|
||||||
|
@ -1313,11 +1313,11 @@ eliminar</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Name</source>
|
<source>Name</source>
|
||||||
<translation>Nombre</translation>
|
<translation type="obsolete">Nombre</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Properties</source>
|
<source>Properties</source>
|
||||||
<translation>Propiedades</translation>
|
<translation type="obsolete">Propiedades</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Color</source>
|
<source>Color</source>
|
||||||
@ -1353,11 +1353,11 @@ eliminar</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Event Exists</source>
|
<source>Event Exists</source>
|
||||||
<translation>El evento ya existe</translation>
|
<translation type="unfinished">El evento ya existe</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>An event with that name already exists!</source>
|
<source>An event with that name already exists!</source>
|
||||||
<translation>¡Un evento con ese nombre ya existe!</translation>
|
<translation type="unfinished">¡Un evento con ese nombre ya existe!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Are you sure you want to
|
<source>Are you sure you want to
|
||||||
@ -1367,7 +1367,7 @@ eliminar</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Delete Event</source>
|
<source>Delete Event</source>
|
||||||
<translation>Eliminar Evento</translation>
|
<translation type="unfinished">Eliminar Evento</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>is in use in the following clocks:</source>
|
<source>is in use in the following clocks:</source>
|
||||||
@ -1375,11 +1375,11 @@ eliminar</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Do you still want to delete it?</source>
|
<source>Do you still want to delete it?</source>
|
||||||
<translation>¿Aún así desea eliminarla?</translation>
|
<translation type="unfinished">¿Aún así desea eliminarla?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Event In Use</source>
|
<source>Event In Use</source>
|
||||||
<translation>El evento está en uso</translation>
|
<translation type="unfinished">El evento está en uso</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>&Rename</source>
|
<source>&Rename</source>
|
||||||
@ -1405,10 +1405,6 @@ eliminar</translation>
|
|||||||
<source>is in use in the following clocks</source>
|
<source>is in use in the following clocks</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Trans</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ListGrids</name>
|
<name>ListGrids</name>
|
||||||
|
@ -1004,14 +1004,6 @@ Do you want to save?</source>
|
|||||||
<source>Filter:</source>
|
<source>Filter:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Name</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>Properties</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>&Add</source>
|
<source>&Add</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
@ -1048,6 +1040,10 @@ Do you want to save?</source>
|
|||||||
<source>NONE</source>
|
<source>NONE</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Log Events</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Event Exists</source>
|
<source>Event Exists</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
@ -1061,27 +1057,19 @@ Do you want to save?</source>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Do you still want to delete it?</source>
|
<source>Are you sure you want to delete</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Event In Use</source>
|
<source>Event In Use</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Log Events</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>Are you sure you want to delete</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>is in use in the following clocks</source>
|
<source>is in use in the following clocks</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Trans</source>
|
<source>Do you still want to delete it?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
@ -1316,11 +1316,11 @@ sletta</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Name</source>
|
<source>Name</source>
|
||||||
<translation>Namn</translation>
|
<translation type="obsolete">Namn</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Properties</source>
|
<source>Properties</source>
|
||||||
<translation>Eigenskapar</translation>
|
<translation type="obsolete">Eigenskapar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Color</source>
|
<source>Color</source>
|
||||||
@ -1364,11 +1364,11 @@ sletta</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Event Exists</source>
|
<source>Event Exists</source>
|
||||||
<translation>Hendinga eksisterer</translation>
|
<translation type="unfinished">Hendinga eksisterer</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>An event with that name already exists!</source>
|
<source>An event with that name already exists!</source>
|
||||||
<translation>Det finst alt ei hending med det namnet!</translation>
|
<translation type="unfinished">Det finst alt ei hending med det namnet!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Are you sure you want to
|
<source>Are you sure you want to
|
||||||
@ -1378,7 +1378,7 @@ sletta</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Delete Event</source>
|
<source>Delete Event</source>
|
||||||
<translation>Slett hendinga</translation>
|
<translation type="unfinished">Slett hendinga</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>is in use in the following clocks:</source>
|
<source>is in use in the following clocks:</source>
|
||||||
@ -1386,11 +1386,11 @@ sletta</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Do you still want to delete it?</source>
|
<source>Do you still want to delete it?</source>
|
||||||
<translation>Vil du framleis sletta?</translation>
|
<translation type="unfinished">Vil du framleis sletta?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Event In Use</source>
|
<source>Event In Use</source>
|
||||||
<translation>Hendinga er i bruk</translation>
|
<translation type="unfinished">Hendinga er i bruk</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Are you sure you want to delete</source>
|
<source>Are you sure you want to delete</source>
|
||||||
@ -1400,10 +1400,6 @@ sletta</translation>
|
|||||||
<source>is in use in the following clocks</source>
|
<source>is in use in the following clocks</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Trans</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ListGrids</name>
|
<name>ListGrids</name>
|
||||||
|
@ -1316,11 +1316,11 @@ sletta</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Name</source>
|
<source>Name</source>
|
||||||
<translation>Namn</translation>
|
<translation type="obsolete">Namn</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Properties</source>
|
<source>Properties</source>
|
||||||
<translation>Eigenskapar</translation>
|
<translation type="obsolete">Eigenskapar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Color</source>
|
<source>Color</source>
|
||||||
@ -1364,11 +1364,11 @@ sletta</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Event Exists</source>
|
<source>Event Exists</source>
|
||||||
<translation>Hendinga eksisterer</translation>
|
<translation type="unfinished">Hendinga eksisterer</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>An event with that name already exists!</source>
|
<source>An event with that name already exists!</source>
|
||||||
<translation>Det finst alt ei hending med det namnet!</translation>
|
<translation type="unfinished">Det finst alt ei hending med det namnet!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Are you sure you want to
|
<source>Are you sure you want to
|
||||||
@ -1378,7 +1378,7 @@ sletta</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Delete Event</source>
|
<source>Delete Event</source>
|
||||||
<translation>Slett hendinga</translation>
|
<translation type="unfinished">Slett hendinga</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>is in use in the following clocks:</source>
|
<source>is in use in the following clocks:</source>
|
||||||
@ -1386,11 +1386,11 @@ sletta</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Do you still want to delete it?</source>
|
<source>Do you still want to delete it?</source>
|
||||||
<translation>Vil du framleis sletta?</translation>
|
<translation type="unfinished">Vil du framleis sletta?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Event In Use</source>
|
<source>Event In Use</source>
|
||||||
<translation>Hendinga er i bruk</translation>
|
<translation type="unfinished">Hendinga er i bruk</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Are you sure you want to delete</source>
|
<source>Are you sure you want to delete</source>
|
||||||
@ -1400,10 +1400,6 @@ sletta</translation>
|
|||||||
<source>is in use in the following clocks</source>
|
<source>is in use in the following clocks</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Trans</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ListGrids</name>
|
<name>ListGrids</name>
|
||||||
|
@ -1317,11 +1317,11 @@ deletar</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Name</source>
|
<source>Name</source>
|
||||||
<translation>Nome</translation>
|
<translation type="obsolete">Nome</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Properties</source>
|
<source>Properties</source>
|
||||||
<translation>Propriedades</translation>
|
<translation type="obsolete">Propriedades</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Color</source>
|
<source>Color</source>
|
||||||
@ -1365,11 +1365,11 @@ deletar</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Event Exists</source>
|
<source>Event Exists</source>
|
||||||
<translation>Evento Existente</translation>
|
<translation type="unfinished">Evento Existente</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>An event with that name already exists!</source>
|
<source>An event with that name already exists!</source>
|
||||||
<translation>Um Evento com este nome já existe!</translation>
|
<translation type="unfinished">Um Evento com este nome já existe!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Are you sure you want to
|
<source>Are you sure you want to
|
||||||
@ -1379,7 +1379,7 @@ deletar</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Delete Event</source>
|
<source>Delete Event</source>
|
||||||
<translation>Deletar Evento</translation>
|
<translation type="unfinished">Deletar Evento</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>is in use in the following clocks:</source>
|
<source>is in use in the following clocks:</source>
|
||||||
@ -1387,11 +1387,11 @@ deletar</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Do you still want to delete it?</source>
|
<source>Do you still want to delete it?</source>
|
||||||
<translation>Você ainda quer deletá-lo?</translation>
|
<translation type="unfinished">Você ainda quer deletá-lo?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Event In Use</source>
|
<source>Event In Use</source>
|
||||||
<translation>Evento em Uso</translation>
|
<translation type="unfinished">Evento em Uso</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Log Events</source>
|
<source>Log Events</source>
|
||||||
@ -1405,10 +1405,6 @@ deletar</translation>
|
|||||||
<source>is in use in the following clocks</source>
|
<source>is in use in the following clocks</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Trans</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ListGrids</name>
|
<name>ListGrids</name>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user