~ubuntu-branches/ubuntu/precise/kdewebdev-kde4/precise

« back to all changes in this revision

Viewing changes to klinkstatus/src/ui/sessionwidget.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Thomas, Richard Birnie, Jonathan Thomas
  • Date: 2008-11-26 19:53:39 UTC
  • mfrom: (1.1.10 upstream)
  • Revision ID: james.westby@ubuntu.com-20081126195339-ngaj5wb31dgthwjh
Tags: 4:4.1.80-0ubuntu1
[ Richard Birnie ]
* New upstream release:
  - Updated build-deps kdelibs5-dev, kdepimlibs5-dev, cmake

[ Jonathan Thomas ]
* Created debian/not-installed, added the kommander headers we don't install
  to it

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
#include "ui/klshistorycombo.h"
62
62
#include "ui/resultssearchbar.h"
63
63
#include "ui/resultview.h"
 
64
#include "ui/httppostdialog.h"
64
65
#include "klsconfig.h"
65
66
#include "global.h"
66
67
#include "engine/linkstatus.h"
72
73
SessionWidget::SessionWidget(int max_simultaneous_connections, int time_out,
73
74
                             QWidget* parent)
74
75
    : PlayableWidgetInterface(parent), search_manager_(0),
75
 
        elapsed_time_timer_(this), 
 
76
        login_dialog_(0), elapsed_time_timer_(this), 
76
77
        max_simultaneous_connections_(max_simultaneous_connections),
77
78
        time_out_(time_out), tree_display_(false), follow_last_link_checked_(KLSConfig::followLastLinkChecked()),
78
79
        check_in_background_(false), start_search_action_(0)
105
106
    pushbutton_url->setIcon(KIcon("document-open"));
106
107
    const int pixmapSize = style()->pixelMetric(QStyle::PM_SmallIconSize);
107
108
    pushbutton_url->setFixedSize(pixmapSize + 8, pixmapSize + 8);
 
109
    
108
110
    connect(pushbutton_url, SIGNAL(clicked()), this, SLOT(slotChooseUrlDialog()));
109
 
 
 
111
    connect(combobox_url, SIGNAL(editTextChanged(const QString&)),
 
112
            this, SLOT(slotLoadSession(const QString&)));
 
113
    connect(combobox_url, SIGNAL(currentIndexChanged(const QString&)),
 
114
            this, SLOT(slotLoadSession(const QString&)));
 
115
    
110
116
    textedit_elapsed_time_value->setText(QTime(0, 0).toString("hh:mm:ss"));
111
117
 
112
118
    resultsSearchBar->hide();
246
252
 
247
253
    // WORKAROUND addToHistory breaks currentText()
248
254
    QString current_text = combobox_url->currentText();
249
 
    insertUrlAtCombobox(current_text);
250
 
    
251
 
    combobox_url->saveItems(); // save on disk
 
255
 
 
256
//     saveSession();
 
257
 
252
258
    progressbar_checker->reset();
253
259
    progressbar_checker->setTextVisible(true);
254
260
    progressbar_checker->setRange(0, 1); // check root page
267
273
 
268
274
    if(!url.protocol().startsWith("http"))
269
275
    {
 
276
        checkBoxLogin->setCheckState(Qt::Unchecked);
 
277
      
270
278
        KUrl dir = url;
271
279
        QString documentRootHint = url.directory().isEmpty() ? "/" : url.directory();
272
280
        dir.setPath(documentRootHint);
274
282
        dialog.exec();
275
283
        search_manager_->setDocumentRoot(dialog.url());
276
284
    }
 
285
    else if(checkBoxLogin->isChecked())
 
286
    {
 
287
        if(login_dialog_) {
 
288
            delete login_dialog_;
 
289
            login_dialog_ = 0;
 
290
        }
 
291
        login_dialog_ = new HttpPostDialog(current_text, this);
 
292
//         login_dialog_->setDomainField(url.host());
 
293
//         login_dialog_->setPostUrlField(url.path());
 
294
        
 
295
        login_dialog_->exec();
 
296
 
 
297
        search_manager_->setIsLoginPostRequest(true);
 
298
        search_manager_->setPostUrl(login_dialog_->postUrl());
 
299
        search_manager_->setPostData(login_dialog_->postData());
 
300
 
 
301
        url = KUrl(url, login_dialog_->postUrl());
 
302
    }
277
303
 
278
304
//     if(!checkbox_recursively->isChecked())
279
305
//     {
329
355
    emit signalSearchStarted();
