int QDesktopViewWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QListWidget::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: iconClicked((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; case 1: layoutDirection(); break; case 2: populatedDesktop(); break; case 3: resizeIcons(); break; case 4: createFolder(); break; case 5: createLauncher(); break; case 6: createEmptyFile(); break; case 7: showDesktopIcons(); break; case 8: execDesktopSettings(); break; default: ; } _id -= 9; } return _id; }
static TrkLauncherPtr parseArguments(const QStringList &arguments, bool *bluetooth) { enum Mode { Ping, RemoteLaunch, Install, CustomInstall, Copy, Download }; // Parse away options Mode mode = Ping; bool serialFrame = true; const int argCount = arguments.size(); int verbosity = 1; *bluetooth = false; QStringList remoteArguments; trk::Launcher::Actions actions = trk::Launcher::ActionPingOnly; int a = 1; for ( ; a < argCount; a++) { const QString option = arguments.at(a); if (!option.startsWith(QLatin1Char('-'))) break; if (option.size() != 2) return TrkLauncherPtr(); switch (option.at(1).toAscii()) { case 'v': verbosity++; break; case 'q': verbosity = 0; break; case 'f': serialFrame = false; break; case 'b': *bluetooth = true; break; case 'i': mode = Install; actions = trk::Launcher::ActionInstall; break; case 'I': mode = CustomInstall; actions = trk::Launcher::ActionCopyInstall; break; case 'c': mode = Copy; actions = trk::Launcher::ActionCopy; break; case 'C': mode = Download; actions = trk::Launcher::ActionDownload; break; default: return TrkLauncherPtr(); } } // Parse for '--' delimiter for remote executable argunment int pastArguments = a; for ( ; pastArguments < argCount && arguments.at(pastArguments) != QLatin1String("--"); pastArguments++) ; if (pastArguments != argCount) for (int ra = pastArguments + 1; ra < argCount; ra++) remoteArguments.push_back(arguments.at(ra)); // Evaluate arguments const int remainingArgsCount = pastArguments -a ; // Ping and launch are only distinguishable by argument counts if (mode == Ping && remainingArgsCount > 1) mode = RemoteLaunch; switch (mode) { case Ping: if (remainingArgsCount == 1) return createLauncher(actions, arguments.at(a), serialFrame, verbosity); break; case RemoteLaunch: if (remainingArgsCount == 2) { // remote exec TrkLauncherPtr launcher = createLauncher(actions, arguments.at(a), serialFrame, verbosity); launcher->addStartupActions(trk::Launcher::ActionRun); launcher->setFileName(arguments.at(a + 1)); launcher->setCommandLineArgs(remoteArguments.join(" ")); return launcher; } break; case Install: if (remainingArgsCount == 3 || remainingArgsCount == 2) { TrkLauncherPtr launcher = createLauncher(actions, arguments.at(a), serialFrame, verbosity); launcher->setInstallFileNames(QStringList() << arguments.at(a + 1)); if (remainingArgsCount == 3) { launcher->addStartupActions(trk::Launcher::ActionRun); launcher->setFileName(arguments.at(a + 2)); launcher->setCommandLineArgs(remoteArguments.join(" ")); } return launcher; } break; case CustomInstall: if (remainingArgsCount == 4 || remainingArgsCount == 3) { TrkLauncherPtr launcher = createLauncher(actions, arguments.at(a), serialFrame, verbosity); launcher->setCopyFileNames(QStringList() << arguments.at(a + 1), QStringList() << arguments.at(a + 2)); launcher->setInstallFileNames(QStringList() << arguments.at(a + 2)); if (remainingArgsCount == 4) { launcher->addStartupActions(trk::Launcher::ActionRun); launcher->setFileName(arguments.at(a + 3)); launcher->setCommandLineArgs(remoteArguments.join(" ")); } return launcher; } break; case Copy: if (remainingArgsCount == 3) { TrkLauncherPtr launcher = createLauncher(actions, arguments.at(a), serialFrame, verbosity); launcher->setCopyFileNames(QStringList() << arguments.at(a + 1), QStringList() << arguments.at(a + 2)); return launcher; } break; case Download: if (remainingArgsCount == 3) { TrkLauncherPtr launcher = createLauncher(actions, arguments.at(a), serialFrame, verbosity); launcher->setDownloadFileName(arguments.at(a + 1), arguments.at(a + 2)); return launcher; } break; } return TrkLauncherPtr(); }