Status bar work.

This commit is contained in:
Martin Rotter 2014-01-06 21:22:00 +01:00
parent a0638e9708
commit 3303167fcf
10 changed files with 80 additions and 23 deletions

View File

@ -14,6 +14,7 @@
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QSplitter> #include <QSplitter>
#include <QToolBar> #include <QToolBar>
#include <QDebug>
#include <QApplication> #include <QApplication>
#include <QLineEdit> #include <QLineEdit>
#include <QAction> #include <QAction>
@ -22,6 +23,8 @@
#include <QWidgetAction> #include <QWidgetAction>
#include <QThread> #include <QThread>
#include <QReadWriteLock> #include <QReadWriteLock>
#include <QProgressBar>
#include <QStatusBar>
FeedMessageViewer::FeedMessageViewer(QWidget *parent) FeedMessageViewer::FeedMessageViewer(QWidget *parent)
@ -114,15 +117,17 @@ void FeedMessageViewer::updateAllFeeds() {
} }
} }
void FeedMessageViewer::onFeedUpdatesStarted() {
}
void FeedMessageViewer::onFeedUpdatesProgress(FeedsModelFeed *feed, void FeedMessageViewer::onFeedUpdatesProgress(FeedsModelFeed *feed,
int current, int current,
int total) { int total) {
// Some feed got updated. // Some feed got updated.
// TODO: Don't update counts of all feeds here,
// it is enough to update counts of update feed.
// So use indexForItem method from the model.
//m_feedsView->updateCountsOfAllFeeds(true);
m_feedsView->updateCountsOfParticularFeed(feed, true); m_feedsView->updateCountsOfParticularFeed(feed, true);
} }
void FeedMessageViewer::onFeedUpdatesFinished() { void FeedMessageViewer::onFeedUpdatesFinished() {
@ -131,23 +136,27 @@ void FeedMessageViewer::onFeedUpdatesFinished() {
} }
void FeedMessageViewer::createConnections() { void FeedMessageViewer::createConnections() {
// General connections. // Message changers.
connect(m_messagesView, SIGNAL(currentMessagesRemoved()), connect(m_messagesView, SIGNAL(currentMessagesRemoved()),
m_messagesBrowser, SLOT(clear())); m_messagesBrowser, SLOT(clear()));
connect(m_messagesView, SIGNAL(currentMessagesChanged(QList<Message>)), connect(m_messagesView, SIGNAL(currentMessagesChanged(QList<Message>)),
m_messagesBrowser, SLOT(navigateToMessages(QList<Message>))); m_messagesBrowser, SLOT(navigateToMessages(QList<Message>)));
connect(m_messagesView, SIGNAL(openMessagesInNewspaperView(QList<Message>)),
FormMain::getInstance()->m_ui->m_tabWidget, // Feed changers.
SLOT(addBrowserWithMessages(QList<Message>)));
connect(m_messagesView, SIGNAL(openLinkNewTab(QString)),
FormMain::getInstance()->m_ui->m_tabWidget,
SLOT(addLinkedBrowser(QString)));
connect(m_feedsView, SIGNAL(feedsSelected(QList<int>)), connect(m_feedsView, SIGNAL(feedsSelected(QList<int>)),
m_messagesView, SLOT(loadFeeds(QList<int>))); m_messagesView, SLOT(loadFeeds(QList<int>)));
connect(m_messagesView, SIGNAL(feedCountsChanged()), connect(m_messagesView, SIGNAL(feedCountsChanged()),
m_feedsView, SLOT(updateCountsOfSelectedFeeds())); m_feedsView, SLOT(updateCountsOfSelectedFeeds()));
connect(m_feedsView, SIGNAL(feedsNeedToBeReloaded(int)), connect(m_feedsView, SIGNAL(feedsNeedToBeReloaded(int)),
m_messagesView, SLOT(reloadSelections(int))); m_messagesView, SLOT(reloadSelections(int)));
// Message openers.
connect(m_messagesView, SIGNAL(openMessagesInNewspaperView(QList<Message>)),
FormMain::getInstance()->m_ui->m_tabWidget,
SLOT(addBrowserWithMessages(QList<Message>)));
connect(m_messagesView, SIGNAL(openLinkNewTab(QString)),
FormMain::getInstance()->m_ui->m_tabWidget,
SLOT(addLinkedBrowser(QString)));
connect(m_feedsView, SIGNAL(newspaperModeRequested(QList<Message>)), connect(m_feedsView, SIGNAL(newspaperModeRequested(QList<Message>)),
FormMain::getInstance()->m_ui->m_tabWidget, FormMain::getInstance()->m_ui->m_tabWidget,
SLOT(addBrowserWithMessages(QList<Message>))); SLOT(addBrowserWithMessages(QList<Message>)));

View File

@ -12,6 +12,7 @@ class MessagesView;
class FeedDownloader; class FeedDownloader;
class QToolBar; class QToolBar;
class QSplitter; class QSplitter;
class QProgressBar;
class FeedsModelFeed; class FeedsModelFeed;
class FeedMessageViewer : public TabContent { class FeedMessageViewer : public TabContent {
@ -41,6 +42,7 @@ class FeedMessageViewer : public TabContent {
protected slots: protected slots:
// Reacts on feed updates. // Reacts on feed updates.
void onFeedUpdatesStarted();
void onFeedUpdatesProgress(FeedsModelFeed *feed, int current, int total); void onFeedUpdatesProgress(FeedsModelFeed *feed, int current, int total);
void onFeedUpdatesFinished(); void onFeedUpdatesFinished();

View File

@ -29,7 +29,8 @@ FormMain::FormMain(QWidget *parent) : QMainWindow(parent), m_ui(new Ui::FormMain
// Initialize singleton. // Initialize singleton.
s_instance = this; s_instance = this;
setStatusBar(new StatusBar(this)); m_statusBar = new StatusBar(this);
setStatusBar(m_statusBar);
// Prepare main window and tabs. // Prepare main window and tabs.
prepareMenus(); prepareMenus();
@ -96,6 +97,10 @@ QList<QAction*> FormMain::getActions() {
return actions; return actions;
} }
StatusBar *FormMain::statusBar() {
return m_statusBar;
}
void FormMain::prepareMenus() { void FormMain::prepareMenus() {
// Setup menu for tray icon. // Setup menu for tray icon.
if (SystemTrayIcon::isSystemTrayAvailable()) { if (SystemTrayIcon::isSystemTrayAvailable()) {
@ -266,6 +271,10 @@ void FormMain::saveSize() {
} }
void FormMain::createConnections() { void FormMain::createConnections() {
// Status bar connections.
connect(m_statusBar->fullscreenSwitcher(), SIGNAL(clicked()),
m_ui->m_actionFullscreen, SLOT(trigger()));
// Core connections. // Core connections.
connect(qApp, SIGNAL(commitDataRequest(QSessionManager&)), connect(qApp, SIGNAL(commitDataRequest(QSessionManager&)),
this, SLOT(onCommitData(QSessionManager&))); this, SLOT(onCommitData(QSessionManager&)));

View File

@ -7,6 +7,8 @@
#include <QUrl> #include <QUrl>
class StatusBar;
class FormMain : public QMainWindow { class FormMain : public QMainWindow {
Q_OBJECT Q_OBJECT
@ -30,6 +32,9 @@ class FormMain : public QMainWindow {
// NOTE: This is used for setting dynamic shortcuts for given actions. // NOTE: This is used for setting dynamic shortcuts for given actions.
QList<QAction*> getActions(); QList<QAction*> getActions();
// Access to statusbar.
StatusBar *statusBar();
// Singleton accessor. // Singleton accessor.
static FormMain *getInstance(); static FormMain *getInstance();
@ -84,6 +89,7 @@ class FormMain : public QMainWindow {
private: private:
Ui::FormMain *m_ui; Ui::FormMain *m_ui;
QMenu *m_trayMenu; QMenu *m_trayMenu;
StatusBar *m_statusBar;
static FormMain *s_instance; static FormMain *s_instance;
}; };

View File

@ -125,7 +125,6 @@
<addaction name="m_menuTools"/> <addaction name="m_menuTools"/>
<addaction name="m_menuHelp"/> <addaction name="m_menuHelp"/>
</widget> </widget>
<widget class="StatusBar" name="m_statusBar"/>
<action name="m_actionImport"> <action name="m_actionImport">
<property name="text"> <property name="text">
<string>&amp;Import</string> <string>&amp;Import</string>
@ -409,11 +408,6 @@
<header>tabwidget.h</header> <header>tabwidget.h</header>
<container>1</container> <container>1</container>
</customwidget> </customwidget>
<customwidget>
<class>StatusBar</class>
<extends>QStatusBar</extends>
<header>statusbar.h</header>
</customwidget>
</customwidgets> </customwidgets>
<resources/> <resources/>
<connections/> <connections/>

View File

@ -175,7 +175,6 @@ void MessagesView::mousePressEvent(QMouseEvent *event) {
} }
case Qt::MiddleButton: { case Qt::MiddleButton: {
// TODO: nefunguje?
// Open selected messages in new tab on mouse middle button click. // Open selected messages in new tab on mouse middle button click.
openSelectedSourceMessagesInternally(); openSelectedSourceMessagesInternally();
break; break;
@ -363,7 +362,7 @@ void MessagesView::reselectIndexes(const QModelIndexList &indexes) {
} }
void MessagesView::adjustColumns() { void MessagesView::adjustColumns() {
if (header()->count() == 10 && !m_columnsAdjusted) { if (header()->count() > 0 && !m_columnsAdjusted) {
m_columnsAdjusted = true; m_columnsAdjusted = true;
#if QT_VERSION >= 0x050000 #if QT_VERSION >= 0x050000

View File

@ -22,6 +22,7 @@ class MessagesView : public QTreeView {
MessagesProxyModel *model(); MessagesProxyModel *model();
MessagesModel *sourceModel(); MessagesModel *sourceModel();
// Creates needed connections.
void createConnections(); void createConnections();
public slots: public slots:

View File

@ -1,9 +1,38 @@
#include "gui/statusbar.h" #include "gui/statusbar.h"
#include "gui/iconthemefactory.h"
#include <QToolButton>
#include <QLabel>
#include <QProgressBar>
StatusBar::StatusBar(QWidget *parent) : QStatusBar(parent) { StatusBar::StatusBar(QWidget *parent) : QStatusBar(parent) {
setSizeGripEnabled(false);
setContentsMargins(3, 1, 3, 1);
// Initializations of widgets for status bar.
m_fullscreenSwitcher = new QToolButton(this);
m_fullscreenSwitcher->setIcon(IconThemeFactory::getInstance()->fromTheme("view-fullscreen"));
m_fullscreenSwitcher->setToolTip(tr("Switch application between fulscreen/normal states right from this status bar icon."));
m_progressBar = new QProgressBar(this);
m_progressBar->setFixedWidth(100);
m_progressLabel = new QLabel(this);
m_progressLabel->setText("aaa");
// Add widgets.
addPermanentWidget(m_fullscreenSwitcher);
addWidget(m_progressBar, 0);
addWidget(m_progressLabel, 1);
} }
StatusBar::~StatusBar() { StatusBar::~StatusBar() {
qDebug("Destroying StatusBar instance."); qDebug("Destroying StatusBar instance.");
} }
QToolButton *StatusBar::fullscreenSwitcher() const
{
return m_fullscreenSwitcher;
}

View File

@ -4,6 +4,10 @@
#include <QStatusBar> #include <QStatusBar>
class QProgressBar;
class QToolButton;
class QLabel;
class StatusBar : public QStatusBar { class StatusBar : public QStatusBar {
Q_OBJECT Q_OBJECT
@ -12,9 +16,12 @@ class StatusBar : public QStatusBar {
explicit StatusBar(QWidget *parent = 0); explicit StatusBar(QWidget *parent = 0);
virtual ~StatusBar(); virtual ~StatusBar();
signals: QToolButton *fullscreenSwitcher() const;
public slots: private:
QProgressBar *m_progressBar;
QLabel *m_progressLabel;
QToolButton *m_fullscreenSwitcher;
}; };

View File

@ -64,6 +64,7 @@ class TabWidget : public QTabWidget {
// Fixes indexes of tab contents. // Fixes indexes of tab contents.
void fixContentsIndexes(int starting_index, int ending_index); void fixContentsIndexes(int starting_index, int ending_index);
// Called when number of tab pages changes.
void checkTabBarVisibility(); void checkTabBarVisibility();
// Changes icon/text of the tab. // Changes icon/text of the tab.