diff --git a/ChangeLog b/ChangeLog index 0abe487c..616feeb7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -16519,3 +16519,5 @@ * Added a 'LOGS.LOCK_DATETIME' field to the database. * Incremented the database version to 273. * Added log locking logic to rdlogedit(1). +2017-12-18 Fred Gleason + * Added log locking logic to the voice tracker in rdlogedit(1). diff --git a/rdlogedit/edit_log.cpp b/rdlogedit/edit_log.cpp index 9544845a..3f1c5aa0 100644 --- a/rdlogedit/edit_log.cpp +++ b/rdlogedit/edit_log.cpp @@ -625,6 +625,8 @@ EditLog::EditLog(QString logname,QString *filter,QString *group, EditLog::~EditLog() { + delete edit_log_event; + delete edit_log_lock; } @@ -651,7 +653,7 @@ int EditLog::exec() tr("Log already being edited by")+" "+ username+"@"+stationname+" ["+ addr.toString()+"]."); - return 1; + return false; } return QDialog::exec(); @@ -1210,7 +1212,7 @@ void EditLog::okData() for(unsigned i=0;isize();i++) { edit_clipboard->at(i).clearExternalData(); } - done(0); + done(true); } @@ -1243,7 +1245,7 @@ void EditLog::cancelData() for(unsigned i=0;isize();i++) { edit_clipboard->at(i).clearExternalData(); } - done(1); + done(false); } diff --git a/rdlogedit/rdlogedit.cpp b/rdlogedit/rdlogedit.cpp index 0c80523f..765e5090 100644 --- a/rdlogedit/rdlogedit.cpp +++ b/rdlogedit/rdlogedit.cpp @@ -455,8 +455,9 @@ void MainWidget::editData() } std::vector newlogs; - EditLog *log=new EditLog(items.at(0)->text(1),&log_filter,&log_group,&log_schedcode, - &log_clipboard,&newlogs,this); + EditLog *log= + new EditLog(items.at(0)->text(1),&log_filter,&log_group,&log_schedcode, + &log_clipboard,&newlogs,this); log->exec(); delete log; RefreshItem(items.at(0)); diff --git a/rdlogedit/rdlogedit_cs.ts b/rdlogedit/rdlogedit_cs.ts index 335bc73c..eb763303 100644 --- a/rdlogedit/rdlogedit_cs.ts +++ b/rdlogedit/rdlogedit_cs.ts @@ -1262,5 +1262,13 @@ therefore only existing transitions will be editable. LABEL ŠTÍTEK + + Log Locked + + + + Log already being edited by + + diff --git a/rdlogedit/rdlogedit_de.ts b/rdlogedit/rdlogedit_de.ts index 7229ffcc..bfd9df1a 100644 --- a/rdlogedit/rdlogedit_de.ts +++ b/rdlogedit/rdlogedit_de.ts @@ -1261,5 +1261,13 @@ therefore only existing transitions will be editable. LABEL LABEL + + Log Locked + + + + Log already being edited by + + diff --git a/rdlogedit/rdlogedit_es.ts b/rdlogedit/rdlogedit_es.ts index 10769b93..d52f7ec6 100644 --- a/rdlogedit/rdlogedit_es.ts +++ b/rdlogedit/rdlogedit_es.ts @@ -1264,5 +1264,13 @@ sólo podrás editar transiciones ya existentes. LABEL ETIQUETA + + Log Locked + + + + Log already being edited by + + diff --git a/rdlogedit/rdlogedit_fr.ts b/rdlogedit/rdlogedit_fr.ts index 16549b8d..6ff799e4 100644 --- a/rdlogedit/rdlogedit_fr.ts +++ b/rdlogedit/rdlogedit_fr.ts @@ -1174,5 +1174,13 @@ therefore only existing transitions will be editable. LABEL + + Log Locked + + + + Log already being edited by + + diff --git a/rdlogedit/rdlogedit_nb.ts b/rdlogedit/rdlogedit_nb.ts index 0af0d24c..d6640b3f 100644 --- a/rdlogedit/rdlogedit_nb.ts +++ b/rdlogedit/rdlogedit_nb.ts @@ -1279,5 +1279,13 @@ therefore only existing transitions will be editable. LABEL SELSKAP + + Log Locked + + + + Log already being edited by + + diff --git a/rdlogedit/rdlogedit_nn.ts b/rdlogedit/rdlogedit_nn.ts index 0af0d24c..d6640b3f 100644 --- a/rdlogedit/rdlogedit_nn.ts +++ b/rdlogedit/rdlogedit_nn.ts @@ -1279,5 +1279,13 @@ therefore only existing transitions will be editable. LABEL SELSKAP + + Log Locked + + + + Log already being edited by + + diff --git a/rdlogedit/rdlogedit_pt_BR.ts b/rdlogedit/rdlogedit_pt_BR.ts index d411b1a7..01916016 100644 --- a/rdlogedit/rdlogedit_pt_BR.ts +++ b/rdlogedit/rdlogedit_pt_BR.ts @@ -1265,5 +1265,13 @@ Assim sendo, somente transições existentes serão editáveis. LABEL SELO + + Log Locked + + + + Log already being edited by + + diff --git a/rdlogedit/voice_tracker.cpp b/rdlogedit/voice_tracker.cpp index 1c81744c..0cd5cfba 100644 --- a/rdlogedit/voice_tracker.cpp +++ b/rdlogedit/voice_tracker.cpp @@ -246,8 +246,9 @@ VoiceTracker::VoiceTracker(const QString &logname,QString *import_path, this,SLOT(recordUnloadedData(int,int,unsigned))); // - // Log Machine + // Log Data Structures // + track_log_lock=new RDLogLock(edit_log_name,rduser,rdstation_conf,this); track_log=new RDLog(edit_log_name); track_log_event=new RDLogEvent(RDLog::tableName(edit_log_name)); track_log_event->load(); @@ -522,6 +523,7 @@ VoiceTracker::~VoiceTracker() delete wpg[i]; wpg[i]=NULL; } + delete track_log_lock; } @@ -537,6 +539,24 @@ QSizePolicy VoiceTracker::sizePolicy() const } +int VoiceTracker::exec() +{ + QString username; + QString stationname; + QHostAddress addr; + + if(!track_log_lock->tryLock(&username,&stationname,&addr)) { + QMessageBox::warning(this,"RDLogEdit - "+tr("Log Locked"), + tr("Log already being edited by")+" "+ + username+"@"+stationname+" ["+ + addr.toString()+"]."); + return false; + } + + return QDialog::exec(); +} + + void VoiceTracker::keyPressEvent(QKeyEvent *e) { switch(e->key()) { diff --git a/rdlogedit/voice_tracker.h b/rdlogedit/voice_tracker.h index 84c7fda7..0ac01b8b 100644 --- a/rdlogedit/voice_tracker.h +++ b/rdlogedit/voice_tracker.h @@ -2,7 +2,7 @@ // // A Rivendell Voice Tracker // -// (C) Copyright 2002-2006,2016 Fred Gleason +// (C) Copyright 2002-2006,2016-2017 Fred Gleason // // 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 @@ -34,18 +34,20 @@ #include #include -#include -#include #include #include +#include #include #include #include +#include #include -#include -#include -#include #include +#include +#include +#include + +#include "log_listview.h" // // Widget Settings @@ -80,7 +82,10 @@ class VoiceTracker : public QDialog ~VoiceTracker(); QSize sizeHint() const; QSizePolicy sizePolicy() const; - + + public slots: + int exec(); + private slots: void updateMenuData(); void hideMenuData(); @@ -199,7 +204,6 @@ class VoiceTracker : public QDialog QPixmap *edit_wave_map[3]; QString edit_wave_name[3]; RDWavePainter *wpg[3]; - //int edit_wave_pos[3]; int edit_scroll_pos[3]; int edit_wave_origin[3]; RDLogLine *edit_logline[3]; @@ -212,10 +216,7 @@ class VoiceTracker : public QDialog bool track_redraw[3]; unsigned track_redraw_count; RDCart *edit_track_cart; - - //RDCut *edit_track_cut; RDCut *edit_track_cuts[3]; - RDGroup *track_group; int edit_wave_width; int edit_cursor_pos; @@ -284,7 +285,8 @@ class VoiceTracker : public QDialog int track_target_track[VoiceTracker::TargetSize]; VoiceTracker::Target track_current_target; bool edit_shift_pressed; + RDLogLock *track_log_lock; }; -#endif +#endif // VOICE_TRACKER_H