Update main window title depending of current file state

If a file has been opened from the command line or via the File
menu the main window title becomes "Subsurface: filename.ext".
Title also updates if 'File->Save As' is called. "Subsurface" only
is displayed when no active file is present or post 'File->New'
or 'File->Close'.

To make this work a new public method is added - MainWindow::setTitle()
and also an enum type MainWindowTitleFormat, which should allow
more complicated formatting, such as showing the selected dives
or the total number of dives (e.g. MWTF_FILENAME_N_DIVES).

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Lubomir I. Ivanov 2013-06-26 15:13:06 +03:00 committed by Dirk Hohndel
parent c92cf925bd
commit ab95da8fd2
3 changed files with 25 additions and 0 deletions

View file

@ -75,6 +75,10 @@ void init_qt_ui(int *argcp, char ***argvp, char *errormessage)
MainWindow *window = new MainWindow();
window->showError(errormessage);
window->show();
if (existing_filename && existing_filename[0] != '\0')
window->setTitle(MWTF_FILENAME);
else
window->setTitle(MWTF_DEFAULT);
}
const char *getSetting(QSettings &s, QString name)

View file

@ -120,6 +120,7 @@ void MainWindow::on_actionOpen_triggered()
char *error = NULL;
parse_file(fileNamePtr.data(), &error);
set_filename(fileNamePtr.data(), TRUE);
setTitle(MWTF_FILENAME);
if (error != NULL) {
showError(error);
@ -164,6 +165,7 @@ void MainWindow::on_actionClose_triggered()
ui->ProfileWidget->clear();
ui->ListWidget->reload(DiveTripModel::TREE);
ui->globe->reload();
setTitle(MWTF_DEFAULT);
clear_events();
}
@ -673,6 +675,7 @@ void MainWindow::file_save_as(void)
if (!filename.isNull() && !filename.isEmpty()) {
save_dives(filename.toUtf8().data());
set_filename(filename.toUtf8().data(), TRUE);
setTitle(MWTF_FILENAME);
mark_divelist_changed(FALSE);
}
}
@ -705,3 +708,18 @@ void MainWindow::showError(QString message)
ui->mainErrorMessage->setMessageType(KMessageWidget::Error);
ui->mainErrorMessage->animatedShow();
}
void MainWindow::setTitle(enum MainWindowTitleFormat format)
{
switch (format) {
case MWTF_DEFAULT:
setWindowTitle("Subsurface");
break;
case MWTF_FILENAME:
QFile f(existing_filename);
QFileInfo fileInfo(f);
QString fileName(fileInfo.fileName());
setWindowTitle("Subsurface: " + fileName);
break;
}
}

View file

@ -31,6 +31,8 @@ class MainTab;
class ProfileGraphicsView;
class QTextBrowser;
enum MainWindowTitleFormat { MWTF_DEFAULT, MWTF_FILENAME };
class MainWindow : public QMainWindow
{
Q_OBJECT
@ -43,6 +45,7 @@ public:
DiveListView *dive_list();
GlobeGPS *globe();
void showError(QString message);
void setTitle(enum MainWindowTitleFormat format);
private slots: