summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shemov.cpp35
-rw-r--r--shemov.h5
-rw-r--r--shemov.pro6
-rw-r--r--statisticsdialog.cpp50
-rw-r--r--statisticsdialog.h45
5 files changed, 139 insertions, 2 deletions
diff --git a/shemov.cpp b/shemov.cpp
index cf29262..4d6f4fc 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -195,6 +195,25 @@ void SheMov::setFsFree(){
mFsFree->setPixmap(QPixmap::fromImage(img));
}
+void SheMov::aboutShemov(){
+ QString aboutLabel = QString(tr("About %1")).arg(qApp->applicationName());
+ QString aboutText = QString(tr("<p>%1 is a little application to keep track of your pr0n movie collection, though it isn't limited to pr0n movies.</p>")).arg(qApp->applicationName());
+ aboutText.append("<table>");
+ aboutText.append(tr("<tr><td>Author<td></td>Sissy herself</td></tr>"));
+ aboutText.append(QString(tr("<tr><td>Organization</td><td>%1</td></tr>")).arg(qApp->organizationName()));
+ aboutText.append(QString(tr("<tr><td>Version</td><td>%1</td></tr>")).arg(qApp->applicationVersion()));
+ aboutText.append(tr("<tr><td>Dependencies</td><td><ul>"));
+ aboutText.append(tr("<li>Qt (thanks to Nokia for this great library)</li>"));
+ aboutText.append(tr("<li>cryptopp for hashing the movies (thanks)</li>"));
+ aboutText.append(tr("<li>libmagic for figuring out the file type</li>"));
+ aboutText.append("</ul></tr></table>");
+ QMessageBox::about(this, aboutLabel, aboutText);
+}
+
+void SheMov::showStatistics(){
+
+}
+
void SheMov::createStatusbar(){
QLabel *selSizeL = new QLabel(tr("Sel. Size"));
mSelectedSize = new QLabel(tr("nothing selected yet"));
@@ -326,6 +345,15 @@ void SheMov::createActions(){
mDeleteFromArchiveA = new QAction(tr("Delete from archive..."), this);
mAVWidget->fileView()->addAction(mDeleteFromArchiveA);
connect(mDeleteFromArchiveA, SIGNAL(triggered()), mAVWidget, SLOT(deleteFromArchive()));
+
+ //Help menu
+ QString aboutLabel = QString(tr("About %1...")).arg(qApp->applicationName());
+ mAboutShemovA = new QAction(aboutLabel, this);
+ connect(mAboutShemovA, SIGNAL(triggered()), this, SLOT(aboutShemov()));
+ mAboutQtA = new QAction(tr("About Qt..."), this);
+ connect(mAboutQtA, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
+ mStatisticsA = new QAction(tr("Some statistics..."), this);
+ connect(mStatisticsA, SIGNAL(triggered()), this, SLOT(showStatistics()));
}
void SheMov::createMenus(){
@@ -372,6 +400,13 @@ void SheMov::createMenus(){
mEditFSMenuA = menuBar()->addMenu(mEditFSMenu);
mEditArchiveMenuA = menuBar()->addMenu(mEditArchiveMenu);
mEditArchiveMenuA->setVisible(false);
+
+ QMenu *helpMenu = new QMenu(tr("&Help"), this);
+ helpMenu->addAction(mAboutShemovA);
+ helpMenu->addAction(mAboutQtA);
+ helpMenu->addSeparator();
+ helpMenu->addAction(mStatisticsA);
+ menuBar()->addMenu(helpMenu);
}
void SheMov::createExtractMenu(){
diff --git a/shemov.h b/shemov.h
index 6d61d2e..890e18b 100644
--- a/shemov.h
+++ b/shemov.h
@@ -40,6 +40,8 @@ class SheMov : public QMainWindow {
void configure();
void tabChanged(int newTab);
void setFsFree();
+ void aboutShemov();
+ void showStatistics();
private:
void createStatusbar();
@@ -77,6 +79,9 @@ class SheMov : public QMainWindow {
QAction *mMoveBurnA;
QAction *mSetDvdA;
QAction *mDeleteFromArchiveA;
+ QAction *mAboutShemovA;
+ QAction *mAboutQtA;
+ QAction *mStatisticsA;
QList<QAction*> mExtractToA;
//EndActions
diff --git a/shemov.pro b/shemov.pro
index d32685b..fe3ea6b 100644
--- a/shemov.pro
+++ b/shemov.pro
@@ -29,7 +29,8 @@ sizedelegate.cpp \
archiveddelegate.cpp \
coverarchiveeditor.cpp \
textenterdialog.cpp \
-moviepropertiesdialog.cpp
+moviepropertiesdialog.cpp \
+statisticsdialog.cpp
HEADERS = listitem.h \
listmodel.h \
movieitem.h \
@@ -57,7 +58,8 @@ sizedelegate.h \
archiveddelegate.h \
coverarchiveeditor.h \
textenterdialog.h \
-moviepropertiesdialog.h
+moviepropertiesdialog.h \
+statisticsdialog.h
LIBS += -lmagic
LIBS += -lcryptopp
INCLUDEPATH += /usr/include/cryptopp
diff --git a/statisticsdialog.cpp b/statisticsdialog.cpp
new file mode 100644
index 0000000..09b9d15
--- /dev/null
+++ b/statisticsdialog.cpp
@@ -0,0 +1,50 @@
+/*
+ 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 <QTabWidget>
+#include <QPainter>
+#include <QHBoxLayout>
+#include <QSqlQuery>
+#include <QVariant>
+#include <QFontMetrics>
+#include <QApplication>
+#include <QPainter>
+#include <QPen>
+#include <QBrush>
+#include <QGradient>
+
+#include "statisticsdialog.h"
+
+StatisticsDialog::StatisticsDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f){
+ QHBoxLayout *mainLayout = new QHBoxLayout;
+ mTab = new QTabWidget;
+}
+
+QualityStats::QualityStats(QWidget *parent) : QWidget(parent), mMargin(10) {
+ QSqlQuery q("SELECT DISTINCT(iquality), COUNT(iquality) FROM movies GROUP BY iquality");
+ q.exec();
+ while(q.next()){
+ mQualityDistrib[q.value(0).toInt()] = q.value(1).toInt();
+ }
+ QFontMetrics fm(qApp->font());
+ mBarHeight = fm.height();
+}
+
+void QualityStats::paintEvent(QPaintEvent *){
+ QPainter p(this);
+ int width = size().width();
+ QPen pen(Qt::red);
+ p.setPen(pen);
+}
+
+QSize QualityStats::sizeHint() const {
+ int height = mQualityDistrib.count() * mBarHeight;
+ height += mQualityDistrib.count() * mMargin;
+ height += mBarHeight + mMargin;
+ return QSize(400, height);
+}
+
diff --git a/statisticsdialog.h b/statisticsdialog.h
new file mode 100644
index 0000000..7dd78c2
--- /dev/null
+++ b/statisticsdialog.h
@@ -0,0 +1,45 @@
+/*
+ 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.
+*/
+
+#ifndef STATISTICSDIALOG_H
+#define STATISTICSDIALOG_H
+
+#include <QDialog>
+#include <QMap>
+
+class QTabWidget;
+class QPaintEvent;
+class QSize;
+
+class StatisticsDialog : public QDialog {
+ Q_OBJECT
+ public:
+ StatisticsDialog(QWidget *parent = 0, Qt::WindowFlags f = 0);
+ ~StatisticsDialog() {};
+
+ private:
+ QTabWidget *mTab;
+};
+
+class QualityStats : public QWidget {
+ Q_OBJECT
+ public:
+ QualityStats(QWidget *parent = 0);
+ ~QualityStats() {};
+ virtual QSize sizeHint() const;
+
+ protected:
+ void paintEvent(QPaintEvent *);
+
+ private:
+ int mBarHeight;
+ const int mMargin;
+ QMap<int, int> mQualityDistrib;
+};
+
+#endif
+