using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SQLite;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Windows.Forms;
namespace danshjo
{
public partial class frmmain : Form
{
//تعریف متغیر ها بصورت سراسری در برنامه و ساختن نمونه از کلاس ها
private readonly PersianCalendar pc = null;
private BackUpAndRestore backUpwork = null;
private int count = 0;
private DataTable dt = null;
private FolderBrowserDialog folderBrowserDialog = null;
private SQLiteCommand cmd = null;
private SQLiteConnection con = null;
public frmmain()
{
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
pc=new PersianCalendar();
dt = new DataTable();
}
private void RowNumber()
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
row.HeaderCell.Value = (row.Index + 1).ToString();
}
dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisp layedHeaders;
dataGridView1.TopLeftHeaderCell.Value = " ردیف ";
dataGridView1.ColumnHeadersDefaultCellStyle.BackCo lor = Color.AntiqueWhite;
dataGridView1.EnableHeadersVisualStyles = false;
dataGridView1.Columns[1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView1.Columns[0].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView1.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView1.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
}
public DataTable LoadAll()
{
con = new SQLiteConnection("Data Source=picdb.sqlite;version=3");
string cmd = "select DISTINCT * from tblpic ORDER BY name";
using (SQLiteDataAdapter da = new SQLiteDataAdapter(cmd,con))
{
da.Fill(dt);
return dt;
}
}
private void frmmain_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = LoadAll();
RowNumber();
}
private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
con = new SQLiteConnection("Data Source=picdb.sqlite;version=3");
cmd = new SQLiteCommand();
DirectoryInfo dir_info = new DirectoryInfo(folderBrowserDialog.SelectedPath);
List<string> file_list = new List<string>();
cmd.Connection = con;
con.Open();
BeginInvoke((MethodInvoker)delegate
{
progressBar1.Visible = true;
});
//*********** call main method*********************//
SearchDirectory(dir_info, file_list);
//***********main method*********************//
}
//******************************* main method******************************//
private void SearchDirectory(DirectoryInfo dir_info, List<string> file_list)
{
object bookname2;
try
{
foreach (DirectoryInfo subdir_info in dir_info.GetDirectories())
{
SearchDirectory(subdir_info, file_list);
}
}
catch
{
}
try
{
foreach (FileInfo item in dir_info.GetFiles("*.pdf", SearchOption.AllDirectories))
{
file_list.Add(item.FullName);
count++;
string mas = item.FullName;
string bookname = Path.GetFileNameWithoutExtension(mas);
bookname2 = bookname.PadLeft(100, ' ');
cmd.CommandText = "INSERT INTO tblpic (name,path) values(@1,@2)";
cmd.Parameters.AddWithValue("@1", bookname);
cmd.Parameters.AddWithValue("@2", mas);
cmd.ExecuteNonQuery();
backgroundWorker1.ReportProgress(count, bookname2);
if (count == 100)
{
count = 0;
}
}
}
catch
{
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
Text = e.UserState.ToString();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
BeginInvoke((MethodInvoker)delegate
{
progressBar1.Value =100;
con.Close();
frmmain_Load(null, null);
Text = "کتابخانه دانشجو".PadLeft(50, ' ');
MessageBox.Show("کل کتاب ها با موفقیت درج شدند");
progressBar1.Visible = false;
progressBar1.Value = 0;
});
}
private void timer1_Tick(object sender, EventArgs e)
{
date.Text = "امروز : " + pc.GetYear(DateTime.Now)
+ "/" + pc.GetMonth(DateTime.Now).ToString("00")
+ "/" + pc.GetDayOfMonth(DateTime.Now).ToString("00")
+ " ساعت : "
+ pc.GetHour(DateTime.Now).ToString("00") + ":"
+ pc.GetMinute(DateTime.Now).ToString("00") + ":"
+ pc.GetSecond(DateTime.Now).ToString("00");
}
private void frmmain_FormClosing(object sender, FormClosingEventArgs e)
{
if (
MessageBox.Show("آیا قصد خروج از برنامه را دارید", "خروج", MessageBoxButtons.OKCancel,
MessageBoxIcon.Question) == DialogResult.OK)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}
}
private void تهیهپیشتیبانToolStripMenuItem_Click(ob ject sender, EventArgs e)
{
backUpwork= new BackUpAndRestore();
backUpwork.CurrentDbPath = Environment.CurrentDirectory + "\\picdb.sqlite";
backUpwork.BackUp();
}
private void عملیاتپشتیبانیToolStripMenuItem_Clic k(object sender, EventArgs e)
{
}
private void بازگردانیپشتیبانToolStripMenuItem_ Click(object sender, EventArgs e)
{
backUpwork = new BackUpAndRestore();
backUpwork.CurrentDbPath = Environment.CurrentDirectory + "\\picdb.sqlite";
backUpwork.Restore();
}
private void درجبهصورتگروهیToolStripMenuItem_Clic k(object sender, EventArgs e)
{
using ( folderBrowserDialog = new FolderBrowserDialog())
{
if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
{
backgroundWorker1.RunWorkerAsync();
progressBar1.Visible = true;
}
}
}
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Rows.Count > 1)
{
string masirbook;
try
{
masirbook = dataGridView1.CurrentRow.Cells["path"].Value.ToString();
Process.Start(masirbook);
}
catch (SystemException exception)
{
MessageBox.Show("کتاب پیدا نشد!!!!");
MessageBox.Show(exception.Message);
}
}
else
{
MessageBox.Show("!هیچ موردی برای نمایش وجود ندارد!", "توجه");
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text!=string.Empty)
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1.Rows[i].Cells[0].Value.ToString() == textBox1.Text)
{
dataGridView1.Rows[i].Selected = true;
dataGridView1.FirstDisplayedScrollingRowIndex = i;
}
}
}
else
{
dataGridView1.ClearSelection();
dataGridView1.FirstDisplayedScrollingRowIndex = 0;
}
}
private void frmmain_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char) 13)
{
dataGridView1_CellDoubleClick(null,null);
}
}
private void دربارهماToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void mnuexit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void حذفکلاطلاعاتToolStripMenuItem_Click(ob ject sender, EventArgs e)
{
if (
MessageBox.Show("آیا قصد حذف کل اطلاعات را دارید", "خروج", MessageBoxButtons.OKCancel,
MessageBoxIcon.Question) == DialogResult.OK)
{
string s = "DELETE FROM tblpic";
con = new SQLiteConnection("Data Source=picdb.sqlite;version=3");
using (cmd = new SQLiteCommand(s, con))
{
con.Open();
cmd.ExecuteNonQuery();
con.Clone();
}
MessageBox.Show("با موفقیت انجام شد");
Application.Restart();
}
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text != string.Empty)
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1.Rows[i].Cells[0].Value.ToString().StartsWith(textBox1.Text, StringComparison.OrdinalIgnoreCase))
{
dataGridView1.Rows[i].Selected = true;
dataGridView1.FirstDisplayedScrollingRowIndex = i;
}
}
}
else
{
dataGridView1.ClearSelection();
dataGridView1.FirstDisplayedScrollingRowIndex = 0;
}
}
}
}