12fc2651226baac27029e38c9d6ef883fa32084dbSteve Block/* 22fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 32fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2010 University of Szeged 42fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 52fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * All rights reserved. 62fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 72fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Redistribution and use in source and binary forms, with or without 82fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * modification, are permitted provided that the following conditions 92fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * are met: 102fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 1. Redistributions of source code must retain the above copyright 112fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * notice, this list of conditions and the following disclaimer. 122fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 2. Redistributions in binary form must reproduce the above copyright 132fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * notice, this list of conditions and the following disclaimer in the 142fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * documentation and/or other materials provided with the distribution. 152fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 162fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 172fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 182fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 192fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 212fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 222fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 232fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 242fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 252fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 272fc2651226baac27029e38c9d6ef883fa32084dbSteve Block */ 282fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 292fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "MiniBrowserApplication.h" 302fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "utils.h" 322fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include <QRegExp> 332fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 342fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockMiniBrowserApplication::MiniBrowserApplication(int& argc, char** argv) 352fc2651226baac27029e38c9d6ef883fa32084dbSteve Block : QApplication(argc, argv, QApplication::GuiServer) 362fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_windowOptions() 372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_isRobotized(false) 382fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_robotTimeoutSeconds(0) 392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_robotExtraTimeSeconds(0) 402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block setOrganizationName("Nokia"); 422fc2651226baac27029e38c9d6ef883fa32084dbSteve Block setApplicationName("QtMiniBrowser"); 432fc2651226baac27029e38c9d6ef883fa32084dbSteve Block setApplicationVersion("0.1"); 442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 452fc2651226baac27029e38c9d6ef883fa32084dbSteve Block handleUserOptions(); 462fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 472fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 482fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid MiniBrowserApplication::handleUserOptions() 492fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 502fc2651226baac27029e38c9d6ef883fa32084dbSteve Block QStringList args = arguments(); 512fc2651226baac27029e38c9d6ef883fa32084dbSteve Block QFileInfo program(args.at(0)); 522fc2651226baac27029e38c9d6ef883fa32084dbSteve Block QString programName("MiniBrowser"); 532fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (program.exists()) 542fc2651226baac27029e38c9d6ef883fa32084dbSteve Block programName = program.baseName(); 552fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (args.contains("-help")) { 572fc2651226baac27029e38c9d6ef883fa32084dbSteve Block qDebug() << "Usage:" << programName.toLatin1().data() 582daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch << "[-maximize]" 592fc2651226baac27029e38c9d6ef883fa32084dbSteve Block << "[-r list]" 602fc2651226baac27029e38c9d6ef883fa32084dbSteve Block << "[-robot-timeout seconds]" 612fc2651226baac27029e38c9d6ef883fa32084dbSteve Block << "[-robot-extra-time seconds]" 6281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch << "[-chunked-drawing-area]" 632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block << "[-separate-web-process-per-window]" 642bde8e466a4451c7319e3a072d118917957d6554Steve Block << "[-print-loaded-urls]" 652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block << "URLs"; 662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block appQuit(0); 672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (args.contains("-maximize")) 702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_windowOptions.startMaximized = true; 712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block int robotIndex = args.indexOf("-r"); 732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (robotIndex != -1) { 742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block QString listFile = takeOptionValue(&args, robotIndex); 752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (listFile.isEmpty()) 762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block appQuit(1, "-r needs a list file to start in robotized mode"); 772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!QFile::exists(listFile)) 782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block appQuit(1, "The list file supplied to -r does not exist."); 792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 802fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_isRobotized = true; 812fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_urls = QStringList(listFile); 822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } else { 832fc2651226baac27029e38c9d6ef883fa32084dbSteve Block int lastArg = args.lastIndexOf(QRegExp("^-.*")); 842fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_urls = (lastArg != -1) ? args.mid(++lastArg) : args.mid(1); 852fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 862fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 872fc2651226baac27029e38c9d6ef883fa32084dbSteve Block int robotTimeoutIndex = args.indexOf("-robot-timeout"); 882fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (robotTimeoutIndex != -1) 892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_robotTimeoutSeconds = takeOptionValue(&args, robotTimeoutIndex).toInt(); 902fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 912fc2651226baac27029e38c9d6ef883fa32084dbSteve Block int robotExtraTimeIndex = args.indexOf("-robot-extra-time"); 922fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (robotExtraTimeIndex != -1) 932fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_robotExtraTimeSeconds = takeOptionValue(&args, robotExtraTimeIndex).toInt(); 942fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 9581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (args.contains("-chunked-drawing-area")) 9681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_windowOptions.useTiledBackingStore = false; 972fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 982fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (args.contains("-separate-web-process-per-window")) 992fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_windowOptions.useSeparateWebProcessPerWindow = true; 1002bde8e466a4451c7319e3a072d118917957d6554Steve Block 1012bde8e466a4451c7319e3a072d118917957d6554Steve Block if (args.contains("-print-loaded-urls")) 1022bde8e466a4451c7319e3a072d118917957d6554Steve Block m_windowOptions.printLoadedUrls = true; 1032fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 104