#include "fbgui.h"
#include "fbbrowser.h"
#include "DownloadManager.h"
#include <getopt.h>
#include <limits.h>
#include <unistd.h>
#include <QApplication>
#include <QThread>
void printUsage()
{
// Prints usage information, incomplete.
// Q: How is the -qws option handled, mention it here or not?
QTextStream qout(stdout);
qout << QObject::tr("Usage: ./fbgui [OPTIONS] <URL>") << endl;
qout << QObject::tr("Options:") << endl;
qout << "-h or --help " << QObject::tr("Prints usage information.") << endl;
qout << "-qws " << QObject::tr("Set this application to also be the server application.") << endl;
qout << " " << QObject::tr("Skip this option if you have a QT server application") << endl;
exit(1);
}
int main(int argc, char *argv[])
{
// Parse command line arguments.
int opt = 0;
int longIndex = 0;
// Declare the short options as a char*, these have exactly one - followed by letter from optString.
// For example: ./fbbrowser -h
// Declare the long options in the const struct, these have two - followed by a string found in longOpts[].
// Same as: ./fbbrowser --help
// Note: I included 'qws' here to not have errors, when setting fbbrowser to be the server app aswell.
static const char *optString = "hqwsdiplay";
static const struct option longOpts[] =
{
// If an option requires parameters, write this number instead of no_argument.
// The last argument, is the corresponding char to the option string.
{"help", no_argument, NULL, 'h'}
};
// getopt_long returns the index of the next argument to be read, -1 if there are no more arguments.
opt = getopt_long(argc, argv, optString, longOpts, &longIndex);
while (opt != -1)
{
switch(opt)
{
case 'h':
printUsage();
break;
}
opt = getopt_long(argc, argv, optString, longOpts, &longIndex);
}
// This is the main object of a QT Application.
QApplication a(argc, argv);
// Get the application path and prints on screen.
qDebug() << "Application Path: " << a.applicationDirPath();
// Is this really needed, since we kill the app through the fbbrowser object?
QObject::connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));
// This part reads the URL to load from the arguments given through the commandline.
QUrl url;
if (argc > 1)
url = QUrl(argv[1]);
else //Default URL to load
url = QUrl("http://132.230.4.3/webkitTest.html");
// Create a new Framebuffer-Browser object for displaying the given URL.
fbbrowser* fbb = new fbbrowser(url);
// Listen to the signalQuitAll() Signal to kill the app from within the browser.
QObject::connect(fbb, SIGNAL(killApp()), &a, SLOT(quit()));
// Display the browser.
fbb->show();
// Execute the application.
return a.exec();
}