OSDN Git Service

Added a new "--add-job <src_file> <out_file> <template>" command-line option. Also...
authorlordmulder <mulder2@gmx.de>
Mon, 20 Jan 2014 21:02:53 +0000 (22:02 +0100)
committerlordmulder <mulder2@gmx.de>
Mon, 20 Jan 2014 21:02:53 +0000 (22:02 +0100)
src/global.cpp
src/version.h
src/win_main.cpp
src/win_main.h

index 391c4d8..e9076cd 100644 (file)
@@ -1352,32 +1352,29 @@ static bool x264_event_filter(void *message, long *result)
  */
 static bool x264_process_is_elevated(bool *bIsUacEnabled = NULL)
 {
-       typedef enum { x264_token_elevationType_class = 18, x264_token_elevation_class = 20 } X264_TOKEN_INFORMATION_CLASS;
-       typedef enum { x264_elevationType_default = 1, x264_elevationType_full, x264_elevationType_limited } X264_TOKEN_ELEVATION_TYPE;
-
        bool bIsProcessElevated = false;
        if(bIsUacEnabled) *bIsUacEnabled = false;
        HANDLE hToken = NULL;
        
        if(OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken))
        {
-               X264_TOKEN_ELEVATION_TYPE tokenElevationType;
+               TOKEN_ELEVATION_TYPE tokenElevationType;
                DWORD returnLength;
-               if(GetTokenInformation(hToken, (TOKEN_INFORMATION_CLASS) x264_token_elevationType_class, &tokenElevationType, sizeof(X264_TOKEN_ELEVATION_TYPE), &returnLength))
+               if(GetTokenInformation(hToken, TokenElevationType, &tokenElevationType, sizeof(TOKEN_ELEVATION_TYPE), &returnLength))
                {
-                       if(returnLength == sizeof(X264_TOKEN_ELEVATION_TYPE))
+                       if(returnLength == sizeof(TOKEN_ELEVATION_TYPE))
                        {
                                switch(tokenElevationType)
                                {
-                               case x264_elevationType_default:
+                               case TokenElevationTypeDefault:
                                        qDebug("Process token elevation type: Default -> UAC is disabled.\n");
                                        break;
-                               case x264_elevationType_full:
+                               case TokenElevationTypeFull:
                                        qWarning("Process token elevation type: Full -> potential security risk!\n");
                                        bIsProcessElevated = true;
                                        if(bIsUacEnabled) *bIsUacEnabled = true;
                                        break;
-                               case x264_elevationType_limited:
+                               case TokenElevationTypeLimited:
                                        qDebug("Process token elevation type: Limited -> not elevated.\n");
                                        if(bIsUacEnabled) *bIsUacEnabled = true;
                                        break;
@@ -1386,6 +1383,10 @@ static bool x264_process_is_elevated(bool *bIsUacEnabled = NULL)
                                        break;
                                }
                        }
+                       else
+                       {
+                               qWarning("GetTokenInformation() return an unexpected size!");
+                       }
                }
                CloseHandle(hToken);
        }
@@ -1471,7 +1472,7 @@ bool x264_user_is_admin(void)
        }
        
        //If not elevated and UAC is not available -> user must be in admin group!
-       if(isAdmin)
+       if(!isAdmin)
        {
                qDebug("UAC is disabled/unavailable -> checking for Administrators group");
                isAdmin = x264_user_is_admin_helper();
index c281e4e..eb9e611 100644 (file)
@@ -25,8 +25,8 @@
 
 #define VER_X264_MAJOR 2
 #define VER_X264_MINOR 2
-#define VER_X264_PATCH 8
-#define VER_X264_BUILD 723
+#define VER_X264_PATCH 9
+#define VER_X264_BUILD 726
 
 #define VER_X264_MINIMUM_REV 2363
 #define VER_X264_CURRENT_API 140
index a4ad732..d7618b9 100644 (file)
@@ -909,25 +909,7 @@ void MainWindow::init(void)
        }
 
        //Add files from command-line
-       bool bAddFile = false;
-       QStringList files, args = qApp->arguments();
-       while(!args.isEmpty())
-       {
-               QString current = args.takeFirst();
-               if(!bAddFile)
-               {
-                       bAddFile = (current.compare("--add", Qt::CaseInsensitive) == 0);
-                       continue;
-               }
-               if((!current.startsWith("--")) && QFileInfo(current).exists() && QFileInfo(current).isFile())
-               {
-                       files << QFileInfo(current).canonicalFilePath();
-               }
-       }
-       if(files.count() > 0)
-       {
-               createJobMultiple(files);
-       }
+       parseCommandLineArgs();
 }
 
 /*
@@ -1381,3 +1363,73 @@ void MainWindow::updateTaskbar(JobStatus status, const QIcon &icon)
 
        WinSevenTaskbar::setOverlayIcon(this, icon.isNull() ? NULL : &icon);
 }
+
+/*
+ * Parse command-line arguments
+ */
+void MainWindow::parseCommandLineArgs(void)
+{
+       QStringList files, args = qApp->arguments();
+       while(!args.isEmpty())
+       {
+               QString current = args.takeFirst();
+               if((current.compare("--add", Qt::CaseInsensitive) == 0) || (current.compare("--add-file", Qt::CaseInsensitive) == 0))
+               {
+                       if(!args.isEmpty())
+                       {
+                               current = args.takeFirst();
+                               if(QFileInfo(current).exists() && QFileInfo(current).isFile())
+                               {
+                                       files << QFileInfo(current).canonicalFilePath();
+                               }
+                               else
+                               {
+                                       qWarning("File '%s' not found!", current.toUtf8().constData());
+                               }
+                       }
+                       else
+                       {
+                               qWarning("Argument for '--add-file' is missing!");
+                       }
+               }
+               else if(current.compare("--add-job", Qt::CaseInsensitive) == 0)
+               {
+                       if(args.size() >= 3)
+                       {
+                               const QString fileSrc = args.takeFirst();
+                               const QString fileOut = args.takeFirst();
+                               const QString templId = args.takeFirst();
+                               if(QFileInfo(fileSrc).exists() && QFileInfo(fileSrc).isFile())
+                               {
+                                       OptionsModel options;
+                                       if(!(templId.isEmpty() || (templId.compare("-", Qt::CaseInsensitive) == 0)))
+                                       {
+                                               if(!OptionsModel::loadTemplate(&options, templId.trimmed()))
+                                               {
+                                                       qWarning("Template '%s' could not be found -> using defaults!", templId.trimmed().toUtf8().constData());
+                                               }
+                                       }
+                                       appendJob(fileSrc, fileOut, &options, true);
+                               }
+                               else
+                               {
+                                       qWarning("Source file '%s' not found!", fileSrc.toUtf8().constData());
+                               }
+                       }
+                       else
+                       {
+                               qWarning("Argument(s) for '--add-job' are missing!");
+                               args.clear();
+                       }
+               }
+               else
+               {
+                       qWarning("Unknown argument: %s", current.toUtf8().constData());
+               }
+       }
+
+       if(files.count() > 0)
+       {
+               createJobMultiple(files);
+       }
+}
index ef5ce43..e672ea7 100644 (file)
@@ -90,6 +90,8 @@ private:
        unsigned int countPendingJobs(void);
        unsigned int countRunningJobs(void);
 
+       void parseCommandLineArgs(void);
+
 private slots:
        void addButtonPressed();
        void openActionTriggered();