330
356
 
331
357
    search_manager_->startSearch(url);
 
358
 
 
359
    saveSession();
332
360
}
333
361
 
334
362
void SessionWidget::keyPressEvent(QKeyEvent* e)
533
561
    emit signalSearchPaused();
534
562
}
535
563
 
 
564
void SessionWidget::saveSession()
 
565
{
 
566
    QString current_text = combobox_url->currentText();
 
567
    
 
568
    insertUrlAtCombobox(current_text);
 
569
    combobox_url->saveItems(); // save on disk
 
570
 
 
571
    saveSessionSearchOptions();
 
572
}
 
573
 
 
574
void SessionWidget::slotLoadSession(QString const& /*url*/)
 
575
{
 
576
    loadSession();
 
577
}
 
578
 
 
579
void SessionWidget::loadSession()
 
580
{
 
581
    QString url = combobox_url->currentText();
 
582
 
 
583
    QDomElement element;
 
584
    Global::getInstance()->findCurrentSession(url, element);
 
585
 
 
586
    if(!element.isNull()) {
 
587
        SessionTO sessionTO;
 
588
        sessionTO.load(element);
 
589
 
 
590
        loadSessionTO(sessionTO);
 
591
    }
 
592
}
 
593
 
 
594
void SessionWidget::loadSessionTO(SessionTO const& session)
 
595
{
 
596
    spinbox_depth->setValue(session.depth);
 
597
    checkbox_subdirs_only->setChecked(!session.checkParentFolders);
 
598
    checkbox_external_links->setChecked(session.checkExternalLinks);
 
599
    lineedit_reg_exp->setText(session.regExp);
 
600
    
 
601
//     session.login = checkBoxLogin->isChecked();
 
602
//     if(session.login && login_dialog_) {
 
603
//         session.postUrl = login_dialog_->postUrl();
 
604
//         session.postData = login_dialog_->postData();
 
605
//     }    
 
606
}
 
607
 
 
608
SessionTO SessionWidget::buildSessionTO() const
 
609
{
 
610
    SessionTO session;
 
611
    
 
612
    session.url = combobox_url->currentText();
 
613
    session.depth = spinbox_depth->value();
 
614
    session.checkParentFolders = !checkbox_subdirs_only->isChecked();
 
615
    session.checkExternalLinks = checkbox_external_links->isChecked();
 
616
    session.regExp = lineedit_reg_exp->text();
 
617
    
 
618
    session.login = checkBoxLogin->isChecked();
 
619
    if(session.login && login_dialog_) {
 
620
        session.postUrl = login_dialog_->postUrl();
 
621
        session.postData = login_dialog_->postData();
 
622
    }
 
623
 
 
624
    return session;
 
625
}
 
626
 
 
627
void SessionWidget::saveSessionSearchOptions()
 
628
{
 
629
    SessionTO session = buildSessionTO();
 
630
    
 
631
    QDomDocument& doc = Global::getInstance()->sessionsDocument();
 
632
    session.save(doc);
 
633
    Global::getInstance()->saveSessionsDocument();
 
634
}
 
635
 
536
636
void SessionWidget::insertUrlAtCombobox(QString const& url)
537
637
{
538
638
    combobox_url->addToHistory(url);
579
679
void SessionWidget::slotChooseUrlDialog()
580
680
{
581
681
    setUrl(KFileDialog::getOpenUrl());
 
682
 
 
683
    loadSession();
582
684
}
583
685
 
584
686
void SessionWidget::slotHideSearchPanel()
870
972
    tree_view->expandItem(item);
871
973
}
872
974
 
 
975
 
 
976
 
 
977
QDomDocument SessionTO::save(QDomDocument& _doc) const
 
