Clean unused code to handle dbus
This commit is contained in:
@@ -16,7 +16,6 @@ set(plaYUver_App_SRCS
|
||||
GridManager.cpp
|
||||
Settings.cpp
|
||||
PlaYUVerAppAdaptor.cpp
|
||||
RunningInstanceInfo.cpp
|
||||
# Dialogs
|
||||
AboutDialog.cpp
|
||||
ConfigureFormatDialog.cpp
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
/* This file is a part of plaYUVer project
|
||||
* Copyright (C) 2014 by Luis Lucas (luisfrlucas@gmail.com)
|
||||
* Joao Carreira (jfmcarreira@gmail.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* 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.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file RunningInstanceInfo.cpp
|
||||
* \brief Control running instances
|
||||
*/
|
||||
|
||||
#include "RunningInstanceInfo.h"
|
||||
#include <QDBusReply>
|
||||
#include <QStringList>
|
||||
#include <QCoreApplication>
|
||||
#include <QDBusConnectionInterface>
|
||||
#include <QDebug>
|
||||
|
||||
namespace plaYUVer
|
||||
{
|
||||
|
||||
int RunningInstanceInfo::dummy_session = 0;
|
||||
|
||||
bool fillinRunningAppInstances(RunningInstanceInfoMap *map)
|
||||
{
|
||||
QDBusConnectionInterface *i = QDBusConnection::sessionBus().interface();
|
||||
|
||||
// look up all running kate instances and there sessions
|
||||
QDBusReply<QStringList> servicesReply = i->registeredServiceNames();
|
||||
QStringList services;
|
||||
if (servicesReply.isValid()) {
|
||||
services = servicesReply.value();
|
||||
}
|
||||
|
||||
QString serviceName;
|
||||
|
||||
QString my_pid = QString::number(QCoreApplication::applicationPid());
|
||||
|
||||
foreach(const QString & s, services) {
|
||||
if (s.startsWith(QStringLiteral("org.pixlra.PlaYUVer"))) {
|
||||
if (s.contains(my_pid)) {
|
||||
continue;
|
||||
}
|
||||
qDebug() << s ;
|
||||
RunningInstanceInfo *rii = new RunningInstanceInfo(s);
|
||||
if (rii->valid) {
|
||||
if (map->contains(rii->sessionName)) {
|
||||
return false; //ERROR no two instances may have the same session name
|
||||
}
|
||||
map->insert(rii->sessionName, rii);
|
||||
//std::cerr<<qPrintable(s)<<"running instance:"<< rii->sessionName.toUtf8().data()<<std::endl;
|
||||
} else {
|
||||
delete rii;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void cleanupRunningAppInstanceMap(RunningInstanceInfoMap *map)
|
||||
{
|
||||
for (RunningInstanceInfoMap::const_iterator it = map->constBegin(); it != map->constEnd(); ++it) {
|
||||
delete it.value();
|
||||
}
|
||||
map->clear();
|
||||
}
|
||||
|
||||
} // NAMESPACE
|
||||
|
||||
|
||||
@@ -1,100 +0,0 @@
|
||||
/* This file is a part of plaYUVer project
|
||||
* Copyright (C) 2014 by Luis Lucas (luisfrlucas@gmail.com)
|
||||
* Joao Carreira (jfmcarreira@gmail.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* 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.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file RunningInstanceInfo.h
|
||||
* \brief Control running instances
|
||||
*/
|
||||
|
||||
#ifndef _PLAYUVER_RUNNING_INSTANCE_INFO_
|
||||
#define _PLAYUVER_RUNNING_INSTANCE_INFO_
|
||||
|
||||
#include <iostream>
|
||||
#include <QMap>
|
||||
#include <QDBusInterface>
|
||||
#include <QDBusConnection>
|
||||
#include <QVariant>
|
||||
#include "lib/PlaYUVerDefs.h"
|
||||
#include "PlaYUVerAppAdaptor.h"
|
||||
|
||||
namespace plaYUVer
|
||||
{
|
||||
|
||||
class RunningInstanceInfo: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
RunningInstanceInfo( const QString &serviceName_ ) :
|
||||
QObject(),
|
||||
valid( false ),
|
||||
serviceName( serviceName_ ),
|
||||
dbus_if( new QDBusInterface( serviceName_, QStringLiteral( PLAYUVER_DBUS_PATH ), QString(), //I don't know why it does not work if I specify org.pixlra.PlaYUVer.application here
|
||||
QDBusConnection::sessionBus(), this ) )
|
||||
{
|
||||
if( !dbus_if->isValid() )
|
||||
{
|
||||
std::cerr << qPrintable( QDBusConnection::sessionBus().lastError().message() )
|
||||
<< std::endl;
|
||||
}
|
||||
// QVariant a_s = dbus_if->property( "activeSession" );
|
||||
// std::cerr<<a_s.isValid()<<std::endl;
|
||||
// std::cerr<<"property:"<<qPrintable(a_s.toString())<<std::endl;
|
||||
// std::cerr<<qPrintable(QDBusConnection::sessionBus().lastError().message())<<std::endl;
|
||||
// if( !a_s.isValid() )
|
||||
// {
|
||||
// sessionName = QString::fromLatin1( "___NO_SESSION_OPENED__%1" ).arg( dummy_session++ );
|
||||
// valid = false;
|
||||
// }
|
||||
// else
|
||||
{
|
||||
// if( a_s.toString().isEmpty() )
|
||||
// {
|
||||
sessionName = QString::fromLatin1( "___DEFAULT_CONSTRUCTED_SESSION__%1" ).arg( dummy_session++ );
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// sessionName = a_s.toString();
|
||||
// }
|
||||
valid = true;
|
||||
}
|
||||
}
|
||||
;
|
||||
virtual ~RunningInstanceInfo()
|
||||
{
|
||||
delete dbus_if;
|
||||
}
|
||||
Bool valid;
|
||||
const QString serviceName;
|
||||
QDBusInterface *dbus_if;
|
||||
QString sessionName;
|
||||
|
||||
private:
|
||||
static Int dummy_session;
|
||||
};
|
||||
|
||||
typedef QMap<QString, RunningInstanceInfo *> RunningInstanceInfoMap;
|
||||
|
||||
Q_DECL_EXPORT bool fillinRunningAppInstances( RunningInstanceInfoMap *map );
|
||||
Q_DECL_EXPORT void cleanupRunningAppInstanceMap( RunningInstanceInfoMap *map );
|
||||
|
||||
} // NAMESPACE
|
||||
|
||||
#endif // _PLAYUVER_RUNNING_INSTANCE_INFO_
|
||||
|
||||
+4
-48
@@ -30,7 +30,6 @@
|
||||
#include <QDBusMessage>
|
||||
#include <QDBusReply>
|
||||
#include "PlaYUVerAppAdaptor.h"
|
||||
#include "RunningInstanceInfo.h"
|
||||
#include "plaYUVerApp.h"
|
||||
#include "SubWindowHandle.h"
|
||||
#ifdef USE_FERVOR
|
||||
@@ -61,42 +60,9 @@ int main( int argc, char *argv[] )
|
||||
QDBusConnectionInterface * const sessionBusInterface = QDBusConnection::sessionBus().interface();
|
||||
if( sessionBusInterface )
|
||||
{
|
||||
RunningInstanceInfoMap mapSessionRii;
|
||||
if( !fillinRunningAppInstances( &mapSessionRii ) )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
QStringList playuverServices;
|
||||
for( RunningInstanceInfoMap::const_iterator it = mapSessionRii.constBegin(); it != mapSessionRii.constEnd(); ++it )
|
||||
{
|
||||
playuverServices << ( *it )->serviceName;
|
||||
}
|
||||
QString serviceName;
|
||||
|
||||
//const QStringList urls = parser.positionalArguments();
|
||||
|
||||
Bool force_new = false;
|
||||
|
||||
//cleanup map
|
||||
cleanupRunningAppInstanceMap( &mapSessionRii );
|
||||
|
||||
//if no new instance is forced and no already opened session is requested,
|
||||
//check if a pid is given, which should be reused.
|
||||
// two possibilities: pid given or not...
|
||||
// if( ( !force_new ) && serviceName.isEmpty() )
|
||||
// {
|
||||
// if( /*( parser.isSet( usePidOption ) )*/|| ( !qgetenv( "PLAYUVER_PID" ).isEmpty() ) )
|
||||
// {
|
||||
// QString usePid = ( parser.isSet( usePidOption ) ) ? parser.value( usePidOption ) : QString::fromLocal8Bit( qgetenv( "KATE_PID" ) );
|
||||
//
|
||||
// serviceName = QStringLiteral("org.kde.kate-")+ usePid;
|
||||
// if( !playuverServices.contains( serviceName ) )
|
||||
// {
|
||||
// serviceName.clear();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
QStringList filenameList;
|
||||
for( Int i = 1; i < argc; i++ )
|
||||
{
|
||||
@@ -107,26 +73,18 @@ int main( int argc, char *argv[] )
|
||||
force_new = true;
|
||||
}
|
||||
|
||||
if( ( !force_new ) && ( serviceName.isEmpty() ) )
|
||||
{
|
||||
if( playuverServices.count() > 0 )
|
||||
{
|
||||
serviceName = playuverServices[0];
|
||||
}
|
||||
}
|
||||
|
||||
//check again if service is still running
|
||||
bool foundRunningService = false;
|
||||
if( !serviceName.isEmpty() )
|
||||
if( !force_new )
|
||||
{
|
||||
QDBusReply<bool> there = sessionBusInterface->isServiceRegistered( serviceName );
|
||||
QDBusReply<bool> there = sessionBusInterface->isServiceRegistered( PLAYUVER_DBUS_SESSION_NAME );
|
||||
foundRunningService = there.isValid() && there.value();
|
||||
}
|
||||
|
||||
if( foundRunningService )
|
||||
{
|
||||
// open given session
|
||||
QDBusMessage m = QDBusMessage::createMethodCall( serviceName, QStringLiteral( PLAYUVER_DBUS_PATH ), QStringLiteral( PLAYUVER_DBUS_SESSION_NAME ),
|
||||
QDBusMessage m = QDBusMessage::createMethodCall( PLAYUVER_DBUS_SESSION_NAME, QStringLiteral( PLAYUVER_DBUS_PATH ), QStringLiteral( PLAYUVER_DBUS_SESSION_NAME ),
|
||||
QStringLiteral( "activate" ) );
|
||||
|
||||
QDBusConnection::sessionBus().call( m );
|
||||
@@ -138,13 +96,11 @@ int main( int argc, char *argv[] )
|
||||
|
||||
// open given files...
|
||||
foreach(const QString & file, filenameList){
|
||||
QDBusMessage m = QDBusMessage::createMethodCall(serviceName,
|
||||
QDBusMessage m = QDBusMessage::createMethodCall(PLAYUVER_DBUS_SESSION_NAME,
|
||||
QStringLiteral(PLAYUVER_DBUS_PATH), QStringLiteral(PLAYUVER_DBUS_SESSION_NAME), QStringLiteral("loadFile"));
|
||||
|
||||
QList<QVariant> dbusargs;
|
||||
|
||||
dbusargs.append( file );
|
||||
|
||||
m.setArguments(dbusargs);
|
||||
|
||||
QDBusMessage res = QDBusConnection::sessionBus().call(m);
|
||||
|
||||
Reference in New Issue
Block a user