mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-19 14:43:30 +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 rdpanel(1).
|
||||
* 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_schedcoderules.cpp edit_schedcoderules.h\
|
||||
edit_track.cpp edit_track.h\
|
||||
eventlistmodel.cpp eventlistmodel.h\
|
||||
generate_log.cpp generate_log.h\
|
||||
importcartsmodel.cpp importcartsmodel.h\
|
||||
importcartsview.cpp importcartsview.h\
|
||||
@ -81,6 +82,7 @@ nodist_rdlogmanager_SOURCES = moc_add_clock.cpp\
|
||||
moc_edit_schedrules.cpp\
|
||||
moc_edit_schedcoderules.cpp\
|
||||
moc_edit_track.cpp\
|
||||
moc_eventlistmodel.cpp\
|
||||
moc_generate_log.cpp\
|
||||
moc_importcartsmodel.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->setFont(labelFont());
|
||||
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
|
||||
//
|
||||
QPushButton *ok_button=new QPushButton(this);
|
||||
ok_button->setGeometry(sizeHint().width()-180,sizeHint().height()-60,80,50);
|
||||
ok_button->setDefault(true);
|
||||
ok_button->setFont(buttonFont());
|
||||
ok_button->setText(tr("&OK"));
|
||||
connect(ok_button,SIGNAL(clicked()),this,SLOT(okData()));
|
||||
event_ok_button=new QPushButton(this);
|
||||
event_ok_button->
|
||||
setGeometry(sizeHint().width()-180,sizeHint().height()-60,80,50);
|
||||
event_ok_button->setDefault(true);
|
||||
event_ok_button->setFont(buttonFont());
|
||||
event_ok_button->setText(tr("&OK"));
|
||||
connect(event_ok_button,SIGNAL(clicked()),this,SLOT(okData()));
|
||||
event_ok_button->setDisabled(true);
|
||||
|
||||
//
|
||||
// Cancel Button
|
||||
//
|
||||
QPushButton *cancel_button=new QPushButton(this);
|
||||
cancel_button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,
|
||||
80,50);
|
||||
cancel_button->setFont(buttonFont());
|
||||
cancel_button->setText(tr("&Cancel"));
|
||||
connect(cancel_button,SIGNAL(clicked()),this,SLOT(cancelData()));
|
||||
event_cancel_button=new QPushButton(this);
|
||||
event_cancel_button->
|
||||
setGeometry(sizeHint().width()-90,sizeHint().height()-60,80,50);
|
||||
event_cancel_button->setFont(buttonFont());
|
||||
event_cancel_button->setText(tr("&Cancel"));
|
||||
connect(event_cancel_button,SIGNAL(clicked()),this,SLOT(cancelData()));
|
||||
|
||||
//
|
||||
// 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()
|
||||
{
|
||||
*event_name=event_name_edit->text();
|
||||
|
@ -21,7 +21,8 @@
|
||||
#ifndef ADD_EVENT_H
|
||||
#define ADD_EVENT_H
|
||||
|
||||
#include <qlineedit.h>
|
||||
#include <QLineEdit>
|
||||
#include <QPushButton>
|
||||
|
||||
#include <rddialog.h>
|
||||
|
||||
@ -36,6 +37,7 @@ class AddEvent : public RDDialog
|
||||
QSizePolicy sizePolicy() const;
|
||||
|
||||
private slots:
|
||||
void nameChangedData(const QString &str);
|
||||
void okData();
|
||||
void cancelData();
|
||||
|
||||
@ -45,8 +47,9 @@ class AddEvent : public RDDialog
|
||||
private:
|
||||
QLineEdit *event_name_edit;
|
||||
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->setText(tr("Save &As"));
|
||||
connect(button,SIGNAL(clicked()),this,SLOT(saveAsData()));
|
||||
button->setDisabled(new_event);
|
||||
|
||||
//
|
||||
// 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
|
||||
//
|
||||
// (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
|
||||
// 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.
|
||||
//
|
||||
|
||||
#include <qmessagebox.h>
|
||||
#include <qpainter.h>
|
||||
#include <QMessageBox>
|
||||
|
||||
#include <rdconf.h>
|
||||
#include <rdescape_string.h>
|
||||
@ -57,16 +56,16 @@ ListEvents::ListEvents(QString *eventname,QWidget *parent)
|
||||
//
|
||||
// Events List
|
||||
//
|
||||
edit_events_list=new Q3ListView(this);
|
||||
edit_events_list->setAllColumnsShowFocus(true);
|
||||
edit_events_list->setItemMargin(5);
|
||||
edit_events_list->addColumn(tr("Name"));
|
||||
edit_events_list->addColumn(tr("Trans"));
|
||||
edit_events_list->setColumnAlignment(1,Qt::AlignCenter);
|
||||
edit_events_list->addColumn(tr("Properties"));
|
||||
connect(edit_events_list,
|
||||
SIGNAL(doubleClicked(Q3ListViewItem *,const QPoint &,int)),
|
||||
this,SLOT(doubleClickedData(Q3ListViewItem *,const QPoint &,int)));
|
||||
edit_events_view=new RDTableView(this);
|
||||
edit_events_model=new EventListModel(this);
|
||||
edit_events_model->setFont(font());
|
||||
edit_events_model->setPalette(palette());
|
||||
edit_events_view->setModel(edit_events_model);
|
||||
connect(edit_events_view,SIGNAL(doubleClicked(const QModelIndex &)),
|
||||
this,SLOT(doubleClickedData(const QModelIndex &)));
|
||||
connect(edit_events_model,SIGNAL(modelReset()),
|
||||
edit_events_view,SLOT(resizeColumnsToContents()));
|
||||
edit_events_view->resizeColumnsToContents();
|
||||
|
||||
//
|
||||
// Add Button
|
||||
@ -159,8 +158,6 @@ ListEvents::ListEvents(QString *eventname,QWidget *parent)
|
||||
edit_filter_box->setCurrentItem(edit_filter_box->count()-1);
|
||||
}
|
||||
}
|
||||
|
||||
RefreshList();
|
||||
}
|
||||
|
||||
|
||||
@ -237,31 +234,39 @@ void ListEvents::addData()
|
||||
"SERVICE_NAME=\""+RDEscapeString(edit_filter_box->currentText())+"\"";
|
||||
RDSqlQuery::apply(sql);
|
||||
}
|
||||
QModelIndex row=edit_events_model->addEvent(logname);
|
||||
if(row.isValid()) {
|
||||
edit_events_view->selectRow(row.row());
|
||||
}
|
||||
}
|
||||
delete event_dialog;
|
||||
Q3ListViewItem *item=new Q3ListViewItem(edit_events_list);
|
||||
item->setText(0,logname);
|
||||
RefreshItem(item,&new_events);
|
||||
edit_events_list->setSelected(item,true);
|
||||
edit_events_list->ensureItemVisible(item);
|
||||
for(unsigned i=0;i<new_events.size();i++) {
|
||||
QModelIndex row=edit_events_model->addEvent(new_events.at(i));
|
||||
if(row.isValid()) {
|
||||
edit_events_view->selectRow(row.row());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ListEvents::editData()
|
||||
{
|
||||
std::vector<QString> new_events;
|
||||
QModelIndexList rows=edit_events_view->selectionModel()->selectedRows();
|
||||
|
||||
Q3ListViewItem *item=edit_events_list->selectedItem();
|
||||
if(item==NULL) {
|
||||
if(rows.size()!=1) {
|
||||
return;
|
||||
}
|
||||
EditEvent *event_dialog=new EditEvent(item->text(0),false,&new_events,this);
|
||||
if(event_dialog->exec()<-1) {
|
||||
delete event_dialog;
|
||||
return;
|
||||
EditEvent *event_dialog=
|
||||
new EditEvent(edit_events_model->eventName(rows.first()),false,&new_events,
|
||||
this);
|
||||
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;
|
||||
RefreshItem(item,&new_events);
|
||||
}
|
||||
|
||||
|
||||
@ -269,21 +274,21 @@ void ListEvents::deleteData()
|
||||
{
|
||||
int n;
|
||||
QString clock_list;
|
||||
QModelIndexList rows=edit_events_view->selectionModel()->selectedRows();
|
||||
|
||||
Q3ListViewItem *item=edit_events_list->selectedItem();
|
||||
if(item==NULL) {
|
||||
if(rows.size()!=1) {
|
||||
return;
|
||||
}
|
||||
if(QMessageBox::question(this,"RDLogManager - "+tr("Delete Event"),
|
||||
tr("Are you sure you want to delete")+" \""+
|
||||
item->text(0)+"\"?",
|
||||
edit_events_model->eventName(rows.first())+"\"?",
|
||||
QMessageBox::Yes,QMessageBox::No)
|
||||
!=QMessageBox::Yes) {
|
||||
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"),
|
||||
"\""+item->text(0)+"\" "+
|
||||
"\""+edit_events_model->eventName(rows.first())+"\" "+
|
||||
tr("is in use in the following clocks")+":\n\n"+
|
||||
clock_list+"\n"+
|
||||
tr("Do you still want to delete it?"),
|
||||
@ -292,77 +297,88 @@ void ListEvents::deleteData()
|
||||
return;
|
||||
}
|
||||
}
|
||||
DeleteEvent(item->text(0));
|
||||
delete item;
|
||||
RefreshList();
|
||||
DeleteEvent(edit_events_model->eventName(rows.first()));
|
||||
edit_events_model->removeEvent(rows.first());
|
||||
}
|
||||
|
||||
|
||||
void ListEvents::renameData()
|
||||
{
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
Q3ListViewItem *item=edit_events_list->selectedItem();
|
||||
if(item==NULL) {
|
||||
QModelIndexList rows=edit_events_view->selectionModel()->selectedRows();
|
||||
|
||||
if(rows.size()!=1) {
|
||||
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);
|
||||
if(rename_dialog->exec()<-1) {
|
||||
delete rename_dialog;
|
||||
return;
|
||||
}
|
||||
delete rename_dialog;
|
||||
if(old_name==new_name) {
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// Rename Clock References
|
||||
//
|
||||
sql=QString("update CLOCK_LINES set ")+
|
||||
"EVENT_NAME=\""+RDEscapeString(new_name)+"\" where "+
|
||||
"EVENT_NAME=\""+RDEscapeString(item->text(0))+"\"";
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
"EVENT_NAME=\""+RDEscapeString(old_name)+"\"";
|
||||
RDSqlQuery::apply(sql);
|
||||
|
||||
//
|
||||
// Rename Event Line References
|
||||
//
|
||||
sql=QString("update EVENT_LINES set ")+
|
||||
"EVENT_NAME=\""+RDEscapeString(new_name)+"\" where "+
|
||||
"EVENT_NAME=\""+RDEscapeString(item->text(0))+"\"";
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
"EVENT_NAME=\""+RDEscapeString(old_name)+"\"";
|
||||
RDSqlQuery::apply(sql);
|
||||
|
||||
//
|
||||
// Rename Service Permissions
|
||||
//
|
||||
sql=QString().sprintf("update EVENT_PERMS set EVENT_NAME=\"%s\"\
|
||||
where EVENT_NAME=\"%s\"",
|
||||
(const char *)new_name,
|
||||
(const char *)item->text(0));
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
sql=QString("update EVENT_PERMS set ")+
|
||||
"EVENT_NAME=\""+RDEscapeString(new_name)+"\" "+
|
||||
"where EVENT_NAME=\""+RDEscapeString(old_name)+"\"";
|
||||
RDSqlQuery::apply(sql);
|
||||
|
||||
//
|
||||
// Rename Primary Key
|
||||
//
|
||||
sql=QString().sprintf("update EVENTS set NAME=\"%s\" where NAME=\"%s\"",
|
||||
(const char *)new_name,
|
||||
(const char *)item->text(0));
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
sql=QString("update EVENTS set ")+
|
||||
"NAME=\""+RDEscapeString(new_name)+"\" where "+
|
||||
"NAME=\""+RDEscapeString(old_name)+"\"";
|
||||
RDSqlQuery::apply(sql);
|
||||
|
||||
item->setText(0,new_name);
|
||||
RefreshItem(item);
|
||||
edit_events_model->removeEvent(old_name);
|
||||
QModelIndex row=edit_events_model->addEvent(new_name);
|
||||
if(row.isValid()) {
|
||||
edit_events_view->selectRow(row.row());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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) {
|
||||
editData();
|
||||
@ -381,13 +397,13 @@ void ListEvents::closeData()
|
||||
|
||||
void ListEvents::okData()
|
||||
{
|
||||
Q3ListViewItem *item=edit_events_list->selectedItem();
|
||||
*event_filter=edit_filter_box->currentText();
|
||||
if(item==NULL) {
|
||||
QModelIndexList rows=edit_events_view->selectionModel()->selectedRows();
|
||||
if(rows.size()!=1) {
|
||||
done(-1);
|
||||
return;
|
||||
}
|
||||
*edit_eventname=item->text(0);
|
||||
*edit_eventname=edit_events_model->eventName(rows.first());
|
||||
|
||||
done(0);
|
||||
}
|
||||
|
||||
@ -401,7 +417,7 @@ void ListEvents::cancelData()
|
||||
void ListEvents::resizeEvent(QResizeEvent *e)
|
||||
{
|
||||
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_edit_button->setGeometry(100,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 n=0;
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// 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
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
@ -21,13 +21,13 @@
|
||||
#ifndef LIST_EVENTS_H
|
||||
#define LIST_EVENTS_H
|
||||
|
||||
#include <q3listview.h>
|
||||
|
||||
#include <qlabel.h>
|
||||
#include <qcombobox.h>
|
||||
#include <QComboBox>
|
||||
|
||||
#include <rddb.h>
|
||||
#include <rddialog.h>
|
||||
#include <rdtableview.h>
|
||||
|
||||
#include "eventlistmodel.h"
|
||||
|
||||
class ListEvents : public RDDialog
|
||||
{
|
||||
@ -42,7 +42,7 @@ class ListEvents : public RDDialog
|
||||
void editData();
|
||||
void deleteData();
|
||||
void renameData();
|
||||
void doubleClickedData(Q3ListViewItem *,const QPoint &,int);
|
||||
void doubleClickedData(const QModelIndex &index);
|
||||
void filterActivatedData(int id);
|
||||
void closeData();
|
||||
void okData();
|
||||
@ -53,16 +53,12 @@ class ListEvents : public RDDialog
|
||||
void closeEvent(QCloseEvent *e);
|
||||
|
||||
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);
|
||||
void DeleteEvent(QString event_name);
|
||||
QString GetEventFilter(QString svc_name);
|
||||
QString GetNoneFilter();
|
||||
Q3ListView *edit_events_list;
|
||||
RDTableView *edit_events_view;
|
||||
EventListModel *edit_events_model;
|
||||
QString *edit_eventname;
|
||||
QLabel *edit_filter_label;
|
||||
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>
|
||||
<source>Name</source>
|
||||
<translation>Název</translation>
|
||||
<translation type="obsolete">Název</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Properties</source>
|
||||
<translation>Vlastnosti</translation>
|
||||
<translation type="obsolete">Vlastnosti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Color</source>
|
||||
@ -1358,11 +1358,11 @@ delete</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Event Exists</source>
|
||||
<translation>Událost existuje</translation>
|
||||
<translation type="unfinished">Událost existuje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Are you sure you want to
|
||||
@ -1371,7 +1371,7 @@ delete</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Event</source>
|
||||
<translation>Smazat událost</translation>
|
||||
<translation type="unfinished">Smazat událost</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>is in use in the following clocks:</source>
|
||||
@ -1379,11 +1379,11 @@ delete</source>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Event In Use</source>
|
||||
<translation>Používaná událost</translation>
|
||||
<translation type="unfinished">Používaná událost</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Log Events - User: </source>
|
||||
@ -1401,10 +1401,6 @@ delete</source>
|
||||
<source>is in use in the following clocks</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Trans</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ListGrids</name>
|
||||
|
@ -1310,11 +1310,11 @@ delete</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation>Name</translation>
|
||||
<translation type="obsolete">Name</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Properties</source>
|
||||
<translation>Eigenschaften</translation>
|
||||
<translation type="obsolete">Eigenschaften</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Color</source>
|
||||
@ -1358,11 +1358,11 @@ delete</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Event Exists</source>
|
||||
<translation>Event existiert</translation>
|
||||
<translation type="unfinished">Event existiert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Are you sure you want to
|
||||
@ -1371,7 +1371,7 @@ delete</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Event</source>
|
||||
<translation>Event Löschen</translation>
|
||||
<translation type="unfinished">Event Löschen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>is in use in the following clocks:</source>
|
||||
@ -1379,11 +1379,11 @@ delete</source>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Event In Use</source>
|
||||
<translation>Event in Verwendung</translation>
|
||||
<translation type="unfinished">Event in Verwendung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Log Events - User: </source>
|
||||
@ -1401,10 +1401,6 @@ delete</source>
|
||||
<source>is in use in the following clocks</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Trans</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ListGrids</name>
|
||||
|
@ -1313,11 +1313,11 @@ eliminar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation>Nombre</translation>
|
||||
<translation type="obsolete">Nombre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Properties</source>
|
||||
<translation>Propiedades</translation>
|
||||
<translation type="obsolete">Propiedades</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Color</source>
|
||||
@ -1353,11 +1353,11 @@ eliminar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Event Exists</source>
|
||||
<translation>El evento ya existe</translation>
|
||||
<translation type="unfinished">El evento ya existe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Are you sure you want to
|
||||
@ -1367,7 +1367,7 @@ eliminar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Event</source>
|
||||
<translation>Eliminar Evento</translation>
|
||||
<translation type="unfinished">Eliminar Evento</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>is in use in the following clocks:</source>
|
||||
@ -1375,11 +1375,11 @@ eliminar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Event In Use</source>
|
||||
<translation>El evento está en uso</translation>
|
||||
<translation type="unfinished">El evento está en uso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Rename</source>
|
||||
@ -1405,10 +1405,6 @@ eliminar</translation>
|
||||
<source>is in use in the following clocks</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Trans</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ListGrids</name>
|
||||
|
@ -1004,14 +1004,6 @@ Do you want to save?</source>
|
||||
<source>Filter:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Properties</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Add</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1048,6 +1040,10 @@ Do you want to save?</source>
|
||||
<source>NONE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Log Events</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Event Exists</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1061,27 +1057,19 @@ Do you want to save?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you still want to delete it?</source>
|
||||
<source>Are you sure you want to delete</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Event In Use</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<source>is in use in the following clocks</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Trans</source>
|
||||
<source>Do you still want to delete it?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1316,11 +1316,11 @@ sletta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation>Namn</translation>
|
||||
<translation type="obsolete">Namn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Properties</source>
|
||||
<translation>Eigenskapar</translation>
|
||||
<translation type="obsolete">Eigenskapar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Color</source>
|
||||
@ -1364,11 +1364,11 @@ sletta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Event Exists</source>
|
||||
<translation>Hendinga eksisterer</translation>
|
||||
<translation type="unfinished">Hendinga eksisterer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Are you sure you want to
|
||||
@ -1378,7 +1378,7 @@ sletta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Event</source>
|
||||
<translation>Slett hendinga</translation>
|
||||
<translation type="unfinished">Slett hendinga</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>is in use in the following clocks:</source>
|
||||
@ -1386,11 +1386,11 @@ sletta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Event In Use</source>
|
||||
<translation>Hendinga er i bruk</translation>
|
||||
<translation type="unfinished">Hendinga er i bruk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you want to delete</source>
|
||||
@ -1400,10 +1400,6 @@ sletta</translation>
|
||||
<source>is in use in the following clocks</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Trans</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ListGrids</name>
|
||||
|
@ -1316,11 +1316,11 @@ sletta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation>Namn</translation>
|
||||
<translation type="obsolete">Namn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Properties</source>
|
||||
<translation>Eigenskapar</translation>
|
||||
<translation type="obsolete">Eigenskapar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Color</source>
|
||||
@ -1364,11 +1364,11 @@ sletta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Event Exists</source>
|
||||
<translation>Hendinga eksisterer</translation>
|
||||
<translation type="unfinished">Hendinga eksisterer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Are you sure you want to
|
||||
@ -1378,7 +1378,7 @@ sletta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Event</source>
|
||||
<translation>Slett hendinga</translation>
|
||||
<translation type="unfinished">Slett hendinga</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>is in use in the following clocks:</source>
|
||||
@ -1386,11 +1386,11 @@ sletta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Event In Use</source>
|
||||
<translation>Hendinga er i bruk</translation>
|
||||
<translation type="unfinished">Hendinga er i bruk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you want to delete</source>
|
||||
@ -1400,10 +1400,6 @@ sletta</translation>
|
||||
<source>is in use in the following clocks</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Trans</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ListGrids</name>
|
||||
|
@ -1317,11 +1317,11 @@ deletar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation>Nome</translation>
|
||||
<translation type="obsolete">Nome</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Properties</source>
|
||||
<translation>Propriedades</translation>
|
||||
<translation type="obsolete">Propriedades</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Color</source>
|
||||
@ -1365,11 +1365,11 @@ deletar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Event Exists</source>
|
||||
<translation>Evento Existente</translation>
|
||||
<translation type="unfinished">Evento Existente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Are you sure you want to
|
||||
@ -1379,7 +1379,7 @@ deletar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Event</source>
|
||||
<translation>Deletar Evento</translation>
|
||||
<translation type="unfinished">Deletar Evento</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>is in use in the following clocks:</source>
|
||||
@ -1387,11 +1387,11 @@ deletar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Event In Use</source>
|
||||
<translation>Evento em Uso</translation>
|
||||
<translation type="unfinished">Evento em Uso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Log Events</source>
|
||||
@ -1405,10 +1405,6 @@ deletar</translation>
|
||||
<source>is in use in the following clocks</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Trans</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ListGrids</name>
|
||||
|
Loading…
x
Reference in New Issue
Block a user