21#include <QCoreApplication>
22#include <QCommandLineParser>
36void CommandLineOptions::parseActions()
39 QCommandLineOption authorsOption(QStringList({
QSL(
"a"),
QSL(
"authors")}));
40 authorsOption.setDescription(
QSL(
"Displays author information."));
42 QCommandLineOption profileOption(QStringList({
QSL(
"p"),
QSL(
"profile")}));
43 profileOption.setValueName(
QSL(
"profileName"));
44 profileOption.setDescription(
QSL(
"Starts with specified profile."));
46 QCommandLineOption noExtensionsOption(QStringList({
QSL(
"e"),
QSL(
"no-extensions")}));
47 noExtensionsOption.setDescription(
QSL(
"Starts without extensions."));
49 QCommandLineOption privateBrowsingOption(QStringList({
QSL(
"i"),
QSL(
"private-browsing")}));
50 privateBrowsingOption.setDescription(
QSL(
"Starts private browsing."));
52 QCommandLineOption portableOption(QStringList({
QSL(
"o"),
QSL(
"portable")}));
53 portableOption.setDescription(
QSL(
"Starts in portable mode."));
55 QCommandLineOption noRemoteOption(QStringList({
QSL(
"r"),
QSL(
"no-remote")}));
56 noRemoteOption.setDescription(
QSL(
"Starts new browser instance."));
58 QCommandLineOption newTabOption(QStringList({
QSL(
"t"),
QSL(
"new-tab")}));
59 newTabOption.setDescription(
QSL(
"Opens new tab."));
61 QCommandLineOption newWindowOption(QStringList({
QSL(
"w"),
QSL(
"new-window")}));
62 newWindowOption.setDescription(
QSL(
"Opens new window."));
64 QCommandLineOption downloadManagerOption(QStringList({
QSL(
"d"),
QSL(
"download-manager")}));
65 downloadManagerOption.setDescription(
QSL(
"Opens download manager."));
67 QCommandLineOption currentTabOption(QStringList({
QSL(
"c"),
QSL(
"current-tab")}));
68 currentTabOption.setValueName(
QSL(
"URL"));
69 currentTabOption.setDescription(
QSL(
"Opens URL in current tab."));
71 QCommandLineOption openWindowOption(QStringList({
QSL(
"u"),
QSL(
"open-window")}));
72 openWindowOption.setValueName(
QSL(
"URL"));
73 openWindowOption.setDescription(
QSL(
"Opens URL in new window."));
75 QCommandLineOption fullscreenOption(QStringList({
QSL(
"f"),
QSL(
"fullscreen")}));
76 fullscreenOption.setDescription(
QSL(
"Toggles fullscreen."));
78 QCommandLineOption wmclassOption(QStringList({
QSL(
"wmclass")}));
79 wmclassOption.setValueName(
QSL(
"WM_CLASS"));
80 wmclassOption.setDescription(
QSL(
"Application class (X11 only)."));
83 QCommandLineParser parser;
84 parser.setApplicationDescription(
QSL(
"QtWebEngine based browser"));
85 QCommandLineOption helpOption = parser.addHelpOption();
86 QCommandLineOption versionOption = parser.addVersionOption();
87 parser.addOption(authorsOption);
88 parser.addOption(profileOption);
89 parser.addOption(noExtensionsOption);
90 parser.addOption(privateBrowsingOption);
91 parser.addOption(portableOption);
92 parser.addOption(noRemoteOption);
93 parser.addOption(newTabOption);
94 parser.addOption(newWindowOption);
95 parser.addOption(downloadManagerOption);
96 parser.addOption(currentTabOption);
97 parser.addOption(openWindowOption);
98 parser.addOption(fullscreenOption);
99 parser.addOption(wmclassOption);
100 parser.addPositionalArgument(
QSL(
"URL"),
QSL(
"URLs to open"),
QSL(
"[URL...]"));
103 parser.parse(QCoreApplication::arguments());
105 if (parser.isSet(helpOption)) {
109 if (parser.isSet(
QSL(
"help-all"))) {
110 parser.process({
QSL(
"falkon"),
QSL(
"--help-all")});
113 if (parser.isSet(versionOption)) {
114 parser.showVersion();
117 if (parser.isSet(authorsOption)) {
118 std::cout <<
"David Rosca <nowrep@gmail.com>" << std::endl;
122 m_actions.append(pair);
126 if (parser.isSet(profileOption)) {
127 const QString profileName = parser.value(profileOption);
128 std::cout <<
"Falkon: Starting with profile '" << profileName.toUtf8().data() <<
"'" << std::endl;
132 pair.text = profileName;
133 m_actions.append(pair);
136 if (parser.isSet(noExtensionsOption)) {
139 m_actions.append(pair);
142 if (parser.isSet(privateBrowsingOption)) {
145 m_actions.append(pair);
148 if (parser.isSet(portableOption)) {
151 m_actions.append(pair);
154 if (parser.isSet(noRemoteOption)) {
157 m_actions.append(pair);
160 if (parser.isSet(newTabOption)) {
163 m_actions.append(pair);
166 if (parser.isSet(newWindowOption)) {
169 m_actions.append(pair);
172 if (parser.isSet(downloadManagerOption)) {
175 m_actions.append(pair);
178 if (parser.isSet(currentTabOption)) {
181 pair.text = parser.value(currentTabOption);
182 m_actions.append(pair);
185 if (parser.isSet(openWindowOption)) {
188 pair.text = parser.value(openWindowOption);
189 m_actions.append(pair);
192 if (parser.isSet(fullscreenOption)) {
195 m_actions.append(pair);
198 if (parser.isSet(wmclassOption)) {
201 pair.text = parser.value(wmclassOption);
202 m_actions.append(pair);
205 if (parser.positionalArguments().isEmpty())
208 QString url = parser.positionalArguments().constLast();
209 QFileInfo fileInfo(url);
211 if (fileInfo.exists()) {
212 url = fileInfo.absoluteFilePath();
215 if (!url.isEmpty() && !url.startsWith(QLatin1Char(
'-'))) {
219 m_actions.append(pair);
ActionPairList getActions()
QVector< ActionPair > ActionPairList
@ CL_StartPrivateBrowsing