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 <QSplitter>
#include <QToolBar>
#include <QDebug>
#include <QApplication>
#include <QLineEdit>
#include <QAction>
@ -22,6 +23,8 @@
#include <QWidgetAction>
#include <QThread>
#include <QReadWriteLock>
#include <QProgressBar>
#include <QStatusBar>
FeedMessageViewer::FeedMessageViewer(QWidget *parent)
@ -114,15 +117,17 @@ void FeedMessageViewer::updateAllFeeds() {
}
}
void FeedMessageViewer::onFeedUpdatesStarted() {
}
void FeedMessageViewer::onFeedUpdatesProgress(FeedsModelFeed *feed,
int current,
int total) {
// 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);
}
void FeedMessageViewer::onFeedUpdatesFinished() {
@ -131,23 +136,27 @@ void FeedMessageViewer::onFeedUpdatesFinished() {
}
void FeedMessageViewer::createConnections() {
// General connections.
// Message changers.
connect(m_messagesView, SIGNAL(currentMessagesRemoved()),
m_messagesBrowser, SLOT(clear()));
connect(m_messagesView, SIGNAL(currentMessagesChanged(QList<Message>)),
m_messagesBrowser, SLOT(navigateToMessages(QList<Message>)));
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)));
// Feed changers.
connect(m_feedsView, SIGNAL(feedsSelected(QList<int>)),
m_messagesView, SLOT(loadFeeds(QList<int>)));
connect(m_messagesView, SIGNAL(feedCountsChanged()),
m_feedsView, SLOT(updateCountsOfSelectedFeeds()));
connect(m_feedsView, SIGNAL(feedsNeedToBeReloaded(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>)),
FormMain::getInstance()->m_ui->m_tabWidget,
SLOT(addBrowserWithMessages(QList<Message>)));

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,9 +1,38 @@
#include "gui/statusbar.h"
#include "gui/iconthemefactory.h"
#include <QToolButton>
#include <QLabel>
#include <QProgressBar>
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() {
qDebug("Destroying StatusBar instance.");
}
QToolButton *StatusBar::fullscreenSwitcher() const
{
return m_fullscreenSwitcher;
}

View File

@ -4,6 +4,10 @@
#include <QStatusBar>
class QProgressBar;
class QToolButton;
class QLabel;
class StatusBar : public QStatusBar {
Q_OBJECT
@ -12,9 +16,12 @@ class StatusBar : public QStatusBar {
explicit StatusBar(QWidget *parent = 0);
virtual ~StatusBar();
signals:
public slots:
QToolButton *fullscreenSwitcher() const;
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.
void fixContentsIndexes(int starting_index, int ending_index);
// Called when number of tab pages changes.
void checkTabBarVisibility();
// Changes icon/text of the tab.