xref: /OK3568_Linux_fs/app/forlinx/flapp/src/plugins/allwinner/camera/CameraUI/src/picture_view.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include "picture_view.h"
2 #include "ui_picture_view.h"
3 #include "picturewidget.h"
4 #include "ui_picturewidget.h"
5 #include <QGridLayout>
6 #include <QFontDatabase>
7 #include <QDesktopWidget>
8 #include "main_desktop.h"
9 #include "frmmessagebox.h"
10 #include <QStackedLayout>
11 #include <QTextCodec>
12 extern QFileInfo fileInfo_to_show;
13 extern main_desktop *g_pStaticMaindesktop;
14 #if defined(Q_OS_LINUX)
15 extern int is_dir_exist(const char *dir_path);
16 #endif
17 
Picture_view(QWidget * parent)18 Picture_view::Picture_view(QWidget *parent) :
19     QDialog(parent),
20     ui(new Ui::Picture_view),pic_view(0)
21 {
22     ui->setupUi(this);
23     FormInCenter();
24     show_title();
25     current_pic=0;
26     pic_view=new CProjectionPicture(ui->widget);
27     pic_view->setParent(ui->widget);
28     pic_view->resize(ui->widget->size());
29     ui->widget_2->raise();
30     ui->widget_2->setWindowFlags(Qt::WindowStaysOnTopHint);
31     pic_view->setWindowFlags(Qt::WindowStaysOnBottomHint);
32     qDebug()<<"the filename will play is"<<fileInfo_to_show.completeBaseName();
33     current_path=fileInfo_to_show.absolutePath();
34     qDebug()<<"current path is:"<<current_path;
35     #if defined(Q_OS_LINUX)
36         if(!is_dir_exist((char*)current_path.toStdString().c_str()))
37         {
38             dir.setPath(current_path);
39             file_list=GetFileList(dir);
40             for(int i=0;i<file_list.size();i++)
41             {
42                 if(file_list[i]==fileInfo_to_show){
43                     current_pic=i;
44                     break;
45                 }
46             }
47         }else{
48             qDebug()<<"path is not exist";
49         }
50     #else
51         if(current_path==""){
52             qDebug()<<"the wrong path";
53         }else{
54             dir.setPath(current_path);
55             file_list=GetFileList(dir);
56             for(int i=0;i<file_list.size();i++)
57             {
58                 if(file_list[i]==fileInfo_to_show){
59                     current_pic=i;
60                     break;
61                 }
62             }
63         }
64     #endif
65     QDesktopWidget w;
66     int deskWidth = w.width();
67     int deskHeight = w.height();
68     QImage pic;
69     pic.load(fileInfo_to_show.absoluteFilePath());
70     qDebug()<<"show_image---file_name:"<<fileInfo_to_show.completeBaseName();
71     pic_view->show();
72     pic_view->setPicture(pic);
73     pic_view->resize(deskWidth,deskHeight-33);
74     QString file_name=fileInfo_to_show.completeBaseName();
75     QByteArray ba=file_name.toLocal8Bit();
76     QTextCodec *codec = QTextCodec::codecForName("GBK");
77     QString str = codec->toUnicode(ba);
78     ui->label->setText(str);
79     qDebug()<<"in pic_view:"<<ui->widget->size();
80 }
81 
~Picture_view()82 Picture_view::~Picture_view()
83 {
84     delete ui;
85 }
show_title()86 void Picture_view::show_title()
87 {
88     int fontId = QFontDatabase::addApplicationFont(":/font/fontawesome-webfont.ttf");
89     QString fontName = QFontDatabase::applicationFontFamilies(fontId).at(0);
90     QFont iconFont = QFont(fontName);
91     iconFont.setPointSize(10);
92     ui->btnMenu_Close->setFont(iconFont);
93     ui->btnMenu_Close->setText(QChar(0xf00d));
94     ui->btnMenu_Max->setFont(iconFont);
95     ui->btnMenu_Max->setText( QChar(0xf096));
96     ui->btnMenu_Min->setFont(iconFont);
97     ui->btnMenu_Min->setText( QChar(0xf068));
98     iconFont.setPointSize(12);
99     ui->lab_Ico->setFont(iconFont);
100     ui->lab_Ico->setText( QChar(0xf015));
101 #if !defined(Q_OS_LINUX)
102     ui->label->setFont(iconFont);
103     ui->nowTimeLabel->setFont(iconFont);
104 #endif
105 }
106 
GetFileList(QDir dir)107 QFileInfoList Picture_view::GetFileList(QDir dir)
108 {
109     qDebug()<<"get all pic file name";
110     QStringList filters;
111     filters << "*.bmp"<<"*.jpg"<<"*.jpeg"<<"*.png"<<"*.BMP";
112     dir.setNameFilters(filters);
113     QFileInfoList file_list=dir.entryInfoList();
114     for(int i=0;i<file_list.size();i++)
115     {
116         QFileInfo fileInfo=file_list.at(i);
117         fileInfo.absoluteFilePath();
118         qDebug()<<fileInfo.fileName();
119     }
120     return file_list;
121 }
122 
show_image(QFileInfo fileInfo_to_show)123 void Picture_view::show_image(QFileInfo fileInfo_to_show)
124 {
125     printf("-------------------------------open pic ing\n");
126     QImage pic;
127     pic.load(fileInfo_to_show.absoluteFilePath());
128     qDebug()<<"show_image---file_name:"<<fileInfo_to_show.completeBaseName();
129     if(pic.isNull())
130     {
131         QByteArray ba=fileInfo_to_show.completeBaseName().toLocal8Bit();
132         QTextCodec *codec = QTextCodec::codecForName("GBK");
133         QString str = codec->toUnicode(ba);
134         ui->label->setText("");
135         pic_view->hide();
136         frmMessageBox *msg=new frmMessageBox(this);
137         msg->SetMessage(QString(tr("this image format can't attach!")),0);
138         QTimer::singleShot(1000, msg, SLOT(close()));
139         msg->exec();
140     }else{
141         pic_view->show();
142         pic_view->setPicture(pic);
143         qDebug()<<"show_image:"<<ui->widget->size();
144         pic_view->resize(ui->widget->width(),ui->widget->height());
145         QString file_name=fileInfo_to_show.fileName();
146         QByteArray ba=file_name.toLocal8Bit();
147         QTextCodec *codec = QTextCodec::codecForName("GBK");
148         QString str = codec->toUnicode(ba);
149         ui->label->setText(QString(tr("now play:"))+QString(str));
150     }
151 }
152 
FormInCenter()153 void Picture_view::FormInCenter()
154 {
155     QDesktopWidget w;
156     int deskWidth = w.width();
157     int deskHeight = w.height();
158     this->resize(deskWidth,deskHeight);
159 }
on_btnMenu_Min_clicked()160 void Picture_view::on_btnMenu_Min_clicked()
161 {
162     this->close();
163     g_pStaticMaindesktop->on_main_desktop_visible();
164 }
165 
on_btnMenu_Max_clicked()166 void Picture_view::on_btnMenu_Max_clicked()
167 {
168     this->close();
169     g_pStaticMaindesktop->on_main_desktop_visible();
170 }
171 
on_btnMenu_Close_clicked()172 void Picture_view::on_btnMenu_Close_clicked()
173 {
174     this->close();
175     g_pStaticMaindesktop->on_main_desktop_visible();
176 }
177 
on_prePicButton_clicked()178 void Picture_view::on_prePicButton_clicked()
179 {
180     if(current_pic-1>=0)
181     {
182 
183         show_image(file_list.at(--current_pic));
184     }else{
185         qDebug()<<"no more pic";
186         return ;
187     }
188 }
189 
on_nextPicButton_clicked()190 void Picture_view::on_nextPicButton_clicked()
191 {
192     if(current_pic+1<file_list.size())
193     {
194         show_image(file_list.at(++current_pic));
195     }else{
196         qDebug()<<"no more pic";
197         return ;
198     }
199 }
200 
on_largerButton_clicked()201 void Picture_view::on_largerButton_clicked()
202 {
203     pic_view->zoomIn();
204 }
205 
on_smallerButton_clicked()206 void Picture_view::on_smallerButton_clicked()
207 {
208     pic_view->zoomOut();
209 }
210