978
{
 
979
    QDomNode node = _doc.namedItem("sessions");
 
980
    QDomElement sessionsElement;
 
981
    if(!node.isNull() && node.isElement()) {
 
982
        sessionsElement = node.toElement();
 
983
    }
 
984
    else {
 
985
        return _doc;
 
986
    }
 
987
 
 
988
    QDomElement element;
 
989
    Global::getInstance()->findCurrentSession(url, element);
 
990
 
 
991
    if(!element.isNull()) {
 
992
        sessionsElement.removeChild(element);
 
993
    }
 
994
 
 
995
    element = _doc.createElement("session");
 
996
    element.setAttribute("url", url);
 
997
    sessionsElement.appendChild(element);
 
998
 
 
999
    // <url>
 
1000
//     QDomElement child_element = element.ownerDocument().createElement("url");
 
1001
//     child_element.appendChild(element.ownerDocument().createTextNode(url));
 
1002
//     element.appendChild(child_element);
 
1003
 
 
1004
    // <depth>
 
1005
    QDomElement child_element = element.ownerDocument().createElement("depth");
 
1006
    child_element.appendChild(element.ownerDocument().
 
1007
            createTextNode(QString::number(depth)));
 
1008
    element.appendChild(child_element);
 
1009
 
 
1010
    // <check_parent_folders>
 
1011
    child_element = element.ownerDocument().createElement("check_parent_folders");
 
1012
    child_element.appendChild(element.ownerDocument().
 
1013
            createTextNode(checkParentFolders ? "true" : "false"));
 
1014
    element.appendChild(child_element);
 
1015
 
 
1016
    // <check_external_links>
 
1017
    child_element = element.ownerDocument().createElement("check_external_links");
 
1018
    child_element.appendChild(element.ownerDocument().
 
1019
            createTextNode(checkExternalLinks ? "true" : "false"));
 
1020
    element.appendChild(child_element);
 
1021
 
 
1022
    // <check_regular_expression>
 
1023
    child_element = element.ownerDocument().createElement("check_regular_expression");
 
1024
    child_element.appendChild(element.ownerDocument().
 
1025
            createTextNode(regExp));
 
1026
    element.appendChild(child_element);
 
1027
    
 
1028
    if(login) {
 
1029
        // <login>
 
1030
        child_element = element.ownerDocument().createElement("login");
 
1031
        element.appendChild(child_element);
 
1032
 
 
1033
        QDomElement postUrlElement = element.ownerDocument().createElement("postUrl");
 
1034
        child_element.appendChild(postUrlElement);
 
1035
        postUrlElement.appendChild(element.ownerDocument().
 
1036
                createTextNode(postUrl));
 
1037
 
 
1038
        QDomElement postDataElement = element.ownerDocument().createElement("postData");
 
1039
        child_element.appendChild(postDataElement);
 
1040
        postDataElement.appendChild(element.ownerDocument().
 
1041
                createTextNode(postData));
 
1042
    }
 
1043
 
 
1044
    return _doc;
 
1045
}
 
1046
 
 
1047
void SessionTO::load(QDomElement const& sessionElement)
 
1048
{
 
1049
    url = sessionElement.attribute("url");
 
1050
  
 
1051
//     QDomNode node = sessionElement.namedItem("url");
 
1052
//     if(!node.isNull() && node.isElement()) {
 
1053
//         url = node.toElement().text();
 
1054
//     }
 
1055
    
 
1056
    QDomNode node = sessionElement.namedItem("depth");
 
1057
    if(!node.isNull() && node.isElement()) {
 
1058
        depth = node.toElement().text().toInt();
 
1059
    }
 
1060
    
 
1061
    node = sessionElement.namedItem("check_parent_folders");
 
1062
    if(!node.isNull() && node.isElement()) {
 
1063
        checkParentFolders = node.toElement().text() == "true" ? true : false;
 
1064
    }
 
1065
        
 
1066
    node = sessionElement.namedItem("check_external_links");
 
1067
    if(!node.isNull() && node.isElement()) {
 
1068
        checkExternalLinks = node.toElement().text() == "true" ? true : false;
 
1069
    }
 
1070
        
 
1071
    node = sessionElement.namedItem("check_regular_expression");
 
1072
    if(!node.isNull() && node.isElement()) {
 
1073
        regExp = node.toElement().text();
 
1074
    }
 
1075
    
 
1076
    node = sessionElement.namedItem("login");
 
1077
    if(!node.isNull() && node.isElement()) {
 
1078
        login = true;
 
1079
 
 
1080
        QDomNode childNode = node.namedItem("postUrl");
 
1081
        if(!childNode.isNull() && childNode.isElement()) {
 
1082
            postUrl = childNode.toElement().text();
 
1083
        }
 
1084
        
 
1085
        childNode = node.namedItem("postData");
 
1086
        if(!childNode.isNull() && childNode.isElement()) {
 
1087
            postData = childNode.toElement().text().toUtf8();
 
1088
        }
 
1089
    }
 
1090
}
 
1091
 
 
1092
 
 
1093
 
 
1094
 
873
1095
#include "sessionwidget.moc"