mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-18 22:22:36 +02:00
* Cleaned up deprecation warnings for 'QString::sprintf()'. Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
736 lines
18 KiB
C++
736 lines
18 KiB
C++
// rdlogedit.cpp
|
|
//
|
|
// The Log Editor Utility for Rivendell.
|
|
//
|
|
// (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
|
|
// 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 <QApplication>
|
|
#include <QMessageBox>
|
|
#include <QTranslator>
|
|
|
|
#include <rdadd_log.h>
|
|
#include <rdconf.h>
|
|
#include <rdescape_string.h>
|
|
#include <rdprofile.h>
|
|
#include <rdreport.h>
|
|
#include <rdtextfile.h>
|
|
#include <rdtrackerwidget.h>
|
|
|
|
#include "edit_log.h"
|
|
#include "globals.h"
|
|
#include "rdlogedit.h"
|
|
|
|
//
|
|
// Global Resources
|
|
//
|
|
bool global_import_running=false;
|
|
QSize global_logedit_window_size;
|
|
int global_start_time_style;
|
|
|
|
MainWidget::MainWidget(RDConfig *c,QWidget *parent)
|
|
: RDMainWindow("rdlogedit",c)
|
|
{
|
|
QString err_msg;
|
|
|
|
log_resize=false;
|
|
log_log_view=NULL;
|
|
log_log_model=NULL;
|
|
log_list_locked=false;
|
|
|
|
//
|
|
// Fix the Window Size
|
|
//
|
|
setMinimumWidth(RDLOGEDIT_DEFAULT_WIDTH);
|
|
setMinimumHeight(RDLOGEDIT_DEFAULT_HEIGHT);
|
|
|
|
//
|
|
// Open the Database
|
|
//
|
|
rda=new RDApplication("RDLogEdit","rdlogedit",RDLOGEDIT_USAGE,this);
|
|
if(!rda->open(&err_msg)) {
|
|
QMessageBox::critical(this,"RDLogEdit - "+tr("Error"),err_msg);
|
|
exit(1);
|
|
}
|
|
log_import_path=RDGetHomeDir();
|
|
|
|
//
|
|
// Read Command Options
|
|
//
|
|
for(unsigned i=0;i<rda->cmdSwitch()->keys();i++) {
|
|
if(!rda->cmdSwitch()->processed(i)) {
|
|
QMessageBox::critical(this,"RDLogEdit - "+tr("Error"),
|
|
tr("Unknown command option")+": "+
|
|
rda->cmdSwitch()->key(i));
|
|
exit(2);
|
|
}
|
|
}
|
|
|
|
//
|
|
// CAE Connection
|
|
//
|
|
connect(rda->cae(),SIGNAL(isConnected(bool)),
|
|
this,SLOT(caeConnectedData(bool)));
|
|
rda->cae()->connectHost();
|
|
|
|
//
|
|
// RIPC Connection
|
|
//
|
|
connect(rda->ripc(),SIGNAL(notificationReceived(RDNotification *)),
|
|
this,SLOT(notificationReceivedData(RDNotification *)));
|
|
connect(rda,SIGNAL(userChanged()),this,SLOT(userData()));
|
|
rda->ripc()
|
|
->connectHost("localhost",RIPCD_TCP_PORT,rda->config()->password());
|
|
|
|
//
|
|
// Create Icons
|
|
//
|
|
setWindowIcon(rda->iconEngine()->applicationIcon(RDIconEngine::RdLogEdit,22));
|
|
|
|
//
|
|
// Log Filter
|
|
//
|
|
log_filter_widget=
|
|
new RDLogFilter(RDLogFilter::UserFilter,this);
|
|
connect(log_filter_widget,SIGNAL(filterChanged(const QString &)),
|
|
this,SLOT(filterChangedData(const QString &)));
|
|
|
|
//
|
|
// Dialogs
|
|
//
|
|
log_tracker_dialog=new VoiceTracker(&log_import_path,this);
|
|
|
|
//
|
|
// Log List
|
|
//
|
|
log_log_view=new RDTableView(this);
|
|
log_log_view->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
|
log_log_model=new RDLogListModel(this);
|
|
log_log_model->setFont(defaultFont());
|
|
log_log_model->setPalette(palette());
|
|
log_log_view->setModel(log_log_model);
|
|
log_log_view->resizeColumnsToContents();
|
|
connect(log_filter_widget,SIGNAL(filterChanged(const QString &)),
|
|
log_log_model,SLOT(setFilterSql(const QString &)));
|
|
connect(log_log_view,SIGNAL(doubleClicked(const QModelIndex &)),
|
|
this,SLOT(doubleClickedData(const QModelIndex &)));
|
|
connect(log_log_view->selectionModel(),
|
|
SIGNAL(selectionChanged(const QItemSelection &,const QItemSelection &)),
|
|
this,
|
|
SLOT(selectionChangedData(const QItemSelection &,const QItemSelection)));
|
|
|
|
//
|
|
// Add Button
|
|
//
|
|
log_add_button=new QPushButton(this);
|
|
log_add_button->setFont(buttonFont());
|
|
log_add_button->setText(tr("Add"));
|
|
connect(log_add_button,SIGNAL(clicked()),this,SLOT(addData()));
|
|
|
|
//
|
|
// Edit Button
|
|
//
|
|
log_edit_button=new QPushButton(this);
|
|
log_edit_button->setFont(buttonFont());
|
|
log_edit_button->setText(tr("Edit"));
|
|
connect(log_edit_button,SIGNAL(clicked()),this,SLOT(editData()));
|
|
log_edit_button->setDisabled(true);
|
|
|
|
//
|
|
// Delete Button
|
|
//
|
|
log_delete_button=new QPushButton(this);
|
|
log_delete_button->setFont(buttonFont());
|
|
log_delete_button->setText(tr("Delete"));
|
|
connect(log_delete_button,SIGNAL(clicked()),this,SLOT(deleteData()));
|
|
|
|
//
|
|
// Tracker Button
|
|
//
|
|
log_track_button=new QPushButton(this);
|
|
log_track_button->setFont(buttonFont());
|
|
log_track_button->setText(tr("Voice\nTracker"));
|
|
connect(log_track_button,SIGNAL(clicked()),this,SLOT(trackData()));
|
|
|
|
//
|
|
// Log Report Button
|
|
//
|
|
log_report_button=new QPushButton(this);
|
|
log_report_button->setFont(buttonFont());
|
|
log_report_button->setText(tr("Log\nReport"));
|
|
connect(log_report_button,SIGNAL(clicked()),this,SLOT(reportData()));
|
|
|
|
//
|
|
// Close Button
|
|
//
|
|
log_close_button=new QPushButton(this);
|
|
log_close_button->setFont(buttonFont());
|
|
log_close_button->setText(tr("Close"));
|
|
connect(log_close_button,SIGNAL(clicked()),this,SLOT(quitMainWidget()));
|
|
|
|
setWindowTitle(QString("RDLogEdit")+"v"+VERSION+" - "+tr("Host")+": "+
|
|
rda->config()->stationName()+", "+
|
|
tr("User")+": ["+tr("Unknown")+"]");
|
|
|
|
log_resize=true;
|
|
|
|
loadSettings(true);
|
|
}
|
|
|
|
|
|
QSize MainWidget::sizeHint() const
|
|
{
|
|
return QSize(RDLOGEDIT_DEFAULT_WIDTH,RDLOGEDIT_DEFAULT_HEIGHT);
|
|
}
|
|
|
|
|
|
QSizePolicy MainWidget::sizePolicy() const
|
|
{
|
|
return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
|
}
|
|
|
|
|
|
void MainWidget::caeConnectedData(bool state)
|
|
{
|
|
QList<int> cards;
|
|
RDLogeditConf *conf=new RDLogeditConf(rda->config()->stationName());
|
|
|
|
cards.push_back(conf->inputCard());
|
|
cards.push_back(conf->outputCard());
|
|
rda->cae()->enableMetering(&cards);
|
|
}
|
|
|
|
void MainWidget::userData()
|
|
{
|
|
QString str1;
|
|
QString str2;
|
|
|
|
str1=QString("RDLogEdit")+" v"+VERSION+" - "+tr("Host");
|
|
str2=QString(tr("User"));
|
|
setWindowTitle(str1+": "+rda->config()->stationName()+", "+str2+": "+
|
|
rda->ripc()->user());
|
|
|
|
log_filter_widget->changeUser();
|
|
log_log_model->setFilterSql(log_filter_widget->whereSql());
|
|
log_log_view->resizeColumnsToContents();
|
|
// RefreshList();
|
|
|
|
//
|
|
// Set Control Perms
|
|
//
|
|
log_add_button->setEnabled(rda->user()->createLog());
|
|
log_delete_button->setEnabled(false);
|
|
log_track_button->setEnabled(false);
|
|
}
|
|
|
|
|
|
void MainWidget::recentData(bool state)
|
|
{
|
|
// RefreshList();
|
|
}
|
|
|
|
|
|
void MainWidget::addData()
|
|
{
|
|
QString logname;
|
|
QString svcname;
|
|
QStringList newlogs;
|
|
RDAddLog *log;
|
|
QModelIndex row;
|
|
|
|
if(rda->user()->createLog()) {
|
|
log=new RDAddLog(&logname,&svcname,RDLogFilter::UserFilter,
|
|
tr("Add Log"),this);
|
|
if(log->exec()!=0) {
|
|
delete log;
|
|
return;
|
|
}
|
|
delete log;
|
|
QString username(rda->ripc()->user());
|
|
QString err_msg;
|
|
if(!RDLog::create(logname,svcname,QDate(),username,&err_msg,
|
|
rda->config())) {
|
|
QMessageBox::warning(this,"RDLogEdit - "+tr("Error"),err_msg);
|
|
return;
|
|
}
|
|
LockList();
|
|
SendNotification(RDNotification::AddAction,logname);
|
|
EditLog *editlog=new EditLog(logname,&log_filter,&log_group,&log_schedcode,
|
|
&log_clipboard,&newlogs,this);
|
|
editlog->exec();
|
|
delete editlog;
|
|
|
|
row=log_log_model->addLog(logname);
|
|
log_log_view->selectRow(row.row());
|
|
UnlockList();
|
|
}
|
|
}
|
|
|
|
|
|
void MainWidget::editData()
|
|
{
|
|
QModelIndex row=SingleSelectedRow();
|
|
|
|
if(!row.isValid()) {
|
|
return;
|
|
}
|
|
QString logname=log_log_model->logName(row);
|
|
QStringList newlogs;
|
|
LockList();
|
|
EditLog *log=
|
|
new EditLog(logname,&log_filter,&log_group,&log_schedcode,
|
|
&log_clipboard,&newlogs,this);
|
|
if(log->exec()) {
|
|
log_log_model->refresh(row);
|
|
}
|
|
UnlockList();
|
|
delete log;
|
|
}
|
|
|
|
|
|
void MainWidget::deleteData()
|
|
{
|
|
QString filename;
|
|
QString str1;
|
|
QString str2;
|
|
unsigned tracks=0;
|
|
|
|
if(rda->user()->deleteLog()) {
|
|
QModelIndexList rows=log_log_view->selectionModel()->selectedRows();
|
|
for(int i=0;i<rows.size();i++) {
|
|
RDLog *log=new RDLog(log_log_model->logName(rows.at(i)));
|
|
tracks+=log->completedTracks();
|
|
delete log;
|
|
}
|
|
if(rows.size()==1) {
|
|
if(QMessageBox::question(this,"RDLogEdit - "+tr("Delete Log"),
|
|
tr("Are you sure you want to delete the")+" \""+
|
|
log_log_model->logName(rows.at(0))+"\" "+
|
|
tr("log?"),QMessageBox::Yes,QMessageBox::No)!=
|
|
QMessageBox::Yes) {
|
|
return;
|
|
}
|
|
if(tracks>0) {
|
|
if(QMessageBox::question(this,"RDLogEdit - "+tr("Tracks Exist"),
|
|
tr("This will also delete the")+
|
|
QString::asprintf(" %u ",tracks)+
|
|
tr("voice tracks associated with this log.")+
|
|
"\n"+tr("Continue?"),
|
|
QMessageBox::Yes,QMessageBox::No)!=
|
|
QMessageBox::Yes) {
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if(QMessageBox::question(this,"RDLogEdit - "+tr("Delete Log"),
|
|
tr("Are you sure you want to delete these")+
|
|
QString::asprintf(" %d ",rows.size())+
|
|
tr("logs?"),QMessageBox::Yes,QMessageBox::No)!=
|
|
QMessageBox::Yes) {
|
|
return;
|
|
}
|
|
if(tracks>0) {
|
|
if(QMessageBox::question(this,"RDLogEdit - "+tr("Tracks Exist"),
|
|
tr("This will also delete the")+
|
|
QString::asprintf(" %u ",tracks)+
|
|
tr("voice tracks associated with these logs.")+
|
|
"\n"+tr("Continue?"),
|
|
QMessageBox::Yes,QMessageBox::No)!=
|
|
QMessageBox::Yes) {
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
// Sort selected rows in decreasing order
|
|
//
|
|
QList<int> rowtable;
|
|
for(int i=0;i<rows.size();i++) {
|
|
rowtable.push_back(i);
|
|
}
|
|
bool modified;
|
|
do {
|
|
modified=false;
|
|
for(int i=0;i<(rows.size()-1);i++) {
|
|
if(rows.at(rowtable.at(i))<rows.at(rowtable.at(i+1))) {
|
|
rowtable.swap(i,i+1);
|
|
modified=true;
|
|
}
|
|
}
|
|
} while(modified);
|
|
|
|
//
|
|
// Do it!
|
|
//
|
|
LockList();
|
|
for(int i=0;i<rows.size();i++) {
|
|
QString username;
|
|
QString stationname;
|
|
QHostAddress addr;
|
|
QModelIndex row=rows.at(rowtable.at(i));
|
|
RDLogLock *log_lock=
|
|
new RDLogLock(log_log_model->logName(row),rda->user(),
|
|
rda->station(),this);
|
|
if(log_lock->tryLock(&username,&stationname,&addr)) {
|
|
RDLog *log=new RDLog(log_log_model->logName(row));
|
|
if(log->remove(rda->station(),rda->user(),rda->config())) {
|
|
SendNotification(RDNotification::DeleteAction,log->name());
|
|
log_log_model->removeLog(row);
|
|
}
|
|
else {
|
|
QMessageBox::warning(this,"RDLogEdit - "+tr("Error"),
|
|
tr("Unable to delete log")+" \""+
|
|
log_log_model->logName(row)+"\", "+
|
|
tr("audio deletion error!"));
|
|
}
|
|
delete log;
|
|
}
|
|
else {
|
|
QString msg=
|
|
tr("Log")+" "+log_log_model->logName(row)+"\" "+
|
|
tr("is in use by")+" "+username+"@"+stationname;
|
|
if(stationname!=addr.toString()) {
|
|
msg+=" ["+addr.toString()+"]";
|
|
}
|
|
QMessageBox::warning(this,"RDLogEdit - "+tr("Error"),msg);
|
|
}
|
|
delete log_lock;
|
|
}
|
|
UnlockList();
|
|
}
|
|
}
|
|
|
|
|
|
void MainWidget::trackData()
|
|
{
|
|
QModelIndex row=SingleSelectedRow();
|
|
|
|
if(!row.isValid()) {
|
|
return;
|
|
}
|
|
LockList();
|
|
log_tracker_dialog->exec(log_log_model->logName(row));
|
|
log_log_model->refresh(row);
|
|
UnlockList();
|
|
}
|
|
|
|
/*
|
|
void MainWidget::trackData()
|
|
{
|
|
QModelIndex row=SingleSelectedRow();
|
|
|
|
if(!row.isValid()) {
|
|
return;
|
|
}
|
|
LockList();
|
|
VoiceTracker *dialog=
|
|
new VoiceTracker(log_log_model->logName(row),&log_import_path);
|
|
dialog->exec();
|
|
delete dialog;
|
|
log_log_model->refresh(row);
|
|
UnlockList();
|
|
}
|
|
*/
|
|
|
|
void MainWidget::reportData()
|
|
{
|
|
QString report;
|
|
QString sql;
|
|
RDSqlQuery *q;
|
|
|
|
//
|
|
// Generate Header
|
|
//
|
|
report=RDReport::center("Rivendell Log Listing",135)+"\n";
|
|
report+=QString("Generated: ")+QDateTime::currentDateTime().toString("MM/dd/yyyy - hh:mm:ss")+"\n";
|
|
report+="\n";
|
|
report+="Rdy -Log Name-------------------- -Description----------------- -Service------------ Mus Tfc Tracks- Start Date- -End Date-- -Mod Date--\n";
|
|
|
|
//
|
|
// Report Body
|
|
//
|
|
sql=QString("select ")+
|
|
"`NAME`,"+ // 00
|
|
"`DESCRIPTION`,"+ // 01
|
|
"`SERVICE`,"+ // 02
|
|
"`MUSIC_LINKS`,"+ // 03
|
|
"`MUSIC_LINKED`,"+ // 04
|
|
"`TRAFFIC_LINKS`,"+ // 05
|
|
"`TRAFFIC_LINKED`,"+ // 06
|
|
"`COMPLETED_TRACKS`,"+ // 07
|
|
"`SCHEDULED_TRACKS`,"+ // 08
|
|
"`START_DATE`,"+ // 09
|
|
"`END_DATE`,"+ // 10
|
|
"`MODIFIED_DATETIME` "+ // 11
|
|
"from `LOGS` order by `NAME` ";
|
|
q=new RDSqlQuery(sql);
|
|
while(q->next()) {
|
|
//
|
|
// Summary Status
|
|
//
|
|
if(((q->value(3).toInt()==0)||(q->value(4).toString()=="Y"))&&
|
|
((q->value(5).toInt()==0)||(q->value(6).toString()=="Y"))&&
|
|
(q->value(7).toUInt()==q->value(8).toUInt())) {
|
|
report+=" Y ";
|
|
}
|
|
else {
|
|
report+=" N ";
|
|
}
|
|
|
|
//
|
|
// Log Name
|
|
//
|
|
report+=RDReport::leftJustify(q->value(0).toString(),29)+" ";
|
|
|
|
//
|
|
// Description
|
|
//
|
|
report+=RDReport::leftJustify(q->value(1).toString(),29)+" ";
|
|
|
|
//
|
|
// Service
|
|
//
|
|
report+=RDReport::leftJustify(q->value(2).toString(),20)+" ";
|
|
|
|
//
|
|
// Music Linked
|
|
//
|
|
if(q->value(3).toInt()>0) {
|
|
report+=QString(" ")+q->value(4).toString()+" ";
|
|
}
|
|
else {
|
|
report+="n/a ";
|
|
}
|
|
|
|
//
|
|
// Traffic Linked
|
|
//
|
|
if(q->value(5).toInt()>0) {
|
|
report+=QString(" ")+q->value(6).toString()+" ";
|
|
}
|
|
else {
|
|
report+="n/a ";
|
|
}
|
|
|
|
//
|
|
// Voice Tracks
|
|
//
|
|
report+=
|
|
QString::asprintf("%3u/%-3u ",q->value(7).toUInt(),q->value(8).toUInt());
|
|
|
|
//
|
|
// Start Date
|
|
//
|
|
if(q->value(9).toDate().isNull()) {
|
|
report+="[none] ";
|
|
}
|
|
else {
|
|
report+=RDReport::leftJustify(rda->shortDateString(q->value(9).toDate())+" ",12);
|
|
}
|
|
|
|
//
|
|
// End Date
|
|
//
|
|
if(q->value(10).toDate().isNull()) {
|
|
report+="[none] ";
|
|
}
|
|
else {
|
|
report+=RDReport::leftJustify(rda->shortDateString(q->value(10).toDate())+" ",12);
|
|
}
|
|
|
|
//
|
|
// Last Modified Date
|
|
//
|
|
report+=rda->shortDateString(q->value(11).toDate());
|
|
|
|
//
|
|
// End of Line
|
|
//
|
|
report+="\n";
|
|
}
|
|
delete q;
|
|
|
|
RDTextFile(report);
|
|
}
|
|
|
|
|
|
void MainWidget::filterChangedData(const QString &str)
|
|
{
|
|
// RefreshList();
|
|
}
|
|
|
|
|
|
void MainWidget::selectionChangedData(const QItemSelection &selected,
|
|
const QItemSelection &deselected)
|
|
{
|
|
int count=log_log_view->selectionModel()->selectedRows().size();
|
|
|
|
log_edit_button->setEnabled(count==1);
|
|
log_delete_button->setEnabled(count>0&&rda->user()->deleteLog());
|
|
log_track_button->setEnabled(rda->system()->allowDuplicateCartTitles()&&
|
|
(count==1)&&rda->user()->voicetrackLog());
|
|
}
|
|
|
|
|
|
void MainWidget::doubleClickedData(const QModelIndex &index)
|
|
{
|
|
editData();
|
|
}
|
|
|
|
|
|
void MainWidget::notificationReceivedData(RDNotification *notify)
|
|
{
|
|
if(notify->type()==RDNotification::LogType) {
|
|
QString logname=notify->id().toString();
|
|
switch(notify->action()) {
|
|
case RDNotification::AddAction:
|
|
log_log_model->addLog(logname);
|
|
break;
|
|
|
|
case RDNotification::ModifyAction:
|
|
log_log_model->refresh(logname);
|
|
break;
|
|
|
|
case RDNotification::DeleteAction:
|
|
if(log_list_locked) {
|
|
log_deleted_logs.push_back(logname);
|
|
}
|
|
else {
|
|
log_log_model->removeLog(logname);
|
|
}
|
|
break;
|
|
|
|
case RDNotification::NoAction:
|
|
case RDNotification::LastAction:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void MainWidget::quitMainWidget()
|
|
{
|
|
saveSettings();
|
|
exit(0);
|
|
}
|
|
|
|
|
|
void MainWidget::closeEvent(QCloseEvent *e)
|
|
{
|
|
quitMainWidget();
|
|
}
|
|
|
|
|
|
void MainWidget::resizeEvent(QResizeEvent *e)
|
|
{
|
|
if((log_log_view==NULL)||(!log_resize)) {
|
|
return;
|
|
}
|
|
log_filter_widget->setGeometry(10,10,size().width()-10,
|
|
log_filter_widget->sizeHint().height());
|
|
|
|
log_log_view->setGeometry(10,log_filter_widget->sizeHint().height(),
|
|
size().width()-20,size().height()-
|
|
log_filter_widget->sizeHint().height()-65);
|
|
log_add_button->setGeometry(10,size().height()-55,80,50);
|
|
log_edit_button->setGeometry(100,size().height()-55,80,50);
|
|
log_delete_button->setGeometry(190,size().height()-55,80,50);
|
|
log_track_button->setGeometry(300,size().height()-55,80,50);
|
|
log_report_button->setGeometry(400,size().height()-55,80,50);
|
|
log_close_button->setGeometry(size().width()-90,size().height()-55,80,50);
|
|
}
|
|
|
|
|
|
void MainWidget::SendNotification(RDNotification::Action action,
|
|
const QString &logname)
|
|
{
|
|
RDNotification *notify=new RDNotification(RDNotification::LogType,action,
|
|
QVariant(logname));
|
|
rda->ripc()->sendNotification(*notify);
|
|
delete notify;
|
|
}
|
|
|
|
|
|
void MainWidget::LockList()
|
|
{
|
|
log_list_locked=true;
|
|
}
|
|
|
|
|
|
void MainWidget::UnlockList()
|
|
{
|
|
for(int i=0;i<log_deleted_logs.size();i++) {
|
|
log_log_model->removeLog(log_deleted_logs.at(i));
|
|
}
|
|
log_deleted_logs.clear();
|
|
log_list_locked=false;
|
|
}
|
|
|
|
|
|
QModelIndex MainWidget::SingleSelectedRow() const
|
|
{
|
|
if(log_log_view->selectionModel()->selectedRows().size()!=1) {
|
|
return QModelIndex();
|
|
}
|
|
return log_log_view->selectionModel()->selectedRows().at(0);
|
|
}
|
|
|
|
|
|
int main(int argc,char *argv[])
|
|
{
|
|
QApplication::setStyle(RD_GUI_STYLE);
|
|
QApplication a(argc,argv);
|
|
|
|
//
|
|
// Load Translations
|
|
//
|
|
QString tr_path;
|
|
QString qt_path;
|
|
|
|
QString loc=RDApplication::locale();
|
|
if(!loc.isEmpty()) {
|
|
tr_path=QString(PREFIX)+QString("/share/rivendell/");
|
|
qt_path=QString("/usr/share/qt4/translation/");
|
|
|
|
QTranslator qt(0);
|
|
qt.load(qt_path+QString("qt_")+loc,".");
|
|
a.installTranslator(&qt);
|
|
|
|
QTranslator rd(0);
|
|
rd.load(tr_path+QString("librd_")+loc,".");
|
|
a.installTranslator(&rd);
|
|
|
|
QTranslator rdhpi(0);
|
|
rdhpi.load(tr_path+QString("librdhpi_")+loc,".");
|
|
a.installTranslator(&rdhpi);
|
|
|
|
QTranslator tr(0);
|
|
tr.load(tr_path+QString("rdlogedit_")+loc,".");
|
|
a.installTranslator(&tr);
|
|
}
|
|
|
|
//
|
|
// Start Event Loop
|
|
//
|
|
RDConfig *config=new RDConfig();
|
|
config->load();
|
|
MainWidget *w=new MainWidget(config);
|
|
w->show();
|
|
return a.exec();
|
|
}
|