summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/mail/.cvsignore3
-rw-r--r--noncore/net/mail/accountitem.cpp15
-rw-r--r--noncore/net/mail/accountitem.h1
-rw-r--r--noncore/net/mail/mail.pro11
-rw-r--r--noncore/net/mail/nntpgroups.cpp57
-rw-r--r--noncore/net/mail/nntpgroups.h33
-rw-r--r--noncore/net/mail/nntpgroupsdlg.cpp29
-rw-r--r--noncore/net/mail/nntpgroupsdlg.h24
-rw-r--r--noncore/net/mail/nntpgroupsui.ui88
9 files changed, 256 insertions, 5 deletions
diff --git a/noncore/net/mail/.cvsignore b/noncore/net/mail/.cvsignore
index 4957719..3819f80 100644
--- a/noncore/net/mail/.cvsignore
+++ b/noncore/net/mail/.cvsignore
@@ -30,2 +30,3 @@ selectstoreui.cpp
selectstoreui.h
-
+nntpgroupsui.cpp
+nntpgroupsui.h
diff --git a/noncore/net/mail/accountitem.cpp b/noncore/net/mail/accountitem.cpp
index e925d8d..0d636a4 100644
--- a/noncore/net/mail/accountitem.cpp
+++ b/noncore/net/mail/accountitem.cpp
@@ -4,2 +4,3 @@
#include "newmaildir.h"
+#include "nntpgroupsdlg.h"
#include "defines.h"
@@ -286,2 +287,3 @@ QPopupMenu * NNTPviewItem::getContextMenu()
m->insertItem(QObject::tr("Set offline",contextName),1);
+ m->insertItem(QObject::tr("(Un-)Subscribe groups",contextName),2);
}
@@ -295,2 +297,10 @@ QPopupMenu * NNTPviewItem::getContextMenu()
+void NNTPviewItem::subscribeGroups()
+{
+ NNTPGroupsDlg dlg(account);
+ if (QPEApplication::execDialog(&dlg)== QDialog::Accepted ){
+ refresh();
+ }
+}
+
void NNTPviewItem::disconnect()
@@ -330,2 +340,5 @@ void NNTPviewItem::contextMenuSelected(int which)
break;
+ case 2:
+ subscribeGroups();
+ break;
}
@@ -369,3 +382,3 @@ QPopupMenu * NNTPfolderItem::getContextMenu()
m->insertItem(QObject::tr("Refresh header list",contextName),0);
- m->insertItem(QObject::tr("Move/Copie all mails",contextName),1);
+ m->insertItem(QObject::tr("Copy all postings",contextName),1);
}
diff --git a/noncore/net/mail/accountitem.h b/noncore/net/mail/accountitem.h
index a138c9b..f3c0f5d 100644
--- a/noncore/net/mail/accountitem.h
+++ b/noncore/net/mail/accountitem.h
@@ -98,2 +98,3 @@ protected:
void setOnOffline();
+ void subscribeGroups();
};
diff --git a/noncore/net/mail/mail.pro b/noncore/net/mail/mail.pro
index 7e0de2b..005a839 100644
--- a/noncore/net/mail/mail.pro
+++ b/noncore/net/mail/mail.pro
@@ -16,3 +16,5 @@ HEADERS = defines.h \
selectstore.h \
- selectsmtp.h
+ selectsmtp.h \
+ nntpgroups.h \
+ nntpgroupsdlg.h
@@ -33,3 +35,5 @@ SOURCES = main.cpp \
selectstore.cpp \
- selectsmtp.cpp
+ selectsmtp.cpp \
+ nntpgroups.cpp \
+ nntpgroupsdlg.cpp
@@ -46,3 +50,4 @@ INTERFACES = editaccountsui.ui \
newmaildirui.ui \
- selectstoreui.ui
+ selectstoreui.ui \
+ nntpgroupsui.ui
diff --git a/noncore/net/mail/nntpgroups.cpp b/noncore/net/mail/nntpgroups.cpp
new file mode 100644
index 0000000..97b1985
--- a/dev/null
+++ b/noncore/net/mail/nntpgroups.cpp
@@ -0,0 +1,57 @@
+#include "nntpgroups.h"
+
+#include <libmailwrapper/settings.h>
+
+#include <qlistview.h>
+
+NNTPGroups::NNTPGroups(NNTPaccount *account, QWidget* parent, const char* name, WFlags fl)
+ : NNTPGroupsUI(parent,name,fl),subscribedGroups()
+{
+ m_Account = account;
+ fillGroups();
+}
+
+NNTPGroups::~NNTPGroups()
+{
+
+}
+
+void NNTPGroups::slotGetNG()
+{
+ if (!m_Account) return;
+ GroupListView->clear();
+ NNTPwrapper tmp( m_Account );
+ QStringList list = tmp.listAllNewsgroups();
+ for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
+ QCheckListItem *item;
+ item = new QCheckListItem( GroupListView, (*it), QCheckListItem::CheckBox );
+ if ( subscribedGroups.contains( (*it) ) >= 1 ) {
+ item->setOn( true );
+ }
+ }
+}
+
+void NNTPGroups::fillGroups()
+{
+ if (!m_Account) return;
+ subscribedGroups = m_Account->getGroups();
+ for ( QStringList::Iterator it = subscribedGroups.begin(); it != subscribedGroups.end(); ++it ) {
+ QCheckListItem *item;
+ item = new QCheckListItem( GroupListView, (*it), QCheckListItem::CheckBox );
+ item->setOn( true );
+ }
+}
+
+void NNTPGroups::storeValues()
+{
+ if (!m_Account) return;
+ QListViewItemIterator list_it( GroupListView );
+ subscribedGroups.clear();
+ for ( ; list_it.current(); ++list_it ) {
+ if ( ( (QCheckListItem*)list_it.current() )->isOn() ) {
+ qDebug(list_it.current()->text(0) );
+ subscribedGroups.append( list_it.current()->text(0) );
+ }
+ }
+ m_Account->setGroups( subscribedGroups );
+}
diff --git a/noncore/net/mail/nntpgroups.h b/noncore/net/mail/nntpgroups.h
new file mode 100644
index 0000000..8cc2e8b
--- a/dev/null
+++ b/noncore/net/mail/nntpgroups.h
@@ -0,0 +1,33 @@
+#ifndef __NNTPGROUPS_WINDOW__
+#define __NNTPGROUPS_WINDOW__
+
+#include "nntpgroupsui.h"
+
+#include <libmailwrapper/nntpwrapper.h>
+
+class NNTPaccount;
+class QStringList;
+
+class NNTPGroups:public NNTPGroupsUI
+{
+ Q_OBJECT
+public:
+ NNTPGroups(NNTPaccount *account, QWidget* parent = 0, const char* name = 0, WFlags fl = 0);
+ virtual ~NNTPGroups();
+ /* must be called from external.
+ * it will store the new subscription list into the account
+ * but don't save them, this must be done by the calling class.
+ */
+ void storeValues();
+
+protected slots:
+ virtual void slotGetNG();
+
+protected:
+ virtual void fillGroups();
+
+ NNTPaccount*m_Account;
+ QStringList subscribedGroups;
+};
+
+#endif
diff --git a/noncore/net/mail/nntpgroupsdlg.cpp b/noncore/net/mail/nntpgroupsdlg.cpp
new file mode 100644
index 0000000..752ce3c
--- a/dev/null
+++ b/noncore/net/mail/nntpgroupsdlg.cpp
@@ -0,0 +1,29 @@
+#include "nntpgroupsdlg.h"
+#include "nntpgroups.h"
+
+#include <libmailwrapper/settings.h>
+
+#include <qlayout.h>
+
+NNTPGroupsDlg::NNTPGroupsDlg(NNTPaccount *account,QWidget * parent, const char * name)
+ : QDialog(parent,name,true)
+{
+ setCaption(tr("Subscribed newsgroups"));
+ m_Account = account;
+ QVBoxLayout*dlglayout = new QVBoxLayout(this);
+ dlglayout->setSpacing(2);
+ dlglayout->setMargin(1);
+ groupsWidget = new NNTPGroups(account,this);
+ dlglayout->addWidget(groupsWidget);
+}
+
+NNTPGroupsDlg::~NNTPGroupsDlg()
+{
+}
+
+void NNTPGroupsDlg::accept()
+{
+ groupsWidget->storeValues();
+ m_Account->save();
+ QDialog::accept();
+}
diff --git a/noncore/net/mail/nntpgroupsdlg.h b/noncore/net/mail/nntpgroupsdlg.h
new file mode 100644
index 0000000..a21bac7
--- a/dev/null
+++ b/noncore/net/mail/nntpgroupsdlg.h
@@ -0,0 +1,24 @@
+#ifndef __NNTP_GROUP_DLG_H
+#define __NNTP_GROUP_DLG_H
+
+#include <qdialog.h>
+
+class NNTPGroups;
+class NNTPaccount;
+
+class NNTPGroupsDlg : public QDialog
+{
+ Q_OBJECT
+public:
+ NNTPGroupsDlg(NNTPaccount *account,QWidget * parent=0, const char * name=0);
+ virtual ~NNTPGroupsDlg();
+
+protected:
+ NNTPGroups*groupsWidget;
+ NNTPaccount*m_Account;
+
+protected slots:
+ virtual void accept ();
+};
+
+#endif
diff --git a/noncore/net/mail/nntpgroupsui.ui b/noncore/net/mail/nntpgroupsui.ui
new file mode 100644
index 0000000..93f487b
--- a/dev/null
+++ b/noncore/net/mail/nntpgroupsui.ui
@@ -0,0 +1,88 @@
+<!DOCTYPE UI><UI>
+<class>NNTPGroupsUI</class>
+<widget>
+ <class>QWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>NNTPGroupsUI</cstring>
+ </property>
+ <property stdset="1">
+ <name>geometry</name>
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>356</width>
+ <height>406</height>
+ </rect>
+ </property>
+ <property stdset="1">
+ <name>caption</name>
+ <string>newsgroupslist</string>
+ </property>
+ <property>
+ <name>layoutMargin</name>
+ </property>
+ <property>
+ <name>layoutSpacing</name>
+ </property>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>2</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>2</number>
+ </property>
+ <widget>
+ <class>QListView</class>
+ <column>
+ <property>
+ <name>text</name>
+ <string>Newsgroups</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>GroupListView</cstring>
+ </property>
+ <property>
+ <name>whatsThis</name>
+ <string>List of groups from the server. On start, only subscribed groups are listed.</string>
+ </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>
+ <property>
+ <name>whatsThis</name>
+ <string>Retrieve the list of groups from server</string>
+ </property>
+ </widget>
+ </vbox>
+</widget>
+<connections>
+ <connection>
+ <sender>GetNGButton</sender>
+ <signal>clicked()</signal>
+ <receiver>NNTPGroupsUI</receiver>
+ <slot>slotGetNG()</slot>
+ </connection>
+ <slot access="protected">slotGetNG()</slot>
+</connections>
+</UI>