1 /* 2 SPDX-FileCopyrightText: 2013 Dominik Haumann <dhaumann@kde.org> 3 4 SPDX-License-Identifier: LGPL-2.0-or-later 5 */ 6 7 #ifndef KATE_STATUS_BAR_H 8 #define KATE_STATUS_BAR_H 9 10 #include "kateviewhelpers.h" 11 12 #include <KLocalizedString> 13 #include <KSqueezedTextLabel> 14 15 #include <QLabel> 16 #include <QMenu> 17 #include <QPushButton> 18 #include <QToolButton> 19 20 namespace KTextEditor 21 { 22 class ViewPrivate; 23 } 24 25 class WordCounter; 26 class KateStatusBar; 27 class KateModeMenuList; 28 29 class KateStatusBarOpenUpMenu : public QMenu 30 { 31 Q_OBJECT 32 public: 33 explicit KateStatusBarOpenUpMenu(QWidget *parent); 34 void setVisible(bool) override; 35 }; 36 37 /** 38 * For convenience an own button class to ensure a unified look&feel. 39 * Should someone dislike the QPushButton at all could he change it 40 * to a e.g. QLabel subclass 41 */ 42 class StatusBarButton : public QPushButton 43 { 44 Q_OBJECT 45 public: 46 explicit StatusBarButton(KateStatusBar *parent, const QString &text = QString()); 47 }; 48 49 class KateStatusBar : public KateViewBarWidget 50 { 51 Q_OBJECT 52 friend class StatusBarButton; 53 54 public: 55 explicit KateStatusBar(KTextEditor::ViewPrivate *view); 56 57 KateModeMenuList *modeMenu() const; 58 59 public Q_SLOTS: 60 void updateStatus(); 61 62 void viewModeChanged(); 63 64 void cursorPositionChanged(); 65 66 void updateDictionary(); 67 68 void selectionChanged(); 69 70 void modifiedChanged(); 71 72 void documentConfigChanged(); 73 74 void modeChanged(); 75 76 void wordCountChanged(int, int, int, int); 77 78 void toggleWordCount(bool on); 79 80 void configChanged(); 81 82 void changeDictionary(QAction *action); 83 84 protected: 85 bool eventFilter(QObject *obj, QEvent *event) override; 86 void contextMenuEvent(QContextMenuEvent *event) override; 87 88 private: 89 KTextEditor::ViewPrivate *const m_view; 90 StatusBarButton *m_cursorPosition = nullptr; 91 QString m_wordCount; 92 StatusBarButton *m_modified = nullptr; 93 StatusBarButton *m_zoomLevel = nullptr; 94 StatusBarButton *m_inputMode = nullptr; 95 StatusBarButton *m_mode = nullptr; 96 StatusBarButton *m_encoding = nullptr; 97 StatusBarButton *m_tabsIndent = nullptr; 98 StatusBarButton *m_dictionary = nullptr; 99 QActionGroup *m_dictionaryGroup = nullptr; 100 KateStatusBarOpenUpMenu *m_dictionaryMenu = nullptr; 101 QMenu *m_indentSettingsMenu; 102 KateModeMenuList *m_modeMenuList = nullptr; 103 unsigned int m_modifiedStatus; 104 unsigned int m_selectionMode; 105 QActionGroup *m_tabGroup; 106 QActionGroup *m_indentGroup; 107 QAction *m_mixedAction; 108 QAction *m_hardAction; 109 QAction *m_softAction; 110 WordCounter *m_wordCounter; 111 112 private: 113 void addNumberAction(QActionGroup *group, QMenu *menu, int data); 114 void updateGroup(QActionGroup *group, int w); 115 116 public Q_SLOTS: 117 void slotTabGroup(QAction *); 118 void slotIndentGroup(QAction *); 119 void slotIndentTabMode(QAction *); 120 void toggleShowLines(bool checked); 121 void toggleShowWords(bool checked); 122 }; 123 124 #endif 125