diff options
| author | Richard Maudsley <richard.maudsley@isode.com> | 2014-05-19 11:18:52 (GMT) | 
|---|---|---|
| committer | Swift Review <review@swift.im> | 2014-07-09 10:19:41 (GMT) | 
| commit | 05d9e618e4c756e50b633448f0546614a645a13d (patch) | |
| tree | 5a05e5c2c939c240a58c4aa468af0806a7ed8822 /Swift/QtUI/QtSwift.cpp | |
| parent | acac7962ba04c083377f62f4265ecc754176f74e (diff) | |
| download | swift-contrib-05d9e618e4c756e50b633448f0546614a645a13d.zip swift-contrib-05d9e618e4c756e50b633448f0546614a645a13d.tar.bz2 | |
Add dialog to send AdHoc's to target specific JID's. Fix multi-item Form rendering.
Test-Information:
Use AdHoc bot that presents a multi-item form and check that it is rendered correctly. Check that entering invalid JID and node parameters in the dialog do not cause malfunction. Check that canceling the JID prompt closes the dialog without sending any server commands.
Change-Id: I10e6f4c7eccd1a35c8c885d548994b5f57fdbf66
Diffstat (limited to 'Swift/QtUI/QtSwift.cpp')
| -rw-r--r-- | Swift/QtUI/QtSwift.cpp | 4 | 
1 files changed, 3 insertions, 1 deletions
| diff --git a/Swift/QtUI/QtSwift.cpp b/Swift/QtUI/QtSwift.cpp index 183f64d..d2224ba 100644 --- a/Swift/QtUI/QtSwift.cpp +++ b/Swift/QtUI/QtSwift.cpp @@ -57,70 +57,71 @@  #endif  #if defined(SWIFTEN_PLATFORM_MACOSX)  #include <SwifTools/Dock/MacOSXDock.h>  #else  #include <SwifTools/Dock/NullDock.h>  #endif  #if defined(SWIFTEN_PLATFORM_MACOSX)  #include <Swift/QtUI/QtURIHandler.h>  #elif defined(SWIFTEN_PLATFORM_WIN32)  #include <SwifTools/URIHandler/NullURIHandler.h>  #else  #include <Swift/QtUI/QtDBUSURIHandler.h>  #endif  namespace Swift{  #if defined(SWIFTEN_PLATFORM_MACOSX)  //#define SWIFT_APPCAST_URL "http://swift.im/appcast/swift-mac-dev.xml"  #else   //#define SWIFT_APPCAST_URL ""  #endif  po::options_description QtSwift::getOptionsDescription() {  	po::options_description result("Options");  	result.add_options()  		("debug", "Turn on debug logging")  		("help", "Show this help message")  		("version", "Show version information")  		("netbook-mode", "Use netbook mode display (unsupported)")  		("no-tabs", "Don't manage chat windows in tabs (unsupported)")  		("latency-debug", "Use latency debugging (unsupported)")  		("multi-account", po::value<int>()->default_value(1), "Number of accounts to open windows for (unsupported)")  		("start-minimized", "Don't show the login/roster window at startup") +		("enable-jid-adhocs", "Enable AdHoc commands to custom JID's.")  #if QT_VERSION >= 0x040800  		("language", po::value<std::string>(), "Use a specific language, instead of the system-wide one")  #endif  		;  	return result;  }  XMLSettingsProvider* QtSwift::loadSettingsFile(const QString& fileName) {  	QFile configFile(fileName);  	if (configFile.exists() && configFile.open(QIODevice::ReadOnly)) {  		QString xmlString;  		while (!configFile.atEnd()) {  			QByteArray line = configFile.readLine();  			xmlString += line + "\n";  		}  		return new XMLSettingsProvider(Q2PSTRING(xmlString));  	}  	return new XMLSettingsProvider("");  }  void QtSwift::loadEmoticonsFile(const QString& fileName, std::map<std::string, std::string>& emoticons)  {  	QFile file(fileName);  	if (file.exists() && file.open(QIODevice::ReadOnly)) {  		while (!file.atEnd()) {  			QString line = file.readLine();  			line.replace("\n", "");  			line.replace("\r", "");  			QStringList tokens = line.split(" ");  			if (tokens.size() == 2) {  				QString emoticonFile = tokens[1];  				if (!emoticonFile.startsWith(":/") && !emoticonFile.startsWith("qrc:/")) {  					emoticonFile = "file://" + emoticonFile;  				}  				emoticons[Q2PSTRING(tokens[0])] = Q2PSTRING(emoticonFile);  			} @@ -130,119 +131,120 @@ void QtSwift::loadEmoticonsFile(const QString& fileName, std::map<std::string, s  QtSwift::QtSwift(const po::variables_map& options) : networkFactories_(&clientMainThreadCaller_), autoUpdater_(NULL), idleDetector_(&idleQuerier_, networkFactories_.getTimerFactory(), 1000) {  	QCoreApplication::setApplicationName(SWIFT_APPLICATION_NAME);  	QCoreApplication::setOrganizationName(SWIFT_ORGANIZATION_NAME);  	QCoreApplication::setOrganizationDomain(SWIFT_ORGANIZATION_DOMAIN);  	QCoreApplication::setApplicationVersion(buildVersion);  	qtSettings_ = new QtSettingsProvider();  	xmlSettings_ = loadSettingsFile(P2QSTRING(pathToString(Paths::getExecutablePath() / "system-settings.xml")));  	settingsHierachy_ = new SettingsProviderHierachy();  	settingsHierachy_->addProviderToTopOfStack(xmlSettings_);  	settingsHierachy_->addProviderToTopOfStack(qtSettings_);  	std::map<std::string, std::string> emoticons;  	loadEmoticonsFile(":/emoticons/emoticons.txt", emoticons);  	loadEmoticonsFile(P2QSTRING(pathToString(Paths::getExecutablePath() / "emoticons.txt")), emoticons);  	if (options.count("netbook-mode")) {  		splitter_ = new QtSingleWindow(qtSettings_);  	} else {  		splitter_ = NULL;  	}  	int numberOfAccounts = 1;  	try {  		numberOfAccounts = options["multi-account"].as<int>();  	} catch (...) {  		/* This seems to fail on a Mac when the .app is launched directly (the usual path).*/  		numberOfAccounts = 1;  	}  	if (options.count("debug")) {  		Log::setLogLevel(Swift::Log::debug);  	} +	bool enableAdHocCommandOnJID = options.count("enable-jid-adhocs") > 0;  	tabs_ = options.count("no-tabs") && !splitter_ ? NULL : new QtChatTabs(splitter_ != NULL);  	bool startMinimized = options.count("start-minimized") > 0;  	applicationPathProvider_ = new PlatformApplicationPathProvider(SWIFT_APPLICATION_NAME);  	storagesFactory_ = new FileStoragesFactory(applicationPathProvider_->getDataDir(), networkFactories_.getCryptoProvider());  	certificateStorageFactory_ = new CertificateFileStorageFactory(applicationPathProvider_->getDataDir(), tlsFactories_.getCertificateFactory(), networkFactories_.getCryptoProvider());  	chatWindowFactory_ = new QtChatWindowFactory(splitter_, settingsHierachy_, qtSettings_, tabs_, "");  	soundPlayer_ = new QtSoundPlayer(applicationPathProvider_);  	// Ugly, because the dock depends on the tray, but the temporary  	// multi-account hack creates one tray per account.  	QtSystemTray* systemTray = new QtSystemTray();  	systemTrays_.push_back(systemTray);  #if defined(HAVE_GROWL)  	notifier_ = new GrowlNotifier(SWIFT_APPLICATION_NAME);  #elif defined(SWIFTEN_PLATFORM_WINDOWS)  	notifier_ = new WindowsNotifier(SWIFT_APPLICATION_NAME, applicationPathProvider_->getResourcePath("/images/logo-icon-32.png"), systemTray->getQSystemTrayIcon());  #elif defined(SWIFTEN_PLATFORM_LINUX)  	notifier_ = new FreeDesktopNotifier(SWIFT_APPLICATION_NAME);  #else  	notifier_ = new NullNotifier();  #endif  #if defined(SWIFTEN_PLATFORM_MACOSX)  	dock_ = new MacOSXDock(&cocoaApplication_);  #else  	dock_ = new NullDock();  #endif  #if defined(SWIFTEN_PLATFORM_MACOSX)  	uriHandler_ = new QtURIHandler();  #elif defined(SWIFTEN_PLATFORM_WIN32)  	uriHandler_ = new NullURIHandler();  #else  	uriHandler_ = new QtDBUSURIHandler();  #endif  	statusCache_ = new StatusCache(applicationPathProvider_);  	if (splitter_) {  		splitter_->show();  	}  	for (int i = 0; i < numberOfAccounts; i++) {  		if (i > 0) {  			// Don't add the first tray (see note above)  			systemTrays_.push_back(new QtSystemTray());  		} -		QtUIFactory* uiFactory = new QtUIFactory(settingsHierachy_, qtSettings_, tabs_, splitter_, systemTrays_[i], chatWindowFactory_, networkFactories_.getTimerFactory(), statusCache_, startMinimized, !emoticons.empty()); +		QtUIFactory* uiFactory = new QtUIFactory(settingsHierachy_, qtSettings_, tabs_, splitter_, systemTrays_[i], chatWindowFactory_, networkFactories_.getTimerFactory(), statusCache_, startMinimized, !emoticons.empty(), enableAdHocCommandOnJID);  		uiFactories_.push_back(uiFactory);  		MainController* mainController = new MainController(  				&clientMainThreadCaller_,  				&networkFactories_,  				uiFactory,  				settingsHierachy_,  				systemTrays_[i],  				soundPlayer_,  				storagesFactory_,  				certificateStorageFactory_,  				dock_,  				notifier_,  				uriHandler_,  				&idleDetector_,  				emoticons,  				options.count("latency-debug") > 0);  		mainControllers_.push_back(mainController);  	}  	// PlatformAutoUpdaterFactory autoUpdaterFactory;  	// if (autoUpdaterFactory.isSupported()) {  	// 	autoUpdater_ = autoUpdaterFactory.createAutoUpdater(SWIFT_APPCAST_URL);  	// 	autoUpdater_->checkForUpdates();  	// }  }  QtSwift::~QtSwift() {  	delete autoUpdater_;  	foreach (QtUIFactory* factory, uiFactories_) {  		delete factory;  	}  	foreach (MainController* controller, mainControllers_) {  		delete controller;  	} | 
 Swift
 Swift