/**************************************************************************** | |
** | |
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). | |
** All rights reserved. | |
** Contact: Nokia Corporation (qt-info@nokia.com) | |
** | |
** This file is part of the Qt Linguist of the Qt Toolkit. | |
** | |
** $QT_BEGIN_LICENSE:LGPL$ | |
** GNU Lesser General Public License Usage | |
** This file may be used under the terms of the GNU Lesser General Public | |
** License version 2.1 as published by the Free Software Foundation and | |
** appearing in the file LICENSE.LGPL included in the packaging of this | |
** file. Please review the following information to ensure the GNU Lesser | |
** General Public License version 2.1 requirements will be met: | |
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | |
** | |
** In addition, as a special exception, Nokia gives you certain additional | |
** rights. These rights are described in the Nokia Qt LGPL Exception | |
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | |
** | |
** GNU General Public License Usage | |
** Alternatively, this file may be used under the terms of the GNU General | |
** Public License version 3.0 as published by the Free Software Foundation | |
** and appearing in the file LICENSE.GPL included in the packaging of this | |
** file. Please review the following information to ensure the GNU General | |
** Public License version 3.0 requirements will be met: | |
** http://www.gnu.org/copyleft/gpl.html. | |
** | |
** Other Usage | |
** Alternatively, this file may be used in accordance with the terms and | |
** conditions contained in a signed written agreement between you and Nokia. | |
** | |
** | |
** | |
** | |
** | |
** $QT_END_LICENSE$ | |
** | |
****************************************************************************/ | |
#ifndef MAINWINDOW_H | |
#define MAINWINDOW_H | |
#include "phrase.h" | |
#include "ui_mainwindow.h" | |
#include "recentfiles.h" | |
#include "messagemodel.h" | |
#include <QtCore/QHash> | |
#include <QtCore/QLocale> | |
#include <QtGui/QMainWindow> | |
QT_BEGIN_NAMESPACE | |
class QPixmap; | |
class QAction; | |
class QDialog; | |
class QLabel; | |
class QMenu; | |
class QPrinter; | |
class QProcess; | |
class QIcon; | |
class QSortFilterProxyModel; | |
class QStackedWidget; | |
class QTableView; | |
class QTreeView; | |
class BatchTranslationDialog; | |
class ErrorsView; | |
class FindDialog; | |
class FocusWatcher; | |
class FormPreviewView; | |
class MessageEditor; | |
class PhraseView; | |
class SourceCodeView; | |
class Statistics; | |
class TranslateDialog; | |
class TranslationSettingsDialog; | |
class MainWindow : public QMainWindow | |
{ | |
Q_OBJECT | |
public: | |
enum {PhraseCloseMenu, PhraseEditMenu, PhrasePrintMenu}; | |
MainWindow(); | |
~MainWindow(); | |
bool openFiles(const QStringList &names, bool readWrite = true); | |
static RecentFiles &recentFiles(); | |
static const QString &resourcePrefix(); | |
static QString friendlyString(const QString &str); | |
protected: | |
void readConfig(); | |
void writeConfig(); | |
void closeEvent(QCloseEvent *); | |
bool eventFilter(QObject *object, QEvent *event); | |
private slots: | |
void doneAndNext(); | |
void prev(); | |
void next(); | |
void recentFileActivated(QAction *action); | |
void setupRecentFilesMenu(); | |
void open(); | |
void openAux(); | |
void saveAll(); | |
void save(); | |
void saveAs(); | |
void releaseAll(); | |
void release(); | |
void releaseAs(); | |
void print(); | |
void closeFile(); | |
bool closeAll(); | |
void findAgain(); | |
void showTranslateDialog(); | |
void showBatchTranslateDialog(); | |
void showTranslationSettings(); | |
void updateTranslateHit(bool &hit); | |
void translate(int mode); | |
void newPhraseBook(); | |
void openPhraseBook(); | |
void closePhraseBook(QAction *action); | |
void editPhraseBook(QAction *action); | |
void printPhraseBook(QAction *action); | |
void addToPhraseBook(); | |
void manual(); | |
void resetSorting(); | |
void about(); | |
void aboutQt(); | |
void updateViewMenu(); | |
void fileAboutToShow(); | |
void editAboutToShow(); | |
void showContextDock(); | |
void showMessagesDock(); | |
void showPhrasesDock(); | |
void showSourceCodeDock(); | |
void showErrorDock(); | |
void setupPhrase(); | |
bool maybeSaveAll(); | |
bool maybeSave(int model); | |
void updateProgress(); | |
void maybeUpdateStatistics(const MultiDataIndex &); | |
void translationChanged(const MultiDataIndex &); | |
void updateCaption(); | |
void updateLatestModel(const QModelIndex &index); | |
void selectedContextChanged(const QModelIndex &sortedIndex, const QModelIndex &oldIndex); | |
void selectedMessageChanged(const QModelIndex &sortedIndex, const QModelIndex &oldIndex); | |
// To synchronize from the message editor to the model ... | |
void updateTranslation(const QStringList &translations); | |
void updateTranslatorComment(const QString &comment); | |
void updateActiveModel(int); | |
void refreshItemViews(); | |
void toggleFinished(const QModelIndex &index); | |
void prevUnfinished(); | |
void nextUnfinished(); | |
void findNext(const QString &text, DataModel::FindLocation where, bool matchCase, bool ignoreAccelerators); | |
void revalidate(); | |
void toggleStatistics(); | |
void onWhatsThis(); | |
void updatePhraseDicts(); | |
void updatePhraseDict(int model); | |
private: | |
QModelIndex nextContext(const QModelIndex &index) const; | |
QModelIndex prevContext(const QModelIndex &index) const; | |
QModelIndex nextMessage(const QModelIndex ¤tIndex, bool checkUnfinished = false) const; | |
QModelIndex prevMessage(const QModelIndex ¤tIndex, bool checkUnfinished = false) const; | |
bool next(bool checkUnfinished); | |
bool prev(bool checkUnfinished); | |
void updateStatistics(); | |
void initViewHeaders(); | |
void modelCountChanged(); | |
void setupMenuBar(); | |
void setupToolBars(); | |
void setCurrentMessage(const QModelIndex &index); | |
void setCurrentMessage(const QModelIndex &index, int model); | |
QModelIndex setMessageViewRoot(const QModelIndex &index); | |
QModelIndex currentContextIndex() const; | |
QModelIndex currentMessageIndex() const; | |
PhraseBook *openPhraseBook(const QString &name); | |
bool isPhraseBookOpen(const QString &name); | |
bool savePhraseBook(QString *name, PhraseBook &pb); | |
bool maybeSavePhraseBook(PhraseBook *phraseBook); | |
bool closePhraseBooks(); | |
QStringList pickTranslationFiles(); | |
void showTranslationSettings(int model); | |
void updateLatestModel(int model); | |
void updatePhraseBookActions(); | |
void updatePhraseDictInternal(int model); | |
void releaseInternal(int model); | |
void saveInternal(int model); | |
QPrinter *printer(); | |
// FIXME: move to DataModel | |
void updateDanger(const MultiDataIndex &index, bool verbose); | |
bool searchItem(const QString &searchWhat); | |
QProcess *m_assistantProcess; | |
QTreeView *m_contextView; | |
QTreeView *m_messageView; | |
MultiDataModel *m_dataModel; | |
MessageModel *m_messageModel; | |
QSortFilterProxyModel *m_sortedContextsModel; | |
QSortFilterProxyModel *m_sortedMessagesModel; | |
MessageEditor *m_messageEditor; | |
PhraseView *m_phraseView; | |
QStackedWidget *m_sourceAndFormView; | |
SourceCodeView *m_sourceCodeView; | |
FormPreviewView *m_formPreviewView; | |
ErrorsView *m_errorsView; | |
QLabel *m_progressLabel; | |
QLabel *m_modifiedLabel; | |
FocusWatcher *m_focusWatcher; | |
QString m_phraseBookDir; | |
// model : keyword -> list of appropriate phrases in the phrasebooks | |
QList<QHash<QString, QList<Phrase *> > > m_phraseDict; | |
QList<PhraseBook *> m_phraseBooks; | |
QMap<QAction *, PhraseBook *> m_phraseBookMenu[3]; | |
QPrinter *m_printer; | |
FindDialog *m_findDialog; | |
QString m_findText; | |
Qt::CaseSensitivity m_findMatchCase; | |
bool m_findIgnoreAccelerators; | |
DataModel::FindLocation m_findWhere; | |
DataModel::FindLocation m_foundWhere; | |
TranslateDialog *m_translateDialog; | |
QString m_latestFindText; | |
int m_latestCaseSensitivity; | |
int m_remainingCount; | |
int m_hitCount; | |
BatchTranslationDialog *m_batchTranslateDialog; | |
TranslationSettingsDialog *m_translationSettingsDialog; | |
bool m_settingCurrentMessage; | |
int m_fileActiveModel; | |
int m_editActiveModel; | |
MultiDataIndex m_currentIndex; | |
QDockWidget *m_contextDock; | |
QDockWidget *m_messagesDock; | |
QDockWidget *m_phrasesDock; | |
QDockWidget *m_sourceAndFormDock; | |
QDockWidget *m_errorsDock; | |
Ui::MainWindow m_ui; // menus and actions | |
Statistics *m_statistics; | |
}; | |
QT_END_NAMESPACE | |
#endif |