From 26b007bba627525b68891d50b1d98015465ca4c4 Mon Sep 17 00:00:00 2001 From: Andrey Rijov 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 @@ 0 0 - 477 - 539 + 475 + 537 @@ -117,7 +117,7 @@ border-top-right-radius: 18px; - :/images/aqemu_logo.png + :/images/aqemu_logo.png Qt::AlignCenter @@ -141,12 +141,12 @@ p, a { white-space: pre-wrap; margin-top:0px; margin-bottom:0px; margin-left:0px <body> <b> <p>AQEMU is Frontend for QEMU and KVM Emulators</p> -<p>Version: 0.8.2 of 2011.07.27</p> +<p>Version: 0.8.3 of 2012.01.31</p> <p>License: GNU GPL Version 2</p> <p>Author: Andrey Rijov (a.k.a. RDron)</p> <p>E-Mail: <a href="mailto:ANDron142@yandex.ru">ANDron142@yandex.ru</a></p> <p>Web Site: <a href="http://sourceforge.net/projects/aqemu/">http://sourceforge.net/projects/aqemu/</a></p> -<p>Supported Emulators:<br>QEMU 0.9.0-0.14.1 and KVM 60-88-0.14.1</p> +<p>Supported Emulators:<br>QEMU 0.9.0-0.15-1.0 and KVM 60-88-0.15-1.0</p> </b> </body> </html> @@ -184,23 +184,24 @@ p, a { white-space: pre-wrap; margin-top:0px; margin-bottom:0px; margin-left:0px <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Bitstream Vera Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> <p style="-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;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p></td></tr></table></body></html> @@ -226,7 +227,7 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Bitstream Vera Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> @@ -433,32 +434,33 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Bitstream Vera Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> <p style="-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;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> +<p style="-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';"></p> <p style="-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';"></p></td></tr></table></body></html> @@ -568,9 +570,7 @@ p, li { white-space: pre-wrap; } Edit_Thanks_To_Text Edit_GPL - - - + Button_OK 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 System_Info::Emulator_QEMU_0_11; QMap System_Info::Emulator_QEMU_0_12; QMap System_Info::Emulator_QEMU_0_13; QMap System_Info::Emulator_QEMU_0_14; +QMap System_Info::Emulator_QEMU_0_15; +QMap System_Info::Emulator_QEMU_1_0; QMap System_Info::Emulator_KVM_7X; QMap System_Info::Emulator_KVM_8X; @@ -64,6 +66,8 @@ QMap System_Info::Emulator_KVM_0_11; QMap System_Info::Emulator_KVM_0_12; QMap System_Info::Emulator_KVM_0_13; QMap System_Info::Emulator_KVM_0_14; +QMap System_Info::Emulator_KVM_0_15; +QMap System_Info::Emulator_KVM_1_0; QList System_Info::All_Host_USB; QList 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 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 Emulator_QEMU_0_12; static QMap Emulator_QEMU_0_13; static QMap Emulator_QEMU_0_14; + static QMap Emulator_QEMU_0_15; + static QMap Emulator_QEMU_1_0; static QMap Emulator_KVM_7X; static QMap Emulator_KVM_8X; @@ -69,6 +71,8 @@ class System_Info static QMap Emulator_KVM_0_12; static QMap Emulator_KVM_0_13; static QMap Emulator_KVM_0_14; + static QMap Emulator_KVM_0_15; + static QMap 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 &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 &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 &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