OSDN Git Service

remove qDebug
[kita/kita.git] / kita / src / favoritelistview.cpp
1 /***************************************************************************
2 *   Copyright (C) 2003 by Hideki Ikemoto                                  *
3 *   ikemo@users.sourceforge.jp                                            *
4 *                                                                         *
5 *   This program is free software; you can redistribute it and/or modify  *
6 *   it under the terms of the GNU General Public License as published by  *
7 *   the Free Software Foundation; either version 2 of the License, or     *
8 *   (at your option) any later version.                                   *
9 ***************************************************************************/
10
11 #include "favoritelistview.h"
12
13 #include "libkita/favoritethreads.h"
14 #include "libkita/kita_misc.h"
15 #include "libkita/signalcollection.h"
16 #include "libkita/datmanager.h"
17 #include "libkita/boardmanager.h"
18
19 #include <qmap.h>
20 #include <qapplication.h>
21 #include <qclipboard.h>
22 #include <qdatetime.h>
23 #include <qtoolbutton.h>
24 #include <qlabel.h>
25
26 #include <klocale.h>
27 #include <kpopupmenu.h>
28 #include <krun.h>
29 #include <kdebug.h>
30 #include <klistview.h>
31
32 FavoriteListView::FavoriteListView( QWidget* parent, const char* name )
33         : Kita::ThreadListView( parent, name )
34 {
35     KindLabel->hide();
36
37     Kita::SignalCollection* signalCollection = Kita::SignalCollection::getInstance();
38     connect( subjectList, SIGNAL( returnPressed( QListViewItem* ) ),
39              SLOT( loadThread( QListViewItem* ) ) );
40     connect( subjectList, SIGNAL( contextMenuRequested( QListViewItem*, const QPoint&, int ) ),
41              SLOT( slotContextMenuRequested( QListViewItem*, const QPoint&, int ) ) );
42     connect( ReloadButton, SIGNAL( clicked() ),
43              SLOT( slotReloadButton() ) );
44     connect( signalCollection, SIGNAL( favoritesUpdated() ),
45              SLOT( update() ) );
46
47     connect( signalCollection, SIGNAL( updateSubjectTab( const KURL& ) ),
48              SLOT( slotUpdateSubject( const KURL& ) ) );
49 }
50
51 FavoriteListView::~FavoriteListView()
52 {}
53
54 void FavoriteListView::update()
55 {
56     // FIXME: KitaSubjectView::loadBoard()¤Ë¥³¥Ô¡¼
57     {
58         m_hitList.clear();
59         m_nextHitIndex = 0;
60         m_prevquery = "";
61     }
62
63     subjectList->clear();
64
65     for( int i = 0; FavoriteThreads::count() > i; i++ ) {
66         QString datURL = FavoriteThreads::getDatURL( i );
67
68         QDateTime since;
69         since.setTime_t( Kita::datToSince( datURL ) );
70
71         int viewPos = Kita::DatManager::getViewPos( datURL );
72         int resNum = Kita::DatManager::getResNum( datURL );
73
74         KListViewItem* item = new KListViewItem( subjectList );
75         item->setText( Col_Board, Kita::BoardManager::boardName( datURL ) );
76         item->setText( Col_Subject, Kita::DatManager::threadName( datURL ) );
77         item->setText( Col_ReadNum, QString( "%1" ).arg( viewPos, 4 ) );
78         if ( resNum > 0 ) {
79             item->setText( Col_ResNum, QString( "%1" ).arg( resNum, 4 ) );
80             if ( resNum != viewPos ) {
81                 item->setText( Col_Unread, QString( "%1" ).arg( resNum - viewPos, 4 ) );
82             }
83         }
84         item->setText( Col_Since, since.toString( "yy/MM/dd hh:mm" ) );
85         item->setText( Col_DatURL, datURL );
86     }
87     subjectList->setSorting( Col_Board );
88 }
89
90 void FavoriteListView::loadThread( QListViewItem* item )
91 {
92     if ( ! item ) return ;
93
94     for( int i = 0; FavoriteThreads::count() > i; i++ ) {
95         QString datURL = FavoriteThreads::getDatURL( i );
96         qDebug("FavoriteListView::loadThread(() datURL = %s", datURL.latin1());
97
98         if ( datURL == item->text( Col_DatURL ) ) {
99             emit openURLRequestExt( datURL, KParts::URLArgs(), "kita_open_2chthread", 0 );
100         }
101     }
102 }
103
104 void FavoriteListView::slotUpdateSubject( const KURL& url )
105 {
106     KURL datURL = Kita::getDatURL( url );
107     for ( QListViewItem * item = subjectList->firstChild(); item; item = item->nextSibling() ) {
108         if ( item->text( Col_DatURL ) == datURL.prettyURL() ) {
109             int resNum = Kita::DatManager::getResNum( datURL );
110             int viewPos = Kita::DatManager::getViewPos( datURL );
111             item->setText( Col_ResNum, QString( "%1" ).arg( resNum, 4 ) );
112             item->setText( Col_ReadNum, QString( "%1" ).arg( viewPos, 4 ) );
113         }
114     }
115 }
116
117 // TODO: KitaSubjectView¥¯¥é¥¹¤ÎƱ¥á¥½¥Ã¥É¤È¤Û¤È¤ó¤ÉƱ¤¸
118 void FavoriteListView::slotContextMenuRequested( QListViewItem* item, const QPoint& point, int )
119 {
120     enum {
121         Menu_OpenWithBrowser,
122         Menu_OpenWithNewTab,
123         Menu_CopyURL,
124         Menu_CopyTitleAndURL,
125         Menu_RemoveFromFavorites
126     };
127
128     if ( item == 0 ) {
129         return ;
130     }
131
132     KPopupMenu popup( 0 );
133     popup.insertItem( i18n( "Open with Web Browser" ), Menu_OpenWithBrowser );
134     popup.insertItem( i18n( "Open with new tab" ), Menu_OpenWithNewTab );
135     popup.insertItem( i18n( "Copy URL" ), Menu_CopyURL );
136     popup.insertItem( i18n( "Copy title and URL" ), Menu_CopyTitleAndURL );
137     popup.insertItem( i18n( "Remove from Favorites" ), Menu_RemoveFromFavorites );
138
139     QString datURL = item->text( Col_DatURL );
140     QString threadURL = Kita::DatManager::threadURL( datURL );
141
142     QClipboard* clipboard = QApplication::clipboard();
143     QString cliptxt;
144
145     switch ( popup.exec( point ) ) {
146     case Menu_OpenWithBrowser:
147         KRun::runURL( Kita::DatManager::threadURL( datURL ), "text/html" );
148         break;
149     case Menu_OpenWithNewTab:
150         emit openURLRequestExt( datURL, KParts::URLArgs(), "kita_open_2chthread", 1 );
151         break;
152     case Menu_CopyURL:
153         clipboard->setText( threadURL );
154         break;
155     case Menu_CopyTitleAndURL:
156         cliptxt = Kita::DatManager::threadName( datURL ) + "\n" + threadURL;
157         clipboard->setText( cliptxt , QClipboard::Clipboard );
158         clipboard->setText( cliptxt , QClipboard::Selection );
159         break;
160     case Menu_RemoveFromFavorites:
161         emit bookmarked( datURL, false );
162         break;
163     default:
164         break;
165     }
166 }
167
168 void FavoriteListView::slotReloadButton()
169 {
170     QValueList<QString> boardList;
171
172     for( int i = 0; FavoriteThreads::count() > i; i++ ) {
173         QString datURL = FavoriteThreads::getDatURL( i );
174         qDebug("FavoriteListView::update() datURL = %s", datURL.latin1());
175         QString boardURL = Kita::datToBoard( datURL );
176         if ( boardList.contains( boardURL ) == 0 ) {
177             boardList.append( boardURL );
178         }
179     }
180
181     QValueList<QString>::const_iterator it2;
182     for ( it2 = boardList.begin(); it2 != boardList.end(); ++it2 ) {
183
184         bool online = TRUE;
185         QPtrList<Kita::Thread> threadList;
186         QPtrList<Kita::Thread> tmpList;
187         Kita::BoardManager::getThreadList( ( *it2 ), FALSE, online, threadList, tmpList );
188     }
189 }
190