aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobby Workman <rworkman@slackbuilds.org>2012-02-12 17:45:18 -0600
committerNiels Horn <niels.horn@slackbuilds.org>2012-02-18 09:12:29 -0200
commitd2e2932320d8598a528a3f8b10c8e3f4571ee0e1 (patch)
treeeabf4ac79df81756531ccf468a71e28ad80c7a11
parent3a39822712240010fd4bb25ccbf58c06117cad73 (diff)
system/aqemu: Add some patches from git (including qemu-1.0 support)
Signed-off-by: Leo Midha <netrixtardis@stealth3.com> Signed-off-by: Robby Workman <rworkman@slackbuilds.org>
-rw-r--r--system/aqemu/aqemu.SlackBuild4
-rw-r--r--system/aqemu/patches/0001-Fixed-bug-3392763.patch55
-rw-r--r--system/aqemu/patches/0002-Fixed-bug-3395228.patch25
-rw-r--r--system/aqemu/patches/0003-Some-bug-fixes.patch97
-rw-r--r--system/aqemu/patches/0004-Fix-build-error-on-Qt-4.8.patch27
-rw-r--r--system/aqemu/patches/0005-Updated-aqemu.desktop-file-See-bug-3430317.patch36
-rw-r--r--system/aqemu/patches/0006-Fixed-emulator-monitor.-BUG-ID-3432871.patch24
-rw-r--r--system/aqemu/patches/0007-Initial-QEMU-1.0-support.patch715
8 files changed, 982 insertions, 1 deletions
diff --git a/system/aqemu/aqemu.SlackBuild b/system/aqemu/aqemu.SlackBuild
index 472efb651c94f..738b9da8ea5ff 100644
--- a/system/aqemu/aqemu.SlackBuild
+++ b/system/aqemu/aqemu.SlackBuild
@@ -24,7 +24,7 @@
PRGNAM=aqemu
VERSION=${VERSION:-0.8.2}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
@@ -69,6 +69,8 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+for i in $CWD/patches/* ; do patch -p1 < $i ; done
+
cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
diff --git a/system/aqemu/patches/0001-Fixed-bug-3392763.patch b/system/aqemu/patches/0001-Fixed-bug-3392763.patch
new file mode 100644
index 0000000000000..c932c279cdd00
--- /dev/null
+++ b/system/aqemu/patches/0001-Fixed-bug-3392763.patch
@@ -0,0 +1,55 @@
+From 182975dadb7ac9fc8e851ed638dd6998002ff536 Mon Sep 17 00:00:00 2001
+From: Andrey Rijov <rdron@users.sourceforge.net>
+Date: Thu, 18 Aug 2011 22:03:13 +0400
+Subject: [PATCH 1/7] Fixed bug #3392763
+
+---
+ Device_Manager_Widget.cpp | 21 ++++++++++++++++++---
+ 1 files changed, 18 insertions(+), 3 deletions(-)
+
+diff --git a/Device_Manager_Widget.cpp b/Device_Manager_Widget.cpp
+index 7288baf..671930a 100644
+--- a/Device_Manager_Widget.cpp
++++ b/Device_Manager_Widget.cpp
+@@ -981,9 +981,10 @@ void Device_Manager_Widget::on_actionDelete_triggered()
+ {
+ if( ui.Devices_List->currentItem()->data(512).toString() == "device" + QString::number(fx) )
+ {
+- finded = true;
+-
+ Storage_Devices.removeAt( fx );
++ ui.Devices_List->takeItem( ui.Devices_List->currentRow() );
++ finded = true;
++ break;
+ }
+ }
+
+@@ -993,10 +994,24 @@ void Device_Manager_Widget::on_actionDelete_triggered()
+ "Incorrect Device!" );
+ return;
+ }
++ else
++ {
++ // Rename items
++ for( int ix = 0, count = 0; ix < ui.Devices_List->count(); ++ix )
++ {
++ if( ui.Devices_List->item(ix)->data(512).toString().contains("device") )
++ {
++ ui.Devices_List->item(ix)->setData( 512, QString("device%1").arg(count) );
++ ++count;
++ }
++ }
++
++ emit Device_Changet();
++ return;
++ }
+ }
+
+ ui.Devices_List->takeItem( ui.Devices_List->currentRow() );
+-
+ emit Device_Changet();
+ }
+
+--
+1.7.8.3
+
diff --git a/system/aqemu/patches/0002-Fixed-bug-3395228.patch b/system/aqemu/patches/0002-Fixed-bug-3395228.patch
new file mode 100644
index 0000000000000..f0c30d42cace8
--- /dev/null
+++ b/system/aqemu/patches/0002-Fixed-bug-3395228.patch
@@ -0,0 +1,25 @@
+From b9b83bef7abd0b234b9641d523be9012ea1cf718 Mon Sep 17 00:00:00 2001
+From: Andrey Rijov <rdron@users.sourceforge.net>
+Date: Sun, 21 Aug 2011 12:53:11 +0400
+Subject: [PATCH 2/7] Fixed bug #3395228
+
+---
+ README | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/README b/README
+index ad70462..f8c08e2 100644
+--- a/README
++++ b/README
+@@ -37,7 +37,7 @@ INSTALLATION (For Unix):
+ Sample `cmake -DCMAKE_INSTALL_PREFIX=/usr/local/' this install AQEMU binary
+ in /usr/local/bin and install data in /usr/local/share/aqemu
+
+- -DWITHOUT_EMBEDDED_DISPLAY = on | off (Default is: on)
++ -DWITHOUT_EMBEDDED_DISPLAY = on | off (Default is: off)
+ For building without support Embedded VNC Display.
+
+ -DDEBUG = on | off (Default is: off)
+--
+1.7.8.3
+
diff --git a/system/aqemu/patches/0003-Some-bug-fixes.patch b/system/aqemu/patches/0003-Some-bug-fixes.patch
new file mode 100644
index 0000000000000..fdb5150238121
--- /dev/null
+++ b/system/aqemu/patches/0003-Some-bug-fixes.patch
@@ -0,0 +1,97 @@
+From 84314637afc540bd07aa25a64168246f505ecb38 Mon Sep 17 00:00:00 2001
+From: Andrey Rijov <rdron@users.sourceforge.net>
+Date: Sun, 11 Sep 2011 23:33:34 +0400
+Subject: [PATCH 3/7] Some bug fixes
+
+---
+ Create_HDD_Image_Window.ui | 2 +-
+ Main_Window.cpp | 3 ---
+ System_Info.cpp | 2 ++
+ Utils.cpp | 8 ++++----
+ 4 files changed, 7 insertions(+), 8 deletions(-)
+
+diff --git a/Create_HDD_Image_Window.ui b/Create_HDD_Image_Window.ui
+index 030d025..7d21b9b 100644
+--- a/Create_HDD_Image_Window.ui
++++ b/Create_HDD_Image_Window.ui
+@@ -175,7 +175,7 @@
+ <double>1.000000000000000</double>
+ </property>
+ <property name="maximum">
+- <double>1024.000000000000000</double>
++ <double>9999.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>1.000000000000000</double>
+diff --git a/Main_Window.cpp b/Main_Window.cpp
+index f8cb244..5a8ed7e 100644
+--- a/Main_Window.cpp
++++ b/Main_Window.cpp
+@@ -5654,7 +5654,6 @@ void Main_Window::on_TB_HDB_Format_HDD_clicked()
+
+ hdd_win->Set_Image_File_Name( ui.Edit_HDB_Image_Path->text() );
+ hdd_win->Set_Image_Info( HDB_Info->Get_Disk_Info() );
+- hdd_win->exec();
+
+ if( hdd_win->exec() == QDialog::Accepted )
+ HDB_Info->Update_Disk_Info( ui.Edit_HDB_Image_Path->text() );
+@@ -5739,7 +5738,6 @@ void Main_Window::on_TB_HDC_Format_HDD_clicked()
+
+ hdd_win->Set_Image_File_Name( ui.Edit_HDC_Image_Path->text() );
+ hdd_win->Set_Image_Info( HDC_Info->Get_Disk_Info() );
+- hdd_win->exec();
+
+ if( hdd_win->exec() == QDialog::Accepted )
+ HDC_Info->Update_Disk_Info( ui.Edit_HDC_Image_Path->text() );
+@@ -5824,7 +5822,6 @@ void Main_Window::on_TB_HDD_Format_HDD_clicked()
+
+ hdd_win->Set_Image_File_Name( ui.Edit_HDD_Image_Path->text() );
+ hdd_win->Set_Image_Info( HDD_Info->Get_Disk_Info() );
+- hdd_win->exec();
+
+ if( hdd_win->exec() == QDialog::Accepted )
+ HDD_Info->Update_Disk_Info( ui.Edit_HDD_Image_Path->text() );
+diff --git a/System_Info.cpp b/System_Info.cpp
+index 32ca029..d6d44dd 100644
+--- a/System_Info.cpp
++++ b/System_Info.cpp
+@@ -2394,6 +2394,8 @@ Available_Devices System_Info::Get_Emulator_Info( const QString &path, bool *ok,
+
+ // Get all models string
+ QString all_models = tmp.mid( tmp.indexOf("models:") + QString("models:").count(), tmp.count() );
++ all_models.remove( QChar(' ') ); // Remove all spaces
++
+ QStringList net_cards_models = all_models.split( ',', QString::SkipEmptyParts );
+
+ if( net_cards_models.isEmpty() )
+diff --git a/Utils.cpp b/Utils.cpp
+index f9e9bc3..36ec8d4 100644
+--- a/Utils.cpp
++++ b/Utils.cpp
+@@ -220,19 +220,19 @@ bool Create_New_HDD_Image( bool encrypted, const QString &base_image,
+ args << "-f" << format;
+
+ args << file_name;
+-
++
+ switch( size.Suffix )
+ {
+ case VM::Size_Suf_Mb: // MB
+- args << QString::number( (long)(size.Size * 1024) );
++ args << QString::number( size.Size ) + "M";
+ break;
+
+ case VM::Size_Suf_Gb: // GB
+- args << QString::number( (long)(size.Size * 1024) ) + "M";
++ args << QString::number( size.Size ) + "G";
+ break;
+
+ default: // KG
+- args << QString::number( (long)size.Size );
++ args << QString::number( size.Size );
+ break;
+ }
+
+--
+1.7.8.3
+
diff --git a/system/aqemu/patches/0004-Fix-build-error-on-Qt-4.8.patch b/system/aqemu/patches/0004-Fix-build-error-on-Qt-4.8.patch
new file mode 100644
index 0000000000000..32e9afb33148f
--- /dev/null
+++ b/system/aqemu/patches/0004-Fix-build-error-on-Qt-4.8.patch
@@ -0,0 +1,27 @@
+From 9b21d88a4f4a681f9e80c11e83e81c976e0fc91e Mon Sep 17 00:00:00 2001
+From: Andrey Rijov <rdron@users.sourceforge.net>
+Date: Sat, 29 Oct 2011 10:20:32 +0400
+Subject: [PATCH 4/7] Fix build error on Qt 4.8
+
+---
+ Embedded_Display/vncview.cpp | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Embedded_Display/vncview.cpp b/Embedded_Display/vncview.cpp
+index 9e105c9..0be5944 100644
+--- a/Embedded_Display/vncview.cpp
++++ b/Embedded_Display/vncview.cpp
+@@ -27,8 +27,8 @@
+ #include <QMessageBox>
+ #include <QInputDialog>
+ #define KMessageBox QMessageBox
+- #define error(parent, message, caption) \
+- critical(parent, caption, message)
++/* #define error(parent, message, caption) \
++ critical(parent, caption, message)*/
+ #else
+ #include "settings.h"
+ #include <KActionCollection>
+--
+1.7.8.3
+
diff --git a/system/aqemu/patches/0005-Updated-aqemu.desktop-file-See-bug-3430317.patch b/system/aqemu/patches/0005-Updated-aqemu.desktop-file-See-bug-3430317.patch
new file mode 100644
index 0000000000000..b9dc5301d8419
--- /dev/null
+++ b/system/aqemu/patches/0005-Updated-aqemu.desktop-file-See-bug-3430317.patch
@@ -0,0 +1,36 @@
+From 2a0f32e8cb46c8a1c0a33ed151737e5abb5679ed Mon Sep 17 00:00:00 2001
+From: Andrey Rijov <rdron@users.sourceforge.net>
+Date: Mon, 31 Oct 2011 19:38:17 +0400
+Subject: [PATCH 5/7] Updated aqemu.desktop file (See bug: 3430317)
+
+---
+ menu_data/aqemu.desktop | 9 +++++----
+ 1 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/menu_data/aqemu.desktop b/menu_data/aqemu.desktop
+index 9c3558c..f579c74 100644
+--- a/menu_data/aqemu.desktop
++++ b/menu_data/aqemu.desktop
+@@ -1,14 +1,15 @@
+ [Desktop Entry]
+ Encoding=UTF-8
+-Name=AQEMU
+ Exec=aqemu
+ Terminal=false
+ Type=Application
+-Icon=aqemu_48x48.png
++Icon=aqemu_48x48
+ StartupNotify=true
+ Categories=System;Emulator;
+
+-Name[ru]=AQEMU
++Name=AQEMU
++Comment=Virtual machine manager
+ Name[en]=AQEMU
+-Comment[ru]=Управление виртуальными машинами
+ Comment[en]=Virtual machine manager
++Name[ru]=AQEMU
++Comment[ru]=Управление виртуальными машинами
+--
+1.7.8.3
+
diff --git a/system/aqemu/patches/0006-Fixed-emulator-monitor.-BUG-ID-3432871.patch b/system/aqemu/patches/0006-Fixed-emulator-monitor.-BUG-ID-3432871.patch
new file mode 100644
index 0000000000000..bcfafb0a9ecf2
--- /dev/null
+++ b/system/aqemu/patches/0006-Fixed-emulator-monitor.-BUG-ID-3432871.patch
@@ -0,0 +1,24 @@
+From 9446cc47b96cbbe52976e8893fc50ad730fbaa9e Mon Sep 17 00:00:00 2001
+From: Andrey Rijov <rdron@users.sourceforge.net>
+Date: Sun, 13 Nov 2011 11:36:13 +0400
+Subject: [PATCH 6/7] Fixed emulator monitor. (BUG ID: 3432871)
+
+---
+ Monitor_Window.cpp | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/Monitor_Window.cpp b/Monitor_Window.cpp
+index ace256c..a4b30ea 100644
+--- a/Monitor_Window.cpp
++++ b/Monitor_Window.cpp
+@@ -36,6 +36,7 @@ Monitor_Window::Monitor_Window( QWidget *parent )
+
+ void Monitor_Window::Add_QEMU_Out( const QString &new_text )
+ {
++ ui.Edit_Monitor_Out->moveCursor( QTextCursor::End );
+ ui.Edit_Monitor_Out->insertPlainText( new_text );
+ }
+
+--
+1.7.8.3
+
diff --git a/system/aqemu/patches/0007-Initial-QEMU-1.0-support.patch b/system/aqemu/patches/0007-Initial-QEMU-1.0-support.patch
new file mode 100644
index 0000000000000..6ec862f20191b
--- /dev/null
+++ b/system/aqemu/patches/0007-Initial-QEMU-1.0-support.patch
@@ -0,0 +1,715 @@
+From 26b007bba627525b68891d50b1d98015465ca4c4 Mon Sep 17 00:00:00 2001
+From: Andrey Rijov <rdron@users.sourceforge.net>
+Date: Tue, 31 Jan 2012 23:42:46 +0400
+Subject: [PATCH 7/7] Initial QEMU 1.0 support
+
+---
+
+diff --git a/About_Window.ui b/About_Window.ui
+index 69718cc..352a9b9 100644
+--- a/About_Window.ui
++++ b/About_Window.ui
+@@ -7,8 +7,8 @@
+ <rect>
+ <x>0</x>
+ <y>0</y>
+- <width>477</width>
+- <height>539</height>
++ <width>475</width>
++ <height>537</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+@@ -117,7 +117,7 @@ border-top-right-radius: 18px;
+ <string/>
+ </property>
+ <property name="pixmap">
+- <pixmap resource="shared_images.qrc">:/images/aqemu_logo.png</pixmap>
++ <pixmap>:/images/aqemu_logo.png</pixmap>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+@@ -141,12 +141,12 @@ p, a { white-space: pre-wrap; margin-top:0px; margin-bottom:0px; margin-left:0px
+ &lt;body&gt;
+ &lt;b&gt;
+ &lt;p&gt;AQEMU is Frontend for QEMU and KVM Emulators&lt;/p&gt;
+-&lt;p&gt;Version: 0.8.2 of 2011.07.27&lt;/p&gt;
++&lt;p&gt;Version: 0.8.3 of 2012.01.31&lt;/p&gt;
+ &lt;p&gt;License: GNU GPL Version 2&lt;/p&gt;
+ &lt;p&gt;Author: Andrey Rijov (a.k.a. RDron)&lt;/p&gt;
+ &lt;p&gt;E-Mail: &lt;a href=&quot;mailto:ANDron142@yandex.ru&quot;&gt;ANDron142@yandex.ru&lt;/a&gt;&lt;/p&gt;
+ &lt;p&gt;Web Site: &lt;a href=&quot;http://sourceforge.net/projects/aqemu/&quot;&gt;http://sourceforge.net/projects/aqemu/&lt;/a&gt;&lt;/p&gt;
+-&lt;p&gt;Supported Emulators:&lt;br&gt;QEMU 0.9.0-0.14.1 and KVM 60-88-0.14.1&lt;/p&gt;
++&lt;p&gt;Supported Emulators:&lt;br&gt;QEMU 0.9.0-0.15-1.0 and KVM 60-88-0.15-1.0&lt;/p&gt;
+ &lt;/b&gt;
+ &lt;/body&gt;
+ &lt;/html&gt;</string>
+@@ -184,23 +184,24 @@ p, a { white-space: pre-wrap; margin-top:0px; margin-bottom:0px; margin-left:0px
+ <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+ &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+ p, li { white-space: pre-wrap; }
+-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'DejaVu Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
++&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Bitstream Vera Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+ &lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
+ &lt;tr&gt;
+ &lt;td style=&quot;border: none;&quot;&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
+ &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:8pt;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ </widget>
+ </item>
+@@ -226,7 +227,7 @@ p, li { white-space: pre-wrap; }
+ <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+ &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+ p, li { white-space: pre-wrap; }
+-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'DejaVu Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
++&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Bitstream Vera Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+ &lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
+ &lt;tr&gt;
+ &lt;td style=&quot;border: none;&quot;&gt;
+@@ -433,32 +434,33 @@ p, li { white-space: pre-wrap; }
+ <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+ &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+ p, li { white-space: pre-wrap; }
+-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'DejaVu Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
++&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Bitstream Vera Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+ &lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
+ &lt;tr&gt;
+ &lt;td style=&quot;border: none;&quot;&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
+ &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:8pt;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
++&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';&quot;&gt;&lt;/p&gt;
+ &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ <property name="openExternalLinks">
+@@ -568,9 +570,7 @@ p, li { white-space: pre-wrap; }
+ <tabstop>Edit_Thanks_To_Text</tabstop>
+ <tabstop>Edit_GPL</tabstop>
+ </tabstops>
+- <resources>
+- <include location="shared_images.qrc"/>
+- </resources>
++ <resources/>
+ <connections>
+ <connection>
+ <sender>Button_OK</sender>
+diff --git a/Emulator_Options_Window.cpp b/Emulator_Options_Window.cpp
+index 423167f..127c8bc 100644
+--- a/Emulator_Options_Window.cpp
++++ b/Emulator_Options_Window.cpp
+@@ -240,6 +240,14 @@ void Emulator_Options_Window::Set_Emulator( const Emulator &emul )
+ ui.CB_Version->setCurrentIndex( 6 );
+ break;
+
++ case VM::QEMU_0_15:
++ ui.CB_Version->setCurrentIndex( 7 );
++ break;
++
++ case VM::QEMU_1_0:
++ ui.CB_Version->setCurrentIndex( 8 );
++ break;
++
+ case VM::KVM_7X:
+ ui.CB_Version->setCurrentIndex( 0 );
+ break;
+@@ -264,6 +272,14 @@ void Emulator_Options_Window::Set_Emulator( const Emulator &emul )
+ ui.CB_Version->setCurrentIndex( 5 );
+ break;
+
++ case VM::KVM_0_15:
++ ui.CB_Version->setCurrentIndex( 6 );
++ break;
++
++ case VM::KVM_1_0:
++ ui.CB_Version->setCurrentIndex( 7 );
++ break;
++
+ default:
+ AQWarning( "void Emulator_Options_Window::Set_Emulator( Emulator emul )",
+ "Version NOT Valid! Use Default" );
+diff --git a/First_Start_Wizard.cpp b/First_Start_Wizard.cpp
+index c427e5a..678054b 100644
+--- a/First_Start_Wizard.cpp
++++ b/First_Start_Wizard.cpp
+@@ -469,7 +469,10 @@ void First_Start_Wizard::on_Button_Find_Emulators_clicked()
+ for( int ix = 0; ix < qemuEmulatorsList.count(); ++ix )
+ {
+ if( qemuEmulatorsList[ix].Get_Version() > maxVer )
++ {
++ maxVer = qemuEmulatorsList[ix].Get_Version();
+ maxVerIndex = ix;
++ }
+ }
+
+ qemuEmulatorsList[ maxVerIndex ].Set_Default( true );
+@@ -492,7 +495,10 @@ void First_Start_Wizard::on_Button_Find_Emulators_clicked()
+ for( int ix = 0; ix < kvmEmulatorsList.count(); ++ix )
+ {
+ if( kvmEmulatorsList[ix].Get_Version() > maxVer )
++ {
++ maxVer = kvmEmulatorsList[ix].Get_Version();
+ maxVerIndex = ix;
++ }
+ }
+
+ kvmEmulatorsList[ maxVerIndex ].Set_Default( true );
+diff --git a/Main_Window.cpp b/Main_Window.cpp
+index 5a8ed7e..a8a22f4 100644
+--- a/Main_Window.cpp
++++ b/Main_Window.cpp
+@@ -57,6 +57,8 @@ QMap<QString, Available_Devices> System_Info::Emulator_QEMU_0_11;
+ QMap<QString, Available_Devices> System_Info::Emulator_QEMU_0_12;
+ QMap<QString, Available_Devices> System_Info::Emulator_QEMU_0_13;
+ QMap<QString, Available_Devices> System_Info::Emulator_QEMU_0_14;
++QMap<QString, Available_Devices> System_Info::Emulator_QEMU_0_15;
++QMap<QString, Available_Devices> System_Info::Emulator_QEMU_1_0;
+
+ QMap<QString, Available_Devices> System_Info::Emulator_KVM_7X;
+ QMap<QString, Available_Devices> System_Info::Emulator_KVM_8X;
+@@ -64,6 +66,8 @@ QMap<QString, Available_Devices> System_Info::Emulator_KVM_0_11;
+ QMap<QString, Available_Devices> System_Info::Emulator_KVM_0_12;
+ QMap<QString, Available_Devices> System_Info::Emulator_KVM_0_13;
+ QMap<QString, Available_Devices> System_Info::Emulator_KVM_0_14;
++QMap<QString, Available_Devices> System_Info::Emulator_KVM_0_15;
++QMap<QString, Available_Devices> System_Info::Emulator_KVM_1_0;
+
+ QList<VM_USB> System_Info::All_Host_USB;
+ QList<VM_USB> System_Info::Used_Host_USB;
+diff --git a/System_Info.cpp b/System_Info.cpp
+index d6d44dd..176257e 100644
+--- a/System_Info.cpp
++++ b/System_Info.cpp
+@@ -1208,6 +1208,8 @@ bool System_Info::Update_VM_Computers_List()
+ System_Info::Emulator_QEMU_0_12 = System_Info::Emulator_QEMU_0_11;
+ System_Info::Emulator_QEMU_0_13 = System_Info::Emulator_QEMU_0_11;
+ System_Info::Emulator_QEMU_0_14 = System_Info::Emulator_QEMU_0_11;
++ System_Info::Emulator_QEMU_0_15 = System_Info::Emulator_QEMU_0_11;
++ System_Info::Emulator_QEMU_1_0 = System_Info::Emulator_QEMU_0_11;
+
+ // KVM 7X
+ ad = Available_Devices();
+@@ -1354,6 +1356,8 @@ bool System_Info::Update_VM_Computers_List()
+
+ System_Info::Emulator_KVM_0_13 = System_Info::Emulator_KVM_0_12;
+ System_Info::Emulator_KVM_0_14 = System_Info::Emulator_KVM_0_12;
++ System_Info::Emulator_KVM_0_15 = System_Info::Emulator_KVM_0_12;
++ System_Info::Emulator_KVM_1_0 = System_Info::Emulator_KVM_0_12;
+
+ return true;
+ }
+@@ -1402,52 +1406,89 @@ VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )
+
+ // This QEMU or KVM?
+ bool emulatorKVM = false;
+- if( path.indexOf("kvm", 0, Qt::CaseInsensitive) != -1 ) emulatorKVM = true;
++ if( path.contains("kvm", Qt::CaseInsensitive) ) emulatorKVM = true;
++ //if( path.contains("qemu", Qt::CaseInsensitive) ) emulatorKVM = false;
+
+ if( emulatorKVM )
+ {
+ QRegExp kvmVer = QRegExp( ".*version\\s+([\\d]+)[.]([\\d]+)[.]([\\d]+).*" );
+ QRegExp kvmVerOldStyle = QRegExp( ".*version.*([\\d]{2,3}).*" );
++ QRegExp kvmVerNewStyle = QRegExp( ".*version\\s+([\\d]+)[.]([\\d]+).*" );
+ QStringList versionLines;
+
+- // KVM version is: X.XX.X or XX ?
++ // KVM version is: X.XX.X or XX or X.X?
+ if( ! kvmVer.exactMatch(line) )
+ {
+- if( ! kvmVerOldStyle.exactMatch(line) )
++ if( ! kvmVerNewStyle.exactMatch(line) )
+ {
+- AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
+- "Cannot Match RegExp!\nData: " + line );
+- AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
+- "Cannot Find KVM Version!" );
+- return VM::Obsolete;
++ if( ! kvmVerOldStyle.exactMatch(line) )
++ {
++ AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
++ "Cannot Match RegExp!\nData: " + line );
++ AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
++ "Cannot Find KVM Version!" );
++ return VM::Obsolete;
++ }
++ else // Version like: 85
++ {
++ versionLines = kvmVerOldStyle.capturedTexts();
++ if( versionLines.count() < 2 )
++ {
++ AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
++ "Cannot get KVM version! Line: " + line );
++ return VM::Obsolete;
++ }
++
++ bool ok = false;
++ int kvmVersion = versionLines[1].toInt( &ok, 10 );
++
++ if( ! ok )
++ {
++ AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
++ "Cannot convert KVM version to int! String: " + versionLines[1] );
++ return VM::Obsolete;
++ }
++
++ if( kvmVersion < 70 ) return VM::Obsolete;
++ else if( kvmVersion >= 70 && kvmVersion < 80 ) return VM::KVM_7X;
++ else if( kvmVersion >= 80 ) return VM::KVM_8X;
++ else
++ {
++ AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
++ QString("KVM version \"%1\"not defined!").arg(kvmVersion) );
++ return VM::Obsolete;
++ }
++ }
+ }
+- else // Version like: 85
++ else // Version like: 1.0
+ {
+- versionLines = kvmVerOldStyle.capturedTexts();
+- if( versionLines.count() < 2 )
++ versionLines = kvmVerNewStyle.capturedTexts();
++ if( versionLines.count() < 3 )
+ {
+ AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
+ "Cannot get KVM version! Line: " + line );
+ return VM::Obsolete;
+ }
+
+- bool ok = false;
+- int kvmVersion = versionLines[1].toInt( &ok, 10 );
++ int major_ver, minor_ver;
++ bool ok1, ok2;
++
++ major_ver = versionLines[1].toInt( &ok1, 10 );
++ minor_ver = versionLines[2].toInt( &ok2, 10 );
+
+- if( ! ok )
++ if( ! (ok1 && ok2) )
+ {
+ AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
+- "Cannot convert KVM version to int! String: " + versionLines[1] );
++ "Cannot Convert to Int! Line: " + versionLines[0] );
+ return VM::Obsolete;
+ }
+
+- if( kvmVersion < 70 ) return VM::Obsolete;
+- else if( kvmVersion >= 70 && kvmVersion < 80 ) return VM::KVM_7X;
+- else if( kvmVersion >= 80 ) return VM::KVM_8X;
++ if( major_ver == 1 && minor_ver == 0 ) return VM::KVM_1_0;
++ else if( major_ver > 1 || (major_ver == 1 && minor_ver > 0) ) return VM::KVM_1_0;
+ else
+ {
+ AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
+- QString("KVM version \"%1\"not defined!").arg(kvmVersion) );
++ QString("KVM Version %1.%2 not defined!").arg(major_ver).arg(minor_ver) );
+ return VM::Obsolete;
+ }
+ }
+@@ -1485,7 +1526,7 @@ VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )
+ else
+ {
+ AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
+- QString("Version %1.%2.%3 not defined!").arg(major_ver).arg(minor_ver).arg(bugfix_ver) );
++ QString("QEMU Version %1.%2.%3 not defined!").arg(major_ver).arg(minor_ver).arg(bugfix_ver) );
+ return VM::Obsolete;
+ }
+ }
+@@ -1493,13 +1534,51 @@ VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )
+ else // QEMU
+ {
+ QRegExp emulVerRegExp = QRegExp( ".*version\\s+([\\d]+)[.]([\\d]+)[.]([\\d]+).*" );
++ QRegExp emulVerRegExpNew = QRegExp( ".*version\\s+([\\d]+)[.]([\\d]+).*" );
++
+ if( ! emulVerRegExp.exactMatch(line) )
+ {
+- AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
+- "Cannot match emulVerRegExp! Line: " + line );
+- return VM::Obsolete;
++ if( ! emulVerRegExpNew.exactMatch(line) )
++ {
++ AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
++ "Cannot match emulVerRegExp! Line: " + line );
++ return VM::Obsolete;
++ }
++ else // Version like: 1.0
++ {
++ QStringList versionLines = emulVerRegExpNew.capturedTexts();
++ if( versionLines.count() < 3 )
++ {
++ AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
++ "Cannot get major_ver, minor_ver vairables!" );
++ return VM::Obsolete;
++ }
++
++ int major_ver, minor_ver;
++ bool ok1, ok2;
++
++ major_ver = versionLines[1].toInt( &ok1, 10 );
++ minor_ver = versionLines[2].toInt( &ok2, 10 );
++
++ if( ! (ok1 && ok2) )
++ {
++ AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
++ "Cannot Convert to Int! Line: " + versionLines[0] );
++ return VM::Obsolete;
++ }
++
++ if( major_ver == 1 && minor_ver == 0 ) return VM::QEMU_1_0;
++ else if( major_ver > 1 || (major_ver == 1 && minor_ver > 0) ) return VM::QEMU_1_0;
++ else
++ {
++ AQError( "VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )",
++ QString("QEMU Version %1.%2 not defined!").arg(major_ver).arg(minor_ver) );
++ return VM::Obsolete;
++ }
++ }
+ }
+
++ // Version like: 0.12.0
+ QStringList versionLines = emulVerRegExp.capturedTexts();
+ if( versionLines.count() < 4 )
+ {
+@@ -1522,7 +1601,7 @@ VM::Emulator_Version System_Info::Get_Emulator_Version( const QString &path )
+ return VM::Obsolete;
+ }
+
+- if( major_ver == 0 && minor_ver < 9 ) return VM::Obsolete;
++ if( major_ver == 0 && minor_ver < 9 ) return VM::Obsolete;
+ else if( major_ver == 0 && minor_ver == 9 && bugfix_ver == 0 ) return VM::QEMU_0_9_0;
+ else if( major_ver == 0 && minor_ver == 9 && bugfix_ver == 1 ) return VM::QEMU_0_9_1;
+ else if( major_ver == 0 && minor_ver == 10 ) return VM::QEMU_0_10;
+@@ -1588,6 +1667,16 @@ QMap<QString, QString> System_Info::Find_QEMU_Binary_Files( const QString &path
+ ++iter;
+ }
+
++ // Next code for QEMU 1.0 in it version 'qemu' binary name changet to 'qemu-system-i386'
++ if( emulFiles["qemu"].isEmpty() )
++ {
++ #ifdef Q_OS_WIN32
++ if( QFile::exists(dirPath + "qemu-system-i386.exe") ) emulFiles[ "qemu" ] = dirPath + "qemu-system-i386.exe";
++ #else
++ if( QFile::exists(dirPath + "qemu-system-i386") ) emulFiles[ "qemu" ] = dirPath + "qemu-system-i386";
++ #endif
++ }
++
+ return emulFiles;
+ }
+
+@@ -2088,6 +2177,14 @@ Available_Devices System_Info::Get_Emulator_Info( const QString &path, bool *ok,
+ default_device = Emulator_QEMU_0_14[ internalName ];
+ break;
+
++ case VM::QEMU_0_15:
++ default_device = Emulator_QEMU_0_15[ internalName ];
++ break;
++
++ case VM::QEMU_1_0:
++ default_device = Emulator_QEMU_1_0[ internalName ];
++ break;
++
+ case VM::KVM_7X:
+ default_device = Emulator_KVM_7X[ internalName ];
+ break;
+@@ -2112,6 +2209,14 @@ Available_Devices System_Info::Get_Emulator_Info( const QString &path, bool *ok,
+ default_device = Emulator_KVM_0_14[ internalName ];
+ break;
+
++ case VM::KVM_0_15:
++ default_device = Emulator_KVM_0_15[ internalName ];
++ break;
++
++ case VM::KVM_1_0:
++ default_device = Emulator_KVM_1_0[ internalName ];
++ break;
++
+ default:
+ AQError( "Available_Devices System_Info::Get_Emulator_Info( const QString &path, bool *ok,"
+ "VM::Emulator_Version version, const QString &internalName )",
+@@ -2210,7 +2315,7 @@ Available_Devices System_Info::Get_Emulator_Info( const QString &path, bool *ok,
+ tmp_dev.CPU_List = default_device.CPU_List; // FIXME Emul Version
+ AQWarning( "Available_Devices System_Info::Get_Emulator_Info( const QString &path, bool *ok,"
+ "VM::Emulator_Version version, const QString &internalName )",
+- "Cannot get CPU's info from emulator. Use default list" );
++ QString("Cannot get CPU's info from emulator \"%1\". Use default list").arg(path) );
+ }
+
+ // Get Machines Models
+@@ -2271,7 +2376,7 @@ Available_Devices System_Info::Get_Emulator_Info( const QString &path, bool *ok,
+ tmp_dev.Machine_List = default_device.Machine_List; // FIXME Emul Version
+ AQWarning( "Available_Devices System_Info::Get_Emulator_Info( const QString &path, bool *ok,"
+ "VM::Emulator_Version version, const QString &internalName )",
+- "Cannot get machines info from emulator. Use default list" );
++ QString("Cannot get machines info from emulator \"%1\". Use default list").arg(path) );
+ }
+
+ // -vga
+@@ -2340,6 +2445,9 @@ Available_Devices System_Info::Get_Emulator_Info( const QString &path, bool *ok,
+ tmp = text_stream->readLine();
+ QString qemu_dev_name = "";
+
++ // This target platform support soundhw?
++ if( tmp.contains("not supported") ) break;
++
+ // This description?
+ if( tmp.isEmpty() ||
+ tmp.startsWith("Valid sound card names") ||
+@@ -2367,6 +2475,8 @@ Available_Devices System_Info::Get_Emulator_Info( const QString &path, bool *ok,
+ else if( qemu_dev_name == "adlib" ) tmp_dev.Audio_Card_List.Audio_PC_Speaker = true;
+ else if( qemu_dev_name == "pcspk" ) tmp_dev.Audio_Card_List.Audio_GUS = true;
+ else if( qemu_dev_name == "ac97" ) tmp_dev.Audio_Card_List.Audio_AC97 = true;
++ else if( qemu_dev_name == "hda" ) ; // FIXME
++ else if( qemu_dev_name == "cs4231a" ) ; // FIXME
+ else
+ {
+ if( ! qemu_dev_name.isEmpty() )
+@@ -2438,7 +2548,7 @@ Available_Devices System_Info::Get_Emulator_Info( const QString &path, bool *ok,
+ tmp_dev.Network_Card_List = default_device.Network_Card_List; // FIXME Emul Version
+ AQWarning( "Available_Devices System_Info::Get_Emulator_Info( const QString &path, bool *ok,"
+ "VM::Emulator_Version version, const QString &internalName )",
+- "Cannot get net cards info from emulator. Use default list" );
++ QString("Cannot get net cards info from emulator \"%1\". Use default list").arg(path) );
+ }
+
+ // Return info
+diff --git a/System_Info.h b/System_Info.h
+index b47e452..522ca4e 100644
+--- a/System_Info.h
++++ b/System_Info.h
+@@ -62,6 +62,8 @@ class System_Info
+ static QMap<QString, Available_Devices> Emulator_QEMU_0_12;
+ static QMap<QString, Available_Devices> Emulator_QEMU_0_13;
+ static QMap<QString, Available_Devices> Emulator_QEMU_0_14;
++ static QMap<QString, Available_Devices> Emulator_QEMU_0_15;
++ static QMap<QString, Available_Devices> Emulator_QEMU_1_0;
+
+ static QMap<QString, Available_Devices> Emulator_KVM_7X;
+ static QMap<QString, Available_Devices> Emulator_KVM_8X;
+@@ -69,6 +71,8 @@ class System_Info
+ static QMap<QString, Available_Devices> Emulator_KVM_0_12;
+ static QMap<QString, Available_Devices> Emulator_KVM_0_13;
+ static QMap<QString, Available_Devices> Emulator_KVM_0_14;
++ static QMap<QString, Available_Devices> Emulator_KVM_0_15;
++ static QMap<QString, Available_Devices> Emulator_KVM_1_0;
+
+ private:
+ #ifdef Q_OS_LINUX
+diff --git a/Utils.cpp b/Utils.cpp
+index 36ec8d4..9678462 100644
+--- a/Utils.cpp
++++ b/Utils.cpp
+@@ -513,12 +513,16 @@ VM::Emulator_Version String_To_Emulator_Version( const QString &str )
+ else if( str == "QEMU 0.12.X" ) return VM::QEMU_0_12;
+ else if( str == "QEMU 0.13.X" ) return VM::QEMU_0_13;
+ else if( str == "QEMU 0.14.X" ) return VM::QEMU_0_14;
++ else if( str == "QEMU 0.15.X" ) return VM::QEMU_0_15;
++ else if( str == "QEMU 1.0" ) return VM::QEMU_1_0;
+ else if( str == "KVM 7X" ) return VM::KVM_7X;
+ else if( str == "KVM 8X" ) return VM::KVM_8X;
+ else if( str == "KVM 0.11.X" ) return VM::KVM_0_11;
+ else if( str == "KVM 0.12.X" ) return VM::KVM_0_12;
+ else if( str == "KVM 0.13.X" ) return VM::KVM_0_13;
+ else if( str == "KVM 0.14.X" ) return VM::KVM_0_14;
++ else if( str == "KVM 0.15.X" ) return VM::KVM_0_15;
++ else if( str == "KVM 1.0" ) return VM::KVM_1_0;
+ else if( str == "Obsolete" ) return VM::Obsolete;
+ else
+ {
+@@ -553,6 +557,12 @@ QString Emulator_Version_To_String( VM::Emulator_Version ver )
+ case VM::QEMU_0_14:
+ return "QEMU 0.14.X";
+
++ case VM::QEMU_0_15:
++ return "QEMU 0.15.X";
++
++ case VM::QEMU_1_0:
++ return "QEMU 1.0";
++
+ case VM::KVM_7X:
+ return "KVM 7X";
+
+@@ -571,6 +581,12 @@ QString Emulator_Version_To_String( VM::Emulator_Version ver )
+ case VM::KVM_0_14:
+ return "KVM 0.14.X";
+
++ case VM::KVM_0_15:
++ return "KVM 0.15.X";
++
++ case VM::KVM_1_0:
++ return "KVM 1.0";
++
+ case VM::Obsolete:
+ return "Obsolete";
+
+diff --git a/VM.cpp b/VM.cpp
+index e45fcbb..7a0626e 100644
+--- a/VM.cpp
++++ b/VM.cpp
+@@ -7277,29 +7277,45 @@ void Virtual_Machine::Update_Current_Emulator_Devices()
+ case VM::QEMU_0_14:
+ Current_Emulator_Devices = System_Info::Emulator_QEMU_0_14[ Computer_Type ];
+ break;
++
++ case VM::QEMU_0_15:
++ Current_Emulator_Devices = System_Info::Emulator_QEMU_0_15[ Computer_Type ];
++ break;
++
++ case VM::QEMU_1_0:
++ Current_Emulator_Devices = System_Info::Emulator_QEMU_1_0[ Computer_Type ];
++ break;
+
+ case VM::KVM_7X:
+- Current_Emulator_Devices = System_Info::System_Info::Emulator_KVM_7X[ Computer_Type ];
++ Current_Emulator_Devices = System_Info::Emulator_KVM_7X[ Computer_Type ];
+ break;
+
+ case VM::KVM_8X:
+- Current_Emulator_Devices = System_Info::System_Info::Emulator_KVM_8X[ Computer_Type ];
++ Current_Emulator_Devices = System_Info::Emulator_KVM_8X[ Computer_Type ];
+ break;
+
+ case VM::KVM_0_11:
+- Current_Emulator_Devices = System_Info::System_Info::Emulator_KVM_0_11[ Computer_Type ];
++ Current_Emulator_Devices = System_Info::Emulator_KVM_0_11[ Computer_Type ];
+ break;
+
+ case VM::KVM_0_12:
+- Current_Emulator_Devices = System_Info::System_Info::Emulator_KVM_0_12[ Computer_Type ];
++ Current_Emulator_Devices = System_Info::Emulator_KVM_0_12[ Computer_Type ];
+ break;
+
+ case VM::KVM_0_13:
+- Current_Emulator_Devices = System_Info::System_Info::Emulator_KVM_0_13[ Computer_Type ];
++ Current_Emulator_Devices = System_Info::Emulator_KVM_0_13[ Computer_Type ];
+ break;
+
+ case VM::KVM_0_14:
+- Current_Emulator_Devices = System_Info::System_Info::Emulator_KVM_0_14[ Computer_Type ];
++ Current_Emulator_Devices = System_Info::Emulator_KVM_0_14[ Computer_Type ];
++ break;
++
++ case VM::KVM_0_15:
++ Current_Emulator_Devices = System_Info::Emulator_KVM_0_15[ Computer_Type ];
++ break;
++
++ case VM::KVM_1_0:
++ Current_Emulator_Devices = System_Info::Emulator_KVM_1_0[ Computer_Type ];
+ break;
+
+ default:
+diff --git a/VM_Devices.cpp b/VM_Devices.cpp
+index 09def34..3ed8f62 100644
+--- a/VM_Devices.cpp
++++ b/VM_Devices.cpp
+@@ -1530,6 +1530,12 @@ const QMap<QString, Available_Devices> &Emulator::Get_Devices() const
+ case VM::QEMU_0_14:
+ return System_Info::Emulator_QEMU_0_14;
+
++ case VM::QEMU_0_15:
++ return System_Info::Emulator_QEMU_0_15;
++
++ case VM::QEMU_1_0:
++ return System_Info::Emulator_QEMU_1_0;
++
+ case VM::KVM_7X:
+ return System_Info::Emulator_KVM_7X;
+
+@@ -1548,6 +1554,12 @@ const QMap<QString, Available_Devices> &Emulator::Get_Devices() const
+ case VM::KVM_0_14:
+ return System_Info::Emulator_KVM_0_14;
+
++ case VM::KVM_0_15:
++ return System_Info::Emulator_KVM_0_15;
++
++ case VM::KVM_1_0:
++ return System_Info::Emulator_KVM_1_0;
++
+ default:
+ AQError( "const QMap<QString, Available_Devices> &Emulator::Get_Devices() const",
+ "Emulator Version Incorrect!" );
+diff --git a/VM_Devices.h b/VM_Devices.h
+index 2dfa0cd..c381767 100644
+--- a/VM_Devices.h
++++ b/VM_Devices.h
+@@ -38,8 +38,11 @@ class VM
+
+ // Emulators Version
+ enum Emulator_Version { Obsolete,
+- QEMU_0_9_0, QEMU_0_9_1, QEMU_0_10, QEMU_0_11, QEMU_0_12, QEMU_0_13, QEMU_0_14,
+- KVM_7X, KVM_8X, KVM_0_11, KVM_0_12, KVM_0_13, KVM_0_14 };
++ QEMU_0_9_0, QEMU_0_9_1, QEMU_0_10, QEMU_0_11, QEMU_0_12, QEMU_0_13, QEMU_0_14, QEMU_0_15,
++ QEMU_1_0,
++ KVM_7X, KVM_8X,
++ KVM_0_11, KVM_0_12, KVM_0_13, KVM_0_14, KVM_0_15,
++ KVM_1_0 };
+
+ // Virtual Machine State
+ enum VM_State { VMS_Running, VMS_Power_Off, VMS_Pause, VMS_Saved, VMS_In_Error };
+--
+1.7.8.3
+