summaryrefslogtreecommitdiffabout
path: root/kmicromail
authorzautrix <zautrix>2004-09-16 20:39:34 (UTC)
committer zautrix <zautrix>2004-09-16 20:39:34 (UTC)
commitb44edfb21be0eee91c4f47401e3fe6ff37e4c16c (patch) (side-by-side diff)
treea17655e0e679f67498d9fee6f6a532e9c0f0e9e5 /kmicromail
parentb6bfa63deb15a2600d46a8c68c231f068da1444a (diff)
downloadkdepimpi-b44edfb21be0eee91c4f47401e3fe6ff37e4c16c.zip
kdepimpi-b44edfb21be0eee91c4f47401e3fe6ff37e4c16c.tar.gz
kdepimpi-b44edfb21be0eee91c4f47401e3fe6ff37e4c16c.tar.bz2
better newsgroup handling
Diffstat (limited to 'kmicromail') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/accountitem.cpp21
-rw-r--r--kmicromail/editaccounts.cpp70
-rw-r--r--kmicromail/editaccounts.h3
-rw-r--r--kmicromail/mainwindow.cpp7
-rw-r--r--kmicromail/mainwindow.h1
-rw-r--r--kmicromail/nntpconfigui.ui126
-rw-r--r--kmicromail/opiemail.cpp8
-rw-r--r--kmicromail/opiemail.h1
8 files changed, 186 insertions, 51 deletions
diff --git a/kmicromail/accountitem.cpp b/kmicromail/accountitem.cpp
index 12d047a..7795055 100644
--- a/kmicromail/accountitem.cpp
+++ b/kmicromail/accountitem.cpp
@@ -89,20 +89,20 @@ QPopupMenu * POP3viewItem::getContextMenu()
{
QPopupMenu *m = new QPopupMenu(0);
if (m)
{
if (!account->getOffline())
{
+ m->insertItem(QObject::tr("Get new messages",contextName),GET_NEW_MAILS);
m->insertItem(QObject::tr("Disconnect",contextName),0);
m->insertItem(QObject::tr("Set offline",contextName),1);
- m->insertItem(QObject::tr("Get new messages",contextName),GET_NEW_MAILS);
}
else
{
- m->insertItem(QObject::tr("Set online",contextName),1);
m->insertItem(QObject::tr("Get new messages",contextName),GET_NEW_MAILS);
+ m->insertItem(QObject::tr("Set online",contextName),1);
}
}
return m;
}
void POP3viewItem::disconnect()
@@ -184,12 +184,13 @@ RECBODYP POP3folderItem::fetchBody(const RecMailP&aMail)
QPopupMenu * POP3folderItem::getContextMenu()
{
QPopupMenu *m = new QPopupMenu(0);
if (m)
{
+ m->insertItem(QObject::tr("Get new messages",contextName),GET_NEW_MAILS);
m->insertItem(QObject::tr("Refresh header list",contextName),0);
m->insertItem(QObject::tr("Delete all mails",contextName),1);
m->insertItem(QObject::tr("Move/Copie all mails",contextName),2);
}
return m;
}
@@ -214,12 +215,15 @@ void POP3folderItem::contextMenuSelected(int which)
case 1:
deleteAllMail(pop3->getWrapper(),folder);
break;
case 2:
downloadMails();
break;
+ case GET_NEW_MAILS: // daunlood
+ view->downloadMailsInbox(getFolder() ,pop3->getWrapper());
+ break;
default:
break;
}
}
/**
@@ -510,25 +514,24 @@ QPopupMenu * IMAPviewItem::getContextMenu()
{
QPopupMenu *m = new QPopupMenu(0);
if (m)
{
if (!account->getOffline())
{
+ m->insertItem(QObject::tr("Get new messages",contextName),GET_NEW_MAILS);
m->insertItem(QObject::tr("Refresh folder list",contextName),0);
m->insertItem(QObject::tr("Create new folder",contextName),1);
m->insertSeparator();
m->insertItem(QObject::tr("Disconnect",contextName),2);
m->insertItem(QObject::tr("Set offline",contextName),3);
m->insertSeparator();
- m->insertItem(QObject::tr("Get new messages",contextName),GET_NEW_MAILS);
}
else
{
- m->insertItem(QObject::tr("Set online",contextName),3);
- m->insertSeparator();
m->insertItem(QObject::tr("Get new messages",contextName),GET_NEW_MAILS);
+ m->insertItem(QObject::tr("Set online",contextName),3);
}
}
return m;
}
void IMAPviewItem::createNewFolder()
@@ -666,12 +669,13 @@ QPopupMenu * IMAPfolderItem::getContextMenu()
{
QPopupMenu *m = new QPopupMenu(0);
if (m)
{
if (folder->may_select())
{
+ m->insertItem(QObject::tr("Get new messages",contextName),GET_NEW_MAILS);
m->insertItem(QObject::tr("Refresh header list",contextName),0);
m->insertItem(QObject::tr("Move/Copie all mails",contextName),4);
m->insertItem(QObject::tr("Delete all mails",contextName),1);
}
if (folder->no_inferior()==false)
{
@@ -750,12 +754,19 @@ void IMAPfolderItem::contextMenuSelected(int id)
case 3:
deleteFolder();
break;
case 4:
downloadMails();
break;
+ case GET_NEW_MAILS: // daunlood
+ {
+ AccountView*bl = accountView();
+ if (!bl) return;
+ bl->downloadMailsInbox(getFolder(),imap->getWrapper());
+ }
+ break;
default:
break;
}
}
/**
diff --git a/kmicromail/editaccounts.cpp b/kmicromail/editaccounts.cpp
index d43d23b..733e38a 100644
--- a/kmicromail/editaccounts.cpp
+++ b/kmicromail/editaccounts.cpp
@@ -535,32 +535,69 @@ NNTPconfig::NNTPconfig( NNTPaccount *account, QWidget *parent, const char *name,
{
data = account;
connect( loginBox, SIGNAL( toggled(bool) ), userLine, SLOT( setEnabled(bool) ) );
connect( loginBox, SIGNAL( toggled(bool) ), passLine, SLOT( setEnabled(bool) ) );
connect( GetNGButton, SIGNAL( clicked() ), this, SLOT( slotGetNG() ) );
+ connect( ShowSubcribed, SIGNAL( clicked() ), this, SLOT( slotShowSub() ) );
+ connect( FilterButton, SIGNAL( clicked() ), this, SLOT( slotShowFilter() ) );
fillValues();
connect( sslBox, SIGNAL( toggled(bool) ), SLOT( slotSSL(bool) ) );
}
+void NNTPconfig::slotShowSub()
+{
+ save();
+ data->save();
+ ListViewGroups->clear();
+ for ( QStringList::Iterator it = subscribedGroups.begin(); it != subscribedGroups.end(); ++it ) {
+ QCheckListItem *item;
+ item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox );
+ item->setOn( true );
+ }
+ topLevelWidget()->setCaption( tr("%1 groups subscribed").arg( subscribedGroups.count()));
+}
+void NNTPconfig::slotShowFilter()
+{
+ save();
+ data->save();
+ ListViewGroups->clear();
+ int count = 0;
+ for ( QStringList::Iterator it = allGroups.begin(); it != allGroups.end(); ++it ) {
+ QCheckListItem *item;
+ if ( GroupFilter->text().isEmpty() || (*it).find( GroupFilter->text() ) >= 0 ) {
+ item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox );
+ ++count;
+ if ( subscribedGroups.contains( (*it) ) >= 1 ) {
+ item->setOn( true );
+ }
+ }
+ }
+ topLevelWidget()->setCaption( tr("Filter found %1 groups").arg( count));
+}
void NNTPconfig::slotGetNG() {
save();
data->save();
+ topLevelWidget()->setCaption( tr("Fetching group list..."));
+ qApp->processEvents();
NNTPwrapper* tmp = new NNTPwrapper( data );
- QStringList list = tmp->listAllNewsgroups();
+ allGroups = tmp->listAllNewsgroups();
+ topLevelWidget()->setCaption( tr("Downloaded %1 group names").arg( allGroups.count()));
ListViewGroups->clear();
- for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
- QCheckListItem *item;
- item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox );
- if ( subscribedGroups.contains( (*it) ) >= 1 ) {
- item->setOn( true );
- }
+ for ( QStringList::Iterator it = allGroups.begin(); it != allGroups.end(); ++it ) {
+ QCheckListItem *item;
+ item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox );
+ if ( subscribedGroups.contains( (*it) ) >= 1 ) {
+ item->setOn( true );
+
+ }
}
+ delete tmp;
}
void NNTPconfig::slotSSL( bool enabled )
{
if ( enabled )
{
@@ -597,23 +634,26 @@ void NNTPconfig::save()
data->setPort( portLine->text() );
data->setSSL( sslBox->isChecked() );
data->setLogin( loginBox->isChecked() );
data->setUser( userLine->text() );
data->setPassword( passLine->text() );
- QListViewItemIterator list_it( ListViewGroups );
+ QListViewItemIterator list_it( ListViewGroups );
- QStringList groupList;
- for ( ; list_it.current(); ++list_it ) {
+ for ( ; list_it.current(); ++list_it ) {
- if ( ( (QCheckListItem*)list_it.current() )->isOn() ) {
- groupList.append( list_it.current()->text(0) );
- }
+ if ( ( (QCheckListItem*)list_it.current() )->isOn() ) {
+ if ( subscribedGroups.contains( list_it.current()->text(0) ) < 1 )
+ subscribedGroups.append( list_it.current()->text(0) );
+ } else {
+ if ( subscribedGroups.contains( list_it.current()->text(0) ) >= 1 )
+ subscribedGroups.remove( list_it.current()->text(0) );
+ }
- }
- data->setGroups( groupList );
+ }
+ data->setGroups( subscribedGroups );
}
void NNTPconfig::accept()
{
save();
QDialog::accept();
diff --git a/kmicromail/editaccounts.h b/kmicromail/editaccounts.h
index a9eb19f..6cf842e 100644
--- a/kmicromail/editaccounts.h
+++ b/kmicromail/editaccounts.h
@@ -138,15 +138,18 @@ public slots:
void fillValues();
protected slots:
void slotSSL( bool enabled );
void accept();
void slotGetNG();
+ void slotShowSub();
+ void slotShowFilter();
private:
QStringList subscribedGroups;
+ QStringList allGroups;
void save();
NNTPaccount *data;
clist* list;
};
diff --git a/kmicromail/mainwindow.cpp b/kmicromail/mainwindow.cpp
index d130317..2a67e39 100644
--- a/kmicromail/mainwindow.cpp
+++ b/kmicromail/mainwindow.cpp
@@ -31,14 +31,19 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
menuBar->insertItem( tr( "Mail" ), mailMenu );
settingsMenu = new QPopupMenu( menuBar );
menuBar->insertItem( tr( "Settings" ), settingsMenu );
addToolBar( toolBar );
toolBar->setHorizontalStretchable( true );
+ QAction* getMail = new QAction( tr( "Get all new mails" ), SmallIcon("add"),
+ 0, 0, this );
+ connect(getMail, SIGNAL( activated() ),
+ SLOT( slotGetAllMail() ) );
+ getMail->addTo( mailMenu );
- QAction* getMail = new QAction( tr( "Get new mail" ), SmallIcon("add"),
+ getMail = new QAction( tr( "Get new messages" ), SmallIcon("add"),
0, 0, this );
getMail->addTo( toolBar );
getMail->addTo( mailMenu );
connect(getMail, SIGNAL( activated() ),
SLOT( slotGetMail() ) );
diff --git a/kmicromail/mainwindow.h b/kmicromail/mainwindow.h
index ff0ff20..35b9c8c 100644
--- a/kmicromail/mainwindow.h
+++ b/kmicromail/mainwindow.h
@@ -39,12 +39,13 @@ protected slots:
virtual void slotSendQueued();
virtual void slotEditAccounts();
virtual void slotShowFolders( bool show );
virtual void refreshMailView(const QValueList<RecMailP>&);
virtual void displayMail();
virtual void slotGetMail() = 0;
+ virtual void slotGetAllMail() = 0;
virtual void slotDeleteMail();
virtual void mailHold(int, QListViewItem *,const QPoint&,int);
virtual void slotAdjustLayout();
virtual void slotEditSettings();
virtual void mailLeftClicked( QListViewItem * );
void showLicence();
diff --git a/kmicromail/nntpconfigui.ui b/kmicromail/nntpconfigui.ui
index 25d564e..16ff6fc 100644
--- a/kmicromail/nntpconfigui.ui
+++ b/kmicromail/nntpconfigui.ui
@@ -8,14 +8,14 @@
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>0</x>
<y>0</y>
- <width>409</width>
- <height>520</height>
+ <width>268</width>
+ <height>347</height>
</rect>
</property>
<property stdset="1">
<name>caption</name>
<string>Configure NNTP</string>
</property>
@@ -25,13 +25,13 @@
<property>
<name>layoutSpacing</name>
</property>
<vbox>
<property stdset="1">
<name>margin</name>
- <number>3</number>
+ <number>2</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>3</number>
</property>
<widget>
@@ -286,49 +286,115 @@
<name>title</name>
<string>Groups</string>
</attribute>
<vbox>
<property stdset="1">
<name>margin</name>
- <number>3</number>
+ <number>2</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>3</number>
</property>
<widget>
- <class>QListView</class>
- <column>
- <property>
- <name>text</name>
- <string>Newsgroup</string>
- </property>
- <property>
- <name>clickable</name>
- <bool>true</bool>
- </property>
- <property>
- <name>resizeable</name>
- <bool>true</bool>
- </property>
- </column>
- <property stdset="1">
- <name>name</name>
- <cstring>ListViewGroups</cstring>
- </property>
- </widget>
- <widget>
- <class>QPushButton</class>
+ <class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
- <cstring>GetNGButton</cstring>
+ <cstring>Layout10</cstring>
</property>
- <property stdset="1">
- <name>text</name>
- <string>Get newsgroup list from server</string>
+ <property>
+ <name>layoutSpacing</name>
</property>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>3</number>
+ </property>
+ <widget>
+ <class>QListView</class>
+ <column>
+ <property>
+ <name>text</name>
+ <string>Newsgroup</string>
+ </property>
+ <property>
+ <name>clickable</name>
+ <bool>true</bool>
+ </property>
+ <property>
+ <name>resizeable</name>
+ <bool>true</bool>
+ </property>
+ </column>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>ListViewGroups</cstring>
+ </property>
+ </widget>
+ <widget>
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>GetNGButton</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Get newsgroup list from server</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout9</cstring>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>FilterButton</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Filter:</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>GroupFilter</cstring>
+ </property>
+ </widget>
+ <widget>
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>ShowSubcribed</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Show subscribed</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
</widget>
</vbox>
</widget>
</widget>
</vbox>
</widget>
diff --git a/kmicromail/opiemail.cpp b/kmicromail/opiemail.cpp
index 4e7c6be..7ccfb65 100644
--- a/kmicromail/opiemail.cpp
+++ b/kmicromail/opiemail.cpp
@@ -250,12 +250,20 @@ void OpieMail::displayMail()
}
else
{
( (MailListViewItem*)item )->setPixmap( 0, QPixmap() );
}
}
+void OpieMail::slotGetAllMail()
+{
+ QListViewItem * item = folderView->firstChild();
+ while ( item ){
+ ((AccountViewItem *)item)->contextMenuSelected( 101 );
+ item = item->nextSibling ();
+ }
+}
void OpieMail::slotGetMail()
{
QListViewItem * item = folderView->currentItem();
if ( ! item ) return;
while ( item->parent () )
item = item->parent ();
diff --git a/kmicromail/opiemail.h b/kmicromail/opiemail.h
index 47264e4..9de95f8 100644
--- a/kmicromail/opiemail.h
+++ b/kmicromail/opiemail.h
@@ -29,12 +29,13 @@ protected slots:
virtual void slotSearchMails();
virtual void slotEditSettings();
virtual void slotEditAccounts();
virtual void displayMail();
virtual void slotDeleteMail();
virtual void slotGetMail();
+ virtual void slotGetAllMail();
virtual void slotDeleteAllMail();
virtual void mailHold(int, QListViewItem *,const QPoint&,int);
virtual void slotShowFolders( bool show );
virtual void refreshMailView(const QValueList<RecMailP>&);
virtual void mailLeftClicked( QListViewItem * );
virtual void slotMoveCopyMail();