[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdewebdev/klinkstatus/src
From:       Paulo Moura Guedes <moura () kdewebdev ! org>
Date:       2008-01-30 16:50:49
Message-ID: 1201711849.217879.29870.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 768790 by mojo:

Add a new action that allows to do background searches, only updating the GUI when \
tthe search is finished. This is much faster and suitable for sites with thousands of \
links, as updating a QTreeWidget is very very slow.

 M  +7 -0      actionmanager.cpp  
 M  +1 -1      engine/searchmanager.cpp  
 M  +1 -0      engine/searchmanager_impl.h  
 M  +4 -1      klinkstatus_part.rc  
 M  +29 -3     ui/sessionwidget.cpp  
 M  +2 -0      ui/sessionwidget.h  
 M  +6 -0      ui/sessionwidgetbase.ui  


--- trunk/KDE/kdewebdev/klinkstatus/src/actionmanager.cpp #768789:768790
@@ -210,6 +210,13 @@
     connect(action, SIGNAL(triggered(bool) ), d->tabWidgetSession, \
SLOT(slotStopSearch()));  action->setShortcut(KShortcut("Ctrl+c"));
     action->setEnabled(false);
+
+    toggle_action  = new KToggleAction(KIcon(), i18n("Search in Background"), this);
+    actionCollection()->addAction("search_in_background", toggle_action );
+//     connect(toggle_action, SIGNAL(triggered(bool)), d->tabWidgetSession, \
SLOT(slotPauseSearch())); +//     toggle_action->setShortcut(KShortcut("Ctrl+p"));
+    toggle_action->setToolTip("Check Links in background and update results when \
finished (faster)"); +    toggle_action->setEnabled(true);
         
     action  = new KAction(KIcon("view-refresh"), i18n("&Broken Links"), this);
     actionCollection()->addAction("recheck_broken_items", action);
--- trunk/KDE/kdewebdev/klinkstatus/src/engine/searchmanager.cpp #768789:768790
@@ -650,7 +650,7 @@
     Q_ASSERT(link);
 
     if(KLSConfig::showMarkupStatus() && link->isHtmlDocument())
-      LinkStatusHelper::validateMarkup(link);
+        LinkStatusHelper::validateMarkup(link);
 
     emit signalLinkChecked(link);
     
--- trunk/KDE/kdewebdev/klinkstatus/src/engine/searchmanager_impl.h #768789:768790
@@ -166,4 +166,5 @@
     return &m_weaver;
 }
 
+
 #endif // SEARCHMANAGER_IMPL_H
--- trunk/KDE/kdewebdev/klinkstatus/src/klinkstatus_part.rc #768789:768790
@@ -32,6 +32,8 @@
             <Action name="pause_search"/>
             <Action name="stop_search"/>
             <Separator/>
+            <Action name="search_in_background"/>
+            <Separator/>
             <Menu name="recheck"><text>Recheck</text>
                 <Action name="recheck_broken_items"/>
                 <Action name="recheck_visible_items"/>
@@ -81,11 +83,12 @@
         <Action name="pause_search"/>
         <Action name="stop_search"/>
         <Separator/>
+        <Action name="search_in_background"/>
+        <Separator/>
         <Action name="hide_search_bar"/>
         <Action name="reset_search_bar"/>
         <Separator/>
         <Action name="follow_last_link_checked"/>
-        <Action name="disable_update_results_table"/>
         <Separator/>
         <Action name="next_view_list"/>
     </ToolBar>
--- trunk/KDE/kdewebdev/klinkstatus/src/ui/sessionwidget.cpp #768789:768790
@@ -75,7 +75,7 @@
         elapsed_time_timer_(this), 
         max_simultaneous_connections_(max_simultaneous_connections),
         time_out_(time_out), tree_display_(false), \
                follow_last_link_checked_(KLSConfig::followLastLinkChecked()),
-        start_search_action_(0)
+        check_in_background_(false), start_search_action_(0)
 {
     setupUi(this);
     
@@ -135,6 +135,11 @@
     if(search_manager_)
         search_manager_->setTimeOut(KLSConfig::timeOut());
 
+    KToggleAction* action = static_cast<KToggleAction*> \
(ActionManager::getInstance()->action("search_in_background")); +    if(action) {
+        check_in_background_ = action->isChecked();
+    }
+        
     //kDebug(23100) << "tree_display_: " << tree_display_;
 }
 
@@ -395,7 +400,14 @@
             textlabel_progressbar->text() == i18n("Stopped"));
     progressbar_checker->setValue(1);
 
-    TreeViewItem* tree_view_item = new TreeViewItem(tree_view, linkstatus);
+    TreeViewItem* tree_view_item = 0;
+    if(check_in_background_) {
+        tree_view_item = new TreeViewItem(tree_view, 0, linkstatus);
+    }
+    else {
+        tree_view_item = new TreeViewItem(tree_view, linkstatus);
+    }      
+
     linkstatus->setTreeViewItem(tree_view_item);
 }
 
@@ -408,7 +420,7 @@
 
     if(!linkstatus->checked())
         return;
-        
+
     TreeViewItem* tree_view_item = 0;
     TreeViewItem* parent_item = linkstatus->parent()->treeViewItem();
     bool match = resultsSearchBar->currentLinkMatcher().matches(*linkstatus);
@@ -441,6 +453,10 @@
     Q_ASSERT(!paused_);
     Q_ASSERT(!stopped_);
 
+    if(check_in_background_) {
+        loadResults();
+    }
+
     KApplication::beep ();
 
     textlabel_progressbar->setText(i18n( "Ready" ));
@@ -819,4 +835,14 @@
     return true;
 }
 
+void SessionWidget::loadResults()
+{
+    Q_ASSERT(check_in_background_);
+
+    LinkStatus* linkstatus_root = search_manager_->linkStatusRoot();
+    QTreeWidgetItem* item = linkstatus_root->treeViewItem();
+    tree_view->insertTopLevelItem(0, item);
+    tree_view->expandItem(item);
+}
+
 #include "sessionwidget.moc"
--- trunk/KDE/kdewebdev/klinkstatus/src/ui/sessionwidget.h #768789:768790
@@ -130,6 +130,7 @@
     void saveCurrentCheckSettings();
     bool pendingActions() const;
     void resetPendingActions();
+    void loadResults();
 
 private:
     KUrl url_to_check_;
@@ -141,6 +142,7 @@
     int time_out_;
     bool tree_display_; // tree/flat result display
     bool follow_last_link_checked_;
+    bool check_in_background_;
     KToggleAction* start_search_action_;
 };
 
--- trunk/KDE/kdewebdev/klinkstatus/src/ui/sessionwidgetbase.ui #768789:768790
@@ -414,6 +414,12 @@
          <verstretch>0</verstretch>
         </sizepolicy>
        </property>
+       <property name="minimumSize" >
+        <size>
+         <width>0</width>
+         <height>200</height>
+        </size>
+       </property>
        <column>
         <property name="text" >
          <string>1</string>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic