OSDN Git Service

add context menu.
authorikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sun, 4 Jan 2004 05:40:32 +0000 (05:40 +0000)
committerikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sun, 4 Jan 2004 05:40:32 +0000 (05:40 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@781 56b19765-1e22-0410-a548-a0f45d66c51a

ChangeLog
kita/src/kitaboardview.cpp
kita/src/kitasubjecttabwidget.cpp
kita/src/kitasubjecttabwidget.h
kita/src/kitasubjectview.cpp
kita/src/kitasubjectview.h

index a533dad..3c6dc82 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
 2004-01-04  Hideki Ikemoto  <ikemo@users.sourceforge.jp>
 
        * get difference data instead of entire data.
+       * add context menu for board tab.
 
 2004-01-01  Hideki Ikemoto  <ikemo@users.sourceforge.jp>
 
index c9d2bef..353760d 100644 (file)
@@ -179,7 +179,7 @@ void KitaBoardView::slotContextMenuRequested( QListViewItem* item, const QPoint&
 
   KPopupMenu popup( 0 );
   popup.insertItem( i18n("Open with Web Browser"), 0 );
-  popup.insertItem( i18n("Open with new tab(broken)"), 1 );
+  popup.insertItem( i18n("Open with New Tab"), 1 );
 
   KURL url = item->text(1);
 
index 74fcab6..29c05bb 100644 (file)
 
 #include "kitasubjecttabwidget.h"
 
+#include <kpopupmenu.h>
+#include <kdebug.h>
+#include <klocale.h>
+#include <krun.h>
+
+#include <qapplication.h>
+#include <qclipboard.h>
+
 KitaSubjectTabWidget::KitaSubjectTabWidget( QWidget* parent, const char* name, WFlags f )
         : QTabWidget( parent, name, f )
 {
+    setTabBar( new Kita::SubjectTabBar( this ) );
     KitaSubjectView * view = new KitaSubjectView( this );
     addTab( view, "        " );
     m_latestView = view;
@@ -25,6 +34,8 @@ KitaSubjectTabWidget::KitaSubjectTabWidget( QWidget* parent, const char* name, W
 
     connect( this, SIGNAL( currentChanged( QWidget* ) ),
              SLOT( slotCurrentChanged( QWidget* ) ) );
+    connect( tabBar(), SIGNAL( deleteMenuSelected( KitaSubjectView* ) ),
+             SLOT( deleteView( KitaSubjectView* ) ) );
 }
 
 KitaSubjectTabWidget::~KitaSubjectTabWidget()
@@ -90,3 +101,57 @@ void KitaSubjectTabWidget::slotCurrentChanged( QWidget* widget )
         m_latestView = static_cast<KitaSubjectView*>( widget );
     }
 }
+
+void KitaSubjectTabWidget::deleteView( KitaSubjectView* view )
+{
+    if ( count() <= 2 ) {
+        return ;
+        // favorite¤È¤³¤ì¤À¤±¤Î¤È¤­¤Ï²¿¤â¤·¤Ê¤¤
+    }
+    removePage( view );
+    delete view;
+
+    // FIXME: favorite¤Ï°ìÈÖº¸¤Ë¤³¤Ê¤¤¤³¤È¤ò²¾Äê
+    setCurrentPage( 0 );
+    m_latestView = static_cast<KitaSubjectView *>( currentPage() );
+}
+
+Kita::SubjectTabBar::SubjectTabBar( QWidget* parent, const char* name )
+        : QTabBar( parent, name )
+{}
+
+Kita::SubjectTabBar::~SubjectTabBar()
+{}
+
+// FIXME: KitaThreadTabWidget¤«¤é¥³¥Ô¡¼
+void Kita::SubjectTabBar::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() );
+    // FIXME: ¤Þ¤È¤â¤ÊȽÄê¤ò»È¤¦¤³¤È
+    if ( QString::compare( parent->currentPage() ->name(), "favoriteTab" ) == 0 ) {
+        return ;
+    }
+    KitaSubjectView* subjectView = static_cast<KitaSubjectView *>( parent->currentPage() );
+    QClipboard* clipboard = QApplication::clipboard();
+
+    switch ( popup.exec( e->globalPos() ) ) {
+    case 0:
+        KRun::runURL( subjectView->boardURL(), "text/html" );
+        break;
+    case 1:
+        clipboard->setText( subjectView->boardName() + "\n" + subjectView->boardURL() );
+        break;
+    case 2:
+        emit deleteMenuSelected( subjectView );
+        break;
+    default:
+        break;
+    }
+
+    kdDebug() << "currentPage = " << tab( currentTab() ) ->text() << endl;
+}
index efb902e..59b9ad8 100644 (file)
@@ -12,6 +12,7 @@
 #define KITASUBJECTTABWIDGET_H
 
 #include <qtabwidget.h>
+#include <qtabbar.h>
 
 #include "favoritelistview.h"
 #include "kitasubjectview.h"
@@ -40,6 +41,7 @@ private:
 
 private slots:
     void slotCurrentChanged( QWidget* widget );
+    void deleteView( KitaSubjectView* view );
 
 signals:
     void signalShowThread( const Kita::Thread* );
@@ -47,4 +49,22 @@ signals:
     void loadBoardCompleted( const KURL& );
 };
 
+namespace Kita
+{
+    class SubjectTabBar : public QTabBar
+    {
+        Q_OBJECT
+
+    public:
+        SubjectTabBar( QWidget* parent = 0, const char* name = 0 );
+        ~SubjectTabBar();
+
+    protected:
+        virtual void contextMenuEvent( QContextMenuEvent* e );
+
+    signals:
+        void deleteMenuSelected( KitaSubjectView* );
+    };
+};
+
 #endif
index 4ccf512..eca5017 100644 (file)
@@ -38,6 +38,7 @@
 
 KitaSubjectView::KitaSubjectView( QWidget* parent, const char* name )
         : Kita::ThreadListView( parent, name )
+        , m_board( 0 )
 {
     connect( subjectList, SIGNAL( contextMenuRequested( QListViewItem*, const QPoint&, int ) ),
              SLOT( slotContextMenuRequested( QListViewItem*, const QPoint&, int ) ) );
@@ -53,6 +54,22 @@ KitaSubjectView::~KitaSubjectView()
 void KitaSubjectView::reloadSubject()
 {}
 
+const QString KitaSubjectView::boardURL()
+{
+    if ( m_board ) {
+        return m_board->url();
+    }
+    return "";
+}
+
+const QString KitaSubjectView::boardName()
+{
+    if ( m_board ) {
+        return m_board->name();
+    }
+    return "";
+}
+
 void KitaSubjectView::loadThread( QListViewItem* item )
 {
     if ( ! item ) return ;
index 3ddf7d8..195943d 100644 (file)
@@ -30,6 +30,8 @@ class KitaSubjectView : public Kita::ThreadListView
 public:
     KitaSubjectView( QWidget* parent, const char* name = 0 );
     ~KitaSubjectView();
+    const QString boardURL();
+    const QString boardName();
 
 public slots:
     void reloadSubject();