> On Nov. 13, 2013, 1:33 p.m., David Faure wrote: > > tier1/kdbusaddons/src/kdbusservice.h, line 172 > > <http://git.reviewboard.kde.org/r/113830/diff/1/?file=213291#file213291line172> > > > > When is this emitted, then? Only if the dbus-based app launcher calls > > Activate? > > > > Maybe launching the app with no cmdline arguments should call Activate > > instead of CommandLine, to keep things simple for apps that don't take > > cmdline args? > > Launching the app with no args really does mean "activate". > > > > For apps that do handle cmdline args, they'll need to implement both > > anyway, whichever solution we choose, in order to follow the spec. > > > > So actually that's another reason for calling Activate if no args: > > otherwise app developers won't see the point in implementing > > activateRequested, since in their tests it will never be called, only the > > gnome app launcher (and one day the kde app launcher, presumably) calls > > that. > > > > Overall, I'm not sure what's the best solution, I'm open to suggestions. > > Alex Merry wrote: > I see your point, but at the same time, it makes less logical sense that > way. Besides which, the activation stuff requires setting stuff in the > desktop file anyway, so the application developer has to at least put *some* > thought into it. > > Perhaps a flag? Say, DiscardCommandLineArguments or something, that > basically says "I don't deal with command-line arguments, so use > activateRequested instead of applicationExecuted"? > > Alex Merry wrote: > Another option is to just merge the activateRequested() and > applicationStarted(QStringList) signals into a single > activateRequested(QStringList) signal that is passed an empty list if it is > triggered by the D-Bus Activate call. > > This still leaves the fact that it will have to deal with the > command-line equivalents of the Open and ActivateAction D-Bus calls, so I > feel it is a conceptually inferior option, even if it typically allows > slightly less application code. > > Alex Merry wrote: > Also, > connect(&service, SIGNAL(applicationStarted(QStringList)), &service, > SIGNAL(activateRequested())) > is a single line of code.
I like the idea of activateRequested(QStringList). It's also closer to our current kde4 code (MyUniqueApplication::newInstance(), which then calls KCmdLineArgs::parsedArgs() to parse the args). It makes me wonder why the spec doesn't just have that, then... well I because it was written with gui app launchers in mind, the command-line case is an additional feature. Apps have to deal with the command-line equivalent of Open in any case - which is usually "passing urls on the command line", I don't see how merging two signals changes that. Same for actions (e.g. kmail --compose). All of this is exactly what newInstance() currently deals with, and what apps would have to do in their slotActivateRequested(). > On Nov. 13, 2013, 1:33 p.m., David Faure wrote: > > tier1/kdbusaddons/src/kdbusservice.cpp, line 185 > > <http://git.reviewboard.kde.org/r/113830/diff/1/?file=213292#file213292line185> > > > > Hmm, the problem with a signal is that we can't get a return value, to > > return something on errors (e.g. invalid argument) rather than 0.... > > > > It seems to me that we need an interface (in the C++ sense) that an > > object in the app would inherit from, with a virtual method int > > handleCommandLine(...). The app would set the instance of that interface in > > the KDBusService. > > > > Or just deriving from KDBusService, but I think a separate interface is > > cleaner - at least, too many years of virtuals in QApplication itself have > > shown various problems (too much of a monolithic design, for some apps). > > Alex Merry wrote: > The other possibility I thought of was a "setExitValue" (or some similar > name) method in KDBusService that the slot could call if it wanted to. Which > is more ugly, but possibly easier on the application implentations. True. This might be good enough. - David ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://git.reviewboard.kde.org/r/113830/#review43586 ----------------------------------------------------------- On Nov. 13, 2013, 1:52 p.m., Alex Merry wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > http://git.reviewboard.kde.org/r/113830/ > ----------------------------------------------------------- > > (Updated Nov. 13, 2013, 1:52 p.m.) > > > Review request for KDE Frameworks and David Faure. > > > Repository: kdelibs > > > Description > ------- > > Allow unique apps to access command-line arguments of later invocations > > > Diffs > ----- > > tier1/kdbusaddons/autotests/kdbusservicetest.cpp 5eecb5e > tier1/kdbusaddons/src/CMakeLists.txt 0509015 > tier1/kdbusaddons/src/kdbusservice.h bf79e22 > tier1/kdbusaddons/src/kdbusservice.cpp b773c80 > tier1/kdbusaddons/src/org.freedesktop.Application.xml 16934e2 > tier1/kdbusaddons/src/org.kde.KDBusService.xml PRE-CREATION > > Diff: http://git.reviewboard.kde.org/r/113830/diff/ > > > Testing > ------- > > Builds, test passes. > > > Thanks, > > Alex Merry > >
_______________________________________________ Kde-frameworks-devel mailing list Kde-frameworks-devel@kde.org https://mail.kde.org/mailman/listinfo/kde-frameworks-devel