OSDN Git Service

impl context menu
authorikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sun, 10 Aug 2003 07:27:26 +0000 (07:27 +0000)
committerikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sun, 10 Aug 2003 07:27:26 +0000 (07:27 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@459 56b19765-1e22-0410-a548-a0f45d66c51a

kita/src/kitathreadtabwidget.cpp
kita/src/kitathreadtabwidget.h
kita/src/part/kitathreadview.cpp
kita/src/part/kitathreadview.h

index 153099a..dd0d222 100644 (file)
 #include "kitathreadview.h"
 
 #include <klibloader.h>
+#include <kpopupmenu.h>
+#include <krun.h>
+
+#include <qclipboard.h>
+#include <qapplication.h>
 
 #define MAX_TABLABEL_LEN 20
 
 KitaThreadTabWidget::KitaThreadTabWidget(QWidget *parent, const char *name, WFlags f)
  : QTabWidget(parent, name, f)
 {
+  setTabBar( new KitaThreadTabBar( this ) );
+
   KLibFactory* factory = KLibLoader::self()->factory( "libkitapart" );
   if( ! factory ) {
     return;
@@ -73,3 +80,38 @@ void KitaThreadTabWidget::connectSignals( KitaThreadView* view )
   connect( view, SIGNAL( showThreadCompleted( const KURL& ) ),
            this, SIGNAL( showThreadCompleted( const KURL& ) ) );
 }
+
+
+KitaThreadTabBar::KitaThreadTabBar( QWidget* parent, const char* name )
+ : QTabBar( parent, name )
+{
+}
+
+KitaThreadTabBar::~KitaThreadTabBar()
+{
+}
+
+void KitaThreadTabBar::contextMenuEvent( QContextMenuEvent* e )
+{
+  KPopupMenu popup( 0 );
+  popup.insertItem( i18n("Open with Web Browser"), 0 );
+  popup.insertItem( i18n("Copy title and URL"), 1 );
+//  popup.insertItem( i18n("Close this tab"), 2 );
+
+  QTabWidget* parent = static_cast<QTabWidget*>( parentWidget() );
+  KitaThreadView* threadView = static_cast<KitaThreadView*>( parent->currentPage() );
+  QClipboard* clipboard = QApplication::clipboard();
+
+  switch( popup.exec( e->globalPos() ) ) {
+  case 0:
+    KRun::runURL( threadView->threadURL(), "text/html" );
+    break;
+  case 1:
+    clipboard->setText( threadView->threadName() + "\n" + threadView->threadURL().url() );
+    break;
+  default:
+    break;
+  }
+
+  qDebug("currentPage = %s", static_cast<const char *>( tab( currentTab() )->text().local8Bit() ) );
+}
index 3639702..3bce52e 100644 (file)
@@ -12,6 +12,7 @@
 #define KITATHREADTABWIDGET_H
 
 #include <qtabwidget.h>
+#include <qtabbar.h>
 #include <kparts/browserextension.h>
 
 class KitaThreadPart;
@@ -49,4 +50,16 @@ signals:
   void showThreadCompleted( const KURL& threadUrl );
 };
 
+class KitaThreadTabBar : public QTabBar
+{
+  Q_OBJECT
+
+public:
+  KitaThreadTabBar( QWidget* parent = 0, const char* name = 0 );
+  ~KitaThreadTabBar();
+
+protected:
+  virtual void contextMenuEvent( QContextMenuEvent* e );
+};
+
 #endif
index e52ed2a..a292e39 100644 (file)
@@ -114,6 +114,11 @@ const QString KitaThreadView::threadName() const
   return m_thread.name();
 }
 
+const KURL KitaThreadView::threadURL() const
+{
+  return m_thread.url();
+}
+
 void KitaThreadView::slotDOMNodeActivated(const DOM::Node &node)
 {
   { //process Anchor tags. Anchor tags not proccessed here cause 'emit KParts::BrowserExtention::openURLRequest()'
index fc5d243..0939396 100644 (file)
@@ -48,6 +48,7 @@ public:
   KitaThreadView( QWidget *parent, const char *name=0 );
   ~KitaThreadView();
   const QString threadName() const;
+  const KURL threadURL() const;
   void searchNext( const QStringList &input );
   void killJob();
   KParts::BrowserExtension* browserExtension();