Clean unused code to handle dbus

This commit is contained in:
2014-11-25 23:53:26 +00:00
parent 9d8724fc00
commit d5ab0db12b
4 changed files with 4 additions and 232 deletions
-1
View File
@@ -16,7 +16,6 @@ set(plaYUver_App_SRCS
GridManager.cpp
Settings.cpp
PlaYUVerAppAdaptor.cpp
RunningInstanceInfo.cpp
# Dialogs
AboutDialog.cpp
ConfigureFormatDialog.cpp
-83
View File
@@ -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
-100
View File
@@ -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
View File
@@ -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);