Author: schubi2
Date: Mon Jun 23 11:56:02 2008
New Revision: 10443
URL: http://svn.opensuse.org/viewcvs/zypp?rev=10443&view=rev
Log:
show recommended packages
Modified:
trunk/dialogsolver/src/QZyppSolverDialog.cpp
trunk/dialogsolver/src/resgraphview.cpp
trunk/dialogsolver/src/restreewidget.cpp
trunk/dialogsolver/src/restreewidget.h
trunk/dialogsolver/src/solvertree.cpp
trunk/dialogsolver/src/solvertree.h
Modified: trunk/dialogsolver/src/QZyppSolverDialog.cpp
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/dialogsolver/src/QZyppSolverDialog.cpp?rev=10443&r1=10442&r2=10443&view=diff
==============================================================================
--- trunk/dialogsolver/src/QZyppSolverDialog.cpp (original)
+++ trunk/dialogsolver/src/QZyppSolverDialog.cpp Mon Jun 23 11:56:02 2008
@@ -72,7 +72,7 @@
// show the results
QHBoxLayout* layout = new QHBoxLayout (this);
- solvertree = new SolverTree(this, resolver);
+ solvertree = new SolverTree(this, resolver,item);
layout->addWidget( solvertree->getView());
selectItem(item);
pool.proxy().restoreState(); // Restore old state
Modified: trunk/dialogsolver/src/resgraphview.cpp
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/dialogsolver/src/resgraphview.cpp?rev=10443&r1=10442&r2=10443&view=diff
==============================================================================
--- trunk/dialogsolver/src/resgraphview.cpp (original)
+++ trunk/dialogsolver/src/resgraphview.cpp Mon Jun 23 11:56:02 2008
@@ -41,8 +41,6 @@
#include
#include
#include "zypp/ZYppFactory.h"
-#include "zypp/ResFilters.h"
-#include "zypp/base/Algorithm.h"
#include "getText.h"
#define LABEL_WIDTH 160
@@ -732,22 +730,6 @@
m_CompleteView->updateCurrentRect();
}
-
-struct UndoTransact : public resfilter::PoolItemFilterFunctor
-{
- ResStatus::TransactByValue resStatus;
- UndoTransact ( const ResStatus::TransactByValue &status)
- :resStatus(status)
- { }
-
- bool operator()( PoolItem item ) // only transacts() items go here
- {
- item.status().resetTransact( resStatus );// clear any solver/establish transactions
- return true;
- }
-};
-
-
void ResGraphView::contentsMouseDoubleClickEvent ( QMouseEvent * e )
{
setFocus();
@@ -760,22 +742,10 @@
it = m_Tree.find(((GraphTreeLabel*)i)->nodename());
if (it!=m_Tree.end()) {
zypp::ResPool pool( zypp::getZYpp()->pool() );
- pool.proxy().saveState(); // Save old pool
const QCursor oldCursor = cursor ();
setCursor (Qt::WaitCursor);
- // resetting all selections
- UndoTransact resetting (ResStatus::USER);
- invokeOnEach ( pool.begin(), pool.end(),
- resfilter::ByTransact( ), // Resetting all transcations
- functor::functorRef(resetting) );
-
- // set the selected item for installation only
- it.data().item.status().setToBeInstalled( ResStatus::USER);
- // and resolve
- zypp::solver::detail::Resolver_Ptr resolver = new zypp::solver::detail::Resolver( pool );
- resolver->resolvePool();
- // show the results
- QZyppSolverDialog *dialog = new QZyppSolverDialog(resolver);
+
+ QZyppSolverDialog *dialog = new QZyppSolverDialog(it.data().item);
dialog->setCaption(getLabelstring(((GraphTreeLabel*)i)->nodename()));
dialog->setMinimumSize ( 600, 600 );
setCursor (oldCursor);
@@ -788,9 +758,6 @@
}
}
}
-
-
-
}
void ResGraphView::contentsMousePressEvent ( QMouseEvent * e )
Modified: trunk/dialogsolver/src/restreewidget.cpp
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/dialogsolver/src/restreewidget.cpp?rev=10443&r1=10442&r2=10443&view=diff
==============================================================================
--- trunk/dialogsolver/src/restreewidget.cpp (original)
+++ trunk/dialogsolver/src/restreewidget.cpp Mon Jun 23 11:56:02 2008
@@ -36,15 +36,21 @@
#include "zypp/Resolver.h"
#include "zypp/ZYppFactory.h"
#include "zypp/ResFilters.h"
+#include "zypp/base/Algorithm.h"
#include "getText.h"
+using namespace zypp;
+
/*
* Constructs a ResTreeWidget as a child of 'parent', with the
* name 'name' and widget flags set to 'f'.
*/
-ResTreeWidget::ResTreeWidget(QWidget* parent, zypp::solver::detail::Resolver_Ptr r, const char* name, Qt::WFlags fl)
+ResTreeWidget::ResTreeWidget(QWidget* parent, zypp::solver::detail::Resolver_Ptr r,
+ const zypp::PoolItem item,
+ const char* name, Qt::WFlags fl)
: QWidget( parent, name, fl )
,resolver(r)
+ ,root_item(item)
{
_lastSelectedItem = "";
if ( !name )
@@ -68,7 +74,10 @@
showInstalled = new QCheckBox(i18n("show installed packages"), checkBox);
showRecommend = new QCheckBox(i18n("show recommended packages"), checkBox);;
showInstalled->setChecked(false);
- showRecommend->setChecked(!resolver->onlyRequires());
+ if (resolver->onlyRequires())
+ showRecommend->setChecked(false);
+ else
+ showRecommend->setChecked(true);
searchBox = new Q3HBox( descriptionBox, "searchBox");
searchBox->setSpacing (5);
@@ -213,14 +222,41 @@
selectItem (item->text( 0 )+"-"+item->text( 1 ) );
}
+struct UndoTransact : public resfilter::PoolItemFilterFunctor
+{
+ ResStatus::TransactByValue resStatus;
+ UndoTransact ( const ResStatus::TransactByValue &status)
+ :resStatus(status)
+ { }
+
+ bool operator()( PoolItem item ) // only transacts() items go here
+ {
+ item.status().resetTransact( resStatus );// clear any solver/establish transactions
+ return true;
+ }
+};
+
+
void ResTreeWidget::showRecommendChanged(int state) {
zypp::ResPool pool( zypp::getZYpp()->pool() );
pool.proxy().saveState(); // Save old pool
const QCursor oldCursor = cursor ();
- setCursor (Qt::WaitCursor);
-
+ setCursor (Qt::WaitCursor);
+ pool.proxy().saveState(); // Save old pool
bool saveRec = resolver->onlyRequires();
+ if (root_item != PoolItem()) {
+ // Make a solver run with the selected item
+ // resetting all selections
+ UndoTransact resetting (ResStatus::USER);
+ invokeOnEach ( pool.begin(), pool.end(),
+ resfilter::ByTransact( ), // Resetting all transcations
+ functor::functorRef(resetting) );
+
+ // set the selected item for installation only
+ root_item.status().setToBeInstalled( ResStatus::USER);
+ }
+
// and resolve
resolver = new zypp::solver::detail::Resolver( pool );
if (!showRecommend->isChecked()) {
@@ -247,9 +283,14 @@
void ResTreeWidget::showInstalledChanged(int state) {
- // state will be regarded while establish the tree
- m_RevGraphView->init();
- buildTree();
+ if (root_item != PoolItem()) {
+ // Make a solver run with the selected item
+ showRecommendChanged(0);
+ } else {
+ // state will be regarded while establish the tree
+ m_RevGraphView->init();
+ buildTree();
+ }
}
Modified: trunk/dialogsolver/src/restreewidget.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/dialogsolver/src/restreewidget.h?rev=10443&r1=10442&r2=10443&view=diff
==============================================================================
--- trunk/dialogsolver/src/restreewidget.h (original)
+++ trunk/dialogsolver/src/restreewidget.h Mon Jun 23 11:56:02 2008
@@ -53,18 +53,22 @@
Q_OBJECT
public:
- ResTreeWidget(QWidget* parent = 0, zypp::solver::detail::Resolver_Ptr r = NULL, const char* name = 0, Qt::WFlags fl = 0 );
+ ResTreeWidget(QWidget* parent = 0, zypp::solver::detail::Resolver_Ptr r = NULL,
+ const zypp::PoolItem item = zypp::PoolItem(),
+ const char* name = 0, Qt::WFlags fl = 0 );
~ResTreeWidget();
QSplitter* m_Splitter;
ResGraphView* m_RevGraphView;
- zypp::solver::detail::Resolver_Ptr resolver;
void selectItem(const zypp::PoolItem item);
void dumpRevtree();
void buildTree();
protected:
+ zypp::solver::detail::Resolver_Ptr resolver;
+ zypp::PoolItem root_item;
+
QVBoxLayout* ResTreeWidgetLayout;
Q3VBox *descriptionBox;
Q3HBox *searchBox;
Modified: trunk/dialogsolver/src/solvertree.cpp
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/dialogsolver/src/solvertree.cpp?rev=10443&r1=10442&r2=10443&view=diff
==============================================================================
--- trunk/dialogsolver/src/solvertree.cpp (original)
+++ trunk/dialogsolver/src/solvertree.cpp Mon Jun 23 11:56:02 2008
@@ -59,14 +59,16 @@
SolverTree::SolverTree( QWidget*treeParent,
- zypp::solver::detail::Resolver_Ptr r)
+ zypp::solver::detail::Resolver_Ptr r,
+ const zypp::PoolItem item)
:m_Valid(false)
,resolver(r)
+ ,root_item(item)
{
m_Data = new StreeData;
m_Data->m_stopTick.restart();
- m_Data->m_TreeDisplay=new ResTreeWidget(treeParent, resolver);
+ m_Data->m_TreeDisplay=new ResTreeWidget(treeParent, resolver, root_item);
m_Data->m_TreeDisplay->setMinimumSize ( 700, 700 );
m_Data->m_TreeDisplay->buildTree();
Modified: trunk/dialogsolver/src/solvertree.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/dialogsolver/src/solvertree.h?rev=10443&r1=10442&r2=10443&view=diff
==============================================================================
--- trunk/dialogsolver/src/solvertree.h (original)
+++ trunk/dialogsolver/src/solvertree.h Mon Jun 23 11:56:02 2008
@@ -32,7 +32,8 @@
class SolverTree{
public:
SolverTree( QWidget*treeParent,
- zypp::solver::detail::Resolver_Ptr r = NULL);
+ zypp::solver::detail::Resolver_Ptr r = NULL,
+ const zypp::PoolItem item = zypp::PoolItem());
virtual ~SolverTree();
bool isValid()const;
@@ -42,6 +43,7 @@
protected:
bool m_Valid;
zypp::solver::detail::Resolver_Ptr resolver;
+ zypp::PoolItem root_item;
StreeData*m_Data;
};
--
To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org
For additional commands, e-mail: zypp-commit+help@opensuse.org