From ceccb7a4e0c801998025d885138d77bf3a30d66b Mon Sep 17 00:00:00 2001 From: nowrep Date: Fri, 8 Apr 2011 17:27:08 +0200 Subject: [PATCH] Added Duplicate Tab feature --- bin/locale/cs_CZ.qm | Bin 58678 -> 58659 bytes src/webview/tabbar.cpp | 33 +++++----------------- src/webview/tabbar.h | 2 ++ src/webview/tabwidget.cpp | 15 ++++++++-- src/webview/tabwidget.h | 1 + translations/cs_CZ.ts | 56 ++++++++++++++++++-------------------- translations/sk_SK.ts | 56 ++++++++++++++++++-------------------- 7 files changed, 75 insertions(+), 88 deletions(-) diff --git a/bin/locale/cs_CZ.qm b/bin/locale/cs_CZ.qm index 131e92e9eaae9cf9b958a3de7d03cefe90c7bed1..11d36764606951c85c2e91a4b8b4e8e6646514cb 100644 GIT binary patch delta 691 zcmXAkT}V>_6vzL^yU%;QbGQ6pPczLe3L8l>sALZr1|ZC_#Fv2#PQgA{yaC&=n7y^Mk|T|No!ih|n7m?#9!(wgjKz zhsNIpT=i`-(%u%Z(uKB(M|748$U$aqp?pdWej_W<6l(=LC33o8rO%wJ&H}Cw95lcI z!KF-6e|7?}kU#@n$AM50uL&-)ak|Dz2F}&2>WgZ7fYB$MsdZZVgb#z0Kxeh^X=^<& zdr$b1qw?K2H)?OjgrY3#9Mr^FIv<_qmpZ5NQxm?D0*p;>a!JEcouBf!PM=T1yrOqf zKFfwF+QmzTe46GoV}r%7d$qF{DEH}R7QKMt)XgS724;TngwaX2IBK+7ZtHPM)eWWS zlRHB|-U)q1NhUBc$LXS-w)08Rp)BYxKRXRH531YPoa*M}y4Vi#ae{1D4vU`dlYk*k^vqWRkprA7yJ!cu$Vp17 zI8xF9)bAEU_DR*n&O>sk@rFdhs^?;a(@gd~8PdLF^`nJRDXU>4(KadPj;a$Lmx^qI zKxwN~T(}IpJ}P3o%2@kvmsHIa| W&aSQUmYs3ec=-Kde6Vq$-|`;}>)tW| delta 671 zcmXYsUr18{6vofFciy|*>z%tztr4{u%t4?R4INlAvQ&t~2em;^w&9TQ&uq{i%s&yC z5Q)v>60}eg$%l$+&NXXF&XR3v5v+Pq=%ELLC;}^ppey!reh=q6-}jw~1Ur*pZ)IYe zKg(+x08Q@*K!y`hGxVB{bg*JLsr&|U#MK2 z*T};v7^MK~kmLB|Xcj=yf=@?k03uEFnRQ?RSv6)fQn_Y>iqncs5%$CM9Kf)TT{m_C z#O|`6DpkH+qMo$t%q)<^DL6=_oEOj2L(VS$(!|^M0X$D`b0vc|xn8_LoxBrYQi`{u zniAl2Rx=jPzg-6gsWY2y^Ker2jpXr` z;Rrx=EnnDB1Q2~gd4dfUsuL9XJ%8!`X@DEkDz{2@Q$TRw2}%j|7^EVx8n051IFBt< zo^F%ZbYn+W0hmX+d%;CDt&BR;hp?TpB%53#c*g1gv>AfuRVzTElBy&J9-uyHr<^Z@ z8-@V7@`Z?PPE9GKkkqK_7jZ_-TuzZyZ!0JjODyU~$(UH$z11j3th}lE#FxY~xzhlR z{i3`69l)$pZ1zv8y35q5x8rXL>ARSOCRmh_jl#2}boQfKY(tabWidget->widget(m_clickedTab)); if (!webTab) return; - menu.addAction( -#ifdef Q_WS_X11 - style()->standardIcon(QStyle::SP_ArrowBack) -#else - QIcon(":/icons/faenza/back.png") -#endif - ,tr("Back"), this, SLOT(backTab())); - menu.addAction( -#ifdef Q_WS_X11 - style()->standardIcon(QStyle::SP_ArrowForward) -#else - QIcon(":/icons/faenza/forward.png") -#endif - ,tr("Forward"), this, SLOT(forwardTab())); - menu.addAction( + if (p_QupZilla->weView(m_clickedTab)->isLoading()) { + menu.addAction( #ifdef Q_WS_X11 style()->standardIcon(QStyle::SP_BrowserStop) #else QIcon(":/icons/faenza/stop.png") #endif ,tr("Stop Tab"), this, SLOT(stopTab())); - menu.addAction( + } else { + menu.addAction( #ifdef Q_WS_X11 style()->standardIcon(QStyle::SP_BrowserReload) #else QIcon(":/icons/faenza/reload.png") #endif ,tr("Reload Tab"), this, SLOT(reloadTab())); + } + menu.addAction(tr("Duplicate Tab"), this, SLOT(duplicateTab())); menu.addAction(webTab->isPinned() ? tr("Unpin Tab") : tr("Pin Tab"), this, SLOT(pinTab())); menu.addSeparator(); menu.addAction(tr("Reload All Tabs"), tabWidget, SLOT(reloadAllTabs())); @@ -103,16 +93,7 @@ void TabBar::contextMenuRequested(const QPoint &position) menu.addAction(tr("Close Other Tabs"), this, SLOT(closeAllButCurrent())); menu.addAction(QIcon::fromTheme("window-close"),tr("Close"), this, SLOT(closeTab())); menu.addSeparator(); - - if (!p_QupZilla->weView(m_clickedTab)->history()->canGoBack()) - menu.actions().at(2)->setEnabled(false); - - if (!p_QupZilla->weView(m_clickedTab)->history()->canGoForward()) - menu.actions().at(3)->setEnabled(false); - - if (!p_QupZilla->weView(m_clickedTab)->isLoading()) - menu.actions().at(4)->setEnabled(false); - }else{ + } else { menu.addAction(tr("Reload All Tabs"), tabWidget, SLOT(reloadAllTabs())); menu.addAction(tr("Bookmark All Tabs"), p_QupZilla, SLOT(bookmarkAllTabs())); menu.addSeparator(); diff --git a/src/webview/tabbar.h b/src/webview/tabbar.h index cdc0e9c97..35f619231 100644 --- a/src/webview/tabbar.h +++ b/src/webview/tabbar.h @@ -47,6 +47,7 @@ signals: void forwardTab(int index); void closeAllButCurrent(int index); void closeTab(int index); + void duplicateTab(int index); public slots: @@ -58,6 +59,7 @@ private slots: void forwardTab() { emit forwardTab(m_clickedTab); } void closeAllButCurrent() { emit closeAllButCurrent(m_clickedTab); } void closeTab() { emit closeTab(m_clickedTab); } + void duplicateTab() { emit duplicateTab(m_clickedTab); } void bookmarkTab(); void pinTab(); void closeCurrentTab(); diff --git a/src/webview/tabwidget.cpp b/src/webview/tabwidget.cpp index 502ed1aef..b1702732e 100644 --- a/src/webview/tabwidget.cpp +++ b/src/webview/tabwidget.cpp @@ -121,6 +121,7 @@ TabWidget::TabWidget(QupZilla* mainClass, QWidget* parent) : connect(m_tabBar, SIGNAL(stopTab(int)), this, SLOT(stopTab(int))); connect(m_tabBar, SIGNAL(closeTab(int)), this, SLOT(closeTab(int))); connect(m_tabBar, SIGNAL(closeAllButCurrent(int)), this, SLOT(closeAllButCurrent(int))); + connect(m_tabBar, SIGNAL(duplicateTab(int)), this, SLOT(duplicateTab(int))); m_buttonListTabs = new TabListButton(this); m_menuTabs = new QMenu(); @@ -328,6 +329,18 @@ void TabWidget::closeAllButCurrent(int index) } } +void TabWidget::duplicateTab(int index) +{ + QUrl url = weView(index)->url(); + QByteArray history; + QDataStream tabHistoryStream(&history, QIODevice::WriteOnly); + tabHistoryStream << *weView(index)->history(); + + int id = addView(url, tr("New tab"), TabWidget::NewSelectedTab); + QDataStream historyStream(history); + historyStream >> *weView(id)->history(); +} + void TabWidget::restoreClosedTab() { if (m_lastTabUrl.isEmpty()) @@ -460,8 +473,6 @@ bool TabWidget::restoreState(const QByteArray &state) stream >> currentTab; stream >> tabHistory; - qDebug() << "restoring: " << openTabs; - for (int i = 0; i < openTabs.count(); ++i) { QUrl url = QUrl::fromEncoded(openTabs.at(i).toUtf8()); diff --git a/src/webview/tabwidget.h b/src/webview/tabwidget.h index 8add92ee0..7fda3e44e 100644 --- a/src/webview/tabwidget.h +++ b/src/webview/tabwidget.h @@ -61,6 +61,7 @@ public slots: void stopTab(int index) { weView(index)->stop(); } void backTab(int index) { weView(index)->back(); } void forwardTab(int index) { weView(index)->forward(); } + void duplicateTab(int index); void closeAllButCurrent(int index); void restoreClosedTab(); diff --git a/translations/cs_CZ.ts b/translations/cs_CZ.ts index 657006e1f..eb1cb00af 100644 --- a/translations/cs_CZ.ts +++ b/translations/cs_CZ.ts @@ -1058,12 +1058,12 @@ nebyl nalezen! MainApplication - + Last session crashed Poslední relace spadla - + <b>QupZilla crashed :-(</b><br/>Oops, last session of QupZilla ends with its crash. We are very sorry. Would you try to restore saved state? <b>QupZilla spadla :-(</b><br/>Oops, poslední relace QupZilly skončila jejím pádem. Velice se omlouváme. Přejete si obnovit uložený stav? @@ -2773,71 +2773,66 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.TabBar - + New tab Nový panel - - Back - Zpět - - - - Forward - Vpřed - - - + Stop Tab Zastavit panel - + Reload Tab Obnovit panel - + + Duplicate Tab + Duplikovat panel + + + Unpin Tab Odepnout panel - + Pin Tab Připnout panel - - + + Reload All Tabs Close other tabs Obnovit všechny panely - + Bookmark This Tab Přidat panel do záložek + - Bookmark All Tabs Přidat všechny panely do záložek + - Restore Closed Tab Obnovit zavřený panel - + Close Other Tabs Zavřít ostatní panely - + Close Zavřít @@ -2845,32 +2840,33 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku. TabWidget - + Show list of opened tabs Zobrazit seznam otevřených panelů - + Add Tab Nový panel - + Loading... Načítám... - - + + No Named Page Bezejmenná stránka - + Actually You have %1 opened tabs Dohromady máte otevřeno %1 panelů + New tab Nový panel diff --git a/translations/sk_SK.ts b/translations/sk_SK.ts index eee0dd7b5..0846c3760 100644 --- a/translations/sk_SK.ts +++ b/translations/sk_SK.ts @@ -1060,12 +1060,12 @@ p, li { white-space: pre-wrap; } MainApplication - + Last session crashed Posledná relácia spadla - + <b>QupZilla crashed :-(</b><br/>Oops, last session of QupZilla ends with its crash. We are very sorry. Would you try to restore saved state? <b>QupZilla spadla :-(</b><br/>Oops, posledná relácia QupZilly skončila chybou. Prepáčte. Chcete obnoviť uložený stav? @@ -2773,71 +2773,66 @@ Prosím pridajte si nejaký kliknutím na RSS ikonku v navigačnom riadku.TabBar - + New tab Nový panel - - Back - Späť - - - - Forward - Dopredu - - - + Stop Tab Zastaviť panel - + Reload Tab Obnoviť panel - + + Duplicate Tab + + + + Unpin Tab Odopnúť panel - + Pin Tab Pripnúť panel - + Bookmark This Tab Založiť tento panel + - Bookmark All Tabs Založiť všetky panely + - Restore Closed Tab Obnoviť zavretý panel - + Close Other Tabs Zavrieť ostatné panely - - + + Reload All Tabs Restore closed tab Obnoviť všetky panely - + Close Zavrieť @@ -2845,32 +2840,33 @@ Prosím pridajte si nejaký kliknutím na RSS ikonku v navigačnom riadku. TabWidget - + Show list of opened tabs Zobraziť zoznam otvorených panelov - + Add Tab Pridať panel - + Loading... Nahrávam... - - + + No Named Page Stránka bez mena - + Actually You have %1 opened tabs Momentálne otvorených %1 panelov + New tab Nový panel