/actions/system/src/actions/openurlinstance.hpp
https://github.com/Jmgr/actionaz · C++ Header · 78 lines · 44 code · 15 blank · 19 comment · 5 complexity · ef59a00bad280b139839e29f1dda8f36 MD5 · raw file
- /*
- Actiona
- Copyright (C) 2005 Jonathan Mercier-Ganady
- Actiona 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 3 of the License, or
- (at your option) any later version.
- Actiona 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, see <http://www.gnu.org/licenses/>.
- Contact: jmgr@jmgr.info
- */
- #pragma once
- #include "actiontools/actioninstance.hpp"
- #include "actiontools/script.hpp"
- #include <QUrl>
- #include <QDesktopServices>
- namespace Actions
- {
- class OpenURLInstance : public ActionTools::ActionInstance
- {
- Q_OBJECT
- public:
- enum Exceptions
- {
- FailedToOpenURL = ActionTools::ActionException::UserException
- };
- OpenURLInstance(const ActionTools::ActionDefinition *definition, QObject *parent = nullptr)
- : ActionTools::ActionInstance(definition, parent)
- {
- }
- void startExecution() override
- {
- bool ok = true;
- QString urlString = evaluateString(ok, QStringLiteral("url"));
- if(!ok)
- return;
- QUrl url(urlString, QUrl::TolerantMode);
- if(!url.isValid())
- {
- emit executionException(FailedToOpenURL, tr("Failed to open URL"));
- return;
- }
- if(url.scheme() == QString())
- url = QUrl(QStringLiteral("http://") + urlString, QUrl::TolerantMode);
- if(!QDesktopServices::openUrl(url))
- {
- emit executionException(FailedToOpenURL, tr("Failed to open URL"));
- return;
- }
- executionEnded();
- }
- private:
- Q_DISABLE_COPY(OpenURLInstance)
- };
- }