summaryrefslogtreecommitdiffstats
path: root/shemov.cpp
blob: b76e1d1d1243c396c44e1207aaca34a332836d4e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU General Public License
  as published by the Free Software Foundation; either version
  2 of the License, or (at your option) any later version.
*/

#include <QApplication>
#include <QTabWidget>
#include <QVBoxLayout>
#include <QAction>
#include <QMenuBar>
#include <QMenu>
#include <QStatusBar>
#include <QLabel>
#include <QItemSelection>
#include <QDebug>

#include "shemov.h"
#include "filesystemwidget.h"
#include "fileview.h"

SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags) {
	mFSWidget = new FilesystemWidget;
	setWindowTitle(mFSWidget->windowTitle());
	
	mTab = new QTabWidget;
	mTab->addTab(mFSWidget, tr("Filemanager"));

	QVBoxLayout *mainLayout = new QVBoxLayout;
	mainLayout->addWidget(mTab);

	createStatusbar();
	createActions();
	createMenus();

	connect(mFSWidget->fileView()->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(updateSelectionCount(const QItemSelection &, const QItemSelection &)));
	connect(mFSWidget, SIGNAL(windowTitle(const QString &)), this, SLOT(newWindowTitle(const QString &)));
	connect(mFSWidget->fileView(), SIGNAL(statusbarMessage(const QString &)), this, SLOT(statusbarMessage(const QString &)));

	QWidget *centralWidget = new QWidget;
	centralWidget->setLayout(mainLayout);
	setCentralWidget(centralWidget);
	showMaximized();
	mFSWidget->fileView()->setFocus(Qt::ActiveWindowFocusReason);
}

void SheMov::updateSelectionCount(const QItemSelection & /* sel */, const QItemSelection & /* prev */){
	mSelectedItems->setText(QString::number(mFSWidget->fileView()->selectionModel()->selectedRows().count()));
}

void SheMov::newWindowTitle(const QString &title){
	setWindowTitle(title);
}

void SheMov::statusbarMessage(const QString &message){
	statusBar()->showMessage(message);
}

void SheMov::createStatusbar(){
	QLabel *selCountL = new QLabel(tr("Sel. Items"));
	mSelectedItems = new QLabel("0");
	mSelectedItems->setFrameStyle(QFrame::Panel | QFrame::Sunken);
	statusBar()->addPermanentWidget(selCountL);
	statusBar()->addPermanentWidget(mSelectedItems);
}

void SheMov::createActions(){
	mQuitA = new QAction(tr("Quit"), this);
	mQuitA->setShortcut(tr("CTRL+q"));
	connect(mQuitA, SIGNAL(triggered()), qApp, SLOT(quit()));
	mMarkFilesA = new QAction(tr("Select files..."), this);
	mMarkFilesA->setShortcut(tr("CTRL++"));
	mFSWidget->fileView()->addAction(mMarkFilesA);
	connect(mMarkFilesA, SIGNAL(triggered()), mFSWidget->fileView(), SLOT(markFiles()));
	mUnmarkFilesA = new QAction(tr("Deselect all files"), this);
	mUnmarkFilesA->setShortcut(tr("CTRL+-"));
	mFSWidget->fileView()->addAction(mUnmarkFilesA);
	connect(mUnmarkFilesA, SIGNAL(triggered()), mFSWidget->fileView(), SLOT(unmarkFiles()));
	mCreateFolderA = new QAction(tr("Create folder..."), this);
	mCreateFolderA->setShortcut(tr("CTRL+n"));
	connect(mCreateFolderA, SIGNAL(triggered()), mFSWidget->fileView(), SLOT(createFolder()));
	mFSWidget->fileView()->addAction(mCreateFolderA);
}

void SheMov::createMenus(){
	QMenu *fileMenu = new QMenu(tr("&File"), this);
	fileMenu->addAction(mQuitA);
	QMenu *editMenu = new QMenu(tr("&Edit"), this);
	editMenu->addAction(mMarkFilesA);
	editMenu->addAction(mUnmarkFilesA);
	editMenu->addSeparator();
	editMenu->addAction(mCreateFolderA);
	editMenu->addSeparator();

	menuBar()->addMenu(fileMenu);
	menuBar()->addMenu(editMenu);
}