From 19a625018be6da7ca9eefee46e256dbf4bd2b290 Mon Sep 17 00:00:00 2001 From: ikemo Date: Thu, 5 Aug 2004 16:10:37 +0000 Subject: [PATCH] >>56 git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@1277 56b19765-1e22-0410-a548-a0f45d66c51a --- kita/src/kitaimgtabwidget.cpp | 498 ++++++++++++++++++++++++++++++++++++++ kita/src/kitaimgtabwidget.h | 148 +++++++++++ kita/src/kitaimgtabwidgetui.rc | 3 + kita/src/kitathreadtabwidgetui.rc | 22 ++ kita/src/kitawritetabwidget.cpp | 250 +++++++++++++++++++ kita/src/kitawritetabwidget.h | 88 +++++++ kita/src/kitawritetabwidgetui.rc | 3 + kita/src/part/kitanaviui.rc | 3 + 8 files changed, 1015 insertions(+) create mode 100644 kita/src/kitaimgtabwidget.cpp create mode 100644 kita/src/kitaimgtabwidget.h create mode 100755 kita/src/kitaimgtabwidgetui.rc create mode 100644 kita/src/kitathreadtabwidgetui.rc create mode 100644 kita/src/kitawritetabwidget.cpp create mode 100644 kita/src/kitawritetabwidget.h create mode 100644 kita/src/kitawritetabwidgetui.rc create mode 100755 kita/src/part/kitanaviui.rc diff --git a/kita/src/kitaimgtabwidget.cpp b/kita/src/kitaimgtabwidget.cpp new file mode 100644 index 0000000..e4cfcec --- /dev/null +++ b/kita/src/kitaimgtabwidget.cpp @@ -0,0 +1,498 @@ +/*************************************************************************** +* Copyright (C) 2004 by Hideki Ikemoto , (c) 2004 by 421 * +* ikemo@users.sourceforge.jp * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +***************************************************************************/ + +/* Kita Image Viewer */ + +#include "kitaimgtabwidget.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + + +/*--------------------------------------------------------------*/ + + +KitaImgTabWidget::KitaImgTabWidget( QWidget* parent, const char* name, WFlags fl ) + :KitaTabWidgetBase( parent, name, fl ) +{ + setXMLFile( "kitaimgtabwidgetui.rc" ); + setTabBar( new KitaImgTabBar( this ) ); + setupActions(); +} + + +KitaImgTabWidget::~KitaImgTabWidget(){} + + +/* public slot */ +void KitaImgTabWidget::slotOpenURL( const KURL& url ) +{ + KitaImgView* view = findImgView( url ); + if( view ){ + setCurrentPage( indexOf( view ) ); + return; + } + + /* create and show new image viewer */ + view = new KitaImgView( url, this, "Viewer", 0L ); + if( view ){ + addTab( view, QIconSet( view->icon(), QIconSet::Small ), "" ); + view->slotShowImage(); + showPage( view ); + + /* resize */ + QRect rt = view->rect(); + if( rt.right()-rt.left() < view->imgWidth() + || rt.bottom()-rt.top() < view->imgHeight() ) view->slotFitToWin(); + } +} + + +/* protected */ /* virtual */ +void KitaImgTabWidget::customEvent( QCustomEvent * e ) +{ + KitaTabWidgetBase::customEvent( e ); + if ( e->type() == EVENT_FitImageToWinEvent ) slotShowFitToWin(); +} + + +/* protected */ /* virtual */ +void KitaImgTabWidget::deleteWidget( QWidget* w ) +{ + KitaTabWidgetBase::deleteWidget( w ); + + if ( count() == 0 ) { + static_cast< KitaDockWidgetBase* >( parentWidget() )->slotHideDock(); + } +} + + +/* private */ +KitaImgView* KitaImgTabWidget::findImgView( const KURL& url ) +{ + int max = count(); + if( max == 0 ) return NULL; + int i = 0; + + while( i < max ){ + KitaImgView* view = isImgView( page ( i ) ); + if( view ){ + if ( view->url() == url ) return view; + } + i++; + } + + return NULL; +} + + +/* private */ +KitaImgView* KitaImgTabWidget::isImgView( QWidget* w ) +{ + KitaImgView* view = NULL; + if( w ){ + if( w->isA( "KitaImgView" ) ) view = static_cast< KitaImgView* >( w ); + } + + return view; +} + + + +/*------------------------------------*/ +/* Image View actions */ + + +/* private */ +void KitaImgTabWidget::setupActions(){ + + new KAction( i18n( "Cancel mosaic" ), + Key_X, + this, + SLOT( slotCancelMosaic() ), + actionCollection(), + "imgviewer_cancelmosaic" ); + + new KAction( i18n( "Fit Image to Window" ), + 0, + this, + SLOT( slotShowFitToWin() ), + actionCollection(), + "imgviewer_fittowin" ); + + new KAction( i18n( "Original Size" ), + 0, + this, + SLOT( slotOriginalSize() ), + actionCollection(), + "imgviewer_original" ); + + new KAction( i18n( "copy URL" ), + 0, + this, + SLOT( slotCopyURL() ), + actionCollection(), + "imgviewer_copyurl" ); + + new KAction( i18n( "Open with Web Browser" ), + 0, + this, + SLOT( slotOpenBrowser() ), + actionCollection(), + "imgviewer_openbrowser" ); +} + + +/* public slot */ +void KitaImgTabWidget::slotShowFitToWin() +{ + KitaImgView* view = isImgView( currentPage() ); + if( view ) view->slotFitToWin(); +} + + +/* public slot */ +void KitaImgTabWidget::slotOriginalSize() +{ + KitaImgView* view = isImgView( currentPage() ); + if( view ) view->slotOriginalSize(); +} + + +/* public slot */ +void KitaImgTabWidget::slotCancelMosaic() +{ + KitaImgView* view = isImgView( currentPage() ); + if( view && view->mosaic() ){ + QRect rt = view->rect(); + int wd = view->imgWidth(); + int ht = view->imgHeight(); + view->slotCancelMosaic(); + + /* resize */ + if( rt.right()-rt.left() < wd + || rt.bottom()-rt.top() < ht ){ + + /* The image is not shown here, and kview can't get the exact image size. + So, post custom event, and fit image size after showing it. */ + FitImageToWinEvent* e = new FitImageToWinEvent(); + QApplication::postEvent( this, e ); // Qt will delete it when done + } + } +} + + + +/* public slot */ +void KitaImgTabWidget::slotCopyURL() +{ + QClipboard* clipboard = QApplication::clipboard(); + + KitaImgView* view = isImgView( currentPage() ); + if( view ){ + QString cliptxt = view->url().prettyURL(); + + clipboard->setText( cliptxt , QClipboard::Clipboard ); + clipboard->setText( cliptxt , QClipboard::Selection ); + } +} + + + +/* public slot */ +void KitaImgTabWidget::slotOpenBrowser(){ + + KitaImgView* view = isImgView( currentPage() ); + if( view ) KRun::runURL( view->url(), "text/html" ); +} + + + + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + + + +KitaImgTabBar::KitaImgTabBar( QWidget* parent, const char* name ) : KitaTabBarBase( parent, name ){} + +KitaImgTabBar::~KitaImgTabBar(){} + +/* popup menu */ /* protected */ /* virtual */ +void KitaImgTabBar::contextMenuEvent( QContextMenuEvent* e ) +{ + KPopupMenu* popup = new KPopupMenu( this ); + KActionCollection * collection = static_cast( parentWidget() )->actionCollection(); + plugDefaultActions( popup ); + + popup->insertSeparator(); + collection->action( "imgviewer_cancelmosaic" )->plug( popup ); + collection->action( "imgviewer_fittowin" )->plug( popup ); + collection->action( "imgviewer_original" )->plug( popup ); + collection->action( "imgviewer_openbrowser" )->plug( popup ); + collection->action( "imgviewer_copyurl" )->plug( popup ); + + popup->insertSeparator(); + collection->action( "tab_configkeys" )->plug( popup ); + + + popup->exec( e->globalPos() ); + delete popup; +} + + + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + + + +KitaImgDock::KitaImgDock( KDockManager* dockManager, + const char* name, + const QPixmap &pixmap, + QWidget* parent, + const QString& strCaption, + const QString& strTabPageLabel, + WFlags f ) + :KitaDockWidgetBase( dockManager, name, pixmap, parent, strCaption, strTabPageLabel, f ){} + + +KitaImgDock::~KitaImgDock(){} + + +/* setup & create KitaImgTabWidget */ /* public */ +KitaImgTabWidget* KitaImgDock::setup() +{ + /* create KitaNaviTabWidget */ + m_imgTab = new KitaImgTabWidget( this, "Image Viewer" ); + setWidget( m_imgTab ); + + return m_imgTab; +} + + +/* public slot */ +void KitaImgDock::slotOpenURL( const KURL& url ) +{ + slotShowDock(); + + if( m_imgTab ) m_imgTab->slotOpenURL( url ); +} + + + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +/* Image Viewer Widget */ +/* KViewViewer is embedded in the viewer */ + +KitaImgView::KitaImgView( const KURL& url, + QWidget* parent, const char* name, WFlags fl ) + : QWidget( parent, name, fl ) +{ + m_url = url; + m_part = NULL; + m_mosaic = TRUE; + m_layout = new QVBoxLayout( this, 0, 0, "BoxLayout"); + m_wd = 0; + m_ht = 0; + + /* download image file */ + QString tmpFile; + if ( KIO::NetAccess::download( m_url, tmpFile ) ){ + + m_orgimg = QImage( tmpFile ); + + if( !m_orgimg.isNull() ){ + + m_wd = m_orgimg.width(); + m_ht = m_orgimg.height(); + + /* create icon */ + m_icon.convertFromImage( m_orgimg.scale( 32, 32, QImage::ScaleMin ) ); + } + + KIO::NetAccess::removeTempFile( tmpFile ); + } +} + + +KitaImgView::~KitaImgView() +{ + if( m_part ) delete m_part->widget(); + if( m_layout ) delete m_layout; +} + + +/* public */ +const KURL KitaImgView::url() const +{ + return m_url; +} + + +/* public */ +const QPixmap& KitaImgView::icon() { + return m_icon; +} + + +/* public */ +const bool KitaImgView::mosaic(){ + return m_mosaic; +} + + +/* public */ +const int KitaImgView::imgWidth(){ + return m_wd; +} + + +/* public */ +const int KitaImgView::imgHeight(){ + return m_ht; +} + + +/* public slot */ +void KitaImgView::slotShowImage() +{ + if( m_orgimg.isNull() ) return; + + createKView(); + + if( m_part ){ + if( m_mosaic ){ + QImage img = m_orgimg.scale( 48, 48, QImage::ScaleMin).scale( m_wd, m_ht, QImage::ScaleMin ); + emit newImage( img ); + } + else{ + emit newImage( m_orgimg ); + m_orgimg = QImage(); /* reset */ + } + } +} + + +/* public slot */ +void KitaImgView::slotCancelMosaic() +{ + if( !m_mosaic ) return; + m_mosaic = FALSE; + slotShowImage(); +} + + +/* public slot */ +void KitaImgView::slotFitToWin() +{ + if( m_part ) m_part->action( "fittowin" )->activate(); +} + + +/* public slot */ +void KitaImgView::slotOriginalSize() +{ + if( m_part ){ + KSelectAction* act = static_cast< KSelectAction* >( m_part->action( "view_zoom" )); + QStringList items = act->items(); + + int i = 0; + QStringList::iterator it = items.begin(); + for ( ; it != items.end(); ++it, ++i ){ + if( (*it) == "100%" ) break; + } + act->setCurrentItem( i ); + act->activate(); + } +} + + + +/* private slot */ +void KitaImgView::slotPopupMenu( KXMLGUIClient* , const QPoint& global, const KURL& , const QString& , mode_t ) +{ + if( !m_part ) return; + + KPopupMenu *popup = new KPopupMenu( this ); + + m_part->action( "fittowin" )->plug( popup ); + m_part->action( "view_zoom" )->plug( popup ); + m_part->action( "zoomin" )->plug( popup ); + m_part->action( "zoomout" )->plug( popup ); + m_part->action( "rotateCW" )->plug( popup ); + m_part->action( "rotateCCW" )->plug( popup ); + + popup->exec( global ); + delete popup; +} + + +/* create kviewviewer and connect signals */ /* private */ +void KitaImgView::createKView() +{ + /* remove the previous part */ + + /* Emitting newImage signal without removing the previous part + always opens the "save as" dialog box. + So, to avoid it, you need to remove the previous part here. */ + if( m_part ) delete m_part->widget(); + m_part = NULL; + + /* create part */ + KLibFactory* factory = KLibLoader::self()->library( "libkviewviewer" )->factory(); + + if( ! factory ){ + QMessageBox::critical( parentWidget(), i18n( " Load Error" ), + QString( i18n( "can't load libkviewviewer.") ) ); + return; + } + + m_part = static_cast + ( factory->create( this, 0L, "KParts::ReadWritePart" ) ); + + if( !m_part ){ + QMessageBox::critical( parentWidget(), i18n( " Load Error" ), + QString( i18n( "can't create KViewViewer.") ) ); + return; + } + + m_layout->addWidget( m_part->widget() ); + + connect( this, SIGNAL( newImage( const QImage & ) ), + m_part, SLOT( newImage( const QImage & ) )); + + KParts::BrowserExtension* ext = KParts::BrowserExtension::childObject( m_part ); + if( ext ){ + connect( ext, SIGNAL( popupMenu( KXMLGUIClient*, const QPoint&, + const KURL&, const QString&, mode_t ) ), + SLOT( slotPopupMenu( KXMLGUIClient* , const QPoint& , const KURL& , const QString& , mode_t ) ) ); + } + + m_part->widget()->show(); +} diff --git a/kita/src/kitaimgtabwidget.h b/kita/src/kitaimgtabwidget.h new file mode 100644 index 0000000..d7ea01d --- /dev/null +++ b/kita/src/kitaimgtabwidget.h @@ -0,0 +1,148 @@ +/*************************************************************************** +* Copyright (C) 2004 by Hideki Ikemoto , (c) 2004 by 421 * +* ikemo@users.sourceforge.jp * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +***************************************************************************/ + +#ifndef KITAIMGTABWIDGET_H +#define KITAIMGTABWIDGET_H + +#include "kitatabwidgetbase.h" + +#include +#include + +class KitaImgView; + +namespace KParts{ + class ReadWritePart; +} + + +/*------------------------------------------------*/ + + +class KitaImgTabWidget : public KitaTabWidgetBase +{ + Q_OBJECT + +public: + KitaImgTabWidget( QWidget* parent, const char* name = 0, WFlags fl = 0 ); + ~KitaImgTabWidget(); + +public slots: + void slotOpenURL( const KURL& url ); + +protected: + virtual void customEvent( QCustomEvent * e ); + virtual void deleteWidget( QWidget* w ); + +private: + KitaImgView* findImgView( const KURL& url ); + KitaImgView* isImgView( QWidget* w ); + + /*------------------------------------*/ + /* Image View actions */ + +private: + void setupActions(); + +public slots: + void slotCancelMosaic(); + void slotShowFitToWin(); + void slotOriginalSize(); + void slotCopyURL(); + void slotOpenBrowser(); +}; + + +/*--------------------------------------------------*/ + + +class KitaImgTabBar : public KitaTabBarBase +{ + Q_OBJECT + +public: + KitaImgTabBar( QWidget* parent = 0, const char* name = 0 ); + ~KitaImgTabBar(); + +protected: + virtual void contextMenuEvent( QContextMenuEvent* e ); +}; + + +/*--------------------------------------------------*/ + + +class KitaImgDock : public KitaDockWidgetBase{ + + Q_OBJECT + KitaImgTabWidget* m_imgTab; +public: + KitaImgDock( KDockManager* dockManager, + const char* name, + const QPixmap &pixmap, + QWidget* parent = 0L, + const QString& strCaption = QString::null, + const QString& strTabPageLabel = QString::fromLatin1( " " ), + WFlags f = 0); + ~KitaImgDock(); + + KitaImgTabWidget* setup(); + +public slots: + void slotOpenURL( const KURL& url ); +}; + + + +/*--------------------------------------------------*/ + + +class KitaImgView: public QWidget +{ + Q_OBJECT + + KParts::ReadWritePart *m_part; + QVBoxLayout* m_layout; + + KURL m_url; + QPixmap m_icon; + QImage m_orgimg; + bool m_mosaic; + int m_wd; + int m_ht; + +public: + KitaImgView( const KURL& url, QWidget* parent, const char* name, WFlags fl ); + ~KitaImgView(); + + const KURL url() const; + const QPixmap& icon(); + const bool mosaic(); + const int imgWidth(); + const int imgHeight(); + +public slots: + void slotShowImage(); + void slotCancelMosaic(); + void slotFitToWin(); + void slotOriginalSize(); + +private slots: + void slotPopupMenu( KXMLGUIClient* , const QPoint& global, const KURL& , const QString& , mode_t ); + +private: + void createKView(); + +signals: + void newImage( const QImage & ); + void popupMenu( KXMLGUIClient*, const QPoint&, const KURL&, const QString&, mode_t ); +}; + +#endif diff --git a/kita/src/kitaimgtabwidgetui.rc b/kita/src/kitaimgtabwidgetui.rc new file mode 100755 index 0000000..05124a9 --- /dev/null +++ b/kita/src/kitaimgtabwidgetui.rc @@ -0,0 +1,3 @@ + + + diff --git a/kita/src/kitathreadtabwidgetui.rc b/kita/src/kitathreadtabwidgetui.rc new file mode 100644 index 0000000..ec11302 --- /dev/null +++ b/kita/src/kitathreadtabwidgetui.rc @@ -0,0 +1,22 @@ + + + + &Thread + + + + + + + + + + + + + + + + + + diff --git a/kita/src/kitawritetabwidget.cpp b/kita/src/kitawritetabwidget.cpp new file mode 100644 index 0000000..d220db2 --- /dev/null +++ b/kita/src/kitawritetabwidget.cpp @@ -0,0 +1,250 @@ +/*************************************************************************** +* Copyright (C) 2004 by Hideki Ikemoto , (c) 2004 by 421 * +* ikemo@users.sourceforge.jp * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +***************************************************************************/ + +#include "libkita/kita_misc.h" +#include "libkita/parsemisc.h" +#include "libkita/signalcollection.h" +#include "libkita/datmanager.h" +#include "libkita/board.h" +#include "kitawritetabwidget.h" +#include "kitawritedialog.h" + +#include +#include +#include +#include +#include + +#include + +/*--------------------------------------------------------------------------------*/ + + +KitaWriteTabWidget::KitaWriteTabWidget( QWidget* parent, const char* name, WFlags f ) + : KitaTabWidgetBase( parent, name, f ) +{ + setXMLFile( "kitawritetabwidgetui.rc" ); + setTabBar( new KitaWriteTabBar( this ) ); + + connectSignals(); +} + + +KitaWriteTabWidget::~KitaWriteTabWidget() {} + + +/* public slot */ +void KitaWriteTabWidget::slotShowWriteView( const KURL& url, + const QString& resStr, + const QString& mailAddr) +{ + KURL datURL = Kita::ParseMisc::parseURLonly( url ); + + /* setup post info */ + int serverTime = Kita::DatManager::getServerTime( datURL ); + if ( !serverTime ) return; + + KURL bbscgiURL = KURL( Kita::DatManager::boardURL( datURL ), "../test/bbs.cgi" ); + bbscgiURL.setProtocol( "http" ); + + Kita::PostInfo info; + info.host = bbscgiURL.host(); + info.bbs = Kita::DatManager::boardID( datURL ); + info.key = Kita::DatManager::threadID( datURL ); + info.time = QString( "%1" ).arg( serverTime ); + info.body = resStr; + info.mail = mailAddr; + if ( ! info.check() ) return; + + // TODO: machiBBS kakiko support. + if ( Kita::Board::isWritingSupported( datURL ) == false ) + { + QMessageBox::warning( this, QString("<(_ _)>"), + i18n("Can't write to machi BBS in this version." ) ); + return; + } + + /* view exists */ + KitaWriteDialog* view = findWriteView( datURL ); + if ( view ) { + /* clear */ + info = view->postInfo(); + info.body = QString::null; + view->clear( info ); + setCurrentPage( indexOf( view ) ); + return; + } + + /* create new write view & add it to tab */ + QString threadName = Kita::DatManager::threadName( datURL ); + KitaWriteDialog* new_dlg = new KitaWriteDialog( this, "write dialog" ); + new_dlg->setup ( datURL ); + new_dlg->clear( info ); + connect( new_dlg, SIGNAL( closeCurrentTab() ), SLOT( slotCloseCurrentTab() ) ); + addTab( new_dlg, getTabLabel( threadName ) ); + showPage( new_dlg ); +} + + +/* close view which URL is url. */ /* public slot */ +void KitaWriteTabWidget::slotCloseWriteTab( const KURL& url ) +{ + if( count() == 0 ) return; + + KURL datURL = Kita::ParseMisc::parseURLonly( url ); + + KitaWriteDialog* view = findWriteView( datURL ); + if ( view ) slotCloseTab( indexOf( view ) ); +} + + +/* private */ +void KitaWriteTabWidget::connectSignals() +{ + Kita::SignalCollection* signalCollection = Kita::SignalCollection::getInstance(); + + connect( signalCollection, SIGNAL( activateThreadView( const KURL& ) ), + this, SLOT( slotChangeWriteTab( const KURL& ) ) ); + connect( signalCollection, SIGNAL( closeWriteTab( const KURL& ) ), + SLOT( slotCloseWriteTab( const KURL& ))); +} + + +/* private */ +KitaWriteDialog* KitaWriteTabWidget::findWriteView( const KURL& url ) +{ + KURL datURL = Kita::ParseMisc::parseURLonly( url ); + + int max = count(); + if( max == 0 ) return NULL; + int i = 0; + + while( i < max ){ + KitaWriteDialog* view = isWriteView( page ( i ) ); + if( view ){ + if ( view->datURL() == datURL ) return view; + } + i++; + } + + return NULL; +} + + +/* private */ +KitaWriteDialog* KitaWriteTabWidget::isWriteView( QWidget* w ) +{ + KitaWriteDialog* view = NULL; + if( w ){ + if( w->isA( "KitaWriteDialog" ) ) view = static_cast< KitaWriteDialog* >( w ); + } + + return view; +} + + + +/* private slot */ +void KitaWriteTabWidget::slotChangeWriteTab( const KURL& url ) +{ + if( count() == 0 ) return; + + KURL datURL = Kita::ParseMisc::parseURLonly( url ); + + KitaWriteDialog* view = findWriteView( datURL ); + if ( view ){ + static_cast< KitaDockWidgetBase* >( parentWidget() )->slotShowDockNoActive(); + if( currentPage() != view ) setCurrentPage( indexOf( view ) ); + } + else static_cast< KitaDockWidgetBase* >( parentWidget() )->slotHideDock(); +} + + +/* protected */ /* virtual */ +void KitaWriteTabWidget::deleteWidget( QWidget* w ) +{ + KitaTabWidgetBase::deleteWidget( w ); + + if ( count() == 0 ){ + static_cast< KitaDockWidgetBase* >( parentWidget() )->slotHideDock(); + } +} + + + + +/*---------------------------------------------------------------------*/ +/*---------------------------------------------------------------------*/ +/*---------------------------------------------------------------------*/ + + + +KitaWriteTabBar::KitaWriteTabBar( QWidget* parent, const char* name ) : KitaTabBarBase( parent, name ){} + +KitaWriteTabBar::~KitaWriteTabBar(){} + + +/* popup menu */ /* protected */ /* virtual */ +void KitaWriteTabBar::contextMenuEvent( QContextMenuEvent* e ) +{ + KPopupMenu* popup = new KPopupMenu( this ); + + plugDefaultActions( popup ); + + popup->exec( e->globalPos() ); + delete popup; +} + + + +/*---------------------------------------------------------------------*/ +/*---------------------------------------------------------------------*/ +/*---------------------------------------------------------------------*/ + + +/* Don't forget to call setup later ! */ +KitaWriteDock::KitaWriteDock( KDockManager* dockManager, + const char* name, + const QPixmap &pixmap, + QWidget* parent, + const QString& strCaption, + const QString& strTabPageLabel, + WFlags f ) + :KitaDockWidgetBase( dockManager, name, pixmap, parent, strCaption, strTabPageLabel, f ),m_writeTab( 0 ){} + + +KitaWriteDock::~KitaWriteDock(){} + + +KitaWriteTabWidget* KitaWriteDock::setup() +{ + if( m_writeTab ) return NULL; + m_writeTab = new KitaWriteTabWidget( this, "Write View" ); + setWidget( m_writeTab ); + + Kita::SignalCollection* signalCollection = Kita::SignalCollection::getInstance(); + connect( signalCollection, SIGNAL( showWriteView( const KURL& , const QString&,const QString& ) ), + this, SLOT( slotShowWriteView( const KURL& , const QString&,const QString& ) ) ); + connect( signalCollection, SIGNAL( switchToWritedock() ), + SLOT( slotShowDock() ) ); + + return m_writeTab; +} + + +void KitaWriteDock::slotShowWriteView( const KURL& url, + const QString& resStr, + const QString& mailAddr) +{ + if( !m_writeTab ) return; + + slotShowDock(); + m_writeTab->slotShowWriteView( url, resStr, mailAddr ); +} diff --git a/kita/src/kitawritetabwidget.h b/kita/src/kitawritetabwidget.h new file mode 100644 index 0000000..e0226e5 --- /dev/null +++ b/kita/src/kitawritetabwidget.h @@ -0,0 +1,88 @@ +/*************************************************************************** +* Copyright (C) 2003 by Hideki Ikemoto, 2004 by 421 * +* ikemo@users.sourceforge.jp * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +***************************************************************************/ + +#ifndef KITAWRITETABWIDGET_H +#define KITAWRITETABWIDGET_H + +#include "kitatabwidgetbase.h" + +class KitaWriteDialog; + +/*-----------------------------------------------*/ + + +class KitaWriteTabWidget : public KitaTabWidgetBase +{ + Q_OBJECT + +public: + KitaWriteTabWidget( QWidget* parent = 0, const char* name = 0, WFlags f = 0 ); + ~KitaWriteTabWidget(); + +public slots: + void slotShowWriteView( const KURL& url, const QString& resStr, const QString& mailAddr); + void slotCloseWriteTab( const KURL& url ); + +private: + void connectSignals(); + KitaWriteDialog* findWriteView( const KURL& url ); + KitaWriteDialog* isWriteView( QWidget* w ); + +private slots: + void slotChangeWriteTab( const KURL& url ); + +protected: + virtual void deleteWidget( QWidget* w ); +}; + + +/*--------------------------------------------------*/ + + +class KitaWriteTabBar : public KitaTabBarBase +{ + Q_OBJECT + +public: + KitaWriteTabBar( QWidget* parent = 0, const char* name = 0 ); + ~KitaWriteTabBar(); + +protected: + virtual void contextMenuEvent( QContextMenuEvent* e ); +}; + + +/*------------------------------------------------------------*/ + + +class KitaWriteDock : public KitaDockWidgetBase{ + + Q_OBJECT + KitaWriteTabWidget* m_writeTab; + +public: + KitaWriteDock( KDockManager* dockManager, + const char* name, + const QPixmap &pixmap, + QWidget* parent = 0L, + const QString& strCaption = QString::null, + const QString& strTabPageLabel = QString::fromLatin1( " " ), + WFlags f = 0); + ~KitaWriteDock(); + + KitaWriteTabWidget* setup(); + +public slots: + void slotShowWriteView( const KURL& url, const QString& resStr, const QString& mailAddr); +}; + + + +#endif diff --git a/kita/src/kitawritetabwidgetui.rc b/kita/src/kitawritetabwidgetui.rc new file mode 100644 index 0000000..2d6de55 --- /dev/null +++ b/kita/src/kitawritetabwidgetui.rc @@ -0,0 +1,3 @@ + + + diff --git a/kita/src/part/kitanaviui.rc b/kita/src/part/kitanaviui.rc new file mode 100755 index 0000000..6af5b6b --- /dev/null +++ b/kita/src/part/kitanaviui.rc @@ -0,0 +1,3 @@ + + + -- 2.11.0