Branch: master

faf37227 2014-10-05 18:37:59 Timothy Pearson
Add configuration options to set Akregator read and unread text colors
This resolves Bug 1696
M akregator/src/akregator.kcfg
M akregator/src/akregator_part.cpp
M akregator/src/akregator_view.cpp
M akregator/src/articlelistview.cpp
M akregator/src/configdialog.cpp
M akregator/src/settings_appearance.ui
M akregator/src/trayicon.cpp
M akregator/src/treenodeitem.cpp
diff --git a/akregator/src/akregator.kcfg b/akregator/src/akregator.kcfg
index 4028387..d5ec789 100644
--- a/akregator/src/akregator.kcfg
+++ b/akregator/src/akregator.kcfg
@@ -40,6 +40,12 @@
    <entry key="Fixed Font" type="String" />
    <entry key="Serif Font" type="String" />
    <entry key="Sans Serif Font" type="String" />
+   <entry key="UnreadTextColor" type="Color">
+     <default>0,0,255</default>
+   </entry>
+   <entry key="ReadTextColor" type="Color">
+     <default>255,0,0</default>
+   </entry>
  </group>
  <group name="HTML Settings" >
   <entry key="Fonts" type="StringList" />
diff --git a/akregator/src/akregator_part.cpp b/akregator/src/akregator_part.cpp
index b483765..d7ca0d4 100644
--- a/akregator/src/akregator_part.cpp
+++ b/akregator/src/akregator_part.cpp
@@ -108,6 +108,8 @@
 class Part::ApplyFiltersInterceptor : public ArticleInterceptor
 {
     public:
+    virtual ~ApplyFiltersInterceptor() {}
+
     virtual void processArticle(Article& article)
     {
         Filters::ArticleFilterList list = Kernel::self()->articleFilterList();
diff --git a/akregator/src/akregator_view.cpp b/akregator/src/akregator_view.cpp
index fa86917..a65adf3 100644
--- a/akregator/src/akregator_view.cpp
+++ b/akregator/src/akregator_view.cpp
@@ -109,6 +109,7 @@
 {
     public:
         EditNodePropertiesVisitor(View* view) : m_view(view) {}
+        virtual ~EditNodePropertiesVisitor() {}
 
         virtual bool visitTagNode(TagNode* node)
         {
@@ -142,6 +143,7 @@
 {
     public:
         DeleteNodeVisitor(View* view) : m_view(view) {}
+        virtual ~DeleteNodeVisitor() {}
 
         virtual bool visitTagNode(TagNode* node)
         {
@@ -379,6 +381,13 @@
     // if tagging is hidden, show only feed list
     m_listTabWidget->setViewMode(Settings::showTaggingGUI() ? ListTabWidget::verticalTabs : ListTabWidget::single);
 
+    // In case text colors changed, repaint to apply changes immediately
+    if (m_articleList->isShown()) {
+        m_articleList->repaintContents();
+    }
+    if (m_feedListView->isShown()) {
+        m_feedListView->repaintContents();
+    }
 }
 
 void View::slotOnShutdown()
diff --git a/akregator/src/articlelistview.cpp b/akregator/src/articlelistview.cpp
index 96a2a05..2324096 100644
--- a/akregator/src/articlelistview.cpp
+++ b/akregator/src/articlelistview.cpp
@@ -178,14 +178,13 @@
         TDEListViewItem::paintCell( p, cg, column, width, align );
     else
     {
-        // if article status is unread or new, we change the color: FIXME: make colors configurable
         TQColorGroup cg2(cg);
-    
+
         if (article().status() == Article::Unread)
-            cg2.setColor(TQColorGroup::Text, TQt::blue);
+            cg2.setColor(TQColorGroup::Text, Settings::unreadTextColor());
         else // New
-            cg2.setColor(TQColorGroup::Text, TQt::red);
-    
+            cg2.setColor(TQColorGroup::Text, Settings::readTextColor());
+
         TDEListViewItem::paintCell( p, cg2, column, width, align );
     }
 
diff --git a/akregator/src/configdialog.cpp b/akregator/src/configdialog.cpp
index 5a280e1..cf6eae4 100644
--- a/akregator/src/configdialog.cpp
+++ b/akregator/src/configdialog.cpp
@@ -59,7 +59,7 @@
     Settings::setArchiveBackend(m_settingsAdvanced->selectedFactory());
     TDEConfigDialog::updateSettings();
 }
-        
+
 void ConfigDialog::updateWidgets()
 {
     m_settingsAdvanced->selectFactory(Settings::archiveBackend());
@@ -69,7 +69,7 @@
     m_settingsAppearance->lbl_MediumFontSize->setDisabled(m_config->isImmutable("MediumFontSize"));
     TDEConfigDialog::updateWidgets();
 }
-        
+
 ConfigDialog::~ConfigDialog() {}
 
 } // namespace Akregator
diff --git a/akregator/src/settings_appearance.ui b/akregator/src/settings_appearance.ui
index 78a23de..08be6c4 100644
--- a/akregator/src/settings_appearance.ui
+++ b/akregator/src/settings_appearance.ui
@@ -177,6 +177,38 @@
                         <cstring>kcfg_SansSerifFont</cstring>
                     </property>
                 </widget>
+                <widget class="TQLabel" row="4" column="0" rowspan="1" colspan="1">
+                    <property name="name">
+                        <cstring>lbl_ReadTextColor</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Read message color:</string>
+                    </property>
+                </widget>
+                <widget class="KColorButton" row="4" column="1">
+                    <property name="name">
+                        <cstring>kcfg_ReadTextColor</cstring>
+                    </property>
+                    <property name="defaultColor">
+                        <number>TQt::red</number>
+                    </property>
+                </widget>
+                <widget class="TQLabel" row="5" column="0" rowspan="1" colspan="1">
+                    <property name="name">
+                        <cstring>lbl_UnreadTextColor</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Unread message color:</string>
+                    </property>
+                </widget>
+                <widget class="KColorButton" row="5" column="1">
+                    <property name="name">
+                        <cstring>kcfg_UnreadTextColor</cstring>
+                    </property>
+                    <property name="defaultColor">
+                        <number>TQt::blue</number>
+                    </property>
+                </widget>
             </grid>
         </widget>
         <widget class="TQCheckBox">
diff --git a/akregator/src/trayicon.cpp b/akregator/src/trayicon.cpp
index 240e2d5..9cab8b3 100644
--- a/akregator/src/trayicon.cpp
+++ b/akregator/src/trayicon.cpp
@@ -182,7 +182,7 @@
         pix.fill(TQt::white);
         TQPainter p(&pix);
         p.setFont(f);
-        p.setPen(TQt::blue);
+        p.setPen(Settings::unreadTextColor());
         p.drawText(pix.rect(), TQt::AlignCenter, uStr);
 
         pix.setMask(pix.createHeuristicMask());
@@ -206,10 +206,13 @@
 
 void TrayIcon::settingsChanged()
 {
-    if ( Settings::showTrayIcon() )
+    if ( Settings::showTrayIcon() ) {
         show();
-    else
+        setUnread(m_unread, true);
+    }
+    else {
         hide();
+    }
 }
 }
 #include "trayicon.moc"
diff --git a/akregator/src/treenodeitem.cpp b/akregator/src/treenodeitem.cpp
index 4e60ea9..eaf52cd 100644
--- a/akregator/src/treenodeitem.cpp
+++ b/akregator/src/treenodeitem.cpp
@@ -22,6 +22,8 @@
     without including the source code for TQt in the source distribution.
 */
 
+#include "akregatorconfig.h"
+
 #include "treenode.h"
 #include "treenodeitem.h"
 #include "folderitem.h"
@@ -151,7 +153,7 @@
     p->drawText( x, 0, width-m-x, height(), align | AlignVCenter, oldText, -1, &br );
 
     if ( !isSelected() )
-        p->setPen( TQt::blue ); // TODO: configurable
+        p->setPen( Settings::unreadTextColor() );
 
     p->drawText( br.right(), 0, width-m-br.right(), height(),
                  align | AlignVCenter, txt );